From d2a65425646e33c26b8a98c394c7990a6bfb6b03 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 16 九月 2025 18:57:32 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 392 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 284 insertions(+), 108 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 d14ddf0..64e3635 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 @@ -35,6 +35,7 @@ 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.GetLotteryEventList; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.order.config.WxPayConfiguration; @@ -89,6 +90,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.MathContext; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -402,6 +404,20 @@ appSureOrderVo.setOrderPayMoney(orderPayMoney); // 设置订单商品列表 appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList); + appSureOrderVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + GetLotteryEventList getLotteryEventList = new GetLotteryEventList(); + getLotteryEventList.setActivityType(2); + getLotteryEventList.setUserId(SecurityUtils.getUserId()); + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); + if (data.size() > 0) { + BigDecimal finalOrderPayMoney = orderPayMoney; + List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList()); + if (collect.size() > 0) { + appSureOrderVo.setLotteryDraw(true); + appSureOrderVo.setLotteryEventId(collect.get(0).getId()); + } + } return appSureOrderVo; } @@ -510,6 +526,20 @@ appPanicBuyVo.setOrderGoodsMoney(orderGoodsMoney); appPanicBuyVo.setOrderPayDeposit(orderPayDeposit); appPanicBuyVo.setOrderPayMoney(orderPayMoney); + appPanicBuyVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + GetLotteryEventList getLotteryEventList = new GetLotteryEventList(); + getLotteryEventList.setActivityType(2); + getLotteryEventList.setUserId(SecurityUtils.getUserId()); + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); + if (data.size() > 0) { + BigDecimal finalOrderPayMoney = orderPayMoney; + List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList()); + if (collect.size() > 0) { + appPanicBuyVo.setLotteryDraw(true); + appPanicBuyVo.setLotteryEventId(collect.get(0).getId()); + } + } return appPanicBuyVo; } @@ -841,6 +871,21 @@ appMemberGoodsTypeDto.setUserId(userId); appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); + } + + appPlaceOrderVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + GetLotteryEventList getLotteryEventList = new GetLotteryEventList(); + getLotteryEventList.setActivityType(2); + getLotteryEventList.setUserId(SecurityUtils.getUserId()); + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); + if (data.size() > 0) { + BigDecimal finalOrderPayMoney = orderPayMoney; + List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList()); + if (collect.size() > 0) { + appPlaceOrderVo.setLotteryDraw(true); + appPlaceOrderVo.setLotteryEventId(collect.get(0).getId()); + } } return appPlaceOrderVo; } @@ -1324,6 +1369,20 @@ remoteActivityService.addActivityRecord(activityRecord); //扣除redis库存 redisService.setCacheObject(SecurityConstant.ACTIVITY_GOODS + "-" + activityId + "-" + goodsId, surpNum - buyNum); + appPlaceOrderVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + GetLotteryEventList getLotteryEventList = new GetLotteryEventList(); + getLotteryEventList.setActivityType(2); + getLotteryEventList.setUserId(SecurityUtils.getUserId()); + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); + if (data.size() > 0) { + BigDecimal finalOrderPayMoney = orderPayMoney; + List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(finalOrderPayMoney) <= 0).collect(Collectors.toList()); + if (collect.size() > 0) { + appPlaceOrderVo.setLotteryDraw(true); + appPlaceOrderVo.setLotteryEventId(collect.get(0).getId()); + } + } } catch (Exception e){ log.error("活动订单购买失败:"+e.getMessage()); throw new ServiceException(e.getMessage()); @@ -1603,9 +1662,12 @@ appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId()); appPlaceOrderVo.setLotteryDraw(false); // 返回AppPlaceOrderVo对象 - List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData(); + GetLotteryEventList getLotteryEventList = new GetLotteryEventList(); + getLotteryEventList.setActivityType(2); + getLotteryEventList.setUserId(SecurityUtils.getUserId()); + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(getLotteryEventList).getData(); if (data.size() > 0) { - List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) >= 0).collect(Collectors.toList()); + List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) <= 0).collect(Collectors.toList()); if (collect.size() > 0) { appPlaceOrderVo.setLotteryDraw(true); appPlaceOrderVo.setLotteryEventId(collect.get(0).getId()); @@ -1846,6 +1908,12 @@ merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); } } + if(null == merVerifyOrderVo.getRealReceiveMoney()){ + merVerifyOrderVo.setRealReceiveMoney(BigDecimal.ZERO); + } + if(null == merVerifyOrderVo.getReceiveMoney()){ + merVerifyOrderVo.setReceiveMoney(BigDecimal.ZERO); + } merVerifyOrderVo.setUnReceiveMoney(merVerifyOrderVo.getRealReceiveMoney().subtract(merVerifyOrderVo.getReceiveMoney())); merVerifyOrderVo.setUserId(order.getUserId()); merVerifyOrderVo.setUserName(member.getRealName()); @@ -1952,9 +2020,9 @@ } Member member = remoteMemberService.getMember(order.getUserId()).getData(); //获取核销商户 - ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); - Long shopId = shopRelUserVo.getShopId(); - log.info("当前核销员工【" + shopRelUserVo.getUserName() + "】门店ID:" + shopId); +// ShopRelUserVo shopRelUserVo = remoteShopService.getShopByUserId(merVerifyOrderDto.getUserId()).getData(); + Long shopId = member.getRelationShopId(); +// log.info("当前核销员工【" + shopRelUserVo.getUserName() + "】门店ID:" + shopId); //获取订单商品列表 List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId); //绑定用户判断核销商户 @@ -2020,38 +2088,13 @@ ConsumerGoods consumerGoods; String consumerGoodsId; Goods goods; - //循环生成商品服务 - List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); - for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { - Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); - //判断是否次数未确认商品 是则创建未确认周期商品服务 否则循环创建商品服务 - if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { - consumerGoods = new ConsumerGoods(); - goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoodsId = IdUtils.simpleUUID(); - consumerGoods.setConsumerGoodsId(consumerGoodsId); - consumerGoods.setDelFlag(0); - consumerGoods.setServiceStatus(1); - consumerGoods.setShopId(order.getShopId()); - consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); - consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); - consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); - consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); - consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); - consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); - consumerGoods.setUsedNum(0); - consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); - consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); - consumerGoods.setCreateTime(nowTime); - consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); - consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); - consumerGoods.setGoodsNurses(goods.getGoodsNurses()); - consumerGoods.setSourceFrom(1); - consumerGoods.setSureNum(buyNum); - consumerGoodsList.add(consumerGoods); - } else { - for (int i = 0; i < buyNum; i++) { + if(null != appUserOrderGoodsPageVoList.get(0).getGoodsId()){ + //循环生成商品服务 + List<ConsumerGoods> consumerGoodsList = new ArrayList<>(); + for (AppUserOrderGoodsPageVo appUserOrderGoodsPageVo : appUserOrderGoodsPageVoList) { + Integer buyNum = appUserOrderGoodsPageVo.getBuyNum(); + //判断是否次数未确认商品 是则创建未确认周期商品服务 否则循环创建商品服务 + if (appUserOrderGoodsPageVo.getCycleNumFlag() == 0) { consumerGoods = new ConsumerGoods(); goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); consumerGoodsId = IdUtils.simpleUUID(); @@ -2074,11 +2117,38 @@ consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); consumerGoods.setGoodsNurses(goods.getGoodsNurses()); consumerGoods.setSourceFrom(1); + consumerGoods.setSureNum(buyNum); consumerGoodsList.add(consumerGoods); + } else { + for (int i = 0; i < buyNum; i++) { + consumerGoods = new ConsumerGoods(); + goods = goodsMap.get(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoodsId = IdUtils.simpleUUID(); + consumerGoods.setConsumerGoodsId(consumerGoodsId); + consumerGoods.setDelFlag(0); + consumerGoods.setServiceStatus(1); + consumerGoods.setShopId(order.getShopId()); + consumerGoods.setUserId(order.getUserId()); + consumerGoods.setOrderId(orderId); + consumerGoods.setOrderGoodsId(appUserOrderGoodsPageVo.getOrderGoodsId()); + consumerGoods.setGoodsId(appUserOrderGoodsPageVo.getGoodsId()); + consumerGoods.setGoodsName(appUserOrderGoodsPageVo.getGoodsName()); + consumerGoods.setCycleNumFlag(appUserOrderGoodsPageVo.getCycleNumFlag()); + consumerGoods.setServiceNum(appUserOrderGoodsPageVo.getServiceNum()); + consumerGoods.setUsedNum(0); + consumerGoods.setGoodsType(appUserOrderGoodsPageVo.getGoodsType()); + consumerGoods.setGoodsTag(appUserOrderGoodsPageVo.getGoodsTag()); + consumerGoods.setCreateTime(nowTime); + consumerGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + consumerGoods.setGoodsPicture(appUserOrderGoodsPageVo.getGoodsPicture()); + consumerGoods.setGoodsNurses(goods.getGoodsNurses()); + consumerGoods.setSourceFrom(1); + consumerGoodsList.add(consumerGoods); + } } } + consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); } - consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList); //生成返回 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); merVerifyOrderVo.setOrderId(orderId); @@ -2131,25 +2201,27 @@ order.setNewMemberFlag(0); } this.saveOrUpdate(order); - // 订单金额大于0时进行分账 - OrderPayment orderPayment = orderPaymentService.getOne(new QueryWrapper<OrderPayment>() - .eq("order_id", order.getOrderId()).eq("pay_status", 2) - .eq("del_flag", 0)); - BigDecimal bigDecimal = orderPayment.getPayMoney().subtract(orderPayment.getFeeAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); - if (bigDecimal.compareTo(BigDecimal.ZERO)>0) { - // TODO: 2023/10/17 更换分账渠道(汇付天下) + if(4 != order.getOrderFrom()){ + // 订单金额大于0时进行分账 + OrderPayment orderPayment = orderPaymentService.getOne(new QueryWrapper<OrderPayment>() + .eq("order_id", order.getOrderId()).eq("pay_status", 2) + .eq("del_flag", 0)); + BigDecimal bigDecimal = orderPayment.getPayMoney().subtract(orderPayment.getFeeAmount()).setScale(2, BigDecimal.ROUND_HALF_EVEN); + if (bigDecimal.compareTo(BigDecimal.ZERO)>0) { + // TODO: 2023/10/17 更换分账渠道(汇付天下) // submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom()); - submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), bigDecimal, order.getOrderFrom()); - } - //创建支付记录 - if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ - PayRecord payRecord = new PayRecord(); - payRecord.setDelFlag(0); - payRecord.setOrderId(order.getOrderId()); - payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); - payRecord.setPayTime(new Date()); - payRecord.setPayType(merVerifyOrderDto.getPayType()); - payRecordService.save(payRecord); + submitProfitSharing1(orderId, order.getOrderNo(), order.getShopId(), bigDecimal, order.getOrderFrom()); + } + //创建支付记录 + if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){ + PayRecord payRecord = new PayRecord(); + payRecord.setDelFlag(0); + payRecord.setOrderId(order.getOrderId()); + payRecord.setPayMoney(merVerifyOrderDto.getRelPayMoney()); + payRecord.setPayTime(new Date()); + payRecord.setPayType(merVerifyOrderDto.getPayType()); + payRecordService.save(payRecord); + } } //更新用户积分和消费统计 MemberTotalChangeDto memberTotalChangeDto = new MemberTotalChangeDto(); @@ -2184,8 +2256,15 @@ // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 public MerVerifyOrderVo sureVerifyOrderDouYin(MerVerifyOrderDto merVerifyOrderDto) { String phone = merVerifyOrderDto.getPhone(); + String name = merVerifyOrderDto.getName(); String orderId = merVerifyOrderDto.getOrderId(); Long shopId = merVerifyOrderDto.getShopId(); + if(StringUtils.isEmpty(phone)){ + throw new ServiceException("请填写核销用户电话号码"); + } + if(StringUtils.isEmpty(name)){ + throw new ServiceException("请填写核销用户姓名"); + } //获取核销商户 Shop shop = remoteShopService.getShop(shopId).getData(); CertificatePrepareResponseData data = VerifyUtil.certificatePrepare(orderId); @@ -2196,7 +2275,14 @@ if (null == itemList && itemList.isEmpty()) { throw new ServiceException("查询券信息失败"); } - CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0); + List<CertificatePrepareResponseDataCertificatesItem> collect = itemList.stream().filter(s -> s.getStatus().intValue() == 1).collect(Collectors.toList()); + if(collect.size() < merVerifyOrderDto.getNumber()){ + throw new ServiceException("验券数量超过可使用数量"); + } + List<CertificatePrepareResponseDataCertificatesItem> certificatePrepareResponseDataCertificatesItems = collect.subList(0, merVerifyOrderDto.getNumber()); + + + CertificatePrepareResponseDataCertificatesItem certificatesItem = certificatePrepareResponseDataCertificatesItems.get(0); //商品信息 CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku(); //次卡信息 @@ -2210,7 +2296,28 @@ } Member member = remoteMemberService.getMemberByMobile(phone).getData();//绑定用户判断核销商户 if(null == member){ - throw new ServiceException("手机号还未注册账户,请先进行注册"); + //创建新用户 + String memberId = IdUtils.simpleUUID(); + SysUser sysUser = new SysUser(); + sysUser.setUserName(memberId); + sysUser.setUserType("03"); + sysUser.setNickName(name); + sysUser.setPhonenumber(phone); + sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png"); + String password = "hongruitang"; + sysUser.setPassword(SecurityUtils.encryptPassword(password)); + sysUser = remoteUserService.registerUser(sysUser).getData(); + member = new Member(); + member.setMemberId(memberId); + member.setUserId(sysUser.getUserId()); + member.setMobile(phone); + member.setRealName(name); + member.setNickName(name); + member.setBindingFlag(1); + member.setBindingType(3); + member.setRelationShopId(shopId); + member.setRelationShopName(shop.getShopName()); + remoteMemberService.createNewMember(member); } if (member.getBindingFlag() == 1) { if (!member.getRelationShopId().equals(shopId)) { @@ -2224,10 +2331,11 @@ throw new ServiceException("该抖音券不能重复核销"); } } - String encryptedCode = certificatesItem.getEncryptedCode(); - List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), new ArrayList<String>() {{ - add(encryptedCode); - }}); + List<String> encryptedCodes = new ArrayList<>(); + for (CertificatePrepareResponseDataCertificatesItem certificatePrepareResponseDataCertificatesItem : certificatePrepareResponseDataCertificatesItems) { + encryptedCodes.add(certificatePrepareResponseDataCertificatesItem.getEncryptedCode()); + } + List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), encryptedCodes); if (null == items || items.isEmpty()) { throw new ServiceException("抖音券核销失败"); } @@ -2275,7 +2383,7 @@ order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); order.setCloseFlag(1); - order.setGoodsNum(1); + order.setGoodsNum(itemList.size()); order.setCouponMoney(BigDecimal.ZERO); this.save(order); //创建服务商品 @@ -2285,13 +2393,17 @@ orderGoods.setOrderGoodsId(IdUtils.simpleUUID()); orderGoods.setDelFlag(0); orderGoods.setOrderId(order.getOrderId()); + orderGoods.setGoodsPrice(originAmount); + orderGoods.setGoodsTotalMoney(originAmount); + orderGoods.setGoodsReceivableMoney(originAmount); + orderGoods.setBuyNum(itemList.size()); ConsumerGoods consumerGoods = new ConsumerGoods(); + consumerGoods.setUsedNum(merVerifyOrderDto.getNumber()); if(null != timeCard){ - orderGoods.setBuyNum(timeCard.getTimesCount()); - orderGoods.setServiceNum(timeCard.getTimesCount()); - consumerGoods.setServiceNum(timeCard.getTimesCount()); - consumerGoods.setUsedNum(1); + orderGoods.setBuyNum(itemList.size()); + orderGoods.setServiceNum(merVerifyOrderDto.getNumber()); + consumerGoods.setServiceNum(itemList.size()); consumerGoods.setUseTime(new Date()); } orderGoods.setCycleNumFlag(1); @@ -2304,7 +2416,7 @@ consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); + consumerGoods.setOrderId(order.getOrderId()); consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId()); consumerGoods.setGoodsName(sku.getTitle()); consumerGoods.setCycleNumFlag(1); @@ -2315,7 +2427,7 @@ //生成返回 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); - merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderId(order.getOrderId()); merVerifyOrderVo.setOrderNo(order.getOrderNo()); merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); @@ -2384,7 +2496,7 @@ if (integral > 0) { memberTotalChangeDto.setChangeIntegral(integral); memberTotalChangeDto.setTypeIntegral(1); - memberTotalChangeDto.setOrderId(orderId); + memberTotalChangeDto.setOrderId(order.getOrderId()); memberTotalChangeDto.setOrderNo(order.getOrderNo()); } } @@ -2395,8 +2507,12 @@ }else{ //扣减剩余次数 OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId())); + if(null != orderGoods.getServiceNum()){ + orderGoods.setServiceNum(orderGoods.getServiceNum() + merVerifyOrderDto.getNumber()); + } + orderGoodsService.updateById(orderGoods); ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId())); - consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1); + consumerGoods.setUsedNum(consumerGoods.getUsedNum() + merVerifyOrderDto.getNumber()); consumerGoods.setUseTime(new Date()); if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){ consumerGoods.setCompleteTime(new Date()); @@ -2404,7 +2520,7 @@ consumerGoodsService.updateById(consumerGoods); //生成返回 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); - merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderId(order.getOrderId()); merVerifyOrderVo.setOrderNo(order.getOrderNo()); merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); @@ -2458,8 +2574,15 @@ // @GlobalTransactional(rollbackFor = Exception.class) todo 放开分布式事务注解 public MerVerifyOrderVo sureVerifyOrderKuaiShou(MerVerifyOrderDto merVerifyOrderDto) { String phone = merVerifyOrderDto.getPhone(); + String name = merVerifyOrderDto.getName(); String orderId = merVerifyOrderDto.getOrderId(); Long shopId = merVerifyOrderDto.getShopId(); + if(StringUtils.isEmpty(phone)){ + throw new ServiceException("请填写核销用户电话号码"); + } + if(StringUtils.isEmpty(name)){ + throw new ServiceException("请填写核销用户姓名"); + } //获取核销商户 Shop shop = remoteShopService.getShop(shopId).getData(); VerifyPrepareDataNew data = KSVerifyUtil.certificatePrepare(redisService, orderId); @@ -2470,7 +2593,8 @@ if (null == itemList || itemList.isEmpty()) { throw new ServiceException("查询券信息失败"); } - SimpleCertificateTimesCard certificatesItem = itemList.get(0); + List<SimpleCertificateTimesCard> timesCards = itemList.subList(0, merVerifyOrderDto.getNumber()); + SimpleCertificateTimesCard certificatesItem = timesCards.get(0); Long expire_time = certificatesItem.getExpire_time(); if(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) > expire_time){ throw new ServiceException("优惠券已过期"); @@ -2491,11 +2615,12 @@ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } } - - String encryptedCode = certificatesItem.getEncrypted_code(); - List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), new ArrayList<String>() {{ - add(encryptedCode); - }}, data.getOrder_id()); + + List<String> encryptedCodes = new ArrayList<>(); + for (SimpleCertificateTimesCard timesCard : timesCards) { + encryptedCodes.add(timesCard.getEncrypted_code()); + } + List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), encryptedCodes, data.getOrder_id()); if (null == items || items.isEmpty()) { throw new ServiceException("快手券核销失败"); } @@ -2543,7 +2668,7 @@ order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); order.setCloseFlag(1); - order.setGoodsNum(1); + order.setGoodsNum(itemList.size()); order.setCouponMoney(BigDecimal.ZERO); this.save(order); //创建服务商品 @@ -2554,9 +2679,12 @@ orderGoods.setDelFlag(0); orderGoods.setOrderId(order.getOrderId()); orderGoods.setGoodsId(sku.getSku_id()); - orderGoods.setBuyNum(sku.getTimes_count()); + orderGoods.setBuyNum(itemList.size()); + orderGoods.setGoodsPrice(originAmount); + orderGoods.setGoodsTotalMoney(originAmount); + orderGoods.setGoodsReceivableMoney(originAmount); orderGoods.setCycleNumFlag(1); - orderGoods.setServiceNum(sku.getTimes_count()); + orderGoods.setServiceNum(merVerifyOrderDto.getNumber()); orderGoods.setGoodsType(2); orderGoods.setGoodsName(sku.getTitle()); orderGoodsService.save(orderGoods); @@ -2567,13 +2695,13 @@ consumerGoods.setServiceStatus(1); consumerGoods.setShopId(order.getShopId()); consumerGoods.setUserId(order.getUserId()); - consumerGoods.setOrderId(orderId); + consumerGoods.setOrderId(order.getOrderId()); consumerGoods.setGoodsId(sku.getSku_id()); consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId()); consumerGoods.setGoodsName(sku.getTitle()); consumerGoods.setCycleNumFlag(1); - consumerGoods.setServiceNum(sku.getTimes_count()); - consumerGoods.setUsedNum(1); + consumerGoods.setServiceNum(itemList.size()); + consumerGoods.setUsedNum(merVerifyOrderDto.getNumber()); consumerGoods.setUseTime(new Date()); consumerGoods.setCreateTime(nowTime); consumerGoods.setGoodsType(2); @@ -2581,7 +2709,7 @@ consumerGoodsService.save(consumerGoods); //生成返回 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); - merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderId(order.getOrderId()); merVerifyOrderVo.setOrderNo(order.getOrderNo()); merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); @@ -2650,7 +2778,7 @@ if (integral > 0) { memberTotalChangeDto.setChangeIntegral(integral); memberTotalChangeDto.setTypeIntegral(1); - memberTotalChangeDto.setOrderId(orderId); + memberTotalChangeDto.setOrderId(order.getOrderId()); memberTotalChangeDto.setOrderNo(order.getOrderNo()); } } @@ -2661,8 +2789,11 @@ }else{ //扣减剩余次数 OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId())); + orderGoods.setServiceNum(orderGoods.getServiceNum() + itemList.size()); + orderGoodsService.updateById(orderGoods); + ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId())); - consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1); + consumerGoods.setUsedNum(consumerGoods.getUsedNum() + itemList.size()); consumerGoods.setUseTime(new Date()); if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){ consumerGoods.setCompleteTime(new Date()); @@ -2670,7 +2801,7 @@ consumerGoodsService.updateById(consumerGoods); //生成返回 MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo(); - merVerifyOrderVo.setOrderId(orderId); + merVerifyOrderVo.setOrderId(order.getOrderId()); merVerifyOrderVo.setOrderNo(order.getOrderNo()); merVerifyOrderVo.setOrderStatus(order.getOrderStatus()); merVerifyOrderVo.setOrderFrom(order.getOrderFrom()); @@ -3168,7 +3299,7 @@ if (memberGiftRecord.getPrizeFrom() == 2) { Order one = this.getOne(new QueryWrapper<Order>().eq("activity_id", memberGiftRecord.getGiftId()).eq("order_from", 4)); if(null == one){ - addOrder(memberGiftRecord.getShopId(), memberGiftRecord.getUserId(), goods, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId(), 3); + addOrder(memberGiftRecord.getShopId(), memberGiftRecord.getUserId(), goods, null, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId(), 3); }else{ one.setOrderStatus(3); this.updateById(one); @@ -3217,7 +3348,7 @@ * @param goods * @param goodsNum */ - public void addOrder(Long shopId, Long userId, Goods goods, Integer goodsNum, String giftId, Integer status) { + public void addOrder(Long shopId, Long userId, Goods goods, String goodsName, Integer goodsNum, String giftId, Integer status) { Order order = new Order(); order.setOrderId(IdUtils.simpleUUID()); order.setDelFlag(0); @@ -3226,7 +3357,7 @@ order.setOrderFrom(4); order.setShopId(shopId); order.setUserId(userId); - order.setOrderMoney(goods.getSalesPrice()); + order.setOrderMoney(null == goods ? BigDecimal.ZERO : goods.getSalesPrice()); order.setCouponMoney(BigDecimal.ZERO); order.setDiscountMoney(BigDecimal.ZERO); order.setReceivableMoney(BigDecimal.ZERO); @@ -3246,22 +3377,30 @@ 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()); + if(null != goods){ + orderGoods.setGoodsId(goods.getGoodsId()); + 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()); + }else{ + orderGoods.setGoodsName(goodsName); + orderGoods.setBuyNum(1); + orderGoods.setGoodsPrice(BigDecimal.ZERO); + orderGoods.setGoodsTotalMoney(BigDecimal.ZERO); + orderGoods.setGoodsReceivableMoney(BigDecimal.ZERO); } - orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); - orderGoods.setGoodsTag(goods.getGoodsTags()); orderGoodsService.save(orderGoods); } @@ -3972,6 +4111,8 @@ MgtOrderTotal mgtOrderTotalFirst = orderMapper.totalOrderFirst(mgtShopOrderPageDto); MgtOrderTotal mgtOrderTotalSecond = orderMapper.totalOrderSecond(mgtShopOrderPageDto); MgtOrderTotal mgtOrderTotalThird = orderMapper.totalOrderThird(mgtShopOrderPageDto); + MgtOrderTotal mgtOrderTotalFour = orderMapper.totalOrderFour(mgtShopOrderPageDto); + mgtOrderTotal.setOrderTotal(mgtOrderTotalFirst.getOrderTotal()); mgtOrderTotal.setOrderMoneyTotal(mgtOrderTotalFirst.getOrderMoneyTotal()); mgtOrderTotal.setShopOrderTotal(mgtOrderTotalSecond.getShopOrderTotal()); @@ -3982,6 +4123,12 @@ mgtOrderTotal.setActivityOrderMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal()); mgtOrderTotal.setActivityPayMoneyTotal(mgtOrderTotalThird.getActivityPayMoneyTotal()); mgtOrderTotal.setActivityUnPayMoneyTotal(mgtOrderTotalThird.getActivityOrderMoneyTotal().subtract(mgtOrderTotalThird.getActivityPayMoneyTotal())); + + mgtOrderTotal.setThirdOrderTotal(mgtOrderTotalFour.getThirdOrderTotal()); + mgtOrderTotal.setThirdOrderMoneyTotal(mgtOrderTotalFour.getThirdOrderMoneyTotal()); + mgtOrderTotal.setThirdPayMoneyTotal(mgtOrderTotalFour.getThirdPayMoneyTotal()); + mgtOrderTotal.setThirdUnPayMoneyTotal(mgtOrderTotalFour.getThirdOrderMoneyTotal().subtract(mgtOrderTotalFour.getThirdPayMoneyTotal())); + return mgtOrderTotal; } @@ -4368,7 +4515,7 @@ */ private List<MgtMapBigTotalVo> bigListRemoveNull(List<MgtMapBigTotalVo> MgtMapIntTotalVos) { for (int i = 0; i < MgtMapIntTotalVos.size(); i++) { - if (StringUtils.isBlank(MgtMapIntTotalVos.get(i).getMapKey())) { + if(null == MgtMapIntTotalVos.get(i).getMapKey() || MgtMapIntTotalVos.get(i).getMapKey().isEmpty()){ MgtMapIntTotalVos.remove(i); } } @@ -4874,6 +5021,9 @@ for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) { mgtMapIntTotalVo = new MgtMapIntTotalVo(); mgtMapBigTotalVo = new MgtMapBigTotalVo(); + if(null == MgtMapIntTotalVoGoodsType.get(i).getMapKey()){ + continue; + } mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()); mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond()); if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) { @@ -4957,8 +5107,33 @@ //获取来源销售排名 List<MgtMapBigTotalVo> orderFromList = orderMapper.listPlTotalOrderTotalOrderFrom(mgtBasePlatformDto); if (orderFromList != null && orderFromList.size() > 0) { + + MgtMapBigTotalVo duoyin = new MgtMapBigTotalVo(); + duoyin.setMapKey("抖音"); + duoyin.setMapValue(totalOrderTotalVo.getDouyinAmount()); + + MgtMapBigTotalVo kauishou = new MgtMapBigTotalVo(); + kauishou.setMapKey("快手"); + kauishou.setMapValue(totalOrderTotalVo.getKuaishouAmount()); + + MgtMapBigTotalVo meituan = new MgtMapBigTotalVo(); + meituan.setMapKey("美团"); + meituan.setMapValue(totalOrderTotalVo.getMeituanAmount()); + orderFromList.add(duoyin); + orderFromList.add(kauishou); + orderFromList.add(meituan); orderFromList = bigListRemoveNull(orderFromList); - mgtTotalOrderTotalVo.setOrderFromRankList(orderFromList); + + + //排行 + List<MgtMapBigTotalVo> sortedList = orderFromList.stream() + // 按 mapValue 降序排序,处理 null 值(若 mapValue 可能为 null) + .sorted(Comparator.comparing( + MgtMapBigTotalVo::getMapValue, + Comparator.nullsLast(BigDecimal::compareTo).reversed() + )) + .collect(Collectors.toList()); + mgtTotalOrderTotalVo.setOrderFromRankList(sortedList); } //订单分布 //日期全部时固定为5天 @@ -5552,7 +5727,8 @@ if (memberGiftRecord.getGiftFrom() == 2 && !memberGiftRecord.getShopId().equals(shopId)) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - + + merVerifyAwardVo.setUserId(member.getUserId()); merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); if (1 == memberGiftRecord.getPrizeFrom()) { -- Gitblit v1.7.1