feat:matterType

This commit is contained in:
苏竹红
2025-08-29 13:16:33 +08:00
parent f6b695bf69
commit dce1fe5e52
14 changed files with 121 additions and 4 deletions

View File

@@ -299,7 +299,9 @@ public enum ErrorCodeEnum {
STORE_MESSAGE_REVOKE(1610003,"当前门店消息已撤销,请务重复操作",null), STORE_MESSAGE_REVOKE(1610003,"当前门店消息已撤销,请务重复操作",null),
STORE_MESSAGE_HANDLED(1610004,"当前门店消息已处理,无法撤销!",null), STORE_MESSAGE_HANDLED(1610004,"当前门店消息已处理,无法撤销!",null),
MATTER_STORE_OR_USER_IS_NULL(1610005,"当前事项门店或者人员为空,发布失败,请确认!",null), MATTER_STORE_OR_USER_IS_NULL(1610005,"当前事项门店或者人员为空,发布失败,请确认!",null),
CONFIG_NOT_EXIST(1610006,"配置不存在或被禁用,请确认!",null); CONFIG_NOT_EXIST(1610006,"配置不存在或被禁用,请确认!",null),
MESSAGE_NOT_EXIST(1610007,"消息模板不存在或已被删除",null),
MESSAGE_NOT_HANDLED(1610008,"当前消息无需处理,请确认消息处理类型!",null),
; ;

View File

@@ -71,6 +71,13 @@ public class MessageTemplateDAO {
return messageTemplateMapper.batchUpdatePublishStatus(ids); return messageTemplateMapper.batchUpdatePublishStatus(ids);
} }
public MessageTemplateDO getByKeyword(String keyword) {
if (keyword == null){
return null;
}
return messageTemplateMapper.getByKeyword(keyword);
}
} }

View File

@@ -87,4 +87,11 @@ public class StoreMessageDAO {
public MessageDetailVO getMessageDetail(Long id){ public MessageDetailVO getMessageDetail(Long id){
return storeMessageMapper.getMessageDetail(id); return storeMessageMapper.getMessageDetail(id);
} }
public Integer batchUpdateHandle(Long id, List<String> storeCodeList){
if (id==null||CollectionUtils.isEmpty(storeCodeList)){
return 0;
}
return storeMessageMapper.batchUpdateHandle(id,storeCodeList);
}
} }

View File

@@ -3,6 +3,7 @@ package com.cool.store.mapper;
import com.cool.store.dto.notice.CommonDTO; import com.cool.store.dto.notice.CommonDTO;
import com.cool.store.dto.notice.NoticeDTO; import com.cool.store.dto.notice.NoticeDTO;
import com.cool.store.entity.MessageTemplateDO; import com.cool.store.entity.MessageTemplateDO;
import com.cool.store.entity.StoreMessageDO;
import com.cool.store.request.notice.MessageTemplateQueryRequest; import com.cool.store.request.notice.MessageTemplateQueryRequest;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
@@ -25,6 +26,11 @@ public interface MessageTemplateMapper extends Mapper<MessageTemplateDO> {
int batchUpdatePublishStatus(@Param("ids") List<Long> ids); int batchUpdatePublishStatus(@Param("ids") List<Long> ids);
/**
* 根据关键词查询
* @param keyword
* @return
*/
MessageTemplateDO getByKeyword(@Param("keyword") String keyword);
} }

View File

@@ -35,4 +35,11 @@ public interface StoreMessageMapper extends Mapper<StoreMessageDO> {
MessageDetailVO getMessageDetail(Long id); MessageDetailVO getMessageDetail(Long id);
/**
* 批量更新处理
* @param id
* @param storeCodeList
*/
int batchUpdateHandle(@Param("id") Long id, @Param("storeCodeList") List<String> storeCodeList);
} }

View File

@@ -127,4 +127,14 @@
</foreach> </foreach>
</update> </update>
<select id="getByKeyword" resultMap="BaseResultMap">
SELECT
*
FROM zxjp_message_template
WHERE deleted = 0
<if test="keyword != null and keyword != ''">
AND handle_keyword = #{keyword,jdbcType=VARCHAR}
</if>
</select>
</mapper> </mapper>

View File

@@ -216,6 +216,24 @@
a.id = #{id} a.id = #{id}
</select> </select>
<update id="batchUpdateHandle">
UPDATE zxjp_store_message
SET
process_status = 1,
process_time = NOW(),
read_status = 1,
read_time = NOW(),
update_time = NOW()
<where>
<if test="id != null">
AND message_template_id = #{id}
</if>
and store_code IN
<foreach item="item" collection="storeCodeList" index="index" separator="," close=")" open="(">
#{item}
</foreach>
</where>
</update>

View File

@@ -156,5 +156,8 @@ public class MessageTemplateDO {
@Column(name = "jump_url") @Column(name = "jump_url")
private String jumpUrl; private String jumpUrl;
@Column(name = "handle_keyword")
private String handleKeyword;
} }

View File

@@ -0,0 +1,26 @@
package com.cool.store.request.notice;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @Author suzhuhong
* @Date 2025/8/29 11:10
* @Version 1.0
*/
@Data
public class ThirdHandleMessageRequest {
@ApiModelProperty("发起任务时 传的handleKeyword")
@NotBlank(message = "handleKeyword不能为空")
private String handleKeyword;
@ApiModelProperty("门店编码列表")
@NotNull(message = "门店编码列表不能为空")
private List<String> shopCodeList;
}

View File

@@ -60,4 +60,7 @@ public class ThirdMatterRequest {
private String jumpUrl; private String jumpUrl;
@ApiModelProperty("处理关键字 针对processType需要处理的字段 需要传递该关键字识别 注意 每个批次门店任务keyword不能重复")
private String handleKeyword;
} }

View File

@@ -102,4 +102,5 @@ public interface MessageTemplateService {
Boolean handleMessage(Long id, PartnerUserInfoVO userInfoVO); Boolean handleMessage(Long id, PartnerUserInfoVO userInfoVO);
ApiResponse<Boolean> thirdHandleMessage(ThirdHandleMessageRequest request);
} }

View File

@@ -36,8 +36,12 @@ public class MatterConfigServiceImpl implements MatterConfigService {
MatterConfigDO matterConfigDO = new MatterConfigDO(); MatterConfigDO matterConfigDO = new MatterConfigDO();
BeanUtils.copyProperties(request, matterConfigDO); BeanUtils.copyProperties(request, matterConfigDO);
matterConfigDO.setCreateUserId(currentUser.getUserId()); matterConfigDO.setCreateUserId(currentUser.getUserId());
matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList())); if (CollectionUtils.isNotEmpty(request.getStoreInfoList())){
matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList())); matterConfigDO.setDefaultStoreInfo(JSONObject.toJSONString(request.getStoreInfoList()));
}
if (CollectionUtils.isNotEmpty(request.getUserInfoList())){
matterConfigDO.setDefaultHandlePersonInfo(JSONObject.toJSONString(request.getUserInfoList()));
}
return matterConfigDAO.insert(matterConfigDO); return matterConfigDAO.insert(matterConfigDO);
} }

View File

@@ -186,6 +186,7 @@ public class MessageTemplateServiceImpl implements MessageTemplateService {
@Override @Override
@Transactional(rollbackFor = Exception.class)
public ApiResponse<Boolean> thirdMatterHandle(ThirdMatterRequest thirdMatterRequest) { public ApiResponse<Boolean> thirdMatterHandle(ThirdMatterRequest thirdMatterRequest) {
log.info("thirdMatterHandle request{}", JSONObject.toJSONString(thirdMatterRequest)); log.info("thirdMatterHandle request{}", JSONObject.toJSONString(thirdMatterRequest));
//第三方事项处理 //第三方事项处理
@@ -212,6 +213,7 @@ public class MessageTemplateServiceImpl implements MessageTemplateService {
messageTemplateDO.setPublishStatus(PublishStatusEnum.UNPUBLISHED.getCode()); messageTemplateDO.setPublishStatus(PublishStatusEnum.UNPUBLISHED.getCode());
messageTemplateDO.setJumpType(matterConfig.getJumpType()); messageTemplateDO.setJumpType(matterConfig.getJumpType());
messageTemplateDO.setJumpUrl(matterConfig.getJumpUrl()); messageTemplateDO.setJumpUrl(matterConfig.getJumpUrl());
messageTemplateDO.setHandleKeyword(thirdMatterRequest.getHandleKeyword());
if (MatterTypeEnum.LOGISTICS.getCode().equals(matterConfig.getMatterType())){ if (MatterTypeEnum.LOGISTICS.getCode().equals(matterConfig.getMatterType())){
SceneEnum scene = SceneEnum.getByCode(thirdMatterRequest.getSceneCode()); SceneEnum scene = SceneEnum.getByCode(thirdMatterRequest.getSceneCode());
@@ -449,6 +451,20 @@ public class MessageTemplateServiceImpl implements MessageTemplateService {
return Boolean.TRUE; return Boolean.TRUE;
} }
@Override
public ApiResponse<Boolean> thirdHandleMessage(ThirdHandleMessageRequest request) {
log.info("thirdHandleMessage request:{}", JSONObject.toJSONString(request));
MessageTemplateDO message = messageTemplateDAO.getByKeyword(request.getHandleKeyword());
if (message==null){
return ApiResponse.error(ErrorCodeEnum.MESSAGE_NOT_EXIST);
}
if (!ProcessTypeEnum.HANDLE.equals(message.getProcessType())){
return ApiResponse.error(ErrorCodeEnum.MESSAGE_NOT_HANDLED);
}
storeMessageDAO.batchUpdateHandle(message.getId(), request.getShopCodeList());
return ApiResponse.success(Boolean.TRUE);
}
public Map<String, List<String>> getAuthUser(List<CommonDTO> personInfo, List<String> storeIds){ public Map<String, List<String>> getAuthUser(List<CommonDTO> personInfo, List<String> storeIds){
if (CollectionUtils.isEmpty(personInfo)){ if (CollectionUtils.isEmpty(personInfo)){

View File

@@ -1,11 +1,13 @@
package com.cool.store.controller.webb; package com.cool.store.controller.webb;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cool.store.context.PartnerUserHolder;
import com.cool.store.dto.*; import com.cool.store.dto.*;
import com.cool.store.dto.store.StoreUserPositionDTO; import com.cool.store.dto.store.StoreUserPositionDTO;
import com.cool.store.request.OpenApiStoreRequest; import com.cool.store.request.OpenApiStoreRequest;
import com.cool.store.request.StoreCodeDTO; import com.cool.store.request.StoreCodeDTO;
import com.cool.store.request.*; import com.cool.store.request.*;
import com.cool.store.request.notice.ThirdHandleMessageRequest;
import com.cool.store.request.notice.ThirdMatterRequest; import com.cool.store.request.notice.ThirdMatterRequest;
import com.cool.store.request.xgj.FranchiseFeeCallBackRequest; import com.cool.store.request.xgj.FranchiseFeeCallBackRequest;
import com.cool.store.request.xgj.ReceiptCallBackRequest; import com.cool.store.request.xgj.ReceiptCallBackRequest;
@@ -162,4 +164,9 @@ public class OpenApiController {
} }
@ApiOperation("确认已处理")
@GetMapping("/handleMessage")
public ApiResponse<Boolean> handleMessage(@RequestBody @Validated ThirdHandleMessageRequest request) {
return messageTemplateService.thirdHandleMessage(request);
}
} }