package com.ruoyi.member.controller.miniapp;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.goods.api.domain.LotteryEvent;
|
import com.ruoyi.goods.api.service.LotteryEventClient;
|
import com.ruoyi.member.domain.dto.AppMemberCouponPageDto;
|
import com.ruoyi.member.domain.pojo.coupon.Coupon;
|
import com.ruoyi.member.domain.vo.AppGetAbleCouponPageVo;
|
import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
|
import com.ruoyi.member.domain.vo.CouponInfoVo;
|
import com.ruoyi.member.service.coupon.CouponService;
|
import com.ruoyi.member.service.member.MemberCouponService;
|
import com.ruoyi.member.service.member.MemberService;
|
import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
|
import com.ruoyi.system.api.domain.dto.AppPageDto;
|
import com.ruoyi.system.api.domain.poji.goods.Goods;
|
import com.ruoyi.system.api.domain.poji.member.Member;
|
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
|
import com.ruoyi.system.api.service.RemoteGoodsService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.annotation.Resource;
|
import java.text.SimpleDateFormat;
|
import java.util.List;
|
|
/**
|
* @ClassName AppCouponController
|
* @Description TODO
|
* @Author jqs
|
* @Date 2023/7/9 11:44
|
* @Version 1.0
|
*/
|
@Api(value = "小程序优惠券相关接口", tags = "小程序优惠券相关接口", description = "小程序优惠券相关接口")
|
@RestController
|
@RequestMapping("/app/coupon")
|
public class AppCouponController {
|
|
|
@Resource
|
private CouponService couponService;
|
|
@Resource
|
private MemberService memberService;
|
|
@Resource
|
private MemberCouponService memberCouponService;
|
|
@Resource
|
private RemoteGoodsService remoteGoodsService;
|
|
@Resource
|
private LotteryEventClient lotteryEventClient;
|
|
|
@RequestMapping(value = "/pageAppUserGetAbleCoupon", method = RequestMethod.POST)
|
@ApiOperation(value = "用户分页获取可领取优惠券列表")
|
public R<Page<AppGetAbleCouponPageVo>> pagePlatformMerCoupon(@RequestBody AppPageDto appPageDto) {
|
Long userId = SecurityUtils.getUserId();
|
Member member = memberService.getByUserId(userId);
|
appPageDto.setUserId(userId);
|
Page<AppGetAbleCouponPageVo> page = new Page<>();
|
page.setSize(appPageDto.getPageSize());
|
page.setCurrent(appPageDto.getPageNum());
|
List<AppGetAbleCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page, appPageDto, member);
|
return R.ok(page.setRecords(unGetCouponPageVoList));
|
}
|
|
@RequestMapping(value = "/appGetCoupon", method = RequestMethod.POST)
|
@ApiOperation(value = "用户领取优惠券")
|
public R appGetCoupon(@RequestBody AppBaseGetDto appBaseGetDto) {
|
Long userId = SecurityUtils.getUserId();
|
Member member = memberService.getByUserId(userId);
|
Long shopId = member.getRelationShopId();
|
appBaseGetDto.setUserId(userId);
|
couponService.appGetCoupon(appBaseGetDto.getId(),userId,shopId);
|
return R.ok();
|
}
|
|
@RequestMapping(value = "/pageAppUserGetCoupon", method = RequestMethod.POST)
|
@ApiOperation(value = "用户分页获取已领取优惠券列表")
|
public R<Page<AppMemberCouponPageVo>> pageAppUserGetCoupon(@RequestBody AppMemberCouponPageDto appMemberCouponPageDto) {
|
Long userId = SecurityUtils.getUserId();
|
appMemberCouponPageDto.setUserId(userId);
|
Member member = memberService.getByUserId(userId);
|
Page<AppMemberCouponPageVo> page = new Page<>();
|
page.setSize(appMemberCouponPageDto.getPageSize());
|
page.setCurrent(appMemberCouponPageDto.getPageNum());
|
List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponService.pageAppUserGetCoupon(page, appMemberCouponPageDto, member);
|
return R.ok(page.setRecords(memberCouponPageVoList));
|
}
|
|
@ResponseBody
|
@PostMapping("/getCouponInfo/{couponId}")
|
@ApiOperation(value = "获取优惠券详情【2.0】", tags = "领券中心")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "id", value = "优惠券id", required = true, dataType = "String", paramType = "path")
|
})
|
public R<CouponInfoVo> getCouponInfo(@PathVariable("couponId") String couponId) {
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
Coupon coupon = couponService.getById(couponId);
|
CouponInfoVo vo = new CouponInfoVo();
|
vo.setId(coupon.getCouponId());
|
vo.setName(coupon.getCouponName());
|
vo.setType(coupon.getCouponType());
|
vo.setMoneyThreshold(coupon.getMoneyThreshold());
|
vo.setDiscountPercent(coupon.getDiscountPercent());
|
vo.setDiscountMoney(coupon.getDiscountMoney());
|
vo.setValidType(coupon.getValidTimeType());
|
vo.setValidDays(coupon.getValidDay());
|
vo.setValidStartTime(sdf.format(coupon.getValidStartTime()));
|
vo.setValidEndTime(sdf.format(coupon.getValidEndTime()));
|
vo.setPropagandaPoster(coupon.getPropagandaPoster());
|
vo.setUseGoods("");
|
//构建特定商品数据
|
if (StringUtils.isNotEmpty(coupon.getRelGoodsIds())) {
|
String relGoodsIds = coupon.getRelGoodsIds();
|
List<Goods> data = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
|
StringBuilder sb = new StringBuilder();
|
for (Goods goods : data) {
|
sb.append(goods.getGoodsName()).append(",");
|
}
|
vo.setUseGoods(sb.substring(0, sb.length() - 1));
|
}
|
vo.setLaveNum(coupon.getSendLimitFlag());
|
vo.setReceiveNum(coupon.getSendLimitNumber());
|
int count = memberCouponService.count(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId).eq("del_flag", 0));
|
vo.setLaveNum(coupon.getSendLimitNumber() - count);
|
MemberCoupon one = memberCouponService.getOne(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId).eq("user_id", SecurityUtils.getUserId()));
|
if (one != null) {
|
vo.setStatus(one.getCouponStatus());
|
}
|
return R.ok(vo);
|
}
|
|
|
@ResponseBody
|
@PostMapping("/shareCoupon/{couponId}")
|
@ApiOperation(value = "分享优惠券【2.0】", tags = "领券中心")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "id", value = "优惠券id", required = true, dataType = "String", paramType = "path")
|
})
|
public R<Boolean> shareCoupon(@PathVariable("couponId") String couponId) {
|
//检测是否可以抽奖
|
List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(3).getData();
|
if (data.size() > 0) {
|
return R.ok(true);
|
}
|
return R.ok(false);
|
}
|
}
|