From 2474cec7f04390c196c0f7c753d4b70f1d53fcac Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期五, 06 六月 2025 18:43:29 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 104 insertions(+), 10 deletions(-) diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index 9c486ab..d1f355b 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -132,6 +132,7 @@ @Override public OrderDetailVO getOrderDetail(Long orderId) { + OrderDetailVO orderDetailVO = new OrderDetailVO(); Order order = orderMapper.selectById(orderId); if (order == null) { throw new ServiceException("订单不存在"); @@ -140,14 +141,17 @@ if (!R.isSuccess(shopR)) { throw new ServiceException("获取门店信息失败"); } - + AppUser appUserById = appUserClient.getAppUserById(order.getAppUserId()); + if (appUserById != null) { + orderDetailVO.setUsername(appUserById.getName()); + } // 商品 OrderGood orderGood = orderGoodMapper.selectOne(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId)); String goodJson = orderGood.getGoodJson(); Goods goods = JSONObject.parseObject(goodJson, Goods.class); GoodsSeckill goodsSeckill = JSON.parseObject(orderGood.getSeckillJson(), GoodsSeckill.class); - OrderGoodsVO orderGoodsVO = new OrderGoodsVO(); + orderGoodsVO.setGoodsId(goods.getId()); orderGoodsVO.setGoodsName(goods.getName()); orderGoodsVO.setGoodsPic(goods.getHomePagePicture()); @@ -163,7 +167,7 @@ orderGoodsVO.setOriginalPrice(goods.getOriginalPrice()); - OrderDetailVO orderDetailVO = new OrderDetailVO(); + orderDetailVO.setOrderGoodsVO(orderGoodsVO); Shop shop = shopR.getData(); @@ -280,6 +284,26 @@ orderPageList.setAppUserIds(orderPageList.getAppUserIds().stream().distinct().collect(Collectors.toList())); } + //搜索条件 店铺名称 + if (StringUtils.isNotEmpty(orderPageList.getShopName())){ + List<Integer> shopSet = new ArrayList<>(shopClient.getShopIdByName(orderPageList.getShopName()).getData()); + if (CollectionUtils.isEmpty(shopSet)) { + return new PageInfo<>(); + } + if (null != orderPageList.getShopIds()) { + List<Integer> shopIds = orderPageList.getShopIds(); + if (!containsIntegerAny(shopIds, shopSet)) { + return new PageInfo<>(); + } + shopIds.addAll(shopSet); + orderPageList.setShopIds(shopIds); + } else { + orderPageList.setShopIds(shopSet); + } + } + if (null != orderPageList.getShopIds()) { + orderPageList.setShopIds(orderPageList.getShopIds().stream().distinct().collect(Collectors.toList())); + } PageInfo<OrderManagePageListVO> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize()); @@ -316,6 +340,28 @@ // 遍历 list2,检查是否有元素存在于 set1 中 for (Long element : list2) { + if (set1.contains(element)) { + return true; + } + } + + // 如果没有找到共同元素,返回 false + return false; + } + + /** + * 判断 list1 是否包含 list2 中的至少一个元素 + * + * @param list1 第一个列表 + * @param list2 第二个列表 + * @return 如果 list1 包含 list2 中的至少一个元素,返回 true;否则返回 false + */ + private boolean containsIntegerAny(List<Integer> list1, List<Integer> list2) { + // 将 list1 转换为 HashSet 以提高查询效率 + Set<Integer> set1 = new HashSet<>(list1); + + // 遍历 list2,检查是否有元素存在于 set1 中 + for (Integer element : list2) { if (set1.contains(element)) { return true; } @@ -793,7 +839,7 @@ order.setPointDeductionAmount(pointDeductionAmount.setScale(2, RoundingMode.HALF_EVEN)); order.setPaymentAmount(paymentMoney);//实际支付价格 order.setPoint(orderPoint);//使用积分 - if (orderPayment.getPaymentType()==3 && orderPoint>0){//微信支付 但支付的积分也大于0 + if (orderPayment.getPaymentType()==1 && orderPoint>0){//微信支付 但支付的积分也大于0 order.setPayMethod(4);//组合支付 }else { order.setPayMethod(orderPayment.getPaymentType());//积分或者微信 @@ -869,6 +915,37 @@ UniPayResult uniPayResult = PaymentUtil.uniPay(order.getOrderNumber(), paymentMoney.doubleValue(), "购买单品商品", goodsNames, "", "/order/order/orderPaymentCallback", appUser.getWxOpenid(), null); if(null == uniPayResult || !"100".equals(uniPayResult.getRa_Code())){ + //支付失败,积分回退 ,删除订单 + //检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除 + if (order.getPoint()>0) { + //返回订单抵扣积分 + AppUser appUser2 = appUserClient.getAppUserById(order.getAppUserId()); + Integer availablePoint = appUser2.getAvailablePoint();//可用积分 + Integer variablePoint = order.getPoint();//变动积分 + Integer balance = appUser2.getAvailablePoint() + order.getPoint();//变动后积分 + Integer cancelPoint = appUser2.getCancelPoint() + order.getPoint();//取消订单积分 + appUser2.setAvailablePoint(availablePoint); + appUser2.setCancelPoint(cancelPoint); + appUser2.setTotalPoint(appUser2.getTotalPoint() + order.getPoint()); + + //构建积分流水记录 + UserPoint userPoint = new UserPoint(); + userPoint.setType(16);//取消订单 + userPoint.setHistoricalPoint(availablePoint); + userPoint.setVariablePoint(variablePoint); + userPoint.setBalance(balance); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUser2.getId()); + userPoint.setObjectId(order.getId()); + userPointClient.saveUserPoint(userPoint); + + appUserClient.editAppUserById(appUser2); + + //删除订单 + order.setDelFlag(1); + orderMapper.updateById(order); + } + //返回报错信息 return R.fail(null == uniPayResult ? "支付失败" : uniPayResult.getRb_CodeMsg()); } String rc_result = uniPayResult.getRc_Result(); @@ -1004,7 +1081,7 @@ log.error("关闭订单失败:{}---->{}", order.getOrderNumber(), JSON.toJSONString(closeOrderResult)); } redisTemplate.opsForZSet().remove("OrderPayment", order.getOrderNumber()); - //关闭订单后,检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除 + //关闭订单后,检查是否先有过积分抵扣了,是的话要返回订单已抵扣的积分,以及用户积分流水的删除, 删除订单 if (order.getPoint()>0) { //返回订单抵扣积分 AppUser appUser = appUserClient.getAppUserById(order.getAppUserId()); @@ -1028,6 +1105,10 @@ userPointClient.saveUserPoint(userPoint); appUserClient.editAppUserById(appUser); + + //删除订单 + order.setDelFlag(1); + orderMapper.updateById(order); } } } @@ -1040,6 +1121,10 @@ Page<Order> page = new Page<>(pageNum, pageSize); // 构建查询条件 QueryWrapper<Order> queryWrapper = new QueryWrapper<>(); + //添加基础条件 + queryWrapper.eq("del_flag", 0); + queryWrapper.eq("pay_status", 2); + queryWrapper.orderByDesc("create_time"); // 添加门店ID条件 if (shopId != null) { queryWrapper.eq("shop_id", shopId); @@ -1053,13 +1138,21 @@ } // 模糊查询条件 if (StringUtils.isNotBlank(content)) { + //根据手机号查询用户id + List<Long> ids= new ArrayList<>(); + List<AppUser> data = appUserClient.getAppUserByPhone(content).getData(); + if (data != null && !data.isEmpty()) { + ids=data.stream().map(AppUser::getId).collect(Collectors.toList()); + } // 构建OR条件组:订单编号/商品名/手机号 + if (null != ids && !ids.isEmpty()) { + queryWrapper.in("app_user_id",ids); + } + queryWrapper.and(wrapper -> wrapper .like("order_number", content) // 订单编号 .or() - .like("goods_name", content) // 商品名 - .or() - .inSql("app_user_id", "select id from t_app_user where phone like '%" + content + "%'") // 手机号 + .like("good_name", content) // 商品名 ); } @@ -1094,11 +1187,12 @@ * @return */ @Override - public List<OrderStatisticsDetail> getOrderListGroupByDate(LocalDate startTime, LocalDate endTime) { + public List<OrderStatisticsDetail> getOrderListGroupByDate(LocalDate startTime, LocalDate endTime,Integer shopId) { // 查询数据库获取原始数据 List<OrderStatisticsDetail> rawData = orderMapper.getOrderListGroupByDate( startTime.atTime(0,0, 0), - endTime.atTime(23,59,59) + endTime.atTime(23,59,59), + shopId ); // 创建完整日期范围的映射 -- Gitblit v1.7.1