package com.oying.modules.message.service.impl; import com.oying.modules.message.common.MesReadEnum; import com.oying.modules.message.common.MesTypeEnum; import com.oying.modules.message.common.OrderStatusEnum; import com.oying.modules.message.domain.MesMsgRecord; 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.utils.FileUtil; import com.oying.utils.SecurityUtils; 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.MesMsgRecordService; import com.oying.modules.message.domain.dto.MesMsgRecordQueryCriteria; import com.oying.modules.message.mapper.MesMsgRecordMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.oying.utils.PageUtil; import java.sql.Timestamp; import java.util.*; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import com.oying.utils.PageResult; /** * @author 李萌 * @description 服务实现 * @date 2025-07-25 **/ @Service @RequiredArgsConstructor public class MesMsgRecordServiceImpl extends ServiceImpl implements MesMsgRecordService { private final MesMsgRecordMapper mesMsgRecordMapper; @Override public PageResult queryAll(MesMsgRecordQueryCriteria criteria, Page page) { return PageUtil.toPage(mesMsgRecordMapper.findAll(criteria, page)); } @Override public List 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 ids) { mesMsgRecordMapper.deleteBatchIds(ids); } @Override public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (MesMsgRecord mesMsgRecord : all) { Map 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 PollMes(Long platform) { return mesMsgRecordMapper.PollMes(platform); } @Override public void batchMarkRead(Long platform, List msgIds) { mesMsgRecordMapper.batchMarkRead(platform, msgIds); } @Override public PageResult queryAllSysNotice(MesMsgRecordQueryCriteria criteria, Page page) { return PageUtil.toPage(mesMsgRecordMapper.queryAllSysNotice(criteria, page)); } @Override public List queryorder(Long shopId) { return mesMsgRecordMapper.queryorder(shopId); } @Override public void insertOrderMsg(String orderNo, OrderStatusEnum content, Long shopId) { MesMsgRecord record = new MesMsgRecord(); record.setOrderNo(orderNo); record.setContent(content.getValue()); // 使用枚举的描述作为消息内容 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())); try { mesMsgRecordMapper.insert(record); } catch (Exception e) { log.error("插入订单消息失败:{}", e); } } }