oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java
New file @@ -0,0 +1,52 @@ package com.oying.modules.message.common; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Arrays; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; /** * 订单状态枚举 * * @author leomon * @date 2025-05-20 */ @Getter @AllArgsConstructor public enum OrderStatusEnum { ZERO(0, "订单已提交"), ONE(1, "支付成功"), TWO(2, "商家已接单"), THREE(3, "骑手已接单"), FOUR(4, "商家已备货"), FIVE(5, "骑手已到店"), SIX(6, "骑手已取货"), SEVEN(7, "商品已送达"), EIGHT(8, "订单已完成"), NINE(9, "订单已取消"); private final Integer key; private final String value; /* ========== 工具方法 ========== */ /** 根据 key 获取枚举 */ public static OrderStatusEnum of(Integer key) { return key == null ? null : MAP.get(key); } /** 根据 key 获取描述 */ public static String descOf(Integer key) { OrderStatusEnum e = of(key); return e == null ? "" : e.getValue(); } /** 反向映射,提升查找速度 */ private static final Map<Integer, OrderStatusEnum> MAP = Arrays.stream(values()) .collect(Collectors.toMap(OrderStatusEnum::getKey, Function.identity())); } oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java
@@ -8,10 +8,13 @@ @Data public class MessageOrderSellerDTO { //加一个主键 private Integer id; private Integer orderId; private String messageType; // private String messageType; private String messageContent; oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java
@@ -25,4 +25,6 @@ Boolean updateMessageOrderSellerRead(Integer orderId); boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources); boolean updateReadStatusById(Integer id); } oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java
@@ -102,16 +102,22 @@ } //让前端标记已读 @PostMapping("/read/{order_id}") @ApiOperation("让前端标记已读 按条") public R<String> getMessageOrderSellerRead(@PathVariable Integer order_id) { if(messageOrderSellerService.updateMessageOrderSellerRead(order_id)){ return R.success("已读"); }else{ return R.fail("id不存在"); } //修改逻辑 主键为条件 而不是订单号,有些订单号可能重复 含多条信息 已弃用 // @PostMapping("/readByorderid/{order_id}") // @ApiOperation("让前端标记已读 按条") // public R<String> getMessageOrderSellerRead(@PathVariable Integer order_id) { // if(messageOrderSellerService.updateMessageOrderSellerRead(order_id)){ // return R.success("已读"); // }else{ // return R.fail("id不存在"); // } // } //让前端标记已读 主键为条件 @PostMapping("/read/{id}") @ApiOperation("标记单条消息为已读(按主键 id)") public R<String> markReadByPrimaryKey(@PathVariable Integer id) { boolean updated = messageOrderSellerService.updateReadStatusById(id); return updated ? R.success("已读") : R.fail("消息 id 不存在"); } @Beta//重复值处理 //让后端队友更新我的表 oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java
@@ -77,8 +77,8 @@ * </p> * <p> * 可选字段: * - messageType:消息类型 : 供流程使用 订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消" * - messageContent:消息内容 : "订单已提交" :"支付成功" 商家已接单 骑手已接单" * - messageType:消息类型 : 暂未使用 * - messageContent:消息内容 : "订单已提交" :"支付成功" 商家已接单 骑手已接单" 即com.oying.modules.message.common.OrderStatusEnum * - link:链接 * - flag:标志字段(默认值为未读 0) * </p> @@ -88,4 +88,8 @@ */ @Beta boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources); boolean updateReadStatusById(Integer id); // public void saveMessage(MessageOrderSeller resources) ; } oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java
@@ -9,6 +9,7 @@ import com.oying.modules.message.service.MessageOrderSellerService; import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria; import com.oying.modules.message.mapper.MessageOrderSellerMapper; import lombok.extern.slf4j.Slf4j; import org.apache.poi.util.Beta; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -25,11 +26,15 @@ * @author 李萌 * @date 2025-05-20 **/ @Slf4j @Service @RequiredArgsConstructor public class MessageOrderSellerServiceImpl extends ServiceImpl<MessageOrderSellerMapper, MessageOrderSeller> implements MessageOrderSellerService { private final MessageOrderSellerMapper messageOrderSellerMapper; @Override public PageResult<MessageOrderSeller> queryAll(MessageOrderSellerQueryCriteria criteria, Page<Object> page){ @@ -104,19 +109,56 @@ * </p> * <p> * 可选字段: * - messageType:消息类型 : 供流程使用 订单状态: 1-待取货 2-配送中 3-已完成 4-商家取消 5-骑手取消 6-客户取消 7-系统取消" * - messageContent:消息内容 : "订单已提交" :"支付成功" 商家已接单 骑手已接单" * - messageType:消息类型 : 暂时不用 * - messageContent:消息内容 : "订单已提交" :"支付成功" 商家已接单 骑手已接单".......com.oying.modules.message.common.OrderStatusEnum * - link:链接 * - flag:标志字段(默认值为未读 0) * </p> * * @param resources MessageOrderSeller 对象,包含需要保存或更新的数据。 * @return true 表示保存成功,false 表示保存失败。 * * 目前插入orderId storeId messageContent即可,其他保留--------- */ @Beta @Override public boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources) { return messageOrderSellerMapper.saveMessageOrderSellerByOrderIdAndStoreId(resources); try { // 1. 判断重复的记录是否存在 // // messageType此处不用 long count = this.lambdaQuery() .eq(MessageOrderSeller::getOrderId, resources.getOrderId()) .eq(MessageOrderSeller::getStoreId, resources.getStoreId()) .eq(MessageOrderSeller::getMessageContent, resources.getMessageContent()) .eq(MessageOrderSeller::getFlag, 0) // 未读 .count(); //存在 不插入 if (count > 0) { log.warn("消息已存在,跳过保存:{}", resources); return false; }else{ return messageOrderSellerMapper.saveMessageOrderSellerByOrderIdAndStoreId(resources); } } catch (Exception e) { log.error("保存消息异常", e); return false; } } @Override public boolean updateReadStatusById(Integer id) { return messageOrderSellerMapper.updateReadStatusById(id); } } oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml
@@ -63,6 +63,11 @@ set flag = 1 where order_id = #{orderId} </update> <update id="updateReadStatusById"> update message_order_seller set flag = 1 where id = #{id} </update> </mapper>