package com.oying.modules.sh.service.impl; import com.alibaba.fastjson2.JSON; import com.oying.modules.sh.domain.OrderOperationLog; import com.oying.modules.sh.domain.vo.OrderResponse; import com.oying.modules.sh.mapper.OrderMapper; import com.oying.utils.*; import com.oying.utils.enums.OrderStatusEnum; import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.oying.modules.sh.service.OrderOperationLogService; import com.oying.modules.sh.domain.dto.OrderOperationLogQueryCriteria; import com.oying.modules.sh.mapper.OrderOperationLogMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.sql.Timestamp; import java.util.List; import java.util.Map; import java.io.IOException; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.LinkedHashMap; /** * @author lixin * @description 服务实现 * @date 2025-06-11 **/ @Service @RequiredArgsConstructor public class OrderOperationLogServiceImpl extends ServiceImpl implements OrderOperationLogService { private final OrderOperationLogMapper orderOperationLogMapper; private final OrderMapper orderMapper; @Override public PageResult queryAll(OrderOperationLogQueryCriteria criteria, Page page) { return PageUtil.toPage(orderOperationLogMapper.findAll(criteria, page)); } @Override public List queryAll(OrderOperationLogQueryCriteria criteria) { return orderOperationLogMapper.findAll(criteria); } @Override public List getByOrderNum(String orderNum) { return orderOperationLogMapper.getByOrderNum(orderNum); } @Override @Transactional(rollbackFor = Exception.class) public void create(OrderResponse response, OrderStatusEnum statusEnum, String cardName) { String userType = ConstantsKey.BUYER; String username = null; switch (statusEnum) { case ZERO: case ONE: case EIGHT: case NINE: userType = ConstantsKey.BUYER; break; case TWO: username = response.getOrder().getUsername(); case FOUR: userType = ConstantsKey.MERCHANT; break; case THREE: orderMapper.updateRider(response.getOrder().getOrderNum(), SecurityUtils.getCurrentUserId(), SecurityUtils.getCurrentUsername(), cardName); case FIVE: case SIX: case SEVEN: userType = ConstantsKey.RIDER; break; default: } if (username == null) { username = SecurityUtils.getCurrentUsername(); } Timestamp time = new Timestamp(System.currentTimeMillis()); OrderOperationLog resources = new OrderOperationLog(); resources.setOrderNum(response.getOrder().getOrderNum()); resources.setUsername(username); resources.setUserType(userType); resources.setOperation(statusEnum.getKey()); resources.setOperationDescribe(statusEnum.getValue()); resources.setRemark(username + ":" + time + ">" + statusEnum.getValue() + ":" + response.getOrder().getOrderNum()); resources.setSnapshotData(JSON.toJSONString(response)); resources.setOperationTime(time); orderOperationLogMapper.insert(resources); orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue()); } @Override @Transactional(rollbackFor = Exception.class) public void update(OrderOperationLog resources) { OrderOperationLog orderOperationLog = getById(resources.getLogId()); orderOperationLog.copy(resources); orderOperationLogMapper.updateById(orderOperationLog); } @Override @Transactional(rollbackFor = Exception.class) public void deleteAll(List ids) { orderOperationLogMapper.deleteBatchIds(ids); } @Override public void download(List all, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (OrderOperationLog orderOperationLog : all) { Map map = new LinkedHashMap<>(); map.put("用户账号", orderOperationLog.getUsername()); map.put("用户类型", orderOperationLog.getUserType()); map.put("用户操作", orderOperationLog.getOperation()); map.put("备注", orderOperationLog.getRemark()); map.put("操作时的订单快照", orderOperationLog.getSnapshotData()); map.put("操作时间", orderOperationLog.getOperationTime()); map.put("订单号", orderOperationLog.getOrderNum()); list.add(map); } FileUtil.downloadExcel(list, response); } }