From b6da936b0c7379c3e1ef07409f81702074b45f47 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 11 八月 2025 19:36:47 +0800 Subject: [PATCH] 修改bug --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java | 444 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 377 insertions(+), 67 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 bcec77b..dab81c8 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,86 +1,396 @@ 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.service.IUserCouponRecordService; -import com.stylefeng.guns.modular.system.service.IUserMerchantCouponService; +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.*; +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.*; +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.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 定时任务工具类 */ +@Slf4j @Component public class TaskUtil { - - @Autowired - private IUserCouponRecordService userCouponRecordService; - - @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; - - - - /** - * 每隔一分钟去处理的定时任务 - */ - @Scheduled(fixedRate = 1000 * 60) - public void taskMinute(){ - try { - - //修改过期的优惠券 - userCouponRecordService.updateTimeOut(); - //修改过期的商家优惠券 - userMerchantCouponService.updateExpired(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /** - * 每天的凌晨执行的任务 - */ - @Scheduled(fixedRate = 1000 * 60) - public void taskDay(){ - } - - -// -// /** -// * 每月第一天的1点执行的任务 -// */ -// @Scheduled(cron = "0 0 1 1 * *") -// public void taskMonth(){ -// try { -// -// }catch (Exception e){ -// e.printStackTrace(); -// } -// } + + @Autowired + private IUserCouponRecordService userCouponRecordService; + + @Autowired + private IUserMerchantCouponService userMerchantCouponService; + + @Autowired + private AppOrderController appOrderController; + + @Autowired + private IOrderPrivateCarService orderPrivateCarService; + @Autowired + private IPaymentRecordService paymentRecordService; + + + @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 { + //修改过期的优惠券 + userCouponRecordService.updateTimeOut(); + //修改过期的商家优惠券 + userMerchantCouponService.updateExpired(); + //处理超时未支付的订单 + timoutNoPayment(); + } 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(); + } + } + + + /** + * 大于24小时未支付的订单 + */ + public void timoutNoPayment() { + List<OrderPrivateCar> orderPrivateCars = orderPrivateCarService.selectList(new EntityWrapper<OrderPrivateCar>().eq("state", 7) + .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 72 HOUR)")); + for (OrderPrivateCar orderPrivateCar : orderPrivateCars) { + try { + Driver driver = driverService.selectById(orderPrivateCar.getDriverId()); + Company company = companyService.selectById(driver.getCompanyId()); + UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); + if(null == orderPrivateCar.getIsCreated()){ + //先调中台创建订单 + CreateOrderRequest createOrderRequest = new CreateOrderRequest(); + createOrderRequest.setTreatShopId(driver.getEmpId().toString()); + createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderPrivateCar.getPromotion() == 2 ? 1 : 0) + "\"}"); + createOrderRequest.setCharge(new BigDecimal(orderPrivateCar.getOrderMoney())); + 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(orderPrivateCar.getOrderMoney() * 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(orderPrivateCar.getOrderMoney())); + 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); + + //修改原始订单为支付状态 + orderPrivateCar.setState(9); + orderPrivateCar.setPayType(5); + orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney()); + orderPrivateCarService.updateById(orderPrivateCar); + //保存追缴单 + orderPrivateCarService.insert(orderPrivateCar1); + //添加三方支付记录 + try { + paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderPrivateCar.getId(), 1, 3, orderPrivateCar.getOrderMoney(), 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(); + } + } + + //出租车 + List<OrderTaxi> orderTaxis = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("state", 7) + .eq("isDelete", 1).eq("recoveryOrder", 0).last(" and now() >= DATE_ADD(insertTime, INTERVAL 24 HOUR)")); + for (OrderTaxi orderTaxi : orderTaxis) { + try { + Driver driver = driverService.selectById(orderTaxi.getDriverId()); + Company company = companyService.selectById(driver.getCompanyId()); + UserInfo userInfo = userInfoService.selectById(orderTaxi.getUserId()); + if(null == orderTaxi.getIsCreated()){ + //先调中台创建订单 + CreateOrderRequest createOrderRequest = new CreateOrderRequest(); + createOrderRequest.setTreatShopId(driver.getEmpId().toString()); + createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderTaxi.getPromotion() == 2 ? 1 : 0) + "\"}"); + createOrderRequest.setCharge(new BigDecimal(orderTaxi.getOrderMoney())); + createOrderRequest.setOrderNo("TA" + orderTaxi.getId()); + createOrderRequest.setOrderId(orderTaxi.getTravelId()); + createOrderRequest.setCustomerId(userInfo.getOnconUUID()); + OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest); + orderTaxi.setIsCreated(1); + orderTaxi.setTravelId(orderInfo.getOrderId()); + orderTaxiService.updateById(orderTaxi); + } + //使用备付金进行支付订单 + TradePayOffData tradePayOffData = new TradePayOffData(); + tradePayOffData.setPartnerPayId(orderTaxi.getTravelId()); + tradePayOffData.setTotalFee(Double.valueOf(orderTaxi.getOrderMoney() * 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(orderTaxi.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(orderTaxi.getTravelId()); + paymentOrderRequest.setCharge(BigDecimal.valueOf(orderTaxi.getOrderMoney())); + paymentOrderRequest.setPayTime(data.getPayTime()); + paymentOrderRequest.setPaymentSerialNumber(payInfoData.getPayId()); + OrderInfo orderInfo1 = OrderUtil.paymentOrder(paymentOrderRequest); + + //中台修改订单状态 + ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); + request1.setOrderId(orderTaxi.getTravelId()); + request1.setStatus(9); + if (null != orderTaxi.getDriverId()) { + request1.setDriverId(driver.getEmpId().toString()); + request1.setSupplierShopId(company.getEnterCode()); + } + if (2 == orderTaxi.getPromotion()) { + Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId()); + request1.setPromoterId(driver2.getEmpId().toString()); + } + OrderUtil.modifyTravelItinerary(request1); + + String payId = payInfo.getData().getPayId(); + //copy原始订单后生成追缴单 + OrderTaxi orderTaxi1 = new OrderTaxi(); + BeanUtils.copyProperties(orderTaxi, orderTaxi1); + orderTaxi1.setId(null); + orderTaxi1.setRecoveryOrder(1); + + //修改原始订单为支付状态 + orderTaxi.setState(9); + orderTaxi.setPayType(5); + orderTaxi.setPayMoney(orderTaxi.getOrderMoney()); + orderTaxiService.updateById(orderTaxi); + //保存追缴单 + orderTaxiService.insert(orderTaxi1); + //添加三方支付记录 + try { + paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderTaxi.getId(), 2, 3, orderTaxi.getOrderMoney(), payId, 2); + } catch (Exception e) { + throw new RuntimeException(e); + } + + + Driver driver1 = driverService.selectById(orderTaxi1.getDriverId()); + UserInfo userInfo1 = userInfoService.selectById(orderTaxi1.getUserId()); + Company company1 = companyService.selectById(driver1.getCompanyId()); + //调三方订单中心创建行程单 + CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); + request.setOrderNo("TA" + orderTaxi1.getId()); + request.setCustomerId(userInfo1.getOnconUUID()); + request.setDriverId(driver1.getEmpId().toString()); + request.setSupplierShopId(company1.getEnterCode()); + request.setServiceType(1); + String travelItinerary = OrderUtil.createTravelItinerary(request); + orderTaxi1.setTravelId(travelItinerary); + orderTaxi1.setIsCreated(0); + orderTaxiService.updateById(orderTaxi1); + //修改订单状态为待支付 + ModifyTravelItineraryRequest modifyTravelItineraryRequest = new ModifyTravelItineraryRequest(); + modifyTravelItineraryRequest.setOrderId(orderTaxi1.getTravelId()); + modifyTravelItineraryRequest.setStatus(orderTaxi1.getState()); + modifyTravelItineraryRequest.setDriverId(driver1.getEmpId().toString()); + modifyTravelItineraryRequest.setSupplierShopId(company1.getEnterCode()); + if (2 == orderTaxi1.getPromotion()) { + Driver driver2 = driverService.selectById(orderTaxi1.getPromotionDriverId()); + modifyTravelItineraryRequest.setPromoterId(driver2.getEmpId().toString()); + } + OrderUtil.modifyTravelItinerary(modifyTravelItineraryRequest); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } } -- Gitblit v1.7.1