ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -1,12 +1,14 @@ 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.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.ruoyi.account.api.feignClient.UserAddressClient; 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; @@ -17,6 +19,7 @@ import com.ruoyi.order.service.CommissionService; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.util.payment.model.RefundCallbackResult; import com.ruoyi.order.util.vo.MapTrackKD100Vo; import com.ruoyi.order.vo.*; import com.ruoyi.other.api.domain.BaseSetting; import com.ruoyi.other.api.feignClient.BaseSettingClient; @@ -429,5 +432,23 @@ Set<Long> collect = list.stream().map(Order::getAppUserId).collect(Collectors.toSet()); return R.ok(collect); } /** * 获取订单快递明细 * @param id * @return */ @GetMapping("/getOrderExpress/{id}") @ApiOperation(value = "获取订单快递明细", tags = {"小程序-订单管理"}) public R<MapTrackKD100Vo> getOrderExpress(@PathVariable("id") Long id){ Order order = orderService.getById(id); String expressResult = order.getExpressResult(); if(StringUtils.isNotEmpty(expressResult)){ MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(expressResult, MapTrackKD100Vo.class); return R.ok(mapTrackKD100Vo); } return R.ok(); } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/OrderService.java
@@ -110,4 +110,9 @@ * @return */ Integer getShopSaleNum(Integer shopId, Integer type); /** * 定时查询快递信息 */ void taskExpress(); } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -27,6 +27,7 @@ import com.ruoyi.order.util.payment.PaymentUtil; import com.ruoyi.order.util.payment.model.RefundCallbackResult; import com.ruoyi.order.util.payment.model.RefundResult; import com.ruoyi.order.util.vo.MapTrackKD100Vo; import com.ruoyi.order.util.vo.QueryKD100Vo; import com.ruoyi.order.vo.*; import com.ruoyi.other.api.domain.*; @@ -34,6 +35,7 @@ import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; import com.ruoyi.system.api.model.LoginUser; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -41,6 +43,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; @@ -99,9 +102,12 @@ private TechnicianSubscribeClient technicianSubscribeClient; @Resource private ShopBalanceStatementClient shopBalanceStatementClient; @Resource private OrderGoodService orderGoodService; private RedisTemplate redisTemplate; @Resource private SystemConfigClient systemConfigClient; @@ -807,4 +813,40 @@ public Integer getShopSaleNum(Integer shopId, Integer type) { return this.baseMapper.getShopSaleNum(shopId, type); } /** * 定时查询快递信息 */ @Override public void taskExpress() { Set<Long> order_express = redisTemplate.opsForZSet().rangeByScore("order_express", 0, LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)); if(order_express.size() > 0){ for (Long id : order_express) { Order order = this.getById(id); if(order.getOrderStatus() != 2){ redisTemplate.opsForZSet().remove("order_express", id); continue; } String expressJson = order.getExpressJson(); if(StringUtils.isEmpty(expressJson)){ redisTemplate.opsForZSet().remove("order_express", id); continue; } //{"com":"jd","num":"JDV016336234367"} JSONObject jsonObject = JSON.parseObject(expressJson); String com = jsonObject.getString("com"); String num = jsonObject.getString("num"); UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); MapTrackKD100Vo mapTrackKD100Vo = ExpressDeliveryUtil.kd100MapTrack(com, num, "", userAddress.getRecieveAddress()); order.setExpressResult(JSON.toJSONString(mapTrackKD100Vo)); this.updateById(order); //延长时间x小时 SystemConfig systemConfig = systemConfigClient.getSystemConfig(3).getData(); JSONObject jsonObject1 = JSON.parseObject(systemConfig.getContent()); Integer waitTime = jsonObject1.getInteger("waitTime"); redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(waitTime).toEpochSecond(ZoneOffset.UTC)); } } } } ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/ShoppingCartServiceImpl.java
@@ -1146,6 +1146,11 @@ userCouponClient.editUserCoupon(userCoupon); } } //添加查询快递信息队列 if(StringUtils.isNotEmpty(order.getExpressJson())){ //一小时后定时查询快递信息 redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(1).toEpochSecond(ZoneOffset.UTC)); } } //积分支付 if(3 == shoppingCartPayment.getPaymentType()){ @@ -1267,6 +1272,14 @@ //删除购物车数据 this.removeBatchByIds(ids); } //添加查询快递信息队列 if(StringUtils.isNotEmpty(order.getExpressJson())){ //一小时后定时查询快递信息 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)); } } //添加账户余额支付明细 @@ -1359,6 +1372,11 @@ userCouponClient.editUserCoupon(userCoupon); } } //添加查询快递信息队列 if(StringUtils.isNotEmpty(order.getExpressJson())){ //一小时后定时查询快递信息 redisTemplate.opsForZSet().add("order_express", order.getId(), LocalDateTime.now().plusHours(1).toEpochSecond(ZoneOffset.UTC)); } //删除购物车数据 Long userid = tokenService.getLoginUserApplet().getUserid(); ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/TaskUtil.java
@@ -1,6 +1,7 @@ package com.ruoyi.order.util; import com.ruoyi.order.service.CommissionService; import com.ruoyi.order.service.OrderService; import com.ruoyi.order.service.ShoppingCartService; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -21,6 +22,9 @@ @Resource private ShoppingCartService shoppingCartService; @Resource private OrderService orderService; @@ -28,6 +32,7 @@ public void taskMonth() { commissionService.calculationCommission(); shoppingCartService.closeOrder(); orderService.taskExpress(); } // 每天晚上23:59:59执行的定时任务