From 206f601b1f2a2e3cb0bf4f5dead01bec9077d8e9 Mon Sep 17 00:00:00 2001
From: 彭雪彬 <1724387007@qq.com>
Date: Thu, 04 Sep 2025 15:28:52 +0800
Subject: [PATCH] Merge branch 'xin' into pxb
---
oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java | 312 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 312 insertions(+), 0 deletions(-)
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
new file mode 100644
index 0000000..c3f6531
--- /dev/null
+++ b/oying-system/src/main/java/com/oying/modules/message/service/impl/MesMsgRecordServiceImpl.java
@@ -0,0 +1,312 @@
+package com.oying.modules.message.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.oying.modules.message.common.MesReadEnum;
+import com.oying.modules.message.common.MesTypeEnum;
+import com.oying.modules.message.common.MsgStatusEnum;
+import com.oying.modules.message.domain.MesMsgRecord;
+import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQueryOrderDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQueryPollDto;
+import com.oying.modules.message.domain.myDto.MesMsgRecordQuerySystemDto;
+import com.oying.modules.message.mapper.MesMsgRecordMapper;
+import com.oying.modules.message.service.MesMsgRecordService;
+import com.oying.modules.sh.domain.Order;
+import com.oying.utils.FileUtil;
+import com.oying.utils.PageResult;
+import com.oying.utils.PageUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author 李萌
+ * @description 服务实现
+ * @date 2025-07-25
+ **/
+@Service
+@RequiredArgsConstructor
+public class MesMsgRecordServiceImpl extends ServiceImpl<MesMsgRecordMapper, MesMsgRecord> implements MesMsgRecordService {
+
+ private final MesMsgRecordMapper mesMsgRecordMapper;
+
+ @Override
+ public PageResult<MesMsgRecord> queryAll(MesMsgRecordQueryCriteria criteria, Page<Object> page) {
+ return PageUtil.toPage(mesMsgRecordMapper.findAll(criteria, page));
+ }
+
+ @Override
+ public List<MesMsgRecord> queryAll(MesMsgRecordQueryCriteria criteria) {
+ return mesMsgRecordMapper.findAll(criteria);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void create(MesMsgRecord resources) {
+ mesMsgRecordMapper.insert(resources);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void update(MesMsgRecord resources) {
+ MesMsgRecord mesMsgRecord = getById(resources.getId());
+ mesMsgRecord.copy(resources);
+ mesMsgRecordMapper.updateById(mesMsgRecord);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void deleteAll(List<Long> ids) {
+ mesMsgRecordMapper.deleteBatchIds(ids);
+ }
+
+ @Override
+ public void download(List<MesMsgRecord> all, HttpServletResponse response) throws IOException {
+ List<Map<String, Object>> list = new ArrayList<>();
+ for (MesMsgRecord mesMsgRecord : all) {
+ Map<String, Object> map = new LinkedHashMap<>();
+ map.put("模板ID 可无", mesMsgRecord.getTemplateId());
+ map.put("接收人ID", mesMsgRecord.getReceiverId());
+ map.put("1=买家 2=商户 3=骑手", mesMsgRecord.getPlatform());
+ map.put("同模板type", mesMsgRecord.getMsgType());
+ map.put("最终标题", mesMsgRecord.getTitle());
+ map.put("最终内容", mesMsgRecord.getContent());
+ map.put("业务ID 例如订单ID", mesMsgRecord.getBizId());
+ map.put("业务类型 ORDER/EVALUATION 等", mesMsgRecord.getBizType());
+ map.put("已读 0=未读 1=已读", mesMsgRecord.getIsRead());
+ map.put("阅读时间", mesMsgRecord.getReadTime());
+ map.put("扩展字段 存跳转链接等", mesMsgRecord.getExtra());
+ map.put("创建人", mesMsgRecord.getCreateBy());
+ map.put("创建时间", mesMsgRecord.getCreateTime());
+ map.put("更新人", mesMsgRecord.getUpdateBy());
+ map.put("更新时间", mesMsgRecord.getUpdateTime());
+ list.add(map);
+ }
+ FileUtil.downloadExcel(list, response);
+ }
+
+ @Override
+ public List<MesMsgRecordQueryPollDto> PollMes(Long platform, Long mestype) {
+ return mesMsgRecordMapper.PollMes(platform, mestype);
+ }
+
+ @Override
+ public void batchMarkRead(Long platform, List<Long> msgIds) {
+ mesMsgRecordMapper.batchMarkRead(platform, msgIds);
+ }
+
+ @Override
+ public PageResult<MesMsgRecordQuerySystemDto> queryAllSysNotice(MesMsgRecordQueryCriteria criteria, Page<Object> page) {
+ return PageUtil.toPage(mesMsgRecordMapper.queryAllSysNotice(criteria, page));
+ }
+
+ @Override
+ public List<MesMsgRecordQueryOrderDto> queryorder(Long shopId) {
+ return mesMsgRecordMapper.queryorder(shopId);
+ }
+
+ @Override
+ public List<MesMsgRecordQueryPollDto> PollMesAll(Long platform) {
+ return mesMsgRecordMapper.PollMesAll(platform);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void insertOrderMsg(Order order, MsgStatusEnum content, MesTypeEnum typeEnum) {
+ MesMsgRecord record = new MesMsgRecord();
+ record.setOrderNo(order.getOrderNum());
+ record.setContent(content.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(content.getKey()));// 使用枚举的描述作为消息内容key
+ record.setBuyerId(String.valueOf(order.getUserId())); // 处理空值情况
+ record.setBuyerName(order.getUsername());
+ record.setRiderId(order.getRiderId() != null ? String.valueOf(order.getRiderId()) : null);
+ record.setRiderName(order.getRiderName() != null ? order.getRiderName() : null);
+ record.setShopId(order.getStoreId());
+ record.setMsgType(typeEnum.getKey()); // 订单消息类型为2
+ record.setIsRead(MesReadEnum.UNREAD.getKey()); // 默认未读 0
+ mesMsgRecordMapper.insert(record);
+ }
+
+ // 设置一个买家状态为下单 不存在则插入 买家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(MsgStatusEnum.MERCHANT_ACCEPTED.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(MsgStatusEnum.MERCHANT_ACCEPTED.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(MsgStatusEnum.BUYER_ORDER_DELIVERED.getValue()); // 使用枚举的描述作为消息内容
+ record.setContentKey(String.valueOf(MsgStatusEnum.BUYER_ORDER_DELIVERED.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, MsgStatusEnum content, String riderId, String riderName) {
+ //content只能设置为如下 "商品已送达" "订单已完成" "订单送达"
+ if (content == null ||
+ (
+ !content.equals(MsgStatusEnum.BUYER_ORDER_COMPLETED) &&
+ !content.equals(MsgStatusEnum.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, MsgStatusEnum content, String riderId, String riderName) {
+ //content只能为 "订单已提交" "商家已接单" 商家已备货"
+ if (content == null ||
+ (
+ content != MsgStatusEnum.MERCHANT_ACCEPTED &&
+ content != MsgStatusEnum.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, MsgStatusEnum content, String riderId, String riderName) {
+ //content只能为 "骑手已接单" "骑手已取货" "骑手已到店" "订单已取消" "距离最晚送达时间不足1小时" "距离最晚送达时间不足30分钟"
+ if (content == null ||
+ (content != MsgStatusEnum.RIDER_PENDING_ACCEPTANCE &&
+ content != MsgStatusEnum.RIDER_PICKED_UP &&
+ content != MsgStatusEnum.RIDER_ARRIVED &&
+ content != MsgStatusEnum.RIDER_ORDER_CANCELLED && content != MsgStatusEnum.RIDER_DELIVERY_WARNING)) {
+ 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.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);
+ }
+}
--
Gitblit v1.9.3