diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java index 131e4a9203..28c192006f 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/constant/BadgeConstant.java @@ -36,7 +36,7 @@ public interface BadgeConstant { String GET_BADGE_NAME_FAILURE = "获取徽章名称失败......"; - String MESSAGE_CONTENT = "您好,您的%s因认证失败未成功点亮,请查看"; + String MESSAGE_CONTENT = "%s申请认证%s,请审核"; String READ_FLAG = "unread"; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java index 19fce3bb3c..b865e948a3 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserBadgeListResultDTO.java @@ -39,6 +39,8 @@ public class UserBadgeListResultDTO implements Serializable { private String fixationBadgeType; @JsonIgnore private Boolean status; + @JsonIgnore + private Integer sort; public UserBadgeListResultDTO() { this.badgeId = ""; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserOperListResultDTO.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserOperListResultDTO.java index 89f3f98aba..49bbf6be77 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserOperListResultDTO.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserOperListResultDTO.java @@ -55,6 +55,8 @@ public class UserOperListResultDTO implements Serializable { private String isOpened; @JsonIgnore private String auditStatus; + @JsonIgnore + private Integer sort; public UserOperListResultDTO() { this.badgeId = ""; diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java index b385738d82..0254a8b3f2 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java @@ -449,4 +449,7 @@ public interface EpmetUserOpenFeignClient { **/ @PostMapping(value = "/epmetuser/more/badge/initbadge") Result initBadge(@RequestParam String userId); + + @PostMapping(value = "epmetuser/staffrole/specificrolesstaffs", consumes = MediaType.APPLICATION_JSON_VALUE) + Result> specificRolesStaffs(RolesUsersListFormDTO rolesUsersListFormDTO); } diff --git a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java index 6ac75b91e1..b3d7f31377 100644 --- a/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java +++ b/epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java @@ -316,4 +316,9 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien public Result initBadge(String partyUserId) { return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "initBadge", partyUserId); } + + @Override + public Result> specificRolesStaffs(RolesUsersListFormDTO rolesUsersListFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "specificRolesStaffs", rolesUsersListFormDTO); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/BadgeDao.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/BadgeDao.java index 5d727e6ad9..fc77ac2740 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/BadgeDao.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/dao/BadgeDao.java @@ -178,6 +178,15 @@ public interface BadgeDao extends BaseDao { */ String getPartyBadgeId(@Param("customerId") String customerId); + /** + * @Description 查询徽章名称 + * @Param customerId + * @Param badgeId + * @author zxc + * @date 2020/11/19 上午9:49 + */ + String selectBadgeName(@Param("customerId") String customerId,@Param("badgeId") String badgeId); + /** * desc: 获取下一次排序号 * diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java index 1f518e6910..d64f5035ff 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/GovOrgFeignClient.java @@ -3,10 +3,14 @@ package com.epmet.feign; import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.form.CommonGridIdFormDTO; import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.feign.fallback.GovOrgFeignClientFallBack; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; /** * @Description 居民端陌生人导览 调用gov-org服务 @@ -25,4 +29,14 @@ public interface GovOrgFeignClient { @PostMapping("/gov/org/customergrid/getcustomergridbygridid") Result getCustomerGridByGridId(CustomerGridFormDTO formDTO); + /** + * @Description 查询一个网格下的所有工作人员[copy wangc] + * @param gridIdFormDTO + * @return Result> + * @author zxc + * @date 2020.04.29 22:59 + **/ + @PostMapping("/gov/org/customerstaffgrid/getgridstaffs") + Result> getGridStaffs(@RequestBody CommonGridIdFormDTO gridIdFormDTO); + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java index e3402a196f..20cc39ddcd 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/feign/fallback/GovOrgFeignClientFallBack.java @@ -4,10 +4,13 @@ import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.utils.ModuleUtils; import com.epmet.commons.tools.utils.Result; import com.epmet.dto.CustomerGridDTO; +import com.epmet.dto.form.CommonGridIdFormDTO; import com.epmet.dto.form.CustomerGridFormDTO; import com.epmet.feign.GovOrgFeignClient; import org.springframework.stereotype.Component; +import java.util.List; + /** * @Description 居民端-陌生人导览 调用gov-org服务 * @Author sun @@ -20,4 +23,9 @@ public class GovOrgFeignClientFallBack implements GovOrgFeignClient { public Result getCustomerGridByGridId(CustomerGridFormDTO formDTO) { return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getcustomergridbygridid", formDTO); } + + @Override + public Result> getGridStaffs(CommonGridIdFormDTO gridIdFormDTO) { + return ModuleUtils.feignConError(ServiceConstant.GOV_ORG_SERVER, "getGridStaffs", gridIdFormDTO); + } } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java index e85e794e84..ed07ea21a6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserBadgeServiceImpl.java @@ -10,6 +10,7 @@ import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.validator.PhoneValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.constant.BadgeConstant; +import com.epmet.constant.ReadFlagConstant; import com.epmet.constant.SmsTemplateConstant; import com.epmet.dao.*; import com.epmet.dto.ResiUserBadgeDTO; @@ -17,9 +18,12 @@ import com.epmet.dto.UserBadgeCertificateRecordDTO; import com.epmet.dto.form.*; import com.epmet.dto.result.*; import com.epmet.feign.EpmetMessageOpenFeignClient; +import com.epmet.feign.EpmetUserOpenFeignClient; +import com.epmet.feign.GovOrgFeignClient; import com.epmet.redis.UserBadgeRedis; import com.epmet.service.UserBadgeService; import com.epmet.service.UserBaseInfoService; +import com.epmet.util.ModuleConstant; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -56,6 +60,10 @@ public class UserBadgeServiceImpl implements UserBadgeService { @Autowired private BadgeDao badgeDao; @Autowired + private GovOrgFeignClient govOrgFeignClient; + @Autowired + private EpmetUserOpenFeignClient epmetUserOpenFeignClient; + @Autowired private BadgeCertificationConfigDao badgeCertificationConfigDao; /** @@ -74,7 +82,7 @@ public class UserBadgeServiceImpl implements UserBadgeService { List redisUserBadgeList = JSON.parseArray(userBadge.toString(), UserBadgeListResultDTO.class); List userBadgeListResultDTOS = userBadgeDao.selectBadgeList(userBadgeListFormDTO); if (CollectionUtils.isEmpty(userBadgeListResultDTOS)){ - return redisUserBadgeList; + return redisUserBadgeList.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList()); } redisUserBadgeList.forEach(u -> { userBadgeListResultDTOS.forEach(badge -> { @@ -84,11 +92,13 @@ public class UserBadgeServiceImpl implements UserBadgeService { } }); }); + List noOpenBadge = new ArrayList<>(); redisUserBadgeList.forEach(u -> { if (!u.getStatus()){ - userBadgeListResultDTOS.add(u); + noOpenBadge.add(u); } }); + userBadgeListResultDTOS.addAll(noOpenBadge.stream().sorted(Comparator.comparing(UserBadgeListResultDTO::getSort)).collect(Collectors.toList())); return userBadgeListResultDTOS; } @@ -121,7 +131,14 @@ public class UserBadgeServiceImpl implements UserBadgeService { } }); }); - return userOperListResultDTOS.stream().sorted(Comparator.comparing(UserOperListResultDTO::getBadgeName)).collect(Collectors.toList()); + Map> collect = userOperListResultDTOS.stream().collect(Collectors.groupingBy(UserOperListResultDTO::getIsLighted)); + List result = collect.get(BadgeConstant.YES); + List noLight = collect.get(BadgeConstant.NO); + if (CollectionUtils.isEmpty(noLight)){ + return result; + } + result.addAll(noLight.stream().sorted(Comparator.comparing(UserOperListResultDTO::getSort)).collect(Collectors.toList())); + return result; } /** @@ -241,8 +258,9 @@ public class UserBadgeServiceImpl implements UserBadgeService { log.info(JSON.toJSONString(form)); userBadgeDao.insertUserBadgeCertificateRecord(form); - //TODO 站内信发送 您好,您的xxx徽章因认证失败未成功点亮,请查看 - this.sendMessageByUser(form); + //TODO 站内信发送 + String badgeName = badgeDao.selectBadgeName(form.getCustomerId(), form.getBadgeId()); + sendMessage(BadgeConstant.AUTH_TITLE,String.format(BadgeConstant.READ_FLAG,userBaseInfoResultDTOS.get(NumConstant.ZERO).getDistrict().concat(userBaseInfoResultDTOS.get(NumConstant.ZERO).getRealName()),badgeName),form.getGridId(),form.getUserId(),form.getCustomerId()); return new Result(); } @@ -407,4 +425,69 @@ public class UserBadgeServiceImpl implements UserBadgeService { return badges.stream().collect(Collectors.groupingBy(UserBadgeInfoResultDTO::getUserId)); } + /** + * @Description 发送站内信 + * @Param title 标题 + * @Param msg 信息 + * @Param gridId 网格ID + * @Param userId 用户ID + * @Param customerId 客户ID + * @author zxc + * @date 2020/11/19 上午9:16 + */ + public void sendMessage(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 = + epmetUserOpenFeignClient.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(ModuleConstant.BADGE_AUDIT_MESSAGE); + subscribeDTO.setMessageContent(msg); + subscribeDTO.setMessageTime(new Date()); + subscribeList.add(subscribeDTO); + } + if (subscribeList.size() > NumConstant.ZERO){ + epmetMessageOpenFeignClient.sendWxSubscribeMessage(subscribeList); + } + Result result = epmetMessageOpenFeignClient.saveUserMessageList(msgList); + if(result.success()){ + return; + } + } + } + + } + } diff --git a/epmet-user/epmet-user-server/src/main/java/com/epmet/util/ModuleConstant.java b/epmet-user/epmet-user-server/src/main/java/com/epmet/util/ModuleConstant.java index 68b95319ac..706716aff6 100644 --- a/epmet-user/epmet-user-server/src/main/java/com/epmet/util/ModuleConstant.java +++ b/epmet-user/epmet-user-server/src/main/java/com/epmet/util/ModuleConstant.java @@ -34,4 +34,16 @@ public interface ModuleConstant { String GENDER_UNKNOWN = "未知"; + /** + * 工作人员角色key:网格长 + * */ + String STAFF_ROLE_GRID_MANAGER = "grid_manager"; + + /** + * APP 政府端 + * */ + String APP_GOV = "gov"; + + String BADGE_AUDIT_MESSAGE = "徽章审核消息"; + } diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/BadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/BadgeDao.xml index 3d297a2441..660b955904 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/BadgeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/BadgeDao.xml @@ -294,4 +294,15 @@ DEL_FLAG = '0' AND (CUSTOMER_ID = #{customerId,jdbcType=VARCHAR} OR CUSTOMER_ID = 'default') + + + \ No newline at end of file diff --git a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml index 3709525bb5..78a53b87e0 100644 --- a/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml +++ b/epmet-user/epmet-user-server/src/main/resources/mapper/UserBadgeDao.xml @@ -46,7 +46,8 @@ CUSTOMER_ID, BADGE_NAME, BADGE_ICON, - FIXATION_BADGE_TYPE AS badgeType + FIXATION_BADGE_TYPE AS badgeType, + sort FROM ( SELECT * FROM badge WHERE CUSTOMER_ID = #{customerId} AND DEL_FLAG = '0' @@ -70,6 +71,7 @@ WHERE DEL_FLAG = 0 AND CERTIFICATION_AUTID_STATUS = 'approved' AND USER_ID = #{userId} + order by created_time desc