package com.cyl.manager.act.controller; import com.cyl.manager.act.domain.entity.CouponActivity; import com.cyl.manager.act.domain.entity.MemberCoupon; import com.cyl.manager.act.domain.query.MemberCouponQuery; import com.cyl.manager.act.domain.vo.CouponActivityVO; import com.cyl.manager.act.domain.vo.MemberCouponVO; import com.cyl.manager.act.service.CouponActivityService; import com.cyl.manager.act.service.MemberCouponService; import com.ruoyi.common.core.redis.RedisService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; @Api(description = "优惠券接口列表") @RestController @RequestMapping("/h5/coupon") public class H5CouponController { @Autowired private CouponActivityService couponActivityService; @Autowired private RedisService redisService; @Autowired private MemberCouponService memberCouponService; @ApiOperation("优惠券活动列表") @PostMapping("/activity/list") public ResponseEntity<Page<CouponActivityVO>> list(Pageable page) { //获取所有未过期且运行中的活动 return ResponseEntity.ok(couponActivityService.selectListByH5(page)); } @GetMapping("/activity/get") public ResponseEntity<CouponActivityVO> getDetail(Long id) { CouponActivityVO detail = couponActivityService.getDetail(id); return ResponseEntity.ok(detail); } @PostMapping("/receive") public ResponseEntity<Boolean> receiveCoupon(Long id) { String redisKey = "h5_receive_coupon" + id; String redisValue = id + "_" + System.currentTimeMillis(); try { redisService.lock(redisKey, redisValue, 60); return ResponseEntity.ok(couponActivityService.receiveCoupon(id)); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } finally { try { redisService.unLock(redisKey, redisValue); } catch (Exception e) { } } } @ApiOperation("优惠券活动列表") @PostMapping("/list") public ResponseEntity<Page<MemberCoupon>> list(@RequestBody MemberCouponQuery query, Pageable page) { //获取所有未过期且运行中的活动 return ResponseEntity.ok(memberCouponService.selectListByH5(query, page)); } /** * 根据购买的商品筛选可用优惠券 * * @param query * @return */ @PostMapping("/can/use/list") public ResponseEntity<List<MemberCoupon>> getCanUseList(@RequestBody MemberCouponQuery query) { return ResponseEntity.ok(memberCouponService.getCanUseList(query.getProducts())); } }