From b50c961c49851d140d77d549db34a9f6400dadd4 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 19 八月 2025 19:03:10 +0800
Subject: [PATCH] 跨城推广
---
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 466 +++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 396 insertions(+), 70 deletions(-)
diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 85a8d0c..b0806d6 100644
--- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -11,7 +11,6 @@
import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity;
import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService;
import com.stylefeng.guns.modular.crossCity.server.impl.OrderCrossCityServiceImpl;
-import com.stylefeng.guns.modular.smallLogistics.server.IOrderLogisticsService;
import com.stylefeng.guns.modular.specialTrain.dao.OrderPrivateCarMapper;
import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar;
import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService;
@@ -20,6 +19,8 @@
import com.stylefeng.guns.modular.system.model.vo.UnPayOrderVO;
import com.stylefeng.guns.modular.system.service.*;
import com.stylefeng.guns.modular.system.util.*;
+import com.stylefeng.guns.modular.system.util.qianyuntong.OrderUtil;
+import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
import com.stylefeng.guns.modular.system.warpper.*;
import com.stylefeng.guns.modular.taxi.dao.OrderTaxiMapper;
import com.stylefeng.guns.modular.taxi.model.OrderTaxi;
@@ -43,10 +44,13 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.BigInteger;
import java.math.MathContext;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@@ -130,7 +134,7 @@
@Autowired
private PayMoneyUtil payMoneyUtil;
@Autowired
- private IOrderLogisticsService orderLogisticsService;
+ private TAbnormalPayOrderMapper abnormalPayOrderMapper;
@Autowired
private ITaxiCardPaymentService taxiCardPaymentService;
@Autowired
@@ -158,6 +162,9 @@
private Lock lock = new ReentrantLock();
@Autowired
private AppOrderController appOrderController;
+
+ @Autowired
+ private TDriverPromotionActivityService driverPromotionActivityService;
/**
* 专车下单操作
@@ -391,7 +398,7 @@
JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
//判断时间
if (travelTime.getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && travelTime.getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
- String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(order.getDriverId()));
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(order.getDriverId()));
// Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString());
// Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString());
@@ -578,8 +585,9 @@
Map<String, String> distanceMap = gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), 1);
orderPrivateCar.setEstimateMileage(Double.valueOf(distanceMap.get("distance")));
orderPrivateCar.setEstimateTime(Double.valueOf(distanceMap.get("duration")) / 60);
+ UserInfo userInfo = userInfoService.selectById(uid);
if (instead == 0 || ToolUtil.isEmpty(orderPrivateCar.getPassengers())) {
- UserInfo userInfo = userInfoService.selectById(uid);
+
if (ToolUtil.isEmpty(userInfo.getPhone())) {
return ResultUtil.error("请先绑定手机号码");
}
@@ -594,10 +602,22 @@
orderPrivateCar.setTotalPeopleNum(peopleNum);
orderPrivateCar.setIsReassign(1);
orderPrivateCar.setIsDelete(1);
- this.insert(orderPrivateCar);
-
+
+ // 是否推广订单
+ Integer promotion = isPromotion(uid);
+ if(promotion!=null){
+ orderPrivateCar.setPromotion(2);
+ Driver driver = driverService.selectById(promotion);
+ orderPrivateCar.setPromotionUser(driver.getName());
+ orderPrivateCar.setPromotionPhone(driver.getPhone());
+ orderPrivateCar.setPromotionDriverId(promotion);
+ }
+
//判断独享,一口价,拼车
JSONArray jsonArray = JSON.parseArray(serverCarModel);
+ this.insert(orderPrivateCar);
+
+
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject1 = jsonArray.getJSONObject(i);
Integer serverCarModelId = jsonObject1.getInteger("serverCarModelId");
@@ -648,7 +668,7 @@
JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
//判断时间
if (travelTime.getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && travelTime.getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
- String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(order.getDriverId()));
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(order.getDriverId()));
// Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString());
// Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString());
@@ -682,7 +702,32 @@
orderPrivateCar.setIsReassign(1);
orderPrivateCar.setIsDelete(1);
orderPrivateCar.setPid(orderPrivateCar1.getPid() == null ? orderPrivateCar1.getId() : orderPrivateCar1.getPid());
+
+ Integer promotion1 = isPromotion(orderPrivateCar.getUserId());
+ if(promotion1!=null){
+ orderPrivateCar.setPromotion(2);
+ Driver driver1 = driverService.selectById(promotion);
+ orderPrivateCar.setPromotionUser(driver1.getName());
+ orderPrivateCar.setPromotionPhone(driver1.getPhone());
+ orderPrivateCar.setPromotionDriverId(promotion1);
+ }
+
+ Company company = companyService.selectById(driver.getCompanyId());
+ //调三方订单中心创建行程单
+ CreateTravelItineraryRequest request = new CreateTravelItineraryRequest();
+ request.setOrderNo("PR" + orderPrivateCar.getId());
+ request.setCustomerId(userInfo.getOnconUUID());
+ request.setDriverId(driver.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ if(orderPrivateCar.getPromotion() !=null && 2 == orderPrivateCar.getPromotion()){
+ Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request.setPromoterId(driver1.getEmpId().toString());
+ }
+ request.setServiceType(2);
+ String travelItinerary = OrderUtil.createTravelItinerary(request);
+ orderPrivateCar.setTravelId(travelItinerary);
this.insertOrUpdate(orderPrivateCar);
+
//修改总订单人数
OrderPrivateCar orderPrivateCar2 = new OrderPrivateCar();
orderPrivateCar2.setSpellSuccess(1);
@@ -729,7 +774,22 @@
}
return ResultUtil.success(baseWarpper);
}
-
+
+
+ private Integer isPromotion(Integer userId){
+ UserInfo userInfo = userInfoService.selectById(userId);
+ if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
+ String registAreaCode = userInfo.getRegistAreaCode();
+ TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).eq("state",1).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
+ if(tDriverPromotionActivity!=null){
+ return userInfo.getBindDriverId();
+ }
+ }
+ return null;
+
+ }
+
+
/**
* 下单后继续等待
*
@@ -809,7 +869,7 @@
JSONObject jsonObject = JSONObject.parseObject(spellOrderRule.getContent());
//判断时间
if (orderPrivateCar.getTravelTime().getTime() >= order.getTravelTime().getTime() - jsonObject.getInteger("num5") * 60000L && orderPrivateCar.getTravelTime().getTime() <= order.getTravelTime().getTime() + jsonObject.getInteger("num6") * 60000L) {
- String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(order.getDriverId()));
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(order.getDriverId()));
// Double dis1 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat(), value, 1).get("distance").toString());
// Double dis2 = Double.valueOf(gdMapElectricFenceUtil.getDistance(orderPrivateCar.getEndLon() + "," + orderPrivateCar.getEndLat(), order.getEndLon() + "," + order.getEndLat(), 1).get("distance").toString());
// TODO: 2023/11/4 已改成计算直线距离
@@ -940,17 +1000,73 @@
orderCancelService.saveData(orderPrivateCar1.getId(), 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
orderPrivateCar1.setState(10);
this.updateById(orderPrivateCar1);
+
+ Driver driver1 = null;
+ Company company = null;
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderPrivateCar1.getTravelId());
+ request.setStatus(orderPrivateCar1.getState());
+ if (null != orderPrivateCar1.getDriverId()) {
+ driver1 = driverService.selectById(orderPrivateCar1.getDriverId());
+ company = companyService.selectById(driver1.getCompanyId());
+ request.setDriverId(driver1.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderPrivateCar1.getPromotion()) {
+ Driver driver2 = driverService.selectById(orderPrivateCar1.getPromotionDriverId());
+ request.setPromoterId(driver2.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(request);
}
List<OrderTaxi> list1 = orderTaxiService.selectList(new EntityWrapper<OrderTaxi>().eq("type", 2).eq("crossCityOrderId", orderPrivateCar.getCrossCityOrderId()).eq("place", orderPrivateCar.getPlace()));
for (OrderTaxi orderTaxi : list1) {
orderCancelService.saveData(orderTaxi.getId(), 2, "无司机接单", "无司机接单", null, null, 2, 1, uid);
orderTaxi.setState(10);
orderTaxiService.updateById(orderTaxi);
+
+ Driver driver1 = null;
+ Company company = null;
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderTaxi.getTravelId());
+ request.setStatus(orderTaxi.getState());
+ if (null != orderTaxi.getDriverId()) {
+ driver1 = driverService.selectById(orderTaxi.getDriverId());
+ company = companyService.selectById(driver1.getCompanyId());
+ request.setDriverId(driver1.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderTaxi.getPromotion()) {
+ Driver driver2 = driverService.selectById(orderTaxi.getPromotionDriverId());
+ request.setPromoterId(driver2.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(request);
}
} else {
integer = orderCancelService.saveData(id, 1, "无司机接单", "无司机接单", null, null, 2, 1, uid);
orderPrivateCar.setState(10);
this.updateById(orderPrivateCar);
+
+ Driver driver1 = null;
+ Company company = null;
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderPrivateCar.getTravelId());
+ request.setStatus(orderPrivateCar.getState());
+ if (null != orderPrivateCar.getDriverId()) {
+ driver1 = driverService.selectById(orderPrivateCar.getDriverId());
+ company = companyService.selectById(driver1.getCompanyId());
+ request.setDriverId(driver1.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderPrivateCar.getPromotion()) {
+ Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request.setPromoterId(driver2.getEmpId().toString());
+ }
+ if(orderPrivateCar.getTravelId()!=null){
+ OrderUtil.modifyTravelItinerary(request);
+ }
}
} else {
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -967,6 +1083,24 @@
this.updateById(orderPrivateCar);
}
this.deleteTask(id);//删除定时任务
+
+ Driver driver1 = null;
+ Company company = null;
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderPrivateCar.getTravelId());
+ request.setStatus(orderPrivateCar.getState());
+ if (null != orderPrivateCar.getDriverId()) {
+ driver1 = driverService.selectById(orderPrivateCar.getDriverId());
+ company = companyService.selectById(driver1.getCompanyId());
+ request.setDriverId(driver1.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderPrivateCar.getPromotion()) {
+ Driver driver2 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request.setPromoterId(driver2.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(request);
new Thread(new Runnable() {
@Override
@@ -1085,6 +1219,24 @@
orderPrivateCar.setBindId("");
this.updateById(orderPrivateCar);
+ Driver driver = null;
+ Company company = null;
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderPrivateCar.getTravelId());
+ request.setStatus(orderPrivateCar.getState());
+ if (null != orderPrivateCar.getDriverId()) {
+ driver = driverService.selectById(orderPrivateCar.getDriverId());
+ company = companyService.selectById(driver.getCompanyId());
+ request.setDriverId(driver.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderPrivateCar.getPromotion()) {
+ Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request.setPromoterId(driver1.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(request);
+
orderCancel.setState(2);
orderCancel.setPayType(3);
orderCancelService.updateById(orderCancel);
@@ -1127,14 +1279,10 @@
if(Integer.valueOf(String.valueOf(map.get("state"))) == 11){
map.put("state", map.get("oldState"));
}
- if(Integer.valueOf(String.valueOf(map.get("state"))) ==7 && (map.get("responsibilityType")==null || Integer.valueOf(String.valueOf(map.get("responsibilityType")))<4)){
- map.put("appealButton", 1);
- }
if(map.get("abnormalIntro")!=null){
map.put("appealStatus", 1);
}
-
-
+
if(Integer.valueOf(String.valueOf(map.get("state"))) != 8 && Integer.valueOf(String.valueOf(map.get("state"))) != 9){
map.put("redPacketMoney", null);
map.put("couponMoney", null);
@@ -1159,7 +1307,7 @@
return orderTaxiService.queryOrderServer(orderId, uid);
}
//计算预计距离和剩余时间
- String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(orderPrivateCar.getDriverId()));
+ String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(orderPrivateCar.getDriverId()));
if(null == value || "".equals(value)){
System.err.println("司机没有上传位置信息");
@@ -1877,8 +2025,7 @@
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
- public ResultUtil payPrivateCarOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type) throws Exception {
-
+ public ResultUtil payPrivateCarOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type, String path, String ip) throws Exception {
OrderPrivateCar orderPrivateCar = this.selectById(orderId);
if (orderPrivateCar.getState() == 8 || orderPrivateCar.getState() == 9) {
return ResultUtil.error("订单已完成支付,不允许重复支付", new ArrayList<>());
@@ -1897,7 +2044,7 @@
UserCouponRecord userCouponRecord = null;
if (null != objectId && objectType == 1) {
userCouponRecord = userCouponRecordService.selectById(objectId);
- if (userCouponRecord.getCompanyId() != orderPrivateCar.getCompanyId()) {
+ if (userCouponRecord.getCompanyId().compareTo(orderPrivateCar.getCompanyId()) != 0) {
return ResultUtil.error("优惠券不能用于此订单", new ArrayList<>());
}
if (userCouponRecord.getState() == 2) {
@@ -2054,9 +2201,110 @@
if (orderMoney == 0) {
return ResultUtil.error("请使用余额支付");
}
- String app = type == 1 ? "APP" : "JSAPI";
- resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
+// String app = type == 1 ? "APP" : "JSAPI";
+// resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_1_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId());
+
+ Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
+ if(null == orderPrivateCar.getIsCreated() || 0 == orderPrivateCar.getIsCreated()){
+ //调用中台创建订单及拉起支付接口
+ TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData();
+ tradeOrderCreateData.setTreatShopId(driver.getEmpId().toString());
+ //追缴单不要分账
+ if(0 == orderPrivateCar.getRecoveryOrder()){
+ tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderPrivateCar.getPromotion() == 2 ? 1 : 0) + "\"}");
+ }else{
+ tradeOrderCreateData.setField1("{\"profitSharing\":\"0\",\"isPromote\":\"0\"}");
+ }
+ tradeOrderCreateData.setCharge(new BigDecimal(orderMoney));
+ tradeOrderCreateData.setOrderId(orderPrivateCar.getTravelId());
+ tradeOrderCreateData.setOrderNo("PR" + orderPrivateCar.getId());
+ tradeOrderCreateData.setCustomerId(userInfo.getOnconUUID());
+ tradeOrderCreateData.setPartnerPayId(orderPrivateCar.getTravelId());
+ tradeOrderCreateData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
+ tradeOrderCreateData.setOrderDesc("完成订单");
+ tradeOrderCreateData.setRetUrl(path);
+ tradeOrderCreateData.setClientIp(ip);
+
+ List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
+ GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
+ goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
+ if(0 == orderPrivateCar.getRecoveryOrder()){
+ goodsInfoRequest.setProfitSharing("1");
+ }else{
+ goodsInfoRequest.setProfitSharing("0");
+ }
+ goodsInfo.add(goodsInfoRequest);
+ tradeOrderCreateData.setGoodsInfo(goodsInfo);
+ TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData);
+ PayInfo payInfo = tradeOrderCreate.getPayInfo();
+ if(!"000000".equals(payInfo.getRetCode())){
+ return ResultUtil.error(payInfo.getRetMsg());
+ }
+ orderPrivateCar.setIsCreated(1);
+ resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl());
+ }else{
+ //拉起支付
+ TradePayOff1Data tradePayOff1Data = new TradePayOff1Data();
+ tradePayOff1Data.setPartnerPayId(orderPrivateCar.getTravelId());
+ tradePayOff1Data.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + "");
+ tradePayOff1Data.setRetUrl(path);
+ tradePayOff1Data.setClientIp(ip);
+ tradePayOff1Data.setOrderDesc("完成订单");
+ List<GoodsInfoRequest> goodsInfo = new ArrayList<>();
+ GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest();
+ goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId());
+ if(0 == orderPrivateCar.getRecoveryOrder()){
+ goodsInfoRequest.setProfitSharing("1");
+ }else{
+ goodsInfoRequest.setProfitSharing("0");
+ }
+ goodsInfo.add(goodsInfoRequest);
+ tradePayOff1Data.setGoodsInfo(goodsInfo);
+ PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data);
+ if(!"000000".equals(payInfo.getRetCode())){
+ return ResultUtil.error(payInfo.getRetMsg());
+ }
+ resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl());
+ }
paymentRecordService.saveData(1, orderPrivateCar.getUserId(), 1, orderId, 1, 1, orderMoney, "", 1);//添加预支付数据
+
+ //创建定时任务查询订单支付状态
+ ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
+ threadPoolExecutor.execute(()->{
+ try {
+ int num = 1;
+ int wait = 0;
+ while (num <= 13) {
+ int min = 5000;
+ wait += (min * num);
+ OrderPrivateCar orderPrivateCar1 = this.selectById(orderPrivateCar.getId());
+ if (orderPrivateCar1.getState() != 7) {
+ break;
+ }
+ GetTravelItineraryListRequest request = new GetTravelItineraryListRequest();
+ request.setCustomerId(userInfo.getOnconUUID());
+ request.setOrderNo("PR" + orderPrivateCar1.getId());
+ request.setDriverId(driver.getEmpId().toString());
+ ListPage<List<TravelItinerary>> travelItineraryList = OrderUtil.getTravelItineraryList(request);
+ TravelItinerary travelItinerary = travelItineraryList.getList().get(0);
+ if(travelItinerary.getStatus() != 7 || travelItinerary.getOrderStatus() == 11){
+ GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest();
+ getPaymentInfoDataRequest.setPartnerPayId(orderPrivateCar1.getTravelId());
+ GetPaymentInfo getPaymentInfo = OrderUtil.paymentInfo(getPaymentInfoDataRequest);
+ payOrderPrivateCarCallback(orderPrivateCar1.getId(), getPaymentInfo.getPayId(), 1);
+ break;
+ }
+ Thread.sleep(wait);
+ num++;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }finally {
+ threadPoolExecutor.shutdown();
+ }
+
+ });
+
}
if (payType == 2) {//支付宝支付
if (orderMoney == 0) {
@@ -2069,12 +2317,7 @@
if (userInfo.getBalance() == null || userInfo.getBalance() < orderMoney) {
return ResultUtil.error("余额不足,无法完成支付");
}
-// if(orderMoney > 0){
-// resultUtil= appOrderController.moneyPay(orderId,userInfo.getId(),orderMoney);
-// if(resultUtil.getCode()==500){
-// return ResultUtil.error("电子余额不足,无法完成支付");
-// }
-// }
+
userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue());
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
@@ -2110,7 +2353,12 @@
//添加收入
Map<String, Object> map = incomeService.saveIncome(orderPrivateCar.getId(), 1, orderPrivateCar.getOrderMoney());
orderPrivateCar.setSplitAllocation(JSON.toJSONString(map));
-
+
+
+ this.updateAllColumnById(orderPrivateCar);
+ promotion(orderPrivateCar.getId());
+
+
// TODO: 2020/5/24 这里需要给司机和用户推送订单状态
new Thread(new Runnable() {
@Override
@@ -2138,8 +2386,12 @@
resultUtil = appOrderController.placeAnOrder(new BigDecimal(orderMoney), 4, orderId, 6, integer);
}
-
- this.updateAllColumnById(orderPrivateCar);
+
+ if(payType != 3){
+ this.updateAllColumnById(orderPrivateCar);
+ }
+
+
return resultUtil;
}
@@ -2246,6 +2498,24 @@
orderPrivateCar.setBindId("");
orderPrivateCar.setTelX("");
this.updateById(orderPrivateCar);
+
+ Driver driver = null;
+ Company company = null;
+ //中台修改订单状态
+ ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest();
+ request.setOrderId(orderPrivateCar.getTravelId());
+ request.setStatus(orderPrivateCar.getState());
+ if (null != orderPrivateCar.getDriverId()) {
+ driver = driverService.selectById(orderPrivateCar.getDriverId());
+ company = companyService.selectById(driver.getCompanyId());
+ request.setDriverId(driver.getEmpId().toString());
+ request.setSupplierShopId(company.getEnterCode());
+ }
+ if (2 == orderPrivateCar.getPromotion()) {
+ Driver driver1 = driverService.selectById(orderPrivateCar.getPromotionDriverId());
+ request.setPromoterId(driver1.getEmpId().toString());
+ }
+ OrderUtil.modifyTravelItinerary(request);
query.setState(2);
query.setCode(order_id);
@@ -2403,7 +2673,7 @@
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
List<PushOrder> querys = pushOrderService.querys(null, 2, openCity.getId());//获取需要推送的次数
int time = 0;
- for (int i = 1; i <= querys.size() + 5; i++) {
+ for (int i = 1; i <= querys.size() + 15; i++) {
int finalI = i;
PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
time += pushOrder.getPushTime() * 1000;
@@ -2496,7 +2766,7 @@
paymentRecordService.updateById(query);
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
SysIntegral query1 = sysIntegralMapper.query(openCity.getId());
- System.out.println("query1:" + query1);
+// System.out.println("query1:" + query1);
userInfo.setIntegral(userInfo.getIntegral() + (query.getAmount().intValue() * query1.getIntegral()));//积分
//添加交易明细
@@ -2567,7 +2837,7 @@
OpenCity openCity = openCityService.openCity1(startLon.toString(), startLat.toString());
List<PushOrder> querys = pushOrderService.querys(null, 1, openCity.getId());//获取需要推送的次数
//整轮派单结束,若无司机接单,系统自动增加派单5轮,若增加5轮后任无司机接单,则系统结束派单,乘客端显示无司机接单、是否再次打车
- for (int i = 1; i <= querys.size() + 5; i++) {
+ for (int i = 1; i <= querys.size() + 15; i++) {
OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id);
if (null == orderPrivateCar || orderPrivateCar.getState() > 1) {
break;
@@ -2575,45 +2845,42 @@
int finalI = i;
PushOrder pushOrder = querys.stream().filter(s -> s.getType() == (finalI <= 3 ? finalI : 3)).findFirst().orElse(null);
System.out.println("pushOrder:" + pushOrder);
- int i2 = pushOrder.getPushTime() / 10;
- if (i2 == 0) {
- i2 = 1;
+ if (orderPrivateCar.getState() > 1) {
+ break;
}
- for (int i1 = 0; i1 < i2; i1++) {
- if (orderPrivateCar.getState() > 1) {
- break;
- }
- //获取空闲司机
- List<Driver> list = driverService.queryIdleDriver(orderType, serverCarModelId, startLon, startLat, pushOrder.getPushDistance(), null);//所有附近空闲司机
- if (list.size() > 0) {
- double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
- int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
- lastIndex = lastIndex == 0 ? list.size() : lastIndex;
- list = list.subList(0, lastIndex);//获取空闲司机中占比数据
- for (Driver driver : list) {//开始进行推送
- boolean bo = false;
- for (Integer integer : integers) {
- if (integer.compareTo(driver.getId()) == 0) {
- bo = true;
- break;
- }
+ //获取空闲司机
+ List<Driver> list = driverService.queryIdleDriver(orderType, serverCarModelId, startLon, startLat, pushOrder.getPushDistance(), null);//所有附近空闲司机
+ if (list.size() > 0) {
+ double driverProportion = pushOrder.getDriverProportion() / 100;//推送占比计算成小数
+ int lastIndex = Double.valueOf(list.size() * driverProportion).intValue();//计算占比转成整数(下标截取)
+ lastIndex = lastIndex == 0 ? list.size() : lastIndex;
+ list = list.subList(0, lastIndex);//获取空闲司机中占比数据
+ for (Driver driver : list) {//开始进行推送
+ boolean bo = false;
+ for (Integer integer : integers) {
+ if (integer.compareTo(driver.getId()) == 0) {
+ bo = true;
+ break;
}
- if (bo) {
- continue;
- }
- pushUtil.pushOrderState(2, driver.getId(), id, 1, 1, pushOrder.getPushTime());
}
+ if (bo) {
+ continue;
+ }
+ pushUtil.pushOrderState(2, driver.getId(), id, 1, 1, pushOrder.getPushTime());
}
- Thread.sleep(10000);//设置等待时间
- Integer state = orderPrivateCarMapper.selectById(orderPrivateCar.getId()).getState();
- if (state > 1) {
- orderIds.remove(orderPrivateCar.getId());
- break;
- }
- if (i == querys.size() + 5) {
- pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
- orderIds.remove(orderPrivateCar.getId());
- }
+ }
+ Thread.sleep(pushOrder.getPushTime() * 1000);//设置等待时间
+ OrderPrivateCar orderPrivateCar1 = orderPrivateCarMapper.selectById(orderPrivateCar.getId());
+ Integer state =orderPrivateCar1.getState();
+ if (state > 1) {
+ orderIds.remove(orderPrivateCar.getId());
+ break;
+ }
+ if (i == querys.size() + 15) {
+ orderPrivateCar1.setState(10);
+ orderPrivateCarMapper.updateById(orderPrivateCar1);
+ pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
+ orderIds.remove(orderPrivateCar.getId());
}
}
} catch (Exception e) {
@@ -2644,7 +2911,7 @@
}
OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString());
List<PushOrder> querys = pushOrderService.querys(null, 1, openCity.getId());//获取需要推送的次数
- for (int i = 1; i <= querys.size() + 5; i++) {
+ for (int i = 1; i <= querys.size() + 15; i++) {
OrderPrivateCar orderPrivateCar = orderPrivateCarMapper.selectById(id);
if (null == orderPrivateCar || orderPrivateCar.getState() > 1) {
break;
@@ -2687,7 +2954,7 @@
orderIds.remove(orderPrivateCar.getId());
return;
}
- if (i == querys.size() + 5 && state == 1) {
+ if (i == querys.size() + 15 && state == 1) {
pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1);
orderIds.remove(orderPrivateCar.getId());
}
@@ -2711,8 +2978,67 @@
}
orderPrivateCar.setAbnormalIntro(abnormalIntro);
orderPrivateCar.setAbnormalImg(abnormalImg);
- orderPrivateCar.setAbnormal(1);
+ orderPrivateCar.setAbnormal(2);
this.baseMapper.updateById(orderPrivateCar);
}
+
+ @Override
+ public void promotion(Integer orderId) {
+ OrderPrivateCar orderPrivateCar = this.baseMapper.selectById(orderId);
+ UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId());
+// if(userInfo.getBindDriverId()!=null && userInfo.getBindExpireDate().getTime()<=System.currentTimeMillis()){
+ // 开始绑定的 后面到期也结算
+ System.out.println("eeeee+"+orderPrivateCar.getPromotionDriverId());
+ if(orderPrivateCar.getPromotionDriverId()!=null ){
+ String registAreaCode = userInfo.getRegistAreaCode();
+ TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1"));
+ System.out.println("ddddd"+tDriverPromotionActivity);
+ if(tDriverPromotionActivity!=null){
+ Double payMoney = orderPrivateCar.getPayMoney();
+ System.out.println(payMoney);
+ BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP);
+ System.out.println(bigDecimal);
+ orderPrivateCar.setPromotionDriverId(userInfo.getBindDriverId());
+ orderPrivateCar.setPromotionMoney(bigDecimal);
+ orderPrivateCar.setPromotionActivityId(tDriverPromotionActivity.getId());
+ orderPrivateCar.setSuccessTime(new Date());
+ this.baseMapper.updateById(orderPrivateCar);
+ }
+ }
+
+ // 是否异常订单
+ if (orderPrivateCar.getResponsibilityType() !=null && orderPrivateCar.getResponsibilityType() >2) {
+ TAbnormalPayOrder tAbnormalPayOrder = abnormalPayOrderMapper.selectList(new EntityWrapper<TAbnormalPayOrder>().eq("type", 1).eq("orderNum", orderPrivateCar.getOrderNum())).stream().findFirst().orElse(null);
+ if (tAbnormalPayOrder != null) {
+ tAbnormalPayOrder.setPayStatus(2);
+ tAbnormalPayOrder.setPayTime(new Date());
+ abnormalPayOrderMapper.updateById(tAbnormalPayOrder);
+ }
+ }
+ }
+
+ @Override
+ public List<Map<String, Object>> queryMyTripList(Integer uid, Integer pageNum, Integer size) throws Exception {
+ pageNum = (pageNum - 1) * size;
+ List<Map<String, Object>> maps = orderPrivateCarMapper.queryMyTripList(uid, pageNum, size);
+ for (Map<String, Object> map : maps) {
+ if (Integer.valueOf(String.valueOf(map.get("state"))) == 11) {
+ map.put("state", map.get("oldState"));
+ }
+ }
+ return maps;
+ }
+
+ @Override
+ public List<Map<String, Object>> queryMyTripListAll(Integer uid) throws Exception {
+
+ List<Map<String, Object>> maps = orderPrivateCarMapper.queryMyTripListAll(uid);
+ for (Map<String, Object> map : maps) {
+ if (Integer.valueOf(String.valueOf(map.get("state"))) == 11) {
+ map.put("state", map.get("oldState"));
+ }
+ }
+ return maps;
+ }
}
--
Gitblit v1.7.1