OrderServiceImpl.java 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.ruoyi.demo.service.impl;
  2. import cn.hutool.core.lang.Dict;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.ruoyi.demo.entity.*;
  6. import com.ruoyi.demo.entity.bo.OrderAddBo;
  7. import com.ruoyi.demo.entity.bo.PlanBo;
  8. import com.ruoyi.demo.entity.vo.OrderVo;
  9. import com.ruoyi.demo.mapper.*;
  10. import com.ruoyi.demo.service.OrderService;
  11. import com.ruoyi.demo.utils.SignUtil;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.math.BigDecimal;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. import java.util.Map;
  19. @Service
  20. @Transactional
  21. public class OrderServiceImpl implements OrderService {
  22. @Autowired
  23. OrderMapper orderMapper;
  24. @Autowired
  25. AppMapper appMapper;
  26. @Autowired
  27. StatisticsMapper statisticsMapper;
  28. @Autowired
  29. PlanMapper planMapper;
  30. @Autowired
  31. EquipmentMapper equipmentMapper;
  32. @Autowired
  33. DlUserMapper dlUserMapper;
  34. // 获取sign——用于测试
  35. @Override
  36. public String getSign(OrderAddBo bo) {
  37. QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
  38. appQueryWrapper.eq("appkey", bo.getAppkey())
  39. .eq("state", 1)
  40. .eq("deleted", "0");
  41. App app = appMapper.selectOne(appQueryWrapper);
  42. if (app == null)
  43. return "error";
  44. Map<String, Object> params = Dict.create()
  45. .set("appkey", bo.getAppkey())
  46. .set("createTime", bo.getTime())
  47. .set("dealCount", bo.getDealCount())
  48. .set("equipmentCode", bo.getEquipmentCode())
  49. .set("goodsId", bo.getGoodsId())
  50. .set("goodsName", bo.getGoodsName())
  51. .set("goodsPrice", bo.getGoodsPrice())
  52. .set("orderId", bo.getOrderId())
  53. .set("userId", bo.getUserId())
  54. .set("userName", bo.getUserName())
  55. .set("userTelephone", bo.getUserTelephone())
  56. .set("vendorId", bo.getVendorId())
  57. .set("vendorName", bo.getVendorName())
  58. .set("sign", null)
  59. .set("specs", bo.getSpecs())
  60. .set("state", bo.getState());
  61. return SignUtil.sign(params, app.getAppSecret());
  62. }
  63. // 添加订单
  64. @Override
  65. public int addOrder(OrderAddBo bo) {
  66. QueryWrapper<App> appQueryWrapper = new QueryWrapper<>();
  67. appQueryWrapper.eq("appkey", bo.getAppkey())
  68. .eq("state", 1)
  69. .eq("deleted", "0");
  70. App app = appMapper.selectOne(appQueryWrapper);
  71. if (app == null)
  72. return -1;
  73. Map<String, Object> params = Dict.create()
  74. .set("appkey", bo.getAppkey())
  75. .set("createTime", bo.getTime())
  76. .set("dealCount", bo.getDealCount())
  77. .set("equipmentCode", bo.getEquipmentCode())
  78. .set("goodsId", bo.getGoodsId())
  79. .set("goodsName", bo.getGoodsName())
  80. .set("goodsPrice", bo.getGoodsPrice())
  81. .set("orderId", bo.getOrderId())
  82. .set("userId", bo.getUserId())
  83. .set("userName", bo.getUserName())
  84. .set("userTelephone", bo.getUserTelephone())
  85. .set("vendorId", bo.getVendorId())
  86. .set("vendorName", bo.getVendorName())
  87. .set("sign", bo.getSign())
  88. .set("specs", bo.getSpecs())
  89. .set("state", bo.getState());
  90. if (!SignUtil.verify(params, app.getAppSecret()))
  91. return -3;
  92. // 验证通过后,如果用户不存在,则添加用户;否则更新用户信息
  93. QueryWrapper<Equipment> equipmentQueryWrapper = new QueryWrapper<>();
  94. equipmentQueryWrapper.eq("equipment_code", bo.getEquipmentCode());
  95. Equipment equipment = equipmentMapper.selectOne(equipmentQueryWrapper);
  96. QueryWrapper<DlUser> userQueryWrapper = new QueryWrapper<>();
  97. userQueryWrapper.eq("user_id", bo.getUserId());
  98. DlUser user = dlUserMapper.selectOne(userQueryWrapper);
  99. if (user == null)
  100. dlUserMapper.insert(new DlUser(bo, equipment));
  101. else {
  102. user.setEndEquipmentId(equipment.getEquipmentId());
  103. user.setEndEquipmentName(equipment.getEquipmentName());
  104. user.setEndEquipmentCode(equipment.getEquipmentCode());
  105. user.setEndTime(bo.getTime());
  106. // user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice().multiply(new BigDecimal(bo.getDealCount()))));
  107. user.setTotalPrice(user.getTotalPrice().add(bo.getGoodsPrice()));
  108. dlUserMapper.update(user, userQueryWrapper);
  109. }
  110. // 添加交易行为记录
  111. statisticsMapper.insert(new Statistics(bo, equipment));
  112. // 添加订单
  113. return orderMapper.insert(new Order(bo, app));
  114. }
  115. // 查询订单列表
  116. @Override
  117. public MyPage<OrderVo> getOrderList(PlanBo bo) {
  118. QueryWrapper<Order> queryWrapper = new QueryWrapper<>();
  119. if (bo.getText() != null)
  120. queryWrapper.and(orderQueryWrapper -> {
  121. orderQueryWrapper.like("order_id", bo.getText())
  122. .or()
  123. .like("goods_name", bo.getText())
  124. .or()
  125. .like("user_name", bo.getText())
  126. .or()
  127. .like("vendor_name", bo.getText());
  128. });
  129. if (bo.getStartTime() != null) // 搜索开始时间小于等于订单创建时间
  130. queryWrapper.apply("create_time >= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", bo.getStartTime());
  131. if (bo.getEndTime() != null) // 搜索结束时间大于等于订单创建时间
  132. queryWrapper.apply("create_time <= STR_TO_DATE({0},'%Y-%m-%d %H:%i:%s')", bo.getEndTime());
  133. Page<Order> page = new Page<>(bo.getPageNum(), bo.getPageSize());
  134. List<Order> orders = orderMapper.selectPage(page, queryWrapper).getRecords();
  135. List<OrderVo> vos = new ArrayList<>();
  136. for (Order order : orders)
  137. vos.add(new OrderVo(order));
  138. return new MyPage<>(page, vos);
  139. }
  140. }