彭雪彬
2025-09-04 206f601b1f2a2e3cb0bf4f5dead01bec9077d8e9
oying-system/src/main/java/com/oying/modules/message/common/MsgStatusEnum.java
New file
@@ -0,0 +1,197 @@
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 MsgStatusEnum {
    //订单消息  通知状态   用于插入
    //订单状态需要满足:
    /// 商户: 订单类消息,包括买家下单提醒、订单送达通知等
    /// 骑手:类消息,包括有待接单、订单已取消、距离最晚送达时间不足1小时、距离最晚送达时间不足30分钟等
    /// 骑手:系统后台针对订单,只提供不足1小时和不足30分钟两个提醒。时间分别在59分和29分
    /// 买家  订单类消息,包括订单状态变化通知、订单送达通知等
    /// 保留骑手已接单、骑手已取货
    /// 变量前缀商户 骑手 买家
    /**
     * 商户:新接单
     * 商户确认接单通知
     */
    MERCHANT_ACCEPTED(2, "新接单"),
    /**
     * 商户:商家已备货
     * 商户完成备货通知
     */
    MERCHANT_PREPARED(4, "商家已备货"),
    /* ========== 骑手相关状态 ========== */
    //加一个骑手取消接单
    RIDER_CANCEL_ACCEPT(14, "骑手取消接单"),
    /**
     * 骑手:有待接单
     * 骑手端有待接订单通知
     */
    RIDER_PENDING_ACCEPTANCE(3, "骑手已接单"),
    /**
     * 骑手:骑手已取货
     * 骑手取货完成通知
     */
    RIDER_PICKED_UP(6, "骑手已取货"),
    /**
     * 骑手:骑手已到店
     * 骑手到达商户店铺通知
     */
    RIDER_ARRIVED(5, "骑手已到店"),
    /**
     * 骑手:订单已取消
     * 订单取消通知骑手
     */
    RIDER_ORDER_CANCELLED(9, "订单已取消"),
    /**
     * 骑手:配送超时提醒
     * 距离最晚送达时间不足提醒,包括不足1小时和不足30分钟两种情况
     * 系统后台提供的定时提醒状态,在订单创建后59分钟和29分钟时触发
     */
    RIDER_DELIVERY_WARNING(10, "配送超时提醒"),
    /* ========== 买家相关状态 ========== */
    /**
     * 买家:订单已完成
     * 订单完成通知买家
     */
    BUYER_ORDER_COMPLETED(8, "订单已完成"),
    /**
     * 买家:订单送达通知
     * 订单送达通知买家
     */
    BUYER_ORDER_DELIVERED(13, "订单送达");
//    /* ========== 商户相关状态 ========== */
//    /**
//     * 商户:买家下单提醒
//     * 商户收到新订单通知
//     */
//    MERCHANT_ORDER_SUBMITTED(0, "订单已提交"),
//
////    /**
////     * 商户:支付成功通知
////     * 订单支付成功通知商户
////     */
////    MERCHANT_PAYMENT_SUCCESS(1, "支付成功"),
//
//    /**
//     * 商户:商家已接单
//     * 商户确认接单通知
//     */
//    MERCHANT_ACCEPTED(2, "商家已接单"),
//
//    /**
//     * 商户:商家已备货
//     * 商户完成备货通知
//     */
//    MERCHANT_PREPARED(4, "商家已备货"),
//
//
//    /* ========== 骑手相关状态 ========== */
//    //加一个骑手取消接单
//    RIDER_CANCEL_ACCEPT(14, "骑手取消接单"),
//    /**
//     * 骑手:有待接单
//     * 骑手端有待接订单通知
//     */
//    RIDER_PENDING_ACCEPTANCE(3, "骑手已接单"),
//
//    /**
//     * 骑手:骑手已取货
//     * 骑手取货完成通知
//     */
//    RIDER_PICKED_UP(6, "骑手已取货"),
//
//    /**
//     * 骑手:骑手已到店
//     * 骑手到达商户店铺通知
//     */
//    RIDER_ARRIVED(5, "骑手已到店"),
//
//    /**
//     * 骑手:订单已取消
//     * 订单取消通知骑手
//     */
//    RIDER_ORDER_CANCELLED(9, "订单已取消"),
//
//    /**
//     * 骑手:配送超时提醒
//     * 距离最晚送达时间不足提醒,包括不足1小时和不足30分钟两种情况
//     * 系统后台提供的定时提醒状态,在订单创建后59分钟和29分钟时触发
//     */
//    RIDER_DELIVERY_WARNING(10, "配送超时提醒"),
//
//
//    /* ========== 买家相关状态 ========== */
//    /**
//     * 买家:订单状态变化通知
//     * 订单状态更新通知买家
//     */
//    BUYER_ORDER_STATUS_CHANGED(7, "商品已送达"),
//
//    /**
//     * 买家:订单已完成
//     * 订单完成通知买家
//     */
//    BUYER_ORDER_COMPLETED(8, "订单已完成"),
//
//    /**
//     * 买家:订单送达通知
//     * 订单送达通知买家
//     */
//    BUYER_ORDER_DELIVERED(13, "订单送达");
    /**
     * 反向映射,提升查找速度
     */
    private static final Map<Integer, MsgStatusEnum> MAP =
            Arrays.stream(values())
                    .collect(Collectors.toMap(MsgStatusEnum::getKey, Function.identity()));
    private final Integer key;
    private final String value;
    /* ========== 工具方法 ========== */
    /**
     * 根据 key 获取枚举
     */
    public static MsgStatusEnum of(Integer key) {
        return key == null ? null : MAP.get(key);
    }
    /**
     * 根据 key 获取描述
     */
    public static String descOf(Integer key) {
        MsgStatusEnum e = of(key);
        return e == null ? "" : e.getValue();
    }
}