Преглед на файлове

商品兑换到奖品库合并

chunping преди 3 години
родител
ревизия
f27394afc8

+ 15 - 15
mp-service/src/main/java/com/qs/mp/user/service/IUserDeliverOrderService.java

@@ -26,7 +26,7 @@ import com.qs.mp.user.domain.vo.UserDeliverOrderVO;
 public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 	/**
 	 * 提交奖品提货订单
-	 * 
+	 *
 	 * @param userId
 	 * @param orderSettleVO
 	 * @return
@@ -35,7 +35,7 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 
 	/**
 	 * 取消订单
-	 * 
+	 *
 	 * @param orderId
 	 * @return
 	 */
@@ -43,7 +43,7 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 
 	/**
 	 * 支付成功回调
-	 * 
+	 *
 	 * @param payOrder
 	 * @return
 	 */
@@ -51,31 +51,31 @@ public interface IUserDeliverOrderService extends IService<UserDeliverOrder> {
 
 	/**
 	 * 获取用户提货订单列表信息,支持翻页
-	 * 
+	 *
 	 * @param wrapper
 	 * @return
 	 */
-	public List<UserDeliverOrderVO> selectUserDeliverOrderVoList(Wrapper<UserDeliverOrder> wrapper);
-	
-	
+	List<UserDeliverOrderVO> selectUserDeliverOrderVoList(Wrapper<UserDeliverOrder> wrapper);
+
+
 	/**
 	 * 查询满足筛选条件的用户提货订单数量
-	 * 
+	 *
 	 * @param wrapper
 	 * @return
 	 */
-	public int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper);
-	
-	
+	int selectUserDeliverOrderCount(Wrapper<UserDeliverOrder> wrapper);
+
+
 	/**
 	 * 获取用户提货订单信息VO
-	 * 
+	 *
 	 * @param wrapper
 	 * @return
 	 */
-	public UserDeliverOrderVO selectUserDeliverOrderVo(String orderId);
-	
-	
+	UserDeliverOrderVO selectUserDeliverOrderVo(String orderId);
+
+
 	/**
 	 * 用户提货订单发货
 	 * @param orderId

+ 30 - 13
mp-service/src/main/java/com/qs/mp/user/service/impl/UserExchangeOrderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.qs.mp.user.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.qs.mp.admin.domain.Goods;
 import com.qs.mp.admin.domain.GoodsSku;
@@ -19,10 +20,12 @@ import com.qs.mp.user.service.IUserCoinService;
 import com.qs.mp.user.service.IUserExchangeOrderService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qs.mp.user.service.IUserPrizeStorageService;
+import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
 
 /**
  * <p>
@@ -89,19 +92,33 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
     userCoinService.consume(userId, orderAmt, exchangeOrder.getOrderId());
 
     // 放入奖品库
-    UserPrizeStorage userPrizeStorage = new UserPrizeStorage();
-    userPrizeStorage.setStorageId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
-    userPrizeStorage.setUserId(userId);
-    userPrizeStorage.setGoodsId(goodsId);
-    userPrizeStorage.setSkuId(skuId);
-    userPrizeStorage.setProperties(goodsSku.getProperties());
-    userPrizeStorage.setTitle(goods.getTitle());
-    userPrizeStorage.setPicUrl(goods.getPicUrl());
-    userPrizeStorage.setGoodsNum(orderNum);
-    userPrizeStorage.setInType(PrizeStorageInTypeEnum.COIN_EXCHANGE);
-    userPrizeStorage.setRefId(exchangeOrder.getOrderId());
-    userPrizeStorage.setStatus(PrizeStorageStatusEnum.NOT_DISTRIBUTED);
-    userPrizeStorageService.save(userPrizeStorage);
+    List<UserPrizeStorage> userPrizeStorageList = userPrizeStorageService.list(new LambdaQueryWrapper<UserPrizeStorage>()
+        .eq(UserPrizeStorage::getUserId, userId)
+        .eq(UserPrizeStorage::getGoodsId, goodsId)
+        .eq(UserPrizeStorage::getSkuId, skuId)
+        .eq(UserPrizeStorage::getStatus, PrizeStorageStatusEnum.NOT_DISTRIBUTED));
+    if (CollectionUtils.isEmpty(userPrizeStorageList)) {
+      UserPrizeStorage userPrizeStorage = new UserPrizeStorage();
+      userPrizeStorage.setStorageId(bizIdGenerator.newIdWithUidSharding(String.valueOf(userId)));
+      userPrizeStorage.setUserId(userId);
+      userPrizeStorage.setGoodsId(goodsId);
+      userPrizeStorage.setSkuId(skuId);
+      userPrizeStorage.setProperties(goodsSku.getProperties());
+      userPrizeStorage.setTitle(goods.getTitle());
+      userPrizeStorage.setPicUrl(goods.getPicUrl());
+      userPrizeStorage.setGoodsNum(orderNum);
+      userPrizeStorage.setInType(PrizeStorageInTypeEnum.COIN_EXCHANGE);
+      userPrizeStorage.setRefId(exchangeOrder.getOrderId());
+      userPrizeStorage.setStatus(PrizeStorageStatusEnum.NOT_DISTRIBUTED);
+      userPrizeStorageService.save(userPrizeStorage);
+    } else {
+      UserPrizeStorage userPrizeStorage = userPrizeStorageList.get(0);
+      userPrizeStorage.setGoodsNum(userPrizeStorage.getGoodsNum() + orderNum);
+      boolean rtn = userPrizeStorageService.update(new LambdaUpdateWrapper<UserPrizeStorage>()
+          .set(UserPrizeStorage::getGoodsNum, userPrizeStorage.getGoodsNum() + orderNum)
+          .eq(UserPrizeStorage::getStorageId, userPrizeStorage.getStorageId()));
+      Assert.isTrue(rtn, "兑换商品成功,放入奖品库失败。userId:" + userId + ",goodsId:" + goodsId + ",skuId:" + skuId + ",orderNum:" + orderNum);
+    }
 
     // 修改商品库存
     if (null != skuId && 0 != skuId) {