package com.ruoyi.demo.service.impl; import cn.hutool.core.lang.Dict; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.demo.entity.*; import com.ruoyi.demo.entity.bo.OrderAddBo; import com.ruoyi.demo.entity.bo.PlanBo; import com.ruoyi.demo.entity.vo.OrderVo; import com.ruoyi.demo.mapper.*; import com.ruoyi.demo.service.OrderService; import com.ruoyi.demo.utils.SignUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.Map; @Service @Transactional public class OrderServiceImpl implements OrderService { @Autowired OrderMapper orderMapper; @Autowired AppMapper appMapper; @Autowired StatisticsMapper statisticsMapper; @Autowired PlanMapper planMapper; @Autowired EquipmentMapper equipmentMapper; @Autowired DlUserMapper dlUserMapper; // 获取sign——用于测试 @Override public String getSign(OrderAddBo bo) { QueryWrapper appQueryWrapper = new QueryWrapper<>(); appQueryWrapper.eq("appkey", bo.getAppkey()) .eq("state", 1) .eq("deleted", "0"); App app = appMapper.selectOne(appQueryWrapper); if (app == null) return "error"; Map params = Dict.create() .set("appkey", bo.getAppkey()) .set("createTime", bo.getTime()) .set("dealCount", bo.getDealCount()) .set("equipmentCode", bo.getEquipmentCode()) .set("goodsId", bo.getGoodsId()) .set("goodsName", bo.getGoodsName()) .set("goodsPrice", bo.getGoodsPrice()) .set("orderId", bo.getOrderId()) .set("userId", bo.getUserId()) .set("userName", bo.getUserName()) .set("userTelephone", bo.getUserTelephone()) .set("vendorId", bo.getVendorId()) .set("vendorName", bo.getVendorName()) .set("sign", null) .set("specs", bo.getSpecs()) .set("state", bo.getState()); return SignUtil.sign(params, app.getAppSecret()); } // 添加订单 @Override public int addOrder(OrderAddBo bo) { QueryWrapper appQueryWrapper = new QueryWrapper<>(); appQueryWrapper.eq("appkey", bo.getAppkey()) .eq("state", 1) .eq("deleted", "0"); App app = appMapper.selectOne(appQueryWrapper); if (app == null) return -1; Map params = Dict.create() .set("appkey", bo.getAppkey()) .set("createTime", bo.getTime()) .set("dealCount", bo.getDealCount()) .set("equipmentCode", bo.getEquipmentCode()) .set("goodsId", bo.getGoodsId()) .set("goodsName", bo.getGoodsName()) .set("goodsPrice", bo.getGoodsPrice()) .set("orderId", bo.getOrderId()) .set("userId", bo.getUserId()) .set("userName", bo.getUserName()) .set("userTelephone", bo.getUserTelephone()) .set("vendorId", bo.getVendorId()) .set("vendorName", bo.getVendorName()) .set("sign", bo.getSign()) .set("specs", bo.getSpecs()) .set("state", bo.getState()); if (!SignUtil.verify(params, app.getAppSecret())) return -3; // 验证通过后,如果用户不存在,则添加用户;否则更新用户信息 QueryWrapper equipmentQueryWrapper = new QueryWrapper<>(); equipmentQueryWrapper.eq("equipment_code", bo.getEquipmentCode()); Equipment equipment = equipmentMapper.selectOne(equipmentQueryWrapper); QueryWrapper userQueryWrapper = new QueryWrapper<>(); userQueryWrapper.eq("user_id", bo.getUserId()); DlUser user = dlUserMapper.selectOne(userQueryWrapper); if (user == null) dlUserMapper.insert(new DlUser(bo, equipment)); else { user.setEndEquipmentId(equipment.getEquipmentId()); user.setEndEquipmentName(equipment.getEquipmentName()); user.setEndEquipmentCode(equipment.getEquipmentCode()); user.setEndTime(bo.getTime()); // user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice().multiply(new BigDecimal(bo.getDealCount())))); user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice())); dlUserMapper.update(user, userQueryWrapper); } // 添加交易行为记录 statisticsMapper.insert(new Statistics(bo, equipment)); // 添加订单 return orderMapper.insert(new Order(bo, app)); } // 查询订单列表 @Override public MyPage getOrderList(PlanBo bo) { QueryWrapper queryWrapper = new QueryWrapper<>(); if (bo.getText() != null) queryWrapper.and(orderQueryWrapper -> { orderQueryWrapper.like("order_id", bo.getText()) .or() .like("goods_name", bo.getText()) .or() .like("user_name", bo.getText()) .or() .like("vendor_name", bo.getText()); }); if (bo.getStartTime() != null) // 搜索开始时间小于等于订单创建时间 queryWrapper.apply("create_time >= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", bo.getStartTime()); if (bo.getEndTime() != null) // 搜索结束时间大于等于订单创建时间 queryWrapper.apply("create_time <= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", bo.getEndTime()); Page page = new Page<>(bo.getPageNum(), bo.getPageSize()); List orders = orderMapper.selectPage(page, queryWrapper).getRecords(); List vos = new ArrayList<>(); for (Order order : orders) vos.add(new OrderVo(order)); return new MyPage<>(page, vos); } }