From db88481a98df947654be6ee3e773751c246b5929 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期四, 23 十月 2025 15:37:16 +0800
Subject: [PATCH] 调整
---
buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java | 81 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 78 insertions(+), 3 deletions(-)
diff --git a/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java
index 3fb6dae..e9b092e 100644
--- a/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java
+++ b/buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java
@@ -6,6 +6,7 @@
import cn.lili.common.security.context.UserContext;
import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
+import cn.lili.modules.promotion.entity.dos.Coupon;
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dto.CouponActivityTrigger;
import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams;
@@ -18,10 +19,13 @@
import cn.lili.modules.promotion.service.CouponService;
import cn.lili.modules.promotion.service.MemberCouponService;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@@ -42,6 +46,7 @@
@Api(tags = "涔板绔�,涔板浼樻儬鍒告帴鍙�")
@RequestMapping("/buyer/promotion/coupon")
public class CouponBuyerController {
+
/**
* 浼樻儬鍒�
@@ -85,15 +90,63 @@
@GetMapping
@ApiOperation(value = "鑾峰彇鍙鍙栦紭鎯犲埜鍒楄〃")
public ResultMessage<IPage<CouponVO>> getCouponList(CouponSearchParams queryParam, PageVO page) {
+ System.out.println(queryParam);
queryParam.setPromotionStatus(PromotionsStatusEnum.START.name());
queryParam.setGetType(CouponGetEnum.FREE.name());
- IPage<CouponVO> canUseCoupons = couponService.pageVOFindAll(queryParam, page);
- return ResultUtil.data(canUseCoupons);
+ // 鏌ヨ鍘熷鍒嗛〉鏁版嵁
+ IPage<CouponVO> originalPage = couponService.pageVOFindAll(queryParam, page);
+ List<CouponVO> originalRecords = originalPage.getRecords();
+
+// // 鑾峰彇鐢ㄦ埛浼樻儬鍒哥姸鎬�
+// couponService.getUserCouponsStatus(originalRecords);
+
+ //
+ originalRecords.forEach(couponVO -> {
+ couponVO.setOwned(Boolean.FALSE);
+ // 鍙戣鏁伴噺涓�0琛ㄧず涓嶉檺鍒讹紝鍙鏌ョ敤鎴烽鍙栭檺鍒�
+ if (couponVO.getPublishNum() == 0) {
+ if(shouldRemoveCoupon(couponVO)){
+ couponVO.setOwned(Boolean.TRUE);
+ }
+
+ } else {
+ // 璁$畻鍓╀綑鏁伴噺
+ int residueNum = couponVO.getPublishNum() - couponVO.getReceivedNum();
+ // 鍓╀綑鏁伴噺涓�0鎴栫敤鎴疯揪鍒伴鍙栭檺鍒讹紝閮介渶瑕佸垹闄�
+ if(residueNum == 0 || shouldRemoveCoupon(couponVO)){
+ couponVO.setOwned(Boolean.TRUE);
+ }
+ }
+ });
+
+
+
+ return ResultUtil.data(originalPage);
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁闇�瑕佹爣璁颁紭鎯犲埜涓嶅彲棰嗗彇
+ * 鐢ㄦ埛棰嗗彇鏁伴噺杈惧埌闄愬埗鏃惰繑鍥瀟rue
+ */
+ private boolean shouldRemoveCoupon(CouponVO couponVO) {
+ if (couponVO == null || couponVO.getCouponLimitNum() == null) {
+ return false;
+ }
+
+ Long userCouponCount = couponService.getCouponsCountByIdAndMemberId(couponVO.getId());
+
+ if (userCouponCount == null) {
+ return false;
+ }
+
+ // 鐢ㄦ埛棰嗗彇鏁伴噺 >= 闄愬埗鏁伴噺鏃讹紝闇�瑕佺Щ闄�
+ return userCouponCount >= couponVO.getCouponLimitNum();
}
@ApiOperation(value = "鑾峰彇褰撳墠浼氬憳鐨勪紭鎯犲埜鍒楄〃")
@GetMapping("/getCoupons")
public ResultMessage<IPage<MemberCoupon>> getCoupons(MemberCouponSearchParams param, PageVO pageVo) {
+ System.out.println(param);
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
param.setMemberId(currentUser.getId());
return ResultUtil.data(memberCouponService.getMemberCoupons(param, pageVo));
@@ -120,8 +173,30 @@
@GetMapping("/receive/{couponId}")
public ResultMessage<Object> receiveCoupon(@NotNull(message = "浼樻儬鍒窱D涓嶈兘涓虹┖") @PathVariable("couponId") String couponId) {
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
+ //鍦ㄨ繖閲屽垽鏂鍙�
memberCouponService.receiveBuyerCoupon(couponId, currentUser.getId(), currentUser.getNickName());
- return ResultUtil.success();
+
+ Coupon coupon = couponService.getById(couponId);
+ CouponVO couponVO = new CouponVO();
+ BeanUtils.copyProperties(coupon,couponVO);
+ System.out.println(couponVO);
+ couponVO.setOwned(Boolean.FALSE);
+ // 鍙戣鏁伴噺涓�0琛ㄧず涓嶉檺鍒讹紝鍙鏌ョ敤鎴烽鍙栭檺鍒�
+ if (couponVO.getPublishNum() == 0) {
+ if(shouldRemoveCoupon(couponVO)){
+ couponVO.setOwned(Boolean.TRUE);
+ }
+
+ } else {
+ // 璁$畻鍓╀綑鏁伴噺
+ int residueNum = couponVO.getPublishNum() - couponVO.getReceivedNum();
+ // 鍓╀綑鏁伴噺涓�0鎴栫敤鎴疯揪鍒伴鍙栭檺鍒讹紝閮介渶瑕佸垹闄�
+ if(residueNum == 0 || shouldRemoveCoupon(couponVO)){
+ couponVO.setOwned(Boolean.TRUE);
+ }
+ }
+
+ return ResultUtil.data(couponVO);
}
@ApiOperation(value = "閫氳繃id鑾峰彇")
--
Gitblit v1.8.0