Преглед изворни кода

fix 即将过期银河币数量

zoujiajian пре 1 година
родитељ
комит
3c9d308701

+ 8 - 0
netflix-dao/src/main/java/com/cyksj/mapper/UserGalaxyCoinRecordMapper.java

@@ -1,7 +1,12 @@
 package com.cyksj.mapper;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.UserGalaxyCoinRecord;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.math.BigDecimal;
 
 /**
  * 项目名: yhlxj
@@ -10,4 +15,7 @@ import com.cyksj.model.entity.UserGalaxyCoinRecord;
  * 创建时间:2025/7/7 15:19
  */
 public interface UserGalaxyCoinRecordMapper extends BaseMapper<UserGalaxyCoinRecord> {
+
+	@Select("select sum(remain_galaxy_coin) from user_galaxy_coin_record where user_id = #{userId} and is_expired is false and expiry_time <= #{expiryTime}")
+	BigDecimal selectExpiredGalaxyCoinAfterDays(@Param("userId") Long userId, @Param("expiryTime") DateTime expiryTime);
 }

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/GalaxyCoinRenewTicketsView.java

@@ -51,6 +51,9 @@ public class GalaxyCoinRenewTicketsView {
 	@DbIgnore
 	private Boolean isMulti;
 
+	@DbField("sku.is_mirror")
+	private Boolean isMirror;
+
 	@DbField("sku.price")
 	private BigDecimal price;
 

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/views/UserPersonalView.java

@@ -34,6 +34,11 @@ public class UserPersonalView {
 	 */
 	private BigDecimal galaxyCoin;
 
+	/**
+	 * 30天内即将过期银河币
+	 */
+	private BigDecimal expiredGalaxyCoin;
+
 	/**
 	 * 我的余额
 	 */

+ 23 - 2
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -1317,9 +1317,30 @@ public class GroupRelationController {
         BigDecimal payMoney = galaxyCoinPayConfigDto.getMoney();
         for (GalaxyCoinRenewTicketsView galaxyCoinRenewTicketsView : search.getDataList()) {
             Long skuId = galaxyCoinRenewTicketsView.getSkuId();
-            GoodsDonSku sku = goodsDonSkuMapper.selectById(skuId);
+            GoodsDonSku maxPriceSku = null;
+            if (galaxyCoinRenewTicketsView.getIsMirror()) {
+                List<RenewUpgradePackageFrontView> renewUpgradePackageFrontViews = beanSearcher.searchAll(RenewUpgradePackageFrontView.class, MapUtils.builder().field(RenewUpgradePackageFrontView::getSkuId, skuId).build());
+                List<Long> upgradeSkuIds = new ArrayList<>();
+                renewUpgradePackageFrontViews.forEach(renew -> {
+                    try {
+                        upgradeSkuIds.addAll(Jsons.parseList(renew.getUpgradeSkuIds(), Long.class));
+                    } catch (Exception e) {
+                    }
+                });
+                if (CollUtil.isNotEmpty(upgradeSkuIds)) {
+                    maxPriceSku = goodsDonSkuMapper.selectOne(Wrappers.lambdaQuery(GoodsDonSku.class)
+                            .eq(GoodsDonSku::getStatus, Boolean.TRUE)
+                            .eq(GoodsDonSku::getId, upgradeSkuIds)
+                            .orderByDesc(GoodsDonSku::getPrice)
+                            .last("limit 1"));
+                }
+
+            }
+            if (maxPriceSku == null) {
+                maxPriceSku = goodsDonSkuMapper.selectById(skuId);
+            }
             //此次最大可抵扣银河币数量
-            BigDecimal maxDeductGalaxyCoin = sku.getPrice().multiply(maxRate).divide(payMoney).multiply(payGalaxyCoin);
+            BigDecimal maxDeductGalaxyCoin = maxPriceSku.getPrice().multiply(maxRate).divide(payMoney).multiply(payGalaxyCoin);
             galaxyCoinRenewTicketsView.setMaxGalaxyCoinDeduct(userGalaxyCoin.compareTo(maxDeductGalaxyCoin) > 0 ? maxDeductGalaxyCoin : userGalaxyCoin);
         }
         return GatewayResponse.SUCCESS.newBuilder().toResult(search);

+ 8 - 4
netflix-web/src/main/java/com/cyksj/web/controller/user/UserController.java

@@ -1,6 +1,7 @@
 package com.cyksj.web.controller.user;
 
 import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.URLUtil;
 import cn.hutool.extra.servlet.ServletUtil;
@@ -11,10 +12,7 @@ import com.cyksj.common.util.Jsons;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayApiCode;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.GoodsDonSkuMapper;
-import com.cyksj.mapper.OrderDonMapper;
-import com.cyksj.mapper.UserDistributePosterRecordMapper;
-import com.cyksj.mapper.UserIpRecordMapper;
+import com.cyksj.mapper.*;
 import com.cyksj.mapper.manage.coupon.CouponUserMapper;
 import com.cyksj.mapper.manage.distribute.*;
 import com.cyksj.mapper.mirrorshop.UserMirrorShopMapper;
@@ -45,6 +43,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -104,6 +103,8 @@ public class UserController {
 
     private final UserMirrorShopMapper userMirrorShopMapper;
 
+    private final UserGalaxyCoinRecordMapper userGalaxyCoinRecordMapper;
+
     @GetMapping(value = "/wx/whoami")
     public Result<UserWhoami> whoami() {
         long userId = StpUserUtil.getLoginIdAsLong();
@@ -186,6 +187,9 @@ public class UserController {
         //积分
         User user = userService.getById(userId);
         personalView.setGalaxyCoin(user.getGalaxyCoin());
+        //30天内即将过期银河币数量
+        BigDecimal expiredGalaxyCoinAfterDays = userGalaxyCoinRecordMapper.selectExpiredGalaxyCoinAfterDays(userId, DateUtil.offsetDay(now, -30));
+        personalView.setExpiredGalaxyCoin(expiredGalaxyCoinAfterDays);
         //推广积分
         personalView.setPopularizePoints(user.getPoints());
         personalView.setBalance(user.getBalance());