| | |
| | | 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; |
| | |
| | | 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.stream.Collectors; |
| | | |
| | | |
| | |
| | | |
| | | //存储摆渡车无接单后推送标识,实现多个类型的摆渡车订单无人接单后只给前端推送一次 |
| | | public static Map<Integer, Boolean> pushEndMap = new HashMap<>(); |
| | | |
| | | |
| | | @Autowired |
| | | private ICompanyService iCompanyService; |
| | | |
| | | |
| | | /** |
| | | * 计算支付金额 |
| | | * |
| | |
| | | userInfo.setBalance(new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(orderMoney)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); |
| | | OpenCity openCity = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | SysIntegral query1 = sysIntegralMapper.query(openCity.getId()); |
| | | userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 |
| | | if(null != query1){ |
| | | userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 |
| | | } |
| | | |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(uid, "跨城出行订单", orderMoney, 2, 1, 1, 3, orderId); |
| | |
| | | |
| | | @Override |
| | | @Transactional(propagation = Propagation.REQUIRES_NEW) |
| | | public ResultUtil payCrossCityOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type) throws Exception { |
| | | public ResultUtil payCrossCityOrder1(Integer payType, Integer orderId, Integer objectId, Integer objectType, Integer type, String path, String ip) throws Exception { |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | if (orderCrossCity.getState() != 7) { |
| | | return ResultUtil.error("订单已完成支付,不允许重复支付", ""); |
| | |
| | | if (orderMoney == 0) { |
| | | return ResultUtil.error("请使用余额支付"); |
| | | } |
| | | String app = type == 1 ? "APP" : "JSAPI"; |
| | | resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId()); |
| | | // String app = type == 1 ? "APP" : "JSAPI"; |
| | | // resultUtil = payMoneyUtil.weixinpay("完成订单", "", orderId + "_3_" + UUIDUtil.getRandomCode(5), orderMoney.toString(), "/base/wxPayOrderTaxi", app, userInfo.getAppletsOpenId()); |
| | | |
| | | //创建订单并拉起支付(这里不需要创建行程单,由三方处理) |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | if(null == orderCrossCity.getIsCreated() || 0 == orderCrossCity.getIsCreated()){ |
| | | //调用中台创建订单及拉起支付接口 |
| | | TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData(); |
| | | tradeOrderCreateData.setTreatShopId(driver.getEmpId().toString()); |
| | | //追缴单不要分账 |
| | | if(0 == orderCrossCity.getRecoveryOrder()){ |
| | | tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isCompensate\":\"0\",\"isPromote\":\"" + (orderCrossCity.getPromotion() == 2 ? 1 : 0) + "\"}"); |
| | | }else{ |
| | | tradeOrderCreateData.setField1("{\"profitSharing\":\"0\",\"isCompensate\":\"1\",\"isPromote\":\"0\"}"); |
| | | } |
| | | tradeOrderCreateData.setCharge(new BigDecimal(orderMoney)); |
| | | tradeOrderCreateData.setOrderNo("CC" + orderCrossCity.getId()); |
| | | tradeOrderCreateData.setCustomerId(userInfo.getOnconUUID()); |
| | | tradeOrderCreateData.setPartnerPayId(orderCrossCity.getTravelId()); |
| | | tradeOrderCreateData.setTotalFee(Double.valueOf(orderMoney * 100).intValue() + ""); |
| | | tradeOrderCreateData.setOrderDesc("完成订单"); |
| | | tradeOrderCreateData.setRetUrl(path); |
| | | tradeOrderCreateData.setClientIp(ip); |
| | | tradeOrderCreateData.setServiceType(3); |
| | | if(null != orderCrossCity.getPromotionDriverId()){ |
| | | Driver driver1 = driverService.selectById(orderCrossCity.getPromotionDriverId()); |
| | | Company company = companyService.selectById(driver1.getCompanyId()); |
| | | tradeOrderCreateData.setPromoterId(driver1.getEmpId().toString()); |
| | | tradeOrderCreateData.setSupplierShopId(company.getEnterCode()); |
| | | } |
| | | |
| | | List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); |
| | | GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); |
| | | goodsInfoRequest.setSubOpenId(userInfo.getAppletsOpenId()); |
| | | if(0 == orderCrossCity.getRecoveryOrder()){ |
| | | goodsInfoRequest.setProfitSharing("1"); |
| | | |
| | | }else{ |
| | | goodsInfoRequest.setProfitSharing("0"); |
| | | } |
| | | goodsInfo.add(goodsInfoRequest); |
| | | tradeOrderCreateData.setGoodsInfo(goodsInfo); |
| | | TradeOrderCreate tradeOrderCreate = OrderUtil.tradeOrderCreate1(tradeOrderCreateData, orderCrossCity.getRecoveryOrder()); |
| | | PayInfo payInfo = tradeOrderCreate.getPayInfo(); |
| | | if(!"000000".equals(payInfo.getRetCode())){ |
| | | return ResultUtil.error(payInfo.getRetMsg()); |
| | | } |
| | | orderCrossCity.setIsCreated(1); |
| | | orderCrossCity.setTrackId(tradeOrderCreate.getOrderInfo().getOrderId()); |
| | | resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl()); |
| | | }else{ |
| | | //拉起支付 |
| | | TradePayOff1Data tradePayOff1Data = new TradePayOff1Data(); |
| | | tradePayOff1Data.setPartnerPayId(orderCrossCity.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 == orderCrossCity.getRecoveryOrder()){ |
| | | goodsInfoRequest.setProfitSharing("1"); |
| | | }else{ |
| | | goodsInfoRequest.setProfitSharing("0"); |
| | | } |
| | | goodsInfo.add(goodsInfoRequest); |
| | | tradePayOff1Data.setGoodsInfo(goodsInfo); |
| | | PayInfo payInfo = OrderUtil.tradePayOff1(tradePayOff1Data, orderCrossCity.getRecoveryOrder()); |
| | | if(!"000000".equals(payInfo.getRetCode())){ |
| | | return ResultUtil.error(payInfo.getRetMsg()); |
| | | } |
| | | resultUtil = ResultUtil.success(payInfo.getData().getRedirectUrl()); |
| | | } |
| | | |
| | | paymentRecordService.saveData(1, orderCrossCity.getUserId(), 1, orderId, 3, 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); |
| | | OrderCrossCity orderCrossCity1 = this.selectById(orderCrossCity.getId()); |
| | | if (orderCrossCity1.getState() != 7) { |
| | | break; |
| | | } |
| | | GetTravelItineraryListRequest request = new GetTravelItineraryListRequest(); |
| | | request.setCustomerId(userInfo.getOnconUUID()); |
| | | request.setOrderNo("CC" + orderCrossCity1.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 getPaymentInfoDataRequest1 = new GetPaymentInfoDataRequest(); |
| | | getPaymentInfoDataRequest1.setPartnerPayId(orderCrossCity1.getTravelId()); |
| | | GetPaymentInfo getPaymentInfo1 = OrderUtil.paymentInfo(getPaymentInfoDataRequest1); |
| | | payOrderCrossCityCallback(orderCrossCity1.getId(), getPaymentInfo1.getPayId(), 1, null); |
| | | break; |
| | | } |
| | | Thread.sleep(wait); |
| | | num++; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | }finally { |
| | | threadPoolExecutor.shutdown(); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | if (payType == 2) {//支付宝支付 |
| | | if (orderMoney == 0) { |
| | |
| | | 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(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | SysIntegral query1 = sysIntegralMapper.query(openCity.getId()); |
| | | userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 |
| | | if(null != query1){ |
| | | userInfo.setIntegral(userInfo.getIntegral() + (orderMoney.intValue() * query1.getIntegral()));//积分 |
| | | userInfoService.updateById(userInfo); |
| | | } |
| | | |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(uid, "跨城出行订单", orderMoney, 2, 1, 1, 3, orderId); |
| | | userInfoService.updateById(userInfo); |
| | | |
| | | |
| | | orderCrossCity.setState(2);//跨城支付完成后才开始服务 |
| | | orderCrossCity.setPayType(3); |
| | |
| | | orderCrossCity.setPassengers(userInfo.getNickName()); |
| | | orderCrossCity.setPassengersPhone(userInfo.getPhone()); |
| | | orderCrossCity.setPeopleNumber(orderCrossCityWarpper.getPeopleNumber()); |
| | | orderCrossCity.setSeatNumber(orderCrossCityWarpper.getSeatNumber()); |
| | | List<OrderCrossCity> orderCrossCities = this.selectList(new EntityWrapper<OrderCrossCity>().eq("orderNum", orderCrossCity.getOrderNum()).eq("isDelete", 1)); |
| | | orderCrossCity.setSort(orderCrossCities.size() + 1); |
| | | orderCrossCity.setState(7);//待支付 |
| | |
| | | orderCrossCity.setIsDelete(1); |
| | | orderCrossCity.setRemark(orderCrossCityWarpper.getRemark()); |
| | | orderCrossCity.setIsReassign(1); |
| | | if(1 == orderCrossCity.getTravelMode()){ |
| | | orderCrossCity.setSeatNumber(orderCrossCityWarpper.getSeatNumber()); |
| | | }else{ |
| | | orderCrossCity.setSeatNumber(lineShiftDriver.getLaveSeatNumber()); |
| | | } |
| | | // //调用高德创建轨迹 |
| | | // String s = gdFalconUtil.selectTerminal(driver.getPhone()); |
| | | // String track = gdFalconUtil.createTrack(s); |
| | |
| | | |
| | | // 是否推广订单 |
| | | Integer promotion = isPromotion(uid); |
| | | orderCrossCity.setPromotion(promotion); |
| | | if(promotion!=null){ |
| | | orderCrossCity.setPromotion(2); |
| | | Driver driver1 = driverService.selectById(promotion); |
| | | orderCrossCity.setPromotionUser(driver1.getName()); |
| | | orderCrossCity.setPromotionPhone(driver1.getPhone()); |
| | | orderCrossCity.setPromotionDriverId(promotion); |
| | | }else{ |
| | | orderCrossCity.setPromotion(1); |
| | | } |
| | | |
| | | this.insert(orderCrossCity); |
| | | |
| | |
| | | if (orderCrossCity1.getState() == 7 && orderCrossCity1.getPayMoney() == null) { |
| | | orderCrossCity1.setState(10); |
| | | orderCrossCityMapper.updateById(orderCrossCity1); |
| | | |
| | | //中台修改订单状态 |
| | | ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); |
| | | request1.setOrderId(orderCrossCity1.getTravelId()); |
| | | request1.setStatus(orderCrossCity1.getState()); |
| | | if (null != orderCrossCity1.getDriverId()) { |
| | | Driver driver2 = driverService.selectById(orderCrossCity1.getDriverId()); |
| | | Company company = iCompanyService.selectById(driver2.getCompanyId()); |
| | | request1.setDriverId(driver2.getEmpId().toString()); |
| | | request1.setSupplierShopId(company.getEnterCode()); |
| | | } |
| | | if (2 == orderCrossCity1.getPromotion() && null != orderCrossCity1.getPromotionDriverId()) { |
| | | Driver driver2 = driverService.selectById(orderCrossCity1.getPromotionDriverId()); |
| | | request1.setPromoterId(driver2.getEmpId().toString()); |
| | | } |
| | | OrderUtil.modifyTravelItinerary(request1); |
| | | |
| | | //未支付的情况取消订单 |
| | | if(null == orderCrossCity1.getPayType() && ToolUtil.isNotEmpty(orderCrossCity1.getTravelId())){ |
| | | OrderUtil.tradeOrderCancel(orderCrossCity1.getTravelId()); |
| | | } |
| | | |
| | | OrderCancel orderCancel = new OrderCancel(); |
| | | orderCancel.setOrderId(orderCrossCity.getId()); |
| | | orderCancel.setOrderId(orderCrossCity1.getId()); |
| | | orderCancel.setOrderType(3); |
| | | orderCancel.setReason("用户未及时付款,系统自动取消订单"); |
| | | orderCancel.setRemark("用户未及时付款,系统自动取消订单"); |
| | |
| | | orderCancelService.insert(orderCancel); |
| | | |
| | | //修改司机座位 |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity.getTravelMode() == 1 ? "," : "") + orderCrossCity.getSeatNumber()); |
| | | LineShiftDriver lineShiftDriver = lineShiftDriverMapper.selectById(orderCrossCity1.getLineShiftDriverId()); |
| | | lineShiftDriver.setLaveSeat(lineShiftDriver.getLaveSeat() + orderCrossCity1.getPeopleNumber()); |
| | | lineShiftDriver.setLaveSeatNumber(lineShiftDriver.getLaveSeatNumber() + (orderCrossCity1.getTravelMode() == 1 ? "," : "") + orderCrossCity1.getSeatNumber()); |
| | | lineShiftDriverMapper.updateById(lineShiftDriver); |
| | | |
| | | //修改司机为空闲 |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity.getDriverId(), 2, 3, 4, 5, 11); |
| | | List<OrderCrossCity> orderCrossCities = orderCrossCityMapper.queryByDriverId(orderCrossCity1.getDriverId(), 2, 3, 4, 5, 11); |
| | | if (orderCrossCities.size() == 0) { |
| | | Driver driver = driverService.selectById(orderCrossCity.getDriverId()); |
| | | Driver driver = driverService.selectById(orderCrossCity1.getDriverId()); |
| | | driver.setState(2); |
| | | driverService.updateById(driver); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | }; |
| | |
| | | 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(" + 3 + ", bizType) limit 1")); |
| | | TDriverPromotionActivity tDriverPromotionActivity = driverPromotionActivityService.selectOne(new EntityWrapper<TDriverPromotionActivity>().eq("state",1).eq("districtCode", registAreaCode).le("startTime", new Date()).ge("endTime", new Date()).last("AND FIND_IN_SET(" + 3 + ", bizType) limit 1")); |
| | | if(tDriverPromotionActivity!=null){ |
| | | return 2; |
| | | return userInfo.getBindDriverId(); |
| | | } |
| | | } |
| | | return null; |
| | | |
| | | } |
| | | /** |
| | | * 获取订单 |
| | |
| | | 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); |
| | | } |
| | | |
| | | //跨城不需要申诉 |
| | | map.put("appealStatus", 0); |
| | | if(map.get("travelMode")!=null &&map.get("travelMode").toString().equals("2") ){ |
| | | map.put("zwNum", 1); |
| | | }else { |
| | | map.put("zwNum", 2); |
| | | } |
| | | |
| | | Map<String, String> geocode = gdMapGeocodingUtil.geocode(map.get("startLon").toString(), map.get("startLat").toString()); |
| | | map.put("startCity", geocode.get("city")); |
| | | geocode = gdMapGeocodingUtil.geocode(map.get("endLon").toString(), map.get("endLat").toString()); |
| | |
| | | BaseWarpper baseWarpper = new BaseWarpper(); |
| | | if (null == orderCrossCity) { |
| | | return ResultUtil.error("获取数据失败,订单信息有误"); |
| | | } |
| | | if (orderCrossCity.getState() == 5) { |
| | | return ResultUtil.error("订单已开始服务,不能取消订单"); |
| | | } |
| | | if (orderCrossCity.getState() == 6 || orderCrossCity.getState() == 8 || orderCrossCity.getState() == 9) { |
| | | return ResultUtil.error("订单已完成,不能取消订单"); |
| | | } |
| | | if (orderCrossCity.getState() == 10) { |
| | | return ResultUtil.error("订单已被取消,不能重复操作"); |
| | | } |
| | | OpenCity openCity = openCityService.openCity1(orderCrossCity.getStartLon().toString(), orderCrossCity.getStartLat().toString()); |
| | | double amount = 0; |
| | |
| | | return ResultUtil.error("取消订单失败,订单信息有误", ""); |
| | | } |
| | | if (orderCrossCity.getState() != 12) { |
| | | return ResultUtil.error("取消订单失败,不合法的操作", ""); |
| | | return ResultUtil.error("订单已取消,请刷新页面", ""); |
| | | } |
| | | OrderCancel orderCancel = null; |
| | | if (null == cancleId) { |
| | |
| | | return ResultUtil.error("取消订单失败,订单信息有误"); |
| | | } |
| | | if (orderCrossCity.getState() >= 5 && orderCrossCity.getState() != 7 && orderCrossCity.getState() != 11) { |
| | | return ResultUtil.error("取消订单失败,不合法的操作"); |
| | | return ResultUtil.error("订单已取消,请刷新页面"); |
| | | } |
| | | |
| | | //还原座位 |
| | |
| | | } else { |
| | | return ResultUtil.error("请完善后台取消规则设置"); |
| | | } |
| | | |
| | | //中台修改订单状态 |
| | | ModifyTravelItineraryRequest request1 = new ModifyTravelItineraryRequest(); |
| | | request1.setOrderId(orderCrossCity.getTravelId()); |
| | | request1.setStatus(orderCrossCity.getState()); |
| | | if (null != orderCrossCity.getDriverId()) { |
| | | Driver driver2 = driverService.selectById(orderCrossCity.getDriverId()); |
| | | Company company = iCompanyService.selectById(driver2.getCompanyId()); |
| | | request1.setDriverId(driver2.getEmpId().toString()); |
| | | request1.setSupplierShopId(company.getEnterCode()); |
| | | } |
| | | if (2 == orderCrossCity.getPromotion() && null != orderCrossCity.getPromotionDriverId()) { |
| | | Driver driver2 = driverService.selectById(orderCrossCity.getPromotionDriverId()); |
| | | request1.setPromoterId(driver2.getEmpId().toString()); |
| | | } |
| | | OrderUtil.modifyTravelItinerary(request1); |
| | | |
| | | //未支付的情况取消订单 |
| | | if(null == orderCrossCity.getPayType() && ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){ |
| | | OrderUtil.tradeOrderCancel(orderCrossCity.getTravelId()); |
| | | } |
| | | |
| | | UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId()); |
| | | //已支付的情况下进行退款操作 |
| | | if (null != orderCrossCity.getPayType() && null != orderCrossCity.getPayMoney()) { |
| | | // 退款 |
| | |
| | | } |
| | | |
| | | if (orderCrossCity.getPayType() == 3) {//余额支付 |
| | | UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId()); |
| | | userInfo.setBalance(userInfo.getBalance() + orderCrossCity.getPayMoney()); |
| | | userInfoService.updateById(userInfo); |
| | | //添加交易明细 |
| | |
| | | } |
| | | |
| | | if (query.getPayType() == 1) {//微信 |
| | | |
| | | Map<String, String> map = payMoneyUtil.wxRefund(query.getCode(), id + "_3", query.getAmount().toString(), query.getAmount().toString(), "/base/cancleOrderWXPay"); |
| | | if (!"SUCCESS".equals(map.get("return_code"))) { |
| | | return ResultUtil.error(map.get("return_msg")); |
| | | //中台订单退款操作 |
| | | if(ToolUtil.isNotEmpty(orderCrossCity.getTravelId())){ |
| | | TradeOrderRefundRequest request = new TradeOrderRefundRequest(); |
| | | request.setPartnerPayId(orderCrossCity.getTravelId()); |
| | | request.setPayId(query.getCode()); |
| | | request.setRefundTotalFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + ""); |
| | | request.setRemark("跨城订单取消退款"); |
| | | request.setRefundType("RF"); |
| | | |
| | | RefundInfoRequest refundInfo = new RefundInfoRequest(); |
| | | refundInfo.setPayItemId(orderCrossCity.getTravelId()); |
| | | refundInfo.setPayId(query.getCode()); |
| | | refundInfo.setTradeFee(Double.valueOf(orderCrossCity.getPayMoney() * 100).intValue() + ""); |
| | | request.setRefundInfos(new ArrayList<RefundInfoRequest>(){{ |
| | | add(refundInfo); |
| | | }}); |
| | | TradeOrderRefund tradeOrderRefund = OrderUtil.tradeOrderRefund(request); |
| | | //退款通知 |
| | | OrderRefundNoticeRequest request1 = new OrderRefundNoticeRequest(); |
| | | request1.setOrderId(orderCrossCity.getTravelId()); |
| | | request1.setRefundPayNum(tradeOrderRefund.getRefundId()); |
| | | request1.setRefundType("5"); |
| | | request1.setApplyRefundCharge(new BigDecimal(orderCrossCity.getPayMoney())); |
| | | request1.setActualRefundCharge(new BigDecimal(orderCrossCity.getPayMoney())); |
| | | request1.setRefundAccount(userInfo.getOnconUUID()); |
| | | request1.setRemark("跨城订单取消退款"); |
| | | OrderUtil.orderRefundNotice(request1); |
| | | //添加交易明细 |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, id); |
| | | } |
| | | } else if (query.getPayType() == 4) { // 云闪付 |
| | | // TODO 退款 |
| | | UserInfo userInfo = userInfoService.selectById(orderCrossCity.getUserId()); |
| | | userInfo.setBalance(userInfo.getBalance() + orderCrossCity.getPayMoney()); |
| | | userInfoService.updateById(userInfo); |
| | | //添加交易明细 |
| | |
| | | transactionDetailsService.saveData(orderCrossCity.getUserId(), "跨城出行取消退款", query.getAmount(), 1, 1, 1, 3, id); |
| | | } |
| | | } |
| | | |
| | | //添加负的收入明细 |
| | | List<Income> incomes = incomeService.selectList(new EntityWrapper<Income>().eq("type", 2).eq("incomeId", id).eq("orderType", 3)); |
| | | for (Income income : incomes) { |
| | | if (income.getUserType() == 2) {//处理司机的收入 |
| | | Driver driver = driverService.selectById(income.getObjectId()); |
| | | driver.setBalance(driver.getBalance() - income.getMoney()); |
| | | driver.setBusinessMoney(driver.getBusinessMoney() - income.getMoney()); |
| | | driver.setLaveBusinessMoney(driver.getLaveBusinessMoney() - income.getMoney()); |
| | | driverService.updateById(driver); |
| | | } |
| | | Income income1 = new Income(); |
| | | BeanUtils.copyProperties(income, income1); |
| | | income1.setMoney(income.getMoney() * -1); |
| | | income1.setId(null); |
| | | income1.setInsertTime(new Date()); |
| | | incomeService.insert(income1); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | //添加消息 |
| | |
| | | OrderCrossCity orderCrossCity = this.selectById(orderId); |
| | | if(null != orderCrossCity){ |
| | | //计算预计距离和剩余时间 |
| | | String value = (String) redisTemplate.opsForValue().get("dache_DRIVER" + String.valueOf(orderCrossCity.getDriverId())); |
| | | String value = (String) redisTemplate.opsForValue().get("dache:DRIVER" + String.valueOf(orderCrossCity.getDriverId())); |
| | | if (null == value || "".equals(value)) { |
| | | System.err.println("司机没有上传位置信息"); |
| | | |
| | |
| | | if (state != 1) { |
| | | //关闭其他推送线程 |
| | | Set<String> keySet = threadMap.keySet(); |
| | | datas.forEach(e->{ |
| | | threadMap.get(orderId + "_1"); |
| | | |
| | | |
| | | }); |
| | | |
| | | |
| | | |
| | | for (String key : keySet) { |
| | | if (!key.equals(orderId + "_1")) { |
| | | Thread thread1 = threadMap.get(key);//中断线程 |
| | |
| | | for (Map<String, Integer> map : datas) { |
| | | Integer orderType = map.get("orderType"); |
| | | Integer orderId = map.get("orderId"); |
| | | if (orderType == 1 && orderId != orderPrivateCar.getId()) { |
| | | if (orderType == 1 && !orderId.equals(orderPrivateCar.getId())) { |
| | | orderPrivateCarMapper.deleteById(orderId); |
| | | } |
| | | if (orderType == 2) { |
| | |
| | | //所有推送完后的处理 |
| | | Boolean b = pushEndMap.get(orderPrivateCar.getCrossCityOrderId()); |
| | | if (i == querys.size() + 15 && state == 1 && (null != b && !b.booleanValue())) { |
| | | pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1); |
| | | pushUtil.pushEndPush(1, orderPrivateCar.getUserId(), orderPrivateCar.getId(), 1, 1); |
| | | OrderPrivateCarServiceImpl.orderIds.remove(orderPrivateCar.getId()); |
| | | pushEndMap.put(orderPrivateCar.getCrossCityOrderId(), Boolean.TRUE);//推送后添加标识 |
| | | break; |
| | |
| | | if (orderType == 1) { |
| | | orderPrivateCarMapper.deleteById(orderId); |
| | | } |
| | | if (orderType == 2 && orderId != orderTaxi.getId()) { |
| | | if (orderType == 2 && !orderId.equals(orderTaxi.getId())) { |
| | | orderTaxiMapper.deleteById(orderId); |
| | | } |
| | | } |
| | |
| | | if (bo) { |
| | | continue; |
| | | } |
| | | |
| | | |
| | | pushUtil.pushOrderState(2, driver.getId(), orderTaxi.getId(), 2, orderTaxi.getState(), pushOrder.getPushTime()); |
| | | } |
| | | } |
| | |
| | | //所有推送完后的处理 |
| | | Boolean b = pushEndMap.get(orderTaxi.getCrossCityOrderId()); |
| | | if (i == querys.size() + 15 && state == 1 && (null != b && !b.booleanValue())) { |
| | | pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2); |
| | | pushUtil.pushEndPush(1, orderTaxi.getUserId(), orderTaxi.getId(), 2, 1); |
| | | OrderTaxiServiceImpl.orderIds.remove(orderTaxi.getId()); |
| | | pushEndMap.put(orderTaxi.getCrossCityOrderId(), Boolean.TRUE);//推送后添加标识 |
| | | } |