From bbbc4f2753cb760e9a4e0c0bdec068412f5c0b71 Mon Sep 17 00:00:00 2001 From: xiezhijun <15270898033@163.com> Date: Tue, 27 Apr 2021 19:48:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B6=88=E6=81=AF=E4=B8=AD?= =?UTF-8?q?=E5=BF=83=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/SysWxUserLogController.java | 12 +- .../custom/WechatAppletController.java | 48 ++++- .../custom/domain/SysMessageNotice.java | 54 ++++++ .../domain/entityEnum/MessageNoticeEnum.java | 75 ++++++++ .../dto/response/MessageNoticeResponse.java | 43 +++++ .../custom/mapper/SysCustomerMapper.java | 7 + .../custom/mapper/SysMessageNoticeMapper.java | 76 ++++++++ .../custom/service/ISysCustomerService.java | 7 + .../service/ISysMessageNoticeService.java | 92 ++++++++++ .../service/impl/SysCustomerServiceImpl.java | 9 + .../impl/SysMessageNoticeServiceImpl.java | 169 ++++++++++++++++++ .../service/impl/SysWxUserLogServiceImpl.java | 3 + .../mapper/custom/SysCustomerMapper.xml | 6 + .../mapper/custom/SysMessageNoticeMapper.xml | 144 +++++++++++++++ 14 files changed, 742 insertions(+), 3 deletions(-) create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/SysMessageNotice.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/entityEnum/MessageNoticeEnum.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/dto/response/MessageNoticeResponse.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysMessageNoticeMapper.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/ISysMessageNoticeService.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysMessageNoticeServiceImpl.java create mode 100644 stdiet-custom/src/main/resources/mapper/custom/SysMessageNoticeMapper.xml diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java index 24de56979..9d8872060 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxUserLogController.java @@ -13,6 +13,7 @@ import com.stdiet.common.utils.poi.ExcelUtil; import com.stdiet.custom.domain.SysWxUserInfo; import com.stdiet.custom.domain.SysWxUserLog; import com.stdiet.custom.page.WxLogInfo; +import com.stdiet.custom.service.ISysMessageNoticeService; import com.stdiet.custom.service.ISysOrderService; import com.stdiet.custom.service.ISysWxUserInfoService; import com.stdiet.custom.service.ISysWxUserLogService; @@ -40,8 +41,12 @@ public class SysWxUserLogController extends BaseController { @Autowired private ISysWxUserInfoService sysWxUserInfoService; + @Autowired private ISysOrderService sysOrderService; + @Autowired + private ISysMessageNoticeService sysMessageNoticeService; + /** * 查询微信用户记录列表 */ @@ -211,6 +216,11 @@ public class SysWxUserLogController extends BaseController { @PreAuthorize("@ss.hasPermi('custom:wxUserLog:query')") @PostMapping("/commentPunchContent") public AjaxResult commentPunchContent(@RequestBody SysWxUserLog sysWxUserLog) { - return toAjax(sysWxUserLogService.updateSysWxUserLog(sysWxUserLog)); + int row = sysWxUserLogService.updateSysWxUserLog(sysWxUserLog); + if(row > 0){ + SysWxUserLog log = sysWxUserLogService.selectSysWxUserLogById(sysWxUserLog.getId()+""); + sysMessageNoticeService.sendPunchCommentMessage(log); + } + return toAjax(row); } } \ No newline at end of file diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java index 5e63840b8..abcee28f7 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/WechatAppletController.java @@ -14,8 +14,10 @@ import com.stdiet.common.utils.oss.AliyunOSSUtils; import com.stdiet.common.utils.sign.AesUtils; import com.stdiet.custom.domain.*; import com.stdiet.custom.dto.response.CustomerCaseResponse; +import com.stdiet.custom.dto.response.MessageNoticeResponse; import com.stdiet.custom.page.WxLogInfo; import com.stdiet.custom.service.*; +import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -51,6 +53,12 @@ public class WechatAppletController extends BaseController { @Autowired private ISysAskNutritionQuestionService sysAskNutritionQuestionService; + @Autowired + private ISysMessageNoticeService sysMessageNoticeService; + + @Autowired + private ISysCustomerService sysCustomerService; + /** * 查询微信小程序中展示的客户案例 */ @@ -89,7 +97,7 @@ public class WechatAppletController extends BaseController { } /** - * 同步客户信息,返回订单数量 + * 同步客户信息 * @param sysWxUserInfo * @return */ @@ -106,7 +114,17 @@ public class WechatAppletController extends BaseController { }else{ sysWxUserInfoService.insertSysWxUserInfo(sysWxUserInfo); } - return AjaxResult.success(); + Map<String,Object> result = new HashMap<>(); + //根据手机号查询返回用户加密ID + SysCustomer customer = sysCustomerService.getCustomerByPhone(sysWxUserInfo.getPhone()); + result.put("customerId", customer != null ? AesUtils.encrypt(customer.getId()+"", null) : null); + //查询未读消息数量 + SysMessageNotice messageParam = new SysMessageNotice(); + messageParam.setReadType(0); + messageParam.setMessageCustomer(customer != null ? customer.getId() : 0); + int unReadNoticeTotal = sysMessageNoticeService.getCustomerMessageCount(messageParam); + result.put("unReadNoticeTotal", unReadNoticeTotal); + return AjaxResult.success(result); } /** @@ -309,4 +327,30 @@ public class WechatAppletController extends BaseController { } return toAjax(sysAskNutritionQuestionService.insertSysAskNutritionQuestion(sysAskNutritionQuestion)); } + + /** + * 获取用户通知消息 + */ + @GetMapping(value = "/getCustomerMessage") + public TableDataInfo getCustomerMessage(SysMessageNotice sysMessageNotice) { + startPage(); + if(StringUtils.isNotEmpty(sysMessageNotice.getCustomerId())){ + sysMessageNotice.setMessageCustomer(Long.parseLong(AesUtils.decrypt(sysMessageNotice.getCustomerId(), null))); + }else{ + sysMessageNotice.setMessageCustomer(0L); + } + List<MessageNoticeResponse> list = sysMessageNoticeService.getCustomerMessage(sysMessageNotice); + return getDataTable(list); + } + + /** + * 更新用户通知消息已读状态 + */ + @GetMapping(value = "/updateMessageReadStatus") + public AjaxResult updateMessageReadStatus(@RequestParam("id")Long id) { + SysMessageNotice sysMessageNotice = new SysMessageNotice(); + sysMessageNotice.setReadType(1); + sysMessageNotice.setId(id); + return toAjax(sysMessageNoticeService.updateSysMessageNotice(sysMessageNotice)); + } } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysMessageNotice.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysMessageNotice.java new file mode 100644 index 000000000..befb87e6a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysMessageNotice.java @@ -0,0 +1,54 @@ +package com.stdiet.custom.domain; + +import lombok.Data; +import com.stdiet.common.annotation.Excel; +import com.stdiet.common.core.domain.BaseEntity; + +/** + * 客户消息通知对象 sys_message_notice + * + * @author xzj + * @date 2021-04-26 + */ +@Data +public class SysMessageNotice extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 消息属性,0 公共消息 1 私有消息 */ + @Excel(name = "消息属性,0 公共消息 1 私有消息") + private Integer messageProperty; + + /** 消息对应客户ID (公共消息时该字段为0) */ + @Excel(name = "消息对应客户ID (公共消息时该字段为0)") + private Long messageCustomer; + + //用户加密ID,非持久化字段 + private String customerId; + + /** 消息类型 */ + @Excel(name = "消息类型") + private Integer messageType; + + /** 消息标题 */ + @Excel(name = "消息标题") + private String messageTitle; + + /** 消息内容 */ + @Excel(name = "消息内容") + private String messageContent; + + /** 是否已读 0未读 1已读 */ + @Excel(name = "是否已读 0未读 1已读") + private Integer readType; + + /** 当前消息对应关键参数,多个参数可保存json字符串 */ + @Excel(name = "当前消息对应关键参数,多个参数可保存json字符串") + private String messageKey; + + /** 删除标识 0未删除 1已删除 */ + private Integer delFlag; +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/entityEnum/MessageNoticeEnum.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/entityEnum/MessageNoticeEnum.java new file mode 100644 index 000000000..8c51636f8 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/entityEnum/MessageNoticeEnum.java @@ -0,0 +1,75 @@ +package com.stdiet.custom.domain.entityEnum; + +public enum MessageNoticeEnum{ + + systemMessage("系统通知", 0, 0, "系统通知"), + punchComment("打卡点评", 1, 1, "%s打卡点评"); //%s 为打卡时间 + + + //消息名称 + private String name; + + //消息属性 0公共 1私有 + private Integer property; + + //消息类型 + private Integer type; + + //消息标题模板 + private String titleTemplate; + + MessageNoticeEnum(String name, Integer property, Integer type, String titleTemplate){ + this.name = name; + this.property = property; + this.type = type; + this.titleTemplate = titleTemplate; + } + + /** + * 根据type类型获取枚举对象 + * @param type + * @return + */ + public static MessageNoticeEnum getNoticeEnumByType(Integer type){ + for (MessageNoticeEnum messageEnum : MessageNoticeEnum.values()) { + if(messageEnum.getType().intValue() == type.intValue()){ + return messageEnum; + } + } + return systemMessage; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } + + public Integer getProperty() { + return property; + } + + public void setProperty(Integer property) { + this.property = property; + } + + public String getTitleTemplate() { + return titleTemplate; + } + + public void setTitleTemplate(String titleTemplate) { + this.titleTemplate = titleTemplate; + } + +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/MessageNoticeResponse.java b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/MessageNoticeResponse.java new file mode 100644 index 000000000..6d4df2071 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/dto/response/MessageNoticeResponse.java @@ -0,0 +1,43 @@ +package com.stdiet.custom.dto.response; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class MessageNoticeResponse implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + /** 消息属性,0 公共消息 1 私有消息 */ + private Integer messageProperty; + + /** 消息对应客户ID (公共消息时该字段为0) */ + private Long messageCustomer; + + /** 消息类型 */ + private Integer messageType; + + //消息类型名称 + private String messageTypeName; + + /** 消息标题 */ + private String messageTitle; + + /** 消息内容 */ + private String messageContent; + + /** 是否已读 0未读 1已读 */ + private Integer readType; + + /** 当前消息对应关键参数,多个参数可保存json字符串 */ + private String messageKey; + + /** 创建时间 **/ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date createTime; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java index 388e7b86c..1d89f4d94 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysCustomerMapper.java @@ -67,4 +67,11 @@ public interface SysCustomerMapper * @return 结果 */ SysCustomer getCustomerByPhone(@Param("phone")String phone); + + /** + * 根据openid查询客户信息 + * @param openid + * @return + */ + SysCustomer getCustomerByOpenId(@Param("openid")String openid); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysMessageNoticeMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysMessageNoticeMapper.java new file mode 100644 index 000000000..7f69ad171 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysMessageNoticeMapper.java @@ -0,0 +1,76 @@ +package com.stdiet.custom.mapper; + +import java.util.List; +import com.stdiet.custom.domain.SysMessageNotice; +import com.stdiet.custom.dto.response.MessageNoticeResponse; + +/** + * 客户消息通知Mapper接口 + * + * @author xzj + * @date 2021-04-26 + */ +public interface SysMessageNoticeMapper +{ + /** + * 查询客户消息通知 + * + * @param id 客户消息通知ID + * @return 客户消息通知 + */ + public SysMessageNotice selectSysMessageNoticeById(Long id); + + /** + * 查询客户消息通知列表 + * + * @param sysMessageNotice 客户消息通知 + * @return 客户消息通知集合 + */ + public List<SysMessageNotice> selectSysMessageNoticeList(SysMessageNotice sysMessageNotice); + + /** + * 新增客户消息通知 + * + * @param sysMessageNotice 客户消息通知 + * @return 结果 + */ + public int insertSysMessageNotice(SysMessageNotice sysMessageNotice); + + /** + * 修改客户消息通知 + * + * @param sysMessageNotice 客户消息通知 + * @return 结果 + */ + public int updateSysMessageNotice(SysMessageNotice sysMessageNotice); + + /** + * 删除客户消息通知 + * + * @param id 客户消息通知ID + * @return 结果 + */ + public int deleteSysMessageNoticeById(Long id); + + /** + * 批量删除客户消息通知 + * + * @param ids 需要删除的数据ID + * @return 结果 + */ + public int deleteSysMessageNoticeByIds(Long[] ids); + + /** + * 根据客户ID查询客户信息(包含私有信息以及公共消息) + * @param sysMessageNotice + * @return + */ + public List<MessageNoticeResponse> getCustomerMessage(SysMessageNotice sysMessageNotice); + + /** + * 根据客户ID查询客户消息数量 + * @param sysMessageNotice + * @return + */ + public int getCustomerMessageCount(SysMessageNotice sysMessageNotice); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java index c88766acf..6a16b1990 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysCustomerService.java @@ -81,4 +81,11 @@ public interface ISysCustomerService Map<String,Object> getPhysicalSignsByOutId(String id); + /** + * 根据openid查询客户信息 + * @param openid + * @return + */ + SysCustomer getCustomerByOpenId(String openid); + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysMessageNoticeService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysMessageNoticeService.java new file mode 100644 index 000000000..7349e0ec6 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysMessageNoticeService.java @@ -0,0 +1,92 @@ +package com.stdiet.custom.service; + +import java.util.List; +import com.stdiet.custom.domain.SysMessageNotice; +import com.stdiet.custom.domain.SysWxUserLog; +import com.stdiet.custom.domain.entityEnum.MessageNoticeEnum; +import com.stdiet.custom.dto.response.MessageNoticeResponse; + +/** + * 客户消息通知Service接口 + * + * @author xzj + * @date 2021-04-26 + */ +public interface ISysMessageNoticeService +{ + /** + * 查询客户消息通知 + * + * @param id 客户消息通知ID + * @return 客户消息通知 + */ + public SysMessageNotice selectSysMessageNoticeById(Long id); + + /** + * 查询客户消息通知列表 + * + * @param sysMessageNotice 客户消息通知 + * @return 客户消息通知集合 + */ + public List<SysMessageNotice> selectSysMessageNoticeList(SysMessageNotice sysMessageNotice); + + /** + * 新增客户消息通知 + * + * @param sysMessageNotice 客户消息通知 + * @return 结果 + */ + public int insertSysMessageNotice(SysMessageNotice sysMessageNotice); + + /** + * 修改客户消息通知 + * + * @param sysMessageNotice 客户消息通知 + * @return 结果 + */ + public int updateSysMessageNotice(SysMessageNotice sysMessageNotice); + + /** + * 批量删除客户消息通知 + * + * @param ids 需要删除的客户消息通知ID + * @return 结果 + */ + public int deleteSysMessageNoticeByIds(Long[] ids); + + /** + * 删除客户消息通知信息 + * + * @param id 客户消息通知ID + * @return 结果 + */ + public int deleteSysMessageNoticeById(Long id); + + /** + * 根据客户ID查询客户信息(包含私有信息以及公共消息) + * @param sysMessageNotice + * @return + */ + public List<MessageNoticeResponse> getCustomerMessage(SysMessageNotice sysMessageNotice); + + /** + * 消息发送 + * @param messageNoticeEnum + * @param sysMessageNotice + * @return + */ + public int sendMessageNoticeToCustomer(MessageNoticeEnum messageNoticeEnum, SysMessageNotice sysMessageNotice); + + /** + * 根据客户ID查询客户消息数量 + * @param sysMessageNotice + * @return + */ + public int getCustomerMessageCount(SysMessageNotice sysMessageNotice); + + /** + * 发送打卡点评消息 + * @param sysWxUserLog + */ + public void sendPunchCommentMessage(SysWxUserLog sysWxUserLog); +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java index d4e9a85e6..eb3851d4c 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCustomerServiceImpl.java @@ -168,4 +168,13 @@ public class SysCustomerServiceImpl implements ISysCustomerService { public Map<String, Object> getPhysicalSignsByOutId(String id) { return null; } + + /** + * 根据openid查询客户信息 + * @param openid + * @return + */ + public SysCustomer getCustomerByOpenId(String openid){ + return sysCustomerMapper.getCustomerByOpenId(openid); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysMessageNoticeServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysMessageNoticeServiceImpl.java new file mode 100644 index 000000000..a5110a50a --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysMessageNoticeServiceImpl.java @@ -0,0 +1,169 @@ +package com.stdiet.custom.service.impl; + +import java.util.Date; +import java.util.List; +import com.stdiet.common.utils.DateUtils; +import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.domain.SysCustomer; +import com.stdiet.custom.domain.SysWxUserLog; +import com.stdiet.custom.domain.entityEnum.MessageNoticeEnum; +import com.stdiet.custom.dto.response.MessageNoticeResponse; +import com.stdiet.custom.service.ISysCustomerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import com.stdiet.custom.mapper.SysMessageNoticeMapper; +import com.stdiet.custom.domain.SysMessageNotice; +import com.stdiet.custom.service.ISysMessageNoticeService; + +/** + * 客户消息通知Service业务层处理 + * + * @author xzj + * @date 2021-04-26 + */ +@Service +public class SysMessageNoticeServiceImpl implements ISysMessageNoticeService +{ + @Autowired + private SysMessageNoticeMapper sysMessageNoticeMapper; + + @Autowired + private ISysCustomerService sysCustomerService; + + /** + * 查询客户消息通知 + * + * @param id 客户消息通知ID + * @return 客户消息通知 + */ + @Override + public SysMessageNotice selectSysMessageNoticeById(Long id) + { + return sysMessageNoticeMapper.selectSysMessageNoticeById(id); + } + + /** + * 查询客户消息通知列表 + * + * @param sysMessageNotice 客户消息通知 + * @return 客户消息通知 + */ + @Override + public List<SysMessageNotice> selectSysMessageNoticeList(SysMessageNotice sysMessageNotice) + { + return sysMessageNoticeMapper.selectSysMessageNoticeList(sysMessageNotice); + } + + /** + * 新增客户消息通知 + * + * @param sysMessageNotice 客户消息通知 + * @return 结果 + */ + @Override + public int insertSysMessageNotice(SysMessageNotice sysMessageNotice) + { + sysMessageNotice.setCreateTime(DateUtils.getNowDate()); + return sysMessageNoticeMapper.insertSysMessageNotice(sysMessageNotice); + } + + /** + * 修改客户消息通知 + * + * @param sysMessageNotice 客户消息通知 + * @return 结果 + */ + @Override + public int updateSysMessageNotice(SysMessageNotice sysMessageNotice) + { + sysMessageNotice.setUpdateTime(DateUtils.getNowDate()); + return sysMessageNoticeMapper.updateSysMessageNotice(sysMessageNotice); + } + + /** + * 批量删除客户消息通知 + * + * @param ids 需要删除的客户消息通知ID + * @return 结果 + */ + @Override + public int deleteSysMessageNoticeByIds(Long[] ids) + { + return sysMessageNoticeMapper.deleteSysMessageNoticeByIds(ids); + } + + /** + * 删除客户消息通知信息 + * + * @param id 客户消息通知ID + * @return 结果 + */ + @Override + public int deleteSysMessageNoticeById(Long id) + { + return sysMessageNoticeMapper.deleteSysMessageNoticeById(id); + } + + /** + * 根据客户ID查询客户信息(包含私有信息以及公共消息) + * @param sysMessageNotice + * @return + */ + @Override + public List<MessageNoticeResponse> getCustomerMessage(SysMessageNotice sysMessageNotice){ + List<MessageNoticeResponse> responsesList = sysMessageNoticeMapper.getCustomerMessage(sysMessageNotice); + if(responsesList != null && responsesList.size() > 0){ + for (MessageNoticeResponse messageNoticeResponse : responsesList) { + messageNoticeResponse.setMessageTypeName(MessageNoticeEnum.getNoticeEnumByType(messageNoticeResponse.getMessageType()).getName()); + } + } + return responsesList; + } + + /** + * 消息发送 + * @param messageNoticeEnum + * @param sysMessageNotice + * @return + */ + @Override + public int sendMessageNoticeToCustomer(MessageNoticeEnum messageNoticeEnum, SysMessageNotice sysMessageNotice){ + sysMessageNotice.setMessageProperty(messageNoticeEnum.getProperty()); + sysMessageNotice.setMessageType(messageNoticeEnum.getType()); + return sysMessageNoticeMapper.insertSysMessageNotice(sysMessageNotice); + } + + /** + * 根据客户ID查询客户消息数量 + * @param sysMessageNotice + * @return + */ + @Override + public int getCustomerMessageCount(SysMessageNotice sysMessageNotice){ + return sysMessageNoticeMapper.getCustomerMessageCount(sysMessageNotice); + } + + /** + * 发送打卡点评消息 + * @param sysWxUserLog + */ + @Override + @Async + public void sendPunchCommentMessage(SysWxUserLog sysWxUserLog){ + if(sysWxUserLog == null || StringUtils.isEmpty(sysWxUserLog.getOpenid())){ + return; + } + SysCustomer sysCustomer = sysCustomerService.getCustomerByOpenId(sysWxUserLog.getOpenid()); + if(sysCustomer != null){ + SysMessageNotice sysMessageNotice = new SysMessageNotice(); + sysMessageNotice.setMessageProperty(1); + sysMessageNotice.setMessageType(MessageNoticeEnum.punchComment.getType()); + sysMessageNotice.setReadType(0); + sysMessageNotice.setMessageCustomer(sysCustomer.getId()); + sysMessageNotice.setMessageTitle(String.format(MessageNoticeEnum.punchComment.getTitleTemplate(), DateUtils.dateTime(sysWxUserLog.getLogTime()))); + sysMessageNotice.setMessageContent(sysWxUserLog.getComment()); + sendMessageNoticeToCustomer(MessageNoticeEnum.punchComment, sysMessageNotice); + } + } +} \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserLogServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserLogServiceImpl.java index 0d736d07a..dbe7129c7 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserLogServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxUserLogServiceImpl.java @@ -8,8 +8,11 @@ import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.file.FileUploadUtils; import com.stdiet.common.utils.file.MimeTypeUtils; import com.stdiet.common.utils.oss.AliyunOSSUtils; +import com.stdiet.custom.domain.SysMessageNotice; import com.stdiet.custom.domain.SysWxUserInfo; +import com.stdiet.custom.domain.entityEnum.MessageNoticeEnum; import com.stdiet.custom.page.WxLogInfo; +import com.stdiet.custom.service.ISysMessageNoticeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.stdiet.custom.mapper.SysWxUserLogMapper; diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml index 1847b6535..086da23a6 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysCustomerMapper.xml @@ -156,6 +156,12 @@ where phone = #{phone} and del_flag = 0 </select> + <!-- 根据openId查询客户 --> + <select id="getCustomerByOpenId" parameterType="String" resultMap="SysCustomerResult"> + select sc.id from sys_customer sc + left join sys_wx_user_info wu on wu.phone = sc.phone + where wu.openid = #{openid} and sc.del_flag = 0 order by sc.id desc limit 1 + </select> </mapper> \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysMessageNoticeMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysMessageNoticeMapper.xml new file mode 100644 index 000000000..e7377f342 --- /dev/null +++ b/stdiet-custom/src/main/resources/mapper/custom/SysMessageNoticeMapper.xml @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.stdiet.custom.mapper.SysMessageNoticeMapper"> + + <resultMap type="SysMessageNotice" id="SysMessageNoticeResult"> + <result property="id" column="id" /> + <result property="messageProperty" column="message_property" /> + <result property="messageCustomer" column="message_customer" /> + <result property="messageType" column="message_type" /> + <result property="messageTitle" column="message_title" /> + <result property="messageContent" column="message_content" /> + <result property="readType" column="read_type" /> + <result property="messageKey" column="message_key" /> + <result property="createTime" column="create_time" /> + <result property="createBy" column="create_by" /> + <result property="updateTime" column="update_time" /> + <result property="updateBy" column="update_by" /> + <result property="delFlag" column="del_flag" /> + </resultMap> + + <resultMap type="com.stdiet.custom.dto.response.MessageNoticeResponse" id="SysMessageNoticeResponse"> + <result property="id" column="id" /> + <result property="messageProperty" column="message_property" /> + <result property="messageCustomer" column="message_customer" /> + <result property="messageType" column="message_type" /> + <result property="messageTitle" column="message_title" /> + <result property="messageContent" column="message_content" /> + <result property="readType" column="read_type" /> + <result property="messageKey" column="message_key" /> + <result property="createTime" column="create_time" /> + </resultMap> + + <sql id="selectSysMessageNoticeVo"> + id, message_property, message_customer, message_type, message_title, message_content, read_type, message_key, create_time, create_by, update_time, update_by, del_flag + </sql> + + <select id="selectSysMessageNoticeList" parameterType="SysMessageNotice" resultMap="SysMessageNoticeResult"> + select + <include refid="selectSysMessageNoticeVo"/> + from sys_message_notice + where del_flag = 0 + </select> + + <select id="selectSysMessageNoticeById" parameterType="Long" resultMap="SysMessageNoticeResult"> + select + <include refid="selectSysMessageNoticeVo"/> + from sys_message_notice + where id = #{id} and del_flag = 0 order by id desc + </select> + + <insert id="insertSysMessageNotice" parameterType="SysMessageNotice"> + insert into sys_message_notice + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null">id,</if> + <if test="messageProperty != null">message_property,</if> + <if test="messageCustomer != null">message_customer,</if> + <if test="messageType != null">message_type,</if> + <if test="messageTitle != null">message_title,</if> + <if test="messageContent != null">message_content,</if> + <if test="readType != null">read_type,</if> + <if test="messageKey != null">message_key,</if> + <if test="createTime != null">create_time,</if> + <if test="createBy != null">create_by,</if> + <if test="updateTime != null">update_time,</if> + <if test="updateBy != null">update_by,</if> + <if test="delFlag != null">del_flag,</if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null">#{id},</if> + <if test="messageProperty != null">#{messageProperty},</if> + <if test="messageCustomer != null">#{messageCustomer},</if> + <if test="messageType != null">#{messageType},</if> + <if test="messageTitle != null">#{messageTitle},</if> + <if test="messageContent != null">#{messageContent},</if> + <if test="readType != null">#{readType},</if> + <if test="messageKey != null">#{messageKey},</if> + <if test="createTime != null">#{createTime},</if> + <if test="createBy != null">#{createBy},</if> + <if test="updateTime != null">#{updateTime},</if> + <if test="updateBy != null">#{updateBy},</if> + <if test="delFlag != null">#{delFlag},</if> + </trim> + </insert> + + <update id="updateSysMessageNotice" parameterType="SysMessageNotice"> + update sys_message_notice + <trim prefix="SET" suffixOverrides=","> + <if test="messageProperty != null">message_property = #{messageProperty},</if> + <if test="messageCustomer != null">message_customer = #{messageCustomer},</if> + <if test="messageType != null">message_type = #{messageType},</if> + <if test="messageTitle != null">message_title = #{messageTitle},</if> + <if test="messageContent != null">message_content = #{messageContent},</if> + <if test="readType != null">read_type = #{readType},</if> + <if test="messageKey != null">message_key = #{messageKey},</if> + <if test="createTime != null">create_time = #{createTime},</if> + <if test="createBy != null">create_by = #{createBy},</if> + <if test="updateTime != null">update_time = #{updateTime},</if> + <if test="updateBy != null">update_by = #{updateBy},</if> + <if test="delFlag != null">del_flag = #{delFlag},</if> + </trim> + where id = #{id} + </update> + + <update id="deleteSysMessageNoticeById" parameterType="Long"> + update sys_message_notice set del_flag = 1 where id = #{id} + </update> + + <update id="deleteSysMessageNoticeByIds" parameterType="String"> + update sys_message_notice set del_flag = 1 where id in + <foreach item="id" collection="array" open="(" separator="," close=")"> + #{id} + </foreach> + </update> + + <!-- 根据客户ID获取用户的消息 --> + <select id="getCustomerMessage" parameterType="SysMessageNotice" resultMap="SysMessageNoticeResponse"> + select + smn.id, smn.message_property, smn.message_customer, smn.message_type, smn.message_title, smn.message_content, smn.read_type, smn.message_key, smn.create_time + from sys_message_notice smn + where smn.del_flag = 0 and (smn.message_property = 0 or smn.message_customer = #{messageCustomer}) + <if test="readType != null"> + and smn.read_type = #{readType} + </if> + <if test="messageType != null"> + and smn.message_type = #{messageType} + </if> + order by smn.id desc + </select> + + <!-- 根据客户ID获取用户的消息数量 --> + <select id="getCustomerMessageCount" parameterType="SysMessageNotice" resultType="int"> + select count(smn.id) + from sys_message_notice smn + where smn.del_flag = 0 and (smn.message_property = 0 or smn.message_customer = #{messageCustomer}) + <if test="readType != null"> + and smn.read_type = #{readType} + </if> + <if test="messageType != null"> + and smn.message_type = #{messageType} + </if> + </select> +</mapper> \ No newline at end of file