张天森
2022-10-13 74acc62a129af32307aa43171b93415ac6225bcb
三说会堂事件操作权限处理
6个文件已修改
142 ■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComSanShuoEventController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComEventMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComEvent.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/IComEventService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java 105 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComEventMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/api/ComSanShuoEventController.java
@@ -255,6 +255,7 @@
        comEvent.setSpecialistId(null);
        comEvent.setSpecialistName("待分配");
        comEvent.setSpecialistId(0L);
        comEventService.updateEventStransferRecord(id);
        return R.ok(comEventService.updateById(comEvent));
    }
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/dao/ComEventMapper.java
@@ -109,4 +109,6 @@
     * )
     * */
    void insertEventAndExpertRecord(@Param("eventId") Long eventId, @Param("expertId") Long experId,@Param("status")Integer status);
    void updateLog(@Param("eventId") Long id, @Param("expertId") Long specialistId);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/entity/ComEvent.java
@@ -192,4 +192,27 @@
    private List<Long> communityIds;
    @TableField(exist = false)
    private List<Long> eventIds;
    private Integer reportCommunity;
    private Integer reportCenter;
    private Integer reportStreet;
    private Integer reportHall;
    //受理
    @TableField(exist = false)
    private Integer solve;
    //调解
    @TableField(exist = false)
    private Integer conciliation;
    //分配
    @TableField(exist = false)
    private Integer distribution;
    //删除
    @TableField(exist = false)
    private Integer delete;
    //归档
    @TableField(exist = false)
    private Integer archive;
    //更换专家
    @TableField(exist = false)
    private Integer changeExpert;
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/IComEventService.java
@@ -97,4 +97,9 @@
     * 大屏事件统计
     * */
    R eventIndexData(Integer type);
    /**
     * 修改流转记录状态
     * */
    void updateEventStransferRecord(Long id);
}
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java
@@ -40,6 +40,7 @@
import javax.annotation.Resource;
import java.util.*;
import static java.util.Objects.isNull;
import static java.util.Objects.nonNull;
/**
@@ -155,15 +156,82 @@
            }
            ComMediateType category = commediateTypeService.getById(comEvent1.getEventCategory());
            comEvent1.setEventCategoryName(category.getName());
            //当前账号能否操作此条记录,根据事件流转记录是否有归档的记录决定当前用户能否对添加归档记录
            ComEventTransferRecord archiveRecord = comEventTransferRecordService.getOne(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, comEvent1.getId()).eq(ComEventTransferRecord::getFromUserId, loginUserInfoVO.getUserId()).eq(ComEventTransferRecord::getEventStatus, 7));
            comEvent1.setIsArchive(1);
            if(nonNull(archiveRecord)){
                comEvent1.setIsArchive(0);
            }
            comEvent1.setHasPerm(hasPermission(comEvent1,loginUserInfoVO ));
            if (!comEvent.getUserType().equals(1)){
                this.accountMenu(comEvent1,comEvent.getUserType(),loginUserInfoVO );
            }
        });
        return R.ok(list);
    }
    /**
     * 当前账号对事件的操作权限
     * 1:有权限 0无权限
     * */
    public void accountMenu(ComEvent comEvent,Integer userType,LoginUserInfoVO loginUserInfoVO){
        //四个账号级别
        if (isNull(userType)){
            return;
        }
        comEvent.setDelete(1);
        comEvent.setArchive(1);
        comEvent.setSolve(1);
        comEvent.setConciliation(1);
        comEvent.setDistribution(1);
        comEvent.setChangeExpert(1);
        if (userType.equals(2)){
            //专家后台权限,根据事件的流转信息决定专家对此事件的操作权限
            //获取专家信息
            ComSanshuoExpert expert=new ComSanshuoExpert();
            comEvent.setDistribution(0);
            comEvent.setChangeExpert(0);
            comEvent.setDelete(0);
            if (!comEvent.getCurrentProcessType().equals(5)){
                comEvent.setSolve(0);
            }
            if (nonNull(loginUserInfoVO.getPhone())){
                expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getPhone, loginUserInfoVO.getPhone()));
            }else{
                //账号获取
                expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getAccount, loginUserInfoVO.getAccount()));
            }
            if (!comEvent.getSpecialistId().equals(expert.getId())){
                //已经上报或者重新分配专家
                comEvent.setConciliation(0);
                //comEvent.setDelete(0);
                comEvent.setArchive(0);
            }
        }else if (userType.equals(4)){
            //社区后台权限
            if (comEvent.getEventProcessStatus().equals(5) && comEvent.getEventResult().equals(2)){
                comEvent.setChangeExpert(0);
            }
            if (comEvent.getReportStreet().equals(1)){
                comEvent.setChangeExpert(0);
                comEvent.setDelete(0);
            }
            if (!comEvent.getEventProcessStatus().equals(5)){
                comEvent.setArchive(0);
            }
        }else if (userType.equals(3)){
            //分配行业分中心操作权限
            if (!comEvent.getReportCenter().equals(1)){
                comEvent.setArchive(0);
                comEvent.setConciliation(0);
                comEvent.setDistribution(0);
                comEvent.setSolve(0);
                comEvent.setChangeExpert(0);
            }
        }else if (userType.equals(5)){
            if (!comEvent.getReportStreet().equals(1)){
                comEvent.setArchive(0);
                comEvent.setConciliation(0);
                comEvent.setDistribution(0);
                comEvent.setSolve(0);
            }
        }
    }
    /**
@@ -204,6 +272,7 @@
        }
        return flag;
    }
    @Override
    public List<ComEvent> listByComEvent(ComEvent comEvent,LoginUserInfoVO loginUserInfoVO) {
        List<ComEvent> list = baseMapper.listByComEvent(comEvent,null);
@@ -326,6 +395,7 @@
                    comEvent.setCurrentProcessType(2);
                    comEvent.setSpecialistName("待分配");
                    comEvent.setSpecialistId(99999L);
                    comEvent.setReportCommunity(1);
                    ComActDO comActDO = comActDAO.selectById(expert.getCommunityId());
                    comEvent.setCurrentOrgId(comActDO.getStreetId().toString());
                    //生成一次流转记录
@@ -336,6 +406,7 @@
                    comEvent.setReportLevel(4);
                }else if (expert.getLevel().equals(2)){
                    //上报到行业分中心
                    comEvent.setReportCenter(1);
                    comEvent.setCurrentProcessType(1);
                    comEvent.setCurrentOrgId(expert.getIndustryCenterId().toString());
                    comEvent.setSpecialistName("待分配");
@@ -352,6 +423,7 @@
                comEvent.setCurrentProcessType(4);
                comEvent.setCurrentOrgId("99999");
                //生成一次流转记录
                comEvent.setReportHall(1);
                comEvent.setCurrentEventProcessResult("行业分中心上报到区三说会堂");
                comEventTransferRecord.setFromId(comEvent.getSpecialistId());
                comEventTransferRecord.setToId(99999L);
@@ -361,6 +433,7 @@
                //社区上报到街道
                comEvent.setCurrentProcessType(3);
                //获取街道id
                comEvent.setReportStreet(1);
                ComActDO comActDO = comActDAO.selectOne(new QueryWrapper<ComActDO>().lambda().eq(ComActDO::getCommunityId, comEvent.getRequestUserCommunity()).eq(ComActDO::getAppId, "wx0cef797390444b75"));
                comEvent.setCurrentOrgId(comActDO.getStreetId().toString());
                //生成一次流转记录
@@ -372,6 +445,7 @@
            }else if(comEvent.getCurrentProcessType() == 3){
                //街道上报到区三说会堂
                comEvent.setCurrentProcessType(4);
                comEvent.setReportHall(1);
                comEvent.setCurrentOrgId("99999");
                //生成一次流转记录
                comEvent.setCurrentEventProcessResult("街道上报到区三说会堂");
@@ -446,7 +520,7 @@
        comEventDetailVO.setImages(comEventRequestImageVO);
        map.put("specter", specter);
        map.put("eventDetail", comEventDetailVO);
        List<ComEventTransferRecord> transferRecord = comEventTransferRecordService.list(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, id).orderByAsc(ComEventTransferRecord::getCreateAt));
        List<ComEventTransferRecord> transferRecord = comEventTransferRecordService.list(new QueryWrapper<ComEventTransferRecord>().lambda().eq(ComEventTransferRecord::getEventId, id).orderByDesc(ComEventTransferRecord::getCreateAt));
        transferRecord.forEach(comEventTransferRecord -> {
            List<ComEventResource> list = comEventResourceService.list(new QueryWrapper<ComEventResource>().lambda().eq(ComEventResource::getRefId, comEvent.getId()).notIn(ComEventResource::getStatus,(1)).eq(ComEventResource::getTransferId, comEventTransferRecord.getId()));
            List<ComEventRequestImageVO> ImageVO = CopyUtil.deepCopyListObject(list, ComEventRequestImageVO.class);
@@ -503,16 +577,14 @@
    @Override
    public R calculate(LoginUserInfoVO loginUserInfoVO) {
        ComEvent comEvent=new ComEvent();
        comEvent.setUserType(3);
        Boolean isExpertCheck=false;
        Long expertId=null;
        Boolean isStretAccount = isStreetAccount(loginUserInfoVO);
        if (nonNull(comEvent.getUserType())){
            if (comEvent.getUserType().equals(1)){
                //个人账号权限
                comEvent.setRequestUserId(loginUserInfoVO.getUserId());
            }else if (comEvent.getUserType().equals(2) || loginUserInfoVO.getType().equals(13) || loginUserInfoVO.getType().equals(11)){
             if (loginUserInfoVO.getType().equals(13) || loginUserInfoVO.getType().equals(11)){
                ComSanshuoExpert expert=new ComSanshuoExpert();
                //专家账号权限(小程序和后台)
                //专家账号权限(后台)
                if (nonNull(loginUserInfoVO.getPhone())){
                    expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getPhone, loginUserInfoVO.getPhone()));
                }else{
@@ -557,8 +629,6 @@
                comEvent.setUserType(null);
            }
        }
        log.info("=====================当前的userType"+comEvent.getUserType());
        log.info("=====================是否专家账号查看"+isExpertCheck);
        List<ComEventCalculateVO> calculateList = baseMapper.calculate(comEvent);
        ComEventCalculateVO comEventCalculateVO =new ComEventCalculateVO();
        comEventCalculateVO.setStatus("0");
@@ -677,6 +747,13 @@
            return R.ok(eventRateVOS);
        }
    }
    @Override
    public void updateEventStransferRecord(Long id) {
        ComEvent comEvent = comEventMapper.selectById(id);
        comEventMapper.updateLog(id,comEvent.getSpecialistId());
    }
    public String typeToName(Integer type){
        switch (type){
            case 1:
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/resources/mapper/ComEventMapper.xml
@@ -147,7 +147,7 @@
        order by create_at desc
    </select>
    <select id="listEventIds" resultType="java.lang.Long">
        select event_id from com_sanshuo_expert_event where expert_id=#{expertId}
        select event_id from com_sanshuo_expert_event where expert_id=#{expertId} and status=0
    </select>
    <select id="listByComEvent" resultType="com.panzhihua.service_community.entity.ComEvent">
        SELECT <include refid="columns" />
@@ -521,5 +521,9 @@
    <select id="insertEventAndExpertRecord">
        insert into com_sanshuo_expert_event values(#{eventId},#{expertId},#{status})
    </select>
    <update id="updateLog">
        update com_sanshuo_expert_event set status = 2
        where event_id=#{eventId} and expert_id=#{expertId}
    </update>
</mapper>