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 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(); } }