From dfb1f5ab2e8dc03cf2f497ce3327f6ce58700766 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 23 十月 2025 11:35:55 +0800
Subject: [PATCH] 修改bug
---
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java | 365 ++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 268 insertions(+), 97 deletions(-)
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
index 6acb4b2..d0c9c5f 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java
@@ -1,124 +1,295 @@
package com.stylefeng.guns.modular.system.util;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.stylefeng.guns.modular.account.controller.AppOrderController;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
+import com.stylefeng.guns.modular.system.model.Company;
+import com.stylefeng.guns.modular.system.model.Driver;
import com.stylefeng.guns.modular.system.model.UserInfo;
-import com.stylefeng.guns.modular.system.service.IUserCouponRecordService;
-import com.stylefeng.guns.modular.system.service.IUserInfoService;
-import com.stylefeng.guns.modular.system.service.IUserMerchantCouponService;
+import com.stylefeng.guns.modular.system.service.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
import com.stylefeng.guns.modular.system.util.qianyuntong.SMSUtil;
-import com.stylefeng.guns.modular.system.util.qianyuntong.model.SendSmsRequest;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService;
+import com.stylefeng.guns.modular.taxi.service.IPaymentRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
/**
* 定时任务工具类
*/
+@Slf4j
@Component
public class TaskUtil {
+
+ @Autowired
+ private IUserCouponRecordService userCouponRecordService;
+
+ @Autowired
+ private IUserMerchantCouponService userMerchantCouponService;
+
+ @Autowired
+ private AppOrderController appOrderController;
+
+ @Autowired
+ private IOrderPrivateCarService orderPrivateCarService;
+ @Autowired
+ private IPaymentRecordService paymentRecordService;
+ @Autowired
+ private IIncomeService incomeService;
+
+
+ @Autowired
+ private IOrderCrossCityService orderCrossCityService;
+
+ @Autowired
+ private IOrderLogisticsService orderLogisticsService;
+
+ @Autowired
+ private IOrderTaxiService orderTaxiService;
+
+ @Autowired
+ private ChinaMobileUtil chinaMobileUtil;
+
+ @Autowired
+ private IUserInfoService userInfoService;
+
+ @Autowired
+ private IDriverService driverService;
+ @Autowired
+ private ICompanyService companyService;
+
+
+ /**
+ * 每隔一分钟去处理的定时任务
+ */
+ @Scheduled(fixedRate = 1000 * 60)
+ public void taskMinute() {
+ try {
+ //处理超时未支付的订单
+ timoutNoPayment();
+ //修改过期的优惠券
+ userCouponRecordService.updateTimeOut();
+ //修改过期的商家优惠券
+ userMerchantCouponService.updateExpired();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 每天的凌晨执行的任务
+ */
+ @Scheduled(fixedRate = 1000 * 60)
+ public void taskDay() {
+ }
+
+
+ /**
+ * 每天中午12点发送提醒短信
+ */
+ @Scheduled(cron = "0 0 12 * * ?")
+ public void taskMonth() {
+ try {
+ List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("isDelete", 1)
+ .eq("state", 7).eq("abnormal", 1)
+ .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
+ for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
+ UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+ SendSmsRequest request = new SendSmsRequest();
+ request.setDestAddress(userInfo.getPhone());
+ request.setTemplateId("TPL202507300002");
+ Map<String, String> templateParams = new HashMap<>();
+ request.setTemplateParams(templateParams);
+ request.setSpId("Y86asr7J");
+ SMSUtil.sendSms(request);
+ }
+ List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("isDelete", 1)
+ .eq("state", 7).eq("abnormal", 1)
+ .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
+ for (OrderTaxi orderTaxi : orderTaxis) {
+ UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
+ SendSmsRequest request = new SendSmsRequest();
+ request.setDestAddress(userInfo.getPhone());
+ request.setTemplateId("TPL202507300002");
+ Map<String, String> templateParams = new HashMap<>();
+ request.setTemplateParams(templateParams);
+ request.setSpId("Y86asr7J");
+ SMSUtil.sendSms(request);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ /**
+ * 大于72小时未支付的订单
+ */
+ public void timoutNoPayment() {
+ List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 7)
+ .eq("isDelete", 1).eq("recoveryOrder", 0).eq("abnormal", 1).last(" and now() >= DATE_ADD(getoffTime, INTERVAL 72 HOUR)"));
+ List<OrderPrivateCar> orderPrivateCars1 = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 7)
+ .eq("isDelete", 1).eq("recoveryOrder", 0).eq("abnormal", 2).last(" and now() >= DATE_ADD(abnormalTime, INTERVAL 72 HOUR)"));
+ orderPrivateCars.addAll(orderPrivateCars1);
+ for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
+ try {
+ Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+ Company company = companyService.selectById(driver.getCompanyId());
+ UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+ Double orderMoney = (2 == orderPrivateCar.getAbnormal() && 2 == orderPrivateCar.getAbnormalStatus() ? orderPrivateCar.getResponsibilityMoney().doubleValue() : orderPrivateCar.getOrderMoney());
- @Autowired
- private IUserCouponRecordService userCouponRecordService;
+ if(null == orderPrivateCar.getIsCreated()){
+ //先调中台创建订单
+ CreateOrderRequest createOrderRequest = new CreateOrderRequest();
+ createOrderRequest.setTreatShopId(driver.getEmpId().toString());
+ createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isCompensate\":\"0\",\"isPromote\":\"" + (orderPrivateCar.getPromotion() == 2 ? 1 : 0) + "\"}");
+ createOrderRequest.setCharge(new BigDecimal(orderMoney));
+ createOrderRequest.setOrderNo("PR" + orderPrivateCar.getId());
+ createOrderRequest.setOrderId(orderPrivateCar.getTravelId());
+ createOrderRequest.setCustomerId(userInfo.getOnconUUID());
+ OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest);
+ orderPrivateCar.setIsCreated(1);
+ orderPrivateCar.setTravelId(orderInfo.getOrderId());
+ orderPrivateCarService.updateById(orderPrivateCar);
+ }
+ //使用备付金进行支付订单
+ TradePayOffData tradePayOffData = new TradePayOffData();
+ tradePayOffData.setPartnerPayId(orderPrivateCar.getTravelId());
+ tradePayOffData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
+ tradePayOffData.setOrderDesc("完成订单");
+ PayInfo payInfo = OrderUtil.tradePayOff(tradePayOffData);
+ String retCode = payInfo.getRetCode();
+ if (!"000000".equals(retCode)) {
+ log.error("备付金支付失败:{}", payInfo.getRetMsg());
+ return;
+ }
+ PayInfoData data = payInfo.getData();
+ String status = data.getStatus();
+ if ("3".equals(status)) {
+ log.error("备付金支付失败:{}", payInfo.getRetMsg());
+ return;
+ }
+ if("0".equals(status)){
+ //查询支付信息
+ GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest();
+ getPaymentInfoDataRequest.setPartnerPayId(orderPrivateCar.getTravelId());
+ GetPaymentInfo getPaymentInfo = OrderUtil.paymentInfo(getPaymentInfoDataRequest);
+ status = getPaymentInfo.getStatus();
+ }
+ PayInfoData payInfoData = payInfo.getData();
+ PaymentInfo paymentInfo = payInfoData.getPaymentInfos().get(0);
+ if(!"0".equals(status)){
+ //支付成功,通知三方
+ PaymentOrderRequest paymentOrderRequest = new PaymentOrderRequest();
+ paymentOrderRequest.setPayItemId(paymentInfo.getPayItemId());
+ paymentOrderRequest.setPaymentInfo(JSON.toJSONString(payInfoData.getPaymentInfos()));
+ paymentOrderRequest.setOrderId(orderPrivateCar.getTravelId());
+ paymentOrderRequest.setCharge(BigDecimal.valueOf(orderMoney));
+ paymentOrderRequest.setPayTime(data.getPayTime());
+ paymentOrderRequest.setPaymentSerialNumber(payInfoData.getPayId());
+ OrderInfo orderInfo1 = OrderUtil.paymentOrder(paymentOrderRequest);
+
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest();
+ request1.setOrderId(orderPrivateCar.getTravelId());
+ request1.setStatus(9);
+ if (null != orderPrivateCar.getDriverId()) {
+ request1.setDriverId(driver.getEmpId().toString());
+ request1.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderPrivateCar.getPromotion()) {
+ Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request1.setPromoterId(driver2.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(request1);
+
+ String payId = payInfo.getData().getPayId();
+ //copy原始订单后生成追缴单
+ OrderPrivateCar orderPrivateCar1 = new OrderPrivateCar();
+ BeanUtils.copyProperties(orderPrivateCar, orderPrivateCar1);
+ orderPrivateCar1.setId(null);
+ orderPrivateCar1.setRecoveryOrder(1);
+ orderPrivateCar1.setIsGenerateRecoveryOrder(0);
+ orderPrivateCar1.setOldOrderId(orderPrivateCar.getId());
+ orderPrivateCar1.setRecoveryOrderCreateDate(new Date());
+ orderPrivateCar1.setAbnormal(1);
+ orderPrivateCar1.setResponsibilityType(null);
+ orderPrivateCar1.setResponsibilityMoney(null);
+ orderPrivateCar1.setAbnormalRemark(null);
+ orderPrivateCar1.setAbnormalIntro(null);
+ orderPrivateCar1.setPromotionMoney(null);
+ orderPrivateCar1.setPromotionDriverId(null);
+ orderPrivateCar1.setPromotionActivityId(null);
+ orderPrivateCar1.setSuccessTime(null);
+ orderPrivateCar1.setPromotion(1);
+ orderPrivateCar1.setPromotionPhone(null);
+ orderPrivateCar1.setPromotionUser(null);
- @Autowired
- private IUserMerchantCouponService userMerchantCouponService;
-
- @Autowired
- private AppOrderController appOrderController;
-
- @Autowired
- private IOrderPrivateCarService orderPrivateCarService;
-
-
- @Autowired
- private IOrderCrossCityService orderCrossCityService;
-
- @Autowired
- private IOrderLogisticsService orderLogisticsService;
-
- @Autowired
- private IOrderTaxiService orderTaxiService;
-
- @Autowired
- private ChinaMobileUtil chinaMobileUtil;
-
- @Autowired
- private IUserInfoService userInfoService;
-
-
-
- /**
- * 每隔一分钟去处理的定时任务
- */
- @Scheduled(fixedRate = 1000 * 60)
- public void taskMinute(){
- try {
- //修改过期的优惠券
- userCouponRecordService.updateTimeOut();
- //修改过期的商家优惠券
- userMerchantCouponService.updateExpired();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- /**
- * 每天的凌晨执行的任务
- */
- @Scheduled(fixedRate = 1000 * 60)
- public void taskDay(){
- }
-
-
-
- /**
- * 每天中午12点发送提醒短信
- */
- @Scheduled(cron = "0 0 12 * * ?")
- public void taskMonth(){
- try {
- List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("isDelete", 1)
- .eq("state", 7).eq("abnormal", 1)
- .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
- for (OrderPrivateCar orderPrivateCar : orderPrivateCars) {
- UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
- SendSmsRequest request = new SendSmsRequest();
- request.setDestAddress(userInfo.getPhone());
- request.setTemplateId("TPL202507300002");
- Map<String, String> templateParams = new HashMap<>();
- request.setTemplateParams(templateParams);
- request.setSpId("Y86asr7J");
- SMSUtil.sendSms(request);
- }
- List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("isDelete", 1)
- .eq("state", 7).eq("abnormal", 1)
- .last(" and now() > DATE_ADD(endServiceTime, INTERVAL 24 HOUR)"));
- for (OrderTaxi orderTaxi : orderTaxis) {
- UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId());
- SendSmsRequest request = new SendSmsRequest();
- request.setDestAddress(userInfo.getPhone());
- request.setTemplateId("TPL202507300002");
- Map<String, String> templateParams = new HashMap<>();
- request.setTemplateParams(templateParams);
- request.setSpId("Y86asr7J");
- SMSUtil.sendSms(request);
- }
- }catch (Exception e){
- e.printStackTrace();
- }
- }
+
+ //修改原始订单为支付状态
+ orderPrivateCar.setState(9);
+ orderPrivateCar.setPayType(5);
+ orderPrivateCar.setPayMoney(orderMoney);
+ orderPrivateCar.setPayTime(new Date());
+ orderPrivateCar.setIsGenerateRecoveryOrder(1);
+ //添加收入
+ Map<String, Object> map = incomeService.saveIncome(orderPrivateCar.getId(), 1, orderMoney);
+ orderPrivateCar.setSplitAllocation(JSON.toJSONString(map));
+ orderPrivateCarService.updateById(orderPrivateCar);
+ //保存追缴单
+ orderPrivateCarService.insert(orderPrivateCar1);
+ //添加三方支付记录
+ try {
+ paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderPrivateCar.getId(), 1, 3, orderMoney, payId, 2);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+
+ Driver driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
+ UserInfo userInfo1 = userInfoService.selectById(orderPrivateCar1.getUserId());
+ Company company1 = companyService.selectById(driver1.getCompanyId());
+ //调三方订单中心创建行程单
+ CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
+ request.setOrderNo("PR" + orderPrivateCar1.getId());
+ request.setCustomerId(userInfo1.getOnconUUID());
+ request.setDriverId(driver1.getEmpId().toString());
+ request.setSupplierShopId(company1.getEnterCode());
+ request.setServiceType(2);
+ String travelItinerary = OrderUtil.createTravelItinerary(request);
+ orderPrivateCar1.setTravelId(travelItinerary);
+ orderPrivateCar1.setIsCreated(0);
+ orderPrivateCarService.updateById(orderPrivateCar1);
+ //修改订单状态为待支付
+ ModifyTravelItineraryRequest modifyTravelItineraryRequest = new ModifyTravelItineraryRequest();
+ modifyTravelItineraryRequest.setOrderId(orderPrivateCar1.getTravelId());
+ modifyTravelItineraryRequest.setStatus(orderPrivateCar1.getState());
+ modifyTravelItineraryRequest.setDriverId(driver1.getEmpId().toString());
+ modifyTravelItineraryRequest.setSupplierShopId(company1.getEnterCode());
+ if (2 == orderPrivateCar1.getPromotion()) {
+ Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
+ modifyTravelItineraryRequest.setPromoterId(driver2.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(modifyTravelItineraryRequest);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
}
--
Gitblit v1.7.1