Browse Source

Merge remote-tracking branch 'origin/dev_wx_msg' into dev_wx_msg

dev_shibei_match
wxz 5 years ago
parent
commit
3c0f0ac22f
  1. 1
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
  2. 74
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  3. 45
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
  4. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

1
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java

@ -10,6 +10,7 @@ public interface UserMessageConstant {
* 消息标题
*/
String ISSUE_TITLE = "您有一条议题消息";
String WXMP_ISSUE_TITLE = "议题消息";
/**
* 项目跟踪-消息标题
*/

74
epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java

@ -92,6 +92,8 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
private IssueVoteStatisticalDao issueVoteStatisticalDao;
@Autowired
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
@ -434,6 +436,10 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
if (!saveUserMessageList(topicDTO, messageContent, entity).success()) {
throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION);
}
//4.4:2020.10.26 添加推送微信订阅消息功能 sun
if (!saveWxmpMessageList(topicDTO, messageContent, entity).success()) {
logger.error("议题关闭,推送微信订阅消息失败!");
}
//5:缓存中网格下表决中的议题总数减1
govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId());
@ -468,6 +474,29 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
}
return messageFeignClient.saveUserMessageList(msgList);
}
/**
* @Description 关闭议题时给话题创建人和议题发起人推送微信订阅消息
* @author sun
*/
private Result saveWxmpMessageList(ResiTopicDTO topicDTO, String messageContent, IssueEntity entity) {
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
//2:分别给话题创建人、议题发起人发送消息
WxSubscribeMessageFormDTO msgDTO = new WxSubscribeMessageFormDTO();
msgDTO.setCustomerId(entity.getCustomerId());
msgDTO.setClientType(AppClientConstant.APP_RESI);
msgDTO.setUserId(topicDTO.getCreatedBy());
msgDTO.setBehaviorType(UserMessageConstant.WXMP_ISSUE_TITLE);
msgDTO.setMessageContent(messageContent);
msgDTO.setMessageTime(new Date());
msgList.add(msgDTO);
//话题人和议题人是同一个人时则只发送一条居民消息
if (!topicDTO.getCreatedBy().equals(entity.getCreatedBy())) {
WxSubscribeMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO,WxSubscribeMessageFormDTO.class);
msgIssue.setUserId(entity.getCreatedBy());
msgList.add(msgIssue);
}
return epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
}
/**
* @param formDTO
@ -583,6 +612,10 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
if (!shiftProjectMessage(issueProjectResultDTO, formDTO, entity).success()) {
throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION);
}
//5-1:2020.10.26 添加推送微信订阅消息功能 sun
if (!wxmpShiftProjectMessage(issueProjectResultDTO, formDTO, entity).success()) {
logger.error("议题转项目,推送微信订阅消息失败!");
}
//6:缓存中网格下表决中的议题总数减1
govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId());
@ -637,6 +670,47 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
});
return messageFeignClient.saveUserMessageList(msgList);
}
/**
* @Description 议题转项目时给话题创建人议题发起人勾选的工作人员分别推送微信订阅消息
* @author sun
*/
private Result wxmpShiftProjectMessage(IssueProjectResultDTO issueProjectResultDTO, ShiftProjectFormDTO formDTO, IssueEntity entity) {
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>();
//1:创建话题发起人、议题发表人消息对象
WxSubscribeMessageFormDTO msgDTO = new WxSubscribeMessageFormDTO();
msgDTO.setCustomerId(entity.getCustomerId());
msgDTO.setClientType(AppClientConstant.APP_RESI);
msgDTO.setUserId(formDTO.getTopicDTO().getCreatedBy());
msgDTO.setBehaviorType(UserMessageConstant.WXMP_ISSUE_TITLE);
String topicIssueMessage = String.format(UserMessageConstant.ISSUE_SHIFT_PROJECT_MSG, formDTO.getTopicDTO().getTopicContent(), issueProjectResultDTO.getOrgName());
msgDTO.setMessageContent(topicIssueMessage);
msgDTO.setMessageTime(new Date());
msgList.add(msgDTO);
//话题人和议题人是同一个人时则只发送一条居民消息
if (!formDTO.getTopicDTO().getCreatedBy().equals(entity.getCreatedBy())) {
WxSubscribeMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO, WxSubscribeMessageFormDTO.class);
msgIssue.setUserId(entity.getCreatedBy());
msgList.add(msgIssue);
}
//2:创建项目工作人员消息对象
String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, entity.getIssueTitle());
//所选人员如果即在部门下又在网格下则只发一条消息
Map<String,String> map = new HashMap<>();
formDTO.getStaffList().forEach(staff->{
if(!map.containsKey(staff.getStaffId())){
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(entity.getCustomerId());
msg.setClientType(AppClientConstant.APP_GOV);
msg.setUserId(staff.getStaffId());
msg.setBehaviorType(UserMessageConstant.WXMP_ISSUE_TITLE);
msg.setMessageContent(projectStaffMessage);
msg.setMessageTime(new Date());
msgList.add(msg);
map.put(staff.getStaffId(),staff.getStaffId());
}
});
return epmetMessageOpenFeignClient.sendWxSubscribeMessage(msgList);
}
/**
* @Description

45
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

@ -17,6 +17,7 @@
package com.epmet.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;
@ -48,6 +49,8 @@ import com.epmet.feign.*;
import com.epmet.redis.ProjectRedis;
import com.epmet.service.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@ -65,7 +68,7 @@ import java.util.stream.Collectors;
*/
@Service
public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntity> implements ProjectService {
private Logger logger = LogManager.getLogger(ProjectServiceImpl.class);
@Autowired
private ProjectRedis projectRedis;
@Autowired
@ -86,6 +89,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private ProjectRelatedPersonnelService projectRelatedPersonnelService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Value("${openapi.scan.server.url}")
private String scanApiUrl;
@Value("${openapi.scan.method.textSyncScan}")
@ -382,6 +387,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
//通知
List<UserMessageFormDTO> msgList = new ArrayList<>();
//2020.10.26 添加项目结案发送微信订阅消息操作 sun
List<WxSubscribeMessageFormDTO> wxmpMsgList = new ArrayList<>();
//通知项目相关人员
List<ProjectRelatedPersonnelDTO> personnelList = projectRelatedPersonnelService.getPersonnelListByProjectId(fromDTO.getProjectId());
personnelList.forEach(p -> {
@ -394,6 +401,14 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
messageFormDTO.setReadFlag(Constant.UNREAD);
msgList.add(messageFormDTO);
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
msg.setClientType(AppClientConstant.APP_GOV);
msg.setUserId(p.getUserId());
msg.setBehaviorType("项目消息");
msg.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
msg.setMessageTime(new Date());
wxmpMsgList.add(msg);
});
//通知项目关联的部门人员
List<String> staffList = projectStaffService.getStaffsByProjectId(fromDTO.getProjectId());
@ -408,8 +423,21 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
messageFormDTO.setReadFlag(Constant.UNREAD);
msgList.add(messageFormDTO);
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
msg.setClientType(AppClientConstant.APP_GOV);
msg.setUserId(s);
msg.setBehaviorType("项目消息");
msg.setMessageContent(String.format(UserMessageConstant.PROJECT_CLOSED_MSG, projectEntity.getTitle(), fromDTO.getPublicReply()));
msg.setMessageTime(new Date());
wxmpMsgList.add(msg);
});
messageFeignClient.saveUserMessageList(msgList);
//发送微信订阅消息 sun
Result result = epmetMessageOpenFeignClient.sendWxSubscribeMessage(wxmpMsgList);
if (!result.success()) {
logger.error("项目结案成功,发送微信订阅消息失败" + JSON.toJSONString(result));
}
}
@Override
@ -477,6 +505,21 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
messageFormDTO.setReadFlag(Constant.UNREAD);
msgList.add(messageFormDTO);
messageFeignClient.saveUserMessageList(msgList);
//2020.10.26 添加项目退回给勾选人推送微信订阅消息 sun
List<WxSubscribeMessageFormDTO> wxmpMsgList = new ArrayList<>();
WxSubscribeMessageFormDTO msg = new WxSubscribeMessageFormDTO();
msg.setCustomerId(projectEntity.getCustomerId());
msg.setClientType(AppClientConstant.APP_GOV);
msg.setUserId(projectStaffDTO.getStaffId());
msg.setBehaviorType("项目消息");
msg.setMessageContent(String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle()));
msg.setMessageTime(new Date());
wxmpMsgList.add(msg);
//发送微信订阅消息 sun
Result result = epmetMessageOpenFeignClient.sendWxSubscribeMessage(wxmpMsgList);
if (!result.success()) {
logger.error("项目退回成功,发送微信订阅消息失败" + JSON.toJSONString(result));
}
}
@Override

6
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -20,8 +20,8 @@ import java.util.List;
* @author yinzuomei@elink-cn.com
* @date 2020/6/4 13:09
*/
@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserOpenFeignClientFallback.class, url = "localhost:8087")
//@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserOpenFeignClientFallback.class)
//@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserOpenFeignClientFallback.class, url = "localhost:8087")
@FeignClient(name = ServiceConstant.EPMET_USER_SERVER, fallback = EpmetUserOpenFeignClientFallback.class)
public interface EpmetUserOpenFeignClient {
/**
@ -50,7 +50,7 @@ public interface EpmetUserOpenFeignClient {
* @date 2020/6/2 16:11
*/
@PostMapping("/epmetuser/staffrole/staffroles/{staffId}")
Result<List<CustomerStaffRoleResultDTO>> getStaffRoles(@PathVariable("staffId") String staffId);
Result<List<CustomerStaffRoleResultDTO>> getStaffRoles(@PathVariable String staffId);
/**
* @param staffId

Loading…
Cancel
Save