From d98e2b4b6ecc3da47030a8b188944f27f1e40662 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 05 八月 2025 14:29:42 +0800 Subject: [PATCH] 修改bug --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/TaskUtil.java | 369 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 302 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..b908c1c 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,321 @@ package com.stylefeng.guns.modular.system.util; +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 30 MINUTE)")); + for (OrderPrivateCar orderPrivateCar : orderPrivateCars) { + try { + //使用备付金进行支付订单 + 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()); + continue; + } + PayInfoData data = payInfo.getData(); + String status = data.getStatus(); + if ("3".equals(status)) { + log.error("备付金支付失败:{}", payInfo.getRetMsg()); + continue; + } + PayInfoData payInfoData = payInfo.getData(); + PaymentInfo paymentInfo = payInfoData.getPaymentInfos().get(0); + //支付成功,通知三方 + PaymentOrderRequest paymentOrderRequest = new PaymentOrderRequest(); + paymentOrderRequest.setPayItemId(paymentInfo.getPayItemId()); + paymentOrderRequest.setPaymentInfo(payInfoData.getPaymentInfos()); + paymentOrderRequest.setOrderId("PR" + orderPrivateCar.getId()); + paymentOrderRequest.setCharge(BigDecimal.valueOf(orderPrivateCar.getOrderMoney())); + paymentOrderRequest.setPayTime(data.getPayTime()); + paymentOrderRequest.setPaymentSerialNumber(payInfoData.getPayId()); + OrderInfo orderInfo1 = OrderUtil.paymentOrder(paymentOrderRequest); + + + //查询三方订单状态 + Driver driver1 = driverService.selectById(orderPrivateCar.getDriverId()); + Company company = companyService.selectById(driver1.getCompanyId()); + UserInfo userInfo1 = userInfoService.selectById(orderPrivateCar.getUserId()); + GetTravelItineraryListRequest request = new GetTravelItineraryListRequest(); + request.setCustomerId(userInfo1.getOnconUUID()); + request.setOrderNo("PR" + orderPrivateCar.getId()); + request.setDriverId(driver1.getEmpId().toString()); + ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request); + Integer status1 = travelItineraryList.getList().get(0).getStatus(); + if(9 != status1){ + //中台修改订单状态 + ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); + request1.setOrderId(orderPrivateCar.getTravelId()); + request1.setStatus(9); + if (null != orderPrivateCar.getDriverId()) { + request1.setDriverId(driver1.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(8); + orderPrivateCar.setPayType(5); + orderPrivateCar.setPayMoney(orderPrivateCar.getOrderMoney()); + orderPrivateCarService.updateById(orderPrivateCar); + //添加三方支付记录 + paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderPrivateCar.getId(), 1, 3, orderPrivateCar.getOrderMoney(), payId, 2); + + + Driver driver = driverService.selectById(orderPrivateCar1.getDriverId()); + UserInfo userInfo = userInfoService.selectById(orderPrivateCar1.getUserId()); + //调用三方创建订单 + CreateOrderRequest createOrderRequest = new CreateOrderRequest(); + createOrderRequest.setTreatShopId(driver.getEmpId().toString()); + createOrderRequest.setField1("{\"profitSharing\":\"0\",\"isPromote\":\"0\"}"); + createOrderRequest.setCharge(new BigDecimal(orderPrivateCar1.getOrderMoney())); + createOrderRequest.setOrderNo("PR" + orderPrivateCar1.getId()); + createOrderRequest.setCustomerId(userInfo.getOnconUUID()); + OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest); + orderPrivateCar1.setTravelId(orderInfo.getOrderId()); + orderPrivateCar1.setIsCreated(1); + //保存追缴单 + orderPrivateCarService.insert(orderPrivateCar1); + } 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 { + //使用备付金进行支付订单 + 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()); + continue; + } + PayInfoData data = payInfo.getData(); + String status = data.getStatus(); + if ("3".equals(status)) { + log.error("备付金支付失败:{}", payInfo.getRetMsg()); + continue; + } + //查询三方订单状态 + Driver driver1 = driverService.selectById(orderTaxi.getDriverId()); + Company company = companyService.selectById(driver1.getCompanyId()); + UserInfo userInfo1 = userInfoService.selectById(orderTaxi.getUserId()); + GetTravelItineraryListRequest request = new GetTravelItineraryListRequest(); + request.setCustomerId(userInfo1.getOnconUUID()); + request.setOrderNo("TA" + orderTaxi.getId()); + request.setDriverId(driver1.getEmpId().toString()); + ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request); + Integer status1 = travelItineraryList.getList().get(0).getStatus(); + if(8 != status1){ + //中台修改订单状态 + ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); + request1.setOrderId(orderTaxi.getTravelId()); + request1.setStatus(8); + if (null != orderTaxi.getDriverId()) { + request1.setDriverId(driver1.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(8); + orderTaxi.setPayType(5); + orderTaxi.setPayMoney(orderTaxi.getOrderMoney()); + orderTaxiService.updateById(orderTaxi); + //添加三方支付记录 + paymentRecordService.saveData(1, orderTaxi.getUserId(), 1, orderTaxi.getId(), 2, 3, orderTaxi.getOrderMoney(), payId, 2); + + Driver driver = driverService.selectById(orderTaxi1.getDriverId()); + UserInfo userInfo = userInfoService.selectById(orderTaxi1.getUserId()); + //调用三方创建订单 + CreateOrderRequest createOrderRequest = new CreateOrderRequest(); + createOrderRequest.setTreatShopId(driver.getEmpId().toString()); + createOrderRequest.setField1("{\"profitSharing\":\"0\",\"isPromote\":\"0\"}"); + createOrderRequest.setCharge(new BigDecimal(orderTaxi1.getOrderMoney())); + createOrderRequest.setOrderNo("TA" + orderTaxi1.getId()); + createOrderRequest.setCustomerId(userInfo.getOnconUUID()); + OrderInfo orderInfo = OrderUtil.tradeOrderCreate(createOrderRequest); + orderTaxi1.setTravelId(orderInfo.getOrderId()); + orderTaxi1.setIsCreated(1); + //保存追缴单 + orderTaxiService.insert(orderTaxi1); + } catch (Exception e) { + e.printStackTrace(); + } + } + } } -- Gitblit v1.7.1