From ae69d718d0b417974dafbe2ce98a429a89101152 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 14 一月 2025 15:18:50 +0800
Subject: [PATCH] 修改
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 108 +++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 82 insertions(+), 26 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 f7f700e..6e38450 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;
@@ -22,14 +23,12 @@
import com.ruoyi.order.model.OrderBalancePayment;
import com.ruoyi.order.model.OrderGood;
import com.ruoyi.order.model.RefundPass;
-import com.ruoyi.order.service.CommissionService;
-import com.ruoyi.order.service.OrderBalancePaymentService;
-import com.ruoyi.order.service.OrderService;
-import com.ruoyi.order.service.RefundPassService;
+import com.ruoyi.order.service.*;
import com.ruoyi.order.util.ExpressDeliveryUtil;
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.*;
@@ -37,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;
@@ -44,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;
@@ -103,6 +104,15 @@
@Resource
private ShopBalanceStatementClient shopBalanceStatementClient;
+ @Resource
+ private RedisTemplate redisTemplate;
+
+ @Resource
+ private SystemConfigClient systemConfigClient;
+
+ @Resource
+ 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());
@@ -204,6 +208,14 @@
orderDetailVO.setLatitude(shop.getLatitude());
orderDetailVO.setShopId(shop.getId());
orderDetailVO.setTechnicianName(technician.getName());
+ orderDetailVO.setTechnicianId(technician.getId());
+ if(order.getOrderType() == 1){
+ List<TechnicianSubscribe> data = technicianSubscribeClient.getTechnicianSubscribeList(order.getId()).getData();
+ if(data.size() > 0){
+ Long id = data.get(0).getId();
+ orderDetailVO.setTechnicianSubscribeId(id.toString());
+ }
+ }
return orderDetailVO;
}
@@ -438,6 +450,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,7 +497,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){
//开始运费退款,积分支付,运费是单独进行支付的,所以需要单独退款
@@ -513,6 +531,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);
@@ -609,6 +628,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();
}
@@ -655,9 +681,6 @@
userPoint.setAppUserId(order.getAppUserId());
userPoint.setObjectId(order.getId());
userPointClient.saveUserPoint(userPoint);
-
- order.setRefundStatus(2);
- order.setRefundTime(LocalDateTime.now());
return R.ok();
}
@@ -722,7 +745,7 @@
orderInfo.setUserName(appUser.getName());
orderInfo.setPhone(appUser.getPhone());
}
- orderInfo.setOrderType(order.getOrderType() == 1 ? "服务" : (StringUtils.isNotEmpty(order.getExpressJson()) ? "单品-快递配送" : "单品-自提"));
+ orderInfo.setOrderType(order.getOrderType() == 1 ? "服务" : (StringUtils.isNotEmpty(order.getAddressJson()) ? "单品-快递配送" : "单品-上门自提"));
Shop shop = shopClient.getShopById(order.getShopId()).getData();
if(null != shop){
orderInfo.setShopName(shop.getName());
@@ -737,17 +760,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();
@@ -811,4 +830,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