From a0536b4aac5867173d6b0280cddbf87cb52de78b Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 16 十月 2025 18:22:30 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/ZhaoYangChuXing

---
 ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html                        |    3 +
 DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java              |    1 
 ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html                         |    3 +
 ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js                                  |   76 ++++++++++++++++++++++++++++++++------
 ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayUtils.java                               |    4 +
 ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java           |   26 +++++++++++-
 ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java |    2 +
 7 files changed, 97 insertions(+), 18 deletions(-)

diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index a89e9e8..5b11a8e 100644
--- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -530,6 +530,7 @@
                 orderPrivateCar.setLongDistanceMoney(Objects.nonNull(orderPrivateCar.getLongDistanceMoney())?new BigDecimal(orderPrivateCar.getLongDistanceMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D);
                 orderPrivateCar.setParkMoney(Objects.nonNull(orderPrivateCar.getParkMoney())?new BigDecimal(orderPrivateCar.getParkMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D);
                 orderPrivateCar.setRoadTollMoney(Objects.nonNull(orderPrivateCar.getRoadTollMoney())?new BigDecimal(orderPrivateCar.getRoadTollMoney()).multiply(priceCoefficient).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue():0D);
+                this.updateById(orderPrivateCar);
             }
         }
 
diff --git a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
index 04e1e60..41df3a2 100644
--- a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
+++ b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TPubWithdrawalController.java
@@ -141,25 +141,31 @@
                 stateObj = 1;
                 // 支付宝提现
                 String certNo = "";
+                String name = "";
                 if (tPubWithdrawal.getUserType()==1){
                     TUser tUser = userService.selectById(tPubWithdrawal.getUserId());
                     certNo = tUser.getIdCard();
+                    name = tUser.getName();
 
                 }else{
                     TDriver tDriver = driverService.selectById(tPubWithdrawal.getUserId());
                     certNo = tDriver.getIdCard();
+                    name = tDriver.getName();
+                }
+                if (SinataUtil.isEmpty(name)){
+                    return ResultUtil.error("提现失败:用户未保存真实姓名!");
                 }
                 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
                 String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
-                String s = AlipayUtils.aliWithdrawal(code, tPubWithdrawal.getMoney() + "", tPubWithdrawal.getCode(), certNo);
+                String s = AlipayUtils.aliWithdrawal(code, tPubWithdrawal.getMoney() + "", tPubWithdrawal.getCode(), certNo, name);
                 JSONObject res = JSONObject.parseObject(s);
                 JSONObject alipayFundTransUniTransferResponse = res.getJSONObject("alipay_fund_trans_uni_transfer_response");
                 if (alipayFundTransUniTransferResponse!=null){
-                    if (alipayFundTransUniTransferResponse.getString("status").equals("Success")){
+                    if (alipayFundTransUniTransferResponse.getString("status")!=null && alipayFundTransUniTransferResponse.getString("status").equals("Success")){
                         String string = alipayFundTransUniTransferResponse.getString("order_id");
                         tPubWithdrawal.setOrderNumber(string);
                     }else{
-                        return ResultUtil.error("提现失败:"+alipayFundTransUniTransferResponse.getString("msg"));
+                        return ResultUtil.error("提现失败:"+alipayFundTransUniTransferResponse.getString("sub_msg"));
                     }
                 }
                 System.err.println("支付宝提现返回信息"+s);
@@ -189,6 +195,20 @@
         return SUCCESS_TIP;
     }
 
+    public static void main(String[] args) throws AlipayApiException {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+        String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
+        String s = AlipayUtils.aliWithdrawal(code, 0.1 + "", "19983174515", "513902200006257079","");
+        JSONObject res = JSONObject.parseObject(s);
+        JSONObject alipayFundTransUniTransferResponse = res.getJSONObject("alipay_fund_trans_uni_transfer_response");
+        if (alipayFundTransUniTransferResponse!=null){
+            if (alipayFundTransUniTransferResponse.getString("status")!=null && alipayFundTransUniTransferResponse.getString("status").equals("Success")){
+                String string = alipayFundTransUniTransferResponse.getString("order_id");
+            }else{
+                System.err.println("提现失败"+alipayFundTransUniTransferResponse.getString("sub_msg"));
+            }
+        }
+    }
     /**
      * 修改提现列表
      */
diff --git a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java
index 861f749..4006db4 100644
--- a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java
+++ b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TSpecialAreaBillingController.java
@@ -63,6 +63,8 @@
      */
     @RequestMapping("/add")
     public String add(Model model) {
+        SpecialAreaBilling specialAreaBilling = new SpecialAreaBilling();
+        model.addAttribute("data",specialAreaBilling);
         return PREFIX + "specialAreaBilling_add.html";
     }
     /**
diff --git a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayUtils.java b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayUtils.java
index 646f619..c4808d8 100644
--- a/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayUtils.java
+++ b/ManagementZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/alipay/AlipayUtils.java
@@ -58,7 +58,8 @@
     /**
      * 提现
      */
-    public static String aliWithdrawal(String outBizNo, String money, String account, String idCard) throws AlipayApiException {
+    public static String aliWithdrawal(String outBizNo, String money, String account, String idCard
+    ,String name) throws AlipayApiException {
         // 初始化SDK
         AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());
 
@@ -82,6 +83,7 @@
         payeeInfo.setCertType("IDENTITY_CARD");
         payeeInfo.setCertNo(idCard);
         payeeInfo.setIdentityType("ALIPAY_LOGON_ID");
+        payeeInfo.setName(name);
         model.setPayeeInfo(payeeInfo);
         // 设置业务备注
         model.setRemark("司机提现");
diff --git a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html
index 41ec94a..4b66798 100644
--- a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html
+++ b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_add.html
@@ -120,7 +120,8 @@
 <script src="https://webapi.amap.com/maps?v=1.4.15&key=83a918fd5e6ed82be74e3056d403dbe6&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor"></script>
 <script src="${ctxPath}/static/modular/system/specialAreaBilling/electricFence.js"></script>
 <script src="${ctxPath}/static/modular/system/specialAreaBilling/specialAreaBilling_info.js"></script>
-
+<script>    var coordinateData = "${data.coordinate}";
+</script>
 <script>
     $(function() {
         var elem = document.querySelector(".js-switch");
diff --git a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html
index 1879328..5fe7259 100644
--- a/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html
+++ b/ManagementZYTravel/guns-admin/src/main/webapp/WEB-INF/view/system/specialAreaBilling/specialAreaBilling_edit.html
@@ -123,7 +123,8 @@
 <script src="https://webapi.amap.com/maps?v=1.4.15&key=83a918fd5e6ed82be74e3056d403dbe6&plugin=AMap.MouseTool,AMap.DistrictSearch,AMap.PolyEditor,AMap.RectangleEditor,AMap.CircleEditor"></script>
 <script src="${ctxPath}/static/modular/system/specialAreaBilling/electricFence.js"></script>
 <script src="${ctxPath}/static/modular/system/specialAreaBilling/specialAreaBilling_info.js"></script>
-
+<script>    var coordinateData = "${data.coordinate}";
+</script>
 <script>
     $(function() {
         var elem = document.querySelector(".js-switch");
diff --git a/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js b/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js
index d98b147..43e9484 100644
--- a/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js
+++ b/ManagementZYTravel/guns-admin/src/main/webapp/static/modular/system/specialAreaBilling/electricFence.js
@@ -1,7 +1,9 @@
-var map = new AMap.Map('container',{
+// 将 polygons 数组声明提前并确保全局唯一
+var polygons = [];
+var map = new AMap.Map('container', {
     resizeEnable: true,
-    zoom:15,
-    center: [102.2667, 27.8833] // 西昌坐标
+    zoom: 4, // 使用更小的缩放级别以适应大范围坐标
+    center: [77.3833, 34.8833] // 使用更居中的坐标
 });
 setCenterCoordinate();
 function setCenterCoordinate() {
@@ -14,12 +16,35 @@
         map.setCenter(center)
     }
 }
+// 修改 setElectricFence 函数来支持单个坐标数据
 function setElectricFence() {
+    console.log("检查 coordinateData:", typeof coordinateData, coordinateData);
+    if (typeof coordinateData !== 'undefined' && coordinateData) {
+        console.log("开始绘制多边形,坐标数据:", coordinateData);
+        var path = convertData(coordinateData);
+        console.log("转换后的路径:", path);
+        var polygon = new AMap.Polygon({
+            path: path,
+            strokeWeight: 2,
+            fillOpacity: 0.4,
+            fillColor: '#00b0ff',
+            strokeColor: '#80d8ff'
+        });
+        map.add(polygon);
+        polygons.push(polygon);
+
+        // 使用 setFitView 确保多边形可见
+        map.setFitView([polygon]);
+
+        console.log("多边形已添加到地图");
+        return;
+    }
+
+    // 原有的处理多个位置的逻辑保持不变
     var locationsStr = $("#locationList1").val();
     if ("" != locationsStr && null != locationsStr) {
         var locations = JSON.parse(locationsStr);
         for (let i = 0; i < locations.length; i++) {
-            console.log(locations[i])
             var gid = locations[i].coordinate
             if (gid == null || gid == "") {
                 continue;
@@ -33,6 +58,7 @@
                 strokeColor: '#80d8ff'
             });
             map.add(polygon);
+            polygons.push(polygon);
         }
     }
 }
@@ -110,10 +136,15 @@
 
 
 var district = null;
-var polygons=[];
+
 function drawBounds() {
+    // 在编辑模式下不执行行政区划绘制
+    if (typeof coordinateData !== 'undefined' && coordinateData) {
+        return;
+    }
+
     if(value == ''){
-        value = '北京市';
+        value = '西昌市';
     }
 
     //加载行政区划插件
@@ -129,8 +160,23 @@
     //行政区查询
     district.setLevel(document.getElementById('level').value)
     district.search(value, function(status, result) {
-        map.remove(polygons)//清除上次结果
-        polygons = [];
+        // 只清除行政区划多边形,保留电子围栏
+        var tempPolygons = [];
+        for (var i = 0; i < polygons.length; i++) {
+            // 保留用户绘制的电子围栏(通过判断是否在objs中)
+            var isUserPolygon = false;
+            for (var j = 0; j < objs.polygon.length; j++) {
+                if (polygons[i] === objs.polygon[j]) {
+                    isUserPolygon = true;
+                    break;
+                }
+            }
+            if (!isUserPolygon) {
+                tempPolygons.push(polygons[i]);
+            }
+        }
+        map.remove(tempPolygons);
+
         var bounds = result.districtList[0].boundaries;
         if (bounds) {
             for (var i = 0, l = bounds.length; i < l; i++) {
@@ -142,18 +188,21 @@
                     fillColor: '#80d8ff',
                     strokeColor: '#0091ea'
                 });
+                map.add(polygon);
                 polygons.push(polygon);
             }
         }
-        map.add(polygons)
-        map.setFitView(polygons);//视口自适应
+        // 只对行政区划多边形进行视野调整
+        if (bounds && bounds.length > 0) {
+            map.setFitView(polygons.slice(polygons.length - bounds.length));
+        }
     });
 }
 
 document.getElementById('find').onclick = function () {
     value = document.getElementById('district').value;
     if(value == ''){
-        value = "北京市";
+        value = "西昌市";
     }
     drawBounds()
 };
@@ -161,7 +210,7 @@
     if (e.keyCode === 13) {
         value = document.getElementById('district').value;
         if(value == ''){
-            value = "北京市";
+            value = "西昌市";
         }
         drawBounds();
         return false;
@@ -236,6 +285,7 @@
 
 document.getElementById('clear').onclick = function(){
     map.remove(overlays)
+    map.remove(polygons);
     overlays = [];
     coordinate = '';
     objs.circle = [];
@@ -372,6 +422,8 @@
         editor.close();
     }
 }
+
 $(function () {
+    console.log("coordinateData:", coordinateData); // 添加调试日志
     setElectricFence()
 })
\ No newline at end of file

--
Gitblit v1.7.1