From ba90fca7fe408ae7d61d516e412495431c9ccd73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Fri, 25 Jul 2025 17:12:06 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/enums/ErrorCodeEnum.java | 4 + .../store/enums/notice/ModuleCodeEnum.java | 6 +- .../com/cool/store/enums/notice/TypeEnum.java | 44 ++ .../cool/store/dao/MessageTemplateDAO.java | 54 +++ .../com/cool/store/dao/StoreMessageDAO.java | 30 ++ .../EnterpriseUserGroupMappingMapper.java | 18 + .../store/mapper/EnterpriseUserMapper.java | 2 + .../store/mapper/MessageTemplateMapper.java | 8 + .../store/mapper/ShopAccountMapper.java.1 | 7 - .../store/mapper/StoreGroupMappingMapper.java | 19 + .../com/cool/store/mapper/StoreMapper.java | 2 + .../cool/store/mapper/StoreMessageMapper.java | 6 + .../resources/mapper/EnterpriseUserMapper.xml | 11 + .../mapper/MessageTemplateMapper.xml | 27 ++ .../mapper/StoreGroupMappingMapper.xml | 19 + .../src/main/resources/mapper/StoreMapper.xml | 17 + .../resources/mapper/StoreMessageMapper.xml | 29 ++ .../mapper/enterpriseUserGroupMapper.xml | 16 + .../com/cool/store/dto/notice/NoticeDTO.java | 27 ++ .../cool/store/dto/store/StoreAreaDTO.java | 1 + .../cool/store/entity/MessageTemplateDO.java | 441 +----------------- .../store/entity/StoreGroupMappingDO.java | 62 +++ .../com/cool/store/entity/StoreMessageDO.java | 331 +------------ ...dRequest.java => BatchDeletedRequest.java} | 2 +- .../request/notice/BatchPublishRequest.java | 25 + .../notice/MessageTemplateAddRequest.java | 42 ++ .../vo/notice/MessageTemplateDetailVO.java | 45 ++ .../store/service/MessageTemplateService.java | 62 +++ .../com/cool/store/service/StoreService.java | 9 + .../impl/MessageTemplateServiceImpl.java | 230 +++++++++ .../store/service/impl/StoreServiceImpl.java | 59 ++- .../webb/MatterConfigController.java | 22 +- .../webb/MessageTemplateController.java | 66 +++ 33 files changed, 957 insertions(+), 786 deletions(-) create mode 100644 coolstore-partner-common/src/main/java/com/cool/store/enums/notice/TypeEnum.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/MessageTemplateDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreMessageDAO.java create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserGroupMappingMapper.java delete mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAccountMapper.java.1 create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreGroupMappingMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/StoreGroupMappingMapper.xml create mode 100644 coolstore-partner-dao/src/main/resources/mapper/enterpriseUserGroupMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/notice/NoticeDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/entity/StoreGroupMappingDO.java rename coolstore-partner-model/src/main/java/com/cool/store/request/notice/{MatterConfigDeletedRequest.java => BatchDeletedRequest.java} (82%) create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchPublishRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateAddRequest.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/MessageTemplateService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java create mode 100644 coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MessageTemplateController.java 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 ae9839744..db2bae201 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 @@ -287,6 +287,10 @@ public enum ErrorCodeEnum { PRODUCTS_DISCARDED(1511034,"产品已报销,无法操作",null), PRODUCTS_SALES_COMPLETED(1511034,"含有销售完成的产品,无法批量报销",null), STORE_IS_EXIST(1511035,"该门店已存在",null), + + + MESSAGE_TEMPLATE_NOT_SUPPORT_EDIT(1610001,"当前消息已发布,不支持编辑!",null), + MESSAGE_TEMPLATE_NOT_SUPPORT_DELETED(1610002,"只有未发布的消息能删除,请确认!",null), ; 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 44313676d..22b696bcf 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,10 @@ import java.util.List; */ public enum ModuleCodeEnum { - STORE_WORK(0,"店务", Arrays.asList(MatterTypeEnum.QUESTION,MatterTypeEnum.LICENSE)), + STORE_WORK(0,"店务", Arrays.asList(MatterTypeEnum.QUESTION,MatterTypeEnum.LICENSE,MatterTypeEnum.NOTICE)), PRODUCT_UPDATE(1,"营销政策/产品上新",Arrays.asList(MatterTypeEnum.NOTICE)), - INVENTORY_MODULE(2,"库存模块",Arrays.asList()), - DISH(3,"菜品",Arrays.asList()), + INVENTORY_MODULE(2,"库存模块",Arrays.asList(MatterTypeEnum.NOTICE)), + DISH(3,"菜品",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/TypeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/TypeEnum.java new file mode 100644 index 000000000..a83ca9df5 --- /dev/null +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/notice/TypeEnum.java @@ -0,0 +1,44 @@ +package com.cool.store.enums.notice; + +/** + * @Author suzhuhong + * @Date 2025/7/25 10:05 + * @Version 1.0 + */ +public enum TypeEnum { + + + PERSON("人员","person", "按人员"), + POSITION("人员","position", "按职位"), + USER_GROUP("人员","userGroup", "按人员分组"), + ORGANIZATION("人员","organization", "按组织架构"), + REGION("门店","region", "按区域架构"), + STORE("门店","store", "按门店架构"), + GROUP("门店","group", "按门店分钟"), + + ; + private String group; + + private String type; + + private String message; + + + TypeEnum(String group, String type, String message) { + this.group = group; + this.type = type; + this.message = message; + } + + public String getGroup() { + return group; + } + + public String getType() { + return type; + } + + public String getMessage() { + return message; + } +} 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 new file mode 100644 index 000000000..99e069a47 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/MessageTemplateDAO.java @@ -0,0 +1,54 @@ +package com.cool.store.dao; + +import com.cool.store.entity.MessageTemplateDO; +import com.cool.store.mapper.MessageTemplateMapper; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 9:40 + * @Version 1.0 + */ +@Slf4j +@Repository +public class MessageTemplateDAO { + + @Resource + private MessageTemplateMapper messageTemplateMapper; + + + public int insert(MessageTemplateDO messageTemplateDO) { + return messageTemplateMapper.insertSelective(messageTemplateDO); + } + + public int update(MessageTemplateDO messageTemplateDO) { + return messageTemplateMapper.updateByPrimaryKeySelective(messageTemplateDO); + } + + public MessageTemplateDO getById(Long id) { + return messageTemplateMapper.selectByPrimaryKey(id); + } + + public List getByIds(List ids) { + if (CollectionUtils.isEmpty(ids)){ + return new ArrayList<>(); + } + return messageTemplateMapper.selectByIds(ids); + } + + public int updateDeleteStatusBatch(List ids,String userId) { + return messageTemplateMapper.updateDeleteStatusBatch(ids,userId); + } + + + + + + +} 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 new file mode 100644 index 000000000..82609b645 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/StoreMessageDAO.java @@ -0,0 +1,30 @@ +package com.cool.store.dao; + +import com.cool.store.entity.StoreMessageDO; +import com.cool.store.mapper.StoreMessageMapper; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 15:04 + * @Version 1.0 + */ +public class StoreMessageDAO { + + @Resource + StoreMessageMapper storeMessageMapper; + /** + * 批量新增 + * @param list + * @return + */ + public int batchInsert(List list){ + return storeMessageMapper.insertBatch(list); + } + + + + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserGroupMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserGroupMappingMapper.java new file mode 100644 index 000000000..fa65cc62c --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/EnterpriseUserGroupMappingMapper.java @@ -0,0 +1,18 @@ +package com.cool.store.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 11:03 + * @Version 1.0 + */ +@Mapper +public interface EnterpriseUserGroupMappingMapper { + + List getUserIdsByGroupIdList(@Param("groupIdList") List groupIdList); + +} 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 7ae2a3d59..882a9f452 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 @@ -99,4 +99,6 @@ public interface EnterpriseUserMapper { * @return */ List searchUserByUserIdsAndKeyword( @Param("userIdList") List userIdList, @Param("keyword") String keyword); + + List getUserIdsByRegionIdList( @Param("regionIdList") List regionIdList); } \ No newline at end of file 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 52501eae2..53ea5e429 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,7 +1,15 @@ package com.cool.store.mapper; import com.cool.store.entity.MessageTemplateDO; +import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; +import java.util.List; + public interface MessageTemplateMapper extends Mapper { + + List selectByIds(@Param("ids") List ids); + + int updateDeleteStatusBatch(@Param("ids") List ids, @Param("userId") String userId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAccountMapper.java.1 b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAccountMapper.java.1 deleted file mode 100644 index 1bbdba602..000000000 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/ShopAccountMapper.java.1 +++ /dev/null @@ -1,7 +0,0 @@ -package com.cool.store.mapper; - -import com.cool.store.entity.ShopAccountDO; -import tk.mybatis.mapper.common.Mapper; - -public interface ShopAccountMapper extends Mapper { -} \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreGroupMappingMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreGroupMappingMapper.java new file mode 100644 index 000000000..ba980ccf9 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreGroupMappingMapper.java @@ -0,0 +1,19 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.StoreGroupMappingDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 10:21 + * @Version 1.0 + */ +@Mapper +public interface StoreGroupMappingMapper { + + List getStoreGroupMappingByGroupIDs( @Param("groupIds")List groupIds); + +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java index 35b8fe785..16b33d5ab 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/StoreMapper.java @@ -45,4 +45,6 @@ public interface StoreMapper { List getStoreNumByStoreCodes(@Param("storeCodeIds") List storeCodeIds); + List listStoreByRegionPathList(@Param("regionPathList") List regionPathList); + } 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 519eef64e..9770a4155 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,7 +1,13 @@ package com.cool.store.mapper; import com.cool.store.entity.StoreMessageDO; +import org.apache.ibatis.annotations.Param; import tk.mybatis.mapper.common.Mapper; +import java.util.List; + public interface StoreMessageMapper extends Mapper { + + int insertBatch(@Param("list") List list); + } \ 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 27d7afd1a..33c3daa89 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/EnterpriseUserMapper.xml @@ -203,4 +203,15 @@ + + \ 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 a7e725cad..e45d1df58 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/MessageTemplateMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/MessageTemplateMapper.xml @@ -30,4 +30,31 @@ + + + + + + UPDATE zxjp_message_template + SET + deleted = #{deleted,jdbcType=BIT}, + update_time = NOW(), + update_user_id = #{userId,jdbcType=VARCHAR} + WHERE id IN + + #{id,jdbcType=BIGINT} + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/StoreGroupMappingMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/StoreGroupMappingMapper.xml new file mode 100644 index 000000000..03145cebc --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/StoreGroupMappingMapper.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml index 3cc819371..c01282e13 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/StoreMapper.xml @@ -126,6 +126,7 @@ + + diff --git a/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml index 504196071..accc0867a 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/StoreMessageMapper.xml @@ -24,4 +24,33 @@ + + + INSERT INTO store_message ( + store_id, + store_code, + store_name, + message_template_id, + read_status, + read_time, + process_status, + process_time, + operator_list + ) + 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} + ) + + + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/enterpriseUserGroupMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/enterpriseUserGroupMapper.xml new file mode 100644 index 000000000..2be7a2841 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/enterpriseUserGroupMapper.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file 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 new file mode 100644 index 000000000..4fe52a1ed --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/notice/NoticeDTO.java @@ -0,0 +1,27 @@ +package com.cool.store.dto.notice; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2025/7/25 16:49 + * @Version 1.0 + */ +@Data +public class NoticeDTO { + + @ApiModelProperty("消息编码") + private String messageCode; + @ApiModelProperty("模块") + private Integer moduleCode; + @ApiModelProperty("事项类型") + private Integer matterType; + @ApiModelProperty("消息标题") + private String messageTitle; + + + + + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreAreaDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreAreaDTO.java index 4cfe69b92..5b124b388 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreAreaDTO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/store/StoreAreaDTO.java @@ -12,6 +12,7 @@ import java.util.List; */ @Data public class StoreAreaDTO { + private String storeCode; private String storeId; private String storeName; /** 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 91cf7c1d1..8cfc360a6 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 @@ -1,9 +1,12 @@ package com.cool.store.entity; +import lombok.Data; + import java.util.Date; import javax.persistence.*; @Table(name = "zxjp_message_template") +@Data public class MessageTemplateDO { /** * 主键ID @@ -87,7 +90,7 @@ public class MessageTemplateDO { * 发布状态(0:未发布 1:已发布 2:已撤销) */ @Column(name = "publish_status") - private Boolean publishStatus; + private Integer publishStatus; /** * 发布时间 @@ -99,13 +102,13 @@ public class MessageTemplateDO { * 发布人ID */ @Column(name = "publisher_user_id") - private Long publisherUserId; + private String publisherUserId; /** * 创建人ID */ @Column(name = "create_user_id") - private Long createUserId; + private String createUserId; /** * 创建时间 @@ -117,7 +120,7 @@ public class MessageTemplateDO { * 更新人ID */ @Column(name = "updater_user_id") - private Long updaterUserId; + private String updaterUserId; /** * 更新时间 @@ -148,435 +151,5 @@ public class MessageTemplateDO { @Column(name = "store_info") private String storeInfo; - /** - * 获取主键ID - * - * @return id - 主键ID - */ - public Long getId() { - return id; - } - /** - * 设置主键ID - * - * @param id 主键ID - */ - public void setId(Long id) { - this.id = id; - } - - /** - * 获取消息编码(唯一标识) - * - * @return message_code - 消息编码(唯一标识) - */ - public String getMessageCode() { - return messageCode; - } - - /** - * 设置消息编码(唯一标识) - * - * @param messageCode 消息编码(唯一标识) - */ - public void setMessageCode(String messageCode) { - this.messageCode = messageCode; - } - - /** - * 获取模块编码 - * - * @return module_code - 模块编码 - */ - public Integer getModuleCode() { - return moduleCode; - } - - /** - * 设置模块编码 - * - * @param moduleCode 模块编码 - */ - public void setModuleCode(Integer moduleCode) { - this.moduleCode = moduleCode; - } - - /** - * 获取事项类型 - * - * @return matter_type - 事项类型 - */ - public Integer getMatterType() { - return matterType; - } - - /** - * 设置事项类型 - * - * @param matterType 事项类型 - */ - public void setMatterType(Integer matterType) { - this.matterType = matterType; - } - - /** - * 获取消息标题 - * - * @return message_title - 消息标题 - */ - public String getMessageTitle() { - return messageTitle; - } - - /** - * 设置消息标题 - * - * @param messageTitle 消息标题 - */ - public void setMessageTitle(String messageTitle) { - this.messageTitle = messageTitle; - } - - /** - * 获取系统来源 - * - * @return system_source - 系统来源 - */ - public String getSystemSource() { - return systemSource; - } - - /** - * 设置系统来源 - * - * @param systemSource 系统来源 - */ - public void setSystemSource(String systemSource) { - this.systemSource = systemSource; - } - - /** - * 获取处理类型(1:仅阅读 2:需要处理) - * - * @return process_type - 处理类型(1:仅阅读 2:需要处理) - */ - public Integer getProcessType() { - return processType; - } - - /** - * 设置处理类型(1:仅阅读 2:需要处理) - * - * @param processType 处理类型(1:仅阅读 2:需要处理) - */ - public void setProcessType(Integer processType) { - this.processType = processType; - } - - /** - * 获取提醒类型(1:持续提醒 2:阶段提醒 ) - * - * @return remind_type - 提醒类型(1:持续提醒 2:阶段提醒 ) - */ - public Integer getRemindType() { - return remindType; - } - - /** - * 设置提醒类型(1:持续提醒 2:阶段提醒 ) - * - * @param remindType 提醒类型(1:持续提醒 2:阶段提醒 ) - */ - public void setRemindType(Integer remindType) { - this.remindType = remindType; - } - - /** - * 获取提醒时间段 开始时间 - * - * @return remind_start_time - 提醒时间段 开始时间 - */ - public Date getRemindStartTime() { - return remindStartTime; - } - - /** - * 设置提醒时间段 开始时间 - * - * @param remindStartTime 提醒时间段 开始时间 - */ - public void setRemindStartTime(Date remindStartTime) { - this.remindStartTime = remindStartTime; - } - - /** - * 获取提醒时间段 结束时间 - * - * @return remind_end_time - 提醒时间段 结束时间 - */ - public Date getRemindEndTime() { - return remindEndTime; - } - - /** - * 设置提醒时间段 结束时间 - * - * @param remindEndTime 提醒时间段 结束时间 - */ - public void setRemindEndTime(Date remindEndTime) { - this.remindEndTime = remindEndTime; - } - - /** - * 获取截止日期 - * - * @return deadline - 截止日期 - */ - public Date getDeadline() { - return deadline; - } - - /** - * 设置截止日期 - * - * @param deadline 截止日期 - */ - public void setDeadline(Date deadline) { - this.deadline = deadline; - } - - /** - * 获取今日必办标识(0:否 1:是) - * - * @return today_task - 今日必办标识(0:否 1:是) - */ - public Boolean getTodayTask() { - return todayTask; - } - - /** - * 设置今日必办标识(0:否 1:是) - * - * @param todayTask 今日必办标识(0:否 1:是) - */ - public void setTodayTask(Boolean todayTask) { - this.todayTask = todayTask; - } - - /** - * 获取消息图片URL - * - * @return message_image - 消息图片URL - */ - public String getMessageImage() { - return messageImage; - } - - /** - * 设置消息图片URL - * - * @param messageImage 消息图片URL - */ - public void setMessageImage(String messageImage) { - this.messageImage = messageImage; - } - - /** - * 获取发布状态(0:未发布 1:已发布 2:已撤销) - * - * @return publish_status - 发布状态(0:未发布 1:已发布 2:已撤销) - */ - public Boolean getPublishStatus() { - return publishStatus; - } - - /** - * 设置发布状态(0:未发布 1:已发布 2:已撤销) - * - * @param publishStatus 发布状态(0:未发布 1:已发布 2:已撤销) - */ - public void setPublishStatus(Boolean publishStatus) { - this.publishStatus = publishStatus; - } - - /** - * 获取发布时间 - * - * @return publish_time - 发布时间 - */ - public Date getPublishTime() { - return publishTime; - } - - /** - * 设置发布时间 - * - * @param publishTime 发布时间 - */ - public void setPublishTime(Date publishTime) { - this.publishTime = publishTime; - } - - /** - * 获取发布人ID - * - * @return publisher_user_id - 发布人ID - */ - public Long getPublisherUserId() { - return publisherUserId; - } - - /** - * 设置发布人ID - * - * @param publisherUserId 发布人ID - */ - public void setPublisherUserId(Long publisherUserId) { - this.publisherUserId = publisherUserId; - } - - /** - * 获取创建人ID - * - * @return create_user_id - 创建人ID - */ - public Long getCreateUserId() { - return createUserId; - } - - /** - * 设置创建人ID - * - * @param createUserId 创建人ID - */ - public void setCreateUserId(Long createUserId) { - this.createUserId = createUserId; - } - - /** - * 获取创建时间 - * - * @return create_time - 创建时间 - */ - public Date getCreateTime() { - return createTime; - } - - /** - * 设置创建时间 - * - * @param createTime 创建时间 - */ - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - /** - * 获取更新人ID - * - * @return updater_user_id - 更新人ID - */ - public Long getUpdaterUserId() { - return updaterUserId; - } - - /** - * 设置更新人ID - * - * @param updaterUserId 更新人ID - */ - public void setUpdaterUserId(Long updaterUserId) { - this.updaterUserId = updaterUserId; - } - - /** - * 获取更新时间 - * - * @return update_time - 更新时间 - */ - public Date getUpdateTime() { - return updateTime; - } - - /** - * 设置更新时间 - * - * @param updateTime 更新时间 - */ - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - /** - * 获取删除标记(0:未删除 1:已删除) - * - * @return deleted - 删除标记(0:未删除 1:已删除) - */ - public Boolean getDeleted() { - return deleted; - } - - /** - * 设置删除标记(0:未删除 1:已删除) - * - * @param deleted 删除标记(0:未删除 1:已删除) - */ - public void setDeleted(Boolean deleted) { - this.deleted = deleted; - } - - /** - * 获取消息详情(富文本内容) - * - * @return message_content - 消息详情(富文本内容) - */ - public String getMessageContent() { - return messageContent; - } - - /** - * 设置消息详情(富文本内容) - * - * @param messageContent 消息详情(富文本内容) - */ - public void setMessageContent(String messageContent) { - this.messageContent = messageContent; - } - - /** - * 获取处理人信息 [{type:person,value:}{type:position,value:}] - * - * @return handle_person_info - 处理人信息 [{type:person,value:}{type:position,value:}] - */ - public String getHandlePersonInfo() { - return handlePersonInfo; - } - - /** - * 设置处理人信息 [{type:person,value:}{type:position,value:}] - * - * @param handlePersonInfo 处理人信息 [{type:person,value:}{type:position,value:}] - */ - public void setHandlePersonInfo(String handlePersonInfo) { - this.handlePersonInfo = handlePersonInfo; - } - - /** - * 获取门店范围 [{type:store,value:}{type:region,value:}] - * - * @return store_info - 门店范围 [{type:store,value:}{type:region,value:}] - */ - public String getStoreInfo() { - return storeInfo; - } - - /** - * 设置门店范围 [{type:store,value:}{type:region,value:}] - * - * @param storeInfo 门店范围 [{type:store,value:}{type:region,value:}] - */ - public void setStoreInfo(String storeInfo) { - this.storeInfo = storeInfo; - } } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreGroupMappingDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreGroupMappingDO.java new file mode 100644 index 000000000..f1612bb0c --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreGroupMappingDO.java @@ -0,0 +1,62 @@ +package com.cool.store.entity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +/** + * @Author suzhuhong + * @Date 2025/7/25 10:23 + * @Version 1.0 + */ +@Data +@Accessors(chain = true) +@AllArgsConstructor +@NoArgsConstructor +public class StoreGroupMappingDO { + /** + * 自增id + */ + private Long id; + + /** + * 门店id + */ + @JsonProperty("store_id") + private String storeId; + + /** + * 组别id + */ + @JsonProperty("group_id") + private String groupId; + + /** + * 创建时间 + */ + private Long createTime; + + /** + * 创建人 + */ + private String createUser; + + /** + * 修改时间 + */ + private Long updateTime; + + /** + * 修改人 + */ + private String updateUser; + + public StoreGroupMappingDO(String storeId, String groupId, Long createTime, String createUser) { + this.storeId = storeId; + this.groupId = groupId; + this.createTime = createTime; + this.createUser = createUser; + } +} \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreMessageDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreMessageDO.java index 852fbedbf..99faf5ac9 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreMessageDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/StoreMessageDO.java @@ -1,9 +1,12 @@ package com.cool.store.entity; +import lombok.Data; + import java.util.Date; import javax.persistence.*; @Table(name = "zxjp_store_message") +@Data public class StoreMessageDO { /** * 主键ID @@ -40,7 +43,7 @@ public class StoreMessageDO { * 阅读状态(0:未读 1:已读) */ @Column(name = "read_status") - private Boolean readStatus; + private Integer readStatus; /** * 阅读时间 @@ -64,7 +67,7 @@ public class StoreMessageDO { * 实际操作人ID */ @Column(name = "actual_operator_id") - private Long actualOperatorId; + private String actualOperatorId; /** * 实际操作人姓名 @@ -88,7 +91,7 @@ public class StoreMessageDO { * 撤销操作人ID */ @Column(name = "revoke_operator_id") - private Long revokeOperatorId; + private String revokeOperatorId; /** * 撤销操作人姓名 @@ -114,327 +117,5 @@ public class StoreMessageDO { @Column(name = "operator_list") private String operatorList; - /** - * 获取主键ID - * - * @return id - 主键ID - */ - public Long getId() { - return id; - } - /** - * 设置主键ID - * - * @param id 主键ID - */ - public void setId(Long id) { - this.id = id; - } - - /** - * 获取门店编码 - * - * @return store_id - 门店编码 - */ - public String getStoreId() { - return storeId; - } - - /** - * 设置门店编码 - * - * @param storeId 门店编码 - */ - public void setStoreId(String storeId) { - this.storeId = storeId; - } - - /** - * 获取门店编码 - * - * @return store_code - 门店编码 - */ - public String getStoreCode() { - return storeCode; - } - - /** - * 设置门店编码 - * - * @param storeCode 门店编码 - */ - public void setStoreCode(String storeCode) { - this.storeCode = storeCode; - } - - /** - * 获取门店名称 - * - * @return store_name - 门店名称 - */ - public String getStoreName() { - return storeName; - } - - /** - * 设置门店名称 - * - * @param storeName 门店名称 - */ - public void setStoreName(String storeName) { - this.storeName = storeName; - } - - /** - * 获取关联的消息模板ID - * - * @return message_template_id - 关联的消息模板ID - */ - public Long getMessageTemplateId() { - return messageTemplateId; - } - - /** - * 设置关联的消息模板ID - * - * @param messageTemplateId 关联的消息模板ID - */ - public void setMessageTemplateId(Long messageTemplateId) { - this.messageTemplateId = messageTemplateId; - } - - /** - * 获取阅读状态(0:未读 1:已读) - * - * @return read_status - 阅读状态(0:未读 1:已读) - */ - public Boolean getReadStatus() { - return readStatus; - } - - /** - * 设置阅读状态(0:未读 1:已读) - * - * @param readStatus 阅读状态(0:未读 1:已读) - */ - public void setReadStatus(Boolean readStatus) { - this.readStatus = readStatus; - } - - /** - * 获取阅读时间 - * - * @return read_time - 阅读时间 - */ - public Date getReadTime() { - return readTime; - } - - /** - * 设置阅读时间 - * - * @param readTime 阅读时间 - */ - public void setReadTime(Date readTime) { - this.readTime = readTime; - } - - /** - * 获取处理状态(0:未处理 1:处理中) - * - * @return process_status - 处理状态(0:未处理 1:处理中) - */ - public Integer getProcessStatus() { - return processStatus; - } - - /** - * 设置处理状态(0:未处理 1:处理中) - * - * @param processStatus 处理状态(0:未处理 1:处理中) - */ - public void setProcessStatus(Integer processStatus) { - this.processStatus = processStatus; - } - - /** - * 获取处理时间 - * - * @return process_time - 处理时间 - */ - public Date getProcessTime() { - return processTime; - } - - /** - * 设置处理时间 - * - * @param processTime 处理时间 - */ - public void setProcessTime(Date processTime) { - this.processTime = processTime; - } - - /** - * 获取实际操作人ID - * - * @return actual_operator_id - 实际操作人ID - */ - public Long getActualOperatorId() { - return actualOperatorId; - } - - /** - * 设置实际操作人ID - * - * @param actualOperatorId 实际操作人ID - */ - public void setActualOperatorId(Long actualOperatorId) { - this.actualOperatorId = actualOperatorId; - } - - /** - * 获取实际操作人姓名 - * - * @return actual_operator_name - 实际操作人姓名 - */ - public String getActualOperatorName() { - return actualOperatorName; - } - - /** - * 设置实际操作人姓名 - * - * @param actualOperatorName 实际操作人姓名 - */ - public void setActualOperatorName(String actualOperatorName) { - this.actualOperatorName = actualOperatorName; - } - - /** - * 获取撤销状态(0:未撤销 1:已撤销) - * - * @return revoke_status - 撤销状态(0:未撤销 1:已撤销) - */ - public Boolean getRevokeStatus() { - return revokeStatus; - } - - /** - * 设置撤销状态(0:未撤销 1:已撤销) - * - * @param revokeStatus 撤销状态(0:未撤销 1:已撤销) - */ - public void setRevokeStatus(Boolean revokeStatus) { - this.revokeStatus = revokeStatus; - } - - /** - * 获取撤销时间 - * - * @return revoke_time - 撤销时间 - */ - public Date getRevokeTime() { - return revokeTime; - } - - /** - * 设置撤销时间 - * - * @param revokeTime 撤销时间 - */ - public void setRevokeTime(Date revokeTime) { - this.revokeTime = revokeTime; - } - - /** - * 获取撤销操作人ID - * - * @return revoke_operator_id - 撤销操作人ID - */ - public Long getRevokeOperatorId() { - return revokeOperatorId; - } - - /** - * 设置撤销操作人ID - * - * @param revokeOperatorId 撤销操作人ID - */ - public void setRevokeOperatorId(Long revokeOperatorId) { - this.revokeOperatorId = revokeOperatorId; - } - - /** - * 获取撤销操作人姓名 - * - * @return revoke_operator_name - 撤销操作人姓名 - */ - public String getRevokeOperatorName() { - return revokeOperatorName; - } - - /** - * 设置撤销操作人姓名 - * - * @param revokeOperatorName 撤销操作人姓名 - */ - public void setRevokeOperatorName(String revokeOperatorName) { - this.revokeOperatorName = revokeOperatorName; - } - - /** - * 获取创建时间 - * - * @return create_time - 创建时间 - */ - public Date getCreateTime() { - return createTime; - } - - /** - * 设置创建时间 - * - * @param createTime 创建时间 - */ - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - /** - * 获取更新时间 - * - * @return update_time - 更新时间 - */ - public Date getUpdateTime() { - return updateTime; - } - - /** - * 设置更新时间 - * - * @param updateTime 更新时间 - */ - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - /** - * 获取操作人列表 逗号隔开 - * - * @return operator_list - 操作人列表 逗号隔开 - */ - public String getOperatorList() { - return operatorList; - } - - /** - * 设置操作人列表 逗号隔开 - * - * @param operatorList 操作人列表 逗号隔开 - */ - public void setOperatorList(String operatorList) { - this.operatorList = operatorList; - } } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigDeletedRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchDeletedRequest.java similarity index 82% rename from coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigDeletedRequest.java rename to coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchDeletedRequest.java index a8ede4262..a9ee2bab0 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MatterConfigDeletedRequest.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchDeletedRequest.java @@ -10,7 +10,7 @@ import java.util.List; * @Version 1.0 */ @Data -public class MatterConfigDeletedRequest { +public class BatchDeletedRequest { private List ids; diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchPublishRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchPublishRequest.java new file mode 100644 index 000000000..2d824e021 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/BatchPublishRequest.java @@ -0,0 +1,25 @@ +package com.cool.store.request.notice; + +import com.cool.store.dto.notice.CommonDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 13:47 + * @Version 1.0 + */ +@Data +public class BatchPublishRequest { + + private List ids; + + @ApiModelProperty( "默认门店范围 type[region store group]") + List storeInfoList; + + @ApiModelProperty( "默认处理人信息 type[person position userGroup organization]") + List userInfoList; + +} 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 new file mode 100644 index 000000000..29ef7850e --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/notice/MessageTemplateAddRequest.java @@ -0,0 +1,42 @@ +package com.cool.store.request.notice; + +import com.cool.store.dto.notice.CommonDTO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 11:10 + * @Version 1.0 + */ +@Data +public class MessageTemplateAddRequest { + + private Long id; + + @ApiModelProperty("模块") + private Integer moduleCode; + @ApiModelProperty("事项类型") + private Integer remindType; + @ApiModelProperty("提醒时间段 开始时间 阶段提醒时传") + private Date remindStartTime; + @ApiModelProperty("提醒时间段 结束时间 阶段提醒时传") + private Date remindEndTime; + @ApiModelProperty("截止时间") + private Date deadline; + @ApiModelProperty("处理类型(1:仅阅读 2:需要处理)") + private Integer processType; + @ApiModelProperty("今日必办标识 0非必办 1必办") + private Integer todayTask; + @ApiModelProperty("消息标题") + private String messageTitle; + @ApiModelProperty("消息图片URL") + private String messageImage; + @ApiModelProperty("消息详情(富文本内容)") + private String messageContent; + +} 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 new file mode 100644 index 000000000..19b675b21 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/notice/MessageTemplateDetailVO.java @@ -0,0 +1,45 @@ +package com.cool.store.vo.notice; + +import com.cool.store.dto.notice.CommonDTO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2025/7/25 13:23 + * @Version 1.0 + */ +@Data +public class MessageTemplateDetailVO { + + private Long id; + + @ApiModelProperty("模块") + private Integer moduleCode; + @ApiModelProperty("事项类型") + private Integer remindType; + @ApiModelProperty("提醒时间段 开始时间 阶段提醒时传") + private Date remindStartTime; + @ApiModelProperty("提醒时间段 结束时间 阶段提醒时传") + private Date remindEndTime; + @ApiModelProperty("截止时间") + private Date deadline; + @ApiModelProperty("处理类型(1:仅阅读 2:需要处理)") + private Integer processType; + @ApiModelProperty("今日必办标识 0非必办 1必办") + private Integer todayTask; + @ApiModelProperty("消息标题") + private String messageTitle; + @ApiModelProperty("消息图片URL") + private String messageImage; + @ApiModelProperty("消息详情(富文本内容)") + private String messageContent; + @ApiModelProperty( "默认门店范围 type[region store group]") + List storeInfoList; + @ApiModelProperty( "默认处理人信息 type[person position userGroup organization]") + List userInfoList; + +} 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 new file mode 100644 index 000000000..9c5e175d4 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/MessageTemplateService.java @@ -0,0 +1,62 @@ +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; + +/** + * @Author suzhuhong + * @Date 2025/7/25 9:58 + * @Version 1.0 + */ +public interface MessageTemplateService { + + + /** + * 新增消息模版 + * @param request + * @param user + * @return + */ + Boolean addMessageTemplate(MessageTemplateAddRequest request , LoginUserInfo user); + + /** + * 编辑消息模版 + * @param request + * @param user + * @return + */ + Boolean editMessageTemplate(MessageTemplateAddRequest request , LoginUserInfo user); + + + /** + * 获取详情 + * @param id + * @return + */ + MessageTemplateDetailVO getMessageTemplateDetail(Long id); + + /** + * 批量删除 未发布可以删除 + * @param request + * @return + */ + Boolean batchDeleteMessageTemplate(BatchDeletedRequest request, LoginUserInfo user); + + /** + * batch 批量发布 + * @param request + * @param user + * @return + */ + Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user); + + + + + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java index 01f5b00c4..d916b61a7 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/StoreService.java @@ -1,6 +1,7 @@ package com.cool.store.service; import com.cool.store.dto.StoreDTO; +import com.cool.store.dto.store.AuthStoreUserDTO; import com.cool.store.dto.store.StoreUserPositionDTO; import com.cool.store.response.MiniShopsResponse; import com.github.pagehelper.PageInfo; @@ -27,4 +28,12 @@ public interface StoreService { List getStoreUser(List storeCodeList); + List authStoreUser(List storeIdList, String positionType); + + List getStorePositionUserList(List storeIds, + List positionIds, + List nodePersonList, + List groupIdList, + List regionIdList); + } 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 new file mode 100644 index 000000000..1c2106db8 --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MessageTemplateServiceImpl.java @@ -0,0 +1,230 @@ +package com.cool.store.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.context.LoginUserInfo; +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.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.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.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.service.MessageTemplateService; +import com.cool.store.service.StoreService; +import com.cool.store.vo.notice.MessageTemplateDetailVO; +import com.google.gson.JsonObject; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author suzhuhong + * @Date 2025/7/25 9:59 + * @Version 1.0 + */ +@Service +@Slf4j +public class MessageTemplateServiceImpl implements MessageTemplateService { + + + @Resource + MessageTemplateDAO messageTemplateDAO; + @Resource + StoreMapper storeMapper; + @Resource + RegionDao RegionDao; + @Resource + StoreGroupMappingMapper storeGroupMappingMapper; + @Resource + StoreService storeService; + @Resource + StoreMessageDAO storeMessageDAO; + + + + @Override + public Boolean addMessageTemplate(MessageTemplateAddRequest request, LoginUserInfo user) { + MessageTemplateDO messageTemplateDO = new MessageTemplateDO(); + BeanUtils.copyProperties(request, messageTemplateDO); + messageTemplateDO.setCreateUserId(user.getUserId()); + messageTemplateDAO.insert(messageTemplateDO); + return Boolean.TRUE; + } + + @Override + public Boolean editMessageTemplate(MessageTemplateAddRequest request, LoginUserInfo user) { + if (request.getId()==null){ + throw new ServiceException(ErrorCodeEnum.PARAMS_VALIDATE_ERROR); + } + MessageTemplateDO messageTemplateDO = messageTemplateDAO.getById(request.getId()); + //只有待发布状态能编辑 + if (messageTemplateDO.getPublishStatus()!=0){ + throw new ServiceException(ErrorCodeEnum.MESSAGE_TEMPLATE_NOT_SUPPORT_EDIT); + } + BeanUtils.copyProperties(request, messageTemplateDO); + messageTemplateDO.setUpdaterUserId(user.getUserId()); + messageTemplateDAO.update(messageTemplateDO); + return Boolean.TRUE; + } + + @Override + public MessageTemplateDetailVO getMessageTemplateDetail(Long id) { + MessageTemplateDetailVO messageTemplateDetailVO = new MessageTemplateDetailVO(); + MessageTemplateDO messageTemplateDO = messageTemplateDAO.getById(id); + if(messageTemplateDO==null){ + return messageTemplateDetailVO; + } + BeanUtils.copyProperties(messageTemplateDO, messageTemplateDetailVO); + messageTemplateDetailVO.setUserInfoList(JSONObject.parseArray(messageTemplateDO.getHandlePersonInfo(), CommonDTO.class)); + messageTemplateDetailVO.setStoreInfoList(JSONObject.parseArray(messageTemplateDO.getStoreInfo(), CommonDTO.class)); + return messageTemplateDetailVO; + } + + @Override + public Boolean batchDeleteMessageTemplate(BatchDeletedRequest request, LoginUserInfo user) { + List list = messageTemplateDAO.getByIds(request.getIds()); + //校验是否都是未发布状态 + if (list.stream().anyMatch(x -> x.getPublishStatus()!= PublishStatusEnum.UNPUBLISHED.getCode())){ + throw new ServiceException(ErrorCodeEnum.MESSAGE_TEMPLATE_NOT_SUPPORT_DELETED); + } + messageTemplateDAO.updateDeleteStatusBatch(request.getIds(),user.getUserId()); + return Boolean.TRUE; + } + + + + @Override + public Boolean batchPublishMessageTemplate(BatchPublishRequest request, LoginUserInfo user) { + 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()); + + Map> authUser = getAuthUser(request.getUserInfoList(), storeIds); + + List list = messageTemplateDAO.getByIds(request.getIds()); + //过滤 只保留未发布的 + list = list.stream().filter(x -> PublishStatusEnum.UNPUBLISHED.getCode().equals(x.getPublishStatus())).collect(Collectors.toList()); + + list.stream().forEach(x -> { + List result = new ArrayList<>(); + storeAreaDTOS.forEach(y->{ + if (CollectionUtils.isEmpty(authUser.get(y.getStoreId()))){ + log.info("当前门店没有人员 门店名称:{}",y.getStoreName()); + return; + } + StoreMessageDO storeMessageDO = new StoreMessageDO(); + storeMessageDO.setStoreId(y.getStoreId()); + storeMessageDO.setStoreCode(y.getStoreCode()); + storeMessageDO.setMessageTemplateId(x.getId()); + storeMessageDO.setReadStatus(ReadStatusEnum.UNREAD.getCode()); + storeMessageDO.setReadTime(new Date()); + storeMessageDO.setProcessStatus(ProcessStatusEnum.UNTREATED.getCode()); + storeMessageDO.setProcessTime(new Date()); + String userIdStr = authUser.get(y.getStoreId()).stream().collect(Collectors.joining(",")); + storeMessageDO.setOperatorList(userIdStr); + result.add(storeMessageDO); + }); + storeMessageDAO.batchInsert(result); + }); + 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())) + .map(CommonDTO::getValue).collect(Collectors.toList()); + List positionIds = personInfo.stream().filter(x -> TypeEnum.POSITION.equals(x.getType())) + .map(CommonDTO::getValue).collect(Collectors.toList()); + List groupIdList = personInfo.stream().filter(x -> TypeEnum.USER_GROUP.equals(x.getType())) + .map(CommonDTO::getValue).collect(Collectors.toList()); + List regionIdList = personInfo.stream().filter(x -> TypeEnum.ORGANIZATION.equals(x.getType())) + .map(CommonDTO::getValue).collect(Collectors.toList()); + //权限 + List authStoreUserList = storeService.getStorePositionUserList(storeIds, positionIds, personIds, groupIdList, regionIdList); + Map> storeUserMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(authStoreUserList)) { + storeUserMap = authStoreUserList.stream().collect(Collectors.toMap(AuthStoreUserDTO::getStoreId, + AuthStoreUserDTO::getUserIdList, (a, b) -> a)); + } + return storeUserMap; + } + + /** + * 获取门店范围 + * @param commonDTOS + * @return + */ + private List getStoreRange( List commonDTOS){ + List regionIds = commonDTOS.stream().filter(x -> TypeEnum.REGION.equals(x.getType())) + .map(CommonDTO::getValue).collect(Collectors.toList()); + + List regionDOsByRegionIds = new ArrayList<>(); + Set storeIdSet = new HashSet<>(); + if (CollectionUtils.isNotEmpty(regionIds)){ + regionDOsByRegionIds = RegionDao.getRegionByRegionIds(regionIds); + //区域全路径地址集合 ["/1/37139128281/","/1/37139128283/"] + List regionFullRegionPathList = regionDOsByRegionIds.stream().map(RegionDO::getFullRegionPath).collect(Collectors.toList()); + //根据regionFullRegionPathList查询区域下所有的门店(包括子区域门店) + 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())) + .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())) + .map(CommonDTO::getValue).collect(Collectors.toList()); + //分组 + if (CollectionUtils.isNotEmpty(groupList)) { + List groupStoreList = storeGroupMappingMapper.getStoreGroupMappingByGroupIDs(groupList); + if (CollectionUtils.isNotEmpty(groupStoreList)) { + Set groupStoreSet = groupStoreList.stream().map(StoreGroupMappingDO::getStoreId).collect(Collectors.toSet()); + if(CollectionUtils.isNotEmpty(groupStoreSet)){ + //将寻找的门店添加到set中 + storeIdSet.addAll(groupStoreSet); + } + } + } + if(CollectionUtils.isEmpty(storeIdSet)){ + return new ArrayList<>(); + } + List storeDTOList = storeMapper.getStoreAreaList(new ArrayList<>(storeIdSet)); + if(CollectionUtils.isNotEmpty(storeDTOList)){ + storeDTOList = storeDTOList.stream().filter(o -> "open".equals(o.getStoreStatus())).collect(Collectors.toList()); + } + return storeDTOList; + } + + + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java index 3d0e4a904..7ef642edd 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/StoreServiceImpl.java @@ -2,6 +2,7 @@ package com.cool.store.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; import com.cool.store.dto.store.AuthStoreUserDTO; import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.EnterpriseUserRoleDao; @@ -17,10 +18,7 @@ import com.cool.store.entity.SysRoleDO; import com.cool.store.entity.UserAuthMappingDO; import com.cool.store.enums.*; import com.cool.store.exception.ServiceException; -import com.cool.store.mapper.RegionMapper; -import com.cool.store.mapper.StoreMapper; -import com.cool.store.mapper.SysRoleMapper; -import com.cool.store.mapper.UserAuthMappingMapper; +import com.cool.store.mapper.*; import com.cool.store.response.MiniShopsResponse; import com.cool.store.service.StoreService; import com.cool.store.service.UserAuthMappingService; @@ -68,6 +66,10 @@ public class StoreServiceImpl implements StoreService { StoreMapper storeMapper; @Resource UserAuthMappingMapper userAuthMappingMapper; + @Resource + EnterpriseUserMapper enterpriseUserMapper; + @Resource + EnterpriseUserGroupMappingMapper enterpriseUserGroupMappingMapper; @Override public PageInfo getStoreExtendFieldInfo(Integer pageSize, Integer pageNum) { @@ -169,7 +171,54 @@ public class StoreServiceImpl implements StoreService { return result; } - private List authStoreUser(List storeIdList, String positionType) { + + + @Override + public List getStorePositionUserList( List storeIds, + List positionIds, + List nodePersonList, + List groupIdList, + List regionIdList) { + log.info("StoreServiceImpl getStorePositionUserList param storeIds:{},positionIds:{},nodePersonList:{},groupIdList:{},regionIdList:{}", + JSONObject.toJSONString(storeIds), + JSONObject.toJSONString(positionIds), JSONObject.toJSONString(nodePersonList), + JSONObject.toJSONString(groupIdList), JSONObject.toJSONString(regionIdList)); + List authStoreUsers = this.authStoreUser(storeIds, null); + if (CollUtil.isEmpty(authStoreUsers)) { + return new ArrayList<>(); + } + List allUserIds = Lists.newArrayList(); + if (CollectionUtils.isNotEmpty(positionIds)) { + List userIds = sysRoleMapper.getPositionUserIds(positionIds); + allUserIds.addAll(userIds); + } + if (CollectionUtils.isNotEmpty(groupIdList)) { + List groupUserIdList = enterpriseUserGroupMappingMapper.getUserIdsByGroupIdList(groupIdList); + if (CollectionUtils.isNotEmpty(groupUserIdList)) { + allUserIds.addAll(groupUserIdList); + } + } + if (CollectionUtils.isNotEmpty(regionIdList)) { + List regionUserIdList = enterpriseUserMapper.getUserIdsByRegionIdList(regionIdList); + if (CollectionUtils.isNotEmpty(regionUserIdList)) { + allUserIds.addAll(regionUserIdList); + } + } + if (CollectionUtils.isNotEmpty(nodePersonList)) { + allUserIds.addAll(nodePersonList); + } + List finalAllUserIds = allUserIds; + authStoreUsers.forEach(f -> f.getUserIdList().retainAll(finalAllUserIds)); + if (CollectionUtils.isNotEmpty(authStoreUsers)) { + authStoreUsers = authStoreUsers.stream().distinct().collect(Collectors.toList()); + } + return authStoreUsers; + } + + + + @Override + public List authStoreUser(List storeIdList, String positionType) { List result = new ArrayList<>(); if (CollectionUtils.isEmpty(storeIdList)) { return result; diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MatterConfigController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MatterConfigController.java index a66c43e0e..6dd7342dd 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MatterConfigController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MatterConfigController.java @@ -1,15 +1,15 @@ 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.MatterConfigAddRequest; -import com.cool.store.request.notice.MatterConfigDeletedRequest; import com.cool.store.request.notice.MatterConfigQueryRequest; +import com.cool.store.response.ResponseResult; import com.cool.store.service.MatterConfigService; -import com.cool.store.userholder.CurrentUser; +import com.cool.store.vo.LineInfoVO; import com.cool.store.vo.notice.MatterAndMatterDetailVO; import com.github.pagehelper.PageInfo; import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; @@ -35,27 +35,27 @@ public class MatterConfigController { @PostMapping("/add") @ApiOperation("新增事项配置") - public int addMatterConfig(@RequestBody MatterConfigAddRequest request) { - return matterConfigService.addMatterConfig(request, CurrentUserHolder.getUser()); + public ResponseResult addMatterConfig(@RequestBody MatterConfigAddRequest request) { + return ResponseResult.success(matterConfigService.addMatterConfig(request, CurrentUserHolder.getUser())); } @PostMapping("/edit") @ApiOperation("编辑事项配置") - public int editMatterConfig(@RequestBody MatterConfigAddRequest request) { - return matterConfigService.editMatterConfig(request, CurrentUserHolder.getUser()); + public ResponseResult editMatterConfig(@RequestBody MatterConfigAddRequest request) { + return ResponseResult.success(matterConfigService.editMatterConfig(request, CurrentUserHolder.getUser())); } @PostMapping("/deleteMatterConfig") @ApiOperation("批量删除事项配置") - public Boolean addMatterConfig(@RequestBody MatterConfigDeletedRequest request) { - return matterConfigService.deleteMatterConfig(request.getIds(), CurrentUserHolder.getUser()); + public ResponseResult addMatterConfig(@RequestBody BatchDeletedRequest request) { + return ResponseResult.success(matterConfigService.deleteMatterConfig(request.getIds(), CurrentUserHolder.getUser())); } @PostMapping("/list") @ApiOperation("事项配置列表") - public PageInfo listByCondition(@RequestBody MatterConfigQueryRequest request) { - return matterConfigService.listByCondition(request); + public ResponseResult> listByCondition(@RequestBody MatterConfigQueryRequest request) { + return ResponseResult.success(matterConfigService.listByCondition(request)); } 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 new file mode 100644 index 000000000..ffed39ac0 --- /dev/null +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/MessageTemplateController.java @@ -0,0 +1,66 @@ +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.response.ResponseResult; +import com.cool.store.service.MessageTemplateService; +import com.cool.store.vo.notice.MessageTemplateDetailVO; +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/25 15:08 + * @Version 1.0 + */ +@RestController +@RequestMapping("/pc/notice") +@Api(tags = "PC事项/通知管理") +@Slf4j +public class MessageTemplateController { + + + @Resource + MessageTemplateService messageTemplateService; + + + @PostMapping("/add") + @ApiOperation("新增消息通知") + public ResponseResult messageTemplateService(@RequestBody MessageTemplateAddRequest request) { + return ResponseResult.success(messageTemplateService.addMessageTemplate(request, CurrentUserHolder.getUser())); + } + + @PostMapping("/edit") + @ApiOperation("编辑消息通知") + public ResponseResult editMessageTemplate(@RequestBody MessageTemplateAddRequest request) { + return ResponseResult.success(messageTemplateService.editMessageTemplate(request, CurrentUserHolder.getUser())); + } + + @ApiOperation("通知详情") + @GetMapping("/getMessageTemplateDetail") + public ResponseResult getMessageTemplateDetail(@RequestParam("id")Long id) { + return ResponseResult.success(messageTemplateService.getMessageTemplateDetail(id)); + } + + @PostMapping("/batchDelete") + @ApiOperation("批量删除") + public ResponseResult editMessageTemplate(@RequestBody BatchDeletedRequest request) { + return ResponseResult.success(messageTemplateService.batchDeleteMessageTemplate(request, CurrentUserHolder.getUser())); + } + + @PostMapping("/batchPublish") + @ApiOperation("批量发布") + public ResponseResult editMessageTemplate(@RequestBody BatchPublishRequest request) { + return ResponseResult.success(messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser())); + } + + +}