From 6936e2439bb5426d6c446ec30c2d27a7db8e890d Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 14 一月 2025 11:20:50 +0800 Subject: [PATCH] 修改bug --- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 88 +++++++++++++++++++++++++++++++++++--------- 1 files changed, 70 insertions(+), 18 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 51132ee..69e4b11 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 @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.feignClient.BalanceChangeRecordClient; +import com.ruoyi.account.api.feignClient.UserCouponClient; import com.ruoyi.account.api.feignClient.UserPointClient; import com.ruoyi.account.api.model.*; import com.ruoyi.common.core.domain.R; @@ -27,6 +28,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 +36,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 +44,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 +103,15 @@ private TechnicianSubscribeClient technicianSubscribeClient; @Resource private ShopBalanceStatementClient shopBalanceStatementClient; + + @Resource + private RedisTemplate redisTemplate; + + @Resource + private SystemConfigClient systemConfigClient; @Resource - private OrderGoodService orderGoodService; + private UserCouponClient userCouponClient; @@ -147,9 +157,8 @@ // 收货地址 String addressJson = order.getAddressJson(); UserAddress userAddress = new UserAddress(); - if (StringUtils.isNotEmpty(addressJson)){ + if (2 == order.getDistributionMode()){ userAddress = JSONObject.parseObject(addressJson, UserAddress.class); - } // 优惠券 String couponJson = order.getCouponJson(); @@ -165,13 +174,7 @@ orderActivityInfo = JSONObject.parseObject(activityJson, OrderActivityInfo.class); } OrderDetailVO orderDetailVO = new OrderDetailVO(); - - if (CollectionUtil.isNotEmpty(orderGoods)){ - String goodJson = orderGoods.get(0).getGoodJson(); - Goods goods = JSONObject.parseObject(goodJson, Goods.class); - orderDetailVO.setDistributionMode(goods.getDistributionMode()); - } - + orderDetailVO.setDistributionMode(order.getDistributionMode()); Technician technician = new Technician(); if (order.getTechnicianId() != null){ R<Technician> shopdetail = technicianClient.shopdetail(order.getTechnicianId()); @@ -187,6 +190,7 @@ orderDetailVO.setAddressId(userAddress.getId()); orderDetailVO.setRecieveName(userAddress.getRecieveName()); orderDetailVO.setRecievePhone(userAddress.getRecievePhone()); + userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress()); orderDetailVO.setRecieveAddress(userAddress.getRecieveAddress()); orderDetailVO.setOrderNumber(order.getOrderNumber()); orderDetailVO.setCreateTime(order.getCreateTime()); @@ -438,6 +442,7 @@ BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); balanceChangeRecord.setOrderId(order.getId()); balanceChangeRecord.setAppUserId(order.getAppUserId()); + balanceChangeRecord.setVipId(appUser.getVipId()); balanceChangeRecord.setChangeType(6); balanceChangeRecord.setBeforeAmount(balance); balanceChangeRecord.setChangeAmount(paymentAmount); @@ -484,6 +489,12 @@ userPoint.setObjectId(order.getId()); userPointClient.saveUserPoint(userPoint); appUserClient.editAppUserById(appUser); + //回退优惠券状态 + if(null != order.getUserCouponId()){ + UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData(); + userCoupon.setUseTime(null); + userCouponClient.editReturnUse(userCoupon); + } } if(3 == payMethod){ //开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款 @@ -512,6 +523,7 @@ BalanceChangeRecord balanceChangeRecord = new BalanceChangeRecord(); balanceChangeRecord.setOrderId(order.getId()); balanceChangeRecord.setAppUserId(order.getAppUserId()); + balanceChangeRecord.setVipId(appUser.getVipId()); balanceChangeRecord.setChangeType(6); balanceChangeRecord.setBeforeAmount(balance); balanceChangeRecord.setChangeAmount(expressAmount); @@ -608,6 +620,13 @@ userPoint.setObjectId(order.getId()); userPointClient.saveUserPoint(userPoint); appUserClient.editAppUserById(appUser); + + //回退优惠券状态 + if(null != order.getUserCouponId()){ + UserCoupon userCoupon = userCouponClient.getUserCoupon(order.getUserCouponId()).getData(); + userCoupon.setUseTime(null); + userCouponClient.editReturnUse(userCoupon); + } return R.ok(); } @@ -733,17 +752,13 @@ orderInfo.setExpressAmount(order.getExpressAmount()); orderInfo.setPaymentAmount(order.getPaymentAmount()); orderInfo.setGetPoint(order.getGetPoint()); - if(StringUtils.isNotEmpty(order.getAddressJson())){ + if(2 == order.getDistributionMode()){ UserAddress userAddress = JSON.parseObject(order.getAddressJson(), UserAddress.class); orderInfo.setRecipient(userAddress.getRecieveName() + "-" + userAddress.getRecievePhone()); + userAddress.setRecieveAddress(userAddress.getProvince() + userAddress.getCity() + userAddress.getDistrict() + userAddress.getRecieveAddress()); orderInfo.setAddress(userAddress.getRecieveAddress()); - } - if(StringUtils.isNotEmpty(order.getExpressJson())){ - JSONObject jsonObject = JSON.parseObject(order.getExpressJson()); - String com = jsonObject.getString("com"); - String num = jsonObject.getString("num"); - QueryKD100Vo queryKD100Vo = ExpressDeliveryUtil.kd100QueryTrack(com, num); - orderInfo.setExpress(queryKD100Vo); + MapTrackKD100Vo mapTrackKD100Vo = JSON.parseObject(order.getExpressResult(), MapTrackKD100Vo.class); + orderInfo.setExpress(mapTrackKD100Vo); } List<OrderGood> orderGoods = orderGoodMapper.selectList(new LambdaQueryWrapper<OrderGood>().eq(OrderGood::getOrderId, orderId).eq(OrderGood::getDelFlag, 0)); int sum = orderGoods.stream().mapToInt(OrderGood::getNum).sum(); @@ -807,4 +822,41 @@ 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, order.getDeliverProvince() + order.getDeliverCity(), + userAddress.getProvince() + userAddress.getCity()); + 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)); + } + } + } } -- Gitblit v1.7.1