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 d59f1e384..cfc810c3a 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 @@ -298,6 +298,10 @@ public enum ErrorCodeEnum { MESSAGE_TEMPLATE_NOT_SUPPORT_DELETED(1610002,"只有未发布的消息能删除,请确认!",null), STORE_MESSAGE_REVOKE(1610003,"当前门店消息已撤销,请务重复操作",null), STORE_MESSAGE_HANDLED(1610004,"当前门店消息已处理,无法撤销!",null), + MATTER_STORE_OR_USER_IS_NULL(1610005,"当前事项门店或者人员为空,发布失败,请确认!",null), + CONFIG_NOT_EXIST(1610006,"配置不存在或被禁用,请确认!",null), + MESSAGE_NOT_EXIST(1610007,"消息模板不存在或已被删除",null), + MESSAGE_NOT_HANDLED(1610008,"当前消息无需处理,请确认消息处理类型!",null), NOT_FLAGSHIP_STORE(16100005,"非直营店,无法跳过缴费阶段!",null), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/MatterTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/MatterTypeEnum.java index 9d94dde40..bcc9697d8 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/MatterTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/MatterTypeEnum.java @@ -10,6 +10,10 @@ public enum MatterTypeEnum { QUESTION(0,"门店违规工单"), LICENSE(1,"证照过期提醒"), NOTICE(2,"通知消息"), + LOGISTICS(3,"物流"), + SERVICE_PACKAGE(4,"服务包"), + RESTOCK(5,"补货"), + INVENTORY(6,"盘点"), ; MatterTypeEnum(Integer code, String message) { diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/ModuleCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/ModuleCodeEnum.java index 22b696bcf..3bfa89f8a 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/ModuleCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/ModuleCodeEnum.java @@ -10,10 +10,13 @@ import java.util.List; */ public enum ModuleCodeEnum { - STORE_WORK(0,"店务", Arrays.asList(MatterTypeEnum.QUESTION,MatterTypeEnum.LICENSE,MatterTypeEnum.NOTICE)), - PRODUCT_UPDATE(1,"营销政策/产品上新",Arrays.asList(MatterTypeEnum.NOTICE)), - INVENTORY_MODULE(2,"库存模块",Arrays.asList(MatterTypeEnum.NOTICE)), + STORE_WORK(0,"店务日清/培训", Arrays.asList(MatterTypeEnum.QUESTION,MatterTypeEnum.LICENSE)), + PRODUCT_UPDATE(1,"营销政策/产品上新",Arrays.asList(MatterTypeEnum.SERVICE_PACKAGE)), + INVENTORY_MODULE(2,"原料订货与库存管理",Arrays.asList(MatterTypeEnum.RESTOCK,MatterTypeEnum.INVENTORY,MatterTypeEnum.LOGISTICS)), DISH(3,"菜品",Arrays.asList(MatterTypeEnum.NOTICE)), + FRANCHISE(4,"加盟",Arrays.asList(MatterTypeEnum.NOTICE)), + //其他(投诉与客户服务、临时通知) + OTHER(5,"其他",Arrays.asList(MatterTypeEnum.NOTICE)), ; ModuleCodeEnum(Integer code, String message,List matterTypeEnums) { diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/RemindTypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/RemindTypeEnum.java index 86edff063..435e7078a 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/RemindTypeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/RemindTypeEnum.java @@ -7,8 +7,8 @@ package com.cool.store.enums.notice; */ public enum RemindTypeEnum { - CONTINUOUS_REMINDER(0,"持续提醒"), - STAGE_REMINDER(1,"阶段提醒"), + CONTINUOUS_REMINDER(1,"持续提醒"), + STAGE_REMINDER(2,"阶段提醒"), ; RemindTypeEnum(Integer code, String message) { diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/SceneEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/SceneEnum.java new file mode 100644 index 000000000..d5fc87540 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/SceneEnum.java @@ -0,0 +1,85 @@ +package com.cool.store.enums.notice; + +/** + * @Author suzhuhong + * @Date 2025/8/26 15:43 + * @Version 1.0 + */ +public enum SceneEnum { + + SUBMIT_ORDER(0, "提交订单", "https://oss-cool.coolstore.cn/eid/214ac5a3a517472a87268e02a2e6410a/2508/j_l6em.jpg", MatterTypeEnum.LOGISTICS), + ASSIGNED_PICKING(5, "已分配拣货", "https://oss-cool.coolstore.cn/eid/214ac5a3a517472a87268e02a2e6410a/2508/YLjBkv.jpg", MatterTypeEnum.LOGISTICS), + PICKING_COMPLETED(10, "拣货完成", "https://oss-cool.coolstore.cn/eid/214ac5a3a517472a87268e02a2e6410a/2508/gG9Y-h.jpg", MatterTypeEnum.LOGISTICS), + SHIPPED(15, "已出库", "https://oss-cool.coolstore.cn/eid/214ac5a3a517472a87268e02a2e6410a/2508/Ehz8_n.jpg", MatterTypeEnum.LOGISTICS), + DELIVERY_IN_PROGRESS(20, "配送中", "https://oss-cool.coolstore.cn/eid/214ac5a3a517472a87268e02a2e6410a/2508/I6bAmA.jpg", MatterTypeEnum.LOGISTICS), + ORDER_SIGNING_AND_ACCEPTANCE(25, "订单签收", "https://oss-cool.coolstore.cn/eid/214ac5a3a517472a87268e02a2e6410a/2508/0z7jkU.jpg", MatterTypeEnum.LOGISTICS), + + SERVICE_PACKAGE(30, "服务包", "", MatterTypeEnum.LOGISTICS), + RESTOCK(35, "补货", "", MatterTypeEnum.LOGISTICS), + INVENTORY(40, "盘点", "", MatterTypeEnum.LOGISTICS), + + ; + + private Integer sceneCode; + + private String sceneName; + + private String scenePicture; + + private MatterTypeEnum matterTypeEnum; + + + public Integer getSceneCode() { + return sceneCode; + } + + public void setSceneCode(Integer sceneCode) { + this.sceneCode = sceneCode; + } + + public String getSceneName() { + return sceneName; + } + + public void setSceneName(String sceneName) { + this.sceneName = sceneName; + } + + public String getScenePicture() { + return scenePicture; + } + + public void setScenePicture(String scenePicture) { + this.scenePicture = scenePicture; + } + + public MatterTypeEnum getMatterTypeEnum() { + return matterTypeEnum; + } + + public void setMatterTypeEnum(MatterTypeEnum matterTypeEnum) { + this.matterTypeEnum = matterTypeEnum; + } + + SceneEnum(Integer sceneCode, String sceneName, String scenePicture, MatterTypeEnum matterTypeEnum) { + this.sceneCode = sceneCode; + this.sceneName = sceneName; + this.scenePicture = scenePicture; + this.matterTypeEnum = matterTypeEnum; + } + + /** + * 通过code获取枚举 + * @param code + * @return + */ + public static SceneEnum getByCode(Integer code) { + for (SceneEnum value : values()) { + if (value.sceneCode.equals(code)) { + return value; + } + } + return null; + } + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java index 6a25575c2..8cde88a4d 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/EnterpriseUserDAO.java @@ -56,6 +56,13 @@ public class EnterpriseUserDAO { return enterpriseUserMapper.getUserInfoByUserIds(userIdList); } + public List getUserInfoByUserMobileList(List mobileList) { + if (CollectionUtils.isEmpty(mobileList)) { + return Lists.newArrayList(); + } + return enterpriseUserMapper.getUserInfoByUserMobileList(mobileList); + } + public List searchUserByRegionIdsAndKeyword(List regionIds, String keyword, List leaderRegionIds) { if (CollectionUtils.isEmpty(regionIds)) { return Lists.newArrayList(); 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 904343a6d..e19a60678 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 @@ -71,6 +71,13 @@ public class MessageTemplateDAO { return messageTemplateMapper.batchUpdatePublishStatus(ids); } + public MessageTemplateDO getByKeyword(String keyword) { + if (keyword == null){ + return null; + } + return messageTemplateMapper.getByKeyword(keyword); + } + } 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 888cec788..6162e7f78 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 @@ -87,4 +87,11 @@ public class StoreMessageDAO { public MessageDetailVO getMessageDetail(Long id){ return storeMessageMapper.getMessageDetail(id); } + + public Integer batchUpdateHandle(Long id, List storeCodeList){ + if (id==null||CollectionUtils.isEmpty(storeCodeList)){ + return 0; + } + return storeMessageMapper.batchUpdateHandle(id,storeCodeList); + } } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java index 84f81fe74..8ccd2bb57 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserMapper.java @@ -32,6 +32,8 @@ public interface EnterpriseUserMapper { */ List getUserInfoByUserIds( @Param("userIdList") List userIdList); + List getUserInfoByUserMobileList( @Param("mobileList") List mobileList); + /** * 根据关键字搜索部门下的用户 * @param regionIds 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 d038d22cf..c416bec72 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 @@ -3,6 +3,7 @@ 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.entity.StoreMessageDO; import com.cool.store.request.notice.MessageTemplateQueryRequest; import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; @@ -25,6 +26,11 @@ public interface MessageTemplateMapper extends Mapper { int batchUpdatePublishStatus(@Param("ids") List ids); - + /** + * 根据关键词查询 + * @param keyword + * @return + */ + MessageTemplateDO getByKeyword(@Param("keyword") String keyword); } \ 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 54a01ecf9..96e983250 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 @@ -35,4 +35,11 @@ public interface StoreMessageMapper extends Mapper { MessageDetailVO getMessageDetail(Long id); + /** + * 批量更新处理 + * @param id + * @param storeCodeList + */ + int batchUpdateHandle(@Param("id") Long id, @Param("storeCodeList") List storeCodeList); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml index 20fffcf0a..26e3a697a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml @@ -82,6 +82,21 @@ + + + SELECT + * + FROM zxjp_message_template + WHERE deleted = 0 + + AND handle_keyword = #{keyword,jdbcType=VARCHAR} + + + \ 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 ff44f4388..05b594ebf 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml @@ -160,9 +160,12 @@ a.process_status as processStatus, a.create_time as createTime, b.module_code as moduleCode, + b.matter_type as matterType, b.message_title as messageTitle, b.message_image as messageImage, - b.today_task as todayTask + b.today_task as todayTask, + b.jump_type as jumpType, + b.jump_url as jumpUrl from zxjp_store_message a left join zxjp_message_template b on a.message_template_id = b.id @@ -213,6 +216,24 @@ a.id = #{id} + + UPDATE zxjp_store_message + SET + process_status = 1, + process_time = NOW(), + read_status = 1, + read_time = NOW(), + update_time = NOW() + + + AND message_template_id = #{id} + + and store_code IN + + #{item} + + + 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 76f35729e..acfc00cbb 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 @@ -75,4 +75,12 @@ public class NoticeDTO { @ApiModelProperty("发布人时间") private Date publishTime; + private String handlePersonInfo; + + private String storeInfo; + + private Integer jumpType; + + private String jumpUrl; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/MessageTemplateDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/MessageTemplateDO.java index fc0f7b28b..578191ad3 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/MessageTemplateDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/MessageTemplateDO.java @@ -151,5 +151,13 @@ public class MessageTemplateDO { @Column(name = "store_info") private String storeInfo; + @Column(name = "jump_type") + private Integer jumpType; + @Column(name = "jump_url") + private String jumpUrl; + + @Column(name = "handle_keyword") + private String handleKeyword; + } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigAddRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigAddRequest.java index 788ff839a..74c2d05b8 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigAddRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigAddRequest.java @@ -28,13 +28,13 @@ public class MatterConfigAddRequest { private String systemSource; @ApiModelProperty( "1:H5 2:小程序") - private Boolean jumpType; + private Integer jumpType; @ApiModelProperty( "跳转链接") private String jumpUrl; @ApiModelProperty( "状态(0:禁用 1:启用)") - private Boolean status; + private Integer status; @ApiModelProperty( "备注") private String remark; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/ThirdHandleMessageRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/ThirdHandleMessageRequest.java new file mode 100644 index 000000000..1ce35b465 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/ThirdHandleMessageRequest.java @@ -0,0 +1,26 @@ +package com.cool.store.request.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/8/29 11:10 + * @Version 1.0 + */ +@Data +public class ThirdHandleMessageRequest { + + @ApiModelProperty("发起任务时 传的handleKeyword") + @NotBlank(message = "handleKeyword不能为空") + private String handleKeyword; + + @ApiModelProperty("门店编码列表") + @NotNull(message = "门店编码列表不能为空") + private List shopCodeList; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/ThirdMatterRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/ThirdMatterRequest.java new file mode 100644 index 000000000..49e08d99e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/ThirdMatterRequest.java @@ -0,0 +1,66 @@ +package com.cool.store.request.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.Date; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/8/26 16:10 + * @Version 1.0 + */ +@Data +public class ThirdMatterRequest { + + @ApiModelProperty("0-提交订单 5-已分配拣货 10-拣货完成 15-已出库 20-配送中 25-订单签收 30-服务包发布 35-补货 40-盘点通知 ") + @NotNull(message = "场景不能为空") + private Integer sceneCode; + + @ApiModelProperty("事项配置ID CRM配置好部分信息 找CRM提供") + @NotNull(message = "事项配置ID不能为空") + private Long matterConfigId; + + @ApiModelProperty("事项标题") + @NotBlank(message = "事项标题不能为空") + private String matterTitle; + + @ApiModelProperty("处理类型(1:仅阅读 2:需要处理)") + @NotNull(message = "处理类型不能为空") + private Integer processType; + + @ApiModelProperty("提醒类型(1:持续提醒 2:阶段提醒)") + @NotNull(message = "提醒类型不能为空") + private Integer remindType; + + @ApiModelProperty("阶段提醒时 需要设置时间范围 开始时间") + private Date remindStartTime; + + @ApiModelProperty("阶段提醒时 需要设置时间范围 结束时间") + private Date remindEndTime; + + @ApiModelProperty("截止时间") + private Date deadline; + + @ApiModelProperty("今日必办标识 0非必办 1必办") + @NotNull(message = "今日必办标识不能为空") + private Integer todayTask; + + @ApiModelProperty("消息图片URL 物流crm自动匹配 无需传递") + private String messageImage; + + @ApiModelProperty("门店范围 如果不传 默认取matterConfigId对应的门店范围 如果都没有 任务处于待发布状态") + List shopCodeList; + + @ApiModelProperty("手机号列表 如果不传 默认取matterConfigId配置的人员信息 如果都没有 任务处于待发布状态") + List mobileList; + + private String jumpUrl; + + @ApiModelProperty("处理关键字 针对processType需要处理的字段 需要传递该关键字识别 注意 每个批次门店任务keyword不能重复") + private String handleKeyword; + +} 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 index 4d614441c..4ab7d262e 100644 --- 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 @@ -13,9 +13,11 @@ import java.util.Date; @Data public class StoreMessageVO { private Long id; - @ApiModelProperty("模版COde") + @ApiModelProperty("模版Code") private Integer moduleCode; + private Integer matterType; + @ApiModelProperty("模版ID") private Long templateId; @ApiModelProperty("已读状态") @@ -33,4 +35,10 @@ public class StoreMessageVO { @ApiModelProperty("今日必办") private Integer todayTask; + private Integer jumpType; + + private String jumpUrl; + + private String resource; + } 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 dd9424a70..567103c82 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 @@ -3,6 +3,7 @@ package com.cool.store.service; import com.cool.store.context.LoginUserInfo; import com.cool.store.dto.notice.NoticeDTO; import com.cool.store.request.notice.*; +import com.cool.store.response.bigdata.ApiResponse; import com.cool.store.vo.PartnerUserInfoVO; import com.cool.store.vo.notice.*; import com.github.pagehelper.PageInfo; @@ -51,11 +52,17 @@ public interface MessageTemplateService { /** * batch 批量发布 * @param request - * @param user + * @param userId * @return */ - Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user); + Boolean batchPublishMessageTemplate(BatchPublishRequest request, String userId); + /** + * thirdMatterHandle 第三方接口处理 + * @param thirdMatterRequest + * @return + */ + ApiResponse thirdMatterHandle(ThirdMatterRequest thirdMatterRequest); /** * 获取列表 @@ -95,4 +102,5 @@ public interface MessageTemplateService { Boolean handleMessage(Long id, PartnerUserInfoVO userInfoVO); + ApiResponse thirdHandleMessage(ThirdHandleMessageRequest request); } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java index 4875e39fe..1dbc6b7d6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MatterConfigServiceImpl.java @@ -5,6 +5,8 @@ import com.cool.store.context.LoginUserInfo; import com.cool.store.dao.MatterConfigDAO; import com.cool.store.dto.notice.CommonDTO; import com.cool.store.entity.MatterConfigDO; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; import com.cool.store.request.notice.MatterConfigAddRequest; import com.cool.store.request.notice.MatterConfigQueryRequest; import com.cool.store.service.MatterConfigService; @@ -36,13 +38,20 @@ public class MatterConfigServiceImpl implements MatterConfigService { MatterConfigDO matterConfigDO = new MatterConfigDO(); BeanUtils.copyProperties(request, matterConfigDO); matterConfigDO.setCreateUserId(currentUser.getUserId()); - matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList())); - matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList())); + if (CollectionUtils.isNotEmpty(request.getStoreInfoList())){ + matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList())); + } + if (CollectionUtils.isNotEmpty(request.getUserInfoList())){ + matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList())); + } return matterConfigDAO.insert(matterConfigDO); } @Override public int editMatterConfig(MatterConfigAddRequest request, LoginUserInfo currentUser) { + if (request.getId() == null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } MatterConfigDO matterConfigDO = new MatterConfigDO(); BeanUtils.copyProperties(request, matterConfigDO); matterConfigDO.setUpdateUserId(currentUser.getUserId()); 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 e321196a6..4f5b1021f 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 @@ -4,10 +4,7 @@ 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.dao.*; import com.cool.store.dto.notice.CommonDTO; import com.cool.store.dto.notice.MessageTemplateCountDTO; import com.cool.store.dto.notice.NoticeDTO; @@ -20,6 +17,7 @@ import com.cool.store.exception.ServiceException; import com.cool.store.mapper.StoreGroupMappingMapper; import com.cool.store.mapper.StoreMapper; import com.cool.store.request.notice.*; +import com.cool.store.response.bigdata.ApiResponse; import com.cool.store.service.MessageTemplateService; import com.cool.store.service.StoreService; import com.cool.store.utils.CoolDateUtils; @@ -65,6 +63,8 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { StoreMessageDAO storeMessageDAO; @Resource EnterpriseUserDAO enterpriseUserDAO; + @Resource + MatterConfigDAO matterConfigDAO; @@ -135,7 +135,7 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { @Override - public Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user) { + public Boolean batchPublishMessageTemplate(BatchPublishRequest request, String userId) { if (CollectionUtils.isEmpty(request.getIds())||CollectionUtils.isEmpty(request.getStoreInfoList())||CollectionUtils.isEmpty(request.getUserInfoList())){ throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED); } @@ -180,11 +180,107 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { messageTemplateDAO.batchUpdateStoreInfoAndUserInfo(updateIds, JSONObject.toJSONString(request.getStoreInfoList()), JSONObject.toJSONString(request.getUserInfoList()), - user.getUserId()); + userId); return Boolean.TRUE; } + @Override + @Transactional(rollbackFor = Exception.class) + public ApiResponse thirdMatterHandle(ThirdMatterRequest thirdMatterRequest) { + log.info("thirdMatterHandle request:{}", JSONObject.toJSONString(thirdMatterRequest)); + //第三方事项处理 + MatterConfigDO matterConfig = matterConfigDAO.getById(thirdMatterRequest.getMatterConfigId()); + if (matterConfig==null||matterConfig.getStatus()==0){ + return ApiResponse.error(ErrorCodeEnum.CONFIG_NOT_EXIST); + } + //封装事项模版 + MessageTemplateDO messageTemplateDO = new MessageTemplateDO(); + messageTemplateDO.setMessageCode(getMessageTemplateCode()); + messageTemplateDO.setModuleCode(matterConfig.getModuleCode()); + messageTemplateDO.setMatterType(matterConfig.getMatterType()); + messageTemplateDO.setMessageTitle(thirdMatterRequest.getMatterTitle()); + messageTemplateDO.setSystemSource(matterConfig.getSystemSource()); + messageTemplateDO.setProcessType(thirdMatterRequest.getProcessType()); + messageTemplateDO.setRemindType(thirdMatterRequest.getRemindType()); + if (RemindTypeEnum.STAGE_REMINDER.getCode().equals(thirdMatterRequest.getRemindType())){ + messageTemplateDO.setRemindStartTime(thirdMatterRequest.getRemindStartTime()); + messageTemplateDO.setRemindEndTime(thirdMatterRequest.getRemindEndTime()); + } + messageTemplateDO.setDeadline(thirdMatterRequest.getDeadline()); + messageTemplateDO.setTodayTask(thirdMatterRequest.getTodayTask()); + messageTemplateDO.setMessageImage(thirdMatterRequest.getMessageImage()); + messageTemplateDO.setPublishStatus(PublishStatusEnum.UNPUBLISHED.getCode()); + messageTemplateDO.setJumpType(matterConfig.getJumpType()); + messageTemplateDO.setJumpUrl(matterConfig.getJumpUrl()); + messageTemplateDO.setHandleKeyword(thirdMatterRequest.getHandleKeyword()); + + if (MatterTypeEnum.LOGISTICS.getCode().equals(matterConfig.getMatterType())){ + SceneEnum scene = SceneEnum.getByCode(thirdMatterRequest.getSceneCode()); + messageTemplateDO.setMessageImage(scene.getScenePicture()); + //物流直接使用传过来的地址 + messageTemplateDO.setJumpUrl(thirdMatterRequest.getJumpUrl()); + } + //如果是盘点 截止日期去当天 + if (MatterTypeEnum.INVENTORY.getCode().equals(matterConfig.getMatterType())){ + messageTemplateDO.setDeadline(new Date()); + } + String storeInfo = matterConfig.getDefaultStoreInfo(); + String userInfo = matterConfig.getDefaultHandlePersonInfo(); + //门店 + if (CollectionUtils.isNotEmpty(thirdMatterRequest.getShopCodeList())){ + log.info("shopCodeList:{}",JSONObject.toJSONString(thirdMatterRequest.getShopCodeList())); + List storeNumByStoreCodes = storeMapper.getStoreNumByStoreCodes(thirdMatterRequest.getShopCodeList()); + if (CollectionUtils.isNotEmpty(storeNumByStoreCodes)){ + //组装成门店信息 + List storeList = new ArrayList<>(); + storeNumByStoreCodes.forEach(x -> { + CommonDTO store = new CommonDTO("store", x.getStoreId(), x.getStoreName()); + storeList.add(store); + }); + storeInfo = JSONObject.toJSONString(storeList); + } + } + //人员 + List userInfoByUserMobileList = enterpriseUserDAO.getUserInfoByUserMobileList(thirdMatterRequest.getMobileList()); + if (CollectionUtils.isNotEmpty(userInfoByUserMobileList)){ + //组装人员信息 + List userList = new ArrayList<>(); + userInfoByUserMobileList.forEach(x -> { + CommonDTO user = new CommonDTO("person", x.getUserId(), x.getName()); + userList.add(user); + }); + userInfo = JSONObject.toJSONString(userList); + } + Boolean publishFlag = Boolean.TRUE; + //校验是否发布 + if (StringUtils.isEmpty(userInfo)|| StringUtils.isEmpty(storeInfo)){ + publishFlag = Boolean.FALSE; + } + messageTemplateDO.setCreateUserId("system"); + if (!publishFlag){ + //如果不发布 保存门店人员信息 + messageTemplateDO.setStoreInfo(storeInfo); + messageTemplateDO.setHandlePersonInfo(userInfo); + } + messageTemplateDAO.insert(messageTemplateDO); + //调用发布 + if (publishFlag){ + //开始计算人员门店 + BatchPublishRequest batchPublishRequest = new BatchPublishRequest(); + batchPublishRequest.setIds(Arrays.asList(messageTemplateDO.getId())); + batchPublishRequest.setStoreInfoList(JSONObject.parseArray(storeInfo, CommonDTO.class)); + batchPublishRequest.setUserInfoList(JSONObject.parseArray(userInfo, CommonDTO.class)); + try { + batchPublishMessageTemplate(batchPublishRequest,""); + } catch (ServiceException e) { + return new ApiResponse(e.getErrorCode(), e.getErrorMessage(), null); + } + return ApiResponse.success(Boolean.TRUE); + } + return ApiResponse.success(Boolean.TRUE); + } + @Override public PageInfo getMessageTemplateList(MessageTemplateQueryRequest request) { @@ -312,7 +408,9 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { MessageDetailVO messageDetailVO = storeMessageDAO.getMessageDetail(id); if (messageDetailVO!=null&&messageDetailVO.getPublishUserId()!=null){ EnterpriseUserDO userInfoById = enterpriseUserDAO.getUserInfoById(messageDetailVO.getPublishUserId()); - messageDetailVO.setPublishUserName(userInfoById.getName()); + if (userInfoById != null){ + messageDetailVO.setPublishUserName(userInfoById.getName()); + } } return messageDetailVO; } @@ -358,6 +456,20 @@ public class MessageTemplateServiceImpl implements MessageTemplateService { return Boolean.TRUE; } + @Override + public ApiResponse thirdHandleMessage(ThirdHandleMessageRequest request) { + log.info("thirdHandleMessage request:{}", JSONObject.toJSONString(request)); + MessageTemplateDO message = messageTemplateDAO.getByKeyword(request.getHandleKeyword()); + if (message==null){ + return ApiResponse.error(ErrorCodeEnum.MESSAGE_NOT_EXIST); + } + if (!ProcessTypeEnum.HANDLE.getCode().equals(message.getProcessType())){ + return ApiResponse.error(ErrorCodeEnum.MESSAGE_NOT_HANDLED); + } + storeMessageDAO.batchUpdateHandle(message.getId(), request.getShopCodeList()); + return ApiResponse.success(Boolean.TRUE); + } + public Map> getAuthUser(List personInfo, List storeIds){ if (CollectionUtils.isEmpty(personInfo)){ 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 a431ab605..b9952bc74 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 @@ -59,7 +59,7 @@ public class MessageTemplateController { @PostMapping("/batchPublish") @ApiOperation("批量发布") public ResponseResult batchPublishMessageTemplate(@RequestBody BatchPublishRequest request) { - return ResponseResult.success(messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser())); + return ResponseResult.success(messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser().getUserId())); } @PostMapping("/getMessageTemplateList") diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java index 3156a3ce7..b5ce88f6b 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenApiController.java @@ -1,11 +1,14 @@ package com.cool.store.controller.webb; import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.PartnerUserHolder; import com.cool.store.dto.*; import com.cool.store.dto.store.StoreUserPositionDTO; import com.cool.store.request.OpenApiStoreRequest; import com.cool.store.request.StoreCodeDTO; import com.cool.store.request.*; +import com.cool.store.request.notice.ThirdHandleMessageRequest; +import com.cool.store.request.notice.ThirdMatterRequest; import com.cool.store.request.xgj.FranchiseFeeCallBackRequest; import com.cool.store.request.xgj.ReceiptCallBackRequest; import com.cool.store.response.ResponseResult; @@ -44,6 +47,8 @@ public class OpenApiController { ShopAccountService shopAccountService; @Resource StoreService storeService; + @Resource + MessageTemplateService messageTemplateService; @PostMapping("/statusRefresh") public ApiResponse statusRefresh(@RequestBody StatusRefreshDTO statusRefreshDTO){ @@ -151,4 +156,17 @@ public class OpenApiController { return ApiResponse.success(decorationDesignInfoService.decorationAcceptance(request)); } + @ApiOperation("事项处理") + @PostMapping("/matterHandle") + public ApiResponse thirdMatterHandle(@RequestBody @Validated ThirdMatterRequest request) { + log.info("thirdMatterHandle request:{}", JSONObject.toJSONString(request)); + return messageTemplateService.thirdMatterHandle(request); + } + + + @ApiOperation("确认已处理") + @PostMapping("/handleMessage") + public ApiResponse handleMessage(@RequestBody @Validated ThirdHandleMessageRequest request) { + return messageTemplateService.thirdHandleMessage(request); + } }