From 4f97bdbaadcdc19df9dfb0971b930d799c4aeddc Mon Sep 17 00:00:00 2001 From: luofl <1442745593@qq.com> Date: 星期四, 13 三月 2025 14:52:26 +0800 Subject: [PATCH] 迭代版本:2.28 --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 160 +++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 111 insertions(+), 49 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 51203ac..4025706 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 @@ -117,6 +117,9 @@ private ShopBalanceStatementClient shopBalanceStatementClient; @Resource + private ShopPointClient shopPointClient; + + @Resource private RedisTemplate redisTemplate; @Resource @@ -130,6 +133,10 @@ @Resource private RegionClient regionClient; + @Resource + private AppUserGiveawayTemporaryClient appUserGiveawayTemporaryClient; + @Resource + private ShopGiveawayTemporaryClient shopGiveawayTemporaryClient; @Override @@ -290,15 +297,14 @@ JSONObject jsonObject = JSONObject.parseObject(content); Long days = jsonObject.getLong("days"); order.setOrderStatus(OrderStatus.COMPLETED.getCode()); - order.setIsCommission(0); order.setAfterSaleTime(LocalDateTime.now().plusDays(days)); order.setEndTime(LocalDateTime.now()); order.setCancellerAppUserId(loginUserApplet.getUserid()); if (StringUtils.isNotEmpty(technicianId) && !"null".equals(technicianId)) { order.setTechnicianId(Integer.valueOf(technicianId)); } - // TODO orderMapper.updateById(order); + commissionService.calculationCommissionShop(order.getId()); } @@ -439,52 +445,26 @@ if (200 == r.getCode()) { this.updateById(order); } + + R r1 = balanceChangeRecordClient.deleteBalanceChangeRecordCopy(orderId, Arrays.asList(4)); + if (200 != r1.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致 + throw new RuntimeException("订单取消失败"); + } + R r2 = userPointClient.deleteUserPointCopy(orderId, Arrays.asList(2,8,9,10,14)); + if (200 != r2.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致 + throw new RuntimeException("订单取消失败"); + } + R<Boolean> r3 = shopBalanceStatementClient.deleteShopBalanceStatementCopy(orderId, Arrays.asList(1,2,3)); + if (200 != r3.getCode()) { // 项目没有分布式事务,此处报错可能会导致数据不一致 + throw new RuntimeException("订单取消失败"); + } + shopPointClient.deleteShopPointCopy(orderId, Arrays.asList(1,2,3)); + appUserGiveawayTemporaryClient.delAppUserGiveawayTemporary(orderId); + shopGiveawayTemporaryClient.delShopGiveawayTemporary(orderId); return r; } - /** - * 确认发货操作 - * - * @return - */ - @Override - public R confirmDelivery(ConfirmDelivery confirmDelivery) { - Order order = this.getById(confirmDelivery.getOrderId()); - if (1 == order.getPayStatus()) { - return R.fail("订单还未完成支付"); - } - if (1 == order.getOrderType() || null == order.getAddressJson()) { - return R.fail("该订单不支付快递配送"); - } - if (1 != order.getOrderStatus()) { - return R.fail("无效的操作"); - } - //添加快递号和修改订单状态 - order.setExpressJson(confirmDelivery.getCode()); - order.setDeliverProvince(confirmDelivery.getDeliverProvince()); - order.setDeliverProvinceCode(confirmDelivery.getDeliverProvinceCode()); - order.setDeliverCity(confirmDelivery.getDeliverCity()); - order.setDeliverCityCode(confirmDelivery.getDeliverCityCode()); - order.setDeliverDistrict(confirmDelivery.getDeliverDistrict()); - order.setDeliverDistrictCode(confirmDelivery.getDeliverDistrictCode()); - order.setOrderStatus(2); - //添加查询快递信息队列 - //一小时后定时查询快递信息 - SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); - JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); - Integer waitTime = jsonObject.getInteger("waitTime"); - redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); - JSONObject jsonObject1 = JSON.parseObject(confirmDelivery.getCode()); - String com = jsonObject1.getString("com"); - String num = jsonObject1.getString("num"); - UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); - MapTrackKD100Vo mapTrackKD100Vo = ExpressDeliveryUtil.kd100MapTrack(com, num, order.getDeliverProvince() + order.getDeliverCity(), - userAddress.getProvince() + userAddress.getCity()); - order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); - this.updateById(order); - return R.ok(); - } /** @@ -519,7 +499,8 @@ public R refundPayMoney(Order order) { //开始退款 Integer payMethod = order.getPayMethod(); - BigDecimal paymentAmount = order.getPaymentAmount(); + BigDecimal expressAmount = order.getExpressAmount() == null ? BigDecimal.ZERO : order.getExpressAmount(); + BigDecimal paymentAmount = order.getPaymentAmount().add(expressAmount); AppUser appUser = appUserClient.getAppUserById(order.getAppUserId()); if (1 == payMethod) { //微信退款 @@ -562,6 +543,7 @@ balanceChangeRecord.setDelFlag(0); balanceChangeRecord.setCreateTime(LocalDateTime.now()); balanceChangeRecordClient.saveBalanceChangeRecord(balanceChangeRecord); + //退回获得的消费积分 //需要先检查会员等级时候回回退,使用回退后的会员等级查询配置 @@ -613,7 +595,6 @@ if (3 == payMethod) { //开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款 if (null != order.getExpressAmount() && BigDecimal.ZERO.compareTo(order.getExpressAmount()) < 0) { - BigDecimal expressAmount = order.getExpressAmount(); if (1 == order.getExpressPayMethod()) { //微信退款 RefundResult refund = PaymentUtil.refund(order.getOrderNumber(), "R" + order.getOrderNumber(), expressAmount.doubleValue(), "/order/order/refundExpressPayMoneyCallback"); @@ -680,6 +661,11 @@ order.setRefundStatus(2); order.setRefundTime(LocalDateTime.now()); + + shopPointClient.deleteShopPointCopy(order.getId(), Arrays.asList(1,2,3)); + shopBalanceStatementClient.deleteShopBalanceStatementCopy(order.getId(), Arrays.asList(1,2,3)); + appUserGiveawayTemporaryClient.delAppUserGiveawayTemporary(order.getId()); + shopGiveawayTemporaryClient.delShopGiveawayTemporary(order.getId()); return R.ok(); } @@ -826,6 +812,7 @@ Long days = jsonObject.getLong("days"); order.setAfterSaleTime(LocalDateTime.now().plusDays(days)); this.updateById(order); + commissionService.calculationCommissionShop(order.getId()); return R.ok(); } @@ -953,6 +940,10 @@ if (order_express.size() > 0) { for (Long id : order_express) { Order order = this.getById(id); + if (order == null){ + redisTemplate.opsForZSet().remove("order_express", id); + continue; + } if (order.getOrderStatus() != 2) { redisTemplate.opsForZSet().remove("order_express", id); continue; @@ -980,11 +971,15 @@ } } - @SneakyThrows @Override @Transactional(rollbackFor = Exception.class) public void importExpress(String url) { - URL url1 = new URL(url); + URL url1 = null; + try { + url1 = new URL(url); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } try (InputStream fileInputStream = url1.openStream()) { Workbook workbook = new XSSFWorkbook(fileInputStream); Sheet sheet = workbook.getSheetAt(0); // 获取第一个Sheet @@ -992,18 +987,33 @@ for (int i = 1; i <= lastRowNum; i++) { Row row = sheet.getRow(i); // 订单编号 + if (row.getCell(0) == null){ + throw new ServiceException("第" + i + "行订单编号为空", 500); + } row.getCell(0).setCellType(CellType.STRING); String orderNum = row.getCell(0).getStringCellValue(); // 快递单号 + if (row.getCell(1) == null){ + throw new ServiceException("第" + i + "行快递单号为空", 500); + } row.getCell(1).setCellType(CellType.STRING); String expressNum = row.getCell(1).getStringCellValue(); // 快递公司名称 + if (row.getCell(2) == null){ + throw new ServiceException("第" + i + "行快递公司为空", 500); + } row.getCell(2).setCellType(CellType.STRING); String expressName = row.getCell(2).getStringCellValue(); // 省区划代码 + if (row.getCell(3) == null){ + throw new ServiceException("第" + i + "行省区划代码为空", 500); + } row.getCell(3).setCellType(CellType.STRING); String provinceCode = row.getCell(3).getStringCellValue(); // 市区划代码 + if (row.getCell(4) == null){ + throw new ServiceException("第" + i + "行市区划代码为空", 500); + } row.getCell(4).setCellType(CellType.STRING); String cityCode = row.getCell(4).getStringCellValue(); Order order = this.getOne(new LambdaQueryWrapper<Order>() @@ -1048,7 +1058,10 @@ confirmDelivery.setDeliverProvinceCode(regionBiCode.getData().getCode()); confirmDelivery.setDeliverCity(regionBiCode1.getData().getName()); confirmDelivery.setDeliverCityCode(regionBiCode1.getData().getCode()); - confirmDelivery(confirmDelivery); + R r = confirmDelivery(confirmDelivery); + if (R.isError(r)) { + throw new ServiceException(r.getMsg(), 500); + } } } catch (IOException e) { @@ -1057,6 +1070,50 @@ } + } + + /** + * 确认发货操作 + * + * @return + */ + @Override + public R confirmDelivery(ConfirmDelivery confirmDelivery) { + Order order = this.getById(confirmDelivery.getOrderId()); + if (1 == order.getPayStatus()) { + return R.fail("订单还未完成支付"); + } + if (1 == order.getOrderType() || null == order.getAddressJson()) { + return R.fail("该订单不支付快递配送"); + } + if (1 != order.getOrderStatus()) { + return R.fail("无效的操作"); + } + //添加快递号和修改订单状态 + order.setExpressJson(confirmDelivery.getCode()); + order.setDeliverProvince(confirmDelivery.getDeliverProvince()); + order.setDeliverProvinceCode(confirmDelivery.getDeliverProvinceCode()); + order.setDeliverCity(confirmDelivery.getDeliverCity()); + order.setDeliverCityCode(confirmDelivery.getDeliverCityCode()); + order.setDeliverDistrict(confirmDelivery.getDeliverDistrict()); + order.setDeliverDistrictCode(confirmDelivery.getDeliverDistrictCode()); + order.setOrderStatus(2); + //添加查询快递信息队列 + //一小时后定时查询快递信息 + SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + Integer waitTime = jsonObject.getInteger("waitTime"); + redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); + + JSONObject jsonObject1 = JSON.parseObject(confirmDelivery.getCode()); + String com = jsonObject1.getString("com"); + String num = jsonObject1.getString("num"); + UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); + MapTrackKD100Vo mapTrackKD100Vo = ExpressDeliveryUtil.kd100MapTrack(com, num, order.getDeliverProvince() + order.getDeliverCity(), + userAddress.getProvince() + userAddress.getCity()); + order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); + this.updateById(order); + return R.ok(); } @@ -1091,4 +1148,9 @@ public Integer getShopSaleNumByShopIds(List<Integer> shopIds, Integer type) { return this.baseMapper.getShopSaleNumByShopIds(shopIds, type); } + + @Override + public List<OrderExport> getOrderExportList(OrderPageList orderPageList) { + return Collections.emptyList(); + } } -- Gitblit v1.7.1