Pu Zhibing
3 天以前 ea1a62ba6484d6c6cb1ca67dcea938a95ba18fc6
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -4,13 +4,19 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.member.domain.dto.AppMemberCouponPageDto;
import com.ruoyi.member.domain.dto.MemberSelectCouponDto;
import com.ruoyi.member.domain.dto.MerGoodsCouponListDto;
import com.ruoyi.member.domain.pojo.coupon.Coupon;
import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
import com.ruoyi.member.mapper.coupon.CouponMapper;
import com.ruoyi.member.mapper.member.MemberCouponMapper;
import com.ruoyi.member.service.coupon.CouponService;
import com.ruoyi.member.service.coupon.MemberCouponRecordService;
import com.ruoyi.member.service.member.MemberCouponService;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.MerBaseDto;
@@ -45,17 +51,26 @@
@Service
@DS("sharding")
public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
    @Resource
    private MemberCouponMapper memberCouponMapper;
    @Resource
    private RemoteGoodsService remoteGoodsService;
    @Resource
    private RemoteShopService remoteShopService;
    @Resource
    private CouponService couponService;
    @Resource
    private MemberCouponRecordService memberCouponRecordService;
    @Resource
    private CouponMapper couponMapper;
    /**
     * @description: TODO
     * @author jqs34
@@ -63,11 +78,11 @@
     * @version 1.0
     */
    @Override
    public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto){
    public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto) {
        List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(merBaseDto);
        return appMemberCouponVoList;
    }
    /**
     * @description  核销优惠券
     * @author  jqs
@@ -112,7 +127,7 @@
        merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
        return merVerifyCouponGetVo;
    }
    /**
     * @description  核销优惠券
     * @author  jqs
@@ -150,13 +165,13 @@
            merVerifyCouponGetVo.setCouponFrom("平台");
        }
        memberCoupon.setCouponStatus(2);
        memberCoupon.setUseTime(new Date());
        this.saveOrUpdate(memberCoupon);
        merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
        return merVerifyCouponGetVo;
    }
    /**
     * @description
     * @author  jqs
@@ -173,7 +188,7 @@
        Integer total = this.count(queryWrapper);
        return total;
    }
    /**
     * @description 用户分页获取已领取优惠券列表
     * @author  jqs
@@ -261,7 +276,7 @@
        }
        return memberCouponPageVoList;
    }
    /**
     * @description  定时检查优惠券过期
     * @author  jqs
@@ -273,7 +288,7 @@
    public void timingCheckMemberCoupon(){
        memberCouponMapper.timingCheckMemberCoupon();
    }
    /**
     * @description  使用优惠券
     * @author  jqs
@@ -286,7 +301,7 @@
    public void useMemberCoupon(String memberCouponIds){
        memberCouponMapper.useMemberCoupon(memberCouponIds);
    }
    /**
     * @description  使用优惠券
     * @author  jqs
@@ -298,7 +313,7 @@
    public void backMemberCoupon(String memberCouponIds){
        memberCouponMapper.backMemberCoupon(memberCouponIds);
    }
    /**
     * @description
     * @author  jqs
@@ -347,24 +362,101 @@
        }
        return merMemberCouponVoList;
    }
    /**
     * @description  确认核销优惠券
     * @author  jqs
     * @date    2023/8/15 11:21
     * @param memberCouponId
     * @param shopId
     * @return  void
     * @return void
     * @description 确认核销优惠券
     * @author jqs
     * @date 2023/8/15 11:21
     */
    @Override
    public void sureMemberCoupon(Long memberCouponId, Long shopId){
    public void sureMemberCoupon(Long memberCouponId, Long shopId) {
        memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
    public void insert(MemberCoupon memberCoupon) {
        this.baseMapper.insert(memberCoupon);
    }
    /**
     * 手动添加用户优惠券
     *
     * @param couponId
     * @param number
     * @return
     */
    @Override
    public R addMemberCoupon(String couponId, Integer number, Long userId) {
        Coupon coupon = couponService.getById(couponId);
        if (null == coupon) {
            return R.fail("优惠券不存在");
        }
        List<MemberCoupon> memberCouponList = new ArrayList<>();
        MemberCoupon memberCoupon;
        Integer sendTotal = 0;
        Integer sendPerson = 0;
        Integer sendUserTotal;
        for (int i = 0; i < number; i++) {
            memberCoupon = new MemberCoupon();
            memberCoupon.setDelFlag(0);
            memberCoupon.setCouponId(coupon.getCouponId());
            memberCoupon.setUserId(userId);
            memberCoupon.setShopId(coupon.getShopId());
            memberCoupon.setCouponType(coupon.getCouponType());
            if (coupon.getCouponType() == 1) {
                memberCoupon.setMoneyThreshold(coupon.getMoneyThreshold());
                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
            } else if (coupon.getCouponType() == 2) {
                memberCoupon.setDiscountPercent(coupon.getDiscountPercent());
            } else if (coupon.getCouponType() == 3) {
                memberCoupon.setDiscountMoney(coupon.getDiscountMoney());
            } else {
                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
            }
            memberCoupon.setCouponStatus(coupon.getCouponStatus());
            memberCoupon.setCouponName(coupon.getCouponName());
            memberCoupon.setSendType(coupon.getSendType());
            memberCoupon.setSendTarget(coupon.getSendTarget());
            memberCoupon.setSendTimeType(coupon.getSendTimeType());
            memberCoupon.setSendTime(coupon.getSendTime());
            memberCoupon.setUseScope(coupon.getUseScope());
            if (memberCoupon.getUseScope() == 2) {
                memberCoupon.setRelGoodsIds(coupon.getRelGoodsIds());
            }
            memberCoupon.setValidTimeType(coupon.getValidTimeType());
            memberCoupon.setValidStartTime(coupon.getValidStartTime());
            memberCoupon.setValidEndTime(coupon.getValidEndTime());
            memberCoupon.setValidDay(coupon.getValidDay());
            memberCoupon.setCouponFrom(coupon.getCouponFrom());
            memberCoupon.setReceiveTime(new Date());
            //有效期处理1.时间段2.领取之日起
            if (coupon.getValidTimeType() == 1) {
                memberCoupon.setDeadlineTime(coupon.getValidEndTime());
            } else if (coupon.getValidTimeType() == 2) {
                memberCoupon.setDeadlineTime(DateUtils.addDays(new Date(), coupon.getValidDay()));
            }
            memberCouponList.add(memberCoupon);
            sendTotal = sendTotal + 1;
            if (coupon.getSendType() == 1) {
                sendUserTotal = this.totalMemberCouponByUserAndCoupon(userId, coupon.getCouponId());
                if (sendUserTotal != null && sendUserTotal > 0) {
                } else {
                    sendPerson = sendPerson + 1;
                }
            }
            memberCouponRecordService.updateMemberCouponRecord(coupon, userId, 1);
        }
        this.saveBatch(memberCouponList);
        //处理优惠券统计
        if (sendTotal > 0) {
            couponMapper.updateCouponTotal(coupon.getCouponId(), sendTotal, sendPerson);
        }
        return R.ok();
    }
}