From eaac6d9314b98ea313c16f62b41f01ddbd1114f3 Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期二, 18 十月 2022 13:56:27 +0800 Subject: [PATCH] 三说会堂事件操作权限处理 --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java | 375 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 312 insertions(+), 63 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java index 9feb98d..93dc79c 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComEventServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.panzhihua.common.constants.Constants; import com.panzhihua.common.constants.ReturnMsgConstants; import com.panzhihua.common.enums.SanShuoEventStatusEnum; import com.panzhihua.common.model.dtos.community.sanshuo.IndexDateDTO; @@ -85,6 +86,7 @@ @Override public R pageByComEvent(ComEvent comEvent, Page pagination,LoginUserInfoVO loginUserInfoVO) { log.info("=================当前登陆的用户信息,用户类型"+loginUserInfoVO.getType()+"社区id"+loginUserInfoVO.getCommunityId()); + log.info("=====================当前的userType1:="+comEvent.getUserType()); Boolean isExpertCheck=false; Long expertId=null; Boolean isStretAccount = isStreetAccount(loginUserInfoVO); @@ -127,13 +129,13 @@ comEvent.setCommunityIds(cids); } } -// if (nonNull(loginUserInfoVO.getAccount())){ -// if (loginUserInfoVO.getAccount().equals("admin")){ -// comEvent.setUserType(null); -// } -// } + if (nonNull(loginUserInfoVO.getAccount())){ + if (loginUserInfoVO.getAccount().equals("admin") && loginUserInfoVO.getStreetId().equals(Constants.ADMIN_STREET_ID)){ + comEvent.setUserType(null); + } + } IPage<ComEvent> list=null; - log.info("=====================当前的userType"+comEvent.getUserType()); + log.info("=====================当前的userType2:="+comEvent.getUserType()); log.info("=====================是否专家账号查看"+isExpertCheck); //是否为专家查看自己发布的事件 if (isExpertCheck && comEvent.getUserType()!=1){ @@ -143,7 +145,6 @@ }else{ list = baseMapper.pageByComEvent(comEvent, pagination); } - if (list.getRecords().size() < 1) { return R.ok(Collections.emptyList()); } @@ -164,15 +165,30 @@ return R.ok(list); } - /** * 当前账号对事件的操作权限 - * 1:有权限 0无权限 + * 1有权限 0无权限 + * 1、用户提交调解申请后,调解专家状态为待受理,可操作受理、查看,专家所在部门状态为待受理,可操作受理(帮专家进行受理处理)、查看、删除, + * 所在部门上级部门状态为待受理,仅可查看、删除;ok + * 2、专家拒绝受理后,专家看不到该调解申请,所在单位状态变为待分配,可操作分配、调解、查看、删除,所在单位的上级单位状态变为待分配,仅可查看、删除; ok + * 3、专家受理后,专家状态变为调解中,可操作调解、查看,专家所在部门状态变为调解中,可操作调解、查看、删除,专家做在单位的上级单位状态变为调解中,仅可查看、删除; + * 4、专家调解调解完成未上报上级,专家状态变为已完成、可操作归档、查看,专家所在部门状态变为已完成,可操作归档、查看,专家所在部门的上级单位状态变为已完成, + * 可查看、删除; + * 5、专家所在部门调解完成未上报上级,专家状态变为已完成、可操作归档、查看,专家所在部门状态变为已完成,可操作归档、查看,专家所在部门的上级单位状态变为已完成, + * 可查看、删除; + * 6、专家调解完成上报上级,专家状态变为已完成、可操作归档、查看,专家所在部门状态变为待分配,可操作分配专家、调解、查看、删除,专家所在部门的上级单位状态变为调解中,可查看、删除; + * 7、专家所在部门调解完成上报上级,专家状态变为已完成、可操作归档、查看,专家所在部门状态变为已完成,可操作归档、查看、删除,专家所在部门的上级单位状态变为待分配,可分配专家、查看、删除, + * 上上级单位状态变为调解中,可查看、删除; + * 8、专家调解/专家所在部门调解未完成,专家状态变为调解中,可操作调解、查看,专家所在部门状态变为调解中,可操作更换专家、调解、查看、删除,专家所在部门的上级单位状态变为调解中,可查看、删除; + * 9、专家所在部门分配给专家后,专家状态变为待受理,可操作受理、查看,专家所在部门状态变为待受理,可操作受理(帮专家进行受理处理)、查看、删除,专家所在部门的上级部门状态变为待受理, + * 仅可查看、删除; + * 10、专家所在部门更换专家,原专家状态已完成,专家所在部门状态不变,专家所在部门的上级单位状态不变; * */ public void accountMenu(ComEvent comEvent,Integer userType,LoginUserInfoVO loginUserInfoVO,Boolean isStreet){ //四个账号级别 + Boolean isAdmin=false; if (isNull(userType)){ - return; + isAdmin=true; } comEvent.setDelete(1); comEvent.setArchive(1); @@ -182,85 +198,320 @@ 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())){ - //已经上报或者重新分配专家 + if (!comEvent.getCurrentProcessType().equals(5)){ + if (comEvent.getSpecialistId().equals(expert.getId()) && comEvent.getEventProcessStatus().equals(3)){ + //更高级别分配给该专家,可以受理 + comEvent.setConciliation(0); + comEvent.setArchive(0); + //comEvent.setSolve(0); + return; + } + //已经上报或者重新分配专家,只能查看 comEvent.setConciliation(0); - //comEvent.setDelete(0); - comEvent.setArchive(0); - } + //comEvent.setArchive(0); + comEvent.setSolve(0); + return; + }//未上报,根据状态决定权限 if (comEvent.getEventProcessStatus().equals(1)){ + //待受理和待验证状态,仅有查看和受理权限,可能为用户选择该专家或上级单位分配给该专家 //关闭调解和归档 comEvent.setArchive(0); comEvent.setConciliation(0); } - if (comEvent.getEventProcessStatus().equals(5)){ + else if (comEvent.getEventProcessStatus().equals(5)){ + //调解中,可以查看,调解 comEvent.setArchive(0); comEvent.setSolve(0); + }else if (comEvent.getEventProcessStatus().equals(3)){ + //重新分配给该专家的事件,可以进行受理 + // comEvent.setSolve(0); + comEvent.setConciliation(0); + comEvent.setArchive(0); + } else if (comEvent.getEventProcessStatus().equals(6)){ + //调解完成,可以归档,查看 + comEvent.setSolve(0); + comEvent.setConciliation(0); } }else if (userType.equals(4)){ //社区后台权限 - if (comEvent.getEventProcessStatus().equals(5) && comEvent.getEventResult().equals(2)){ + //如果未上报到街道,当前事件权限和专家一样 + if (comEvent.getCurrentProcessType().equals(5)){ + //根据事件状态决定权限 + if (comEvent.getEventProcessStatus().equals(1) ){ + //待受理和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + } else if(comEvent.getEventProcessStatus().equals(2)){ + //待分配和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + if (comEvent.getSpecialistName().equals("待分配")){ + comEvent.setSolve(0); + } + } + else if (comEvent.getEventProcessStatus().equals(5)){ + //调解中,可以查看,调解,更换专家,删除 + comEvent.setDistribution(0); + comEvent.setSolve(0); + comEvent.setArchive(0); + } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ + //调解完成,可以归档,查看 + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + comEvent.setConciliation(0); + } + }else if (comEvent.getCurrentProcessType().equals(2)){ + //上报到社区后,增加分配专家权限 + if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2)){ + //待受理和待验证状态,可以受理,更换专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setDistribution(0); + } + else if (comEvent.getEventProcessStatus().equals(3)){ + //分配新专家后 + comEvent.setDistribution(0); + comEvent.setArchive(0); + comEvent.setChangeExpert(0); + comEvent.setSolve(0); + comEvent.setEventResult(null); + comEvent.setEventProcessStatus(1); + }else if (comEvent.getEventProcessStatus().equals(5)){ + //调解中,可以查看,调解,更换专家,删除 + comEvent.setSolve(0); + comEvent.setArchive(0); + comEvent.setDistribution(0); + } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){ + //上报并且调解失败,此时事件的状态为6,事件结果为调解失败 + //comEvent.setDistribution(0); + comEvent.setEventResult(null); + comEvent.setEventProcessStatus(2); + comEvent.setChangeExpert(0); + comEvent.setSolve(0); + //comEvent.setConciliation(0); + comEvent.setArchive(0); + }else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(2) && comEvent.getEventSucceed().equals(2)){ + //调解完成,可以归档,查看 + //关闭所有权限 + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + comEvent.setSolve(0); + comEvent.setConciliation(0); + //comEvent.setArchive(0); + } + else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ + //调解完成,可以归档,查看 + //关闭所有权限 + comEvent.setDistribution(0); + comEvent.setSolve(0); + comEvent.setArchive(0); + } + } + else{ + //已上报到街道或三说会堂,社区没有分配和受理权限权限 + comEvent.setDistribution(0); comEvent.setChangeExpert(0); - } - if (comEvent.getReportStreet().equals(1)){ - comEvent.setChangeExpert(0); - comEvent.setDelete(0); - } - if (!comEvent.getEventProcessStatus().equals(5)){ - comEvent.setArchive(0); - } - if (comEvent.getEventProcessStatus().equals(2)){ + //comEvent.setDelete(0); + comEvent.setSolve(0); comEvent.setConciliation(0); } }else if (userType.equals(3)){ //分配行业分中心操作权限 - if (!comEvent.getReportCenter().equals(1)){ + //是否上报到行业分中心 + if (comEvent.getCurrentProcessType().equals(1)){ + //已经报到行业分中心 + if (comEvent.getEventProcessStatus().equals(1) ){ + //待受理和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + }else if(comEvent.getEventProcessStatus().equals(2)){ + //待分配和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + if (comEvent.getSpecialistName().equals("待分配")){ + comEvent.setSolve(0); + } + } + else if (comEvent.getEventProcessStatus().equals(3)){ + //分配新专家后 + comEvent.setDistribution(0); + comEvent.setArchive(0); + comEvent.setChangeExpert(0); + comEvent.setSolve(0); + comEvent.setEventResult(null); + comEvent.setEventProcessStatus(1); + }else if (comEvent.getEventProcessStatus().equals(5)){ + //调解中,可以查看,调解,更换专家,删除 + comEvent.setDistribution(0); + comEvent.setArchive(0); + } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){ + //调解完成,可以归档,查看 + comEvent.setEventResult(null); + comEvent.setEventProcessStatus(2); + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + } + else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ + //调解完成,可以归档,查看 + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + } + }else{ + //未上上报到行业分中心,或者已上报到区三说会堂,仅查看 comEvent.setArchive(0); - comEvent.setConciliation(0); - comEvent.setDistribution(0); comEvent.setSolve(0); + comEvent.setDistribution(0); comEvent.setChangeExpert(0); } - if (comEvent.getEventProcessStatus().equals(5)){ - comEvent.setArchive(0); + }else if (userType.equals(5) || isStreet){ + //街道权限,操作街道下属社区的所有事件 + //是否上报到街道 + if (comEvent.getCurrentProcessType().equals(3)){ + //已上报到街道 + if (comEvent.getEventProcessStatus().equals(1) ){ + //待受理和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + //comEvent.setDistribution(0); + comEvent.setSolve(0); + } else if(comEvent.getEventProcessStatus().equals(2)){ + //待分配和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + if (comEvent.getSpecialistName().equals("待分配")){ + comEvent.setSolve(0); + } + }else if (comEvent.getEventProcessStatus().equals(5)){ + //调解中,可以查看,调解,更换专家,删除 + comEvent.setDistribution(0); + comEvent.setArchive(0); + comEvent.setSolve(0); + }else if (comEvent.getEventProcessStatus().equals(3)){ + //分配新专家后 + comEvent.setDistribution(0); + comEvent.setArchive(0); + comEvent.setChangeExpert(0); + comEvent.setSolve(0); + comEvent.setEventResult(null); + comEvent.setEventProcessStatus(1); + } + else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){ + //设置为待受理 + comEvent.setEventResult(null); + comEvent.setEventProcessStatus(2); + //上报到单位,并且调解失败, + //调解完成,可以归档,查看 + comEvent.setSolve(0); + //comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + //comEvent.setConciliation(0); + comEvent.setArchive(0); + } + else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ + //调解完成,可以归档,查看 + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + comEvent.setConciliation(0); + } + }else if (comEvent.getCurrentProcessType().equals(4)){ + //未上报到街道,仅查看 comEvent.setSolve(0); - } - }else if (userType.equals(5)){ - //街道权限 - if (!comEvent.getReportStreet().equals(1)){ - comEvent.setArchive(0); - comEvent.setConciliation(0); comEvent.setDistribution(0); - comEvent.setSolve(0); - } - }else if (isStreet){ - if (comEvent.getEventProcessStatus().equals(1) || comEvent.getEventProcessStatus().equals(2) ){ - //关闭调解和归档 - comEvent.setArchive(0); - comEvent.setSolve(0); + comEvent.setChangeExpert(0); comEvent.setConciliation(0); - comEvent.setDistribution(0); - } - if (comEvent.getEventProcessStatus().equals(5)){ + + }else { comEvent.setArchive(0); comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + comEvent.setConciliation(0); + } + }else if (isAdmin){ + //区三说会堂账号,最高权限全部开放 + // 是否上报到三说会堂 + if (comEvent.getCurrentProcessType().equals(4) || comEvent.getReportHall().equals(1)){ + //已上报到三说会堂,可以操作 + if (comEvent.getEventProcessStatus().equals(1)){ + //待受理和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setSolve(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + } + else if(comEvent.getEventProcessStatus().equals(2)){ + //待分配和待验证状态,可以受理,分配专家 + //关闭调解和归档 + comEvent.setArchive(0); + comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + if (comEvent.getSpecialistName().equals("待分配")){ + comEvent.setSolve(0); + } + }else if (comEvent.getEventProcessStatus().equals(3)){ + //新分配给专家并且专家还未受理 + comEvent.setDistribution(0); + comEvent.setArchive(0); + //comEvent.setConciliation(0); + comEvent.setChangeExpert(0); + comEvent.setSolve(0); + } + else if (comEvent.getEventProcessStatus().equals(5)){ + //调解中,可以查看,调解,更换专家,删除 + comEvent.setDistribution(0); + comEvent.setSolve(0); + comEvent.setArchive(0); + } else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventResult().equals(1)){ + //失败后转交三说会堂 + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setConciliation(0); + //comEvent.setChangeExpert(0); + } + else if (comEvent.getEventProcessStatus().equals(6) && comEvent.getEventSucceed().equals(2)){ + //调解完成,可以归档,查看 + comEvent.setConciliation(0); + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + } + }else{ + //未上报到三说会堂,仅查看 + comEvent.setArchive(0); + comEvent.setSolve(0); + comEvent.setDistribution(0); + comEvent.setChangeExpert(0); + comEvent.setConciliation(0); } } - } /** @@ -596,7 +847,7 @@ ComSanshuoExpert specter = comSanShuoExpertService.getById(specialistId); comEvent.setSpecialistAcceptTime(new Date()); comEvent.setSpecialistName(specter.getName()); - comEvent.setEventProcessStatus(SanShuoEventStatusEnum.ACCEPT.getCode()); + comEvent.setEventProcessStatus(SanShuoEventStatusEnum.VALID.getCode()); int flag = baseMapper.updateById(comEvent); //添加一条对应记录 comEventMapper.insertEventAndExpertRecord(id, specialistId,1); @@ -610,22 +861,21 @@ Boolean isExpertCheck=false; Long expertId=null; Boolean isStretAccount = isStreetAccount(loginUserInfoVO); - if (nonNull(comEvent.getUserType())){ - if (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())){ + if (nonNull(loginUserInfoVO.getPhone())){ expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getPhone, loginUserInfoVO.getPhone())); - }else{ + }else{ //账号获取 expert = comSanShuoExpertService.getOne(new QueryWrapper<ComSanshuoExpert>().lambda().eq(ComSanshuoExpert::getAccount, loginUserInfoVO.getAccount())); - } - comEvent.setUserType(2); - if (nonNull(expert)){ + } + comEvent.setUserType(2); + if (nonNull(expert)){ comEvent.setSpecialistId(expert.getId()); isExpertCheck=true; expertId=expert.getId(); - } + } }else if (loginUserInfoVO.getType().equals(12)){ //行业分中心权限 comEvent.setUserType(3); @@ -644,8 +894,7 @@ List<Long> cids = comActDAO.selectCommunityByStreetId(loginUserInfoVO.getStreetId()); comEvent.setUserType(5); comEvent.setCommunityIds(cids); - } - } + } if (isExpertCheck && comEvent.getUserType()!=1){ if (nonNull(comEventMapper.listEventIds(expertId))){ List<Long> eventIds = comEventMapper.listEventIds(expertId); -- Gitblit v1.7.1