From 3e7932d378b607f75379b463ae4ae2f4f1ccfe12 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期三, 18 六月 2025 10:31:30 +0800 Subject: [PATCH] Merge branch '2.0' of http://120.76.84.145:10101/gitblit/r/java/HongRuiTang into 2.0 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 485 +++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 431 insertions(+), 54 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 2d4ade6..4640431 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.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.douyin.openapi.client.models.*; import com.github.binarywang.wxpay.bean.ecommerce.*; import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum; import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult; @@ -17,7 +18,6 @@ import com.google.common.collect.Lists; import com.google.gson.Gson; import com.ruoyi.common.core.constant.CacheConstants; -import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.UserStatus; import com.ruoyi.common.core.exception.ServiceException; @@ -29,6 +29,8 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.goods.api.domain.LotteryEvent; +import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.order.config.WxPayConfiguration; import com.ruoyi.order.domain.dto.*; import com.ruoyi.order.domain.pojo.account.OrderPayment; @@ -48,6 +50,8 @@ import com.ruoyi.order.service.account.ProfitSharingService; import com.ruoyi.order.service.order.*; import com.ruoyi.order.util.HuiFuTianXiaUtil; +import com.ruoyi.order.util.douyin.OrderUtil; +import com.ruoyi.order.util.douyin.VerifyUtil; import com.ruoyi.system.api.constant.AppErrorConstant; import com.ruoyi.system.api.constant.DelayTaskEnum; import com.ruoyi.system.api.constant.SecurityConstant; @@ -72,7 +76,6 @@ import lombok.extern.log4j.Log4j2; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -80,7 +83,6 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; -import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -154,18 +156,20 @@ @Resource private OrderPaymentService orderPaymentService; - + @Resource private ProfitSharingService profitSharingService; - + @Resource private OrderRefundService orderRefundService; - + @Value("${wx.pay.callbackPath}") private String callbackPath; - - + @Resource + private LotteryEventClient lotteryEventClient; + + /** * @description: buyGoods * @param: appSureOrderDto @@ -180,6 +184,7 @@ if(shop!=null&&shop.getShopStatus()!=1){ throw new ServiceException(AppErrorConstant.SHOP_CLOSED); } + Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); // 初始化订单对象 AppSureOrderVo appSureOrderVo = new AppSureOrderVo(); // 初始化订单商品列表 @@ -265,6 +270,14 @@ ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); if (shopGoods != null) { goodsPrice = shopGoods.getSalesPrice(); + } else { + //经销商定制价格 + appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); + appShopGoodsGetDto.setShopId(belongShop.getShopId()); + shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); + if (1 == belongShop.getModifyPricePermission() && null != shopGoods) { + goodsPrice = shopGoods.getSalesPrice(); + } } appSureOrderGoodsVo.setGoodsPrice(goodsPrice); buyNumBig = BigDecimal.valueOf(buyNum); @@ -448,6 +461,16 @@ ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); if (shopGoods != null) { goodsPrice = shopGoods.getSalesPrice(); + } else { + //经销商定制价格 + Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); + appShopGoodsGetDto = new AppShopGoodsGetDto(); + appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); + appShopGoodsGetDto.setShopId(belongShop.getShopId()); + shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); + if (1 == belongShop.getModifyPricePermission() && null != shopGoods) { + goodsPrice = shopGoods.getSalesPrice(); + } } appPanicBuyVo.setGoodsPrice(goodsPrice); buyNumBig = BigDecimal.valueOf(buyNum); @@ -587,6 +610,18 @@ if (shopGoods != null) { goodsPrice = shopGoods.getSalesPrice(); serviceNum = shopGoods.getServiceNum(); + } else { + //经销商定制价格 + Shop shop = remoteShopService.getShop(appPlaceOrderDto.getShopId()).getData(); + Shop belongShop = remoteShopService.getShop(shop.getBelongShopId()).getData(); + appShopGoodsGetDto = new AppShopGoodsGetDto(); + appShopGoodsGetDto.setGoodsId(goods.getGoodsId()); + appShopGoodsGetDto.setShopId(belongShop.getShopId()); + shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData(); + if (1 == belongShop.getModifyPricePermission() && null != shopGoods) { + goodsPrice = shopGoods.getSalesPrice(); + serviceNum = shopGoods.getServiceNum(); + } } appSureOrderGoodsVo.setGoodsPrice(goodsPrice); // 计算商品总价 @@ -1544,6 +1579,13 @@ appPlaceOrderVo.setPaySign(payArr[5]); appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId()); // 返回AppPlaceOrderVo对象 + List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData(); + if (data.size() > 0) { + long count = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) >= 0).count(); + appPlaceOrderVo.setLotteryDraw(count > 0); + } else { + appPlaceOrderVo.setLotteryDraw(false); + } return appPlaceOrderVo; } @@ -1770,12 +1812,12 @@ merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); merVerifyOrderVo.setPayType(order.getPayType()); merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney()); - if(order.getPayType()==1){ + if (order.getPayType() == 1) { merVerifyOrderVo.setReceiveMoney(order.getPayMoney()); - }else{ - if(order.getOfflinePayMoney()!=null){ + } else { + if (order.getOfflinePayMoney() != null) { merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney()); - }else{ + } else { merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); } } @@ -1787,7 +1829,41 @@ // 返回结果 return merVerifyOrderVo; } - + + + @Override + public MerVerifyOrderVo verifyOrderDouYin(String orderId, Long shopId) { + CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId); + if (null == data) { + throw new ServiceException("查询券信息失败"); + } + List<CertificatePrepareResponseDataCertificatesItem> itemList = data.getCertificates(); + if (null == itemList || itemList.isEmpty()) { + throw new ServiceException("查询券信息失败"); + } + CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0); + //商品信息 + CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku(); + //次卡信息 + CertificatePrepareResponseDataCertificatesItemTimeCard timeCard = certificatesItem.getTimeCard(); + //券的状态 + Number status = certificatesItem.getStatus(); + // 创建返回对象 + MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); + // 设置返回对象的属性值 + merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderFrom(6); + merVerifyOrderVo.setOrderStatus(status.intValue() == 1 ? 2 : 3); + List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = new ArrayList<>(); + AppUserOrderGoodsPageVo orderGoodsPageVo = new AppUserOrderGoodsPageVo(); + orderGoodsPageVo.setGoodsName(sku.getTitle()); + appUserOrderGoodsPageVoList.add(orderGoodsPageVo); + merVerifyOrderVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList); + merVerifyOrderVo.setLaveTime(timeCard.getTimesCount() - timeCard.getTimesUsed()); + // 返回结果 + return merVerifyOrderVo; + } + /** * 确认核销订单 * @@ -2029,17 +2105,222 @@ remoteMemberService.changeMemberTotal(memberTotalChangeDto); return merVerifyOrderVo; } - + + /** - * @description 分账实现 - * @author jqs - * @date 2023/9/8 11:56 + * 核销抖音券 + * + * @return + */ + @Override + @Transactional + @GlobalTransactional(rollbackFor = Exception.class) + public MerVerifyOrderVo sureVerifyOrderDouYin(MerVerifyOrderDto merVerifyOrderDto) { + String phone = merVerifyOrderDto.getPhone(); + String orderId = merVerifyOrderDto.getOrderId(); + Long shopId = merVerifyOrderDto.getShopId(); + //获取核销商户 + Shop shop = remoteShopService.getShop(shopId).getData(); + CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId); + if (null == data) { + throw new ServiceException("查询券信息失败"); + } + List<CertificatePrepareResponseDataCertificatesItem> itemList = data.getCertificates(); + if (null == itemList || itemList.isEmpty()) { + throw new ServiceException("查询券信息失败"); + } + CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0); + Number status = certificatesItem.getStatus(); + if (status.intValue() == 2) { + throw new ServiceException("该抖音券不能重复核销"); + } + if (status.intValue() != 1) { + throw new ServiceException("抖音券核销失败"); + } + String encryptedCode = certificatesItem.getEncryptedCode(); + List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getPoiId(), new ArrayList<String>() {{ + add(encryptedCode); + }}); + if (null == items || items.isEmpty()) { + throw new ServiceException("抖音券核销失败"); + } + Order one = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getTripartiteOrderId, data.getOrderId())); + if (null != one) { + throw new ServiceException("该抖音券不能重复核销"); + } + + TradeOrderQueryResponseData tradeOrderQueryResponseData = OrderUtil.queryOrderList(1, 10, data.getOrderId()); + //原始金额 + BigDecimal originAmount = BigDecimal.ZERO; + //支付金额 + BigDecimal payAmount = BigDecimal.ZERO; + //优惠金额 + BigDecimal payDiscountAmount = BigDecimal.ZERO; + if (null != tradeOrderQueryResponseData) { + TradeOrderQueryResponseDataOrdersItem ordersItem = tradeOrderQueryResponseData.getOrders().get(0); + TradeOrderQueryResponseDataOrdersItemAmountInfo amountInfo = ordersItem.getAmountInfo(); + originAmount = BigDecimal.valueOf(amountInfo.getOriginAmount()).divide(new BigDecimal(100)); + payAmount = BigDecimal.valueOf(amountInfo.getPayAmount()).divide(new BigDecimal(100)); + payDiscountAmount = BigDecimal.valueOf(amountInfo.getPayDiscountAmount()).divide(new BigDecimal(100)); + } + + Date nowTime = new Date(); + Member member = remoteMemberService.getMemberByMobile(phone).getData(); + //开始添加订单数据 + Order order = new Order(); + order.setOrderId(IdUtils.fastSimpleUUID()); + order.setDelFlag(0); + order.setOrderStatus(3); + order.setOrderNo(CodeFactoryUtil.getShopOrderNo()); + order.setOrderFrom(6); + order.setShopId(shopId); + order.setUserId(member.getUserId()); + order.setOrderMoney(originAmount); + order.setDiscountMoney(payDiscountAmount); + order.setReceivableMoney(payAmount); + order.setPayType(1); + order.setPayMoney(payAmount); + order.setOnlinePayMoney(payAmount); + order.setOrderRemark("抖音订单"); + order.setCreateTime(nowTime); + order.setPayTime(nowTime); + order.setTripartiteOrderId(data.getOrderId()); + + //绑定用户判断核销商户 + if (member.getBindingFlag() == 1) { + if (!member.getRelationShopId().equals(shopId)) { + throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); + } + } + order.setUseTime(nowTime); + order.setUseUserId(merVerifyOrderDto.getUserId()); + order.setCloseFlag(1); + this.save(order); + //创建服务商品 + //获取商品信息(商品简介,调理问题) + //商品信息 + CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku(); + //次卡信息 + CertificatePrepareResponseDataCertificatesItemTimeCard timeCard = certificatesItem.getTimeCard(); + + OrderGoods orderGoods = new OrderGoods(); + orderGoods.setOrderGoodsId(IdUtils.simpleUUID()); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(order.getOrderId()); + orderGoods.setBuyNum(timeCard.getTimesCount()); + orderGoods.setCycleNumFlag(1); + orderGoods.setServiceNum(timeCard.getTimesCount()); + orderGoods.setGoodsType(2); + orderGoods.setGoodsName(sku.getTitle()); + orderGoodsService.save(orderGoods); + + ConsumerGoods consumerGoods = new ConsumerGoods(); + consumerGoods.setConsumerGoodsId(IdUtils.simpleUUID()); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId()); + consumerGoods.setGoodsName(sku.getTitle()); + consumerGoods.setCycleNumFlag(1); + consumerGoods.setServiceNum(timeCard.getTimesCount()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsType(2); + consumerGoods.setSourceFrom(1); + consumerGoodsService.save(consumerGoods); + //生成返回 + MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); + merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderNo(order.getOrderNo()); + merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); + merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); + merVerifyOrderVo.setOrderGoodsMoney(order.getOrderMoney()); + merVerifyOrderVo.setCouponDiscount(order.getCouponMoney()); + merVerifyOrderVo.setReceivableDeposit(order.getReceivableDeposit()); + merVerifyOrderVo.setPayMoney(order.getPayMoney()); + merVerifyOrderVo.setOrderRemark(order.getOrderRemark()); + merVerifyOrderVo.setAppUserOrderGoodsPageVoList(new ArrayList<AppUserOrderGoodsPageVo>() {{ + add(new AppUserOrderGoodsPageVo() {{ + setOrderGoodsId(orderGoods.getOrderGoodsId()); + setGoodsName(orderGoods.getGoodsName()); + setGoodsType(orderGoods.getGoodsType()); + setBuyNum(orderGoods.getBuyNum()); + }}); + }}); + merVerifyOrderVo.setCreateTime(order.getCreateTime()); + merVerifyOrderVo.setPayTime(order.getPayTime()); + merVerifyOrderVo.setUseTime(order.getUseTime()); + merVerifyOrderVo.setPayType(order.getPayType()); + merVerifyOrderVo.setRealReceiveMoney(order.getChangeReceivableMoney()); + //根据支付方式返回应收金额和已收金额 + if (order.getPayType() == 1) { + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getPayMoney())); + merVerifyOrderVo.setReceiveMoney(order.getPayMoney()); + } else { + merVerifyOrderVo.setReceivableMoney(order.getOrderMoney().subtract(order.getCouponMoney()).subtract(order.getReceivableDeposit())); + if (order.getOfflinePayMoney() != null) { + merVerifyOrderVo.setReceiveMoney(order.getOfflinePayMoney()); + } else { + merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); + } + } + merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); + merVerifyOrderVo.setUserId(order.getUserId()); + merVerifyOrderVo.setUserName(member.getRealName()); + merVerifyOrderVo.setUserMobile(member.getMobile()); + merVerifyOrderVo.setCloseFlag(order.getCloseFlag()); + //判断用户是否绑定 2023-09-05需求改变核销时绑定用户 + if (member.getBindingFlag() != 1) { + //绑定商户 + AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto(); + appMemberBindingDto.setShopId(order.getShopId()); + appMemberBindingDto.setUserId(order.getUserId()); + appMemberBindingDto.setBindingFlag(1); + if (order.getOrderFrom() == 1) { + appMemberBindingDto.setBindingType(1); + } else if (order.getOrderFrom() == 2) { + appMemberBindingDto.setBindingType(2); + } + remoteMemberService.updateMemberBinding(appMemberBindingDto); + order.setNewMemberFlag(1); + } else { + order.setNewMemberFlag(0); + } + this.saveOrUpdate(order); + //更新用户积分和消费统计 + MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); + memberTotalChangeDto.setUserId(order.getUserId()); + // 如果存在积分兑换比例,则计算积分 + if (redisService.hasKey(SecurityConstant.PAY_MONEY_INTEGRAL)) { + Integer moneyValue = redisService.getCacheObject(SecurityConstant.PAY_MONEY_INTEGRAL); + BigDecimal moneyValueBig = BigDecimal.valueOf(moneyValue); + BigDecimal integralBig = moneyValueBig.multiply(order.getOnlinePayMoney()).setScale(0, BigDecimal.ROUND_HALF_UP); + Integer integral = Integer.valueOf(integralBig.toString()); + if (integral > 0) { + memberTotalChangeDto.setChangeIntegral(integral); + memberTotalChangeDto.setTypeIntegral(1); + memberTotalChangeDto.setOrderId(orderId); + memberTotalChangeDto.setOrderNo(order.getOrderNo()); + } + } + //更新消费时间 + memberTotalChangeDto.setConsumeTime(nowTime); + remoteMemberService.changeMemberTotal(memberTotalChangeDto); + return merVerifyOrderVo; + } + + + /** * @param orderId * @param orderNo * @param shopId * @param orderMoney * @param orderFrom - * @return void + * @return void + * @description 分账实现 + * @author jqs + * @date 2023/9/8 11:56 */ private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney, Integer orderFrom) { String sendMessage = ""; @@ -2405,20 +2686,20 @@ Long shopId = shopRelUserVo.getShopId(); Shop shop = remoteShopService.getShop(shopId).getData(); //平台奖品判断 - if (memberGiftRecord.getGiftFrom() == 1) { + if (memberGiftRecord.getGiftFrom() == 1 && memberGiftRecord.getPrizeFrom() == 1) { BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); //判断生日活动状态 - if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){ + if (birthdayCard != null && birthdayCard.getCardStatus() == 1) { shop = remoteShopService.getShop(shopId).getData(); //判断指定区域全部店铺 - if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){ + if (birthdayCard.getAreaFlag() == 2 && birthdayCard.getShopFlag() == 1 && !StringUtils.checkString(birthdayCard.getDesignatedArea(), shop.getShopCityCode())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } //判断指定店铺 - if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){ + if (birthdayCard.getShopFlag() == 2 && !StringUtils.checkString(birthdayCard.getApplicableShop(), shopId.toString())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - }else{ + } else { throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); } } @@ -2427,29 +2708,35 @@ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); - + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); - if (memberGiftRecord.getGiftFrom() == 1) { - merVerifyAwardVo.setGiftFrom("平台生日卡"); + if (memberGiftRecord.getPrizeFrom() == 1) { + if (memberGiftRecord.getGiftFrom() == 1) { + merVerifyAwardVo.setGiftFrom("平台生日卡"); + } else { + merVerifyAwardVo.setGiftFrom("商户生日卡"); + } } else { - merVerifyAwardVo.setGiftFrom("商户生日卡"); + 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); + if (memberGiftRecord.getPrizeFrom() == 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(); @@ -2472,10 +2759,16 @@ birthdayGiftSendDto.setGoodsNumber(memberGiftRecord.getGoodsNumber()); giftSendDtoList.add(birthdayGiftSendDto); consumerGoodsService.sendGoodsGift(giftSendDtoList); + //抽奖奖品中的平台商品需要生成订单数据 + if (memberGiftRecord.getPrizeFrom() == 2) { + addOrder(memberGiftRecord.getShopId(), memberGiftRecord.getUserId(), goods, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId()); + } break; case 3: - merVerifyAwardVo.setGiftName("现金"); - merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); + if (memberGiftRecord.getPrizeFrom() == 1) { + merVerifyAwardVo.setGiftName("现金"); + merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); + } break; case 4: merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName()); @@ -2503,8 +2796,65 @@ merVerifyAwardVo.setVerifyStatus(2); return merVerifyAwardVo; } - - + + + /** + * 核销抽奖的平台商品生成订单 + * + * @param shopId + * @param userId + * @param goods + * @param goodsNum + */ + public void addOrder(Long shopId, Long userId, Goods goods, Integer goodsNum, String giftId) { + Order order = new Order(); + order.setOrderId(IdUtils.simpleUUID()); + order.setDelFlag(0); + order.setOrderStatus(3); + order.setOrderNo(CodeFactoryUtil.getShopOrderNo()); + order.setOrderFrom(4); + order.setShopId(shopId); + order.setUserId(userId); + order.setOrderMoney(BigDecimal.ZERO); + order.setCouponMoney(BigDecimal.ZERO); + order.setDiscountMoney(BigDecimal.ZERO); + order.setReceivableMoney(BigDecimal.ZERO); + order.setPayType(1); + order.setPayMoney(BigDecimal.ZERO); + order.setOrderRemark("抽奖订单"); + order.setCreateTime(new Date()); + order.setPayTime(new Date()); + order.setUseTime(new Date()); + order.setUseUserId(userId); + order.setGoodsNum(goodsNum); + order.setReceivableDeposit(BigDecimal.ZERO); + order.setCloseFlag(1); + order.setActivityId(giftId); + this.save(order); + OrderGoods orderGoods = new OrderGoods(); + orderGoods.setOrderGoodsId(IdUtils.simpleUUID()); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(order.getOrderId()); + orderGoods.setGoodsId(goods.getGoodsId()); + orderGoods.setBuyNum(goodsNum); + orderGoods.setGoodsPrice(goods.getSalesPrice()); + orderGoods.setGoodsDeposit(goods.getSubscription()); + orderGoods.setGoodsTotalMoney(goods.getSalesPrice().multiply(new BigDecimal(goodsNum))); + orderGoods.setGoodsReceivableMoney(BigDecimal.ZERO); + orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); + orderGoods.setServiceNum(goods.getServiceNum()); + orderGoods.setGoodsType(goods.getGoodsType()); + orderGoods.setGoodsName(goods.getGoodsName()); + GoodsFile goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData(); + if (null != goodsFile) { + orderGoods.setGoodsPicture(goodsFile.getFileUrl()); + } + orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + orderGoods.setGoodsTag(goods.getGoodsTags()); + orderGoodsService.save(orderGoods); + } + + /** * 收银未结清订单列表 * @@ -2521,14 +2871,14 @@ if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } - if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ + if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } } } return merMemberNoClearOrderVoList; } - + /** * 结清订单 * @@ -2670,8 +3020,12 @@ goodsRealPrice = goodsTotalPrice; //优惠券计算 if (memberCouponId != null) { - appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId); + log.info("使用优惠券:{}", memberCouponId); + appMemberCouponVo = appMemberCouponVoMap.get(memberCouponId.toString()); + log.info("匹配的优惠券:{}", JSON.toJSONString(appMemberCouponVo)); if (null != appMemberCouponVo && (StringUtils.isBlank(appMemberCouponVo.getRelGoodsIds()) || appMemberCouponVo.getRelGoodsIds().contains(goodsId))) { + log.info("可以使用优惠券:{}", JSON.toJSONString(appMemberCouponVo)); + couponType = appMemberCouponVo.getCouponType(); couponType = appMemberCouponVo.getCouponType(); if (couponType == 1 && appMemberCouponVo.getMoneyThreshold() != null && appMemberCouponVo.getDiscountMoney() != null) { moneyThreshold = appMemberCouponVo.getMoneyThreshold(); @@ -2841,6 +3195,7 @@ consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); //减去优惠券 if (StringUtils.isNotBlank(memberCouponSJ.toString())) { + log.info("修改优惠券使用状态:{}", JSON.toJSONString(memberCouponSJ)); remoteCouponService.useMemberCoupon(memberCouponSJ.toString()); } //更新会员消费记录 @@ -2950,9 +3305,27 @@ if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } - if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ + if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } + List<MerCouponGoodsListVo> goodsList = new ArrayList<>(); + orderGoodsService.listByOrderId(merMemberNoClearOrderVo.getOrderId()).forEach(orderGoodsVo -> { + MerCouponGoodsListVo merCouponGoodsListVo = new MerCouponGoodsListVo(); + merCouponGoodsListVo.setGoodsId(orderGoodsVo.getGoodsId()); + merCouponGoodsListVo.setGoodsName(orderGoodsVo.getGoodsName()); + merCouponGoodsListVo.setGoodsNum(orderGoodsVo.getBuyNum()); + if (orderGoodsVo.getGoodsType() == 1) { + merCouponGoodsListVo.setGoodsType("周期"); + } else if (orderGoodsVo.getGoodsType() == 2) { + merCouponGoodsListVo.setGoodsType("服务"); + } else if (orderGoodsVo.getGoodsType() == 3) { + merCouponGoodsListVo.setGoodsType("体验"); + } else if (orderGoodsVo.getGoodsType() == 4) { + merCouponGoodsListVo.setGoodsType("单品"); + } + goodsList.add(merCouponGoodsListVo); + }); + merMemberNoClearOrderVo.setGoodsList(goodsList); } } return merMemberNoClearOrderVoList; @@ -4719,17 +5092,17 @@ if (memberGiftRecord.getGiftFrom() == 1) { BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); //判断生日活动状态 - if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){ + if (birthdayCard != null && birthdayCard.getCardStatus() == 1) { shop = remoteShopService.getShop(shopId).getData(); //判断指定区域全部店铺 - if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){ + if (birthdayCard.getAreaFlag() == 2 && birthdayCard.getShopFlag() == 1 && !StringUtils.checkString(birthdayCard.getDesignatedArea(), shop.getShopCityCode())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } //判断指定店铺 - if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){ + if (birthdayCard.getShopFlag() == 2 && !StringUtils.checkString(birthdayCard.getApplicableShop(), shopId.toString())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - }else{ + } else { throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); } } @@ -4737,16 +5110,20 @@ if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); - if (memberGiftRecord.getGiftFrom() == 1) { - merVerifyAwardVo.setGiftFrom("平台生日卡"); + if (1 == memberGiftRecord.getPrizeFrom()) { + if (memberGiftRecord.getGiftFrom() == 1) { + merVerifyAwardVo.setGiftFrom("平台生日卡"); + } else { + merVerifyAwardVo.setGiftFrom("商户生日卡"); + } } else { - merVerifyAwardVo.setGiftFrom("商户生日卡"); + merVerifyAwardVo.setGiftFrom("平台抽奖"); } merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); - //礼物类型1优惠券2商品3现金4实物 + //礼物类型1优惠券2商品3现金4实物5积分 switch (memberGiftRecord.getGiftType()) { case 1: merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); -- Gitblit v1.7.1