From f26537e926d7ad2d725e059700142ba14c0c2b1f Mon Sep 17 00:00:00 2001 From: jiangqs <jiangqs> Date: 星期三, 12 七月 2023 21:04:27 +0800 Subject: [PATCH] 定时任务延时任务 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 201 insertions(+), 0 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index 5884fed..a0fa97a 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -8,6 +8,7 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.uuid.IdUtils; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.domain.dto.*; @@ -22,12 +23,14 @@ import com.ruoyi.order.service.order.OrderService; import com.ruoyi.order.service.order.UserServiceRecordService; import com.ruoyi.system.api.constant.AppErrorConstant; +import com.ruoyi.system.api.constant.SecurityConstant; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.goods.GoodsFile; import com.ruoyi.system.api.domain.poji.goods.ShopGoods; import com.ruoyi.system.api.domain.poji.member.Member; import com.ruoyi.system.api.domain.poji.member.MemberCoupon; +import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord; import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; @@ -89,6 +92,9 @@ @Resource private UserServiceRecordMapper userServiceRecordMapper; + + @Resource + private RedisService redisService; /** * @description: buyGoods @@ -526,6 +532,13 @@ String activityId = appPlaceActivityDto.getActivityId(); String goodsId = appPlaceActivityDto.getGoodsId(); Integer buyNum = appPlaceActivityDto.getBuyNum(); + //redis库存控制极简版 + Integer surpNum = redisService.getCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId); + if(surpNum==null||surpNum<buyNum){ + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); + }else{ + redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS+"-"+activityId+"-"+goodsId,surpNum-buyNum); + } // 定义购买数量,服务数量,商品数量 BigDecimal buyNumBig; Integer serviceNum; @@ -559,6 +572,9 @@ throw new ServiceException(AppErrorConstant.ACTIVITY_END); } if (activityGoodsGetVo.getAvailableBuyNum() < 1) { + throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); + } + if (buyNum < activityGoodsGetVo.getAvailableBuyNum()) { throw new ServiceException(AppErrorConstant.ACTIVITY_GOODS_NULL); } // 创建订单ID和订单号 @@ -976,12 +992,23 @@ merVerifyCouponVo.setUserName(member.getNickName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); + merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName()); + merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime()); // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() .map(goods -> { MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); merCouponGoods.setGoodsId(goods.getGoodsId()); merCouponGoods.setGoodsName(goods.getGoodsName()); + if (goods.getGoodsType() == 1) { + merCouponGoods.setGoodsType("周期"); + } else if (goods.getGoodsType() == 2) { + merCouponGoods.setGoodsType("服务"); + } else if (goods.getGoodsType() == 3) { + merCouponGoods.setGoodsType("体验"); + } else if (goods.getGoodsType() == 4) { + merCouponGoods.setGoodsType("单品"); + } // 设置其他属性 return merCouponGoods; }) @@ -1029,8 +1056,99 @@ consumerGoodsList.add(consumerGoods); } consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); + merVerifyCouponVo.setVerifyStatus(2); return merVerifyCouponVo; } + + + /** + * @description 确认核销奖品 + * @author jqs + * @date 2023/7/9 9:54 + * @param merVerifyPrizeDto + * @return MerVerifyAwardVo + */ + @Override + public MerVerifyAwardVo sureVerifyPrize(MerVerifyPrizeDto merVerifyPrizeDto){ + MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); + MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(merVerifyPrizeDto.getPrizeId()).getData(); + if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){ + throw new ServiceException(AppErrorConstant.COUPON_USED); + } + Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); + merVerifyAwardVo.setUserName(member.getNickName()); + merVerifyAwardVo.setUserMobile(member.getMobile()); + if(memberGiftRecord.getGiftFrom()==1){ + merVerifyAwardVo.setGiftFrom("平台生日卡"); + }else{ + merVerifyAwardVo.setGiftFrom("商户生日卡"); + } + merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); + List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>(); + BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto(); + switch(memberGiftRecord.getGiftType()){ + case 1: + merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber())); + birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId()); + birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType()); + birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom()); + birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId()); + birthdayGiftSendDto.setCouponId(memberGiftRecord.getCouponId()); + birthdayGiftSendDto.setCouponNumber(memberGiftRecord.getCouponNumber()); + giftSendDtoList.add(birthdayGiftSendDto); + remoteCouponService.sendCouponGift(giftSendDtoList); + break; + case 2: + Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData(); + merVerifyAwardVo.setGiftName(memberGiftRecord.getGoodsName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGoodsNumber())); + if (goods.getGoodsType() == 1) { + merVerifyAwardVo.setGiftRemark("周期"); + } else if (goods.getGoodsType() == 2) { + merVerifyAwardVo.setGiftRemark("服务"); + } else if (goods.getGoodsType() == 3) { + merVerifyAwardVo.setGiftRemark("体验"); + } else if (goods.getGoodsType() == 4) { + merVerifyAwardVo.setGiftRemark("单品"); + } + birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId()); + birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType()); + birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom()); + birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId()); + birthdayGiftSendDto.setGoodsId(memberGiftRecord.getGoodsId()); + birthdayGiftSendDto.setGoodsNumber(memberGiftRecord.getGoodsNumber()); + giftSendDtoList.add(birthdayGiftSendDto); + consumerGoodsService.sendGoodsGift(giftSendDtoList); + break; + case 3: + merVerifyAwardVo.setGiftName("现金"); + merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); + break; + case 4: + merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGiftNumber())); + break; + default: + break; + } + merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime()); + memberGiftRecord.setVerifyStatus(2); + memberGiftRecord.setVerifyTime(new Date()); + if(member.getBindingFlag()!=1){ + AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); + appMemberBindingDto.setBindingFlag(1); + appMemberBindingDto.setShopId(merVerifyPrizeDto.getShopId()); + Shop shop = remoteShopService.getShop(merVerifyPrizeDto.getShopId()).getData(); + appMemberBindingDto.setShopName(shop.getShopName()); + appMemberBindingDto.setUserId(merVerifyPrizeDto.getUserId()); + remoteMemberService.updateMemberBinding(appMemberBindingDto); + } + merVerifyAwardVo.setPrizeId(merVerifyPrizeDto.getPrizeId()); + merVerifyAwardVo.setVerifyStatus(2); + return merVerifyAwardVo; + } + /** * 收银未结清订单列表 @@ -2312,19 +2430,95 @@ merVerifyCouponVo.setUserName(member.getNickName()); merVerifyCouponVo.setUserMobile(member.getMobile()); merVerifyCouponVo.setCouponFrom(verifyCouponGetVo.getCouponFrom()); + merVerifyCouponVo.setCouponName(verifyCouponGetVo.getMemberCoupon().getCouponName()); + merVerifyCouponVo.setCreateTime(verifyCouponGetVo.getMemberCoupon().getReceiveTime()); // 将goodsList转换为MerCouponGoodsListVo列表,并设置相应属性 List<MerCouponGoodsListVo> merCouponGoodsList = goodsList.stream() .map(goods -> { MerCouponGoodsListVo merCouponGoods = new MerCouponGoodsListVo(); merCouponGoods.setGoodsId(goods.getGoodsId()); merCouponGoods.setGoodsName(goods.getGoodsName()); + if (goods.getGoodsType() == 1) { + merCouponGoods.setGoodsType("周期"); + } else if (goods.getGoodsType() == 2) { + merCouponGoods.setGoodsType("服务"); + } else if (goods.getGoodsType() == 3) { + merCouponGoods.setGoodsType("体验"); + } else if (goods.getGoodsType() == 4) { + merCouponGoods.setGoodsType("单品"); + } // 设置其他属性 return merCouponGoods; }) .collect(Collectors.toList()); // 设置merVerifyCouponVo的goodsList属性为merCouponGoodsList merVerifyCouponVo.setGoodsList(merCouponGoodsList); + merVerifyCouponVo.setVerifyStatus(1); return merVerifyCouponVo; + } + + /** + * @description 获取核销奖品 + * @author jqs + * @date 2023/7/8 17:46 + * @param verifyCode + * @param shopId + * @return MerVerifyAwardVo + */ + @Override + public MerVerifyAwardVo verifyPrize(String verifyCode,Long shopId){ + MerVerifyAwardVo merVerifyAwardVo = new MerVerifyAwardVo(); + MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrize(verifyCode).getData(); + if(memberGiftRecord==null||memberGiftRecord.getVerifyStatus()!=1){ + throw new ServiceException(AppErrorConstant.COUPON_USED); + } + if(memberGiftRecord.getGiftFrom()==2&&!memberGiftRecord.getShopId().equals(shopId)){ + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); + merVerifyAwardVo.setUserName(member.getNickName()); + merVerifyAwardVo.setUserMobile(member.getMobile()); + if(memberGiftRecord.getGiftFrom()==1){ + merVerifyAwardVo.setGiftFrom("平台生日卡"); + }else{ + merVerifyAwardVo.setGiftFrom("商户生日卡"); + } + + merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); + switch(memberGiftRecord.getGiftType()){ + case 1: + merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber())); + break; + case 2: + Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData(); + merVerifyAwardVo.setGiftName(memberGiftRecord.getGoodsName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGoodsNumber())); + if (goods.getGoodsType() == 1) { + merVerifyAwardVo.setGiftRemark("周期"); + } else if (goods.getGoodsType() == 2) { + merVerifyAwardVo.setGiftRemark("服务"); + } else if (goods.getGoodsType() == 3) { + merVerifyAwardVo.setGiftRemark("体验"); + } else if (goods.getGoodsType() == 4) { + merVerifyAwardVo.setGiftRemark("单品"); + } + break; + case 3: + merVerifyAwardVo.setGiftName("现金"); + merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); + break; + case 4: + merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getGiftNumber())); + break; + default: + break; + } + merVerifyAwardVo.setCreateTime(memberGiftRecord.getCreateTime()); + merVerifyAwardVo.setVerifyStatus(1); + merVerifyAwardVo.setPrizeId(verifyCode); + return merVerifyAwardVo; } /** @@ -2360,6 +2554,13 @@ merTotalDto.setShopId(null); } MerOrderTotalVo orderTotalVo = orderMapper.getMerOrderTotalOrderFrom(merTotalDto); + MerOrderTotalVo goodsTypeVo = orderMapper.getMerTotalOrderTotalGoodsType(merTotalDto); + orderTotalVo.setCycleTotal(goodsTypeVo.getCycleTotal()); + orderTotalVo.setCycleMoney(goodsTypeVo.getCycleMoney()); + orderTotalVo.setExperienceTotal(goodsTypeVo.getExperienceTotal()); + orderTotalVo.setExperienceMoney(goodsTypeVo.getExperienceMoney()); + orderTotalVo.setServiceTotal(goodsTypeVo.getServiceTotal()); + orderTotalVo.setServiceMoney(goodsTypeVo.getServiceMoney()); return orderTotalVo; } -- Gitblit v1.7.1