| New file |
| | |
| | | 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); |
| | | } |
| | | } |