feat:事项

This commit is contained in:
苏竹红
2025-07-25 17:12:06 +08:00
parent b10f129271
commit ba90fca7fe
33 changed files with 957 additions and 786 deletions

View File

@@ -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),
;

View File

@@ -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<MatterTypeEnum> matterTypeEnums) {

View File

@@ -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;
}
}

View File

@@ -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<MessageTemplateDO> getByIds(List<Long> ids) {
if (CollectionUtils.isEmpty(ids)){
return new ArrayList<>();
}
return messageTemplateMapper.selectByIds(ids);
}
public int updateDeleteStatusBatch(List<Long> ids,String userId) {
return messageTemplateMapper.updateDeleteStatusBatch(ids,userId);
}
}

View File

@@ -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<StoreMessageDO> list){
return storeMessageMapper.insertBatch(list);
}
}

View File

@@ -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<String> getUserIdsByGroupIdList(@Param("groupIdList") List<String> groupIdList);
}

View File

@@ -99,4 +99,6 @@ public interface EnterpriseUserMapper {
* @return
*/
List<EnterpriseUserDO> searchUserByUserIdsAndKeyword( @Param("userIdList") List<String> userIdList, @Param("keyword") String keyword);
List<String> getUserIdsByRegionIdList( @Param("regionIdList") List<String> regionIdList);
}

View File

@@ -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<MessageTemplateDO> {
List<MessageTemplateDO> selectByIds(@Param("ids") List<Long> ids);
int updateDeleteStatusBatch(@Param("ids") List<Long> ids, @Param("userId") String userId);
}

View File

@@ -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<ShopAccountDO> {
}

View File

@@ -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<StoreGroupMappingDO> getStoreGroupMappingByGroupIDs( @Param("groupIds")List<String> groupIds);
}

View File

@@ -45,4 +45,6 @@ public interface StoreMapper {
List<StoreDO> getStoreNumByStoreCodes(@Param("storeCodeIds") List<String> storeCodeIds);
List<StoreAreaDTO> listStoreByRegionPathList(@Param("regionPathList") List<String> regionPathList);
}

View File

@@ -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<StoreMessageDO> {
int insertBatch(@Param("list") List<StoreMessageDO> list);
}

View File

@@ -203,4 +203,15 @@
</if>
</where>
</select>
<select id="getUserIdsByRegionIdList" resultType="string">
select
user_id
from enterprise_user_${enterpriseId} where user_id != 'a100000001' and active=1
<if test="regionIdList != null and regionIdList.size >0 ">
<foreach collection="regionIdList" item="regionId" separator=" or " open="and (" close=" )">
user_region_ids like concat('%/', #{regionId}, '/%')
</foreach>
</if>
</select>
</mapper>

View File

@@ -30,4 +30,31 @@
<result column="handle_person_info" jdbcType="LONGVARCHAR" property="handlePersonInfo" />
<result column="store_info" jdbcType="LONGVARCHAR" property="storeInfo" />
</resultMap>
<select id="selectByIds" resultMap="BaseResultMap">
SELECT
*
FROM zxjp_message_template
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id,jdbcType=BIGINT}
</foreach>
AND deleted = 0
ORDER BY create_time DESC
</select>
<update id="updateDeleteStatusBatch" >
UPDATE zxjp_message_template
SET
deleted = #{deleted,jdbcType=BIT},
update_time = NOW(),
update_user_id = #{userId,jdbcType=VARCHAR}
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id,jdbcType=BIGINT}
</foreach>
</update>
</mapper>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cool.store.mapper.StoreGroupMappingMapper">
<select id="getStoreGroupMappingByGroupIDs"
resultType="com.cool.store.entity.StoreGroupMappingDO">
select
group_id as groupId,
store_id as storeId
from store_group_mapping_${enterpriseId}
<where>
<foreach collection="groupIds" open=" group_id in (" close=")" separator="," item="groupId">
#{groupId}
</foreach>
</where>
group by group_id,store_id
</select>
</mapper>

View File

@@ -126,6 +126,7 @@
<select id="getStoreAreaList" resultType="com.cool.store.dto.store.StoreAreaDTO">
select
a.store_num as storeCode,
a.store_name as storeName,
a.store_id as storeId,
a.region_path as regionPath,
@@ -155,4 +156,20 @@
</if>
</select>
<select id="listStoreByRegionPathList" resultType="com.cool.store.dto.store.StoreAreaDTO">
select
store_name as storeName,
store_id as storeId,
region_path as regionPath,
region_id as regionId,
region_id as areaId
from store_${enterpriseId}
where is_delete = 'effective'
<if test="regionPathList != null and regionPathList.size >0 ">
<foreach collection="regionPathList" item="regionPath" separator=" or " open="and (" close=" )">
region_path like concat(#{regionPath}, '%')
</foreach>
</if>
</select>
</mapper>

View File

@@ -24,4 +24,33 @@
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="operator_list" jdbcType="LONGVARCHAR" property="operatorList" />
</resultMap>
<insert id="insertBatch" parameterType="java.util.List">
INSERT INTO store_message (
store_id,
store_code,
store_name,
message_template_id,
read_status,
read_time,
process_status,
process_time,
operator_list
)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
#{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}
)
</foreach>
</insert>
</mapper>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cool.store.mapper.EnterpriseUserGroupMappingMapper">
<select id="getUserIdsByGroupIdList" resultType="string">
select
user_id
from enterprise_user_group_mapping_${enterpriseId}
where group_id in (
<foreach collection="groupIdList" item="groupId" separator=",">
#{groupId}
</foreach>
)
</select>
</mapper>

View File

@@ -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;
}

View File

@@ -12,6 +12,7 @@ import java.util.List;
*/
@Data
public class StoreAreaDTO {
private String storeCode;
private String storeId;
private String storeName;
/**

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -10,7 +10,7 @@ import java.util.List;
* @Version 1.0
*/
@Data
public class MatterConfigDeletedRequest {
public class BatchDeletedRequest {
private List<Long> ids;

View File

@@ -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<Long> ids;
@ApiModelProperty( "默认门店范围 type[region store group]")
List<CommonDTO> storeInfoList;
@ApiModelProperty( "默认处理人信息 type[person position userGroup organization]")
List<CommonDTO> userInfoList;
}

View File

@@ -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;
}

View File

@@ -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<CommonDTO> storeInfoList;
@ApiModelProperty( "默认处理人信息 type[person position userGroup organization]")
List<CommonDTO> userInfoList;
}

View File

@@ -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);
}

View File

@@ -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<StoreUserPositionDTO> getStoreUser(List<String> storeCodeList);
List<AuthStoreUserDTO> authStoreUser(List<String> storeIdList, String positionType);
List<AuthStoreUserDTO> getStorePositionUserList(List<String> storeIds,
List<String> positionIds,
List<String> nodePersonList,
List<String> groupIdList,
List<String> regionIdList);
}

View File

@@ -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<MessageTemplateDO> 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<StoreAreaDTO> storeAreaDTOS = getStoreRange(request.getStoreInfoList());
List<String> storeIds = storeAreaDTOS.stream().map(StoreAreaDTO::getStoreId).collect(Collectors.toList());
Map<String, List<String>> authUser = getAuthUser(request.getUserInfoList(), storeIds);
List<MessageTemplateDO> list = messageTemplateDAO.getByIds(request.getIds());
//过滤 只保留未发布的
list = list.stream().filter(x -> PublishStatusEnum.UNPUBLISHED.getCode().equals(x.getPublishStatus())).collect(Collectors.toList());
list.stream().forEach(x -> {
List<StoreMessageDO> 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<String, List<String>> getAuthUser(List<CommonDTO> personInfo, List<String> storeIds){
if (CollectionUtils.isEmpty(personInfo)){
return new HashMap<>();
}
List<String> personIds = personInfo.stream().filter(x -> TypeEnum.PERSON.equals(x.getType()))
.map(CommonDTO::getValue).collect(Collectors.toList());
List<String> positionIds = personInfo.stream().filter(x -> TypeEnum.POSITION.equals(x.getType()))
.map(CommonDTO::getValue).collect(Collectors.toList());
List<String> groupIdList = personInfo.stream().filter(x -> TypeEnum.USER_GROUP.equals(x.getType()))
.map(CommonDTO::getValue).collect(Collectors.toList());
List<String> regionIdList = personInfo.stream().filter(x -> TypeEnum.ORGANIZATION.equals(x.getType()))
.map(CommonDTO::getValue).collect(Collectors.toList());
//权限
List<AuthStoreUserDTO> authStoreUserList = storeService.getStorePositionUserList(storeIds, positionIds, personIds, groupIdList, regionIdList);
Map<String, List<String>> 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<StoreAreaDTO> getStoreRange( List<CommonDTO> commonDTOS){
List<String> regionIds = commonDTOS.stream().filter(x -> TypeEnum.REGION.equals(x.getType()))
.map(CommonDTO::getValue).collect(Collectors.toList());
List<RegionDO> regionDOsByRegionIds = new ArrayList<>();
Set<String> storeIdSet = new HashSet<>();
if (CollectionUtils.isNotEmpty(regionIds)){
regionDOsByRegionIds = RegionDao.getRegionByRegionIds(regionIds);
//区域全路径地址集合 ["/1/37139128281/","/1/37139128283/"]
List<String> regionFullRegionPathList = regionDOsByRegionIds.stream().map(RegionDO::getFullRegionPath).collect(Collectors.toList());
//根据regionFullRegionPathList查询区域下所有的门店(包括子区域门店)
List<StoreAreaDTO> storeAreaDTOS = storeMapper.listStoreByRegionPathList(regionFullRegionPathList);
storeIdSet = storeAreaDTOS.stream().map(StoreAreaDTO::getStoreId).collect(Collectors.toSet());
}
List<String> 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<String> groupList = commonDTOS.stream().filter(x -> TypeEnum.GROUP.equals(x.getType()))
.map(CommonDTO::getValue).collect(Collectors.toList());
//分组
if (CollectionUtils.isNotEmpty(groupList)) {
List<StoreGroupMappingDO> groupStoreList = storeGroupMappingMapper.getStoreGroupMappingByGroupIDs(groupList);
if (CollectionUtils.isNotEmpty(groupStoreList)) {
Set<String> 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<StoreAreaDTO> storeDTOList = storeMapper.getStoreAreaList(new ArrayList<>(storeIdSet));
if(CollectionUtils.isNotEmpty(storeDTOList)){
storeDTOList = storeDTOList.stream().filter(o -> "open".equals(o.getStoreStatus())).collect(Collectors.toList());
}
return storeDTOList;
}
}

View File

@@ -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<StoreDTO> getStoreExtendFieldInfo(Integer pageSize, Integer pageNum) {
@@ -169,7 +171,54 @@ public class StoreServiceImpl implements StoreService {
return result;
}
private List<AuthStoreUserDTO> authStoreUser(List<String> storeIdList, String positionType) {
@Override
public List<AuthStoreUserDTO> getStorePositionUserList( List<String> storeIds,
List<String> positionIds,
List<String> nodePersonList,
List<String> groupIdList,
List<String> 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<AuthStoreUserDTO> authStoreUsers = this.authStoreUser(storeIds, null);
if (CollUtil.isEmpty(authStoreUsers)) {
return new ArrayList<>();
}
List<String> allUserIds = Lists.newArrayList();
if (CollectionUtils.isNotEmpty(positionIds)) {
List<String> userIds = sysRoleMapper.getPositionUserIds(positionIds);
allUserIds.addAll(userIds);
}
if (CollectionUtils.isNotEmpty(groupIdList)) {
List<String> groupUserIdList = enterpriseUserGroupMappingMapper.getUserIdsByGroupIdList(groupIdList);
if (CollectionUtils.isNotEmpty(groupUserIdList)) {
allUserIds.addAll(groupUserIdList);
}
}
if (CollectionUtils.isNotEmpty(regionIdList)) {
List<String> regionUserIdList = enterpriseUserMapper.getUserIdsByRegionIdList(regionIdList);
if (CollectionUtils.isNotEmpty(regionUserIdList)) {
allUserIds.addAll(regionUserIdList);
}
}
if (CollectionUtils.isNotEmpty(nodePersonList)) {
allUserIds.addAll(nodePersonList);
}
List<String> 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<AuthStoreUserDTO> authStoreUser(List<String> storeIdList, String positionType) {
List<AuthStoreUserDTO> result = new ArrayList<>();
if (CollectionUtils.isEmpty(storeIdList)) {
return result;

View File

@@ -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<Integer> 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<Integer> 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<Boolean> addMatterConfig(@RequestBody BatchDeletedRequest request) {
return ResponseResult.success(matterConfigService.deleteMatterConfig(request.getIds(), CurrentUserHolder.getUser()));
}
@PostMapping("/list")
@ApiOperation("事项配置列表")
public PageInfo<MatterAndMatterDetailVO> listByCondition(@RequestBody MatterConfigQueryRequest request) {
return matterConfigService.listByCondition(request);
public ResponseResult<PageInfo<MatterAndMatterDetailVO>> listByCondition(@RequestBody MatterConfigQueryRequest request) {
return ResponseResult.success(matterConfigService.listByCondition(request));
}

View File

@@ -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<Boolean> messageTemplateService(@RequestBody MessageTemplateAddRequest request) {
return ResponseResult.success(messageTemplateService.addMessageTemplate(request, CurrentUserHolder.getUser()));
}
@PostMapping("/edit")
@ApiOperation("编辑消息通知")
public ResponseResult<Boolean> editMessageTemplate(@RequestBody MessageTemplateAddRequest request) {
return ResponseResult.success(messageTemplateService.editMessageTemplate(request, CurrentUserHolder.getUser()));
}
@ApiOperation("通知详情")
@GetMapping("/getMessageTemplateDetail")
public ResponseResult<MessageTemplateDetailVO> getMessageTemplateDetail(@RequestParam("id")Long id) {
return ResponseResult.success(messageTemplateService.getMessageTemplateDetail(id));
}
@PostMapping("/batchDelete")
@ApiOperation("批量删除")
public ResponseResult<Boolean> editMessageTemplate(@RequestBody BatchDeletedRequest request) {
return ResponseResult.success(messageTemplateService.batchDeleteMessageTemplate(request, CurrentUserHolder.getUser()));
}
@PostMapping("/batchPublish")
@ApiOperation("批量发布")
public ResponseResult<Boolean> editMessageTemplate(@RequestBody BatchPublishRequest request) {
return ResponseResult.success(messageTemplateService.batchPublishMessageTemplate(request, CurrentUserHolder.getUser()));
}
}