From 4f6bdfb31697377020126710bdbd500a363ba278 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期一, 08 九月 2025 13:41:13 +0800 Subject: [PATCH] 定时任务,优惠卷领取状态 --- buyer-api/src/main/java/cn/lili/controller/promotion/CouponBuyerController.java | 82 +++++++++++++++++++++++++++++++++++++---- 1 files changed, 74 insertions(+), 8 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 a6d4674..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; @@ -86,22 +90,62 @@ @GetMapping @ApiOperation(value = "鑾峰彇鍙鍙栦紭鎯犲埜鍒楄〃") public ResultMessage<IPage<CouponVO>> getCouponList(CouponSearchParams queryParam, PageVO page) { - System.out.println("------------------------------------"); System.out.println(queryParam); queryParam.setPromotionStatus(PromotionsStatusEnum.START.name()); queryParam.setGetType(CouponGetEnum.FREE.name()); - IPage<CouponVO> canUseCoupons = couponService.pageVOFindAll(queryParam, page); + // 鏌ヨ鍘熷鍒嗛〉鏁版嵁 + IPage<CouponVO> originalPage = couponService.pageVOFindAll(queryParam, page); + List<CouponVO> originalRecords = originalPage.getRecords(); - List<CouponVO> list = canUseCoupons.getRecords(); - couponService.getUserCouponsStatus(list); - //鏇村叿鐢ㄦ埛id - return ResultUtil.data(canUseCoupons); +// // 鑾峰彇鐢ㄦ埛浼樻儬鍒哥姸鎬� +// 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("------------------------------------"); System.out.println(param); AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser()); param.setMemberId(currentUser.getId()); @@ -129,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