package com.ruoyi.other.controller;
|
|
|
import com.ruoyi.account.api.feignClient.AppUserClient;
|
import com.ruoyi.account.api.model.AppUser;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.security.service.TokenService;
|
import com.ruoyi.other.api.domain.Banner;
|
import com.ruoyi.other.api.domain.CouponInfo;
|
import com.ruoyi.other.service.CouponInfoService;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-11-20
|
*/
|
@RestController
|
@RequestMapping("/coupon-info")
|
public class CouponInfoController {
|
@Resource
|
private CouponInfoService couponInfoService;
|
@Resource
|
private TokenService tokenService;
|
@Resource
|
private AppUserClient appUserClient;
|
//查看详情
|
@PostMapping("/detail")
|
@ApiOperation(value = "详情", tags = {"后台-优惠劵"})
|
public R<CouponInfo> detail(@RequestParam("id") Integer id){
|
CouponInfo byId = couponInfoService.getById(id);
|
return R.ok(byId);
|
}
|
|
|
@PostMapping("/gift/list")
|
@ApiOperation(value = "待领取列表", tags = {"小程序-个人中心-优惠劵"})
|
public R<List<CouponInfo>> giftlist(){
|
Long userid = tokenService.getLoginUserApplet().getUserid();
|
AppUser appUserById = appUserClient.getAppUserById(userid);
|
LocalDateTime now = LocalDateTime.now();
|
//查出全部可领取的优惠劵
|
List<CouponInfo> list = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 1).list();
|
//查出指定人员可领取优惠券
|
List<CouponInfo> list1 = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 2).apply("FIND_IN_SET('" + appUserById.getId() + "', person_ids)").list();
|
//查出指定会员可领取优惠劵
|
List<CouponInfo> list2 = couponInfoService.lambdaQuery().le(CouponInfo::getSendStartTime, now).ge(CouponInfo::getSendEndTime, now).eq(CouponInfo::getPersonType, 3).apply("FIND_IN_SET('" + appUserById.getVipId() + "', person_ids)").list();
|
List<CouponInfo> returnList= new ArrayList<>();
|
count(userid, list, returnList);
|
count(userid, list1, returnList);
|
count(userid, list2, returnList);
|
|
|
return R.ok(returnList);
|
}
|
|
private void count(Long userid, List<CouponInfo> list1, List<CouponInfo> returnList) {
|
for (CouponInfo couponInfo : list1) {
|
Long count = appUserClient.getCouponCount(userid, couponInfo.getId()).getData();
|
couponInfo.setMaxNum(couponInfo.getMaxNum()-count.intValue());
|
for (int i = 0; i < couponInfo.getMaxNum(); i++) {
|
returnList.add(couponInfo);
|
}
|
}
|
}
|
|
}
|