LotOrderServiceImpl.java 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. package com.tzy.service.impl;
  2. import com.github.pagehelper.PageHelper;
  3. import com.tzy.common.dto.UserInfo;
  4. import com.tzy.common.exception.ServiceException;
  5. import com.tzy.common.utils.DateUtils;
  6. import com.tzy.common.utils.UserUtils;
  7. import com.tzy.dto.LogisticsDTO;
  8. import com.tzy.entity.LotOrder;
  9. import com.tzy.entity.Spu;
  10. import com.tzy.mapper.LotOrderExpressMapper;
  11. import com.tzy.mapper.LotOrderMapper;
  12. import com.tzy.req.LotOrderConfirmRequest;
  13. import com.tzy.service.LotOrderService;
  14. import com.tzy.service.SpuService;
  15. import com.tzy.sportcard.api.service.MineApiService;
  16. import com.tzy.system.domain.TzyShippingAddress;
  17. import com.tzy.system.service.ITzyShippingAddressService;
  18. import com.tzy.util.RandomUtil;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import javax.annotation.Resource;
  22. import java.util.Date;
  23. import java.util.List;
  24. import java.util.Objects;
  25. @Service
  26. public class LotOrderServiceImpl implements LotOrderService {
  27. @Resource
  28. private LotOrderMapper lotOrderMapper;
  29. @Resource
  30. MineApiService mineApiService;
  31. @Resource
  32. private SpuService spuService;
  33. @Resource
  34. ITzyShippingAddressService shippingAddressService;
  35. @Resource
  36. LotOrderExpressMapper lotOrderExpressMapper;
  37. @Override
  38. public List<LotOrder> getLotOrders(LotOrder lotOrder) {
  39. UserInfo userInfo = UserUtils.getSimpleUserInfo();
  40. if (userInfo == null) {
  41. throw new ServiceException(500, "请先登录");
  42. }
  43. lotOrder.setUserId(userInfo.getId().longValue());
  44. PageHelper.startPage(lotOrder.getPageNum(), lotOrder.getPageSize());
  45. List<LotOrder> lotOrders = lotOrderMapper.selectLotOrder(lotOrder);
  46. fillTimestamp(lotOrders);
  47. return lotOrders;
  48. }
  49. @Override
  50. @Transactional(rollbackFor = Exception.class)
  51. public int createLotOrder(LotOrder lotOrder) {
  52. UserInfo userInfo = UserUtils.getSimpleUserInfo();
  53. if (userInfo == null && Objects.isNull(lotOrder.getUserId())) {
  54. throw new ServiceException(500, "请先登录");
  55. }
  56. //判断该拍品订单是否已存在
  57. int countedLotOrderByLotId = lotOrderMapper.countLotOrderByLotId(lotOrder);
  58. if (countedLotOrderByLotId > 0) {
  59. throw new ServiceException(500, "auctionId:"+ lotOrder.getLotId() + "订单已存在");
  60. }
  61. //检查商品是否存在,
  62. Spu spu = spuService.getSpuById(lotOrder.getSpuId());
  63. if (spu == null) {
  64. throw new ServiceException(500, "商品不存在,请联系管理员!");
  65. }
  66. lotOrder.setCreateTime(DateUtils.getNowDate());
  67. lotOrder.setStatus(100);//待支付
  68. lotOrder.setUserId(Objects.isNull(userInfo) ? lotOrder.getUserId() : userInfo.getId());
  69. lotOrder.setOrderNo(RandomUtil.getRandom(RandomUtil.MALL_USER_ORDER));
  70. return lotOrderMapper.insertLotOrder(lotOrder);
  71. }
  72. @Override
  73. public LotOrder getLotOrderById(Long id) {
  74. LotOrder lotOrder = lotOrderMapper.selectLotOrderById(id);
  75. fillTimestamp(lotOrder);
  76. LogisticsDTO logisticsDTO = logisticsInfo(lotOrder.getOrderNo());
  77. lotOrder.setLogisticsDTO(logisticsDTO);
  78. return lotOrder;
  79. }
  80. private void fillTimestamp(List<LotOrder> lotOrders) {
  81. if (lotOrders == null) {
  82. return;
  83. }
  84. long now = System.currentTimeMillis();
  85. for (LotOrder lotOrder : lotOrders) {
  86. fillTimestamp(lotOrder, now);
  87. }
  88. }
  89. private void fillTimestamp(LotOrder lotOrder) {
  90. fillTimestamp(lotOrder, System.currentTimeMillis());
  91. }
  92. private void fillTimestamp(LotOrder lotOrder, long now) {
  93. if (lotOrder == null) {
  94. return;
  95. }
  96. Date expireTime = lotOrder.getExpireTime();
  97. if (expireTime == null) {
  98. lotOrder.setTimestamp(0L);
  99. return;
  100. }
  101. lotOrder.setTimestamp(Math.max(expireTime.getTime() - now, 0L));
  102. }
  103. @Override
  104. public int updateLotOrderAddress(LotOrder lotOrder) {
  105. TzyShippingAddress tzyShippingAddress = shippingAddressService.selectUserAddress(Math.toIntExact(lotOrder.getUserId()), Math.toIntExact(lotOrder.getShippingAddressId()));
  106. lotOrder.setShippingAddressId(tzyShippingAddress.getId());
  107. lotOrder.setShippingAddressLinkname(tzyShippingAddress.getLinkname());
  108. lotOrder.setShippingAddressPhone(tzyShippingAddress.getPhone());
  109. lotOrder.setShippingAddress(tzyShippingAddress.getAddress() + tzyShippingAddress.getAddressMore());
  110. return lotOrderMapper.updateLotOrderAddress(lotOrder);
  111. }
  112. @Override
  113. public LogisticsDTO logisticsInfo(String orderNo) {
  114. int count = lotOrderMapper.findOrderByStatus(orderNo, 104);
  115. if (count <= 0) {
  116. return new LogisticsDTO();
  117. }
  118. return lotOrderExpressMapper.logisticsInfo(orderNo);
  119. }
  120. @Override
  121. public void updateOrderStatus(String orderNo, Integer status, Integer addressId) {
  122. LotOrder lotOrder = new LotOrder();
  123. lotOrder.setOrderNo(orderNo);
  124. if (status == 102) {
  125. List<LotOrder> lotOrders = lotOrderMapper.selectLotOrder(lotOrder);
  126. if (lotOrders == null || lotOrders.isEmpty()) {
  127. throw new ServiceException(500, "订单不存在");
  128. }
  129. LotOrder updateOrder = lotOrders.get(0);
  130. updateOrder.setShippingAddressId(Long.valueOf(addressId));
  131. updateLotOrderAddress(updateOrder);
  132. }
  133. lotOrder.setStatus(status);
  134. if (status == 101) {
  135. lotOrder.setPayTime(DateUtils.getNowDate());
  136. }
  137. int i = lotOrderMapper.updateOrderStatus(lotOrder);
  138. if (i <=0) {
  139. throw new ServiceException(500, "订单不存在");
  140. }
  141. }
  142. @Override
  143. public void confirm(LotOrderConfirmRequest lotOrderConfirmRequest) {
  144. LotOrder lotOrder = new LotOrder();
  145. lotOrder.setOrderNo(lotOrderConfirmRequest.getOrderNo());
  146. lotOrder.setStatus(103);
  147. lotOrderMapper.updateOrderStatus(lotOrder);
  148. }
  149. @Override
  150. public List<LotOrder> queryExpireOrder() {
  151. List<LotOrder> lotOrders = lotOrderMapper.queryExpireOrder();
  152. fillTimestamp(lotOrders);
  153. return lotOrders;
  154. }
  155. @Override
  156. public int batchTimeoutUnpaidOrders() {
  157. return lotOrderMapper.batchTimeoutUnpaidOrders();
  158. }
  159. @Override
  160. public List<LotOrder> queryPaidOrdersLastThreeDays() {
  161. List<LotOrder> lotOrders = lotOrderMapper.queryPaidOrdersLastThreeDays();
  162. fillTimestamp(lotOrders);
  163. return lotOrders;
  164. }
  165. }