From 0233d941ae15db1a089bdb633f76d67be6a15ed3 Mon Sep 17 00:00:00 2001 From: leomon <2233021400@qq.com> Date: Sat, 12 Jul 2025 23:22:48 +0800 Subject: [PATCH] 优化 --- oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java | 5 + oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java | 26 +++++--- oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java | 8 ++ oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java | 2 oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java | 50 +++++++++++++++- oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java | 52 +++++++++++++++++ oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml | 5 + 7 files changed, 131 insertions(+), 17 deletions(-) diff --git a/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java new file mode 100644 index 0000000..ea390f5 --- /dev/null +++ b/oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java @@ -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())); +} \ No newline at end of file diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java b/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java index f33e962..ac6906e 100644 --- a/oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java +++ b/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; diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java index 510e800..18306cb 100644 --- a/oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java +++ b/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); } diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java index e73785e..0a972a6 100644 --- a/oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java +++ b/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//重复值处理 //让后端队友更新我的表 diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java b/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java index ca3615e..db8686c 100644 --- a/oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java +++ b/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) ; } diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java index d5fc522..a248ec6 100644 --- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java +++ b/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); + } + + + } diff --git a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml b/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml index 5af3eb5..3650877 100644 --- a/oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml +++ b/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> \ No newline at end of file -- Gitblit v1.9.3