leomon
2025-07-12 0233d941ae15db1a089bdb633f76d67be6a15ed3
优化
1 files added
6 files modified
146 ■■■■ changed files
oying-system/src/main/java/com/oying/modules/message/common/OrderStatusEnum.java 52 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/domain/dto/MessageOrderSellerDTO.java 5 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/mapper/MessageOrderSellerMapper.java 2 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/rest/MessageOrderSellerController.java 26 ●●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/MessageOrderSellerService.java 8 ●●●● patch | view | raw | blame | history
oying-system/src/main/java/com/oying/modules/message/service/impl/MessageOrderSellerServiceImpl.java 48 ●●●●● patch | view | raw | blame | history
oying-system/src/main/resources/mapper/message/MessageOrderSellerMapper.xml 5 ●●●●● patch | view | raw | blame | history
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) {
        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>