Browse Source

新增接口,查询代金券库存及限购数量

zhangchen 2 weeks ago
parent
commit
8af8e93155

+ 35 - 0
alien-entity/src/main/java/shop/alien/entity/store/vo/LifeCouponStatusVo.java

@@ -0,0 +1,35 @@
+package shop.alien.entity.store.vo;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 优惠券状态信息DTO
+ * </p>
+ *
+ * @author zhangchen
+ * @since 2025-07-11
+ */
+@Data
+@JsonInclude
+@NoArgsConstructor
+@ApiModel(value="优惠券状态信息", description="优惠券状态信息")
+public class LifeCouponStatusVo {
+
+    @ApiModelProperty(value = "优惠券ID")
+    private String couponId;
+
+    @ApiModelProperty(value = "库存(优惠券数量)")
+    private Integer singleQty;
+
+    @ApiModelProperty(value = "限制购买数")
+    private Integer buyLimit;
+}

+ 19 - 4
alien-store/src/main/java/shop/alien/store/controller/LifeCouponController.java

@@ -1,15 +1,13 @@
 package shop.alien.store.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 import shop.alien.entity.result.R;
 import shop.alien.entity.store.LifeCoupon;
+import shop.alien.entity.store.vo.LifeCouponStatusVo;
 import shop.alien.store.service.LifeCouponService;
 
 import java.util.Map;
@@ -80,4 +78,21 @@ public class LifeCouponController {
         return R.data(lifeCouponService.couponVerify(storeId, quanCode));
     }
 
+    @ApiOperation("获取优惠券状态")
+    @ApiOperationSupport(order = 1)
+    @GetMapping("/getCouponStatus")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "couponId", value = "优惠券id", dataType = "String", paramType = "query", required = true),
+    })
+    public R<LifeCouponStatusVo> getCouponStatus(@RequestParam(value = "couponId") String couponId) {
+        log.info("LifeDiscountCouponController.getCouponStatus?couponId={}", couponId);
+        try {
+            LifeCouponStatusVo lifeCouponStatusVo = lifeCouponService.getCouponStatus(couponId);
+            return R.data(lifeCouponStatusVo);
+        } catch (Exception e) {
+            log.error("LifeDiscountCouponController.getCouponStatus ERROR Msg={}", e.getMessage());
+            return R.fail("查询失败");
+        }
+    }
+
 }

+ 18 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeDiscountCouponController.java

@@ -9,6 +9,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.UserLoginInfo;
 import shop.alien.entity.store.dto.LifeDiscountCouponDto;
 import shop.alien.entity.store.dto.LifeDiscountCouponUserDto;
+import shop.alien.entity.store.vo.LifeCouponStatusVo;
 import shop.alien.entity.store.vo.LifeDiscountCouponVo;
 import shop.alien.store.service.LifeDiscountCouponService;
 import shop.alien.store.service.LifeDiscountCouponUserService;
@@ -262,4 +263,21 @@ public class LifeDiscountCouponController {
         }
     }
 
+    @ApiOperation("获取优惠券状态")
+    @ApiOperationSupport(order = 1)
+    @GetMapping("/getCouponStatus")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "couponId", value = "优惠券id", dataType = "String", paramType = "query", required = true),
+    })
+    public R<LifeCouponStatusVo> getCouponStatus(@RequestParam(value = "couponId") String couponId) {
+        log.info("LifeDiscountCouponController.getCouponStatus?couponId={}", couponId);
+        try {
+            LifeCouponStatusVo lifeCouponStatusVo = lifeDiscountCouponService.getCouponStatus(couponId);
+            return R.data(lifeCouponStatusVo);
+        } catch (Exception e) {
+            log.error("LifeDiscountCouponController.getCouponStatus ERROR Msg={}", e.getMessage());
+            return R.fail("查询失败");
+        }
+    }
+
 }

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/LifeCouponService.java

@@ -3,6 +3,7 @@ package shop.alien.store.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.LifeCoupon;
+import shop.alien.entity.store.vo.LifeCouponStatusVo;
 
 import java.util.Map;
 
@@ -19,4 +20,8 @@ public interface LifeCouponService extends IService<LifeCoupon> {
 
     Map<String,String> couponVerify(String storeId, String quanCode);
 
+    /**
+     * 获取代金券状态
+     */
+    public LifeCouponStatusVo getCouponStatus(String couponId);
 }

+ 5 - 0
alien-store/src/main/java/shop/alien/store/service/LifeDiscountCouponService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.LifeDiscountCoupon;
 import shop.alien.entity.store.UserLoginInfo;
 import shop.alien.entity.store.dto.LifeDiscountCouponDto;
+import shop.alien.entity.store.vo.LifeCouponStatusVo;
 import shop.alien.entity.store.vo.LifeDiscountCouponVo;
 
 import java.math.BigDecimal;
@@ -76,4 +77,8 @@ public interface LifeDiscountCouponService extends IService<LifeDiscountCoupon>
      */
     public String getCouponRule(String couponId, UserLoginInfo userLoginInfo);
 
+    /**
+     * 获取优惠券状态
+     */
+    public LifeCouponStatusVo getCouponStatus(String couponId);
 }

+ 34 - 4
alien-store/src/main/java/shop/alien/store/service/impl/LifeCouponServiceImpl.java

@@ -9,11 +9,9 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
-import shop.alien.entity.store.LifeCoupon;
-import shop.alien.entity.store.LifeUserOrder;
-import shop.alien.entity.store.StoreDictionary;
-import shop.alien.entity.store.StoreIncomeDetailsRecord;
+import shop.alien.entity.store.*;
 import shop.alien.entity.store.dto.LifeDiscountCouponStoreFriendDto;
+import shop.alien.entity.store.vo.LifeCouponStatusVo;
 import shop.alien.mapper.LifeCouponMapper;
 import shop.alien.mapper.LifeUserOrderMapper;
 import shop.alien.mapper.StoreDictionaryMapper;
@@ -192,4 +190,36 @@ public class LifeCouponServiceImpl extends ServiceImpl<LifeCouponMapper, LifeCou
         return resultMap;
     }
 
+    /**
+     * <p>
+     * 获取代金券状态
+     * </p>
+     *
+     * @author zhangchen
+     * @since 2025-07-14
+     */
+    @Override
+    public LifeCouponStatusVo getCouponStatus(String couponId) {
+        if (couponId == null || couponId.isEmpty()) {
+            log.error("获取代金券状态失败:couponId为空");
+            throw new IllegalArgumentException("couponId不能为空");
+        }
+        try {
+            LifeCoupon coupon = lifeCouponMapper.selectById(couponId);
+            LifeCouponStatusVo lifeCouponStatusVo = new LifeCouponStatusVo();
+            if (coupon != null) {
+                lifeCouponStatusVo.setCouponId(couponId);
+                lifeCouponStatusVo.setSingleQty(coupon.getSingleQty());
+                lifeCouponStatusVo.setBuyLimit(coupon.getBuyLimit());
+            } else {
+                // 可选:设置默认值或标记状态为无效
+                lifeCouponStatusVo.setSingleQty(0); // 或其他默认逻辑
+            }
+            return lifeCouponStatusVo;
+        } catch (Exception e) {
+            log.error("获取代金券状态失败: {}", e);
+            throw new RuntimeException("获取代金券状态失败", e); // 或者根据项目规范处理
+        }
+    }
+
 }

+ 32 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeDiscountCouponServiceImpl.java

@@ -12,6 +12,7 @@ import org.springframework.beans.BeansException;
 import org.springframework.stereotype.Service;
 import shop.alien.entity.store.*;
 import shop.alien.entity.store.dto.LifeDiscountCouponDto;
+import shop.alien.entity.store.vo.LifeCouponStatusVo;
 import shop.alien.entity.store.vo.LifeDiscountCouponStoreFriendVo;
 import shop.alien.entity.store.vo.LifeDiscountCouponVo;
 import shop.alien.mapper.*;
@@ -856,6 +857,37 @@ public class LifeDiscountCouponServiceImpl extends ServiceImpl<LifeDiscountCoupo
         return forbiddenRule;
     }
 
+    /**
+     * <p>
+     * 获取优惠券状态
+     * </p>
+     *
+     * @author zhangchen
+     * @since 2025-07-14
+     */
+    @Override
+    public LifeCouponStatusVo getCouponStatus(String couponId) {
+        if (couponId == null || couponId.isEmpty()) {
+            log.error("获取优惠券状态失败:couponId为空");
+            throw new IllegalArgumentException("couponId不能为空");
+        }
+        try {
+            LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectById(couponId);
+            LifeCouponStatusVo lifeCouponStatusVo = new LifeCouponStatusVo();
+            if (lifeDiscountCoupon != null) {
+                lifeCouponStatusVo.setCouponId(couponId);
+                lifeCouponStatusVo.setSingleQty(lifeDiscountCoupon.getSingleQty());
+            } else {
+                    // 可选:设置默认值或标记状态为无效
+                lifeCouponStatusVo.setSingleQty(0); // 或其他默认逻辑
+            }
+            return lifeCouponStatusVo;
+        } catch (Exception e) {
+            log.error("获取优惠券状态失败: {}", e);
+            throw new RuntimeException("获取优惠券状态失败", e); // 或者根据项目规范处理
+        }
+    }
+
 //    private static final String API_URL = "https://date.nager.at/api/v3/PublicHolidays/{year}/{countryCode}";
 //    private static final String COUNTRY_CODE = "CN";
 //    public static void get() throws Exception {