From 7bae021827bce8b8678c929ffe6e397b0ad9a7a2 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 12 Sep 2023 11:05:35 +0800 Subject: [PATCH] 优惠卷 --- src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java | 89 ++++++++++++++++------------- src/main/resources/mapper/modules/MallMemberCouponMapper.xml | 9 +++ src/main/java/cc/mrbird/febs/mall/mapper/MallMemberCouponMapper.java | 4 + src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 29 +++++---- 4 files changed, 77 insertions(+), 54 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberCouponMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberCouponMapper.java index 2a066d0..c1656ad 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberCouponMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberCouponMapper.java @@ -15,4 +15,8 @@ IPage<MallMemberCouponVo> selectListInPage(IPage<MallMemberCouponVo> page, @Param("record") MallMemberCouponDto mallMemberCouponDto); List<MallMemberCoupon> selectListByExpireTime(@Param("date")DateTime date); + + List<MallMemberCoupon> selectListByMemberIdAndGoodsIdAndCouponId(@Param("memberId")Long memberId, + @Param("goodsId")Long goodsId, + @Param("couponId")Long couponId); } diff --git a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java index 108967a..e408b37 100644 --- a/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java +++ b/src/main/java/cc/mrbird/febs/mall/quartz/OrderOvertimeJob.java @@ -2,14 +2,12 @@ import cc.mrbird.febs.common.enumerates.OrderStatusEnum; import cc.mrbird.febs.common.exception.FebsException; -import cc.mrbird.febs.mall.entity.MallGoods; -import cc.mrbird.febs.mall.entity.MallGoodsSku; -import cc.mrbird.febs.mall.entity.MallOrderInfo; -import cc.mrbird.febs.mall.entity.MallOrderItem; +import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -43,45 +41,54 @@ @Autowired private MallGoodsSkuMapper mallGoodsSkuMapper; -// @Scheduled(cron = "0 0/5 * * * ? ") -// public void overtimeJob() { -// log.info("订单超时任务执行"); -// List<MallOrderInfo> orderList = orderInfoMapper.selectOrderInfoUpTime(OrderStatusEnum.WAIT_PAY.getValue()); -// if (CollUtil.isNotEmpty(orderList)) { -// for (MallOrderInfo orderInfo : orderList) { -// //更新订单状态 -// orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue()); -// orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY); -// orderInfoMapper.updateById(orderInfo); -// -// List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId()); -// if(CollUtil.isNotEmpty(mallOrderItemList)){ -// for(MallOrderItem mallOrderItem : mallOrderItemList){ -// MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(mallOrderItem.getSkuId()); -// if (sku == null) { -// throw new FebsException("购买商品或sku不存在"); -// } -// -//// if (sku.getStock() < mallOrderItem.getCnt()) { -//// throw new FebsException(sku.getSkuName() + "库存不足"); -//// } -// -// MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); -// Integer goodsResult = mallGoodsMapper.updateStockAndVolumeByGoodsId(mallGoods.getId(), mallOrderItem.getCnt()); -// if(1 != goodsResult){ -// throw new FebsException(mallGoods.getGoodsName() + "库存不足"); -// } -// -// Integer skuResult = mallGoodsSkuMapper.updateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt()); -// if(1 != skuResult){ + @Autowired + private MallMemberCouponMapper mallMemberCouponMapper; + + @Scheduled(cron = "0 0/5 * * * ? ") + public void overtimeJob() { + log.info("订单超时任务执行"); + List<MallOrderInfo> orderList = orderInfoMapper.selectOrderInfoUpTime(OrderStatusEnum.WAIT_PAY.getValue()); + if (CollUtil.isNotEmpty(orderList)) { + for (MallOrderInfo orderInfo : orderList) { + //更新订单状态 + orderInfo.setStatus(OrderStatusEnum.CANCEL.getValue()); + orderInfo.setCancelType(MallOrderInfo.CANCEL_OVERTIME_NO_PAY); + orderInfoMapper.updateById(orderInfo); + + List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(orderInfo.getId()); + if(CollUtil.isNotEmpty(mallOrderItemList)){ + for(MallOrderItem mallOrderItem : mallOrderItemList){ + MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(mallOrderItem.getSkuId()); + if (sku == null) { + throw new FebsException("购买商品或sku不存在"); + } + +// if (sku.getStock() < mallOrderItem.getCnt()) { // throw new FebsException(sku.getSkuName() + "库存不足"); // } -// } -// } -// } -// } -// -// } + + MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId()); + Integer goodsResult = mallGoodsMapper.updateStockAndVolumeByGoodsId(mallGoods.getId(), mallOrderItem.getCnt()); + if(1 != goodsResult){ + throw new FebsException(mallGoods.getGoodsName() + "库存不足"); + } + + Integer skuResult = mallGoodsSkuMapper.updateStockAndVolumeBySkuId(sku.getId(),mallOrderItem.getCnt()); + if(1 != skuResult){ + throw new FebsException(sku.getSkuName() + "库存不足"); + } + Long memberCouponId = mallOrderItem.getMemberCouponId(); + MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(memberCouponId); + if(ObjectUtil.isNotEmpty(mallMemberCoupon)){ + mallMemberCoupon.setState(1); + mallMemberCouponMapper.updateById(mallMemberCoupon); + } + } + } + } + } + + } // @Scheduled(cron = "0/5 * * * * ? ") // public void wakeup() { diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 06f3129..e24fe1d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -892,19 +892,22 @@ if(ObjectUtil.isNotEmpty(salemanCoupon)){ Long couponId = salemanCoupon.getCouponId(); Long goodsId = getCouponDto.getGoodsId(); - //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 - List<CouponGoods> couponGoodsList = couponGoodsMapper.selectByGoodIdAndCouponId(goodsId,couponId); - MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); - if(CollUtil.isNotEmpty(couponGoodsList)){ - MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); - mallMemberCoupon.setCouponId(couponId); - mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); - mallMemberCoupon.setMemberId(memberId); - mallMemberCoupon.setGoodsId(goodsId); - mallMemberCoupon.setInviteId(mallMember.getInviteId()); - mallMemberCoupon.setState(1); - mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay())); - mallMemberCouponMapper.insert(mallMemberCoupon); + List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponId(memberId, goodsId, couponId); + if(CollUtil.isEmpty(mallMemberCoupons)){ + //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 + List<CouponGoods> couponGoodsList = couponGoodsMapper.selectByGoodIdAndCouponId(goodsId,couponId); + MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); + if(CollUtil.isNotEmpty(couponGoodsList)){ + MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); + mallMemberCoupon.setCouponId(couponId); + mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); + mallMemberCoupon.setMemberId(memberId); + mallMemberCoupon.setGoodsId(goodsId); + mallMemberCoupon.setInviteId(mallMember.getInviteId()); + mallMemberCoupon.setState(1); + mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay())); + mallMemberCouponMapper.insert(mallMemberCoupon); + } } } diff --git a/src/main/resources/mapper/modules/MallMemberCouponMapper.xml b/src/main/resources/mapper/modules/MallMemberCouponMapper.xml index a257591..20e28d8 100644 --- a/src/main/resources/mapper/modules/MallMemberCouponMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberCouponMapper.xml @@ -36,4 +36,13 @@ and a.state = 1 </select> + <select id="selectListByMemberIdAndGoodsIdAndCouponId" resultType="cc.mrbird.febs.mall.entity.MallMemberCoupon"> + select + a.* + from mall_member_coupon a + where a.member_id = #{memberId} + and a.goods_id = #{goodsId} + and a.coupon_id = #{couponId} + </select> + </mapper> \ No newline at end of file -- Gitblit v1.9.1