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.*;
|
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 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();
|
}
|
}
|
}
|
}
|