From 3417384c42ef6e7d99e98cef4e3bb4a016cfedea Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期二, 29 七月 2025 20:42:06 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 191 +++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 157 insertions(+), 34 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 2bb8ae2..c530390 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 @@ -89,10 +89,12 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.MathContext; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.*; @@ -401,6 +403,17 @@ appSureOrderVo.setOrderPayMoney(orderPayMoney); // 设置订单商品列表 appSureOrderVo.setAppSureOrderGoodsVoList(appSureOrderGoodsVoList); + appSureOrderVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).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; } @@ -509,6 +522,17 @@ appPanicBuyVo.setOrderGoodsMoney(orderGoodsMoney); appPanicBuyVo.setOrderPayDeposit(orderPayDeposit); appPanicBuyVo.setOrderPayMoney(orderPayMoney); + appPanicBuyVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).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; } @@ -840,6 +864,18 @@ appMemberGoodsTypeDto.setUserId(userId); appMemberGoodsTypeDto.setGoodsTypeSet(goodsTypeSet); remoteMemberService.updateMemberGoodsType(appMemberGoodsTypeDto); + } + + appPlaceOrderVo.setLotteryDraw(false); + // 返回AppPlaceOrderVo对象 + List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).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; } @@ -1504,7 +1540,7 @@ appUserOrderGetVo.setCouponDiscount(order.getCouponMoney()); appUserOrderGetVo.setReceivableDeposit(order.getReceivableDeposit()); appUserOrderGetVo.setReceivableMoney(order.getReceivableMoney()); - appUserOrderGetVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getOnlinePayMoney())); + appUserOrderGetVo.setUnpaidMoney(order.getReceivableMoney().subtract(null == order.getOnlinePayMoney() ? BigDecimal.ZERO : order.getOnlinePayMoney())); appUserOrderGetVo.setPayType(order.getPayType()); appUserOrderGetVo.setPayMoney(order.getPayMoney()); appUserOrderGetVo.setOrderRemark(order.getOrderRemark()); @@ -1600,16 +1636,15 @@ appPlaceOrderVo.setSignType(payArr[4]); appPlaceOrderVo.setPaySign(payArr[5]); appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId()); + appPlaceOrderVo.setLotteryDraw(false); // 返回AppPlaceOrderVo对象 List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData(); if (data.size() > 0) { - List<TLotteryEvent> collect = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) >= 0).collect(Collectors.toList()); - appPlaceOrderVo.setLotteryDraw(collect.size() > 0); + 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()); } - } else { - appPlaceOrderVo.setLotteryDraw(false); } return appPlaceOrderVo; } @@ -2239,11 +2274,15 @@ BigDecimal payAmount = BigDecimal.ZERO; //优惠金额 BigDecimal payDiscountAmount = BigDecimal.ZERO; + Long createOrderTime = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); + Long payTime = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); if (null != tradeOrderQueryResponseData) { TradeOrderQueryResponseDataOrdersItem ordersItem = tradeOrderQueryResponseData.getOrders().get(0); originAmount = BigDecimal.valueOf(ordersItem.getOriginalAmount()).divide(new BigDecimal(100)); payAmount = BigDecimal.valueOf(ordersItem.getPayAmount()).divide(new BigDecimal(100)); payDiscountAmount = BigDecimal.valueOf(ordersItem.getDiscountAmount()).divide(new BigDecimal(100)); + createOrderTime = ordersItem.getCreateOrderTime(); + payTime = ordersItem.getPayTime(); } Date nowTime = new Date(); @@ -2265,12 +2304,14 @@ order.setPayMoney(payAmount); order.setOnlinePayMoney(payAmount); order.setOrderRemark("抖音订单"); - order.setCreateTime(nowTime); - order.setPayTime(nowTime); + order.setCreateTime(new Date(createOrderTime * 1000)); + order.setPayTime(new Date(payTime * 1000)); order.setTripartiteOrderId(data.getOrderId()); order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); order.setCloseFlag(1); + order.setGoodsNum(1); + order.setCouponMoney(BigDecimal.ZERO); this.save(order); //创建服务商品 //获取商品信息(商品简介,调理问题) @@ -2279,11 +2320,16 @@ orderGoods.setOrderGoodsId(IdUtils.simpleUUID()); orderGoods.setDelFlag(0); orderGoods.setOrderId(order.getOrderId()); + orderGoods.setGoodsPrice(originAmount); + orderGoods.setGoodsTotalMoney(originAmount); + orderGoods.setGoodsReceivableMoney(originAmount); + orderGoods.setBuyNum(1); ConsumerGoods consumerGoods = new ConsumerGoods(); if(null != timeCard){ - orderGoods.setBuyNum(timeCard.getTimesCount()); - orderGoods.setServiceNum(timeCard.getTimesCount()); + //核销一次加一次 + orderGoods.setBuyNum(1); + orderGoods.setServiceNum(1); consumerGoods.setServiceNum(timeCard.getTimesCount()); consumerGoods.setUsedNum(1); consumerGoods.setUseTime(new Date()); @@ -2389,6 +2435,12 @@ }else{ //扣减剩余次数 OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId())); + //核销一次加一次数量 + orderGoods.setBuyNum(orderGoods.getBuyNum() + 1); + if(null != orderGoods.getServiceNum()){ + orderGoods.setServiceNum(orderGoods.getServiceNum() + 1); + } + 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.setUseTime(new Date()); @@ -2501,11 +2553,15 @@ BigDecimal payAmount = BigDecimal.ZERO; //优惠金额 BigDecimal payDiscountAmount = BigDecimal.ZERO; + Long create_order_time = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); + Long pay_time = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")); if (null != orderDetailInfoV1) { OpenApiOrderAmountV1 amountInfo = orderDetailInfoV1.getAmount(); originAmount = BigDecimal.valueOf(amountInfo.getTotal_amount()); payAmount = BigDecimal.valueOf(amountInfo.getPay_amount()); payDiscountAmount = originAmount.subtract(payAmount); + create_order_time = orderDetailInfoV1.getCreate_order_time(); + pay_time = orderDetailInfoV1.getPay_time(); } Date nowTime = new Date(); @@ -2527,12 +2583,14 @@ order.setPayMoney(payAmount); order.setOnlinePayMoney(payAmount); order.setOrderRemark("快手订单"); - order.setCreateTime(nowTime); - order.setPayTime(nowTime); + order.setCreateTime(new Date(create_order_time * 1000)); + order.setPayTime(new Date(pay_time * 1000)); order.setTripartiteOrderId(data.getOrder_id()); order.setUseTime(nowTime); order.setUseUserId(merVerifyOrderDto.getUserId()); order.setCloseFlag(1); + order.setGoodsNum(1); + order.setCouponMoney(BigDecimal.ZERO); this.save(order); //创建服务商品 //获取商品信息(商品简介,调理问题) @@ -2542,7 +2600,11 @@ orderGoods.setDelFlag(0); orderGoods.setOrderId(order.getOrderId()); orderGoods.setGoodsId(sku.getSku_id()); - orderGoods.setBuyNum(sku.getTimes_count()); + orderGoods.setBuyNum(1); + orderGoods.setServiceNum(1); + orderGoods.setGoodsPrice(originAmount); + orderGoods.setGoodsTotalMoney(originAmount); + orderGoods.setGoodsReceivableMoney(originAmount); orderGoods.setCycleNumFlag(1); orderGoods.setServiceNum(sku.getTimes_count()); orderGoods.setGoodsType(2); @@ -2649,6 +2711,10 @@ }else{ //扣减剩余次数 OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId())); + orderGoods.setBuyNum(orderGoods.getBuyNum() + 1); + orderGoods.setServiceNum(orderGoods.getServiceNum() + 1); + 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.setUseTime(new Date()); @@ -3154,7 +3220,13 @@ consumerGoodsService.sendGoodsGift(giftSendDtoList); //抽奖奖品中的平台商品需要生成订单数据 if (memberGiftRecord.getPrizeFrom() == 2) { - addOrder(memberGiftRecord.getShopId(), memberGiftRecord.getUserId(), goods, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId()); + 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, null, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId(), 3); + }else{ + one.setOrderStatus(3); + this.updateById(one); + } } break; case 3: @@ -3192,23 +3264,23 @@ /** - * 核销抽奖的平台商品生成订单 + * 抽奖的平台商品生成订单--待审核 * * @param shopId * @param userId * @param goods * @param goodsNum */ - public void addOrder(Long shopId, Long userId, Goods goods, Integer goodsNum, String giftId) { + 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); - order.setOrderStatus(3); + order.setOrderStatus(status); order.setOrderNo(CodeFactoryUtil.getShopOrderNo()); order.setOrderFrom(4); order.setShopId(shopId); order.setUserId(userId); - order.setOrderMoney(BigDecimal.ZERO); + order.setOrderMoney(null == goods ? BigDecimal.ZERO : goods.getSalesPrice()); order.setCouponMoney(BigDecimal.ZERO); order.setDiscountMoney(BigDecimal.ZERO); order.setReceivableMoney(BigDecimal.ZERO); @@ -3228,22 +3300,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); } @@ -3267,6 +3347,17 @@ if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } + String orderId = merMemberNoClearOrderVo.getOrderId(); + List<OrderGoods> list = orderGoodsService.list(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, orderId)); + List<AppGoodsInfoVo> goodsInfoVos = new ArrayList<>(); + for (OrderGoods orderGoods : list) { + AppGoodsInfoVo info = new AppGoodsInfoVo(); + info.setGoodsName(orderGoods.getGoodsName()); + info.setSalesNum(orderGoods.getBuyNum()); + info.setGoodsType(orderGoods.getGoodsType()); + goodsInfoVos.add(info); + } + merMemberNoClearOrderVo.setGoodsList(goodsInfoVos); } } return merMemberNoClearOrderVoList; @@ -3943,6 +4034,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()); @@ -4018,7 +4111,7 @@ Map<Long, MgtSimpleShopVo> shopMap = null; Map<Long, MgtSimpleMemberVo> userMap = null; if (shopIdSet != null && !shopIdSet.isEmpty()) { - String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList())); + String shopJoinedString = String.join(",", shopIdSet.stream().filter(Objects::nonNull).map(Object::toString).collect(Collectors.toList())); MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto(); mgtBaseBathDto.setIds(shopJoinedString); List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); @@ -4339,7 +4432,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); } } @@ -4928,8 +5021,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天 @@ -7282,6 +7400,11 @@ } mgtBasePlatformDto.setShopIdList(shopIdList); // 从数据库中获取第三方订单统计 + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + mgtBasePlatformDto.setStartTime(LocalDate.parse(mgtBasePlatformDto.getStartDate(), dateFormatter) + .atStartOfDay()); + mgtBasePlatformDto.setEndTime(LocalDate.parse(mgtBasePlatformDto.getEndDate(), dateFormatter) + .atTime(LocalTime.MAX)); vo = orderMapper.getPlTotalThirdOrderStatics(mgtBasePlatformDto); return vo; } -- Gitblit v1.7.1