From d94776ba25ffcd19cdd7970048ed88d9212bd394 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期六, 08 二月 2025 10:10:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 176 ++++++++++++++++++++++++++++------------------------------ 1 files changed, 84 insertions(+), 92 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 95748ea..b1ad99e 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 @@ -43,6 +43,7 @@ import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.jetbrains.annotations.Nullable; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -311,116 +312,107 @@ */ @Override public PageInfo<OrderPageListVo> getOrderPageList(OrderPageList orderPageList) { - Long userId = tokenService.getLoginUser().getUserid(); - SysUser sysUser = sysUserClient.getSysUser(userId).getData(); - - // 设置店铺ID - if (sysUser.getRoleType() == 2) { + Long userid = tokenService.getLoginUser().getUserid(); + SysUser sysUser = sysUserClient.getSysUser(userid).getData(); + if(2 == sysUser.getRoleType()){ orderPageList.setShopId(sysUser.getObjectId()); } + //搜索条件,用户姓名 + if(StringUtils.isNotEmpty(orderPageList.getUserName())){ + List<AppUser> data = appUserClient.getAppUserByNameNoFilter(orderPageList.getUserName()).getData(); + List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)){ + return new PageInfo<>(); + } + if(null != orderPageList.getAppUserIds()){ + List<Long> appUserIds = orderPageList.getAppUserIds(); + appUserIds.addAll(collect); + orderPageList.setAppUserIds(appUserIds); + }else{ + orderPageList.setAppUserIds(collect); + } + } + //搜索条件,用户电话 + if(StringUtils.isNotEmpty(orderPageList.getPhone())){ + List<AppUser> data = appUserClient.getAppUserByPhoneNoFilter(orderPageList.getPhone()).getData(); + List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(collect)){ + return new PageInfo<>(); + } - // 处理用户姓名搜索条件 - processAppUserIds(orderPageList, orderPageList.getUserName(), appUserClient::getAppUserByNameNoFilter); - - // 处理用户电话搜索条件 - processAppUserIds(orderPageList, orderPageList.getPhone(), appUserClient::getAppUserByPhoneNoFilter); - - if (orderPageList.getAppUserIds() == null) { - return new PageInfo<>(); + if(null != orderPageList.getAppUserIds()){ + List<Long> appUserIds = orderPageList.getAppUserIds(); + if (!containsAny(appUserIds,collect)) { + return new PageInfo<>(); + } + appUserIds.addAll(collect); + orderPageList.setAppUserIds(appUserIds); + }else{ + orderPageList.setAppUserIds(collect); + } + } + if (null != orderPageList.getAppUserIds()){ + orderPageList.setAppUserIds(orderPageList.getAppUserIds().stream().distinct().collect(Collectors.toList())); } - // 去重 appUserIds - Optional.of(orderPageList.getAppUserIds()) - .ifPresent(ids -> orderPageList.setAppUserIds(ids.stream().distinct().collect(Collectors.toList()))); - // 分页查询订单列表 + PageInfo<OrderPageListVo> pageInfo = new PageInfo<>(orderPageList.getPageCurr(), orderPageList.getPageSize()); + List<OrderPageListVo> list = this.baseMapper.getOrderPageList(pageInfo, orderPageList); + for (OrderPageListVo orderPageListVo : list) { + Long appUserId = orderPageListVo.getAppUserId(); + AppUser appUser = appUserClient.getAppUserById(appUserId); + if(null != appUser){ + orderPageListVo.setUserName(appUser.getName()); + orderPageListVo.setPhone(appUser.getPhone()); + } + RefundPass one = refundPassService.getOne(new LambdaQueryWrapper<RefundPass>().eq(RefundPass::getOrderId, orderPageListVo.getId()).eq(RefundPass::getDelFlag, 0).last(" order by create_time desc limit 0,1")); + orderPageListVo.setRefundPassId(null != one ? one.getId().toString() : null); - // 处理订单列表中的每个订单 - list.forEach(this::processOrderPageListVo); + // 平台分佣 + List<ShopBalanceStatement> data = shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), Long.valueOf(orderPageListVo.getId())).getData(); + BigDecimal reduce = data.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + orderPageListVo.setGetCommission(reduce); + String expressJson = orderPageListVo.getExpressJson(); + if (StringUtils.isNotEmpty(expressJson) && !expressJson.equals("NULL")){ + JSONObject jsonObject = null; + try { + jsonObject = JSONObject.parseObject(expressJson); + String companyName = ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com")); + orderPageListVo.setExpressCompany(companyName); + orderPageListVo.setExpressNum(jsonObject.getString("num")); + } catch (Exception e) { + } + + } + + } return pageInfo.setRecords(list); } - - - private void processAppUserIds(OrderPageList orderPageList, String searchKey, Function<String, R<List<AppUser>>> userSearchFunction) { - if (StringUtils.isNotEmpty(searchKey)) { - List<Long> userIds = Optional.ofNullable(userSearchFunction.apply(searchKey).getData()) - .orElse(Collections.emptyList()) - .stream() - .map(AppUser::getId) - .collect(Collectors.toList()); - - if (CollectionUtils.isEmpty(userIds)) { - return; - } - - List<Long> existingUserIds = orderPageList.getAppUserIds(); - if (existingUserIds != null) { - if (!containsAny(existingUserIds, userIds)) { - return; - } - existingUserIds.addAll(userIds); - } else { - orderPageList.setAppUserIds(userIds); - } - } - } - - private void processOrderPageListVo(OrderPageListVo orderPageListVo) { - Long appUserId = orderPageListVo.getAppUserId(); - Optional.ofNullable(appUserClient.getAppUserById(appUserId)) - .ifPresent(appUser -> { - orderPageListVo.setUserName(appUser.getName()); - orderPageListVo.setPhone(appUser.getPhone()); - }); - - Optional.ofNullable(refundPassService.getOne(new LambdaQueryWrapper<RefundPass>() - .eq(RefundPass::getOrderId, orderPageListVo.getId()) - .eq(RefundPass::getDelFlag, 0) - .orderByDesc(RefundPass::getCreateTime) - .last("limit 1"))) - .ifPresent(refundPass -> orderPageListVo.setRefundPassId(refundPass.getId().toString())); - - // 平台分佣 - BigDecimal commission = Optional.ofNullable(shopBalanceStatementClient.getShopBalanceStatementList(Arrays.asList(1, 2, 3), Long.valueOf(orderPageListVo.getId())).getData()) - .orElse(Collections.emptyList()) - .stream() - .map(ShopBalanceStatement::getVariableAmount) - .reduce(BigDecimal.ZERO, BigDecimal::add); - orderPageListVo.setGetCommission(commission); - - // 处理快递信息 - Optional.ofNullable(orderPageListVo.getExpressJson()) - .filter(expressJson -> !expressJson.equals("NULL")) - .ifPresent(expressJson -> { - try { - JSONObject jsonObject = JSONObject.parseObject(expressJson); - orderPageListVo.setExpressCompany(ExpressCompanyMap.getCompanyNameByCode(jsonObject.getString("com"))); - orderPageListVo.setExpressNum(jsonObject.getString("num")); - } catch (Exception e) { - e.printStackTrace(); - throw new RuntimeException("快递信息解析失败"); - } - }); - } - /** - * 判断两个列表中是否至少有一个相同的元素 - * 此方法用于检查两个长整型列表之间的元素交集 - * 主要解决的问题是确定两个列表是否有共同的元素,用于避免潜在的数据不一致或错误 + * 判断 list1 是否包含 list2 中的至少一个元素 * - * @param list1 第一个列表,包含一系列长整型数值 - * @param list2 第二个列表,同样包含一系列长整型数值 - * @return 返回一个布尔值,如果两个列表中至少有一个相同的元素,则返回true,否则返回false + * @param list1 第一个列表 + * @param list2 第二个列表 + * @return 如果 list1 包含 list2 中的至少一个元素,返回 true;否则返回 false */ private boolean containsAny(List<Long> list1, List<Long> list2) { - return list1.stream().anyMatch(list2::contains) || list2.stream().anyMatch(list1::contains); + // 将 list1 转换为 HashSet 以提高查询效率 + Set<Long> set1 = new HashSet<>(list1); + + // 遍历 list2,检查是否有元素存在于 set1 中 + for (Long element : list2) { + if (set1.contains(element)) { + return true; + } + } + + // 如果没有找到共同元素,返回 false + return false; } - - -- Gitblit v1.7.1