From 41c57542ef824f974ff7bc039e6daff24549d15b Mon Sep 17 00:00:00 2001
From: HIK\moubangkai <moubangkai@163.com>
Date: Tue, 21 Jul 2020 17:34:28 +0800
Subject: [PATCH] :sparkles: 添加驾驶证图片查看权限验证

---
 api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java  | 29 +++++++++++++++++------------
 domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java          |  2 ++
 domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java                   |  2 +-
 domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java           |  2 +-
 domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java |  9 +++++++++
 infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/IdCardReq.java    | 15 ---------------
 infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/UserIdReq.java    | 16 ----------------
 7 files changed, 30 insertions(+), 45 deletions(-)
 delete mode 100644 infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/IdCardReq.java
 delete mode 100644 infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/UserIdReq.java

diff --git a/api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java b/api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java
index 7014e7b..338b6b1 100644
--- a/api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java
+++ b/api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java
@@ -1,12 +1,14 @@
 package com.hikcreate.edl.pub.web.mobile.api.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.hikcreate.common.sdk.exception.BusinessException;
 import com.hikcreate.common.sdk.response.apiparam.Response;
 import com.hikcreate.common.sdk.response.apiparam.ResponseGenerator;
 import com.hikcreate.common.sdk.response.statuscode.StatusCode;
 import com.hikcreate.edl.common.image.builder.domain.DlImageDO;
 import com.hikcreate.edl.pub.web.mobile.domain.CredentialsImageService;
 import com.hikcreate.edl.pub.web.mobile.domain.DrivingLicenseService;
+import com.hikcreate.edl.pub.web.mobile.domain.IBindService;
 import com.hikcreate.edl.pub.web.mobile.infra.core.Result.Result;
 import com.hikcreate.edl.pub.web.mobile.infra.core.Result.ResultGenerator;
 import com.hikcreate.edl.pub.web.mobile.infra.core.annotatiion.HeaderDecryptAnnotation;
@@ -17,16 +19,16 @@ import com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_driving
 import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.DrivingLicenseSendSmsCodeReq;
 import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.DrivingLicenseValidReq;
 import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.DrivingLicenseValidSmsCodeReq;
-import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.IdCardReq;
-import com.hikcreate.edl.pub.web.mobile.infra.model.param.request.UserIdReq;
 import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseInfoRes;
 import com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseValidRes;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletResponse;
@@ -53,6 +55,8 @@ public class DrivingLicenseController {
     private FastDfsConfigBean fastDfsConfigBean;
     @Autowired
     private DrivingLicenseService drivingLicenseService;
+    @Autowired
+    private IBindService iBindService;
 
     @PostMapping("/valid")
     @HeaderDecryptAnnotation
@@ -62,29 +66,30 @@ public class DrivingLicenseController {
     }
 
     @PostMapping("/sendSmsCode")
-    @HeaderDecryptAnnotation
     public Result<Void> sendSmsCode(@RequestBody @Validated DrivingLicenseSendSmsCodeReq req) {
         drivingLicenseService.sendSmsCode(req.getUserId());
         return ResultGenerator.success();
     }
 
     @PostMapping("/validSmsCode")
-    @HeaderDecryptAnnotation
     public Result<Void> validSmsCode(@RequestBody @Validated DrivingLicenseValidSmsCodeReq req) {
         drivingLicenseService.validSmsCode(req.getUserId(), req.getSmsCode());
         return ResultGenerator.success();
     }
 
-    @PostMapping("/drivingLicenseInfo")
-    @HeaderDecryptAnnotation
-    public Result<DrivingLicenseInfoRes> getDrivingLicenseInfo(@RequestBody @Validated UserIdReq req) {
-        DrivingLicenseInfoRes drivingLicenseInfoRes = drivingLicenseService.getDrivingLicenseInfo(req.getUserId());
+    @GetMapping("/drivingLicenseInfo")
+    public Result<DrivingLicenseInfoRes> getDrivingLicenseInfo(@RequestParam("userId") String userId) {
+        DrivingLicenseInfoRes drivingLicenseInfoRes = drivingLicenseService.getDrivingLicenseInfo(userId);
         return ResultGenerator.success(drivingLicenseInfoRes);
     }
 
-    @PostMapping("/image")
-    public void image(@RequestBody @Validated IdCardReq req, HttpServletResponse response) {
-        DrivingLicenseMicRes drivingLicenseMicRes = drivingLicenseFeign.getByIdCard(new CreditIdCardMicReq().setIdCard(req.getIdCard())).fallback().getData();
+    @GetMapping("/image")
+    public void image(@RequestParam("userId") String userId, @RequestParam("idCard") String idCard, HttpServletResponse response) {
+        // 验证是否有查看权限
+        if (!drivingLicenseService.checkValid(userId, idCard) && !iBindService.checkValid(userId,idCard)) {
+            throw  new BusinessException(StatusCode.PARAM_ERROR);
+        }
+        DrivingLicenseMicRes drivingLicenseMicRes = drivingLicenseFeign.getByIdCard(new CreditIdCardMicReq().setIdCard(idCard)).fallback().getData();
         DlImageDO dlImageDO = new DlImageDO();
         dlImageDO.setAddress(drivingLicenseMicRes.getAddress());
         dlImageDO.setBelowLicenseNumber(drivingLicenseMicRes.getIdCard());
@@ -106,7 +111,7 @@ public class DrivingLicenseController {
             setHeader(response, drivingLicenseMicRes.getIdCard() + ".jpg");
             response.getOutputStream().write(outputStream.toByteArray());
         } catch (Exception e) {
-            log.error("Get dl img E, idCard={}, msg={}", req.getIdCard(), e);
+            log.error("Get dl img E, idCard={}, userId={}, msg={}", idCard, userId, e);
             getResException(response, "获取驾照图片异常");
         } finally {
             try {
diff --git a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java
index 90b9c43..3f5aa23 100644
--- a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java
+++ b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java
@@ -16,4 +16,6 @@ public interface DrivingLicenseService {
     void validSmsCode(String userId, String smsCode);
 
     DrivingLicenseInfoRes getDrivingLicenseInfo(String userId);
+
+    Boolean checkValid(String userId, String idCard);
 }
diff --git a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java
index d4e004b..368f7ec 100644
--- a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java
+++ b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java
@@ -112,5 +112,5 @@ public interface IBindService extends IService<ParkBindInfo> {
      * @param idCard
      * @return
      */
-    Boolean valid(String userId, String idCard);
+    Boolean checkValid(String userId, String idCard);
 }
diff --git a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java
index 6bfcafa..7dc1107 100644
--- a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java
+++ b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java
@@ -585,7 +585,7 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
      * @return
      */
     @Override
-    public Boolean valid(String userId, String idCard) {
+    public Boolean checkValid(String userId, String idCard) {
         String s = redisTemplate.opsForValue().get(getValidKey(userId, idCard));
         return !StringUtils.isEmpty(s);
     }
diff --git a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java
index 379e2da..7a4b04e 100644
--- a/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java
+++ b/domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java
@@ -121,6 +121,15 @@ public class DrivingLicenseServiceImpl implements DrivingLicenseService {
         return false;
     }
 
+    @Override
+    public Boolean checkValid(String userId, String idCard) {
+        String value = redisTemplate.opsForValue().get(getSmsKey(userId, idCard));
+        if (!StringUtils.isEmpty(value)) {
+            return true;
+        }
+        return false;
+    }
+
     private String getSmsKey(String userId, String idCard) {
         return REDIS_SMS_KEY + userId + ":" + idCard;
     }
diff --git a/infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/IdCardReq.java b/infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/IdCardReq.java
deleted file mode 100644
index 31eeea3..0000000
--- a/infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/IdCardReq.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.hikcreate.edl.pub.web.mobile.infra.model.param.request;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * @author MOUBK
- * @create 2020/7/21 16:43
- */
-@Data
-public class IdCardReq {
-    @NotBlank(message = "身份证号不能为空")
-    private String idCard;
-}
diff --git a/infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/UserIdReq.java b/infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/UserIdReq.java
deleted file mode 100644
index 22a4722..0000000
--- a/infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/UserIdReq.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.hikcreate.edl.pub.web.mobile.infra.model.param.request;
-
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * @author MOUBK
- * @create 2020/7/21 16:18
- */
-@Data
-public class UserIdReq {
-
-    @NotBlank(message = "用户Id不能为空")
-    private String userId;
-}
--
libgit2 0.26.0