Browse Source

外部调用站内信整合

master
liushaowen 5 years ago
parent
commit
9547cad3fd
  1. 7
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java
  2. 5
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java
  3. 17
      epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/WxmpMessagePushFormDTO.java
  4. 11
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/constant/ExtConstant.java
  5. 23
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/WxmpMessageExtController.java
  6. 5
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/UserMessageEntity.java
  7. 5
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/excel/UserMessageExcel.java
  8. 37
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageExtServiceImpl.java
  9. 2
      epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java
  10. 1
      epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.12.5__alter_user_message_add_column.sql

7
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/UserMessageDTO.java

@ -59,6 +59,11 @@ public class UserMessageDTO implements Serializable {
*/ */
private String app; private String app;
/**
* 调用者
*/
private String referer;
/** /**
* 消息标题 * 消息标题
*/ */
@ -104,4 +109,4 @@ public class UserMessageDTO implements Serializable {
*/ */
private Date updatedTime; private Date updatedTime;
} }

5
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/UserMessageFormDTO.java

@ -56,4 +56,9 @@ public class UserMessageFormDTO implements Serializable {
*/ */
@NotBlank(message = "readFlag不能为空") @NotBlank(message = "readFlag不能为空")
private String readFlag; private String readFlag;
/**
* 调用者
*/
private String referer;
} }

17
epmet-module/epmet-message/epmet-message-client/src/main/java/com/epmet/dto/form/WxmpMessagePushFormDTO.java

@ -25,7 +25,7 @@ public class WxmpMessagePushFormDTO implements Serializable {
* 客户端类型 居民端:resi 工作端:work * 客户端类型 居民端:resi 工作端:work
*/ */
@NotBlank(message = "客户端类型不能为空") @NotBlank(message = "客户端类型不能为空")
private String clientType; private String app;
/** /**
* 接收者用户 userId * 接收者用户 userId
@ -37,7 +37,7 @@ public class WxmpMessagePushFormDTO implements Serializable {
* 行为类型(存title字段的中间值) 入组申请党员认证等 * 行为类型(存title字段的中间值) 入组申请党员认证等
*/ */
@NotBlank(message = "行为类型不能为空") @NotBlank(message = "行为类型不能为空")
private String behaviorType; private String title;
/** /**
* 消息内容 * 消息内容
@ -48,12 +48,25 @@ public class WxmpMessagePushFormDTO implements Serializable {
/** /**
* 网格id-居民端用 * 网格id-居民端用
*/ */
@NotBlank(message = "网格id不能为空")
private String gridId; private String gridId;
/**
* 已读标记
*/
@NotBlank(message = "已读标记不能为空")
private String readFlag;
/** /**
* 调用方 * 调用方
*/ */
@NotBlank(message = "调用方不能为空") @NotBlank(message = "调用方不能为空")
private String referer; private String referer;
/**
* 推送微信订阅Flag
*/
@NotBlank(message = "是否推送订阅Flag不能为空")
private String pushWxmpFlag;
} }

11
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/constant/ExtConstant.java

@ -0,0 +1,11 @@
package com.epmet.constant;
public interface ExtConstant {
String APP_RESI = "resi";
String APP_WORK = "work";
String APP_GOV = "gov";
String PUSH_WXMP = "1";
}

23
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/controller/WxmpMessageExtController.java

@ -1,9 +1,12 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils; import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.WxmpMessagePushFormDTO; import com.epmet.dto.form.WxmpMessagePushFormDTO;
import com.epmet.service.WxmpMessageExtService; import com.epmet.service.WxmpMessageExtService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -11,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutorService;
/** /**
* @description: 外部调用微信订阅controller * @description: 外部调用微信订阅controller
@ -20,14 +24,29 @@ import java.util.List;
@RestController @RestController
@RequestMapping("template") @RequestMapping("template")
public class WxmpMessageExtController { public class WxmpMessageExtController {
private Logger logger = LoggerFactory.getLogger(getClass());
@Autowired @Autowired
private WxmpMessageExtService wxmpMessageExtService; private WxmpMessageExtService wxmpMessageExtService;
@PostMapping("wxmpmsgpush") @Autowired
private ExecutorService executorService;
@PostMapping("msgpush")
public Result wxmpMsgPush(@RequestBody List<WxmpMessagePushFormDTO> dtos){ public Result wxmpMsgPush(@RequestBody List<WxmpMessagePushFormDTO> dtos){
for (WxmpMessagePushFormDTO dto : dtos) { for (WxmpMessagePushFormDTO dto : dtos) {
ValidatorUtils.validateEntity(dto); ValidatorUtils.validateEntity(dto);
} }
return wxmpMessageExtService.pushWxmpMessage(dtos); executorService.execute(() -> {
try {
long startTs = System.currentTimeMillis();
wxmpMessageExtService.pushWxmpMessage(dtos);
long endTs = System.currentTimeMillis();
logger.info("异步发送消息成功,执行时长:{}", endTs - startTs);
} catch (Exception e) {
logger.error("异步发送消息失败,错误信息:{}", ExceptionUtils.getErrorStackTrace(e));
}
});
return new Result();
} }
} }

5
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/entity/UserMessageEntity.java

@ -70,4 +70,9 @@ public class UserMessageEntity extends BaseEpmetEntity {
*/ */
private String readFlag; private String readFlag;
/**
* 调用者
*/
private String referer;
} }

5
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/excel/UserMessageExcel.java

@ -49,6 +49,9 @@ public class UserMessageExcel {
@Excel(name = "消息标题") @Excel(name = "消息标题")
private String title; private String title;
@Excel(name = "调用者")
private String referer;
@Excel(name = "消息通知内容") @Excel(name = "消息通知内容")
private String messageContent; private String messageContent;
@ -74,4 +77,4 @@ public class UserMessageExcel {
private Date updatedTime; private Date updatedTime;
} }

37
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageExtServiceImpl.java

@ -2,8 +2,12 @@ package com.epmet.service.impl;
import com.epmet.commons.tools.exception.RenException; import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ExtConstant;
import com.epmet.dto.form.UserMessageFormDTO;
import com.epmet.dto.form.WxSubscribeMessageFormDTO; import com.epmet.dto.form.WxSubscribeMessageFormDTO;
import com.epmet.dto.form.WxmpMessagePushFormDTO; import com.epmet.dto.form.WxmpMessagePushFormDTO;
import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.service.UserMessageService;
import com.epmet.service.WxmpMessageExtService; import com.epmet.service.WxmpMessageExtService;
import com.epmet.service.WxmpMessageService; import com.epmet.service.WxmpMessageService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -24,20 +28,37 @@ public class WxmpMessageExtServiceImpl implements WxmpMessageExtService {
@Autowired @Autowired
private WxmpMessageService wxmpMessageService; private WxmpMessageService wxmpMessageService;
@Autowired
private UserMessageService userMessageService;
@Override @Override
public Result pushWxmpMessage(List<WxmpMessagePushFormDTO> dtos) { public Result pushWxmpMessage(List<WxmpMessagePushFormDTO> dtos) {
List<WxSubscribeMessageFormDTO> msgList = new ArrayList<>(); List<WxSubscribeMessageFormDTO> wxmpMsgList = new ArrayList<>();
List<UserMessageFormDTO> userMsgList = new ArrayList<>();
for (WxmpMessagePushFormDTO dto : dtos) { for (WxmpMessagePushFormDTO dto : dtos) {
WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO(); //站内信
try{ UserMessageFormDTO userMessageFormDTO = new UserMessageFormDTO();
BeanUtils.copyProperties(dto,userMessageFormDTO);
userMessageFormDTO.setTitle("您有一条"+dto.getTitle());
userMsgList.add(userMessageFormDTO);
//如果推送微信订阅flag为"1",推送微信订阅
if (ExtConstant.PUSH_WXMP.equals(dto.getPushWxmpFlag())){
WxSubscribeMessageFormDTO wxSubscribeMessageFormDTO = new WxSubscribeMessageFormDTO();
BeanUtils.copyProperties(dto,wxSubscribeMessageFormDTO); BeanUtils.copyProperties(dto,wxSubscribeMessageFormDTO);
//设置ClientType
if (ExtConstant.APP_RESI.equals(dto.getApp())){
wxSubscribeMessageFormDTO.setClientType(ExtConstant.APP_RESI);
}
if (ExtConstant.APP_GOV.equals(dto.getApp())){
wxSubscribeMessageFormDTO.setClientType(ExtConstant.APP_WORK);
}
wxSubscribeMessageFormDTO.setBehaviorType(dto.getTitle());
wxSubscribeMessageFormDTO.setMessageTime(new Date()); wxSubscribeMessageFormDTO.setMessageTime(new Date());
msgList.add(wxSubscribeMessageFormDTO); wxmpMsgList.add(wxSubscribeMessageFormDTO);
}catch (Exception e){
throw new RenException("转换bean失败");
} }
} }
wxmpMessageService.sendWxSubscribeMessage(msgList); wxmpMessageService.sendWxSubscribeMessage(wxmpMsgList);
return new Result(); return userMessageService.saveUserMessageList(userMsgList);
} }
} }

2
epmet-module/epmet-message/epmet-message-server/src/main/java/com/epmet/service/impl/WxmpMessageServiceImpl.java

@ -330,7 +330,7 @@ public class WxmpMessageServiceImpl implements WxmpMessageService {
wxmpMsgSendRecordEntity.setMessageContent(msg.getMessageContent()); wxmpMsgSendRecordEntity.setMessageContent(msg.getMessageContent());
wxmpMsgSendRecordEntity.setMessageTime(msg.getMessageTime()); wxmpMsgSendRecordEntity.setMessageTime(msg.getMessageTime());
wxmpMsgSendRecordEntity.setResult(status); wxmpMsgSendRecordEntity.setResult(status);
wxmpMsgSendRecordEntity.setReferer(StringUtils.isBlank(msg.getReferer())?"epmet":msg.getReferer()); wxmpMsgSendRecordEntity.setReferer(msg.getReferer());
return wxmpMsgSendRecordEntity; return wxmpMsgSendRecordEntity;
} }

1
epmet-module/epmet-message/epmet-message-server/src/main/resources/db/migration/V0.3.12.5__alter_user_message_add_column.sql

@ -0,0 +1 @@
ALTER TABLE user_message ADD REFERER VARCHAR(20) COMMENT '调用者';
Loading…
Cancel
Save