From e160ce24b5be0b5c5559ae5a44d6be2839e51b99 Mon Sep 17 00:00:00 2001
From: liujie <liujie>
Date: 星期三, 16 八月 2023 17:00:05 +0800
Subject: [PATCH] update

---
 driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java |   75 +++++++++++++++++++++++++++++++++----
 1 files changed, 66 insertions(+), 9 deletions(-)

diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
index ee7f73e..08187f8 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/api/OrderController.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.supersavedriving.driver.modular.system.model.DivisionRecord;
 import com.supersavedriving.driver.modular.system.model.Driver;
 import com.supersavedriving.driver.modular.system.model.Order;
@@ -13,6 +14,7 @@
 import com.supersavedriving.driver.modular.system.util.MallBook.model.ReceiveUser;
 import com.supersavedriving.driver.modular.system.util.MallBook.util.RSASignature;
 import com.supersavedriving.driver.modular.system.util.MallBook.util.TrhRequest;
+import com.supersavedriving.driver.modular.system.util.PushUtil;
 import com.supersavedriving.driver.modular.system.util.rongyun.RongYunUtil;
 import com.supersavedriving.driver.modular.system.util.rongyun.model.CloudRecordingCallback;
 import com.supersavedriving.driver.modular.system.warpper.*;
@@ -25,6 +27,7 @@
 import com.supersavedriving.driver.modular.system.warpper.OrderInfoWarpper;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -35,6 +38,8 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -56,13 +61,13 @@
     private IDriverService driverService;
 
     @Autowired
-    private RongYunUtil rongYunUtil;
-
-    @Autowired
     private IRechargeRecordService rechargeRecordService;
 
     @Autowired
     private IDivisionRecordService divisionRecordService;
+
+    @Autowired
+    private PushUtil pushUtil;
 
 
 
@@ -263,9 +268,10 @@
     @ApiImplicitParams({
             @ApiImplicitParam(value = "订单id", name = "orderId", required = true, dataType = "long"),
             @ApiImplicitParam(value = "原因", name = "cause", required = true, dataType = "string"),
+            @ApiImplicitParam(value = "phone", name = "phone", required = false, dataType = "string"),
             @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
     })
-    public ResponseWarpper transferOrder(Long orderId, String cause){
+    public ResponseWarpper transferOrder(Long orderId, String cause,String phone){
         if(ToolUtil.isEmpty(orderId)){
             return ResponseWarpper.success(ResultUtil.paranErr("orderId"));
         }
@@ -277,12 +283,37 @@
             if(null == uid){
                 return ResponseWarpper.tokenErr();
             }
-            ResultUtil resultUtil = orderService.transferOrder(uid, orderId, cause);
+            ResultUtil resultUtil = orderService.transferOrder(uid, orderId, cause,phone);
             return ResponseWarpper.success(resultUtil);
         }catch (Exception e){
             e.printStackTrace();
             return new ResponseWarpper(500, e.getMessage());
         }
+    }
+    @ResponseBody
+    @PostMapping("/api/order/transferOrderVerify")
+//    @ServiceLog(name = "司机转单操作", url = "/api/order/transferOrder")
+    @ApiOperation(value = "司机转单操作验证", tags = {"司机端-服务中"}, notes = "")
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "phone", name = "phone", required = false, dataType = "string"),
+            @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+    })
+    public ResponseWarpper transferOrderVerify(String phone){
+        if(phone!=null && !"".equals(phone)) {
+            List<Driver> drivers = driverService.selectList(new EntityWrapper<Driver>().eq("phone", phone));
+            if (drivers.size() == 0) {
+                return new ResponseWarpper(500,"暂无该司机,无法转单");
+            } else {
+                Driver driver = drivers.get(0);
+                if (driver.getServerStatus() != 1) {
+                    return new ResponseWarpper(500,"司机正在服务中,无法转单。");
+                }
+                if (driver.getStatus() != 1) {
+                    return new ResponseWarpper(500,"该司机已被冻结,无法转单。");
+                }
+            }
+        }
+        return ResponseWarpper.success();
     }
 
 
@@ -589,18 +620,31 @@
                     }
                     String merOrderId = jsonObject.getString("merOrderId");
                     String divisionRecordId = jsonObject.getString("parameter1");
+                    DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
+                    if(divisionRecord.getState() == 2){
+                        response.setStatus(200);
+                        PrintWriter out = response.getWriter();
+                        out.print("OK");
+                        out.flush();
+                        out.close();
+                        return;
+                    }
+                    divisionRecord.setMerOrderId(merOrderId);
+                    divisionRecord.setPayTime(new Date());
+                    divisionRecord.setState(2);
+                    divisionRecordService.updateById(divisionRecord);
+
                     //确认收货
                     new Timer().schedule(new TimerTask() {
                         @Override
                         public void run() {
-                            DivisionRecord divisionRecord = divisionRecordService.selectById(divisionRecordId);
                             Receive receive = new Receive();//确认收货
                             receive.setOriginalMerOrderId(merOrderId);
-                            receive.setRcvAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+                            receive.setRcvAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                             List<ReceiveUser> splitList = new ArrayList<>();
                             ReceiveUser receiveUser = new ReceiveUser();
                             receiveUser.setSplitUserId(divisionRecord.getMerchantNumber());
-                            receiveUser.setRcvSplitAmount(String.valueOf(Double.valueOf(divisionRecord.getAmount() * 100).intValue()));
+                            receiveUser.setRcvSplitAmount(new BigDecimal(divisionRecord.getAmount()).multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_EVEN).longValue() + "");
                             splitList.add(receiveUser);
                             receive.setSplitList(splitList);
                             TrhRequest<Receive> request1 = new TrhRequest();
@@ -617,7 +661,7 @@
                                 logger.warn("确认收货处理中");
                             }
                         }
-                    }, 15000);
+                    }, 60000);
                     response.setStatus(200);
                     PrintWriter out = response.getWriter();
                     out.print("OK");
@@ -631,4 +675,17 @@
             e.printStackTrace();
         }
     }
+
+
+    /**
+     * 管理后台调用推送
+     * @param id
+     * @param type
+     * @param pushOrderInfoWarpper
+     */
+    @ResponseBody
+    @PostMapping("/base/order/pushOrderInfo")
+    public void pushOrderInfo(Integer id, Integer type, PushOrderInfoWarpper pushOrderInfoWarpper){
+        pushUtil.pushOrderInfo(id, type, pushOrderInfoWarpper);
+    }
 }

--
Gitblit v1.7.1