jiangqs
2023-07-04 9c6fd541f0aa8e384c26998597a6788bb77eca8d
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,13 +1,20 @@
package com.ruoyi.member.service.impl.member;
import com.ruoyi.member.domain.pojo.member.MemberCoupon;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.member.mapper.member.MemberCouponMapper;
import com.ruoyi.member.service.member.MemberCouponService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
import com.ruoyi.system.api.service.RemoteGoodsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
@@ -24,6 +31,10 @@
    @Resource
    private MemberCouponMapper memberCouponMapper;
    @Resource
    private RemoteGoodsService remoteGoodsService;
    /**
     * @description: TODO
     * @author jqs34
@@ -35,4 +46,108 @@
        List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(userId);
        return appMemberCouponVoList;
    }
    /**
     * @description  核销优惠券
     * @author  jqs
     * @date    2023/6/26 17:02
     * @param verifyCoupon
     * @return  void
     */
    @Override
    public MerVerifyCouponGetVo getVerifyCoupon(String verifyCoupon){
        MemberCoupon memberCoupon = this.getById(verifyCoupon);
        // 检查是否存在该优惠券
        if (memberCoupon == null) {
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
        }
        // 检查优惠券状态
        int couponStatus = memberCoupon.getCouponStatus();
        if (couponStatus == 0) {
            throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
        } else if (couponStatus == 2) {
            throw new ServiceException(AppErrorConstant.COUPON_USED);
        } else if (couponStatus != 0) {
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
        }
        // 检查优惠券类型
        int couponType = memberCoupon.getCouponType();
        if (couponType != 4) {
            throw new ServiceException(AppErrorConstant.COUPON_TYPE_ERROR);
        }
        MerVerifyCouponGetVo merVerifyCouponGetVo = new MerVerifyCouponGetVo();
        merVerifyCouponGetVo.setUserId(memberCoupon.getUserId());
        String relGoodsIds = memberCoupon.getRelGoodsIds();
        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
        if (goodsList != null) {
            merVerifyCouponGetVo.setGoodsList(goodsList);
        }
        merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
        if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
            merVerifyCouponGetVo.setCouponFrom("商户");
        } else {
            merVerifyCouponGetVo.setCouponFrom("平台");
        }
        return merVerifyCouponGetVo;
    }
    /**
     * @description  核销优惠券
     * @author  jqs
     * @date    2023/6/28 11:44
     * @param memberCouponId
     * @return  MerVerifyCouponGetVo
     */
    @Override
    public MerVerifyCouponGetVo sureVerifyCoupon(String memberCouponId){
        MemberCoupon memberCoupon = this.getById(memberCouponId);
        if(memberCoupon==null||memberCoupon.getDelFlag()==1){
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
        }
        if(memberCoupon.getCouponStatus()==0){
            throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
        }else if(memberCoupon.getCouponStatus()==2){
            throw new ServiceException(AppErrorConstant.COUPON_USED);
        }else if(memberCoupon.getCouponStatus()!=0){
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
        }
        if(memberCoupon.getCouponType()!=4){
            throw new ServiceException(AppErrorConstant.COUPON_TYPE_ERROR);
        }
        MerVerifyCouponGetVo merVerifyCouponGetVo = new MerVerifyCouponGetVo();
        merVerifyCouponGetVo.setUserId(memberCoupon.getUserId());
        String relGoodsIds = memberCoupon.getRelGoodsIds();
        List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
        if(goodsList!=null){
            merVerifyCouponGetVo.setGoodsList(goodsList);
        }
        merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
        if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
            merVerifyCouponGetVo.setCouponFrom("商户");
        } else {
            merVerifyCouponGetVo.setCouponFrom("平台");
        }
        memberCoupon.setCouponStatus(2);
        memberCoupon.setUseTime(new Date());
        this.saveOrUpdate(memberCoupon);
        merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
        return merVerifyCouponGetVo;
    }
    /**
     * @description
     * @author  jqs
     * @date    2023/6/29 11:42
     * @param userId
     * @param couponId
     * @return  Integer
     */
    @Override
    public Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId){
        LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(MemberCoupon::getUserId,userId);
        queryWrapper.eq(MemberCoupon::getCouponId,couponId);
        Integer total = this.count(queryWrapper);
        return total;
    }
}