diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java index 987b9b71..8199fb83 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/util/HuaWeiSmsUtil.java @@ -105,6 +105,13 @@ public class HuaWeiSmsUtil { templateId = "ac6749d4a3134c39997b4342695ddc01"; templateParas = "[" + randomNumber +"]"; break; + case "3": + // 中汽中心标准所-注册 + sender = "8821092414481"; + signature = "中汽中心标准所"; + templateId = "98a9d61b7d41423aa7a7d4ac969c4e6a"; + templateParas = "[" + randomNumber +"]"; + break; default: throw new JeroBootException("codeType flase."); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java index 9c00d443..7b2c8d5c 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/common/ProjectCommon.java @@ -142,6 +142,39 @@ public class ProjectCommon { * 系统通知 */ public final static String ALERT12 = "12"; + /** + * 缴费提醒(会员) + */ + public final static String ALERT13 = "13"; + /** + * 证书缴费(会员) + */ + public final static String ALERT14 = "14"; + /** + * 会员到期提醒(会员) + */ + public final static String ALERT15 = "15"; + /** + * 证书(会员) + */ + public final static String ALERT16 = "16"; + /** + * 开票信息(会员) + */ + public final static String ALERT17 = "17"; + /** + * 会员注册(会员) + */ + public final static String ALERT18 = "18"; + /** + * 变更联系人(会员) + */ + public final static String ALERT19 = "19"; + /** + * 单位名称变更(会员) + */ + public final static String ALERT20 = "20"; + /** * 1短信 2邮件 3系统 */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/system/controller/MemberMessageSyncController.java b/jero-boot-incoming-payment/src/main/java/com/jero/system/controller/MemberMessageSyncController.java new file mode 100644 index 00000000..1df1efac --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/system/controller/MemberMessageSyncController.java @@ -0,0 +1,126 @@ +package com.jero.system.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.jero.common.api.vo.Result; +import com.jero.common.aspect.annotation.AutoLog; +import com.jero.common.common.ProjectCommon; +import com.jero.common.constant.CommonConstant; +import com.jero.common.constant.WebsocketConst; +import com.jero.common.util.PasswordUtil; +import com.jero.company.entity.PayContactsManagement; +import com.jero.company.service.IPayContactsManagementService; +import com.jero.modules.message.websocket.WebSocket; +import com.jero.modules.system.entity.SysAnnouncement; +import com.jero.modules.system.entity.SysAnnouncementSend; +import com.jero.modules.system.service.ISysAnnouncementSendService; +import com.jero.modules.system.service.ISysAnnouncementService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Objects; + +/** + * @ClassName MemberMessageSyncController + * @Description 会员系统消息同步 + * @Author lqt + * @Date 2021/12/16 17:50 + * @Version 1.0 + */ +@Api(tags="会员系统消息同步") +@RestController +@RequestMapping("/sync/message") +@Slf4j +public class MemberMessageSyncController { + + @Resource + private ISysAnnouncementSendService sysAnnouncementSendService; + @Resource + private WebSocket webSocket; + @Resource + private ISysAnnouncementService sysAnnouncementService; + @Resource + private IPayContactsManagementService payContactsManagementService; + + /** + * 会员系统消息同步 + * + * @return + */ + @AutoLog(value = "会员系统消息同步",operateType = 2) + @ApiOperation(value="会员系统消息同步", notes="会员系统消息同步") + @PostMapping(value = "/memberMessageSync") + @Transactional + public Result memberMessageSync(@RequestBody SysAnnouncement announcement) { + try { + // 1.缴费提醒 2.证书缴费 3.会员到期提醒 4.证书 5.开票信息 6.会员注册 7.变更联系人 8.单位名称变更 + String alert = ""; + if(Objects.equals(announcement.getTitile(),"缴费提醒")){ + alert = ProjectCommon.ALERT13; + }else if(Objects.equals(announcement.getTitile(),"证书缴费")){ + alert = ProjectCommon.ALERT14; + }else if(Objects.equals(announcement.getTitile(),"会员到期提醒")){ + alert = ProjectCommon.ALERT15; + }else if(Objects.equals(announcement.getTitile(),"证书")){ + alert = ProjectCommon.ALERT16; + }else if(Objects.equals(announcement.getTitile(),"开票信息")){ + alert = ProjectCommon.ALERT17; + }else if(Objects.equals(announcement.getTitile(),"会员注册")){ + alert = ProjectCommon.ALERT18; + }else if(Objects.equals(announcement.getTitile(),"变更联系人")){ + alert = ProjectCommon.ALERT19; + }else if(Objects.equals(announcement.getTitile(),"单位名称变更")){ + alert = ProjectCommon.ALERT20; + } + if(StringUtils.isBlank(alert)){ + log.info("会员同步来款消息发送失败,消息标题不存在!"); + } + announcement.setTitile(alert); + announcement.setPriority(CommonConstant.PRIORITY_M); + announcement.setMsgType(CommonConstant.MSG_TYPE_UESR); + announcement.setSendStatus(CommonConstant.HAS_SEND); + announcement.setSendTime(new Date()); + announcement.setMsgCategory(CommonConstant.MSG_CATEGORY_2); + announcement.setDelFlag(String.valueOf(CommonConstant.DEL_FLAG_0)); + sysAnnouncementService.save(announcement); + // 2.插入用户通告阅读标记表记录 + LambdaQueryWrapper queryPayContactsManagement = new LambdaQueryWrapper<>(); + queryPayContactsManagement.in(PayContactsManagement::getPhone, Arrays.asList(announcement.getPhones().split(","))); + List listPayContactsManagement = payContactsManagementService.list(queryPayContactsManagement); + String anntId = announcement.getId(); + if(!CollectionUtils.isEmpty(listPayContactsManagement)){ + String finalAlert = alert; + listPayContactsManagement.forEach(p->{ + SysAnnouncementSend announcementSend = new SysAnnouncementSend(); + announcementSend.setAnntId(anntId); + announcementSend.setUserId(PasswordUtil.decrypt(p.getPhone())); + announcementSend.setReadFlag(CommonConstant.NO_READ_FLAG); + sysAnnouncementSendService.save(announcementSend); + JSONObject obj = new JSONObject(); + obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_USER); + obj.put(WebsocketConst.MSG_USER_ID, PasswordUtil.decrypt(p.getPhone())); + obj.put(WebsocketConst.MSG_ID, announcement.getId()); + obj.put(WebsocketConst.MSG_TXT, finalAlert); + webSocket.sendMessage(PasswordUtil.decrypt(p.getPhone()), obj.toJSONString()); + }); + }else{ + log.info("会员同步来款消息发送失败,用户不存在!"); + } + }catch (Exception e){ + log.error("发送消息异常",e); + } + return Result.OK("操作成功"); + } +} diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java index fe6cbbf0..e8f36036 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysAnnouncement.java @@ -1,17 +1,17 @@ package com.jero.modules.system.entity; -import java.io.Serializable; -import java.util.Date; - import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; import com.fasterxml.jackson.annotation.JsonFormat; import com.jero.common.aspect.annotation.Dict; +import lombok.Data; import org.jeecgframework.poi.excel.annotation.Excel; import org.springframework.format.annotation.DateTimeFormat; +import java.io.Serializable; + /** * @Description: 系统通告表 * @Author: jero-boot @@ -149,4 +149,9 @@ public class SysAnnouncement implements Serializable { * 模板编码 */ private String templateCode; + /** + * 手机号 + */ + @TableField(exist = false) + private String phones; }