소스 검색

调整get-can-reduce接口

codingliang 6 달 전
부모
커밋
29c8b514d4

+ 7 - 4
src/main/java/com/sqx/modules/member/controller/app/AppVipController.java

@@ -3,6 +3,7 @@ package com.sqx.modules.member.controller.app;
 import cn.hutool.core.bean.BeanUtil;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.annotation.Login;
+import com.sqx.modules.member.dto.CanReduceQueryDTO;
 import com.sqx.modules.member.service.VipService;
 import com.sqx.modules.member.vo.VipReduceVO;
 import com.sqx.modules.pay.vo.PayTransactionsVO;
@@ -11,6 +12,8 @@ import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
+
 /**
  * @author codingliang
  * @date 2025-11-12
@@ -23,10 +26,10 @@ public class AppVipController {
     private final VipService vipService;
 
     @Login
-    @ApiOperation(value = "获取用户是否可以会员立减", notes = "shopId 为店铺id")
-    @GetMapping(value = "get-can-reduce/{shopId}")
-    public Result getCanReduce(@RequestAttribute("userId") Long userId, @PathVariable("shopId") Long shopId){
-        VipReduceVO vipReduceVO = vipService.getVipReduceInfo(userId, shopId);
+    @ApiOperation(value = "获取用户是否可以会员立减")
+    @GetMapping(value = "get-can-reduce")
+    public Result getCanReduce(@RequestAttribute("userId") Long userId, @Valid CanReduceQueryDTO canReduceQueryDTO){
+        VipReduceVO vipReduceVO = vipService.getVipReduceInfo(userId, canReduceQueryDTO);
         return Result.success().put("data", vipReduceVO);
     }
 

+ 27 - 0
src/main/java/com/sqx/modules/member/dto/CanReduceQueryDTO.java

@@ -0,0 +1,27 @@
+package com.sqx.modules.member.dto;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+
+/**
+ * 查询是否可以减免参数
+ * @author codingliang
+ * @date 2025-11-30
+ */
+@Data
+public class CanReduceQueryDTO {
+
+    /**
+     * 店铺id
+     */
+    @NotNull(message = "店铺id不能为空")
+    private Long shopId;
+
+    /**
+     * 订单原始价格
+     */
+    @NotNull(message = "订单原始价格不能为空")
+    private BigDecimal originalPrice;
+}

+ 5 - 2
src/main/java/com/sqx/modules/member/service/VipService.java

@@ -1,9 +1,12 @@
 package com.sqx.modules.member.service;
 
+import com.sqx.modules.member.dto.CanReduceQueryDTO;
 import com.sqx.modules.member.vo.VipReduceVO;
 import com.sqx.modules.pay.entity.PayDetails;
 import com.sqx.modules.pay.vo.PayTransactionsVO;
 
+import javax.validation.Valid;
+
 public interface VipService {
 
     /**
@@ -30,8 +33,8 @@ public interface VipService {
      /**
       * 获取用户是否可以会员立减
       * @param userId 用户id
-      * @param shopId 店铺id
+      * @param canReduceQueryDTO 查询是否可以减免参数
       * @return vip 立减信息
       */
-    VipReduceVO getVipReduceInfo(Long userId, Long shopId);
+    VipReduceVO getVipReduceInfo(Long userId, @Valid CanReduceQueryDTO canReduceQueryDTO);
 }

+ 17 - 5
src/main/java/com/sqx/modules/member/service/impl/VipServiceImpl.java

@@ -14,12 +14,14 @@ import com.sqx.modules.common.service.CommonInfoService;
 import com.sqx.modules.coupon.service.TbCouponUserService;
 import com.sqx.modules.goods.entity.GoodsShop;
 import com.sqx.modules.goods.service.GoodsShopService;
+import com.sqx.modules.member.dto.CanReduceQueryDTO;
 import com.sqx.modules.member.dto.VipPromoRecordDTO;
 import com.sqx.modules.member.entity.VipPromoCode;
 import com.sqx.modules.member.service.VipPromoCodeService;
 import com.sqx.modules.member.service.VipPromoRecordService;
 import com.sqx.modules.member.service.VipService;
 import com.sqx.modules.member.vo.VipReduceVO;
+import com.sqx.modules.order.entity.TbOrder;
 import com.sqx.modules.order.service.AppOrderService;
 import com.sqx.modules.pay.dto.GetPayParamDTO;
 import com.sqx.modules.pay.entity.PayDetails;
@@ -32,6 +34,7 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.validation.Valid;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 
@@ -146,15 +149,23 @@ public class VipServiceImpl implements VipService {
     }
 
     @Override
-    public VipReduceVO getVipReduceInfo(Long userId, Long shopId) {
-        GoodsShop goodsShop = goodsShopService.getById(shopId);
+    public VipReduceVO getVipReduceInfo(Long userId, @Valid CanReduceQueryDTO canReduceQueryDTO) {
+        // 查询订单原始金额是否达到会员立减金额
+        CommonInfo vipPromotionMinAmount = commonInfoService.findOne(446);
+        if (canReduceQueryDTO.getOriginalPrice().compareTo(new BigDecimal(vipPromotionMinAmount.getValue())) <= 0) {
+            return VipReduceVO.builder().reduceAmount(BigDecimal.ZERO)
+                    .canReduceFlag(Constant.NO)
+                    .vipReduceDesc("订单金额未达到会员立减金额")
+                    .build();
+        }
+
+        // 查询店铺是否参与会员立减
+        GoodsShop goodsShop = goodsShopService.getById(canReduceQueryDTO.getShopId());
         if (ObjectUtil.isNull(goodsShop)) {
             throw new SqxException("无效的店铺id!");
         }
-
         String goodsShopVipPromotion = goodsShop.getVipPromotion();
         if (!StrUtil.equals(goodsShopVipPromotion, Constant.YES)) {
-
             return VipReduceVO.builder()
                     .reduceAmount(BigDecimal.ZERO)
                     .canReduceFlag(Constant.NO)
@@ -162,6 +173,7 @@ public class VipServiceImpl implements VipService {
                     .build();
         }
 
+        // 查询用户是否为会员
         UserEntity user = userService.getById(userId);
         String vipFlag = ObjectUtil.isNotNull(user.getIsVip()) && user.getIsVip() == 1 && VipExpirationUtil.isVipValid(user.getVipExpirationTime())
                 ? Constant.YES : Constant.NO;
@@ -172,8 +184,8 @@ public class VipServiceImpl implements VipService {
                     .build();
         }
 
-        int count = appOrderService.getCurDayVipPromotionByUserCount(userId);
         // 会员每天限制优惠单数(单)
+        int count = appOrderService.getCurDayVipPromotionByUserCount(userId);
         CommonInfo vipPromotionCount = commonInfoService.findOne(445);
         if (count >= Integer.parseInt(vipPromotionCount.getValue())) {
             return VipReduceVO.builder().reduceAmount(BigDecimal.ZERO)