package com.oying.modules.message.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.oying.modules.message.domain.MessageOrderSeller; import com.oying.utils.FileUtil; import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.oying.modules.message.service.MessageOrderSellerService; import com.oying.modules.message.domain.dto.MessageOrderSellerQueryCriteria; import com.oying.modules.message.mapper.MessageOrderSellerMapper; import lombok.extern.slf4j.Slf4j; import org.apache.poi.util.Beta; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.oying.utils.PageUtil; import java.util.*; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import com.oying.utils.PageResult; /** * @description 服务实现 * @author 李萌 * @date 2025-05-20 **/ @Slf4j @Service @RequiredArgsConstructor public class MessageOrderSellerServiceImpl extends ServiceImpl implements MessageOrderSellerService { private final MessageOrderSellerMapper messageOrderSellerMapper; @Override public PageResult queryAll(MessageOrderSellerQueryCriteria criteria, Page page){ return PageUtil.toPage(messageOrderSellerMapper.findAll(criteria, page)); } @Override public List queryAll(MessageOrderSellerQueryCriteria criteria){ return messageOrderSellerMapper.findAll(criteria); } @Override @Transactional(rollbackFor = Exception.class) public void create(MessageOrderSeller resources) { messageOrderSellerMapper.insert(resources); } @Override @Transactional(rollbackFor = Exception.class) public void update(MessageOrderSeller resources) { MessageOrderSeller messageOrderSeller = getById(resources.getId()); messageOrderSeller.copy(resources); messageOrderSellerMapper.updateById(messageOrderSeller); } @Override @Transactional(rollbackFor = Exception.class) public void deleteAll(List ids) { messageOrderSellerMapper.deleteBatchIds(ids); } @Override public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (MessageOrderSeller messageOrderSeller : all) { Map map = new LinkedHashMap<>(); map.put(" orderId", messageOrderSeller.getOrderId()); map.put(" messageType", messageOrderSeller.getMessageType()); map.put(" messageContent", messageOrderSeller.getMessageContent()); map.put(" link", messageOrderSeller.getLink()); map.put(" createTime", messageOrderSeller.getCreateTime()); list.add(map); } FileUtil.downloadExcel(list, response); } @Override public MessageOrderSeller findByOrderId(Integer orderId) { return baseMapper.selectOne(new QueryWrapper().eq("order_id", orderId)); } @Override public List findByStoreId(String storeId) { return messageOrderSellerMapper.findByStoreId(storeId); } @Override public boolean updateMessageOrderSellerRead(Integer orderId) { return messageOrderSellerMapper.updateMessageOrderSellerRead(orderId); } /** * 保存或更新 MessageOrderSeller 记录。 *

* 该方法根据传入的 MessageOrderSeller 对象,将数据插入到数据库中。 * 如果记录已存在,则更新;如果不存在,则插入新记录。 *

*

* 必须字段: * - orderId:订单 ID * - storeId:店铺 ID *

*

* 可选字段: * - messageType:消息类型 : 暂时不用 * - messageContent:消息内容 : "订单已提交" :"支付成功" 商家已接单 骑手已接单".......com.oying.modules.message.common.OrderStatusEnum * - link:链接 * - flag:标志字段(默认值为未读 0) *

* * @param resources MessageOrderSeller 对象,包含需要保存或更新的数据。 * @return true 表示保存成功,false 表示保存失败。 * * 目前插入orderId storeId messageContent即可,其他保留--------- */ @Override public boolean saveMessageOrderSellerByOrderIdAndStoreId(MessageOrderSeller resources) { try { // 1. 判断重复的记录是否存在 // // messageType此处不用 long count = this.lambdaQuery() .eq(MessageOrderSeller::getOrderId, resources.getOrderId()) .eq(MessageOrderSeller::getStoreId, resources.getStoreId()) .eq(MessageOrderSeller::getMessageContent, resources.getMessageContent()) .eq(MessageOrderSeller::getFlag, 0) // 未读 .count(); //存在 不插入 if (count > 0) { log.warn("消息已存在,跳过保存:{}", resources); return false; }else{ return messageOrderSellerMapper.saveMessageOrderSellerByOrderIdAndStoreId(resources); } } catch (Exception e) { log.error("保存消息异常", e); return false; } } @Override public boolean updateReadStatusById(Integer id) { return messageOrderSellerMapper.updateReadStatusById(id); } }