|
@@ -1,17 +1,33 @@
|
|
|
package com.qs.mp.user.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
import com.qs.mp.common.enums.DeliverOrderStatusEnum;
|
|
|
+import com.qs.mp.common.enums.PrizeStorageStatusEnum;
|
|
|
+import com.qs.mp.common.enums.UserTicketOrderStatusEnum;
|
|
|
+import com.qs.mp.common.exception.ServiceException;
|
|
|
+import com.qs.mp.common.utils.LogUtil;
|
|
|
import com.qs.mp.pay.domain.PayOrder;
|
|
|
import com.qs.mp.system.service.id.BizIdGenerator;
|
|
|
import com.qs.mp.user.domain.UserAddr;
|
|
|
import com.qs.mp.user.domain.UserDeliverOrder;
|
|
|
+import com.qs.mp.user.domain.UserDeliverOrderItem;
|
|
|
+import com.qs.mp.user.domain.UserPrizeStorage;
|
|
|
+import com.qs.mp.user.domain.UserTicketOrder;
|
|
|
import com.qs.mp.user.domain.vo.DeliverOrderSettleVO;
|
|
|
import com.qs.mp.user.mapper.UserDeliverOrderMapper;
|
|
|
+import com.qs.mp.user.service.IUserDeliverOrderItemService;
|
|
|
import com.qs.mp.user.service.IUserDeliverOrderService;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.qs.mp.user.service.IUserPrizeStorageService;
|
|
|
+import java.util.List;
|
|
|
+import org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.util.Assert;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -24,9 +40,17 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
@Service
|
|
|
public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMapper, UserDeliverOrder> implements IUserDeliverOrderService {
|
|
|
|
|
|
+ protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
+
|
|
|
@Autowired
|
|
|
private BizIdGenerator bizIdGenerator;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IUserDeliverOrderItemService userDeliverOrderItemService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IUserPrizeStorageService userPrizeStorageService;
|
|
|
+
|
|
|
@Override
|
|
|
@Transactional
|
|
|
public String submitOrder(Long userId, DeliverOrderSettleVO orderSettleVO) {
|
|
@@ -51,17 +75,62 @@ public class UserDeliverOrderServiceImpl extends ServiceImpl<UserDeliverOrderMap
|
|
|
}
|
|
|
save(userDeliverOrder);
|
|
|
|
|
|
+ for (UserPrizeStorage prizeStorage : orderSettleVO.getPrizeList()) {
|
|
|
+ UserDeliverOrderItem orderItem = new UserDeliverOrderItem();
|
|
|
+ orderItem.setItemId(bizIdGenerator.newId());
|
|
|
+ orderItem.setOrderId(userDeliverOrder.getOrderId());
|
|
|
+ orderItem.setStorageId(prizeStorage.getStorageId());
|
|
|
+ orderItem.setGoodsId(prizeStorage.getGoodsId());
|
|
|
+ orderItem.setSkuId(prizeStorage.getSkuId());
|
|
|
+ orderItem.setProperties(prizeStorage.getProperties());
|
|
|
+ orderItem.setTitle(prizeStorage.getTitle());
|
|
|
+ orderItem.setPicUrl(prizeStorage.getPicUrl());
|
|
|
+ orderItem.setGoodsNum(prizeStorage.getGoodsNum());
|
|
|
+ userDeliverOrderItemService.save(orderItem);
|
|
|
+ userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
|
|
|
+ .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED)
|
|
|
+ .eq(UserPrizeStorage::getStorageId, prizeStorage.getStorageId()));
|
|
|
+ }
|
|
|
|
|
|
return userDeliverOrder.getOrderId();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public boolean cancelOrder(String orderId) {
|
|
|
- return false;
|
|
|
+ UserDeliverOrder userDeliverOrder = getById(orderId);
|
|
|
+ if (userDeliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
|
|
|
+ LogUtil.warn(logger, "取消提货订单时,订单状态不是待支付,忽略。orderId:{0}, status:{1}",
|
|
|
+ orderId, userDeliverOrder.getStatus());
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // 恢复奖品库状态
|
|
|
+ List<UserDeliverOrderItem> orderItemList = userDeliverOrderItemService.list(new LambdaQueryWrapper<UserDeliverOrderItem>()
|
|
|
+ .eq(UserDeliverOrderItem::getOrderId, userDeliverOrder.getOrderId()));
|
|
|
+ for (UserDeliverOrderItem orderItem : orderItemList) {
|
|
|
+ boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
|
|
|
+ .set(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED)
|
|
|
+ .eq(UserPrizeStorage::getStorageId, orderItem.getStorageId())
|
|
|
+ .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.HAS_DISTRIBUTED));
|
|
|
+ Assert.isTrue(rtn, "取消提货订单时,更新奖品库里奖品状态失败。orderItem:" + JSONObject.toJSONString(orderItem));
|
|
|
+ }
|
|
|
+ userDeliverOrder.setStatus(DeliverOrderStatusEnum.CANCELED);
|
|
|
+ boolean updateRst = updateById(userDeliverOrder);
|
|
|
+ Assert.isTrue(updateRst, "取消提货订单时,更新提货订单状态失败。userDeliverOrder:" + JSONObject.toJSONString(userDeliverOrder));
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean paySuccess(PayOrder payOrder) {
|
|
|
+ UserDeliverOrder deliverOrder = getById(payOrder.getBizId());
|
|
|
+ if (null == deliverOrder || deliverOrder.getStatus() != DeliverOrderStatusEnum.NOT_PAY) {
|
|
|
+ LogUtil.error(logger, "支付回调用户提货订单处理,订单状态异常,不是待支付。payOrder:{0}, deliverOrder:{1}",
|
|
|
+ JSONObject.toJSONString(payOrder), JSONObject.toJSONString(deliverOrder));
|
|
|
+ throw new ServiceException("支付回调用户提货订单处理,订单状态异常,不是待支付。orderId:" + payOrder.getBizId());
|
|
|
+ }
|
|
|
+ deliverOrder.setStatus(DeliverOrderStatusEnum.NOT_DELIVER);
|
|
|
+ boolean rst = updateById(deliverOrder);
|
|
|
+ Assert.isTrue(rst, "支付回调用户提货订单处理,更新订单状态失败,orderId:" + deliverOrder.getOrderId());
|
|
|
return false;
|
|
|
}
|
|
|
}
|