From b622b5ad2620366472ba76a98fb8c74d65b88018 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 14 一月 2025 19:38:10 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java | 6 +++ ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java | 4 ++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java | 49 ++++++++++++++++++++++++ ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java | 50 +++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 0 deletions(-) diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java index 7d06b35..93c4562 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/model/RefundPass.java @@ -94,4 +94,8 @@ @ApiModelProperty("收货地址JSON") @TableField(exist = false) private String addressJson; + + @ApiModelProperty(value = "第三方快递结果") + @TableField("express_result") + private String expressResult; } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java index a53dea7..7aa173e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/RefundPassController.java @@ -1,8 +1,12 @@ package com.ruoyi.order.controller; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ruoyi.account.api.model.UserAddress; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.core.web.page.TableDataInfo; @@ -11,13 +15,20 @@ import com.ruoyi.order.model.RefundPass; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.service.RefundPassService; +import com.ruoyi.order.util.ExpressDeliveryUtil; +import com.ruoyi.order.util.vo.MapTrackKD100Vo; import com.ruoyi.order.vo.*; +import com.ruoyi.other.api.domain.SystemConfig; +import com.ruoyi.other.api.feignClient.SystemConfigClient; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -43,6 +54,12 @@ @Resource private OrderService orderService; + + @Resource + private RedisTemplate redisTemplate; + + @Resource + private SystemConfigClient systemConfigClient; @ResponseBody @@ -121,6 +138,20 @@ } refundPass.setStatus(5); refundPass.setCode(pass.getCode()); + + //添加查询快递信息队列 + //一小时后定时查询快递信息 + SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); + JSONObject jsonObject = JSON.parseObject(systemConfig.getContent()); + Integer waitTime = jsonObject.getInteger("waitTime"); + redisTemplate.opsForZSet().add("order_refund_express", refundPass.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); + + JSONObject jsonObject1 = JSON.parseObject(pass.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, userAddress.getProvince() + userAddress.getCity(), order.getDeliverProvince() + order.getDeliverCity()); + refundPass.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); refundPassService.updateById(refundPass); return R.ok(); } @@ -168,5 +199,23 @@ } + + /** + * 获取订单快递明细 + * @param id + * @return + */ + @GetMapping("/getOrderExpress/{id}") + @ApiOperation(value = "获取售后订单快递明细", tags = {"小程序-订单管理"}) + public R<MapTrackKD100Vo> getOrderExpress(@PathVariable("id") Long id){ + RefundPass refundPass = refundPassService.getById(id); + String expressResult = refundPass.getExpressResult(); + if(StringUtils.isNotEmpty(expressResult)){ + MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(expressResult, MapTrackKD100Vo.class); + return R.ok(mapTrackKD100Vo); + } + return R.ok(); + } + } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java index 948c675..f68f656 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/RefundPassService.java @@ -62,4 +62,10 @@ * @return */ RefundPassInfo getRefundPassInfo(Long id); + + + /** + * 定时查询快递信息 + */ + void taskExpress(); } diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java index e00657c..2635f94 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/RefundPassServiceImpl.java @@ -7,6 +7,7 @@ import com.kuaidi100.sdk.contant.CompanyConstant; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.AppUser; +import com.ruoyi.account.api.model.UserAddress; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; @@ -17,13 +18,18 @@ import com.ruoyi.order.model.RefundPass; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.service.RefundPassService; +import com.ruoyi.order.util.ExpressDeliveryUtil; +import com.ruoyi.order.util.vo.MapTrackKD100Vo; import com.ruoyi.order.vo.*; import com.ruoyi.other.api.domain.BaseSetting; +import com.ruoyi.other.api.domain.SystemConfig; import com.ruoyi.other.api.feignClient.BaseSettingClient; import com.ruoyi.other.api.feignClient.ShopClient; +import com.ruoyi.other.api.feignClient.SystemConfigClient; import com.ruoyi.other.api.feignClient.TechnicianClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -32,6 +38,7 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Set; import java.util.stream.Collectors; /** @@ -57,6 +64,12 @@ @Resource private SysUserClient sysUserClient; + + @Resource + private RedisTemplate redisTemplate; + + @Resource + private SystemConfigClient systemConfigClient; @@ -243,4 +256,41 @@ } return refundPassInfo; } + + + /** + * 定时查询快递信息 + */ + @Override + public void taskExpress() { + Set<Long> order_express = redisTemplate.opsForZSet().rangeByScore("order_refund_express", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)); + if(order_express.size() > 0){ + for (Long id : order_express) { + RefundPass refundPass = this.getById(id); + Order order = orderService.getById(refundPass.getOrderId()); + if(refundPass.getPassStatus() != 5){ + redisTemplate.opsForZSet().remove("order_refund_express", id); + continue; + } + String expressJson = refundPass.getCode(); + if(StringUtils.isEmpty(expressJson)){ + redisTemplate.opsForZSet().remove("order_refund_express", id); + continue; + } + //{"com":"jd","num":"JDV016336234367"} + JSONObject jsonObject1 = JSON.parseObject(refundPass.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, userAddress.getProvince() + userAddress.getCity(), order.getDeliverProvince() + order.getDeliverCity()); + refundPass.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); + this.updateById(refundPass); + //延长时间x小时 + SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); + JSONObject jsonObject2 = JSON.parseObject(systemConfig.getContent()); + Integer waitTime = jsonObject2.getInteger("waitTime"); + redisTemplate.opsForZSet().add("order_refund_express", refundPass.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); + } + } + } } -- Gitblit v1.7.1