diff --git a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java b/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java deleted file mode 100644 index e5507ab766..0000000000 --- a/epmet-module/resi-group/resi-group-server/src/main/java/com/epmet/modules/group/service/impl/ResiGroupServiceImpl.java +++ /dev/null @@ -1,1358 +0,0 @@ -/** - * Copyright 2018 人人开源 https://www.renren.io - *

- * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - *

- * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - *

- * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.epmet.modules.group.service.impl; - -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; -import com.epmet.commons.tools.constant.AppClientConstant; -import com.epmet.commons.tools.constant.EpmetRoleKeyConstant; -import com.epmet.commons.tools.constant.FieldConstant; -import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.exception.EpmetErrorCode; -import com.epmet.commons.tools.exception.RenException; -import com.epmet.commons.tools.page.PageData; -import com.epmet.commons.tools.scan.param.ImgScanParamDTO; -import com.epmet.commons.tools.scan.param.ImgTaskDTO; -import com.epmet.commons.tools.scan.param.TextScanParamDTO; -import com.epmet.commons.tools.scan.param.TextTaskDTO; -import com.epmet.commons.tools.scan.result.SyncScanResult; -import com.epmet.commons.tools.security.user.LoginUserUtil; -import com.epmet.commons.tools.utils.*; -import com.epmet.constant.ReadFlagConstant; -import com.epmet.dto.form.*; -import com.epmet.dto.result.UserResiInfoResultDTO; -import com.epmet.dto.result.UserRoleResultDTO; -import com.epmet.feign.EpmetMessageOpenFeignClient; -import com.epmet.modules.constant.UserMessageConstant; -import com.epmet.modules.feign.EpmetMessageFeignClient; -import com.epmet.modules.feign.EpmetUserFeignClient; -import com.epmet.modules.feign.GovOrgFeignClient; -import com.epmet.modules.group.dao.GroupEditSubmitRecordDao; -import com.epmet.modules.group.dao.ResiGroupDao; -import com.epmet.modules.group.dao.ResiGroupOperationDao; -import com.epmet.modules.group.entity.GroupEditSubmitRecordEntity; -import com.epmet.modules.group.entity.ResiGroupEntity; -import com.epmet.modules.group.entity.ResiGroupOperationEntity; -import com.epmet.modules.group.redis.ResiGroupRedis; -import com.epmet.modules.group.service.ResiGroupOperationService; -import com.epmet.modules.group.service.ResiGroupService; -import com.epmet.modules.group.service.ResiGroupStatisticalService; -import com.epmet.modules.member.dao.GroupMemeberOperationDao; -import com.epmet.modules.member.dao.ResiGroupMemberDao; -import com.epmet.modules.member.redis.ResiGroupMemberRedis; -import com.epmet.modules.member.service.GroupMemeberOperationService; -import com.epmet.modules.member.service.ResiGroupMemberService; -import com.epmet.modules.utils.ModuleConstant; -import com.epmet.resi.group.constant.*; -import com.epmet.resi.group.dto.UserRoleDTO; -import com.epmet.resi.group.dto.group.*; -import com.epmet.resi.group.dto.group.form.GridIdFormDTO; -import com.epmet.resi.group.dto.group.form.ShouldVoteCountFormDTO; -import com.epmet.resi.group.dto.group.form.*; -import com.epmet.resi.group.dto.group.result.*; -import com.epmet.resi.group.dto.member.GroupMemeberOperationDTO; -import com.epmet.resi.group.dto.member.ResiGroupMemberDTO; -import com.epmet.resi.group.dto.member.ResiGroupMemberInfoRedisDTO; -import com.github.pagehelper.PageHelper; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 群组信息表 - * - * @author generator generator@elink-cn.com - * @since v1.0.0 2020-03-28 - */ -@Service -public class ResiGroupServiceImpl extends BaseServiceImpl implements ResiGroupService { - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Autowired - private ResiGroupMemberService resiGroupMemberService; - - @Autowired - private ResiGroupOperationService resiGroupOperationService; - - @Autowired - private EpmetUserFeignClient epmetUserFeignClient; - - @Autowired - private GroupMemeberOperationService groupMemeberOperationService; - - @Autowired - private ResiGroupStatisticalService resiGroupStatisticalService; - - @Autowired - private ResiGroupOperationDao resiGroupOperationDao; - - @Autowired - private ResiGroupMemberDao resiGroupMemberDao; - - @Autowired - private GroupMemeberOperationDao groupMemeberOperationDao; - - @Autowired - private ResiGroupRedis resiGroupRedis; - - @Autowired - private ResiGroupMemberRedis resiGroupMemberRedis; - - @Autowired - private GovOrgFeignClient govOrgFeignClient; - - @Autowired - private EpmetMessageFeignClient epmetMessageFeignClient; - - @Autowired - private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient; - - @Autowired - private ResiGroupDao resiGroupDao; - - @Autowired - private GroupEditSubmitRecordDao groupEditSubmitRecordDao; - - @Autowired - private LoginUserUtil loginUserUtil; - - @Autowired - private CpUserDetailRedis sysUserInfoRedis; - - @Value("${openapi.scan.server.url}") - private String scanApiUrl; - - @Value("${openapi.scan.method.textSyncScan}") - private String textSyncScanMethod; - - @Value("${openapi.scan.method.imgSyncScan}") - private String imgSyncScanMethod; - - @Override - public PageData page(Map params) { - IPage page = baseDao.selectPage( - getPage(params, FieldConstant.CREATED_TIME, false), - getWrapper(params) - ); - return getPageData(page, ResiGroupDTO.class); - } - - @Override - public List list(Map params) { - List entityList = baseDao.selectList(getWrapper(params)); - - return ConvertUtils.sourceToTarget(entityList, ResiGroupDTO.class); - } - - private QueryWrapper getWrapper(Map params) { - String id = (String) params.get(FieldConstant.ID_HUMP); - - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); - - return wrapper; - } - - @Override - public ResiGroupDTO get(String id) { - ResiGroupEntity entity = baseDao.selectById(id); - return ConvertUtils.sourceToTarget(entity, ResiGroupDTO.class); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void save(ResiGroupDTO dto) { - ResiGroupEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupEntity.class); - insert(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ResiGroupDTO dto) { - ResiGroupEntity entity = ConvertUtils.sourceToTarget(dto, ResiGroupEntity.class); - updateById(entity); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void delete(String[] ids) { - // 逻辑删除(@TableLogic 注解) - baseDao.deleteBatchIds(Arrays.asList(ids)); - } - - /** - * @param myGroupFormDTO - * @return com.epmet.commons.tools.utils.Result> - * @Author yinzuomei - * @Description 我的小组查询(包含我创建的小组+我加入的小组),以各组的最新话题时间有近到远排序) - * @Date 2020/3/28 20:37 - **/ - @Override - public List getMyGroup(MyGroupFormDTO myGroupFormDTO) { - int pageIndex = (myGroupFormDTO.getPageNo() - NumConstant.ONE) * myGroupFormDTO.getPageSize(); - myGroupFormDTO.setPageNo(pageIndex); - List myGroupList = baseDao.selectListMyGroup(myGroupFormDTO); - if (null == myGroupList || myGroupList.size() < 1) { - logger.info(String.format("我的小组查询为空,selectListMyGroup入参%s", JSON.toJSONString(myGroupFormDTO))); - return new ArrayList<>(); - } - return myGroupList; - } - - /** - * @param recommendGroupFormDTO - * @return com.epmet.commons.tools.utils.Result> - * @Author yinzuomei - * @Description 推荐组列表查询 - * @Date 2020/3/28 19:53 - **/ - @Override - public List getRecommendGroup(RecommendGroupFormDTO recommendGroupFormDTO) { - int pageIndex = (recommendGroupFormDTO.getPageNo() - NumConstant.ONE) * recommendGroupFormDTO.getPageSize(); - recommendGroupFormDTO.setPageNo(pageIndex); - //显示当前网格内所有当前用户还未加入的组,以组的人数由高到低排序;如果人数相同,以最新话题的时间有近到远排序 - List recommendGroupList = baseDao.selectListRecommendGroup(recommendGroupFormDTO); - if (null == recommendGroupList || recommendGroupList.size() == 0) { - logger.info(String.format("推荐小组查询为空,selectListRecommendGroup入参%s", JSON.toJSONString(recommendGroupFormDTO))); - return new ArrayList<>(); - } - for (RecommendGroupResultDTO recommendGroupResultDTO : recommendGroupList) { - GroupMemeberOperationDTO groupMemeberOperationDTO = groupMemeberOperationService.selectLatestRecord(recommendGroupResultDTO.getGroupId(), - recommendGroupFormDTO.getUserId()); - if (null != groupMemeberOperationDTO) { - recommendGroupResultDTO.setStatus(groupMemeberOperationDTO.getOperateStatus()); - } - } - return recommendGroupList; - } - - /** - * @param createdFormDTO - * @return com.epmet.commons.tools.utils.Result> - * @Author yinzuomei - * @Description 我创建的小组 - * @Date 2020/3/28 22:01 - **/ - @Override - public List getCreated(CreatedFormDTO createdFormDTO) { - int pageIndex = (createdFormDTO.getPageNo() - NumConstant.ONE) * createdFormDTO.getPageSize(); - createdFormDTO.setPageNo(pageIndex); - List createdResultDTOList = baseDao.selectListMyCreated(createdFormDTO); - if (null == createdResultDTOList || createdResultDTOList.size() == 0) { - logger.info(String.format("我创建的小组查询为空,selectListMyCreated入参%s", JSON.toJSONString(createdFormDTO))); - return new ArrayList<>(); - } - return createdResultDTOList; - } - - /** - * @param modifyGroupFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 修改组信息 - * @Date 2020/3/28 22:27 - **/ - @Transactional(rollbackFor = Exception.class) - @Override - public void modifyGroup(ModifyGroupFormDTO modifyGroupFormDTO) { - //校验是否是群主 - ResiGroupMemberDTO groupMemberDTO = resiGroupMemberService.getResiGroupMember(modifyGroupFormDTO.getGroupId(), modifyGroupFormDTO.getUserId()); - if (null == groupMemberDTO || ModuleConstant.GROUP_MEMBER.equals(groupMemberDTO.getGroupLeaderFlag())) { - logger.info(String.format("修改小组信息异常:%s",EpmetErrorCode.GROUP_LEADER_CAN_EDIT_GROUP_INFO.getMsg())); - throw new RenException(EpmetErrorCode.GROUP_LEADER_CAN_EDIT_GROUP_INFO.getCode()); - } - if (StringUtils.isBlank(modifyGroupFormDTO.getGroupHeadPhoto()) - && StringUtils.isBlank(modifyGroupFormDTO.getGroupName()) - && StringUtils.isBlank(modifyGroupFormDTO.getGroupIntroduction())) { - logger.info("小组信息未发生变更,无需更改"); - return; - } - int updatedRows = baseDao.modifyGroupInfo(modifyGroupFormDTO); - if (1 == updatedRows) { - logger.info("修改小组信息成功"); - }else{ - logger.error(String.format("修改小组信息失败,updatedRows=%s",updatedRows)); - } - } - - /** - * @param groupSummarizeFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 查看小组管理界面信息 - * @Date 2020/3/29 17:52 - **/ - @Override - public GroupSummarizeResultDTO getGroupSummarize(GroupSummarizeFormDTO groupSummarizeFormDTO) { - GroupSummarizeResultDTO groupSummarizeResultDTO = baseDao.selectGroupSummarize(groupSummarizeFormDTO); - if (null == groupSummarizeResultDTO) { - logger.warn(String.format("查看小组管理界面信息异常,userId=%s,groupId=%s",groupSummarizeFormDTO.getUserId(),groupSummarizeFormDTO.getGroupId())); - return new GroupSummarizeResultDTO(); - } - //获取组长信息 - Result groupLeaderUserInfo = this.getGroupLeaderUserInfo(groupSummarizeFormDTO.getGroupId()); - if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { - groupSummarizeResultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName()); - } else { - logger.warn(String.format("查看小组管理界面信息错误,获取组长注册信息失败,接口返参%s",JSON.toJSONString(groupLeaderUserInfo))); - groupSummarizeResultDTO.setLeaderName(""); - } - return groupSummarizeResultDTO; - } - - /** - * @param groupId - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 根据组id查询组长信息 - * @Date 2020/3/30 15:07 - **/ - private Result getGroupLeaderUserInfo(String groupId) { - //群主名称需要调用feign查询 - ResiGroupEntity resiGroupEntity = baseDao.selectById(groupId); - if (null == resiGroupEntity) { - return new Result<>(); - } - ResiGroupMemberDTO groupMemberDTO = baseDao.selectGroupLeader(groupId); - if (null == groupMemberDTO) { - return new Result<>(); - } - UserResiInfoFormDTO resiUserInfoFormDTO = new UserResiInfoFormDTO(); - resiUserInfoFormDTO.setCustomerId(resiGroupEntity.getCustomerId()); - resiUserInfoFormDTO.setUserId(groupMemberDTO.getCustomerUserId()); - return epmetUserFeignClient.getUserResiInfoDTO(resiUserInfoFormDTO); - } - - /** - * @param applyCreateGroupFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 创建小组 - * @Date 2020/3/29 19:26 - **/ - @Transactional(rollbackFor = Exception.class) - @Override - public void applyCreateGroup(ApplyCreateGroupFormDTO applyCreateGroupFormDTO) { - //1、校验是否同名 - List resiGroupEntityList = this.getResiGroupEntityList(applyCreateGroupFormDTO); - if (null != resiGroupEntityList && resiGroupEntityList.size() > 0) { - logger.info(String.format("创建小组异常:%s",EpmetErrorCode.GROUP_ALREADY_EXISTED.getMsg())); - throw new RenException(EpmetErrorCode.GROUP_ALREADY_EXISTED.getCode()); - } - - //2.内容检查 - scanGroupEditContent(applyCreateGroupFormDTO.getGroupName(), - applyCreateGroupFormDTO.getGroupIntroduction(), - applyCreateGroupFormDTO.getGroupHeadPhoto()); - - //3.1、查询当前申请人的身份,生成对应格式的消息内容 - UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(applyCreateGroupFormDTO.getApp(), - applyCreateGroupFormDTO.getUserId(), - applyCreateGroupFormDTO.getCustomerId(), - applyCreateGroupFormDTO.getGridId()); - if (!NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag()) && !NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())) { - logger.info(String.format("创建小组异常:%s",EpmetErrorCode.CANNOT_CREATE_GROUP.getMsg())); - throw new RenException(EpmetErrorCode.CANNOT_CREATE_GROUP.getCode()); - } - String roleName = ""; - if(NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag())){ - roleName = ModuleConstant.PARTYMEMBER; - }else if(NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())){ - roleName = ModuleConstant.WAREMHEARTED_RESI; - } - - //3.2、插入一条待审核的组信息 - ResiGroupEntity resiGroupEntity = this.structureResiGroupEntity(applyCreateGroupFormDTO); - insert(resiGroupEntity); - //4.获取居民注册信息 - UserResiInfoFormDTO resiParam = new UserResiInfoFormDTO(); - resiParam.setCustomerId(applyCreateGroupFormDTO.getCustomerId()); - resiParam.setUserId(applyCreateGroupFormDTO.getUserId()); - Result resiResult = - epmetUserFeignClient.getUserResiInfoDTO(resiParam); - String userName = ""; - if(resiResult.success() && null != resiResult.getData()){ - userName = (StringUtils.isBlank(resiResult.getData().getSurname()) ? "" : resiResult.getData().getSurname()) - + (StringUtils.isBlank(resiResult.getData().getName()) ? "" :resiResult.getData().getName()); - } - userName = StringUtils.isBlank(userName) ? ModuleConstant.UNKNOWN : userName; - String msg = String.format(UserMessageConstant.CREATION_OF_GROUP_MESSAGE_TEMPLATE,roleName,userName,applyCreateGroupFormDTO.getGroupName()); - //4.2、插入一条待审核的操作记录 - ResiGroupOperationDTO resiGroupOperation = new ResiGroupOperationDTO(); - resiGroupOperation.setResiGroupId(resiGroupEntity.getId()); - resiGroupOperation.setState(GroupStateConstant.GROUP_UNDER_AUDITTING); - resiGroupOperation.setOperateUserId(applyCreateGroupFormDTO.getUserId()); - resiGroupOperation.setMessageText(msg); - resiGroupOperation.setReadFlag(ModuleConstant.UNREAD); - resiGroupOperationService.save(resiGroupOperation); - //5、插入一群成员信息(群主) - ResiGroupMemberDTO resiGroupMemberDTO = new ResiGroupMemberDTO(); - resiGroupMemberDTO.setCustomerUserId(applyCreateGroupFormDTO.getUserId()); - resiGroupMemberDTO.setResiGroupId(resiGroupEntity.getId()); - resiGroupMemberDTO.setGroupLeaderFlag(LeaderFlagConstant.GROUP_LEADER); - resiGroupMemberDTO.setStatus(MemberStateConstant.UNDER_AUDITTING); - resiGroupMemberDTO.setEnterGroupType(EnterGroupTypeConstant.CREATED); - resiGroupMemberService.save(resiGroupMemberDTO); - //6、插入一条入群记录(群主的) - GroupMemeberOperationDTO groupMemeberOperationDTO = new GroupMemeberOperationDTO(); - groupMemeberOperationDTO.setCustomerUserId(applyCreateGroupFormDTO.getUserId()); - groupMemeberOperationDTO.setGroupId(resiGroupEntity.getId()); - groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.UNDER_AUDITTING); - groupMemeberOperationDTO.setOperateUserId(applyCreateGroupFormDTO.getUserId()); - groupMemeberOperationDTO.setEnterGroupType(EnterGroupTypeConstant.CREATED); - groupMemeberOperationService.save(groupMemeberOperationDTO); - //7、群初始统计记录 - /*UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(applyCreateGroupFormDTO.getApp(), - applyCreateGroupFormDTO.getUserId(), - applyCreateGroupFormDTO.getCustomerId(), - applyCreateGroupFormDTO.getGridId());*/ - ResiGroupStatisticalDTO resiGroupStatisticalDTO = new ResiGroupStatisticalDTO(); - resiGroupStatisticalDTO.setResiGroupId(resiGroupEntity.getId()); - resiGroupStatisticalDTO.setTotalMembers(NumConstant.ONE); - resiGroupStatisticalDTO.setTotalNormalMemebers(NumConstant.ONE); - resiGroupStatisticalDTO.setTotalTopics(NumConstant.ZERO); - resiGroupStatisticalDTO.setTotalIssues(NumConstant.ZERO); - if (NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag())) { - resiGroupStatisticalDTO.setTotalPartyMembers(NumConstant.ONE); - } else { - resiGroupStatisticalDTO.setTotalPartyMembers(NumConstant.ZERO); - } - if (NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())) { - resiGroupStatisticalDTO.setTotalEarnestMemebers(NumConstant.ONE); - } else { - resiGroupStatisticalDTO.setTotalEarnestMemebers(NumConstant.ZERO); - } - resiGroupStatisticalService.save(resiGroupStatisticalDTO); - //发送消息:创建小组 - sendMsgResi2Gov(UserMessageConstant.CREATE_GROUP_APPLYING_MSG_TITLE,msg,applyCreateGroupFormDTO.getGridId(),applyCreateGroupFormDTO.getUserId(),applyCreateGroupFormDTO.getCustomerId()); - //更新政府端:工作-基层治理-群组管理reddot - resiGroupRedis.addWorkGrassrootsGroupRedDotValue(applyCreateGroupFormDTO.getGridId()); - } - - - private void setWorkGrassrootsGroupRedDot(String gridId) { - try{ - - }catch(Exception e){ - e.printStackTrace(); - } - } - - /** - * @param applyCreateGroupFormDTO - * @return java.util.List - * @Author yinzuomei - * @Description 查询是否存在相同名字的群 - * @Date 2020/3/30 16:01 - **/ - private List getResiGroupEntityList(ApplyCreateGroupFormDTO applyCreateGroupFormDTO) { - List list = baseDao.checkResiGroupName(applyCreateGroupFormDTO); - return list; - } - - /** - * @param initApplyGroupFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 加入小组界面初始化 - * @Date 2020/3/30 10:17 - **/ - @Override - public void initApplyGroup(InitApplyGroupFormDTO initApplyGroupFormDTO) { - UserResiInfoFormDTO resiUserInfoFormDTO = new UserResiInfoFormDTO(); - resiUserInfoFormDTO.setUserId(initApplyGroupFormDTO.getUserId()); - resiUserInfoFormDTO.setCustomerId(initApplyGroupFormDTO.getCustomerId()); - Result result = epmetUserFeignClient.getUserResiInfoDTO(resiUserInfoFormDTO); - if (!result.success() || null == result.getData() || StringUtils.isBlank(result.getData().getRegMobile())) { - logger.info(String.format("加入小组界面初始化查询成功,当前用户非注册居民,epmet-user-server接口入参%s,返回%s",JSON.toJSONString(resiUserInfoFormDTO),JSON.toJSONString(result))); - throw new RenException(EpmetErrorCode.CANNOT_JOIN_GROUP.getCode()); - } - } - - private ResiGroupEntity structureResiGroupEntity(ApplyCreateGroupFormDTO applyCreateGroupFormDTO) { - ResiGroupEntity resiGroupEntity = new ResiGroupEntity(); - resiGroupEntity.setCustomerId(applyCreateGroupFormDTO.getCustomerId()); - resiGroupEntity.setGridId(applyCreateGroupFormDTO.getGridId()); - resiGroupEntity.setGroupHeadPhoto(applyCreateGroupFormDTO.getGroupHeadPhoto()); - resiGroupEntity.setGroupName(applyCreateGroupFormDTO.getGroupName()); - resiGroupEntity.setGroupIntroduction(applyCreateGroupFormDTO.getGroupIntroduction()); - resiGroupEntity.setCreatedBy(applyCreateGroupFormDTO.getUserId()); - resiGroupEntity.setState(GroupStateConstant.GROUP_UNDER_AUDITTING); - return resiGroupEntity; - } - - /** - * @param initApplyCreatedGroupFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 校验用户是否是热心居民或者党员 - * @Date 2020/3/30 15:50 - **/ - @Override - public void initApplyCreatedGroup(InitApplyCreatedGroupFormDTO initApplyCreatedGroupFormDTO) { - UserRoleDTO userRoleDTO = this.checkPartyMemberOrWarmHeated(initApplyCreatedGroupFormDTO.getApp(), - initApplyCreatedGroupFormDTO.getUserId(), - initApplyCreatedGroupFormDTO.getCustomerId(), - initApplyCreatedGroupFormDTO.getGridId()); - if (!NumConstant.ONE_STR.equals(userRoleDTO.getPartymemberFlag()) && !NumConstant.ONE_STR.equals(userRoleDTO.getWarmHeartedFlag())) { - logger.info(String.format("创建小组界面初始化查询成功,用户角色列表%s",JSON.toJSONString(userRoleDTO))); - throw new RenException(EpmetErrorCode.CANNOT_CREATE_GROUP.getCode()); - } - } - - - /** - * @param agreeApplyGroupFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 审核群申请-测试用后面会放到政府端 - * @Date 2020/3/31 12:44 - **/ - @Override - @Transactional(rollbackFor = Exception.class) - public Result agreeApplyGroup(AgreeApplyGroupFormDTO agreeApplyGroupFormDTO) { - //1、更新组的状态 - ResiGroupDTO resiGroupDTO = this.get(agreeApplyGroupFormDTO.getGroupId()); - resiGroupDTO.setState(GroupStateConstant.GROUP_APPROVED); - this.update(resiGroupDTO); - //2、更新组的申请记录改为已通过 - ResiGroupOperationDTO resiGroupOperation = resiGroupOperationDao.selectGroupApplyRecord(agreeApplyGroupFormDTO.getGroupId()); - resiGroupOperation.setState(GroupStateConstant.GROUP_APPROVED); - resiGroupOperation.setOperateUserId(agreeApplyGroupFormDTO.getUserId()); - resiGroupOperationService.update(resiGroupOperation); - //3、将群主在群成员的状态改为已通过 - ResiGroupMemberDTO resiGroupMemberDTO = resiGroupMemberDao.selectLeaderMember(agreeApplyGroupFormDTO.getGroupId()); - resiGroupMemberDTO.setStatus(MemberStateConstant.APPROVED); - resiGroupMemberService.update(resiGroupMemberDTO); - //4、更新群主的出入群记录改为已通过 - GroupMemeberOperationDTO groupMemeberOperationDTO = groupMemeberOperationDao.selectLeaderRecord(agreeApplyGroupFormDTO.getGroupId()); - groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.APPROVED); - groupMemeberOperationDTO.setOperateUserId(agreeApplyGroupFormDTO.getUserId()); - groupMemeberOperationService.update(groupMemeberOperationDTO); - //5、给用户发送消息???待定 - //6、新增小组缓存信息、组员缓存信息 - Map param = new HashMap<>(); - param.put(ModuleConstant.RESI_GROUP_ID, resiGroupDTO.getId()); - param.put(FieldConstant.DEL_FLAG,NumConstant.ZERO_STR); - List statisticalList = resiGroupStatisticalService.list(param); - if (null != statisticalList && statisticalList.size() > 0) { - ResiGroupInfoRedisDTO groupRedis = transferToGroupInfoRedis(resiGroupDTO, statisticalList.get(0)); - resiGroupRedis.set(groupRedis); - - ResiGroupMemberInfoRedisDTO memberRedis = new ResiGroupMemberInfoRedisDTO(); - memberRedis.setUserId(resiGroupMemberDTO.getCustomerUserId()); - memberRedis.setGroupLeaderFlag(ModuleConstant.GROUP_LEADER); - memberRedis.setEnterGroupType(resiGroupMemberDTO.getEnterGroupType()); - memberRedis.setMemberStatus(resiGroupMemberDTO.getStatus()); - memberRedis.setGroupId(resiGroupMemberDTO.getResiGroupId()); - - UserResiInfoFormDTO userParam = new UserResiInfoFormDTO(); - userParam.setUserId(resiGroupMemberDTO.getCustomerUserId()); - userParam.setCustomerId(resiGroupDTO.getCustomerId()); - Result userInfo = - epmetUserFeignClient.getUserResiInfoDTO(userParam); - if(userInfo.success() && null != userInfo.getData()){ - memberRedis.setUserShowName(userInfo.getData().getShowName()); - memberRedis.setUserHeadPhoto(userInfo.getData().getHeadPhoto()); - memberRedis.setMemberMobile(userInfo.getData().getRegMobile()); - }else{ - logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND); - } - resiGroupMemberRedis.set(memberRedis); - } else { - /* - 当没有查询到组统计信息时,需要自己封装统计信息 - @param UserRoleFormDTO::getApp - @param UserRoleFormDTO::getCustomerId - @param UserRoleFormDTO::getUserId - @param UserRoleFormDTO::getGridId - 查询用户身份信息[热心居民/党员] - epmetUserFeignClient.getUserRoleInfo(userRoleFormDTO); - */ - logger.warn(ModuleConstant.NO_SUCH_GROUP_STASTICAL_INFO); - } - //发送消息 - UserMessageFormDTO userMessageFormDTO = new UserMessageFormDTO(); - userMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy()); - userMessageFormDTO.setTitle(UserMessageConstant.AUDITED_GROUP_APPLYING_TITLE); - userMessageFormDTO.setReadFlag(ModuleConstant.UNREAD); - userMessageFormDTO.setApp(ModuleConstant.APP_RESI); - userMessageFormDTO.setGridId(resiGroupDTO.getGridId()); - userMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId()); - userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName())); - if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){ - logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName()))); - } - //发送微信订阅消息 - WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO(); - wxSubscribeMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId()); - wxSubscribeMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy()); - wxSubscribeMessageFormDTO.setClientType(AppClientConstant.APP_RESI); - wxSubscribeMessageFormDTO.setGridId(resiGroupDTO.getGridId()); - wxSubscribeMessageFormDTO.setBehaviorType(UserMessageConstant.WX_APPLY_CREATE_GROUP_BEHAVIOR); - wxSubscribeMessageFormDTO.setMessageContent(String.format(UserMessageConstant.AGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName())); - wxSubscribeMessageFormDTO.setMessageTime(new Date()); - List msgList = new ArrayList<>(); - msgList.add(wxSubscribeMessageFormDTO); - epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); - //更新政府端:工作-基层治理-党员认证reddot - resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(resiGroupDTO.getGridId()); - return new Result(); - } - - /** - * @param disAgreeApplyGroupFormDTO - * @return com.epmet.commons.tools.utils.Result - * @Author yinzuomei - * @Description 审核(拒绝)群申请-测试用后面会放到政府端 - * @Date 2020/3/31 13:22 - **/ - @Override - @Transactional(rollbackFor = Exception.class) - public Result disagreeApplyGroup(DisAgreeApplyGroupFormDTO disAgreeApplyGroupFormDTO) { - //1、更新组的状态 - ResiGroupDTO resiGroupDTO = this.get(disAgreeApplyGroupFormDTO.getGroupId()); - resiGroupDTO.setState(GroupStateConstant.GROUP_REJECTED); - this.update(resiGroupDTO); - //2、更新组的申请记录改为已通过 - ResiGroupOperationDTO resiGroupOperation = resiGroupOperationDao.selectGroupApplyRecord(disAgreeApplyGroupFormDTO.getGroupId()); - resiGroupOperation.setState(GroupStateConstant.GROUP_REJECTED); - resiGroupOperation.setOperateUserId(disAgreeApplyGroupFormDTO.getUserId()); - resiGroupOperation.setOperateReason(disAgreeApplyGroupFormDTO.getRejectReason()); - resiGroupOperationService.update(resiGroupOperation); - //3、将群主在群成员的状态改为已通过 - ResiGroupMemberDTO resiGroupMemberDTO = resiGroupMemberDao.selectLeaderMember(disAgreeApplyGroupFormDTO.getGroupId()); - resiGroupMemberDTO.setStatus(MemberStateConstant.REJECTED); - resiGroupMemberService.update(resiGroupMemberDTO); - //4、更新群主的出入群记录改为已通过 - GroupMemeberOperationDTO groupMemeberOperationDTO = groupMemeberOperationDao.selectLeaderRecord(disAgreeApplyGroupFormDTO.getGroupId()); - groupMemeberOperationDTO.setOperateStatus(MemberStateConstant.REJECTED); - groupMemeberOperationDTO.setOperateUserId(disAgreeApplyGroupFormDTO.getUserId()); - groupMemeberOperationService.update(groupMemeberOperationDTO); - //5、给用户发送消息???待定 - UserMessageFormDTO userMessageFormDTO = new UserMessageFormDTO(); - userMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy()); - userMessageFormDTO.setTitle(UserMessageConstant.AUDITED_GROUP_APPLYING_TITLE); - userMessageFormDTO.setReadFlag(ModuleConstant.UNREAD); - userMessageFormDTO.setApp(ModuleConstant.APP_RESI); - userMessageFormDTO.setGridId(resiGroupDTO.getGridId()); - userMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId()); - userMessageFormDTO.setMessageContent(String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason())); - if(!epmetMessageFeignClient.saveUserMessage(userMessageFormDTO).success()){ - logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason()))); - } - - //发送微信订阅消息 - WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO(); - wxSubscribeMessageFormDTO.setCustomerId(resiGroupDTO.getCustomerId()); - wxSubscribeMessageFormDTO.setUserId(resiGroupDTO.getCreatedBy()); - wxSubscribeMessageFormDTO.setClientType(AppClientConstant.APP_RESI); - wxSubscribeMessageFormDTO.setGridId(resiGroupDTO.getGridId()); - wxSubscribeMessageFormDTO.setBehaviorType(UserMessageConstant.WX_APPLY_CREATE_GROUP_BEHAVIOR); - wxSubscribeMessageFormDTO.setMessageContent(String.format(UserMessageConstant.DISAGREE_CREATING_GROUP_MSG_TEMPLATE,resiGroupDTO.getGroupName(),disAgreeApplyGroupFormDTO.getRejectReason())); - wxSubscribeMessageFormDTO.setMessageTime(new Date()); - List msgList = new ArrayList<>(); - msgList.add(wxSubscribeMessageFormDTO); - epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList); - - //更新政府端:工作-基层治理-党员认证reddot - resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(resiGroupDTO.getGridId()); - return new Result(); - } - - /** - * @param app - * @param userId - * @param customerId - * @param gridId - * @return boolean - * @Author yinzuomei - * @Description 用户拥有党员或者热心居民标签返回true, 没有权限返回false - * @Date 2020/3/30 16:33 - **/ - @Override - public UserRoleDTO checkPartyMemberOrWarmHeated(String app, String userId, String customerId, String gridId) { - UserRoleDTO userRoleDTO = new UserRoleDTO(); - UserRoleFormDTO userRoleFormDTO = new UserRoleFormDTO(); - userRoleFormDTO.setApp(app); - userRoleFormDTO.setCustomerId(customerId); - userRoleFormDTO.setUserId(userId); - userRoleFormDTO.setGridId(gridId); - logger.info(String.format("用户同意邀请进组,获取当前用户所有角色入参:%s", JSON.toJSONString(userRoleFormDTO))); - Result> userRoleListResult = epmetUserFeignClient.getUserRoleInfo(userRoleFormDTO); - if (!userRoleListResult.success()) { - logger.error("获取用户角色feign调用失败" + userRoleListResult.getMsg()); - return userRoleDTO; - } - List userRoleList = userRoleListResult.getData(); - if (null == userRoleList || userRoleList.size() == 0) { - return userRoleDTO; - } - for (UserRoleResultDTO userRoleResultDTO : userRoleList) { - if (EpmetRoleKeyConstant.PARTYMEMBER.equals(userRoleResultDTO.getRoleKey())) { - userRoleDTO.setPartymemberFlag(NumConstant.ONE_STR); - } - if (EpmetRoleKeyConstant.WARMHEARTED.equals(userRoleResultDTO.getRoleKey())) { - userRoleDTO.setWarmHeartedFlag(NumConstant.ONE_STR); - } - if (EpmetRoleKeyConstant.REGISTERED_RESI.equals(userRoleResultDTO.getRoleKey())) { - userRoleDTO.setRegisteredResiFlag(NumConstant.ONE_STR); - } - } - logger.info(String.format("用户同意邀请进组,获取当前用户所有角色返参:%s",JSON.toJSONString(userRoleDTO))); - return userRoleDTO; - } - - @Override - public Result> audited(GroupAuditedFromDTO formDTO) { - Result> result = new Result<>(); - //查询条件 - int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize(); - formDTO.setPageNo(pageIndex); - //获取审核列表 - List resultList = baseDao.selectAuditedGroupList(formDTO); - - return result.ok(resultList); - } - - @Override - public Result> getGroupsInGrid(GroupAuditedFromDTO formDTO) { - List resultList = new ArrayList<>(); - //查询条件 - int pageIndex = (formDTO.getPageNo() - NumConstant.ONE) * formDTO.getPageSize(); - formDTO.setPageNo(pageIndex); - List list = baseDao.selectGroupsByGridId(formDTO); - list.forEach(group -> { - GroupsInGridResultDTO groupsInGridResultDTO = new GroupsInGridResultDTO(); - if (MemberStateConstant.REJECTED.equals(group.getState())) { - groupsInGridResultDTO.setGroupId(group.getId()); - groupsInGridResultDTO.setGroupName(group.getGroupName()); - groupsInGridResultDTO.setGroupHeadPhoto(group.getGroupHeadPhoto()); - groupsInGridResultDTO.setStatus(group.getState()); - groupsInGridResultDTO.setTotalMember(NumConstant.ZERO); - groupsInGridResultDTO.setTotalPartyMember(NumConstant.ZERO); - resultList.add(groupsInGridResultDTO); - } else if(MemberStateConstant.APPROVED.equals(group.getState())) { - //缓存中获取组信息 - ResiGroupInfoRedisDTO resiGroupInfoRedisDTO = resiGroupRedis.get(group.getId()); - groupsInGridResultDTO.setGroupId(resiGroupInfoRedisDTO.getGroupId()); - groupsInGridResultDTO.setGroupName(resiGroupInfoRedisDTO.getGroupName()); - groupsInGridResultDTO.setGroupHeadPhoto(resiGroupInfoRedisDTO.getGroupHeadPhoto()); - groupsInGridResultDTO.setStatus(resiGroupInfoRedisDTO.getGroupState()); - groupsInGridResultDTO.setTotalMember(resiGroupInfoRedisDTO.getGroupStatisticalInfo().getTotalMembers()); - groupsInGridResultDTO.setTotalPartyMember(resiGroupInfoRedisDTO.getGroupStatisticalInfo().getTotalPartyMembers()); - resultList.add(groupsInGridResultDTO); - } - - - }); - - return new Result>().ok(resultList); - } - - @Override - public Result getGovGroupSummarize(GovGroupSummarizeFromDTO formDTO) { - GovGroupSummarizeResultDTO resultDTO = new GovGroupSummarizeResultDTO(); - //从缓存中获取组相关信息 - ResiGroupInfoRedisDTO resiGroupInfoRedisDTO = resiGroupRedis.get(formDTO.getGroupId()); - resultDTO.setGroupId(resiGroupInfoRedisDTO.getGroupId()); - resultDTO.setGroupHeadPhoto(resiGroupInfoRedisDTO.getGroupHeadPhoto()); - resultDTO.setGroupIntroduction(resiGroupInfoRedisDTO.getGroupIntroduction()); - resultDTO.setGroupName(resiGroupInfoRedisDTO.getGroupName()); - resultDTO.setTotalMember(resiGroupInfoRedisDTO.getGroupStatisticalInfo().getTotalMembers()); - resultDTO.setTotalTopics(resiGroupInfoRedisDTO.getGroupStatisticalInfo().getTotalTopics()); - - //获取组长信息 - Result groupLeaderUserInfo = this.getGroupLeaderUserInfo(formDTO.getGroupId()); - if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { - resultDTO.setLeaderName(groupLeaderUserInfo.getData().getShowName()); - } else { - logger.info("组长注册信息查询失败" + groupLeaderUserInfo.getMsg()); - } - - return new Result().ok(resultDTO); - } - - /** - * @return ResiGroupInfoRedisDTO - * @Description 将ResiGroupDTO与ResiGroupStatisticalDTO转换成ResiGroupInfoRedisDTO - * @Param ResiGroupDTO - * @Param ResiGroupStatisticalDTO - * @Author wangc - * @Date 2020.04.13 16:36 - **/ - private ResiGroupInfoRedisDTO transferToGroupInfoRedis(ResiGroupDTO groupDTO, ResiGroupStatisticalDTO statisticalDTO) { - - ResiGroupStatisticalInfoRedisDTO statisticalObjct = - ConvertUtils.sourceToTarget(statisticalDTO, ResiGroupStatisticalInfoRedisDTO.class); - statisticalObjct.setTotalEarnestMembers(statisticalDTO.getTotalEarnestMemebers()); - statisticalObjct.setTotalNormalMembers(statisticalDTO.getTotalNormalMemebers()); - ResiGroupInfoRedisDTO targetObject = - ConvertUtils.sourceToTarget(groupDTO, ResiGroupInfoRedisDTO.class); - targetObject.setGroupId(groupDTO.getId()); - targetObject.setGroupState(groupDTO.getState()); - SimpleDateFormat format = new SimpleDateFormat(DateUtils.DATE_TIME_PATTERN); - if (null != groupDTO.getLatestTopicPublishDate()) { - targetObject.setLatestTopicPublishDate(format.format(groupDTO.getLatestTopicPublishDate())); - } - targetObject.setGroupStatisticalInfo(statisticalObjct); - return targetObject; - } - - /** - * @Description 查询待审核的小组 (不从缓存中取,这时还没有成功建组,缓存中没有组数据) - * @Param ApplyingGroupsFormDTO - * @return Result> - * @Author wangc - * @Date 2020.04.18 10:18 - **/ - @Override - public Result> getApplyingGroups(ApplyingGroupsFormDTO params){ - if(null == params.getPageNo()){ - throw new RenException(ModuleConstant.PAGE_INDEX_NOT_NULL); - } - params.setPageNo((params.getPageNo() - NumConstant.ONE) * params.getPageSize()); - return new Result>().ok(baseDao.getApplyingGroupsByCustIdAndGridId(params)); - } - - /** - * @Description 建组申请详情 已审核(更新已读未读标识)/未审核 - * @Param AgreeApplyGroupFormDTO - * @return Result - * @Author wangc - * @Date 2020.04.19 23:32 - **/ - @Override - public Result getApplyingGroupDetail(CommonGroupIdFromDTO groupId){ - //1.查询小组信息 - //注意,这里查询出的组申请详情中,无论是已审核还是未审核,都是将该组信息关联到初始化组时状态为[待审核、审核通过、拒绝]其中之一的组操作记录上,并读取审核的已读未读信息,上述三种状态在一个组的所有操作记录当中只可能存在一种,与之后的屏蔽、取消屏蔽、关闭无关,如果查出多条说明建组的逻辑有问题 - ApplyingGroupDetailResultDTO detail = baseDao.getApplyingGroupDetailByGroupId(groupId.getGroupId()); - //2.查询用户信息(TODO 先走数据库,之后改成走缓存) - List userId = new ArrayList<>(); - userId.add(detail.getLeaderId()); - Result> userInfoResult = - epmetUserFeignClient.getUserResiInfoList(new UserResiInfoListFormDTO(userId)); - if(userInfoResult.success() && null != userInfoResult.getData() && userInfoResult.getData().size() >= 1){ - //姓氏+先生/女士 注:在数据库中拼接成[街道+显示名称]默认格式,故要进行截取 - //detail.setGroupLeaderName(userInfoResult.getData().get(0).getShowName().split("-")[NumConstant.ONE]); - //姓氏+名称 - detail.setGroupLeaderName(userInfoResult.getData().get(0).getSurname() + userInfoResult.getData().get(0).getName()); - detail.setStreet(userInfoResult.getData().get(0).getStreet()); - StringBuffer buffer = new StringBuffer(detail.getStreet()); - buffer.append(StringUtils.isBlank(buffer) ? "" : "-"); - detail.setGroupLeaderName(buffer.append(detail.getGroupLeaderName()).toString()); - }else{ - logger.warn(ModuleConstant.USER_INFO_LIST_NOT_FOUND); - } - //3.未读改成已读 - if(StringUtils.equals(detail.getReadFlag(),ModuleConstant.UNREAD)){ - ResiGroupOperationEntity operationEntity = new ResiGroupOperationEntity(); - operationEntity.setId(detail.getOperationId()); - operationEntity.setReadFlag(ModuleConstant.READ); - operationEntity.setUpdatedBy(groupId.getUserId()); - resiGroupOperationDao.updateById(operationEntity); - } - //4.将组长用户Id隐藏 - detail.setLeaderId(null); - detail.setOperationId(null); - - return new Result().ok(ConvertUtils.sourceToTarget(detail, ApplyingGroupDetailResult2DTO.class)); - } - - @Override - public List queryGroupProcessingCount(List gridIdList) { - List list=new ArrayList<>(); - for(String gridId:gridIdList){ - GroupProcessingCountResultDTO resultDTO=new GroupProcessingCountResultDTO(); - resultDTO.setGridId(gridId); - Integer auditingCreateGroupCount=resiGroupRedis.getWorkGrassrootsGroupRedDotValue(gridId); - Integer auditingGroupEditRecordCount=groupEditSubmitRecordDao.selectCountAuditingRec(gridId); - Integer auditingCount=auditingCreateGroupCount+auditingGroupEditRecordCount; - if (null == auditingCount) { - resultDTO.setCount(0); - } else { - resultDTO.setCount(auditingCount); - } - list.add(resultDTO); - } - return list; - } - - - /** - * @Description 查询一个网格下面所有组Id - * @param gridId - * @return List - * @author wangc - * @date 2020.05.14 10:54 - **/ - @Override - public List getGroupIdByGridId(String gridId) { - if(StringUtils.isBlank(gridId)) return null; - return baseDao.getGroupIdByGridId(gridId); - } - - /** - * @Description 返回 Map> - * @param gridIdList - * @return Map> - * @author wangc - * @date 2020.05.22 09:27 - **/ - @Override - public Map> getGroupIdsByGridIdList(List gridIdList) { - if(null == gridIdList || gridIdList.size() < NumConstant.ONE) - return null; - Map> result = new HashMap<>(); - List groups = new ArrayList<>(); - Map> groupMap - = groups.stream().collect(Collectors.groupingBy(ResiGroupDTO::getGridId)); - groupMap.forEach((k,v)->{ - Set groupIds = - v.stream().map(ResiGroupDTO::getId).collect(Collectors.toSet()); - result.put(k,groupIds); - }); - - return result; - } - - /** - * @Description 校验用户是否加入小组 - * @param gridId - * @author zxc - */ - @Override - public CheckJoinTeamResultDTO checkjointeam(GridIdFormDTO gridId) { - CheckJoinTeamResultDTO checkJoinTeamResultDTO = new CheckJoinTeamResultDTO(); - Integer joinTeamCounts = baseDao.checkjointeam(gridId); - if (joinTeamCounts==NumConstant.ZERO){//未加入任何小组(当前网格下) - checkJoinTeamResultDTO.setVoteAuthorization(false); - }else { - checkJoinTeamResultDTO.setVoteAuthorization(true); - } - return checkJoinTeamResultDTO; - } - - /** - * @Description 获取应表决数 - * @param formDTO - * @author zxc - */ - @Override - public ShouldVoteCountResultDTO shouldVoteCount(ShouldVoteCountFormDTO formDTO) { - //网格下所有加过组的人数 - Integer shouldVoteCount = baseDao.shouldVoteCount(formDTO).getShouldVoteCount(); - Integer outGroupCount = baseDao.getOutGroupCount(formDTO); - ShouldVoteCountResultDTO result = new ShouldVoteCountResultDTO(); - result.setShouldVoteCount(shouldVoteCount-outGroupCount); - return result; - } - - @Override - public List recommendedList(RecommendedListFormDTO formDTO) { - - //显示当前网格内所有当前用户还未加入的组,以组的人数由高到低排序;如果人数相同,以话题数由多到少排序 - List recommendGroupList = baseDao.selectListRecommendList(formDTO); - recommendGroupList.forEach(dto -> { - Result groupLeaderUserInfo = this.getGroupLeaderUserInfo(dto.getGroupId()); - if (groupLeaderUserInfo.success() && null != groupLeaderUserInfo.getData()) { - dto.setLeaderName(groupLeaderUserInfo.getData().getShowName()); - } else { - logger.warn("组长注册信息查询失败" + groupLeaderUserInfo.getMsg()); - } - }); - return recommendGroupList; - } - - /** - * @Description 给加入此网格的网格长发送消息 - * @param msg - * @param gridId - * @param userId - * @author wangc - * @date 2020.04.29 22:49 - **/ - private void sendMsgResi2Gov(String title,String msg,String gridId,String userId,String customerId){ - //1.查询加入当前网格下的人员 customer_staff_grid - CommonGridIdFormDTO commonGridIdFormDTO = new CommonGridIdFormDTO(); - commonGridIdFormDTO.setGridId(gridId); - commonGridIdFormDTO.setUserId(userId); - Result> gridstaffs = - govOrgFeignClient.getGridStaffs(commonGridIdFormDTO); - //2.查询这些人是否有管理员身份且未被禁用 staff_role customer_staff - if(gridstaffs.success() && null != gridstaffs.getData() && gridstaffs.getData().size() > 0){ - RolesUsersListFormDTO rolesUsersListFormDTO = new RolesUsersListFormDTO(); - rolesUsersListFormDTO.setCustomerId(customerId); - List roleKeys = new ArrayList(); - roleKeys.add(ModuleConstant.STAFF_ROLE_GRID_MANAGER); - rolesUsersListFormDTO.setRoleKeys(roleKeys); - rolesUsersListFormDTO.setUserIds(gridstaffs.getData()); - Result> staffRoles = - epmetUserFeignClient.specificRolesStaffs(rolesUsersListFormDTO); - //3.发送消息 - if(staffRoles.success() && null != staffRoles.getData() && staffRoles.getData().size() > 0){ - List msgList = new ArrayList<>(); - List subscribeList = new ArrayList<>(); - for(String to : staffRoles.getData()){ - //站内信 - UserMessageFormDTO msgObj = new UserMessageFormDTO(); - msgObj.setApp(ModuleConstant.APP_GOV); - msgObj.setCustomerId(customerId); - msgObj.setGridId(gridId); - msgObj.setMessageContent(msg); - msgObj.setReadFlag(ReadFlagConstant.UN_READ); - msgObj.setTitle(title); - msgObj.setUserId(to); - msgList.add(msgObj); - //微信订阅 - WxSubscribeMessageFormDTO subscribeDTO = new WxSubscribeMessageFormDTO(); - subscribeDTO.setClientType(ModuleConstant.APP_GOV); - subscribeDTO.setGridId(gridId); - subscribeDTO.setCustomerId(customerId); - subscribeDTO.setUserId(to); - subscribeDTO.setBehaviorType(UserMessageConstant.WX_CREATE_GROUP_BEHAVIOR); - subscribeDTO.setMessageContent(msg); - subscribeDTO.setMessageTime(new Date()); - subscribeList.add(subscribeDTO); - } - if (subscribeList.size() > NumConstant.ZERO){ - epmetMessageOpenFeignClient.sendWxSubscribeMessage(subscribeList); - } - Result result = epmetMessageFeignClient.saveUserMessageList(msgList); - if(result.success()){ - return; - } - } - } - logger.warn(String.format(ModuleConstant.FAILED_SEND_MESSAGE,msg)); - - } - - @Override - public GroupDetailResultDTO getGroupDetail(String groupId) { - GroupDetailResultDTO groupDetail = new GroupDetailResultDTO(); - - // 1.拼装组基本信息 - GroupEditSubmitRecordEntity ler = groupEditSubmitRecordDao.getLatestEditSubmitRecord(groupId); - - if (ler != null) { - groupDetail.setAuditStatus(ler.getAuditStatus()); - groupDetail.setRemark(ler.getRemark()); - } - - if (ler != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(ler.getAuditStatus())) { - // 审核中,显示待审核内容 - groupDetail.setGroupHeadPhoto(ler.getGroupHeadPhoto()); - groupDetail.setGroupName(ler.getGroupName()); - groupDetail.setGroupIntroduction(ler.getGroupIntroduction()); - } else { - // 不在审核中,直接显示组信息 - ResiGroupEntity resiGroupEntity = resiGroupDao.selectById(groupId); - if (resiGroupEntity == null) { - return null; - } - - groupDetail.setGroupHeadPhoto(resiGroupEntity.getGroupHeadPhoto()); - groupDetail.setGroupName(resiGroupEntity.getGroupName()); - groupDetail.setGroupIntroduction(resiGroupEntity.getGroupIntroduction()); - } - - // 2.编辑次数及其限制 - groupDetail.setEditNumLimit(GroupLimitConstant.EDIT_NUM_LIMIT_MONTH); - Date now = new Date(); - int usedEditNum = groupEditSubmitRecordDao.countEditNum(groupId, DateUtils.getMonthStart(now), DateUtils.getMonthEnd(now)); - groupDetail.setAvaliableEditNum(GroupLimitConstant.EDIT_NUM_LIMIT_MONTH - usedEditNum); - - // 审核状态 - // 是否可编辑 - boolean editable = true; - - if (GroupLimitConstant.EDIT_NUM_LIMIT_MONTH <= usedEditNum) { - // 达到最大编辑次数了 - editable = false; - } - - if (ler != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(ler.getAuditStatus())) { - // 提交了,还没审核完 - editable = false; - } - - groupDetail.setEditable(editable); - return groupDetail; - } - - @Override - public void submitGroupEdit(String groupId, String groupName, String groupHeadPhoto, String groupIntroduction, String editUserId) { - // 1.判断小组是否存在,判断是否已经在"待审核"状态 - ResiGroupEntity group = resiGroupDao.selectById(groupId); - if (group == null) { - throw new RenException(EpmetErrorCode.GROUP_NOT_EXISTS.getCode(), EpmetErrorCode.GROUP_NOT_EXISTS.getMsg()); - } - - // 判断是否是组长 - ResiGroupMemberDTO groupLeader = resiGroupMemberDao.selectLeaderMember(groupId); - if (groupLeader == null || !groupLeader.getCustomerUserId().equals(editUserId)) { - String msg = "只有该组的组长才可以编辑组信息"; - throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), msg, msg, RenException.MessageMode.CODE_INTERNAL_EXTERNAL); - } - - // 2.判断是否可以提交编辑 - GroupEditSubmitRecordEntity lre = groupEditSubmitRecordDao.getLatestEditSubmitRecord(groupId); - if (lre != null && GroupAuditStatusConstant.UNDER_AUDITING.equals(lre.getAuditStatus())) { - // 在待审核状态,不允许再次提交编辑 - throw new RenException(EpmetErrorCode.GROUP_IN_AUDITING.getCode(), EpmetErrorCode.GROUP_IN_AUDITING.getMsg()); - } - - if (resiGroupDao.countExistsGroupNameBeforeEdit(groupId, group.getGridId(), groupName) > 0) { - // 已存在组名,拒绝提交 - throw new RenException(EpmetErrorCode.GROUP_ALREADY_EXISTED.getCode(), EpmetErrorCode.GROUP_ALREADY_EXISTED.getMsg()); - } - - Date now = new Date(); - int usedEditNum = groupEditSubmitRecordDao.countEditNum(groupId, DateUtils.getMonthStart(now), DateUtils.getMonthEnd(now)); - if (GroupLimitConstant.EDIT_NUM_LIMIT_MONTH <= usedEditNum) { - // 达到最大编辑次数了 - throw new RenException(EpmetErrorCode.GROUP_EDIT_NUM_LIMITED.getCode(), EpmetErrorCode.GROUP_EDIT_NUM_LIMITED.getMsg()); - } - - // 3.内容检查 - scanGroupEditContent(groupName, groupIntroduction, groupHeadPhoto); - - String app = loginUserUtil.getLoginUserApp(); - String userId = loginUserUtil.getLoginUserId(); - String messageText = generateGroupEditMessageText(app, userId, group.getCustomerId(), group.getGridId(), groupName); - - // 4.创建编辑提交记录 - GroupEditSubmitRecordEntity editRecord = new GroupEditSubmitRecordEntity(); - editRecord.setAuditStatus(GroupAuditStatusConstant.UNDER_AUDITING); - editRecord.setCustomerId(group.getCustomerId()); - editRecord.setGridId(group.getGridId()); - editRecord.setGroupHeadPhoto(groupHeadPhoto); - editRecord.setGroupIntroduction(groupIntroduction); - editRecord.setGroupId(groupId); - editRecord.setGroupName(groupName); - editRecord.setReadFlag(ReadFlagConstant.UN_READ); - editRecord.setMessageText(messageText); - - if (groupEditSubmitRecordDao.insert(editRecord) == 0) { - throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), EpmetErrorCode.GROUP_EDIT_ERROR.getMsg()); - } - - resiGroupRedis.addWorkGrassrootsGroupRedDotValue(group.getGridId()); - - } - - /** - * 生成组信息编辑简介文本:xxx申请编辑组信息,请审核 - * @param app - * @param userId - * @param customerId - * @param gridId - * @param groupName - * @return - */ - private String generateGroupEditMessageText(String app, String userId, String customerId, String gridId, String groupName) { - List resiRoles = getResiRoles(app, customerId, userId, gridId); - boolean isPartymember = false; - boolean isWarmhearted = false; - for (UserRoleResultDTO role : resiRoles) { - if (EpmetRoleKeyConstant.WARMHEARTED.equals(role.getRoleKey())) { - isWarmhearted = true; - } - if (EpmetRoleKeyConstant.PARTYMEMBER.equals(role.getRoleKey())) { - isPartymember = true; - } - } - if (!isWarmhearted && isPartymember) { - throw new RenException(EpmetErrorCode.CANNOT_CREATE_GROUP.getCode(), "只有党员和热心居民才能创建和编辑小组"); - } - String roleName = ""; - if (isPartymember) { - roleName = ModuleConstant.PARTYMEMBER; - } else if (isWarmhearted) { - roleName = ModuleConstant.WAREMHEARTED_RESI; - } - - //3.获取居民注册信息 - UserResiInfoFormDTO resiParam = new UserResiInfoFormDTO(); - resiParam.setCustomerId(customerId); - resiParam.setUserId(userId); - Result resiResult = - epmetUserFeignClient.getUserResiInfoDTO(resiParam); - String userName = ""; - if (resiResult.success() && null != resiResult.getData()) { - userName = (StringUtils.isBlank(resiResult.getData().getSurname()) ? "" : resiResult.getData().getSurname()) - + (StringUtils.isBlank(resiResult.getData().getName()) ? "" : resiResult.getData().getName()); - } - userName = StringUtils.isBlank(userName) ? ModuleConstant.UNKNOWN : userName; - return String.format(UserMessageConstant.EDIT_OF_GROUP_MESSAGE_TEMPLATE, roleName, userName, groupName); - } - - /** - * 查询居民的角色列表 - * @param app - * @param customerId - * @param userId - * @param gridId - * @return - */ - private List getResiRoles(String app, String customerId, String userId, String gridId) { - UserRoleFormDTO userRoleFormDTO = new UserRoleFormDTO(); - userRoleFormDTO.setApp(app); - userRoleFormDTO.setCustomerId(customerId); - userRoleFormDTO.setUserId(userId); - userRoleFormDTO.setGridId(gridId); - Result> rolesResult = epmetUserFeignClient.getUserRoleInfo(userRoleFormDTO); - - if (! rolesResult.success()) { - logger.error("修改组信息:查询居民角色失败,详情:{}", rolesResult.getInternalMsg()); - throw new RenException(EpmetErrorCode.GROUP_EDIT_ERROR.getCode(), "查询居民角色失败"); - } else { - List roles = rolesResult.getData(); - if (CollectionUtils.isEmpty(roles)) { - roles = new ArrayList<>(); - } - return roles; - } - } - - /** - * 内容检查 - * @param groupName - * @param groupIntroduction - * @param groupHeadPhoto - */ - private void scanGroupEditContent(String groupName, String groupIntroduction, String groupHeadPhoto) { - // 文本内容审核 - TextScanParamDTO textScanParamDTO = new TextScanParamDTO(); - TextTaskDTO taskDTO = new TextTaskDTO(); - String content = groupName.concat("-").concat(groupIntroduction); - taskDTO.setContent(content); - taskDTO.setDataId(UUID.randomUUID().toString().replace("-", "")); - textScanParamDTO.getTasks().add(taskDTO); - Result textSyncScanResult = ScanContentUtils.textSyncScan(scanApiUrl.concat(textSyncScanMethod), textScanParamDTO); - if (!textSyncScanResult.success()) { - logger.error("调用内容审核服务审核文本发生错误:{}", textSyncScanResult.getInternalMsg()); - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); - } else { - if (!textSyncScanResult.getData().isAllPass()) { - throw new RenException(EpmetErrorCode.TEXT_SCAN_FAILED.getCode(), EpmetErrorCode.TEXT_SCAN_FAILED.getMsg()); - } - } - - // 图片内容审核 - ImgScanParamDTO imgScanParamDTO = new ImgScanParamDTO(); - ImgTaskDTO task = new ImgTaskDTO(); - task.setDataId(UUID.randomUUID().toString().replace("-", "")); - task.setUrl(groupHeadPhoto); - imgScanParamDTO.getTasks().add(task); - - Result imgScanResult = ScanContentUtils.imgSyncScan(scanApiUrl.concat(imgSyncScanMethod), imgScanParamDTO); - if (!imgScanResult.success()){ - logger.error("调用内容审核服务审核图片发生错误:{}", textSyncScanResult.getInternalMsg()); - throw new RenException(EpmetErrorCode.SERVER_ERROR.getCode()); - } else { - if (!textSyncScanResult.getData().isAllPass()) { - throw new RenException(EpmetErrorCode.IMG_SCAN_FAILED.getCode(), EpmetErrorCode.IMG_SCAN_FAILED.getMsg()); - } - } - } - - /** - * @Description 工作端 查询组变更待审核列表 - * @param param - * @return - * @author wangc - * @date 2020.11.03 10:19 - */ - @Override - public List getEditAuditingList(CommonGridAndPageFormDTO param) { - return Optional.ofNullable(PageHelper.startPage(null == param.getPageNo() ? NumConstant.ONE : param.getPageNo() , null == param.getPageSize() ? NumConstant.TWELVE : param.getPageSize()) - .doSelectPage(() -> { - groupEditSubmitRecordDao.selectGroupEditApplyList(param.getGridId());}).getResult()).orElse(new LinkedList<>()) - .stream().map(o -> { return (ApplyingGroupResultDTO)o; }).collect(Collectors.toList()); - } - - /** - * @Description 查询小组修改信息的详情内容 不加事务! - * @param param - * @return com.epmet.resi.group.dto.group.result.GroupEditionDetailResultDTO - * @author wangc - * @date 2020.11.03 14:10 - */ - @Override - public GroupEditionDetailResultDTO getEditAuditingDetail(GovGroupSummarizeFromDTO param) { - GroupEditSubmitRecordEntity edit = groupEditSubmitRecordDao.selectEditDetail(param.getGroupId(),null); - if(null == edit) { - logger.error("com.epmet.modules.group.service.impl.ResiGroupServiceImpl.getEditAuditingDetail,未找到小组变更信息记录,传参:{}",JSON.toJSONString(param)); - return null;} - //取消未读状态 - GroupEditSubmitRecordEntity _update = new GroupEditSubmitRecordEntity(); - _update.setId(edit.getId());_update.setReadFlag(ModuleConstant.READ); - groupEditSubmitRecordDao.updateById(_update); - GroupEditionDetailResultDTO result = ConvertUtils.sourceToTarget(edit, GroupEditionDetailResultDTO.class); - result.setGroupLeaderName(resiGroupRedis.getFullName(edit.getCreatedBy())); - return result; - } - - /** - * @Description 工作人员提交审核 - * @param param - * @return void - * @author wangc - * @date 2020.11.03 16:02 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void auditEdit(GroupEditionAuditFormDTO param) { - if(StringUtils.equals(param.getAuditResult(),ModuleConstant.AUDITING_OPERATION_REJECT) && StringUtils.isBlank(param.getRemark())){ - throw new RenException("拒绝理由不能为空"); - } - GroupEditSubmitRecordEntity edit = groupEditSubmitRecordDao.selectEditDetail(param.getGroupId(),null); - if(null == edit){ - logger.error("com.epmet.modules.group.service.impl.ResiGroupServiceImpl.auditEdit,找不到待审核的组更新记录,传参:{}",JSON.toJSONString(param)); - throw new RenException("找不到待审核的组更新记录"); - } - - int affectedRows = groupEditSubmitRecordDao.updateAuditResult(param.getGroupId(),param.getStaffId(),param.getAuditResult(),param.getRemark()); - if(affectedRows <= NumConstant.ZERO){ - logger.error("com.epmet.modules.group.service.impl.ResiGroupServiceImpl.auditEdit,更新组编辑记录时受影响行数小于1,传参:{}",JSON.toJSONString(param)); - throw new RenException("更新组编辑记录时受影响行数小于1"); - } - if(!StringUtils.equals(param.getAuditResult(),ModuleConstant.AUDITING_OPERATION_REJECT)){ - //同意 - ResiGroupEntity _update = ConvertUtils.sourceToTarget(edit,ResiGroupEntity.class); - _update.setId(param.getGroupId()); - baseDao.updateById(_update); - } - resiGroupRedis.subtractWorkGrassrootsPartyAuthRedDotValue(edit.getGridId()); - resiGroupRedis.delGroup(param.getGroupId()); - } - -}