|
@@ -3,19 +3,23 @@ package com.qs.mp.web.controller.api.user;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.qs.mp.admin.domain.Goods;
|
|
|
import com.qs.mp.admin.domain.GoodsSku;
|
|
|
+import com.qs.mp.admin.domain.PrizeRecovery;
|
|
|
import com.qs.mp.admin.service.IGoodsService;
|
|
|
import com.qs.mp.admin.service.IGoodsSkuService;
|
|
|
import com.qs.mp.admin.service.IPrizeRecoveryService;
|
|
|
import com.qs.mp.common.core.domain.AjaxResult;
|
|
|
+import com.qs.mp.common.core.page.TableDataInfo;
|
|
|
import com.qs.mp.common.core.redis.RedisCache;
|
|
|
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;
|
|
@@ -29,6 +33,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
@@ -56,6 +61,22 @@ public class UserPrizeRecoveryController extends BaseApiController {
|
|
|
@Autowired
|
|
|
private RedisCache redisCache;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IUserExchangeOrderService userExchangeOrderService;
|
|
|
+
|
|
|
+ @PostMapping("/list")
|
|
|
+ @ApiOperation("已回收列表")
|
|
|
+ @ApiResponses(
|
|
|
+ @ApiResponse(code = 200, message = "成功", response = PrizeRecovery.class)
|
|
|
+ )
|
|
|
+ public TableDataInfo list() {
|
|
|
+ Long userId = SecurityUtils.getLoginUser().getUserId();
|
|
|
+ startPage();
|
|
|
+ List<PrizeRecovery> list = prizeRecoveryService.list(new LambdaQueryWrapper<PrizeRecovery>().eq(PrizeRecovery::getUserId, userId).orderByDesc(PrizeRecovery::getCreatedTime));
|
|
|
+ return getDataTable(list);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@PostMapping("/settle")
|
|
|
@ApiOperation("回收奖品结算页面")
|
|
|
@ApiResponses(
|
|
@@ -87,7 +108,7 @@ public class UserPrizeRecoveryController extends BaseApiController {
|
|
|
}
|
|
|
|
|
|
// 回收折扣
|
|
|
- BigDecimal discountRate = new BigDecimal(70);
|
|
|
+ BigDecimal discountRate;
|
|
|
// 兑换价格
|
|
|
Integer exchangePrice = 0;
|
|
|
|
|
@@ -97,20 +118,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();
|