diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index db2bae201..6b07b24a8 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -291,6 +291,8 @@ public enum ErrorCodeEnum { MESSAGE_TEMPLATE_NOT_SUPPORT_EDIT(1610001,"当前消息已发布,不支持编辑!",null), MESSAGE_TEMPLATE_NOT_SUPPORT_DELETED(1610002,"只有未发布的消息能删除,请确认!",null), + STORE_MESSAGE_REVOKE(1610003,"当前门店消息已撤销,请务重复操作",null), + STORE_MESSAGE_HANDLED(1610004,"当前门店消息已处理,无法撤销!",null), ; diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/MessageTemplateDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/MessageTemplateDAO.java index 99e069a47..904343a6d 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/MessageTemplateDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/MessageTemplateDAO.java @@ -1,7 +1,9 @@ package com.cool.store.dao; +import com.cool.store.dto.notice.NoticeDTO; import com.cool.store.entity.MessageTemplateDO; import com.cool.store.mapper.MessageTemplateMapper; +import com.cool.store.request.notice.MessageTemplateQueryRequest; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Repository; @@ -47,7 +49,27 @@ public class MessageTemplateDAO { } + public List getMessageTemplateList(MessageTemplateQueryRequest request) { + return messageTemplateMapper.getMessageTemplateList(request); + } + public int batchUpdateStoreInfoAndUserInfo(List ids, + String storeInfo, + String userInfo, + String userId) { + if (CollectionUtils.isEmpty(ids)){ + return 0; + } + return messageTemplateMapper.batchUpdateStoreInfoAndUserInfo(ids,storeInfo,userInfo,userId); + } + + + public int batchUpdatePublishStatus(List ids) { + if (CollectionUtils.isEmpty(ids)){ + return 0; + } + return messageTemplateMapper.batchUpdatePublishStatus(ids); + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreMessageDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreMessageDAO.java index 95955adb4..7f3e25032 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreMessageDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreMessageDAO.java @@ -1,10 +1,18 @@ package com.cool.store.dao; +import cn.hutool.core.collection.CollUtil; +import com.cool.store.dto.notice.MessageTemplateCountDTO; import com.cool.store.entity.StoreMessageDO; import com.cool.store.mapper.StoreMessageMapper; +import com.cool.store.request.notice.StoreMessageRequest; +import com.cool.store.vo.notice.MessageDetailVO; +import com.cool.store.vo.notice.StoreMessageVO; +import io.swagger.models.auth.In; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Repository; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; /** @@ -17,16 +25,63 @@ public class StoreMessageDAO { @Resource StoreMessageMapper storeMessageMapper; + + + + public StoreMessageDO getById(Long id){ + return storeMessageMapper.selectByPrimaryKey(id); + } + + public int update(StoreMessageDO storeMessageDO){ + return storeMessageMapper.updateByPrimaryKey(storeMessageDO); + } + /** * 批量新增 * @param list * @return */ public int batchInsert(List list){ + if (CollectionUtils.isEmpty(list)){ + return 0; + } return storeMessageMapper.insertBatch(list); } + public List getMessageTemplateCountList(List templateIds){ + if (CollUtil.isEmpty(templateIds)){ + return new ArrayList<>(); + } + return storeMessageMapper.getMessageTemplateCountList(templateIds); + } + public List getStoreMessageList(StoreMessageRequest request){ + return storeMessageMapper.getStoreMessageList(request); + } + public Integer batchRevoke(List ids, String userId, String userName){ + if (CollectionUtils.isEmpty(ids)){ + return 0; + } + return storeMessageMapper.batchRevoke(ids,userId,userName); + } + public Integer revokeById(Long id, String userId, String userName){ + if (id == null){ + return 0; + } + return storeMessageMapper.revokeById(id,userId,userName); + } + + public Integer queryStoreModuleCount(String storeId, Integer moduleCode){ + return storeMessageMapper.queryStoreModuleCount(storeId,moduleCode); + } + + public List getStoreMessageListByCondition(String storeId, Integer moduleCode, Integer todayTask, Integer pendingFlag, String userId){ + return storeMessageMapper.getStoreMessageListByCondition(storeId,moduleCode,todayTask,pendingFlag,userId); + } + + public MessageDetailVO getMessageDetail(Long id){ + return storeMessageMapper.getMessageDetail(id); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MessageTemplateMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MessageTemplateMapper.java index 53ea5e429..d038d22cf 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MessageTemplateMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MessageTemplateMapper.java @@ -1,6 +1,9 @@ package com.cool.store.mapper; +import com.cool.store.dto.notice.CommonDTO; +import com.cool.store.dto.notice.NoticeDTO; import com.cool.store.entity.MessageTemplateDO; +import com.cool.store.request.notice.MessageTemplateQueryRequest; import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; @@ -12,4 +15,16 @@ public interface MessageTemplateMapper extends Mapper { int updateDeleteStatusBatch(@Param("ids") List ids, @Param("userId") String userId); + List getMessageTemplateList(@Param("request") MessageTemplateQueryRequest request); + + int batchUpdateStoreInfoAndUserInfo(@Param("ids") List ids, + @Param("storeInfo") String storeInfo, + @Param("userInfo") String userInfo, + @Param("userId") String userId); + + int batchUpdatePublishStatus(@Param("ids") List ids); + + + + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMessageMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMessageMapper.java index 9770a4155..475ad3519 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMessageMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMessageMapper.java @@ -1,6 +1,10 @@ package com.cool.store.mapper; +import com.cool.store.dto.notice.MessageTemplateCountDTO; import com.cool.store.entity.StoreMessageDO; +import com.cool.store.request.notice.StoreMessageRequest; +import com.cool.store.vo.notice.MessageDetailVO; +import com.cool.store.vo.notice.StoreMessageVO; import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; @@ -10,4 +14,23 @@ public interface StoreMessageMapper extends Mapper { int insertBatch(@Param("list") List list); + + List getMessageTemplateCountList(@Param("templateIds") List templateIds); + + List getStoreMessageList(@Param("request") StoreMessageRequest request); + + int batchRevoke(@Param("ids") List ids, @Param("userId") String userId, @Param("userName") String userName); + + int revokeById(@Param("id") Long id, @Param("userId") String userId, @Param("userName") String userName); + + Integer queryStoreModuleCount(@Param("storeId") String storeId, @Param("moduleCode") Integer moduleCode); + + List getStoreMessageListByCondition(@Param("storeId") String storeId, + @Param("moduleCode") Integer moduleCode, + @Param("todayTask") Integer todayTask, + @Param("pendingFlag") Integer pendingFlag, + @Param("userId") String userId); + + MessageDetailVO getMessageDetail(Long id); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/MessageTemplateMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/MessageTemplateMapper.xml index e45d1df58..48003501c 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/MessageTemplateMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/MessageTemplateMapper.xml @@ -57,4 +57,75 @@ + + + + UPDATE zxjp_message_template + SET + store_info = #{storeInfo,jdbcType=LONGVARCHAR}, + handle_person_info = #{userInfo,jdbcType=LONGVARCHAR}, + update_time = NOW(), + publish_status = 1, + publish_time = NOW(), + publisher_user_id = #{userId} + WHERE id IN + + #{id,jdbcType=BIGINT} + + + + + UPDATE zxjp_message_template + SET + publish_status = 2 + WHERE id IN + + #{id,jdbcType=BIGINT} + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml index accc0867a..610b153a8 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml @@ -26,7 +26,7 @@ - INSERT INTO store_message ( + INSERT INTO zxjp_store_message ( store_id, store_code, store_name, @@ -40,17 +40,164 @@ VALUES ( - #{item.storeId,jdbcType=VARCHAR}, - #{item.storeCode,jdbcType=VARCHAR}, - #{item.storeName,jdbcType=VARCHAR}, - #{item.messageTemplateId,jdbcType=BIGINT}, - #{item.readStatus,jdbcType=BIT}, - #{item.readTime,jdbcType=TIMESTAMP}, - #{item.processStatus,jdbcType=TINYINT}, - #{item.processTime,jdbcType=TIMESTAMP}, - #{item.operatorList,jdbcType=LONGVARCHAR} + #{item.storeId}, + #{item.storeCode}, + #{item.storeName}, + #{item.messageTemplateId}, + #{item.readStatus}, + #{item.readTime}, + #{item.processStatus}, + #{item.processTime}, + #{item.operatorList} ) + + + + + + UPDATE zxjp_store_message + SET + revoke_status = 1, + revoke_time = NOW(), + revoke_operator_id = #{userId,jdbcType=BIGINT}, + revoke_operator_name = #{userName,jdbcType=VARCHAR}, + update_time = NOW() + + message_template_id IN + + #{item} + + AND process_status = 0 + AND revoke_status = 0 + + + + + UPDATE zxjp_store_message + SET + revoke_status = 1, + revoke_time = NOW(), + revoke_operator_id = #{userId,jdbcType=BIGINT}, + revoke_operator_name = #{userName,jdbcType=VARCHAR}, + update_time = NOW() + WHERE + id = #{id,jdbcType=BIGINT} + AND process_status = 0 + AND revoke_status = 0 + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/MessageTemplateCountDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/MessageTemplateCountDTO.java new file mode 100644 index 000000000..83923515c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/MessageTemplateCountDTO.java @@ -0,0 +1,26 @@ +package com.cool.store.dto.notice; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/7/26 19:47 + * @Version 1.0 + */ +@Data +public class MessageTemplateCountDTO { + + /** + * 模版ID + */ + private Long templateId; + /** + * 总门店数据 + */ + private Integer totalStoreCount; + /** + * 已处理门店数据 + */ + private Integer processedStoreCount; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/NoticeDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/NoticeDTO.java index 4fe52a1ed..a542abd61 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/NoticeDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/NoticeDTO.java @@ -3,6 +3,9 @@ package com.cool.store.dto.notice; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.persistence.Column; +import java.util.Date; + /** * @Author suzhuhong * @Date 2025/7/25 16:49 @@ -11,17 +14,65 @@ import lombok.Data; @Data public class NoticeDTO { + private Long id ; + @ApiModelProperty("消息编码") private String messageCode; + @ApiModelProperty("模块") private Integer moduleCode; + @ApiModelProperty("事项类型") private Integer matterType; + @ApiModelProperty("消息标题") private String messageTitle; + @ApiModelProperty("系统来源") + private String systemSource; + @ApiModelProperty("处理类型") + private Integer processType; + @ApiModelProperty("提醒") + private Integer remindType; + @ApiModelProperty("提醒时间段 开始时间") + private Date remindStartTime; + + @ApiModelProperty("提醒时间段 结束时间") + private Date remindEndTime; + + @ApiModelProperty("截止日期") + private Date deadline; + + @ApiModelProperty("截止日期") + private Boolean todayTask; + + @ApiModelProperty("发布状态") + private Integer publishStatus; + + @ApiModelProperty("处理完数据") + private Integer handleNum; + @ApiModelProperty("总数") + private Integer totalNum; + + @ApiModelProperty("创建人") + private String createUserId; + + @ApiModelProperty("创建名称") + private String createUserName; + + @ApiModelProperty("总数") + private Date createTime; + + @ApiModelProperty("发布人id") + private String publishUserId; + + @ApiModelProperty("发布人名称") + private String publishUserName; + + @ApiModelProperty("发布人时间") + private Date publishTime; } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchRevokeRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchRevokeRequest.java new file mode 100644 index 000000000..925d7d738 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchRevokeRequest.java @@ -0,0 +1,19 @@ +package com.cool.store.request.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/27 20:07 + * @Version 1.0 + */ +@Data +public class BatchRevokeRequest { + + @ApiModelProperty("批量撤销的消息ID列表") + private List ids; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateAddRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateAddRequest.java index 29ef7850e..a9617c9ac 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateAddRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateAddRequest.java @@ -20,7 +20,7 @@ public class MessageTemplateAddRequest { @ApiModelProperty("模块") private Integer moduleCode; - @ApiModelProperty("事项类型") + @ApiModelProperty("提醒类型") private Integer remindType; @ApiModelProperty("提醒时间段 开始时间 阶段提醒时传") private Date remindStartTime; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateQueryRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateQueryRequest.java new file mode 100644 index 000000000..5d5de1d7c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateQueryRequest.java @@ -0,0 +1,32 @@ +package com.cool.store.request.notice; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/7/26 19:09 + * @Version 1.0 + */ +@Data +public class MessageTemplateQueryRequest extends PageBasicInfo { + + + @ApiModelProperty("模块") + private Integer moduleCode; + @ApiModelProperty("事项类型") + private Integer matterType; + @ApiModelProperty("事项标题") + private String messageTitle; + @ApiModelProperty("今日必办") + private Integer todayTask; + @ApiModelProperty("系统来源") + private String systemSource; + @ApiModelProperty("发布用户ID") + private String publishUserId; + @ApiModelProperty("发布状态") + private Integer publishStatus; + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessageListRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessageListRequest.java new file mode 100644 index 000000000..bde709af2 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessageListRequest.java @@ -0,0 +1,18 @@ +package com.cool.store.request.notice; + +import com.cool.store.common.PageBasicInfo; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/7/27 21:21 + * @Version 1.0 + */ +@Data +public class StoreMessageListRequest extends PageBasicInfo { + + private String storeId; + + private Integer moduleCode; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessagePendingRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessagePendingRequest.java new file mode 100644 index 000000000..825f74169 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessagePendingRequest.java @@ -0,0 +1,32 @@ +package com.cool.store.request.notice; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +/** + * @Author suzhuhong + * @Date 2025/7/27 21:23 + * @Version 1.0 + */ +@Data +public class StoreMessagePendingRequest extends PageBasicInfo { + + private String storeId; + + @ApiModelProperty("待办列表时 不需要传") + private Integer moduleCode; + + @ApiModelProperty("手机号") + @NotEmpty + private String mobile; + + @ApiModelProperty("是否今日必办") + private Integer todayTask; + + @ApiModelProperty("待办标识") + private Integer pendingFlag; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessageRequest.java new file mode 100644 index 000000000..b935d0df2 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/StoreMessageRequest.java @@ -0,0 +1,27 @@ +package com.cool.store.request.notice; + +import com.cool.store.common.PageBasicInfo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/7/26 20:13 + * @Version 1.0 + */ +@Data +public class StoreMessageRequest extends PageBasicInfo { + + @ApiModelProperty("模板ID") + private Long templateId; + + @ApiModelProperty("阅读状态 0未读 1-已读") + private Integer readStatus; + + @ApiModelProperty("处理状态 0未处理 1-已处理") + private Integer processStatus; + + @ApiModelProperty("关键字查询") + private String keyword; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java new file mode 100644 index 000000000..5c94b1610 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageDetailVO.java @@ -0,0 +1,33 @@ +package com.cool.store.vo.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/7/27 21:16 + * @Version 1.0 + */ +@Data +public class MessageDetailVO { + + private Long id; + + @ApiModelProperty("消息标题") + private String messageTitle; + + @ApiModelProperty("消息图片URL") + private String messageImage; + + @ApiModelProperty("消息详情") + private String messageContent; + + @ApiModelProperty("发布时间") + private Date createTime; + + @ApiModelProperty("发布人") + private String publishUserName; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java index 19b675b21..e953a0ccf 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java @@ -41,5 +41,12 @@ public class MessageTemplateDetailVO { List storeInfoList; @ApiModelProperty( "默认处理人信息 type[person position userGroup organization]") List userInfoList; + @ApiModelProperty("发布时间") + private Date publishTime; + @ApiModelProperty("处理完数据") + private Integer handleNum; + @ApiModelProperty("总数") + private Integer totalNum; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/StoreMessageDetailVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/StoreMessageDetailVO.java new file mode 100644 index 000000000..6acc71119 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/StoreMessageDetailVO.java @@ -0,0 +1,102 @@ +package com.cool.store.vo.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/7/26 20:21 + * @Version 1.0 + */ +@Data +public class StoreMessageDetailVO{ + + private Long id; + + /** + * 门店编码 + */ + @ApiModelProperty("门店编码") + private String storeCode; + + /** + * 门店名称 + */ + @ApiModelProperty("门店名称") + private String storeName; + + /** + * 关联的消息模板ID + */ + @ApiModelProperty("关联的消息模板ID") + private Long messageTemplateId; + + /** + * 阅读状态(0:未读 1:已读) + */ + @ApiModelProperty("阅读状态(0:未读 1:已读)") + private Integer readStatus; + + /** + * 阅读时间 + */ + @ApiModelProperty("阅读时间") + private Date readTime; + + /** + * 处理状态(0:未处理 1:处理中) + */ + @ApiModelProperty("处理状态(0:未处理 1:处理中)") + private Integer processStatus; + + /** + * 处理时间 + */ + @ApiModelProperty("处理时间") + private Date processTime; + + /** + * 实际操作人ID + */ + @ApiModelProperty("操作人ID") + private String actualOperatorId; + + /** + * 实际操作人姓名 + */ + @ApiModelProperty("操作人姓名") + private String actualOperatorName; + + /** + * 撤销状态(0:未撤销 1:已撤销) + */ + @ApiModelProperty("撤销状态(0:未撤销 1:已撤销)") + private Boolean revokeStatus; + + /** + * 撤销时间 + */ + @ApiModelProperty("撤销时间") + private Date revokeTime; + + /** + * 撤销操作人ID + */ + @ApiModelProperty("撤销操作人ID") + private String revokeOperatorId; + + /** + * 撤销操作人姓名 + */ + @ApiModelProperty("撤销操作人姓名") + private String revokeOperatorName; + + + + + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/StoreMessageVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/StoreMessageVO.java new file mode 100644 index 000000000..a2bb801db --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/StoreMessageVO.java @@ -0,0 +1,34 @@ +package com.cool.store.vo.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * @Author suzhuhong + * @Date 2025/7/27 21:10 + * @Version 1.0 + */ +@Data +public class StoreMessageVO { + private Long id; + @ApiModelProperty("模版COde") + private Integer moduleCode; + + @ApiModelProperty("模版ID") + private Long templateId; + @ApiModelProperty("已读状态") + private Integer readStatus; + @ApiModelProperty("处理状态") + private Integer processStatus; + + @ApiModelProperty("消息标题") + private String messageTitle; + + @ApiModelProperty("消息图片URL") + private String messageImage; + @ApiModelProperty("发布时间") + private Date createTime; + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/MessageTemplateService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/MessageTemplateService.java index 9c5e175d4..7018f5bbc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/MessageTemplateService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/MessageTemplateService.java @@ -1,10 +1,13 @@ package com.cool.store.service; import com.cool.store.context.LoginUserInfo; -import com.cool.store.request.notice.BatchDeletedRequest; -import com.cool.store.request.notice.BatchPublishRequest; -import com.cool.store.request.notice.MessageTemplateAddRequest; -import com.cool.store.vo.notice.MessageTemplateDetailVO; +import com.cool.store.dto.notice.NoticeDTO; +import com.cool.store.request.notice.*; +import com.cool.store.vo.PartnerUserInfoVO; +import com.cool.store.vo.notice.*; +import com.github.pagehelper.PageInfo; + +import java.util.List; /** * @Author suzhuhong @@ -54,9 +57,40 @@ public interface MessageTemplateService { Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user); + /** + * 获取列表 + * @param request + * @return + */ + PageInfo getMessageTemplateList(MessageTemplateQueryRequest request); + PageInfo getStoreMessageListByTemplateId(StoreMessageRequest request); + /** + * 批量撤销 + * @param request + * @param user + * @return + */ + Boolean batchRevokeNotice(BatchRevokeRequest request, LoginUserInfo user); + + /** + * 撤销单个门店通知 + * @param id + * @param user + * @return + */ + Boolean revokeById(Long id, LoginUserInfo user); + + List getModuleList(String storeId); + + PageInfo getStorePendingList(StoreMessagePendingRequest request); + + MessageDetailVO getMessageDetail(Long id); + + Boolean readMessage(Long id, PartnerUserInfoVO userInfoVO); + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java index 1c2106db8..5c5f3eb06 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java @@ -1,40 +1,43 @@ package com.cool.store.service.impl; +import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONObject; import com.cool.store.context.LoginUserInfo; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.MessageTemplateDAO; import com.cool.store.dao.RegionDao; import com.cool.store.dao.StoreMessageDAO; import com.cool.store.dto.notice.CommonDTO; +import com.cool.store.dto.notice.MessageTemplateCountDTO; +import com.cool.store.dto.notice.NoticeDTO; import com.cool.store.dto.store.AuthStoreUserDTO; import com.cool.store.dto.store.StoreAreaDTO; -import com.cool.store.entity.MessageTemplateDO; -import com.cool.store.entity.RegionDO; -import com.cool.store.entity.StoreGroupMappingDO; -import com.cool.store.entity.StoreMessageDO; +import com.cool.store.entity.*; import com.cool.store.enums.ErrorCodeEnum; -import com.cool.store.enums.notice.ProcessStatusEnum; -import com.cool.store.enums.notice.PublishStatusEnum; -import com.cool.store.enums.notice.ReadStatusEnum; -import com.cool.store.enums.notice.TypeEnum; +import com.cool.store.enums.notice.*; import com.cool.store.exception.ServiceException; import com.cool.store.mapper.StoreGroupMappingMapper; import com.cool.store.mapper.StoreMapper; -import com.cool.store.request.notice.BatchDeletedRequest; -import com.cool.store.request.notice.BatchPublishRequest; -import com.cool.store.request.notice.MessageTemplateAddRequest; +import com.cool.store.request.notice.*; import com.cool.store.service.MessageTemplateService; import com.cool.store.service.StoreService; -import com.cool.store.vo.notice.MessageTemplateDetailVO; +import com.cool.store.utils.CoolDateUtils; +import com.cool.store.vo.PartnerUserInfoVO; +import com.cool.store.vo.notice.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.google.gson.JsonObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.*; +import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; /** @@ -59,6 +62,8 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { StoreService storeService; @Resource StoreMessageDAO storeMessageDAO; + @Resource + EnterpriseUserDAO enterpriseUserDAO; @@ -66,11 +71,20 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { public Boolean addMessageTemplate(MessageTemplateAddRequest request, LoginUserInfo user) { MessageTemplateDO messageTemplateDO = new MessageTemplateDO(); BeanUtils.copyProperties(request, messageTemplateDO); + messageTemplateDO.setMessageCode(getMessageTemplateCode()); + messageTemplateDO.setMatterType(MatterTypeEnum.NOTICE.getCode()); messageTemplateDO.setCreateUserId(user.getUserId()); + messageTemplateDO.setSystemSource("CRM"); messageTemplateDAO.insert(messageTemplateDO); return Boolean.TRUE; } + public String getMessageTemplateCode() { + //当前日期 + String today = CoolDateUtils.getToday(); + return "16" + today + String.format("%04d", ThreadLocalRandom.current().nextInt(10000)); + } + @Override public Boolean editMessageTemplate(MessageTemplateAddRequest request, LoginUserInfo user) { if (request.getId()==null){ @@ -97,6 +111,12 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { BeanUtils.copyProperties(messageTemplateDO, messageTemplateDetailVO); messageTemplateDetailVO.setUserInfoList(JSONObject.parseArray(messageTemplateDO.getHandlePersonInfo(), CommonDTO.class)); messageTemplateDetailVO.setStoreInfoList(JSONObject.parseArray(messageTemplateDO.getStoreInfo(), CommonDTO.class)); + List messageTemplateCountList = storeMessageDAO.getMessageTemplateCountList(Arrays.asList(messageTemplateDO.getId())); + + if (CollectionUtils.isNotEmpty(messageTemplateCountList)){ + messageTemplateDetailVO.setTotalNum(messageTemplateCountList.get(0).getTotalStoreCount()); + messageTemplateDetailVO.setHandleNum(messageTemplateCountList.get(0).getProcessedStoreCount()); + } return messageTemplateDetailVO; } @@ -118,6 +138,7 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { if (CollectionUtils.isEmpty(request.getIds())||CollectionUtils.isEmpty(request.getStoreInfoList())||CollectionUtils.isEmpty(request.getUserInfoList())){ throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } + List storeAreaDTOS = getStoreRange(request.getStoreInfoList()); List storeIds = storeAreaDTOS.stream().map(StoreAreaDTO::getStoreId).collect(Collectors.toList()); @@ -127,6 +148,10 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { //过滤 只保留未发布的 list = list.stream().filter(x -> PublishStatusEnum.UNPUBLISHED.getCode().equals(x.getPublishStatus())).collect(Collectors.toList()); + if (CollUtil.isEmpty(list)){ + log.info("未找到待发布消息模板"); + } + list.stream().forEach(x -> { List result = new ArrayList<>(); storeAreaDTOS.forEach(y->{ @@ -136,6 +161,7 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { } StoreMessageDO storeMessageDO = new StoreMessageDO(); storeMessageDO.setStoreId(y.getStoreId()); + storeMessageDO.setStoreName(y.getStoreName()); storeMessageDO.setStoreCode(y.getStoreCode()); storeMessageDO.setMessageTemplateId(x.getId()); storeMessageDO.setReadStatus(ReadStatusEnum.UNREAD.getCode()); @@ -148,24 +174,166 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { }); storeMessageDAO.batchInsert(result); }); + + List updateIds = list.stream().map(MessageTemplateDO::getId).collect(Collectors.toList()); + messageTemplateDAO.batchUpdateStoreInfoAndUserInfo(updateIds, + JSONObject.toJSONString(request.getStoreInfoList()), + JSONObject.toJSONString(request.getUserInfoList()), + user.getUserId()); return Boolean.TRUE; } + @Override + public PageInfo getMessageTemplateList(MessageTemplateQueryRequest request) { + PageHelper.startPage(request.getPageNum(), request.getPageSize()); + List list = messageTemplateDAO.getMessageTemplateList(request); + if (CollectionUtils.isEmpty(list)){ + return new PageInfo<>(list); + } + //将列表中的创建人id与发布人id 放到同一个list 去重 + Set userIdSet = new HashSet<>(); + list.forEach(notice -> { + if (notice.getCreateUserId() != null) { + userIdSet.add(String.valueOf(notice.getCreateUserId())); + } + if (notice.getPublishUserId() != null) { + userIdSet.add(String.valueOf(notice.getPublishUserId())); + } + }); + + List uniqueUserIds = new ArrayList<>(userIdSet); + List userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(uniqueUserIds); + Map userMap = userInfoByUserIds.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName)); + + + List templateIds = list.stream().map(NoticeDTO::getId).collect(Collectors.toList()); + List messageTemplateCountList = storeMessageDAO.getMessageTemplateCountList(templateIds); + //根据模板id查询 转为map + Map messageTemplateCountMap = messageTemplateCountList.stream().collect(Collectors.toMap(MessageTemplateCountDTO::getTemplateId, x -> x)); + list.forEach(x -> { + x.setCreateUserName(userMap.get(x.getCreateUserId())); + x.setPublishUserName(userMap.get(x.getPublishUserId())); + MessageTemplateCountDTO count = messageTemplateCountMap.getOrDefault(x.getId(), new MessageTemplateCountDTO()); + x.setHandleNum(count.getProcessedStoreCount()); + x.setTotalNum(count.getTotalStoreCount()); + }); + return new PageInfo<>(list); + } + + @Override + public PageInfo getStoreMessageListByTemplateId(StoreMessageRequest request) { + PageHelper.startPage(request.getPageNum(),request.getPageSize()); + List list = storeMessageDAO.getStoreMessageList(request); + if (CollectionUtils.isEmpty(list)){ + return new PageInfo<>(); + } + StoreMessageDetailVO storeMessageDetailVO = new StoreMessageDetailVO(); + List result = new ArrayList<>(); + list.forEach(x->{ + BeanUtils.copyProperties(x,storeMessageDetailVO); + result.add(storeMessageDetailVO); + }); + PageInfo storeMessageDOPageInfo = new PageInfo<>(list); + storeMessageDOPageInfo.setList(result); + return storeMessageDOPageInfo; + } + + @Override + public Boolean batchRevokeNotice(BatchRevokeRequest request, LoginUserInfo user) { + log.info("batchRevokeNotice request:{}", JSONObject.toJSONString(request)); + List ids = request.getIds(); + if (ids == null || ids.size() == 0) { + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + //将消息置为撤销状态 + messageTemplateDAO.batchUpdatePublishStatus(ids); + //将门店未处理的消息置为撤销状态 已处理和撤销的保持不变 + storeMessageDAO.batchRevoke(ids, user.getUserId(), user.getName()); + return Boolean.TRUE; + } + + @Override + public Boolean revokeById(Long id, LoginUserInfo user) { + //查询门店消息 + StoreMessageDO storeMessage = storeMessageDAO.getById(id); + if (storeMessage == null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); + } + if (RevokeStatusEnum.REVOKE.getCode().equals(storeMessage.getRevokeStatus())){ + throw new ServiceException(ErrorCodeEnum.STORE_MESSAGE_REVOKE); + } + if (ProcessStatusEnum.PROCESSED.getCode().equals(storeMessage.getProcessStatus())){ + throw new ServiceException(ErrorCodeEnum.STORE_MESSAGE_HANDLED); + } + storeMessageDAO.revokeById(id,user.getUserId(),user.getName()); + return Boolean.TRUE; + } + + @Override + public List getModuleList(String storeId) { + List moduleAndMatterList = ModuleAndMatterVO.getModuleAndMatterList(); + List list= new ArrayList<>(); + moduleAndMatterList.forEach(x->{ + Integer integer = storeMessageDAO.queryStoreModuleCount(storeId, x.getModuleCode()); + if (integer > 0){ + list.add(x); + } + }); + return list; + } + + @Override + public PageInfo getStorePendingList(StoreMessagePendingRequest request) { + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(request.getMobile()); + PageHelper.startPage(request.getPageNum(), request.getPageSize()); + List storeMessageListByCondition = storeMessageDAO.getStoreMessageListByCondition(request.getStoreId(), request.getModuleCode(), + request.getTodayTask(), request.getPendingFlag(), enterpriseUserDO.getUserId()); + return new PageInfo<>(storeMessageListByCondition); + } + + @Override + public MessageDetailVO getMessageDetail(Long id) { + MessageDetailVO messageDetailVO = storeMessageDAO.getMessageDetail(id); + return messageDetailVO; + } + + @Override + public Boolean readMessage(Long id, PartnerUserInfoVO userInfoVO) { + StoreMessageDO message = storeMessageDAO.getById(id); + if (ProcessStatusEnum.PROCESSED.getCode().equals(message.getProcessStatus())){ + log.info("当前消息已读已处理:{}",JSONObject.toJSONString( message)); + return Boolean.TRUE; + } + message.setReadStatus(ProcessStatusEnum.PROCESSED.getCode()); + message.setReadTime(new Date()); + MessageTemplateDO template = messageTemplateDAO.getById(message.getMessageTemplateId()); + if (ProcessTypeEnum.READ.getCode().equals(template.getProcessType())){ + message.setProcessStatus(ProcessStatusEnum.PROCESSED.getCode()); + message.setProcessTime(new Date()); + EnterpriseUserDO enterpriseUserDO = enterpriseUserDAO.selectByMobile(userInfoVO.getMobile()); + if (enterpriseUserDO != null){ + message.setActualOperatorId(enterpriseUserDO.getId()); + message.setActualOperatorName(enterpriseUserDO.getName()); + } + } + storeMessageDAO.update( message); + return Boolean.TRUE; + } public Map> getAuthUser(List personInfo, List storeIds){ if (CollectionUtils.isEmpty(personInfo)){ return new HashMap<>(); } - List personIds = personInfo.stream().filter(x -> TypeEnum.PERSON.equals(x.getType())) + List personIds = personInfo.stream().filter(x -> TypeEnum.PERSON.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); - List positionIds = personInfo.stream().filter(x -> TypeEnum.POSITION.equals(x.getType())) + List positionIds = personInfo.stream().filter(x -> TypeEnum.POSITION.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); - List groupIdList = personInfo.stream().filter(x -> TypeEnum.USER_GROUP.equals(x.getType())) + List groupIdList = personInfo.stream().filter(x -> TypeEnum.USER_GROUP.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); - List regionIdList = personInfo.stream().filter(x -> TypeEnum.ORGANIZATION.equals(x.getType())) + List regionIdList = personInfo.stream().filter(x -> TypeEnum.ORGANIZATION.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); //权限 List authStoreUserList = storeService.getStorePositionUserList(storeIds, positionIds, personIds, groupIdList, regionIdList); @@ -183,7 +351,7 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { * @return */ private List getStoreRange( List commonDTOS){ - List regionIds = commonDTOS.stream().filter(x -> TypeEnum.REGION.equals(x.getType())) + List regionIds = commonDTOS.stream().filter(x -> TypeEnum.REGION.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); List regionDOsByRegionIds = new ArrayList<>(); @@ -196,13 +364,13 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { List storeAreaDTOS = storeMapper.listStoreByRegionPathList(regionFullRegionPathList); storeIdSet = storeAreaDTOS.stream().map(StoreAreaDTO::getStoreId).collect(Collectors.toSet()); } - List storeIdList = commonDTOS.stream().filter(x -> TypeEnum.STORE.equals(x.getType())) + List storeIdList = commonDTOS.stream().filter(x -> TypeEnum.STORE.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(storeIdList)){ //将寻找的门店添加到set中 storeIdSet.addAll(storeIdList); } - List groupList = commonDTOS.stream().filter(x -> TypeEnum.GROUP.equals(x.getType())) + List groupList = commonDTOS.stream().filter(x -> TypeEnum.GROUP.getType().equals(x.getType())) .map(CommonDTO::getValue).collect(Collectors.toList()); //分组 if (CollectionUtils.isNotEmpty(groupList)) { diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MessageTemplateController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MessageTemplateController.java index ffed39ac0..844707065 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MessageTemplateController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MessageTemplateController.java @@ -1,13 +1,13 @@ package com.cool.store.controller.webb; import com.cool.store.context.CurrentUserHolder; -import com.cool.store.request.notice.BatchDeletedRequest; -import com.cool.store.request.notice.BatchPublishRequest; -import com.cool.store.request.notice.MatterConfigAddRequest; -import com.cool.store.request.notice.MessageTemplateAddRequest; +import com.cool.store.dto.notice.NoticeDTO; +import com.cool.store.request.notice.*; import com.cool.store.response.ResponseResult; import com.cool.store.service.MessageTemplateService; import com.cool.store.vo.notice.MessageTemplateDetailVO; +import com.cool.store.vo.notice.StoreMessageDetailVO; +import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -58,9 +58,33 @@ public class MessageTemplateController { @PostMapping("/batchPublish") @ApiOperation("批量发布") - public ResponseResult editMessageTemplate(@RequestBody BatchPublishRequest request) { + public ResponseResult batchPublishMessageTemplate(@RequestBody BatchPublishRequest request) { return ResponseResult.success(messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser())); } + @PostMapping("/getMessageTemplateList") + @ApiOperation("通知管理列表/事项管理列表") + public ResponseResult> getMessageTemplateList(@RequestBody MessageTemplateQueryRequest request) { + return ResponseResult.success(messageTemplateService.getMessageTemplateList(request)); + } + + @PostMapping("/getStoreMessageListByTemplateId") + @ApiOperation("进度管理") + public ResponseResult> getStoreMessageListByTemplateId(@RequestBody StoreMessageRequest request) { + return ResponseResult.success(messageTemplateService.getStoreMessageListByTemplateId(request)); + } + + @PostMapping("/batchRevokeNotice") + @ApiOperation("进度管理") + public ResponseResult batchRevokeNotice(@RequestBody BatchRevokeRequest request) { + return ResponseResult.success(messageTemplateService.batchRevokeNotice(request,CurrentUserHolder.getUser())); + } + + @ApiOperation("撤销单个门店消息") + @GetMapping("/revokeById") + public ResponseResult revokeById(@RequestParam("id")Long id) { + return ResponseResult.success(messageTemplateService.revokeById(id,CurrentUserHolder.getUser())); + } + } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniMessageTemplateController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniMessageTemplateController.java new file mode 100644 index 000000000..6139d371e --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniMessageTemplateController.java @@ -0,0 +1,59 @@ +package com.cool.store.controller.webc; + +import com.cool.store.context.CurrentUserHolder; +import com.cool.store.context.PartnerUserHolder; +import com.cool.store.request.notice.StoreMessagePendingRequest; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.MessageTemplateService; +import com.cool.store.vo.notice.MessageDetailVO; +import com.cool.store.vo.notice.ModuleAndMatterVO; +import com.cool.store.vo.notice.StoreMessageVO; +import com.github.pagehelper.PageInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/27 21:04 + * @Version 1.0 + */ +@RestController +@RequestMapping("/mini/notice") +@Api(tags = "mini事项/通知管理") +@Slf4j +public class MiniMessageTemplateController { + + @Resource + private MessageTemplateService messageTemplateService; + + @ApiOperation("获取每个门店需要展示的模块") + @GetMapping("/getModuleListByStoreId") + public ResponseResult> getModuleListByStoreId(@RequestParam("id")String storeId) { + return ResponseResult.success(messageTemplateService.getModuleList(storeId)); + } + + @ApiOperation("获取消息详情") + @GetMapping("/getMessageDetail") + public ResponseResult getMessageDetail(@RequestParam("id")Long id) { + return ResponseResult.success(messageTemplateService.getMessageDetail(id)); + } + + @ApiOperation("待办列表/模块列表") + @GetMapping("/getStorePendingList") + public ResponseResult> getStorePendingList(@RequestBody StoreMessagePendingRequest request) { + return ResponseResult.success(messageTemplateService.getStorePendingList(request)); + } + + @ApiOperation("确认已读") + @GetMapping("/readMessage") + public ResponseResult readMessage(@RequestParam("id")Long id) { + return ResponseResult.success(messageTemplateService.readMessage(id, PartnerUserHolder.getUser())); + } + + +}