ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TSysPaymentModeController.java
@@ -30,7 +30,7 @@ public Object setUp(Integer privateType, Integer taxiType) { TSysPaymentMode paymentMode = sysPaymentModeService.getPaymentMode(); paymentMode.setPrivateType(privateType); paymentMode.setTaxiType(taxiType); paymentMode.setTaxiType(2); sysPaymentModeService.updatePaymentMode(paymentMode); return SUCCESS_TIP; } ManagementYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TSysPaymentModeServiceImpl.java
@@ -16,8 +16,11 @@ if (paymentMode == null) { paymentMode = new TSysPaymentMode(); paymentMode.setPrivateType(1); paymentMode.setTaxiType(1); paymentMode.setTaxiType(2); insert(paymentMode); } else if (paymentMode.getTaxiType() == null || paymentMode.getTaxiType() != 2) { paymentMode.setTaxiType(2); updateById(paymentMode); } return paymentMode; } ManagementYKDTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tOpenCity/tSysPaymentMode.html
@@ -66,19 +66,12 @@ <label class="col-sm-2 control-label">出租车:</label> <div class="col-sm-10"> <div class="radio radio-danger"> <input type="radio" name="taxiType" id="taxiType1" value="1" ${isNotEmpty(paymentMode) && 1 == paymentMode.taxiType ? 'checked=checked' : 'checked=checked'}> <label for="taxiType1"> 预付模式 </label> </div> <div class="radio radio-danger"> <input type="radio" name="taxiType" id="taxiType2" value="2" ${isNotEmpty(paymentMode) && 2 == paymentMode.taxiType ? 'checked=checked' : ''}> <input type="radio" name="taxiType" id="taxiType2" value="2" checked="checked" disabled="disabled"> <label for="taxiType2"> 后付模式 </label> </div> <input type="hidden" name="taxiTypeLocked" id="taxiTypeLocked" value="2"/> </div> </div> <div class="row btn-group-m-t"> @@ -97,7 +90,7 @@ <script> function setUp() { var privateType = $ ("input[name='privateType']:checked").val(); var taxiType = $ ("input[name='taxiType']:checked").val(); var taxiType = $("#taxiTypeLocked").val(); var ajax = new $ax(Feng.ctxPath + "/tSysPaymentMode/setUp", function(data){ Feng.success("操作成功!"); UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -1135,25 +1135,8 @@ if (orderPrivateCar.getState() >= 5 && orderPrivateCar.getState() != 11 && orderPrivateCar.getCancelType() ==2) { return ResultUtil.error("订单已取消,请刷新页面"); } if (!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isNotEmpty(orderPrivateCar.getPrepaySecondPayNo())) { ResultUtil refundResult = handlePrivateCarPrepayCancelRefund(orderPrivateCar, reason, remark, uid); if (refundResult != null) { if (!ResultUtil.SUCCESS.equals(refundResult.getCode())) { return refundResult; } Map<String, Object> map = new HashMap<>(); map.put("id", null); // return ResultUtil.success(map); } }else if(!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode()) && StrUtil.isEmpty(orderPrivateCar.getPrepaySecondPayNo())){ if (orderPrivateCar.getPayMoney() != null){ UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); userInfo.setBalance(userInfo.getBalance() + orderPrivateCar.getPayMoney()); userInfoService.updateById(userInfo); } if (!Integer.valueOf(2).equals(orderPrivateCar.getPaymentMode())) { handlePrivateCarPrepayCancelRefund(orderPrivateCar,reason); } Integer number1 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("pid", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6)); Integer number2 = this.selectCount(new EntityWrapper<OrderPrivateCar>().eq("id", orderPrivateCar.getPid() == null ? orderPrivateCar.getId() : orderPrivateCar.getPid()).lt("state", 6)); @@ -2895,6 +2878,55 @@ return orderPrivateCar != null && Integer.valueOf(1).equals(orderPrivateCar.getPaymentMode()); } private void handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason) throws Exception { if (!isPrivateCarPrepayMode(orderPrivateCar)) { return; } if (Integer.valueOf(3).equals(orderPrivateCar.getPayType())) { Double refundAmount = orderPrivateCar.getPayMoney(); if (refundAmount == null || refundAmount <= 0) { throw new RuntimeException("余额先付订单退款金额异常"); } UserInfo userInfo = userInfoService.selectById(orderPrivateCar.getUserId()); if (userInfo == null) { throw new RuntimeException("用户信息不存在,无法退款"); } userInfo.setBalance(new BigDecimal(null != userInfo.getBalance() ? userInfo.getBalance() : 0) .add(new BigDecimal(refundAmount)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); userInfoService.updateById(userInfo); restorePrivateCarBenefits(orderPrivateCar); transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId()); orderPrivateCar.setState(10); orderPrivateCar.setPrepayStage(5); orderPrivateCar.setPrepayRefundNo("BALANCE_REFUND_1_" + orderPrivateCar.getId() + "_" + ToolUtil.getRandomString(5)); orderPrivateCar.setPrepayRefundAmount(refundAmount); orderPrivateCar.setPrepayRefundTime(new Date()); this.updateById(orderPrivateCar); systemNoticeService.addSystemNotice(1, "您的快车余额先付订单已取消,退款已退回账户余额,请注意查收。", orderPrivateCar.getUserId(), 1); } else { String outRequestNo = orderPrivateCar.getPrepaySecondPayNo(); if (ToolUtil.isEmpty(outRequestNo)) { throw new RuntimeException("微信先付订单缺少支付单号,无法关闭支付单"); } Double refundAmount = orderPrivateCar.getPayMoney(); if (refundAmount == null || refundAmount <= 0) { throw new RuntimeException("微信先付订单退款金额异常"); } CbyzxPayUtil.ClosePayOrderRequest request = new CbyzxPayUtil.ClosePayOrderRequest(); request.setOutRequestNo(outRequestNo); request.setRefundOutRequestNo(buildPrepayRefundOutNo(orderPrivateCar.getId())); request.setRefundAmount(toFen(refundAmount)); request.setRefundDesc(ToolUtil.isNotEmpty(reason) ? reason : "快车订单取消退款"); JSONObject response = CbyzxPayUtil.closePayOrder(request); if (!isPrivateCarPrepayRefundSuccess(response)) { throw new RuntimeException(extractPrivateCarRefundMessage(response)); } restorePrivateCarBenefits(orderPrivateCar); transactionDetailsService.saveData(orderPrivateCar.getUserId(), "快车取消订单退款", refundAmount, 1, 1, 1, 1, orderPrivateCar.getId()); systemNoticeService.addSystemNotice(1, "您的快车微信先付订单已取消,退款已原路退回,请注意查收。", orderPrivateCar.getUserId(), 1); } } private ResultUtil handlePrivateCarPrepayCancelRefund(OrderPrivateCar orderPrivateCar, String reason, String remark, Integer uid) throws Exception { System.out.println("快车退款!!!!"); if (!isPrivateCarPrepayMode(orderPrivateCar)) { UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/OrderInfoWarpper.java
@@ -1141,6 +1141,7 @@ orderInfoWarpper.setPaymentMode(null != map.get("paymentMode") ? Integer.valueOf(map.get("paymentMode").toString()) : null); orderInfoWarpper.setOrderAdditionalFeeWarpper(list); orderInfoWarpper.setCancelType(null != map.get("cancelType") ? Integer.valueOf(map.get("cancelType").toString()) : 1); orderInfoWarpper.setOrderMoney(null != map.get("estimateAmount") ? Double.valueOf(String.valueOf(map.get("estimateAmount"))) : 0); } return orderInfoWarpper; } UserYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/taxi/service/impl/OrderTaxiServiceImpl.java
@@ -1854,8 +1854,8 @@ @Override public Map<String, Object> queryOrderInfo(Integer orderId) throws Exception { Map<String, Object> map = orderTaxiMapper.queryOrderInfo(orderId); OrderTaxi orderTaxi = this.selectById(orderId); if (null != map && null != map.get("reassignNotice") && Integer.valueOf(String.valueOf(map.get("reassignNotice"))) == 2) {//如果订单有改派提醒,则查询后重置为未提醒 OrderTaxi orderTaxi = this.selectById(orderId); orderTaxi.setReassignNotice(0); this.updateById(orderTaxi); } @@ -1867,9 +1867,53 @@ String driverId = (String) redisTemplate.opsForValue().get("DEVICE_" + map.get("driverId")); map.put("device", ToolUtil.isNotEmpty(driverId) ? 2 : 1); map.put("orderType", 2); fillTaxiPrepayDisplayMoney(this.selectById(orderId), map); if (Objects.equals(orderTaxi.getPaymentMode(), 1)) { System.out.println("预付价格871"); fillTaxiPrepayDisplayMoney(orderTaxi, map); } else { System.out.println("计算价格874"); taxiPreAmountCalculate(orderTaxi, map); } return map; } private void taxiPreAmountCalculate(OrderTaxi orderTaxi, Map<String, Object> map) { try { Map<String, String> startGeocode = gdMapGeocodingUtil.geocode(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat())); Company query = companyCityService.query(String.valueOf(orderTaxi.getStartLon()), String.valueOf(orderTaxi.getStartLat())); if (orderTaxi.getEndLon() != null && orderTaxi.getEndLat() != null && startGeocode != null) { Map<String, String> distance = gdMapElectricFenceUtil.getDistance( orderTaxi.getStartLon() + "," + orderTaxi.getStartLat(), orderTaxi.getEndLon() + "," + orderTaxi.getEndLat(), 1 ); System.out.println("距离获取890"); if (distance != null) { double distanceMeters = Double.parseDouble(distance.get("distance")); long durationSeconds = Long.parseLong(distance.get("duration")); ServerCarModelWarpper textPrice = serverCarModelService.getTextPrice(query.getId(), distanceMeters, durationSeconds, 0, 2, startGeocode); System.out.println("费用计算895"); if (textPrice != null && textPrice.getAmount() != null && textPrice.getAmount().get("zongfeiyong") != null) { Double estimateAmount = Double.valueOf(textPrice.getAmount().get("zongfeiyong").toString()); map.put("orderMoney", estimateAmount); map.put("estimateAmount", estimateAmount); } else { map.put("orderMoney", 0); map.put("estimateAmount", 0); } } else { map.put("orderMoney", 0); map.put("estimateAmount", 0); } } else { map.put("orderMoney", 0); map.put("estimateAmount", 0); } } catch (Exception ignore) { map.put("orderMoney", 0); map.put("estimateAmount", 0); } } /**