From 6a80d0d2b393e36034c8ffef92fcaf06a1f0c552 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期五, 16 八月 2024 09:23:03 +0800
Subject: [PATCH] 代码初始化

---
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                                   |   20 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java                 |   13 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java                   |   30 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java            |   21 +
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java                      |   39 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java          |   36 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java        |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java          |   64 ++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java                      |   24 +
 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java                                    |   12 
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java       |   29 +
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java               |  118 +++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java       |   30 +
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java   |  154 +++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java |  207 ++++++++++++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java               |   64 +++
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java        |    2 
 server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java                                |   43 ++
 server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java                  |   22 +
 19 files changed, 916 insertions(+), 13 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 8646006..90cea78 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -38,6 +38,13 @@
     public static final String HK_PUSH_URL = "HK_PUSH_URL";
     public static final String HK_ROOTORG_CODE ="HK_ROOTORG_CODE" ;
     public static final String HK_ROOTORG_NAME ="HK_ROOTORG_NAME" ;
+    public static final String PLATFORM ="PLATFORM" ;
+    public static final String RESERVATION_TOTAL_NUM ="RESERVATION_TOTAL_NUM" ;
+    public static final String SIGN_IN_PLACE_LAT ="SIGN_IN_PLACE_LAT" ;
+    public static final String SIGN_IN_PLACE_LNT ="SIGN_IN_PLACE_LNT" ;
+    public static final String SIGN_IN_PLACE_DISTANCE ="SIGN_IN_PLACE_DISTANCE" ;
+    public static final String SIGN_IN_QRCODE ="SIGN_IN_QRCODE" ;
+
 
     //琚嫓璁夸汉淇℃伅鏍¢獙鏂瑰紡锛�0鎵嬫満鍙峰崟鐙牎楠� 1鎵嬫満鍙峰拰濮撳悕缁勫悎鏍¢獙锛�
     public static final String BEVISITED_USER_VALID = "BEVISITED_USER_VALID";
@@ -173,6 +180,8 @@
        int wxczh = 3;
        int sgscxh = 4;
     }
+
+
     public static  Date  getBirthdyByCardNo(String idCard){
     if(idCard ==null || idCard.length()<14){
         return null;
@@ -715,15 +724,14 @@
      * 0寰呯‘璁� 1寰呯鍒� 2绛夊緟鍙彿 3鍏ュ洯绛夊緟 4宸插彨鍙� 5浣滀笟涓� 6浣滀笟瀹屾垚 7杞Щ涓� 8寮傚父鎸傝捣 9宸叉巿鏉冪鍥� 10宸茬鍥� 11 宸茶繃鍙�
      */
     public  enum PlatformJobStatus {
-        WAIT_CONFIRM(0, "寰呯‘璁�","" ),
-        WART_SIGNIN(1, "寰呯鍒�","寰呯鍒�" ),
-        WAIT_CALL(2, "绛夊緟鍙彿","绛夊緟鍙彿"),
-        IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ),
+        WAIT_CONFIRM(0, "寰呯‘璁�","寰呯‘璁�" ),
+        WART_SIGN_IN(1, "寰呯鍒�","寰呯鍒�" ),
+        WAIT_CALL(2, "宸茬鍒�","宸茬鍒�"), //绛夊緟鍙彿鍏ュ洯
+        IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ),//宸插叆鍥� 鏈彨鍙疯繘鍏ユ湀鍙�
         CALLED(4, "宸插彨鍙�","宸插彨鍙�" ),
         WORKING(5, "浣滀笟涓�","浣滀笟涓�" ),
-        //缁繚閫氱煡
         DONE(6, "浣滀笟瀹屾垚 ","浣滀笟瀹屾垚 " ),
-        TRANSFERING(7, "杞Щ涓�","7杞Щ涓�" ),
+        TRANSFERING(7, "杞Щ涓�","杞Щ涓�" ),
         EXCEPTION(8, "寮傚父鎸傝捣","寮傚父鎸傝捣" ),
         AUTHED_LEAVE(9, "宸叉巿鏉冪鍥�","宸叉巿鏉冪鍥�" ),
         LEAVED(10, "宸茬鍥� ","宸茬鍥� " ),
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
index 7f25314..11635cf 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -3194,6 +3194,18 @@
 
     }
 
+    /**
+     * 鑾峰彇X澶╁悗鐨勬棩鏈�
+     * @param date
+     * @param beforDays 鏄庡ぉ -1  鏄ㄥぉ 1
+     * @return
+     */
+    public static String getBeforDay(Date date,Integer beforDays){
+        ZonedDateTime zonedDateTime = date.toInstant().atZone(ZoneId.systemDefault());
+        // 杞崲涓簀ava.time.LocalDate,璁$畻x澶╃殑鏃ユ湡
+        LocalDate dateBeforeDay = zonedDateTime.toLocalDate().minusDays(beforDays);
+        return dateBeforeDay.toString();
+    }
 
 
 }
\ No newline at end of file
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java
new file mode 100644
index 0000000..8cf28fc
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/core/utils/PositionUtil.java
@@ -0,0 +1,43 @@
+package com.doumee.core.utils;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/8/14 17:22
+ */
+public class PositionUtil {
+
+    /**
+     * 璧ら亾鍗婂緞锛堝崟浣嶏細绫筹級
+     */
+    private static final double EQUATOR_RADIUS = 6378137;
+
+    /**
+     * 鏂规硶涓�锛氾紙鍙嶄綑寮﹁绠楁柟寮忥級
+     *
+     * @param longitude1 绗竴涓偣鐨勭粡搴�
+     * @param latitude1  绗竴涓偣鐨勭含搴�
+     * @param longitude2 绗簩涓偣鐨勭粡搴�
+     * @param latitude2  绗簩涓偣鐨勭含搴�
+     * @return 杩斿洖璺濈锛屽崟浣峬
+     */
+    public static double getDistance(double longitude1, double latitude1, double longitude2, double latitude2) {
+        // 绾害
+        double lat1 = Math.toRadians(latitude1);
+        double lat2 = Math.toRadians(latitude2);
+        // 缁忓害
+        double lon1 = Math.toRadians(longitude1);
+        double lon2 = Math.toRadians(longitude2);
+        // 绾害涔嬪樊
+        double a = lat1 - lat2;
+        // 缁忓害涔嬪樊
+        double b = lon1 - lon2;
+        // 璁$畻涓ょ偣璺濈鐨勫叕寮�
+        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(b / 2), 2)));
+        // 寮ч暱涔樿丹閬撳崐寰�, 杩斿洖鍗曚綅: 绫�
+        s = s * EQUATOR_RADIUS;
+        return s;
+    }
+
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
new file mode 100644
index 0000000..9be7635
--- /dev/null
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/DriverPlatformController.java
@@ -0,0 +1,118 @@
+package com.doumee.cloud.web;
+
+import com.doumee.api.BaseController;
+import com.doumee.config.annotation.LoginNoRequired;
+import com.doumee.config.annotation.LoginRequired;
+import com.doumee.core.annotation.trace.Trace;
+import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.PageData;
+import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.dao.business.model.PlatformBooks;
+import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.dao.business.model.Visits;
+import com.doumee.dao.web.reqeust.*;
+import com.doumee.dao.web.response.DriverHomeVO;
+import com.doumee.dao.web.response.MemberVO;
+import com.doumee.dao.web.response.VisitRecordVO;
+import com.doumee.service.business.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/28 14:31
+ */
+
+@Api(tags = "銆愬叕浼楀彿銆戠墿娴佽溅鍙告満涓氬姟")
+@Trace(exclude = true)
+@RestController
+@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/driverPlatform")
+@Slf4j
+@LoginNoRequired
+public class DriverPlatformController extends BaseController {
+
+    @Autowired
+    private VisitsService visitsService;
+
+    @Autowired
+    private PlatformJobService platformJobService;
+
+    @Autowired
+    private PlatformBooksService platformBooksService;
+
+    @ApiOperation("鍙告満棣栭〉淇℃伅")
+    @GetMapping("/driverHome")
+    public ApiResponse<DriverHomeVO> driverHome (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        DriverHomeVO driverHomeVO = platformJobService.getDriverHome(getLoginUser(token).getMemberId());
+        return ApiResponse.success(driverHomeVO);
+    }
+
+
+    @ApiOperation("鏌ヨ鍙绾﹂噺")
+    @PostMapping("/checkSurplusNum")
+    public ApiResponse<BigDecimal> checkSurplusNum (@RequestBody PlatformBooksCheckNumDTO platformBooksCheckNumDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        return ApiResponse.success(platformBooksService.checkNum(platformBooksCheckNumDTO));
+    }
+
+    @ApiOperation("鐗╂祦杞﹂绾�")
+    @PostMapping("/checkSurplusNum")
+    public ApiResponse<Integer> checkSurplusNum (@RequestBody PlatformBooksApplyDTO platformBooksApplyDTO , @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        platformBooksApplyDTO.setUserId(getLoginUser(token).getMemberId());
+        return ApiResponse.success(platformBooksService.apply(platformBooksApplyDTO));
+    }
+
+    @ApiOperation("鐗╂祦杞﹂绾﹁褰�")
+    @PostMapping("/page")
+    public ApiResponse<PageData<PlatformBooks>> findPage (@RequestBody PageWrap<PlatformBooks> pageWrap, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        pageWrap.getModel().setQueryDate(DateUtil.getBeforDay(new Date(),30));
+        return ApiResponse.success(platformBooksService.findPage(pageWrap));
+    }
+
+    @ApiOperation("鐗╂祦杞﹂绾﹁鎯�")
+    @GetMapping("/getDetail")
+    public ApiResponse<PlatformBooks> getDetail (@RequestParam Integer id, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
+        PlatformBooks platformBooks = platformBooksService.getDetail(id,getLoginUser(token).getMemberId());
+        return ApiResponse.success(platformBooks);
+    }
+
+    @ApiOperation("鐗╂祦杞﹂绾︽挙閿�")
+    @PostMapping("/revoke")
+    public ApiResponse  revoke (@RequestBody RevokeDTO revokeDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        platformBooksService.revoke(revokeDTO,getLoginUser(token));
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+
+    /******************************************************浠诲姟鎺ュ彛************************************************************************/
+
+    @ApiOperation("浠诲姟绛惧埌")
+    @PostMapping("/signIn")
+    public ApiResponse  signIn (@RequestBody SignInDTO signInDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        signInDTO.setLoginUserInfo(getLoginUser(token));
+        platformJobService.signIn(signInDTO);
+        return ApiResponse.success("鎿嶄綔鎴愬姛");
+    }
+
+    @ApiOperation("浠诲姟璇︽儏")
+    @PostMapping("/jobDetail")
+    public ApiResponse<PlatformJob>  jobDetail (@RequestBody JobDetailDTO jobDetailDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token){
+        return ApiResponse.success(platformJobService.getDetail(jobDetailDTO));
+    }
+
+
+
+
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
index 482fbd7..cea4575 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformBooks.java
@@ -1,6 +1,9 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.core.utils.Constants;
+import com.doumee.dao.business.vo.ApproveDataVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -56,7 +59,7 @@
     @ExcelColumn(name="澶囨敞")
     private String remark;
 
-    @ApiModelProperty(value = "鐘舵�� 0寰呭鎵� 1瀹℃壒涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃", example = "1")
+    @ApiModelProperty(value = "鐘舵�� 0寰呭鎵� 1瀹℃壒涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃 4宸插彇娑�", example = "1")
     @ExcelColumn(name="鐘舵�� 0寰呭鎵� 1瀹℃壒涓� 2瀹℃壒閫氳繃 3瀹℃壒涓嶉�氳繃")
     private Integer status;
 
@@ -99,6 +102,63 @@
 
     @ApiModelProperty(value = "鍙告満鎵嬫満鍙�")
     @ExcelColumn(name="鍙告満鎵嬫満鍙�")
-    private String drivierPhone;
+    private String driverPhone;
+
+    @ApiModelProperty(value = "鍑嗚繍璇佺収鐗�")
+    @ExcelColumn(name="鍑嗚繍璇佺収鐗�")
+    private String transportImg;
+
+    @ApiModelProperty(value = "鍏ュ洯鍘熷洜")
+    @ExcelColumn(name="鍏ュ洯鍘熷洜")
+    private String inReason;
+
+    @ApiModelProperty(value = "鍏ュ洯鍘熷洜涓婚敭")
+    @ExcelColumn(name="鍏ュ洯鍘熷洜涓婚敭")
+    private Integer reasonId;
+
+    @ApiModelProperty(value = "鍙栨秷鏃堕棿")
+    @ExcelColumn(name="鍙栨秷鏃堕棿")
+    private Date cancelTime;
+
+    @ApiModelProperty(value = "鍙栨秷浜�")
+    @ExcelColumn(name="鍙栨秷浜�")
+    private Integer cancelUser;
+
+    @ApiModelProperty(value = "鍙栨秷澶囨敞")
+    @ExcelColumn(name="鍙栨秷澶囨敞")
+    private String cancelInfo;
+
+    @ApiModelProperty(value = "鐢熸垚浠诲姟涓婚敭 platform_job:id")
+    @ExcelColumn(name="鍏ュ洯鍘熷洜涓婚敭")
+    private Integer jobId;
+
+    @ApiModelProperty(value = "鏌ヨ鏃ユ湡 鐢ㄦ埛寰俊绔煡璇�")
+    @TableField(exist = false)
+    private String queryDate;
+
+    @ApiModelProperty(value = "瀹℃壒淇℃伅鏁版嵁")
+    @TableField(exist = false)
+    private ApproveDataVO approveDateVO;
+
+    public PlatformJob toPlatformJob(){
+        PlatformJob platformJob = new PlatformJob();
+        platformJob.setCreateDate(new Date());
+        platformJob.setIsdeleted(Constants.ZERO);
+        platformJob.setStatus(Constants.ZERO);
+        platformJob.setDriverId(this.getDriverId());
+        platformJob.setDriverName(this.getDriverName());
+        platformJob.setDrivierPhone(this.getDriverPhone());
+        platformJob.setCarCodeBack(this.getCarCodeBack());
+        platformJob.setCarCodeFront(this.getCarCodeFront());
+        platformJob.setContractNum(this.getContractNum());
+        platformJob.setReason(this.getInReason());
+        platformJob.setArriveDate(this.getArriveDate());
+        platformJob.setInType(this.getInType());
+        platformJob.setTotalNum(this.getTotalNum());
+        return platformJob;
+    }
+
+
+
 
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
index 3958bb0..e2cd5a2 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/PlatformJob.java
@@ -1,5 +1,6 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -263,4 +264,16 @@
     @ExcelColumn(name="鎬昏繍杈撻噺")
     private BigDecimal totalNum;
 
+    @ApiModelProperty(value = "鍓嶆柟鎺掗槦鏁伴噺", example = "1")
+    @TableField(exist = false)
+    private Long lineUpNum;
+
+    @ApiModelProperty(value = "浣滀笟鏈堝彴鍚嶇О")
+    @TableField(exist = false)
+    private String platformName ;
+
+    @ApiModelProperty(value = "璺濈绛惧埌鐐硅窛绂�")
+    @TableField(exist = false)
+    private BigDecimal getDistance;
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java
new file mode 100644
index 0000000..d34974c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/JobDetailDTO.java
@@ -0,0 +1,30 @@
+package com.doumee.dao.web.reqeust;
+
+import com.doumee.core.model.LoginUserInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/7 11:19
+ */
+@Data
+@Api(tags = "浠诲姟璇︽儏璇锋眰绫�" )
+public class JobDetailDTO {
+
+    @ApiModelProperty(value = "浠诲姟涓婚敭")
+    private Integer jobId;
+
+    @ApiModelProperty(value = "绾害")
+    private Double lat;
+
+    @ApiModelProperty(value = "缁忓害")
+    private Double lnt;
+
+    @ApiModelProperty(value = "鐢ㄦ埛", hidden = true)
+    private LoginUserInfo loginUserInfo;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java
new file mode 100644
index 0000000..6273b5f
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksApplyDTO.java
@@ -0,0 +1,64 @@
+package com.doumee.dao.web.reqeust;
+
+import com.doumee.core.annotation.excel.ExcelColumn;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/7 11:19
+ */
+@Data
+@Api(tags = "鍏ュ洯棰勭害鐢宠淇℃伅" )
+public class PlatformBooksApplyDTO {
+
+    @ApiModelProperty(value = "鍚堝悓鍙�")
+    private String contractNum;
+
+    @ApiModelProperty(value = "棰勮鍒板満鏃堕棿")
+    private Date arriveDate;
+
+    @ApiModelProperty(value = "鍏ュ簱绫诲瀷 0鏁存墭鐩� 1浠剁儫", example = "1")
+    private Integer inType;
+
+    @ApiModelProperty(value = "鎬昏繍杈撻噺", example = "1")
+    private BigDecimal totalNum;
+
+    @ApiModelProperty(value = "鍓嶈溅鐗屽彿")
+    private String carCodeFront;
+
+    @ApiModelProperty(value = "鍚庤溅鐗屽彿")
+    private String carCodeBack;
+
+    @ApiModelProperty(value = "鍙告満缂栫爜", example = "1")
+    private Integer driverId;
+
+    @ApiModelProperty(value = "鍙告満濮撳悕")
+    private String driverName;
+
+    @ApiModelProperty(value = "杞︾墝鍙�")
+    private String plateNum;
+
+    @ApiModelProperty(value = "鍙告満鎵嬫満鍙�")
+    private String driverPhone;
+
+    @ApiModelProperty(value = "鍑嗚繍璇佺収鐗�")
+    private String transportImg;
+
+    @ApiModelProperty(value = "鍏ュ洯鍘熷洜")
+    private String inReason;
+
+    @ApiModelProperty(value = "鍏ュ洯鍘熷洜涓婚敭")
+    private Integer reasonId;
+
+    @ApiModelProperty(value = "鐢ㄦ埛涓婚敭", hidden = true)
+    private Integer userId;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java
new file mode 100644
index 0000000..5d9f0ea
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/PlatformBooksCheckNumDTO.java
@@ -0,0 +1,29 @@
+package com.doumee.dao.web.reqeust;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/7 11:19
+ */
+@Data
+@Api(tags = "鍏ュ洯棰勭害鐢宠淇℃伅楠岃瘉鍙敤鏁伴噺" )
+public class PlatformBooksCheckNumDTO {
+
+    @ApiModelProperty(value = "棰勮鍒板満鏃堕棿")
+    private Date arriveDate;
+
+    @ApiModelProperty(value = "鍏ュ洯鍘熷洜涓婚敭")
+    private Integer reasonId;
+
+    @ApiModelProperty(value = "鎬昏繍杈撻噺", example = "1")
+    private BigDecimal totalNum;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java
new file mode 100644
index 0000000..24920eb
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/RevokeDTO.java
@@ -0,0 +1,24 @@
+package com.doumee.dao.web.reqeust;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2024/8/15 10:49
+ */
+@Data
+public class RevokeDTO {
+
+    @ApiModelProperty(value = "璁板綍涓婚敭")
+    private Integer id;
+
+    @ApiModelProperty(value = "鎻忚堪")
+    private String info;
+
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java
new file mode 100644
index 0000000..3ce2b1c
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/reqeust/SignInDTO.java
@@ -0,0 +1,39 @@
+package com.doumee.dao.web.reqeust;
+
+import com.doumee.core.model.LoginUserInfo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2023/12/7 11:19
+ */
+@Data
+@Api(tags = "鍏ュ洯绛惧埌" )
+public class SignInDTO {
+
+    @ApiModelProperty(value = "浠诲姟涓婚敭")
+    private Integer jobId;
+
+    @ApiModelProperty(value = "绛惧埌绫诲瀷锛� 0=app绛惧埌 1=鎵爜绛惧埌")
+    private Integer signType;
+
+    @ApiModelProperty(value = "绛惧埌浜岀淮鐮佸��")
+    private String qrCodeKey;
+
+    @ApiModelProperty(value = "绾害")
+    private Double lat;
+
+    @ApiModelProperty(value = "缁忓害")
+    private Double lnt;
+
+    @ApiModelProperty(value = "鐢ㄦ埛", hidden = true)
+    private LoginUserInfo loginUserInfo;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java
new file mode 100644
index 0000000..e677f12
--- /dev/null
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/DriverHomeVO.java
@@ -0,0 +1,22 @@
+package com.doumee.dao.web.response;
+
+import com.doumee.dao.business.model.PlatformBooks;
+import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.dao.system.model.Multifile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+@ApiModel("鍙告満棣栭〉")
+public class DriverHomeVO {
+
+    @ApiModelProperty(value = "杞挱鍥�")
+    private List<Multifile> multifileList;
+
+    @ApiModelProperty(value = "鏈堝彴浠诲姟鍒楄〃")
+    private List<PlatformJob> platformJobList;
+
+}
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java
index baaf67e..8931030 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformBooksService.java
@@ -1,8 +1,14 @@
 package com.doumee.service.business;
 
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.model.PlatformBooks;
+import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO;
+import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO;
+import com.doumee.dao.web.reqeust.RevokeDTO;
+
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -94,4 +100,34 @@
      * @return long
      */
     long count(PlatformBooks platformBooks);
+
+    /**
+     * 鏌ヨ褰撴棩鍙绾︽暟閲�
+     * @param platformBooksCheckNumDTO
+     * @return
+     */
+    BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO);
+
+    /**
+     * 鐗╂祦杞﹂绾�
+     * @param platformBooksApplyDTO
+     */
+    Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO);
+
+
+    /**
+     * 棰勭害璇︽儏
+     * @param id
+     * @return
+     */
+    PlatformBooks getDetail(Integer id,Integer memberId);
+
+
+    /**
+     * 鍙栨秷鐗╂祦杞﹂绾�
+     * @param revokeDTO
+     * @param loginUserInfo
+     */
+    void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo);
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
index cef117e..8d88a16 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/PlatformJobService.java
@@ -3,6 +3,10 @@
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.dao.web.reqeust.JobDetailDTO;
+import com.doumee.dao.web.reqeust.SignInDTO;
+import com.doumee.dao.web.response.DriverHomeVO;
+
 import java.util.List;
 
 /**
@@ -94,4 +98,21 @@
      * @return long
      */
     long count(PlatformJob platformJob);
+
+    DriverHomeVO getDriverHome(Integer memberId);
+
+    /**
+     * 璺濈绛惧埌
+     * @param signInDTO
+     */
+    void signIn(SignInDTO signInDTO);
+
+    /**
+     * 浠诲姟璇︽儏
+     * @param jobDetailDTO
+     * @return
+     */
+    PlatformJob getDetail(JobDetailDTO jobDetailDTO);
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
index 1af24c0..4742664 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -89,6 +89,12 @@
     private CarUseBookJoinMapper carUseBookJoinMapper;
     @Autowired
     private NoticesJoinMapper noticesJoinMapper;
+    @Autowired
+    private PlatformBooksMapper platformBooksMapper;
+    @Autowired
+    private PlatformJobMapper platformJobMapper;
+    @Autowired
+    private PlatformLogMapper platformLogMapper;
 
 
 
@@ -1340,7 +1346,29 @@
                 Constants.approveObjectType.unCityUseCar)){
             this.updDriver(approveDTO,approve,true);
         }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
-            //TODO  鐗╂祦杞﹂绾�
+            //鐗╂祦杞﹂绾�
+            PlatformBooks platformBooks = platformBooksMapper.selectById(approveDTO.getObjId());
+            if(Objects.isNull(platformBooks)){
+                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐗╂祦杞﹂绾﹁褰�");
+            }
+            platformBooks.setStatus(approveDTO.getStatus());
+            platformBooks.setEditDate(new Date());
+            platformBooks.setEditor(approveDTO.getLoginUserInfo().getMemberId());
+
+            //鐢熸垚浠诲姟璁板綍
+            PlatformJob platformJob = platformBooks.toPlatformJob();
+            platformJobMapper.insert(platformJob);
+            platformBooks.setJobId(platformJob.getId());
+            platformBooksMapper.updateById(platformBooks);
+            //鐢熸垚浠诲姟鎿嶄綔璁板綍
+            PlatformLog platformLog = new PlatformLog();
+            platformLog.setCreateDate(new Date());
+            platformLog.setJobId(platformJob.getId());
+            platformLog.setIsdeleted(Constants.ZERO);
+            platformLog.setObjType(Constants.ZERO);
+            platformLog.setObjId(platformJob.getId().toString());
+            platformLog.setAfterContent(JSONObject.toJSONString(platformJob));
+            platformLogMapper.insert(platformLog);
 
         }else{
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 398ac8f..23a6c33 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2004,6 +2004,7 @@
         systemUser.setSalt(salt);
         systemUser.setPassword(member.getPassward());
         systemUser.setStatus(Constants.ZERO);
+        systemUser.setSource(Constants.TWO);
         systemUserMapper.insert(systemUser);
 
     }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
index d1cc8d5..a155825 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformBooksServiceImpl.java
@@ -1,20 +1,44 @@
 package com.doumee.service.business.impl;
 
+import cn.emay.sdk.util.StringUtil;
+import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.ApproveTemplMapper;
+import com.doumee.dao.business.MemberMapper;
 import com.doumee.dao.business.PlatformBooksMapper;
-import com.doumee.dao.business.model.PlatformBooks;
+import com.doumee.dao.business.PlatformReasonMapper;
+import com.doumee.dao.business.join.ApproveJoinMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.business.vo.ApproveDataVO;
+import com.doumee.dao.web.reqeust.PlatformBooksApplyDTO;
+import com.doumee.dao.web.reqeust.PlatformBooksCheckNumDTO;
+import com.doumee.dao.web.reqeust.RevokeDTO;
+import com.doumee.service.business.ApproveService;
 import com.doumee.service.business.PlatformBooksService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.tomcat.util.bcel.Const;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鏈堝彴鍏ュ洯棰勭害淇℃伅琛⊿ervice瀹炵幇
@@ -27,8 +51,29 @@
     @Autowired
     private PlatformBooksMapper platformBooksMapper;
 
+    @Autowired
+    private ApproveTemplMapper approveTemplMapper;
+
+    @Autowired
+    private PlatformReasonMapper platformReasonMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private ApproveService approveService;
+
+    @Autowired
+    private MemberMapper memberMapper;
+
+    @Autowired
+    private ApproveJoinMapper approveJoinMapper;
+
+
     @Override
     public Integer create(PlatformBooks platformBooks) {
+
+
         platformBooksMapper.insert(platformBooks);
         return platformBooks.getId();
     }
@@ -83,7 +128,7 @@
         QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks);
         return platformBooksMapper.selectList(wrapper);
     }
-  
+
     @Override
     public PageData<PlatformBooks> findPage(PageWrap<PlatformBooks> pageWrap) {
         IPage<PlatformBooks> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -111,7 +156,8 @@
                 .eq(pageWrap.getModel().getDriverId() != null, PlatformBooks::getDriverId, pageWrap.getModel().getDriverId())
                 .eq(pageWrap.getModel().getDriverName() != null, PlatformBooks::getDriverName, pageWrap.getModel().getDriverName())
                 .eq(pageWrap.getModel().getPlateNum() != null, PlatformBooks::getPlateNum, pageWrap.getModel().getPlateNum())
-                .eq(pageWrap.getModel().getDrivierPhone() != null, PlatformBooks::getDrivierPhone, pageWrap.getModel().getDrivierPhone())
+                .eq(pageWrap.getModel().getDriverPhone() != null, PlatformBooks::getDriverPhone, pageWrap.getModel().getDriverPhone())
+                .ge(pageWrap.getModel().getQueryDate() != null, PlatformBooks::getCreateDate, pageWrap.getModel().getQueryDate())
         ;
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -128,4 +174,159 @@
         QueryWrapper<PlatformBooks> wrapper = new QueryWrapper<>(platformBooks);
         return platformBooksMapper.selectCount(wrapper);
     }
+
+
+    @Override
+    public BigDecimal checkNum(PlatformBooksCheckNumDTO platformBooksCheckNumDTO){
+        if(Objects.isNull(platformBooksCheckNumDTO)
+        || Objects.isNull(platformBooksCheckNumDTO.getTotalNum())
+        || Objects.isNull(platformBooksCheckNumDTO.getReasonId())
+        || Objects.isNull(platformBooksCheckNumDTO.getArriveDate())){
+            return BigDecimal.ZERO;
+        }
+        //鏌ヨ姣忔棩閰嶇疆鐨勬�婚绾﹂噺
+        PlatformReason platformReason = platformReasonMapper.selectById(platformBooksCheckNumDTO.getReasonId());
+        if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�");
+        }
+        List<PlatformBooks> platformBooksList = platformBooksMapper.selectList(new QueryWrapper<PlatformBooks>().lambda()
+                .eq(PlatformBooks::getReasonId,platformBooksCheckNumDTO.getReasonId())
+                .ne(PlatformBooks::getStatus,Constants.THREE)
+                .like(PlatformBooks::getCreateDate, DateUtil.getDate(platformBooksCheckNumDTO.getArriveDate(),"yyyy-MM-dd"))
+        );
+        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformBooksList)){
+           BigDecimal countNum =  platformBooksList.stream().map(m->m.getTotalNum()).reduce(BigDecimal.ZERO,BigDecimal::add);
+           if(countNum.compareTo(platformReason.getLimitNum())>=Constants.ZERO){
+               return BigDecimal.ZERO;
+           }
+           return platformReason.getLimitNum().subtract(countNum);
+        }
+        return platformReason.getLimitNum();
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public Integer apply(PlatformBooksApplyDTO platformBooksApplyDTO){
+        if(Objects.isNull(platformBooksApplyDTO)
+            || StringUtils.isBlank(platformBooksApplyDTO.getContractNum())
+            || Objects.isNull(platformBooksApplyDTO.getArriveDate())
+            || Objects.isNull(platformBooksApplyDTO.getInType())
+            || Objects.isNull(platformBooksApplyDTO.getTotalNum())
+            || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeFront())
+            || StringUtils.isBlank(platformBooksApplyDTO.getCarCodeBack())
+            || Objects.isNull(platformBooksApplyDTO.getDriverId())
+            || StringUtils.isBlank(platformBooksApplyDTO.getDriverPhone())
+            || StringUtils.isBlank(platformBooksApplyDTO.getDriverName())
+            || StringUtils.isBlank(platformBooksApplyDTO.getTransportImg())
+            || Objects.isNull(platformBooksApplyDTO.getReasonId())
+            || StringUtils.isBlank(platformBooksApplyDTO.getInReason())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        PlatformReason platformReason = platformReasonMapper.selectById(platformBooksApplyDTO.getReasonId());
+        if(Objects.isNull(platformReason)|| Constants.equalsInteger(platformReason.getIsdeleted(),Constants.ZERO)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鍏ュ洯鍘熷洜淇℃伅寮傚父,璇峰埛鏂伴噸璇�");
+        }
+        ApproveTempl approveTempl = approveTemplMapper.selectOne(new QueryWrapper<ApproveTempl>().lambda()
+                .eq(ApproveTempl::getIsdeleted,Constants.ZERO)
+                .eq(ApproveTempl::getObjId,platformReason.getId())
+                .last(" limit 1")
+        );
+        if(Objects.isNull(approveTempl)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈厤缃鎵规祦,璇疯仈绯荤鐞嗗憳");
+        }
+
+        if(Constants.equalsInteger(platformBooksApplyDTO.getUserId(),platformBooksApplyDTO.getDriverId())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"浜哄憳淇℃伅鍖归厤閿欒");
+        }
+        if(Objects.nonNull(platformReason.getLimitNum())&&platformReason.getLimitNum().compareTo(platformBooksApplyDTO.getTotalNum())>0){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瓒呭嚭鍏ュ洯鐢宠绾胯川閲�");
+        }
+        PlatformBooks platformBooks = new PlatformBooks();
+        BeanUtils.copyProperties(platformBooksApplyDTO,platformBooks);
+        platformBooks.setCreateDate(new Date());
+        platformBooks.setIsdeleted(Constants.ZERO);
+        platformBooks.setStatus(Constants.ZERO);
+        platformBooks.setDriverId(platformBooksApplyDTO.getUserId());
+        platformBooksMapper.insert(platformBooks);
+
+        //鍒涘缓瀹℃壒娴佷俊鎭�
+        approveService.createApproveFlow(5,platformBooks.getId(),platformBooks.getDriverId());
+        return platformBooks.getId();
+    }
+
+
+    @Override
+    public PlatformBooks getDetail(Integer id,Integer memberId){
+        PlatformBooks model = platformBooksMapper.selectById(id);
+        if(Objects.isNull(model)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍");
+        }
+        ApproveDataVO approveDataVO = approveService.arrangeApprovedData(id,
+               5,
+                memberId);
+        model.setApproveDateVO(approveDataVO);
+        List<Approve> approveList = approveDataVO.getApproveList();
+        if(Constants.equalsInteger(model.getStatus(),Constants.FOUR)){
+            String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+                    +systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
+            Member member = memberMapper.selectById(model.getDriverId());
+
+            Approve approve = new Approve();
+            approve.setApproveType(Constants.ZERO);
+            approve.setCreateDate(model.getCancelTime());
+            approve.setTitle("鎾ら攢浜�");
+            approve.setStatusInfo("宸叉挙閿�");
+            approve.setStatus(Constants.FOUR);
+            approve.setType(Constants.ZERO);
+            if(member!=null) {
+                approve.setMemberName(member.getName());
+                if (StringUtils.isNotBlank(member.getFaceImg())) {
+                    approve.setFaceImg(path + member.getFaceImg());
+                }
+            }
+            approve.setCheckInfo(model.getCancelInfo());
+            approve.setCheckDate(model.getCancelTime());
+            approveList.add(approve);
+        }
+        return model;
+    }
+
+
+
+    @Override
+    public void revoke(RevokeDTO revokeDTO, LoginUserInfo loginUserInfo){
+        if(Objects.isNull(revokeDTO)
+                || Objects.isNull(revokeDTO.getId())
+                || StringUtils.isBlank(revokeDTO.getInfo())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        PlatformBooks model = platformBooksMapper.selectById(revokeDTO.getId());
+        if(Objects.isNull(model)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌棰勭害璁板綍");
+        }
+        if(!(Constants.equalsInteger(model.getStatus(),Constants.ZERO)||Constants.equalsInteger(model.getStatus(),Constants.ONE))){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆,鏃犳硶杩涜璇ユ搷浣�");
+        }
+        model.setCancelUser(loginUserInfo.getId());
+        model.setCancelInfo(revokeDTO.getInfo());
+        model.setCancelTime(new Date());
+        model.setStatus(Constants.FOUR);
+        platformBooksMapper.updateById(model);
+        //澶勭悊瀹℃壒璁板綍
+        approveJoinMapper.update(null,new UpdateWrapper<Approve>()
+                .lambda()
+                .set(Approve::getIsdeleted,Constants.ONE)
+                .set(Approve::getStatus,Constants.FOUR)
+                .set(Approve::getCheckInfo,"鐗╂祦杞﹂绾︾敵璇峰彇娑�")
+                .in(Approve::getStatus,Constants.ZERO,Constants.ONE)
+                .eq(Approve::getObjType,Constants.approveObjectType.logisticsCarUse)
+                .eq(Approve::getObjId,revokeDTO.getId())
+        );
+    }
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index 38cfd43..84fb6c9 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -1,20 +1,39 @@
 package com.doumee.service.business.impl;
 
+import cn.hutool.crypto.asymmetric.Sign;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.PositionUtil;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.PlatformJobMapper;
+import com.doumee.dao.business.PlatformMapper;
+import com.doumee.dao.business.model.Platform;
+import com.doumee.dao.business.model.PlatformBooks;
 import com.doumee.dao.business.model.PlatformJob;
+import com.doumee.dao.web.reqeust.JobDetailDTO;
+import com.doumee.dao.web.reqeust.SignInDTO;
+import com.doumee.dao.web.response.DriverHomeVO;
 import com.doumee.service.business.PlatformJobService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * 鏈堝彴璋冨害浣滀笟淇℃伅琛⊿ervice瀹炵幇
@@ -26,6 +45,13 @@
 
     @Autowired
     private PlatformJobMapper platformJobMapper;
+
+    @Autowired
+    private SystemDictDataBiz systemDictDataBiz;
+
+    @Autowired
+    private PlatformMapper platformMapper;
+
 
     @Override
     public Integer create(PlatformJob platformJob) {
@@ -178,4 +204,132 @@
         QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
         return platformJobMapper.selectCount(wrapper);
     }
+
+    //TODO
+    @Override
+    public DriverHomeVO getDriverHome(Integer memberId){
+        DriverHomeVO driverHomeVO = new DriverHomeVO();
+        //TODO 杞挱鍥�
+
+        List<PlatformJob> platformJobList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>()
+                .lambda()
+                .eq(PlatformJob::getDriverId,memberId)
+//                        .like(PlatformJob::get)
+                .orderByDesc(PlatformJob::getId));
+        driverHomeVO.setPlatformJobList(platformJobList);
+
+
+        return driverHomeVO;
+    }
+
+
+    /**
+     * 璺濈绛惧埌
+     * @param signInDTO
+     */
+    @Override
+    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+    public void signIn(SignInDTO signInDTO){
+        if(Objects.isNull(signInDTO)
+            || Objects.isNull(signInDTO.getSignType())
+            || Objects.isNull(signInDTO.getJobId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        PlatformJob platformJob = platformJobMapper.selectById(signInDTO.getJobId());
+        if(Objects.isNull(platformJob)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"涓氬姟鐘舵�佸凡娴佽浆锛岃鍒锋柊鏌ョ湅");
+        }
+        if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ZERO)){
+            this.distanceSignIn(signInDTO,platformJob);
+        }else if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ONE)){
+            this.sceneSignIn(signInDTO);
+        }
+        platformJob.setSignDate(new Date());
+        platformJob.setSingType(Constants.ZERO);
+        platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
+        platformJobMapper.updateById(platformJob);
+    }
+
+
+    public void distanceSignIn(SignInDTO signInDTO , PlatformJob platformJob){
+        if(Objects.isNull(signInDTO.getLat())
+                || Objects.isNull(signInDTO.getLnt())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"缁忕含搴︿俊鎭紓甯�");
+        }
+        //鑾峰彇绛惧埌鐐圭殑缁忕含搴�
+        Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode());
+        Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode());
+        BigDecimal distance = new BigDecimal(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_DISTANCE).getCode());
+        //鑾峰彇2涓偣鐨勮窛绂籜绫�
+        Double getDistanceDouble = PositionUtil.getDistance(signInDTO.getLnt(),signInDTO.getLat(),lnt,lat);
+        //杞崲km
+        BigDecimal getDistance = BigDecimal.valueOf(getDistanceDouble).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP);
+        if(distance.compareTo(getDistance)<Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瓒呭嚭鍙鍒拌窛绂伙紝鍙鍒拌窛绂籟"+distance+"]鍏噷]");
+        }
+        platformJob.setSignDistance(BigDecimal.valueOf(getDistanceDouble));
+    }
+
+    public void sceneSignIn(SignInDTO signInDTO){
+        if( StringUtils.isNotBlank(signInDTO.getQrCodeKey())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        if(!signInDTO.getQrCodeKey().equals(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_QRCODE).getCode())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"浜岀淮鐮佸凡杩囨湡,璇峰埛鏂伴噸璇�");
+        }
+    }
+
+
+    @Override
+    public PlatformJob getDetail(JobDetailDTO jobDetailDTO){
+        if(Objects.isNull(jobDetailDTO)
+        || Objects.isNull(jobDetailDTO.getJobId())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        PlatformJob platformJob  = platformJobMapper.selectById(jobDetailDTO.getJobId());
+        if(Objects.isNull(platformJob)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
+            //寰呯鍒� 璁$畻璺濈
+            if(Objects.nonNull(jobDetailDTO.getLnt())&&Objects.nonNull(jobDetailDTO.getLat())){
+                //鑾峰彇绛惧埌鐐圭殑缁忕含搴�
+                Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode());
+                Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode());
+                //鑾峰彇2涓偣鐨勮窛绂籜绫�
+                Double getDistanceDouble = PositionUtil.getDistance(jobDetailDTO.getLnt(),jobDetailDTO.getLat(),lnt,lat);
+                //杞崲km
+                BigDecimal getDistance = BigDecimal.valueOf(getDistanceDouble).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP);
+                platformJob.setGetDistance(getDistance);
+            }
+        }else if( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
+                || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())
+        ){//鏌ヨ鎺掗槦鎯呭喌
+            Long lineUpNum =  platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
+                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
+                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
+                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
+            platformJob.setLineUpNum(lineUpNum);
+        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
+            //浣滀笟鏈堝彴淇℃伅
+            Platform platform = platformMapper.selectById(platformJob.getPlatformId());
+            if(Objects.nonNull(platform)){
+                platformJob.setPlatformName(platform.getName());
+            }
+        }
+        return platformJob;
+    }
+
+
+
+
+
+
+
 }
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
index af5ee41..6cb1dbd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -246,7 +246,7 @@
         initWithVisitInfo(visits);
         updateProblemLog(visits,problemLog,member);
         //鍒涘缓瀹℃壒璁板綍
-//        createApprove(visits,visitMember);
+        createApprove(visits,visitMember);
 
         return visits.getId();
     }

--
Gitblit v1.9.3