| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- package com.tzy.service.impl;
- import com.github.pagehelper.PageHelper;
- import com.tzy.common.dto.UserInfo;
- import com.tzy.common.exception.ServiceException;
- import com.tzy.common.utils.DateUtils;
- import com.tzy.common.utils.UserUtils;
- import com.tzy.dto.LogisticsDTO;
- import com.tzy.entity.LotOrder;
- import com.tzy.entity.Spu;
- import com.tzy.mapper.LotOrderExpressMapper;
- import com.tzy.mapper.LotOrderMapper;
- import com.tzy.req.LotOrderConfirmRequest;
- import com.tzy.service.LotOrderService;
- import com.tzy.service.SpuService;
- import com.tzy.sportcard.api.service.MineApiService;
- import com.tzy.system.domain.TzyShippingAddress;
- import com.tzy.system.service.ITzyShippingAddressService;
- import com.tzy.util.RandomUtil;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- @Service
- public class LotOrderServiceImpl implements LotOrderService {
- @Resource
- private LotOrderMapper lotOrderMapper;
- @Resource
- MineApiService mineApiService;
- @Resource
- private SpuService spuService;
- @Resource
- ITzyShippingAddressService shippingAddressService;
- @Resource
- LotOrderExpressMapper lotOrderExpressMapper;
- @Override
- public List<LotOrder> getLotOrders(LotOrder lotOrder) {
- UserInfo userInfo = UserUtils.getSimpleUserInfo();
- if (userInfo == null) {
- throw new ServiceException(500, "请先登录");
- }
- lotOrder.setUserId(userInfo.getId().longValue());
- PageHelper.startPage(lotOrder.getPageNum(), lotOrder.getPageSize());
- List<LotOrder> lotOrders = lotOrderMapper.selectLotOrder(lotOrder);
- fillTimestamp(lotOrders);
- return lotOrders;
- }
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int createLotOrder(LotOrder lotOrder) {
- UserInfo userInfo = UserUtils.getSimpleUserInfo();
- if (userInfo == null && Objects.isNull(lotOrder.getUserId())) {
- throw new ServiceException(500, "请先登录");
- }
- //判断该拍品订单是否已存在
- int countedLotOrderByLotId = lotOrderMapper.countLotOrderByLotId(lotOrder);
- if (countedLotOrderByLotId > 0) {
- throw new ServiceException(500, "auctionId:"+ lotOrder.getLotId() + "订单已存在");
- }
- //检查商品是否存在,
- Spu spu = spuService.getSpuById(lotOrder.getSpuId());
- if (spu == null) {
- throw new ServiceException(500, "商品不存在,请联系管理员!");
- }
- lotOrder.setCreateTime(DateUtils.getNowDate());
- lotOrder.setStatus(100);//待支付
- lotOrder.setUserId(Objects.isNull(userInfo) ? lotOrder.getUserId() : userInfo.getId());
- lotOrder.setOrderNo(RandomUtil.getRandom(RandomUtil.MALL_USER_ORDER));
- return lotOrderMapper.insertLotOrder(lotOrder);
- }
- @Override
- public LotOrder getLotOrderById(Long id) {
- LotOrder lotOrder = lotOrderMapper.selectLotOrderById(id);
- fillTimestamp(lotOrder);
- LogisticsDTO logisticsDTO = logisticsInfo(lotOrder.getOrderNo());
- lotOrder.setLogisticsDTO(logisticsDTO);
- return lotOrder;
- }
- private void fillTimestamp(List<LotOrder> lotOrders) {
- if (lotOrders == null) {
- return;
- }
- long now = System.currentTimeMillis();
- for (LotOrder lotOrder : lotOrders) {
- fillTimestamp(lotOrder, now);
- }
- }
- private void fillTimestamp(LotOrder lotOrder) {
- fillTimestamp(lotOrder, System.currentTimeMillis());
- }
- private void fillTimestamp(LotOrder lotOrder, long now) {
- if (lotOrder == null) {
- return;
- }
- Date expireTime = lotOrder.getExpireTime();
- if (expireTime == null) {
- lotOrder.setTimestamp(0L);
- return;
- }
- lotOrder.setTimestamp(Math.max(expireTime.getTime() - now, 0L));
- }
- @Override
- public int updateLotOrderAddress(LotOrder lotOrder) {
- TzyShippingAddress tzyShippingAddress = shippingAddressService.selectUserAddress(Math.toIntExact(lotOrder.getUserId()), Math.toIntExact(lotOrder.getShippingAddressId()));
- lotOrder.setShippingAddressId(tzyShippingAddress.getId());
- lotOrder.setShippingAddressLinkname(tzyShippingAddress.getLinkname());
- lotOrder.setShippingAddressPhone(tzyShippingAddress.getPhone());
- lotOrder.setShippingAddress(tzyShippingAddress.getAddress() + tzyShippingAddress.getAddressMore());
- return lotOrderMapper.updateLotOrderAddress(lotOrder);
- }
- @Override
- public LogisticsDTO logisticsInfo(String orderNo) {
- int count = lotOrderMapper.findOrderByStatus(orderNo, 104);
- if (count <= 0) {
- return new LogisticsDTO();
- }
- return lotOrderExpressMapper.logisticsInfo(orderNo);
- }
- @Override
- public void updateOrderStatus(String orderNo, Integer status, Integer addressId) {
- LotOrder lotOrder = new LotOrder();
- lotOrder.setOrderNo(orderNo);
- if (status == 102) {
- List<LotOrder> lotOrders = lotOrderMapper.selectLotOrder(lotOrder);
- if (lotOrders == null || lotOrders.isEmpty()) {
- throw new ServiceException(500, "订单不存在");
- }
- LotOrder updateOrder = lotOrders.get(0);
- updateOrder.setShippingAddressId(Long.valueOf(addressId));
- updateLotOrderAddress(updateOrder);
- }
- lotOrder.setStatus(status);
- if (status == 101) {
- lotOrder.setPayTime(DateUtils.getNowDate());
- }
- int i = lotOrderMapper.updateOrderStatus(lotOrder);
- if (i <=0) {
- throw new ServiceException(500, "订单不存在");
- }
- }
- @Override
- public void confirm(LotOrderConfirmRequest lotOrderConfirmRequest) {
- LotOrder lotOrder = new LotOrder();
- lotOrder.setOrderNo(lotOrderConfirmRequest.getOrderNo());
- lotOrder.setStatus(103);
- lotOrderMapper.updateOrderStatus(lotOrder);
- }
- @Override
- public List<LotOrder> queryExpireOrder() {
- List<LotOrder> lotOrders = lotOrderMapper.queryExpireOrder();
- fillTimestamp(lotOrders);
- return lotOrders;
- }
- @Override
- public int batchTimeoutUnpaidOrders() {
- return lotOrderMapper.batchTimeoutUnpaidOrders();
- }
- @Override
- public List<LotOrder> queryPaidOrdersLastThreeDays() {
- List<LotOrder> lotOrders = lotOrderMapper.queryPaidOrdersLastThreeDays();
- fillTimestamp(lotOrders);
- return lotOrders;
- }
- }
|