From 20a82a1fe750b75e2771898c708983b86610f8c0 Mon Sep 17 00:00:00 2001
From: leomonM <2233021400@qq.com>
Date: Fri, 22 Aug 2025 17:16:56 +0800
Subject: [PATCH] 消息的set
---
oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java | 7
oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java | 6 +
oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java | 70 ++++++++++-
oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml | 27 ++++
oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java | 5
oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java | 33 ++++
oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java | 206 +++++++++++++++++++++++++++++++--
7 files changed, 323 insertions(+), 31 deletions(-)
diff --git a/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java b/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java
index 918300a..04328c5 100644
--- a/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java
+++ b/oying-system/src/main/java/com/oying/modules/message/common/MesTypeEnum.java
@@ -6,13 +6,14 @@
@Getter
@AllArgsConstructor
public enum MesTypeEnum {
- //1=系统 2=订单 3=评价/留言 4=骑手 5=商户
+ //1=系统 2=订单 3=评价/留言 4=骑手 5=商户 6=买家
+ //2=订单 订单包含 4 5 6
SYSTEM(1, "系统"),
ORDER(2, "订单"),
COMMENT(3, "评价/留言"),
RIDER(4, "骑手"), // 补充骑手类型
- MERCHANT(5, "商户"); // 补充商户类型
-
+ MERCHANT(5, "商户"), // 补充商户类型
+ BUYER(6, "买家"); // 补充买家类型
private final Integer key;
private final String value;
diff --git a/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java
index 387199b..c354e01 100644
--- a/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java
+++ b/oying-system/src/main/java/com/oying/modules/message/domain/MesMsgRecord.java
@@ -99,6 +99,9 @@
private String buyerId;
@NotBlank
+ @ApiModelProperty(value = "买家用户名字")
+ private String buyerName;
+ @NotBlank
@ApiModelProperty(value = "订单编号 冗余字段")
private String orderNo;
@@ -111,7 +114,7 @@
private String shopName;
@ApiModelProperty(value = "骑手ID")
- private Long riderId;
+ private String riderId;
@ApiModelProperty(value = "骑手姓名 冗余字段")
private String riderName;
diff --git a/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java
index b3d0c3a..386c281 100644
--- a/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java
+++ b/oying-system/src/main/java/com/oying/modules/message/mapper/MesMsgRecordMapper.java
@@ -36,6 +36,12 @@
List<MesMsgRecordQueryPollDto> PollMesAll(@Param("platform") Long platform);
+ List<MesMsgRecordQueryOrderDto> queryorderPending(Long shopId, String content);
+
+ List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessages(Long buyerId);
+
+ List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessagesComplete(Long buyerId);
+
// IPage<MesMsgRecord> findAll(@Param("criteria") MesMsgRecordQueryCriteria criteria, Page<Object> page);
}
diff --git a/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
index 6963524..eb824ff 100644
--- a/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
+++ b/oying-system/src/main/java/com/oying/modules/message/rest/MesMsgRecordController.java
@@ -1,6 +1,7 @@
package com.oying.modules.message.rest;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.oying.modules.message.common.OrderStatusEnum;
import com.oying.modules.message.common.PlatFormEnum;
import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto;
@@ -148,19 +149,72 @@
}
/* 4. 用店铺id 查询订单消息 */
- @GetMapping("/order")
- @ApiOperation("用店铺id 查询订单消息")
- public R<List<MesMsgRecordQueryOrderDto>> order(@RequestParam Long shopId) {
+// @GetMapping("/order")
+// @ApiOperation("用店铺id 查询订单消息")
+// public R<List<MesMsgRecordQueryOrderDto>> order(@RequestParam Long shopId) {
+// try {
+// List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorder(shopId);
+// return R.success(res);
+// } catch (Exception e) {
+// log.error("用店铺id 获取订单消息失败,shopId: {}", shopId, e);
+// return R.fail("用店铺id 获取订单消息失败");
+//
+// }
+//
+// }
+
+ //商户端:买家下单提醒 根据商户id 获取买家下单提醒
+ @GetMapping("/order/pending")
+ @ApiOperation("商户端:用店铺id 获取下单订单消息")
+ public R<List<MesMsgRecordQueryOrderDto>> getPendingOrders(@RequestParam Long shopId) {
try {
- List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorder(shopId);
+ String content = OrderStatusEnum.MERCHANT_ORDER_SUBMITTED.getValue();
+ List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorderPending(shopId, content);
return R.success(res);
} catch (Exception e) {
- log.error("用店铺id 获取订单消息失败,shopId: {}", shopId, e);
- return R.fail("用店铺id 获取订单消息失败");
-
+ log.error("用店铺id 获取待处理订单消息失败,shopId: {}", shopId, e);
+ return R.fail("用店铺id 获取待处理订单消息失败");
}
-
}
+ //商户端:订单送达通知 。 根据商户id 获取买家下订单送达
+ @GetMapping("/order/delivered")
+ @ApiOperation("商户端:用店铺id 获取订单送达消息")
+ public R<List<MesMsgRecordQueryOrderDto>> getDeliveredOrders(@RequestParam Long shopId) {
+ try {
+ String content = OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED.getValue();
+ List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryorderPending(shopId, content);
+ return R.success(res);
+ } catch (Exception e) {
+ log.error("用店铺id 获取已送达订单消息失败,shopId: {}", shopId, e);
+ return R.fail("用店铺id 获取已送达订单消息失败");
+ }
+ }
+
+ //买家端:订单状态变化通知
+ @GetMapping("/buyer/order/status")
+ @ApiOperation("买家端:获取订单状态变化消息")
+ public R<List<MesMsgRecordQueryOrderDto>> getBuyerOrderStatus(@RequestParam Long buyerId) {
+ try {
+ List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryBuyerOrderMessages(buyerId);
+ return R.success(res);
+ } catch (Exception e) {
+ log.error("买家端获取订单状态变化消息失败,buyerId: {}", buyerId, e);
+ return R.fail("获取订单状态变化消息失败");
+ }
+ }
+
+ //买家端:订单送达通知
+ @GetMapping("/buyer/order/delivered")
+ @ApiOperation("买家端:获取订单送达消息")
+ public R<List<MesMsgRecordQueryOrderDto>> getBuyerDeliveredOrders(@RequestParam Long buyerId) {
+ try {
+ List<MesMsgRecordQueryOrderDto> res = mesMsgRecordService.queryBuyerOrderMessagesComplete(buyerId);
+ return R.success(res);
+ } catch (Exception e) {
+ log.error("买家端获取订单送达消息失败,buyerId: {}", buyerId, e);
+ return R.fail("获取订单送达消息失败");
+ }
+ }
}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
index 5355816..20e89cd 100644
--- a/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
+++ b/oying-system/src/main/java/com/oying/modules/message/service/MesMsgRecordService.java
@@ -75,11 +75,36 @@
PageResult<MesMsgRecordQuerySystemDto> queryAllSysNotice(MesMsgRecordQueryCriteria criteria, Page<Object> page);
+ List<MesMsgRecordQueryOrderDto> queryorderPending(Long shopId, String content);
+
+ List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessages(Long buyerId);
+
+ List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessagesComplete(Long buyerId);
+
List<MesMsgRecordQueryOrderDto> queryorder(Long shopId);
- //插入订单消息
-// 入参 订单编号 订单状态(内容) 店铺id
- void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId);
-
List<MesMsgRecordQueryPollDto> PollMesAll(Long platform);
+
+
+ //插入订单消息
+
+// 入参 订单编号 订单状态(内容) 店铺id 没有传空值
+
+ // void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId);
+ // 设置一个买家状态为下单 买家id name 订单属性 店铺号
+ void setBuyerStatusOrderSubmitted(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName);
+
+ //设置一个买家状态为送达 买家id name 订单属性 店铺号
+ void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName);
+
+ // 设置一个(订单,买家)的 买家状态
+ void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName);
+
+
+ //设置商家的状态
+ void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName);
+
+ //设置骑手状态
+ void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName);
+
}
diff --git a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
index bd0752b..4fb071b 100644
--- a/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
@@ -113,25 +113,201 @@
return mesMsgRecordMapper.queryorder(shopId);
}
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId) {
- MesMsgRecord record = new MesMsgRecord();
- record.setOrderNo(orderNo);
- record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
- record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
- record.setShopId(shopId);
- record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
- record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
- record.setCreateTime(new Timestamp(System.currentTimeMillis()));
- record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
- mesMsgRecordMapper.insert(record); // 让异常直接往外抛
-
- }
+// @Override
+// @Transactional(rollbackFor = Exception.class)
+// public void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId) {
+// MesMsgRecord record = new MesMsgRecord();
+// record.setOrderNo(orderNo);
+// record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+// record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+// record.setShopId(shopId);
+// record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
+// record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+// record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+// record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+// mesMsgRecordMapper.insert(record); // 让异常直接往外抛
+//
+// }
@Override
public List<MesMsgRecordQueryPollDto> PollMesAll(Long platform) {
return mesMsgRecordMapper.PollMesAll(platform);
}
+
+ // 设置一个买家状态为下单 不存在则插入 买家id name 订单属性 店铺号
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void setBuyerStatusOrderSubmitted(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName) {
+ MesMsgRecord record = new MesMsgRecord();
+ record.setOrderNo(orderNo);
+ record.setContent(OrderStatusEnum.MERCHANT_ORDER_SUBMITTED.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(OrderStatusEnum.MERCHANT_ORDER_SUBMITTED.getKey()));// 使用枚举的描述作为消息内容key
+ record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+ record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
+ record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+ if (riderId != null) {
+ record.setRiderId(riderId);
+ }
+ if (riderName != null) {
+ record.setRiderName(riderName);
+ }
+ if (shopId != null) {
+ record.setShopId(shopId);
+ }
+ if (buyerName != null) {
+ record.setBuyerName(buyerName);
+ }
+ record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+ record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+ mesMsgRecordMapper.insert(record);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, String riderId, String riderName) {
+ MesMsgRecord record = new MesMsgRecord();
+ record.setOrderNo(orderNo);
+ record.setContent(OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED.getKey()));// 使用枚举的描述作为消息内容key
+ record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+ record.setMsgType(MesTypeEnum.ORDER.getKey()); // 订单消息类型为2
+ record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+ if (riderId != null) {
+ record.setRiderId(riderId);
+ }
+ if (riderName != null) {
+ record.setRiderName(riderName);
+ }
+ if (shopId != null) {
+ record.setShopId(shopId);
+ }
+ if (buyerName != null) {
+ record.setBuyerName(buyerName);
+ }
+ record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+ record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+ mesMsgRecordMapper.insert(record);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void setBuyerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName) {
+ //content只能设置为如下 "商品已送达" "订单已完成" "订单送达"
+ if (content == null ||
+ (!content.equals(OrderStatusEnum.BUYER_ORDER_STATUS_CHANGED) &&
+ !content.equals(OrderStatusEnum.BUYER_ORDER_COMPLETED) &&
+ !content.equals(OrderStatusEnum.BUYER_ORDER_DELIVERED))) {
+ throw new IllegalArgumentException("content只能设置为如下 \"商品已送达\" \"订单已完成\" \"订单送达\"");
+ }
+ MesMsgRecord record = new MesMsgRecord();
+ record.setOrderNo(orderNo);
+ record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+ record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+ record.setMsgType(MesTypeEnum.BUYER.getKey()); //
+ record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+ if (riderId != null) {
+ record.setRiderId(riderId);
+ }
+ if (riderName != null) {
+ record.setRiderName(riderName);
+ }
+ if (shopId != null) {
+ record.setShopId(shopId);
+ }
+ if (buyerName != null) {
+ record.setBuyerName(buyerName);
+ }
+ record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+ record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+ mesMsgRecordMapper.insert(record);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void setSellerStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName) {
+ //content只能为 "订单已提交" "商家已接单" 商家已备货"
+ if (content == null ||
+ (content != OrderStatusEnum.MERCHANT_ORDER_SUBMITTED &&
+ content != OrderStatusEnum.MERCHANT_ACCEPTED &&
+ content != OrderStatusEnum.MERCHANT_PREPARED)) {
+ throw new IllegalArgumentException("content只能为 \"订单已提交\" \"商家已接单\" 商家已备货\"");
+ }
+ MesMsgRecord record = new MesMsgRecord();
+ record.setOrderNo(orderNo);
+ record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+ record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+ record.setMsgType(MesTypeEnum.MERCHANT.getKey()); //
+ record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+ if (riderId != null) {
+ record.setRiderId(riderId);
+ }
+ if (riderName != null) {
+ record.setRiderName(riderName);
+ }
+ if (shopId != null) {
+ record.setShopId(shopId);
+ }
+ if (buyerName != null) {
+ record.setBuyerName(buyerName);
+ }
+ record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+ record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+ mesMsgRecordMapper.insert(record);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void setRiderStatusOrderDelivered(String buyerId, String buyerName, String orderNo, Long shopId, OrderStatusEnum content, String riderId, String riderName) {
+ //content只能为 "骑手已接单" "骑手已取货" "骑手已到店" "订单已取消" "距离最晚送达时间不足1小时" "距离最晚送达时间不足30分钟"
+ if (content == null ||
+ (content != OrderStatusEnum.RIDER_PENDING_ACCEPTANCE &&
+ content != OrderStatusEnum.RIDER_PICKED_UP &&
+ content != OrderStatusEnum.RIDER_ARRIVED &&
+ content != OrderStatusEnum.RIDER_ORDER_CANCELLED &&
+ content != OrderStatusEnum.RIDER_DELIVERY_WARNING_1H &&
+ content != OrderStatusEnum.RIDER_DELIVERY_WARNING_30MIN)) {
+ throw new IllegalArgumentException("content只能为 \"骑手已接单\" \"骑手已取货\" \"骑手已到店\" \"订单已取消\" \"距离最晚送达时间不足1小时\" \"距离最晚送达时间不足30分钟\"");
+ }
+ MesMsgRecord record = new MesMsgRecord();
+ record.setOrderNo(orderNo);
+ record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+ record.setBuyerId(buyerId != null ? buyerId : ""); // 处理空值情况
+ record.setMsgType(MesTypeEnum.RIDER.getKey()); //
+ record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+ if (riderId != null) {
+ record.setRiderId(riderId);
+ }
+ if (riderName != null) {
+ record.setRiderName(riderName);
+ }
+ if (shopId != null) {
+ record.setShopId(shopId);
+ }
+ if (buyerName != null) {
+ record.setBuyerName(buyerName);
+ }
+ record.setCreateTime(new Timestamp(System.currentTimeMillis()));
+ record.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+ mesMsgRecordMapper.insert(record);
+ }
+
+
+ @Override
+ public List<MesMsgRecordQueryOrderDto> queryorderPending(Long shopId, String content) {
+ return mesMsgRecordMapper.queryorderPending(shopId, content);
+ }
+
+ @Override
+ public List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessages(Long buyerId) {
+ return mesMsgRecordMapper.queryBuyerOrderMessages(buyerId);
+ }
+
+ @Override
+ public List<MesMsgRecordQueryOrderDto> queryBuyerOrderMessagesComplete(Long buyerId) {
+ return mesMsgRecordMapper.queryBuyerOrderMessagesComplete(buyerId);
+ }
}
diff --git a/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml b/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml
index d1e1d60..0c8d08a 100644
--- a/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml
+++ b/oying-system/src/main/resources/mapper/message/MesMsgRecordMapper.xml
@@ -128,4 +128,31 @@
</where>
order by id desc
</select>
+ <select id="queryorderPending"
+ resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+ parameterType="map">
+ SELECT id, content, order_no
+ FROM mes_msg_record
+ WHERE content = #{content}
+ AND shop_id = #{shopId}
+ ORDER BY id DESC
+ </select>
+ <select id="queryBuyerOrderMessages"
+ resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+ parameterType="java.lang.Long">
+ select id, content, order_no
+ from mes_msg_record
+ where buyer_id = #{buyerId}
+ order by id desc
+ </select>
+ <select id="queryBuyerOrderMessagesComplete"
+ resultType="com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto"
+ parameterType="java.lang.Long">
+ select id, content, order_no
+ from mes_msg_record
+ where buyer_id = #{buyerId}
+ and content = '订单完成'
+ order by id desc
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3