From c8b503726415980e5fa9a5ffc0e4e751eb7466e9 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 01 八月 2025 11:45:53 +0800 Subject: [PATCH] 新增加三方业务流程代码 --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 226 insertions(+), 14 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..615c797 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,6 +44,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.BigInteger; import java.math.MathContext; import java.math.RoundingMode; import java.text.SimpleDateFormat; @@ -130,7 +132,7 @@ @Autowired private PayMoneyUtil payMoneyUtil; @Autowired - private IOrderLogisticsService orderLogisticsService; + private TAbnormalPayOrderMapper abnormalPayOrderMapper; @Autowired private ITaxiCardPaymentService taxiCardPaymentService; @Autowired @@ -158,6 +160,9 @@ private Lock lock = new ReentrantLock(); @Autowired private AppOrderController appOrderController; + + @Autowired + private TDriverPromotionActivityService driverPromotionActivityService; /** * 专车下单操作 @@ -594,6 +599,18 @@ orderPrivateCar.setTotalPeopleNum(peopleNum); orderPrivateCar.setIsReassign(1); orderPrivateCar.setIsDelete(1); + + // 是否推广订单 + 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); + } + + this.insert(orderPrivateCar); //判断独享,一口价,拼车 @@ -729,7 +746,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).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + return userInfo.getBindDriverId(); + } + } + return null; + + } + + /** * 下单后继续等待 * @@ -940,17 +972,71 @@ 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()); + } + OrderUtil.modifyTravelItinerary(request); } } else { OpenCity openCity = openCityService.openCity1(orderPrivateCar.getStartLon().toString(), orderPrivateCar.getStartLat().toString()); @@ -967,6 +1053,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 @@ -1084,6 +1188,24 @@ orderPrivateCar.setTelX(""); 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); @@ -1877,8 +1999,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 +2018,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,8 +2175,57 @@ 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()); + tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"" + (orderPrivateCar.getPromotion() == 2 ? 1 : 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()); + 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("PR" + orderPrivateCar.getId()); + 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()); + 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);//添加预支付数据 } if (payType == 2) {//支付宝支付 @@ -2069,12 +2239,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()); @@ -2246,6 +2411,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); @@ -2715,4 +2898,33 @@ 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()){ + // 开始绑定的 后面到期也结算 + if(orderPrivateCar.getPromotionDriverId()!=null ){ + String registAreaCode = userInfo.getRegistAreaCode(); + TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("districtCode", registAreaCode).ge("startTime", new Date()).lt("endTime", new Date()).last("AND FIND_IN_SET(" + 1 + ", bizType) limit 1")); + if(tDriverPromotionActivity!=null){ + Double payMoney = orderPrivateCar.getPayMoney(); + BigDecimal bigDecimal = tDriverPromotionActivity.getCommissionRatio().divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).multiply(new BigDecimal(payMoney)).setScale(2, RoundingMode.HALF_UP); + orderPrivateCar.setPromotionDriverId(userInfo.getBindDriverId()); + orderPrivateCar.setPromotionMoney(bigDecimal); + 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); + } + } + } } -- Gitblit v1.7.1