|
@@ -12,10 +12,12 @@ import com.qs.mp.common.enums.PrizeStorageInTypeEnum;
|
|
|
import com.qs.mp.common.enums.PrizeStorageStatusEnum;
|
|
|
import com.qs.mp.common.utils.StringUtils;
|
|
|
import com.qs.mp.framework.redis.RedisKey;
|
|
|
+import com.qs.mp.user.domain.UserExchangeOrder;
|
|
|
import com.qs.mp.user.domain.UserPrizeStorage;
|
|
|
import com.qs.mp.user.domain.param.UserPrizeRecoveryCreateParam;
|
|
|
import com.qs.mp.user.domain.vo.PrizeRecoverySettleVO;
|
|
|
import com.qs.mp.user.domain.vo.TicketOrderSettleVO;
|
|
|
+import com.qs.mp.user.service.IUserExchangeOrderService;
|
|
|
import com.qs.mp.user.service.IUserPrizeStorageService;
|
|
|
import com.qs.mp.utils.SecurityUtils;
|
|
|
import com.qs.mp.web.controller.common.BaseApiController;
|
|
@@ -56,6 +58,9 @@ public class UserPrizeRecoveryController extends BaseApiController {
|
|
|
@Autowired
|
|
|
private RedisCache redisCache;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IUserExchangeOrderService userExchangeOrderService;
|
|
|
+
|
|
|
@PostMapping("/settle")
|
|
|
@ApiOperation("回收奖品结算页面")
|
|
|
@ApiResponses(
|
|
@@ -87,7 +92,7 @@ public class UserPrizeRecoveryController extends BaseApiController {
|
|
|
}
|
|
|
|
|
|
// 回收折扣
|
|
|
- BigDecimal discountRate = new BigDecimal(70);
|
|
|
+ BigDecimal discountRate;
|
|
|
// 兑换价格
|
|
|
Integer exchangePrice = 0;
|
|
|
|
|
@@ -97,20 +102,25 @@ public class UserPrizeRecoveryController extends BaseApiController {
|
|
|
}
|
|
|
|
|
|
if (Objects.nonNull(goodsSku)) {
|
|
|
- if (!BigDecimal.ZERO.equals(goodsSku.getDiscountRate())) {
|
|
|
- discountRate = goodsSku.getDiscountRate();
|
|
|
- }
|
|
|
+ discountRate = goodsSku.getDiscountRate();
|
|
|
exchangePrice = goodsSku.getExchangePrice();
|
|
|
-
|
|
|
} else {
|
|
|
Goods goods = goodsService.getById(userPrizeStorage.getGoodsId());
|
|
|
if (Objects.isNull(goods)) {
|
|
|
return AjaxResult.error("商品信息有误");
|
|
|
}
|
|
|
- if (!BigDecimal.ZERO.equals(goods.getDiscountRate())) {
|
|
|
- discountRate = goods.getDiscountRate();
|
|
|
+ discountRate = goods.getDiscountRate();
|
|
|
+ if (Objects.nonNull(userPrizeStorage.getSkuId())) {
|
|
|
+ // 特殊情况
|
|
|
+ UserExchangeOrder userExchangeOrder = userExchangeOrderService.getOne(new LambdaQueryWrapper<UserExchangeOrder>().eq(UserExchangeOrder::getOrderId, userPrizeStorage.getRefId()));
|
|
|
+ if (Objects.isNull(userExchangeOrder)) {
|
|
|
+ return AjaxResult.error("sku信息异常");
|
|
|
+ }
|
|
|
+ exchangePrice = BigDecimal.valueOf(userExchangeOrder.getOrderCoin()).divide(BigDecimal.valueOf(userExchangeOrder.getNum()),0, RoundingMode.HALF_UP).intValue();
|
|
|
+ } else {
|
|
|
+ exchangePrice = goods.getExchangePrice();
|
|
|
}
|
|
|
- exchangePrice = goods.getExchangePrice();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
int returnNum = BigDecimal.valueOf((long) exchangePrice * param.getNum()).multiply(discountRate).divide(BigDecimal.valueOf(100),0, RoundingMode.HALF_UP).intValue();
|