Pu Zhibing
4 天以前 d6a0c57043e8cc20694a3c678bf8e3a8f28f6499
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -1,25 +1,34 @@
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.List;
/**
@@ -33,17 +42,24 @@
@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) {
@@ -53,7 +69,7 @@
        Page<AppGetAbleCouponPageVo> page = new Page<>();
        page.setSize(appPageDto.getPageSize());
        page.setCurrent(appPageDto.getPageNum());
        List<AppGetAbleCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page,appPageDto,member);
        List<AppGetAbleCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page, appPageDto, member);
        return R.ok(page.setRecords(unGetCouponPageVoList));
    }
@@ -77,7 +93,66 @@
        Page<AppMemberCouponPageVo> page = new Page<>();
        page.setSize(appMemberCouponPageDto.getPageSize());
        page.setCurrent(appMemberCouponPageDto.getPageNum());
        List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponService.pageAppUserGetCoupon(page,appMemberCouponPageDto, member);
        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);
    }
}