From 59b1f0e9967902aa10f5e017d5a0bdfd1b60c9ea Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 29 四月 2026 09:42:45 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java |   81 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 76 insertions(+), 5 deletions(-)

diff --git a/server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java b/server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java
index 966cb84..77ec3a9 100644
--- a/server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java
+++ b/server/web/src/main/java/com/doumee/api/web/DriverInfoApi.java
@@ -3,6 +3,7 @@
 import com.doumee.core.annotation.LoginDriverRequired;
 import com.doumee.core.annotation.LoginRequired;
 import com.doumee.core.annotation.trace.Trace;
+import com.doumee.config.jwt.JwtTokenUtil;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
@@ -11,10 +12,15 @@
 import com.doumee.dao.dto.DriverGrabOrderDTO;
 import com.doumee.dao.dto.DriverLoginRequest;
 import com.doumee.dao.dto.DriverDeliverDTO;
+import com.doumee.dao.dto.DriverOrderPageDTO;
 import com.doumee.dao.dto.DriverPickupDTO;
 import com.doumee.dao.dto.DriverRegisterRequest;
 import com.doumee.dao.dto.DriverVerifyRequest;
 import com.doumee.dao.vo.AccountResponse;
+import com.doumee.dao.dto.CancelOrderDTO;
+import com.doumee.dao.dto.ChangePasswordDTO;
+import com.doumee.dao.vo.DriverActiveOrderCountVO;
+import com.doumee.dao.vo.DriverCancelLimitVO;
 import com.doumee.dao.vo.DriverCenterVO;
 import com.doumee.dao.vo.DriverGrabOrderVO;
 import com.doumee.dao.vo.DriverOrderDetailVO;
@@ -35,7 +41,7 @@
  * @author rk
  * @date 2026/04/08
  */
-@Api(tags = "鍙告満楠岃瘉鐮佺櫥褰�")
+@Api(tags = "鍙告満涓氬姟鎺ュ彛")
 @Trace(exclude = true)
 @RestController
 @RequestMapping("/web/driverInfo")
@@ -133,6 +139,17 @@
 
     @LoginDriverRequired
     @Trace
+    @ApiOperation(value = "鍙告満绱缁熻", notes = "绱浣i噾銆佸緟缁撶畻浣i噾銆佽鍗曟�绘暟銆侀挶鍖呬綑棰�")
+    @GetMapping("/stats")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<com.doumee.dao.vo.DriverStatsVO> stats() {
+        return ApiResponse.success("鎿嶄綔鎴愬姛", driverInfoService.getDriverStats(this.getDriverId()));
+    }
+
+    @LoginDriverRequired
+    @Trace
     @ApiOperation(value = "鍙告満鎶㈠崟澶у巺", notes = "鍒嗛〉鏌ヨ鍙姠鐨勫紓鍦板瘎瀛樿鍗�")
     @PostMapping("/grabOrderHall")
     @ApiImplicitParams({
@@ -145,7 +162,7 @@
     @LoginDriverRequired
     @Trace
     @ApiOperation(value = "鍙告満鎶㈠崟", notes = "瀵瑰凡瀵勫瓨(status=2)鐨勫紓鍦板瘎瀛樿鍗曞彂璧锋姠鍗�")
-    @PostMapping("/grabOrder")
+    @GetMapping("/grabOrder")
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
             @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "orderId", value = "璁㈠崟涓婚敭", required = true)
@@ -185,9 +202,8 @@
     @ApiImplicitParams({
             @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
     })
-    public ApiResponse cancelOrder(@RequestParam Integer orderId,
-                                   @RequestParam(required = false) String reason) {
-        driverInfoService.cancelOrder(this.getDriverId(), orderId, reason);
+    public ApiResponse cancelOrder(@RequestBody @Valid CancelOrderDTO dto) {
+        driverInfoService.cancelOrder(this.getDriverId(), dto.getOrderId(), dto.getCancelReason());
         return ApiResponse.success("鍙栨秷鎴愬姛");
     }
 
@@ -215,4 +231,59 @@
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
 
+    @LoginDriverRequired
+    @Trace
+    @ApiOperation(value = "鍙告満淇敼瀵嗙爜", notes = "鏂板瘑鐮佸繀椤诲悓鏃跺寘鍚瓧姣嶅拰鏁板瓧锛屼慨鏀规垚鍔熷悗闇�閲嶆柊鐧诲綍")
+    @GetMapping("/changePassword")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true),
+    })
+    public ApiResponse changePassword(@RequestBody @Valid ChangePasswordDTO dto) {
+        String token = this.getRequest().getHeader(JwtTokenUtil.HEADER_KEY);
+        driverInfoService.changePassword(this.getDriverId(), dto.getOldPassword(), dto.getNewPassword(), token);
+        return ApiResponse.success("瀵嗙爜淇敼鎴愬姛锛岃閲嶆柊鐧诲綍");
+    }
+
+    @LoginDriverRequired
+    @Trace
+    @ApiOperation(value = "杩涜涓鍗曟暟閲�", notes = "杩斿洖宸叉姠鍗曞拰娲鹃�佷腑鐨勮鍗曟暟閲�")
+    @GetMapping("/activeOrderCount")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<DriverActiveOrderCountVO> activeOrderCount() {
+        return ApiResponse.success("鎿嶄綔鎴愬姛", driverInfoService.getActiveOrderCount(this.getDriverId()));
+    }
+
+    @LoginDriverRequired
+    @Trace
+    @ApiOperation(value = "鍙告満璁㈠崟鍒嗛〉", notes = "鏌ヨ鍙告満鐨勫叏閮�/寰呭彇浠�/閰嶉�佷腑/宸插畬鎴愯鍗�")
+    @PostMapping("/orderPage")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<PageData<DriverGrabOrderVO>> orderPage(@RequestBody PageWrap<DriverOrderPageDTO> pageWrap) {
+        return ApiResponse.success("鎿嶄綔鎴愬姛", driverInfoService.driverOrderPage(this.getDriverId(), pageWrap));
+    }
+
+    @LoginDriverRequired
+    @Trace
+    @ApiOperation(value = "浠婃棩鍙彇娑堟鏁�", notes = "杩斿洖鍙告満浠婃棩鍙栨秷娆℃暟涓婇檺銆佸凡鍙栨秷娆℃暟銆佸墿浣欏彲鍙栨秷娆℃暟")
+    @GetMapping("/cancelLimit")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "鐢ㄦ埛token鍊�", required = true)
+    })
+    public ApiResponse<DriverCancelLimitVO> cancelLimit() {
+        return ApiResponse.success("鎿嶄綔鎴愬姛", driverInfoService.getTodayCancelLimit(this.getDriverId()));
+    }
+
+    @ApiOperation("鏍¢獙鍙告満token鏄惁鏈夋晥")
+    @GetMapping("/checkToken")
+    @ApiImplicitParams({
+            @ApiImplicitParam(paramType = "query", dataType = "String", name = "token", value = "鍙告満token", required = true)
+    })
+    public ApiResponse<Boolean> checkToken(@RequestParam String token) {
+        return ApiResponse.success(driverInfoService.checkDriverToken(token));
+    }
+
 }

--
Gitblit v1.9.3