|
@@ -1,5 +1,6 @@
|
|
package com.qs.mp.user.service.impl;
|
|
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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.qs.mp.admin.domain.Goods;
|
|
import com.qs.mp.admin.domain.Goods;
|
|
import com.qs.mp.admin.domain.GoodsSku;
|
|
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.qs.mp.user.service.IUserExchangeOrderService;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.qs.mp.user.service.IUserPrizeStorageService;
|
|
import com.qs.mp.user.service.IUserPrizeStorageService;
|
|
|
|
+import java.util.List;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.Assert;
|
|
import org.springframework.util.Assert;
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -89,19 +92,33 @@ public class UserExchangeOrderServiceImpl extends ServiceImpl<UserExchangeOrderM
|
|
userCoinService.consume(userId, orderAmt, exchangeOrder.getOrderId());
|
|
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) {
|
|
if (null != skuId && 0 != skuId) {
|