Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
extend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
park
extend
Commits
9e28c5d3
Commit
9e28c5d3
authored
Jul 22, 2020
by
lixian7
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-20200720' into 'test'
Feature 20200720 See merge request
!25
parents
d4c49dd2
41c57542
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
1071 additions
and
60 deletions
+1071
-60
api/pom.xml
+1
-0
api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/BindInfoControlller.java
+55
-12
api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java
+146
-0
api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/H5Controller.java
+3
-1
domain/pom.xml
+10
-0
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/CredentialsImageService.java
+20
-0
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java
+21
-0
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java
+41
-8
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java
+214
-30
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/CredentialsImageServiceImpl.java
+35
-0
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java
+152
-0
infra/pom.xml
+4
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/core/config/DrawConfig.java
+21
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/core/configbean/FastDfsConfigBean.java
+34
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/dcp_service_vehicle/param/request/IdCardQueryReq.java
+2
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/DrivingLicenseFeign.java
+11
-4
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/request/CreditIdCardMicReq.java
+23
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/response/DrivingLicenseMicRes.java
+63
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/entity/ParkBindInfo.java
+4
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/AdminUnbindReq.java
+36
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/AdminUnbindSmsValidReq.java
+36
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/BindInfoReq.java
+7
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/BindSmsValidReq.java
+37
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/DrivingLicenseSendSmsCodeReq.java
+16
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/DrivingLicenseValidReq.java
+18
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/DrivingLicenseValidSmsCodeReq.java
+18
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/response/DrivingLicenseInfoRes.java
+4
-5
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/response/DrivingLicenseValidRes.java
+17
-0
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/response/VehicleDrivingLicenseInfoRes.java
+17
-0
pom.xml
+5
-0
No files found.
api/pom.xml
View file @
9e28c5d3
...
...
@@ -64,6 +64,7 @@
<artifactId>
redisson-spring-boot-starter
</artifactId>
<version>
3.9.1
</version>
</dependency>
</dependencies>
<build>
...
...
api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/BindInfoControlller.java
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
api
.
controller
;
import
com.hikcreate.common.orika.DefaultConverter
;
import
com.hikcreate.common.sdk.response.statuscode.StatusCode
;
import
com.hikcreate.edl.common.distributed.lock.exception.DistributedLockException
;
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.ResultCode
;
import
com.hikcreate.edl.pub.web.mobile.infra.core.Result.ResultGenerator
;
import
com.hikcreate.edl.pub.web.mobile.infra.core.annotatiion.BodyDecryptAnnotation
;
import
com.hikcreate.edl.pub.web.mobile.infra.core.annotatiion.ResponseEncryptAnnotation
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.entity.ParkBindInfo
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.AdminUnbindReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.AdminUnbindSmsValidReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.BindInfoQueryReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.BindInfoReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.BindSmsValidReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.UnBindReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoQueryRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoRes
;
...
...
@@ -38,9 +38,6 @@ public class BindInfoControlller extends BaseController {
@Autowired
IBindService
service
;
@Autowired
DefaultConverter
defaultConverter
;
/**
* 绑定用户信息的接口
...
...
@@ -51,14 +48,12 @@ public class BindInfoControlller extends BaseController {
* @date: 2020/6/19 10:27
*/
@PostMapping
(
"bind"
)
@BodyDecryptAnnotation
@ResponseEncryptAnnotation
public
Result
<
BindInfoRes
>
bindInfo
(
@RequestBody
@Validated
BindInfoReq
req
)
{
ParkBindInfo
bindInfo
=
new
ParkBindInfo
();
defaultConverter
.
getMapperFacade
().
map
(
req
,
bindInfo
);
// @BodyDecryptAnnotation
// @ResponseEncryptAnnotation
public
Result
bindInfo
(
@RequestBody
@Validated
BindInfoReq
req
)
{
Result
response
=
null
;
try
{
response
=
service
.
bind
(
bindInfo
);
response
=
service
.
bind
(
req
);
}
catch
(
DistributedLockException
e
)
{
log
.
error
(
"分布式锁超时"
);
return
ResultGenerator
.
fail
(
StatusCode
.
REPEAT_SUBMIT
);
...
...
@@ -69,6 +64,16 @@ public class BindInfoControlller extends BaseController {
return
response
;
}
/**
* 车辆绑定短信验证几节课
* @param req
* @return
*/
@PostMapping
(
"bind/smsValid"
)
public
Result
<
BindInfoRes
>
bindSmsValid
(
@RequestBody
@Validated
BindSmsValidReq
req
)
{
return
service
.
bindSmsValid
(
req
);
}
/**
* 解绑用户信息的接口
...
...
@@ -95,6 +100,44 @@ public class BindInfoControlller extends BaseController {
}
/**
* 车辆解绑发送短信(后台操作)
* @param req
* @return
*/
@PostMapping
(
"admin/unbind"
)
public
Result
adminUnbind
(
@RequestBody
@Validated
AdminUnbindReq
req
)
{
Result
result
=
null
;
try
{
result
=
service
.
adminUnbind
(
req
);
}
catch
(
DistributedLockException
e
)
{
return
ResultGenerator
.
fail
(
StatusCode
.
REPEAT_SUBMIT
);
}
catch
(
Exception
e
)
{
log
.
error
(
"系统异常:{}"
,
e
);
return
ResultGenerator
.
fail
(
StatusCode
.
SYSTEM_ERROR
);
}
return
result
;
}
/**
* 车辆解绑短信验证(后台操作)
* @param req
* @return
*/
@PostMapping
(
"admin/unbind/smsValid"
)
public
Result
adminUnbindSmsValid
(
@RequestBody
@Validated
AdminUnbindSmsValidReq
req
)
{
Result
result
=
null
;
try
{
result
=
service
.
adminUnbindSmsValid
(
req
);
}
catch
(
DistributedLockException
e
)
{
return
ResultGenerator
.
fail
(
StatusCode
.
REPEAT_SUBMIT
);
}
catch
(
Exception
e
)
{
log
.
error
(
"系统异常:{}"
,
e
);
return
ResultGenerator
.
fail
(
StatusCode
.
SYSTEM_ERROR
);
}
return
result
;
}
/**
* 绑定信息查询接口
*
* @param query
...
...
api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/DrivingLicenseController.java
0 → 100644
View file @
9e28c5d3
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
;
import
com.hikcreate.edl.pub.web.mobile.infra.core.configbean.FastDfsConfigBean
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseFeign
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.CreditIdCardMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DrivingLicenseMicRes
;
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.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
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
/**
* 驾驶证图片接口
*
* @author MOUBK
* @menu
* @create 2020/7/20 17:44
**/
@RestController
@RequestMapping
(
"/drivingLicense"
)
@Slf4j
public
class
DrivingLicenseController
{
@Autowired
private
CredentialsImageService
credentialsImageService
;
@Autowired
private
DrivingLicenseFeign
drivingLicenseFeign
;
@Autowired
private
FastDfsConfigBean
fastDfsConfigBean
;
@Autowired
private
DrivingLicenseService
drivingLicenseService
;
@Autowired
private
IBindService
iBindService
;
@PostMapping
(
"/valid"
)
@HeaderDecryptAnnotation
public
Result
<
DrivingLicenseValidRes
>
valid
(
@RequestBody
@Validated
DrivingLicenseValidReq
req
)
{
DrivingLicenseValidRes
drivingLicenseValidRes
=
drivingLicenseService
.
checkIdCard
(
req
.
getIdCard
(),
req
.
getUserId
());
return
ResultGenerator
.
success
(
drivingLicenseValidRes
);
}
@PostMapping
(
"/sendSmsCode"
)
public
Result
<
Void
>
sendSmsCode
(
@RequestBody
@Validated
DrivingLicenseSendSmsCodeReq
req
)
{
drivingLicenseService
.
sendSmsCode
(
req
.
getUserId
());
return
ResultGenerator
.
success
();
}
@PostMapping
(
"/validSmsCode"
)
public
Result
<
Void
>
validSmsCode
(
@RequestBody
@Validated
DrivingLicenseValidSmsCodeReq
req
)
{
drivingLicenseService
.
validSmsCode
(
req
.
getUserId
(),
req
.
getSmsCode
());
return
ResultGenerator
.
success
();
}
@GetMapping
(
"/drivingLicenseInfo"
)
public
Result
<
DrivingLicenseInfoRes
>
getDrivingLicenseInfo
(
@RequestParam
(
"userId"
)
String
userId
)
{
DrivingLicenseInfoRes
drivingLicenseInfoRes
=
drivingLicenseService
.
getDrivingLicenseInfo
(
userId
);
return
ResultGenerator
.
success
(
drivingLicenseInfoRes
);
}
@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
());
dlImageDO
.
setAvatarFullUrl
(
fastDfsConfigBean
.
genBigDataInnerUrl
(
drivingLicenseMicRes
.
getAvatar
()));
dlImageDO
.
setBirthday
(
drivingLicenseMicRes
.
getBirthday
());
dlImageDO
.
setLicenseNumber
(
drivingLicenseMicRes
.
getIdCard
());
dlImageDO
.
setInitLicenseDate
(
drivingLicenseMicRes
.
getIssueDate
());
dlImageDO
.
setName
(
drivingLicenseMicRes
.
getRealName
());
dlImageDO
.
setBelowName
(
drivingLicenseMicRes
.
getRealName
());
dlImageDO
.
setModel
(
drivingLicenseMicRes
.
getLicenseType
());
dlImageDO
.
setNationality
(
drivingLicenseMicRes
.
getNationality
());
dlImageDO
.
setSex
(
drivingLicenseMicRes
.
getGender
());
dlImageDO
.
setValidityPeriod
(
drivingLicenseMicRes
.
getEffectiveDate
()
+
"至"
+
drivingLicenseMicRes
.
getExpiryDate
());
dlImageDO
.
setRecord
(
""
);
dlImageDO
.
setFileNumber
(
drivingLicenseMicRes
.
getFileNum
());
ByteArrayOutputStream
outputStream
=
(
ByteArrayOutputStream
)
credentialsImageService
.
genDlImage
(
dlImageDO
);
try
{
setHeader
(
response
,
drivingLicenseMicRes
.
getIdCard
()
+
".jpg"
);
response
.
getOutputStream
().
write
(
outputStream
.
toByteArray
());
}
catch
(
Exception
e
)
{
log
.
error
(
"Get dl img E, idCard={}, userId={}, msg={}"
,
idCard
,
userId
,
e
);
getResException
(
response
,
"获取驾照图片异常"
);
}
finally
{
try
{
if
(
null
!=
outputStream
)
{
outputStream
.
close
();
}
}
catch
(
Exception
e
)
{
log
.
error
(
"Get dl img IOE, msg={}"
,
e
);
}
}
}
private
void
getResException
(
HttpServletResponse
response
,
String
msg
)
{
try
{
Response
<
Void
>
res
=
ResponseGenerator
.
fail
(
StatusCode
.
SYSTEM_ERROR
,
msg
);
response
.
setContentType
(
"application/json;charset=UTF-8"
);
response
.
getWriter
().
write
(
JSONObject
.
toJSONString
(
res
));
}
catch
(
IOException
e
)
{
log
.
error
(
"Get dl header IOE, msg={}"
,
e
);
}
}
private
void
setHeader
(
HttpServletResponse
resposne
,
String
fileName
)
{
resposne
.
setDateHeader
(
"Expires"
,
0L
);
resposne
.
setHeader
(
"Cache-Control"
,
"no-store, no-cache, must-revalidate"
);
resposne
.
addHeader
(
"Cache-Control"
,
"post-check=0, pre-check=0"
);
resposne
.
setHeader
(
"Pragma"
,
"no-cache"
);
resposne
.
setContentType
(
"image/jpeg"
);
resposne
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
fileName
);
}
}
api/src/main/java/com/hikcreate/edl/pub/web/mobile/api/controller/H5Controller.java
View file @
9e28c5d3
...
...
@@ -114,7 +114,7 @@ public class H5Controller {
*/
@PostMapping
(
"drivingLicenseInfo"
)
@HeaderDecryptAnnotation
public
Result
<
DrivingLicenseInfoRes
>
drivingLicenseInfo
(
@RequestBody
@Validated
H5BindInfoQuery
query
)
{
public
Result
<
Vehicle
DrivingLicenseInfoRes
>
drivingLicenseInfo
(
@RequestBody
@Validated
H5BindInfoQuery
query
)
{
return
service
.
drivingLicenseInfo
(
query
);
}
...
...
@@ -184,6 +184,8 @@ public class H5Controller {
verifyInfo
.
setPhone
(
req
.
getPhone
());
verifyInfo
.
setPassTime
(
DateTime
.
now
());
verifyInfoMapper
.
insert
(
verifyInfo
);
// 保存验证信息到redis
service
.
saveValid
(
req
.
getUserId
(),
req
.
getUnqId
(),
req
.
getPhone
());
}
return
checkResult
;
}
...
...
domain/pom.xml
View file @
9e28c5d3
...
...
@@ -28,10 +28,20 @@
</dependency>
<dependency>
<groupId>
com.hikcreate.common
</groupId>
<artifactId>
orika
</artifactId>
<version>
${parent.version}
</version>
</dependency>
<dependency>
<groupId>
com.hikcreate.edl.common
</groupId>
<artifactId>
distributed-lock-starter
</artifactId>
<version>
${parent.version}
</version>
</dependency>
<dependency>
<groupId>
com.hikcreate.edl.common
</groupId>
<artifactId>
image-builder
</artifactId>
</dependency>
</dependencies>
</project>
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/CredentialsImageService.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
domain
;
import
com.hikcreate.edl.common.image.builder.domain.DlImageDO
;
import
java.io.OutputStream
;
/**
* @author MOUBK
* @create 2020/7/20 17:52
*/
public
interface
CredentialsImageService
{
/**
* 生成驾驶证图片.包含主副页
*
* @param params 参数
* @return
*/
OutputStream
genDlImage
(
DlImageDO
params
);
}
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/DrivingLicenseService.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
domain
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseValidRes
;
/**
* @author MOUBK
* @create 2020/7/21 14:02
*/
public
interface
DrivingLicenseService
{
DrivingLicenseValidRes
checkIdCard
(
String
idCard
,
String
userId
);
void
sendSmsCode
(
String
userId
);
void
validSmsCode
(
String
userId
,
String
smsCode
);
DrivingLicenseInfoRes
getDrivingLicenseInfo
(
String
userId
);
Boolean
checkValid
(
String
userId
,
String
idCard
);
}
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/IBindService.java
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
domain
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.hikcreate.common.sdk.response.apiparam.Response
;
import
com.hikcreate.edl.pub.web.mobile.infra.core.Result.Result
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.entity.ParkBindInfo
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.BindInfoQueryReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.H5BindInfoQuery
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.UnBindReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.*
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoQueryRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.
Vehicle
DrivingLicenseInfoRes
;
import
java.util.List
;
...
...
@@ -24,12 +21,19 @@ public interface IBindService extends IService<ParkBindInfo> {
/**
* 信息绑定接口
*
* @param
info
* @param
req
* @return Result
* @author: xsx
* @date: 2020/6/19 10:32
*/
Result
bind
(
ParkBindInfo
info
);
Result
bind
(
BindInfoReq
req
);
/**
* 车辆绑定短信验证接口
* @param req
* @return
*/
Result
bindSmsValid
(
BindSmsValidReq
req
);
/**
* 信息解绑
...
...
@@ -39,6 +43,20 @@ public interface IBindService extends IService<ParkBindInfo> {
Result
unbindInfo
(
UnBindReq
req
);
/**
* 车辆解绑发送短信(后台操作)
* @param req
* @return
*/
Result
adminUnbind
(
AdminUnbindReq
req
);
/**
* 车辆解绑短信验证(后台操作)
* @param req
* @return
*/
Result
adminUnbindSmsValid
(
AdminUnbindSmsValidReq
req
);
/**
* 查询用户绑定信息
* @param query
* @return
...
...
@@ -78,6 +96,21 @@ public interface IBindService extends IService<ParkBindInfo> {
* @author: xsx
* @date: 2020/6/19 16:29
*/
Result
<
DrivingLicenseInfoRes
>
drivingLicenseInfo
(
H5BindInfoQuery
query
);
Result
<
VehicleDrivingLicenseInfoRes
>
drivingLicenseInfo
(
H5BindInfoQuery
query
);
/**
* 保存校验信息
* @param userId
* @param unqId
* @param phone
*/
void
saveValid
(
String
userId
,
String
unqId
,
String
phone
);
/**
* 验证是否通过短信校验
* @param userId
* @param idCard
* @return
*/
Boolean
checkValid
(
String
userId
,
String
idCard
);
}
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/BindServiceImpl.java
View file @
9e28c5d3
...
...
@@ -5,9 +5,14 @@ import cn.hutool.core.date.DateUtil;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.hikcreate.common.orika.DefaultConverter
;
import
com.hikcreate.common.sdk.exception.BusinessException
;
import
com.hikcreate.common.sdk.response.apiparam.Response
;
import
com.hikcreate.common.sdk.response.statuscode.StatusCode
;
import
com.hikcreate.edl.common.distributed.lock.annotation.DistributedLock
;
import
com.hikcreate.edl.common.sdk.util.VerifyCodeUtil
;
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.ResultCode
;
...
...
@@ -22,7 +27,10 @@ import com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.par
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.param.request.PlateNumQueryReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.param.response.DrivingLicenseRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.param.response.VehicleRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseQrFeign
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.SmsFeign
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.param.request.CheckVerifyCodeMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.param.request.SendVerifyCodeMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseFeign
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.IdCardMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DlQrRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.pvt_service_traffic.parm.request.ViolationListByTimeReq
;
...
...
@@ -31,19 +39,19 @@ import com.hikcreate.edl.pub.web.mobile.infra.data.mapper.BindInfoMapper;
import
com.hikcreate.edl.pub.web.mobile.infra.data.mapper.VerifyInfoMapper
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.entity.ParkBindInfo
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.entity.ParkVerifyInfo
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.BindInfoQueryReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.H5BindInfoQuery
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.UnBindReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.request.*
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoQueryRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.BindInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.DrivingLicenseInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.InsuranceInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.ResultList
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.VehicleDrivingLicenseInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.ViolationInfoRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.model.param.response.YearCheckInfoRes
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
...
...
@@ -53,6 +61,8 @@ import java.util.ArrayList;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
/**
* 客户绑定服务实现类
...
...
@@ -65,47 +75,59 @@ import java.util.Objects;
public
class
BindServiceImpl
extends
ServiceImpl
<
BindInfoMapper
,
ParkBindInfo
>
implements
IBindService
{
@Resource
BindInfoMapper
mapper
;
private
BindInfoMapper
mapper
;
@Resource
VerifyInfoMapper
verifyInfo
;
private
VerifyInfoMapper
verifyInfo
;
@Resource
BindCache
bindCache
;
private
BindCache
bindCache
;
@Resource
VechicleCache
vechicleCache
;
private
VechicleCache
vechicleCache
;
@Resource
ViolationCache
violationCache
;
private
ViolationCache
violationCache
;
@Resource
DrivingLicenseCache
drivingLicenseCache
;
private
DrivingLicenseCache
drivingLicenseCache
;
@Autowired
UnqIdUtil
unqIdUtil
;
private
UnqIdUtil
unqIdUtil
;
@Autowired
private
DrivingLicenseQrFeign
drivingLicenseQrFeign
;
private
DrivingLicenseFeign
drivingLicenseFeign
;
@Autowired
private
SmsFeign
smsFeign
;
@Autowired
DefaultConverter
defaultConverter
;
/**
* 解除绑定时间限制
* 单位:小时
*/
@Value
(
"${biz.unbind.time:720}"
)
Integer
unBindTime
;
private
Integer
unBindTime
;
/**
* 解绑限制次数
*/
@Value
(
"${biz.unbind.limit.count:10}"
)
Integer
unBindCount
;
private
Integer
unBindCount
;
/**
* 验证有效性限制时间
* 单位:小时
*/
@Value
(
"${biz.check.validity.limit.time:24}"
)
Integer
checkValidityLimitTime
;
private
Integer
checkValidityLimitTime
;
@Autowired
private
StringRedisTemplate
redisTemplate
;
private
final
ObjectMapper
objectMapper
=
new
ObjectMapper
();
private
final
String
bindKeyPrefix
=
"park:extend:bindInfo:"
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@DistributedLock
(
key
=
"'park:extend:lock:bind:userId:'+#info.userId+':timestamp:'+#info.timestamp"
,
expireTime
=
@DistributedLock
(
key
=
"'park:extend:lock:bind:userId:'+#bindInfoReq.userId+':timestamp:'+#bindInfoReq.timestamp"
,
expireTime
=
3000
,
waitTime
=
2000
,
retryTimes
=
50
)
public
Result
bind
(
ParkBindInfo
info
)
{
public
Result
bind
(
BindInfoReq
bindInfoReq
)
{
ParkBindInfo
info
=
defaultConverter
.
getMapperFacade
().
map
(
bindInfoReq
,
ParkBindInfo
.
class
);
//判断规则1:用户已绑定的车辆不超过3辆,包括已解绑但未过一个月的车辆
QueryWrapper
<
ParkBindInfo
>
boundQuery
=
new
QueryWrapper
();
boundQuery
.
eq
(
"user_id"
,
info
.
getUserId
());
...
...
@@ -156,7 +178,7 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
}
for
(
VehicleRes
res
:
byPlateNum
)
{
if
(
info
.
getPhone
().
equals
(
res
.
getSjhm
()))
{
if
(
info
.
get
Owner
Phone
().
equals
(
res
.
getSjhm
()))
{
info
.
setPlateType
(
res
.
getHpzl
());
}
}
...
...
@@ -166,6 +188,7 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
//规则3:判断当前车牌号是否已绑定
QueryWrapper
<
ParkBindInfo
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"user_id"
,
info
.
getUserId
());
queryWrapper
.
eq
(
"plate_num"
,
info
.
getPlateNum
());
queryWrapper
.
eq
(
"plate_type"
,
info
.
getPlateType
());
queryWrapper
.
eq
(
"status"
,
"1"
);
...
...
@@ -174,11 +197,62 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
return
ResultGenerator
.
fail
(
ResultCode
.
CAR_HAVE_BIND
);
}
//保存至redis
try
{
String
key
=
bindKeyPrefix
.
concat
(
info
.
getPhone
()).
concat
(
"-"
).
concat
(
info
.
getOwnerPhone
());
redisTemplate
.
opsForValue
().
set
(
key
,
objectMapper
.
writeValueAsString
(
info
),
30
,
TimeUnit
.
MINUTES
);
}
catch
(
Exception
e
)
{
log
.
error
(
"绑定异常:{}"
,
e
.
getMessage
());
return
ResultGenerator
.
fail
(
StatusCode
.
SYSTEM_ERROR
);
}
//发送验证码
SendVerifyCodeMicReq
sendMicReq
=
new
SendVerifyCodeMicReq
();
sendMicReq
.
setPhone
(
info
.
getOwnerPhone
());
sendMicReq
.
setVerifyCode
(
VerifyCodeUtil
.
getCode
());
sendMicReq
.
setTemplateCode
(
"PARK_BIND_VEHICLE"
);
smsFeign
.
sendVerifyCode
(
sendMicReq
).
fallback
();
return
ResultGenerator
.
success
();
}
info
.
setUnqId
(
unqIdUtil
.
getUnqId
());
info
.
setGmtBindTime
(
new
Date
());
bindCache
.
insert
(
info
);
return
ResultGenerator
.
success
(
new
BindInfoRes
(
info
.
getUnqId
()));
/**
* 车辆绑定短信验证接口
*
* @param req
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@DistributedLock
(
key
=
"'park:extend:lock:bind:smsValid:phone:'+#req.phone+':ownerPhone:'+#req.ownerPhone"
,
isSpin
=
false
)
public
Result
bindSmsValid
(
BindSmsValidReq
req
)
{
try
{
//获取缓存信息
String
key
=
bindKeyPrefix
.
concat
(
req
.
getPhone
()).
concat
(
"-"
).
concat
(
req
.
getOwnerPhone
());
String
bindInfoStr
=
redisTemplate
.
opsForValue
().
get
(
key
);
if
(
StrUtil
.
isBlank
(
bindInfoStr
))
{
log
.
error
(
"车辆绑定短信验证失败:未发起车辆绑定"
);
return
ResultGenerator
.
fail
(
StatusCode
.
BUSINESS_ERROR
.
getCode
(),
"已超时"
);
}
ParkBindInfo
bindInfo
=
objectMapper
.
readValue
(
bindInfoStr
,
ParkBindInfo
.
class
);
//验证短信
CheckVerifyCodeMicReq
checkVerifyCodeMicReq
=
new
CheckVerifyCodeMicReq
();
checkVerifyCodeMicReq
.
setPhone
(
req
.
getOwnerPhone
())
.
setVerifyCode
(
req
.
getSmsCode
()).
setTemplateCode
(
"PARK_BIND_VEHICLE"
);
smsFeign
.
checkVerifyCode
(
checkVerifyCodeMicReq
).
fallback
();
//绑定信息入库
bindInfo
.
setUnqId
(
unqIdUtil
.
getUnqId
());
bindInfo
.
setGmtBindTime
(
new
Date
());
if
(!
bindCache
.
insert
(
bindInfo
))
{
log
.
error
(
"车辆绑定短信验证失败:绑定信息入库失败"
);
return
ResultGenerator
.
fail
(
StatusCode
.
SYSTEM_ERROR
);
}
return
ResultGenerator
.
success
(
new
BindInfoRes
(
bindInfo
.
getUnqId
()));
}
catch
(
JsonProcessingException
e
)
{
log
.
error
(
"车辆绑定短信验证异常:{}"
,
e
.
getMessage
());
return
ResultGenerator
.
fail
(
StatusCode
.
SYSTEM_ERROR
);
}
}
/**
...
...
@@ -189,11 +263,10 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@DistributedLock
(
key
=
"'park:extend:lock:unbind:unqId:'+#req.unqId+':userId:'+#req.userId+':timestamp:'+#req"
+
".timestamp"
,
isSpin
=
false
)
@DistributedLock
(
key
=
"'park:extend:lock:unbind:unqId:'+#req.unqId+':userId:'+#req.userId"
,
isSpin
=
false
)
public
Result
unbindInfo
(
UnBindReq
req
)
{
ParkBindInfo
bindInfo
=
bindCache
.
getById
(
req
.
getUnqId
());
if
(
bindInfo
==
null
||
"0"
.
equals
(
bindInfo
.
getStatus
()))
{
if
(
bindInfo
==
null
||
"0"
.
equals
(
bindInfo
.
getStatus
())
||
!
req
.
getUserId
().
equals
(
bindInfo
.
getUserId
())
)
{
return
ResultGenerator
.
fail
(
ResultCode
.
BIND_INFO_UNKNOWN
);
}
if
(!
bindCache
.
unBind
(
req
.
getUnqId
(),
req
.
getUserId
()))
{
...
...
@@ -205,6 +278,61 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
}
/**
* 车辆解绑发送短信(后台操作)
*
* @param req
* @return
*/
@Override
@DistributedLock
(
key
=
"'park:extend:lock:adnmUnbind:unqId:'+#req.unqId"
,
isSpin
=
false
)
public
Result
adminUnbind
(
AdminUnbindReq
req
)
{
//获取绑定信息
ParkBindInfo
parkBindInfo
=
bindCache
.
getById
(
req
.
getUnqId
());
if
(
parkBindInfo
==
null
||
"0"
.
equals
(
parkBindInfo
.
getStatus
())
||
!
parkBindInfo
.
getUserId
().
equals
(
req
.
getUserId
()))
{
return
ResultGenerator
.
fail
(
ResultCode
.
BIND_INFO_UNKNOWN
);
}
//发送验证码
SendVerifyCodeMicReq
sendMicReq
=
new
SendVerifyCodeMicReq
();
sendMicReq
.
setPhone
(
parkBindInfo
.
getOwnerPhone
());
sendMicReq
.
setVerifyCode
(
VerifyCodeUtil
.
getCode
());
sendMicReq
.
setTemplateCode
(
"PARK_UNBIND_VEHICLE"
);
smsFeign
.
sendVerifyCode
(
sendMicReq
).
fallback
();
return
ResultGenerator
.
success
();
}
/**
* 车辆解绑短信验证(后台操作)
*
* @param req
* @return
*/
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
@DistributedLock
(
key
=
"'park:extend:lock:adminUnbind:smsValid:unqId:'+#req.unqId"
,
isSpin
=
false
)
public
Result
adminUnbindSmsValid
(
AdminUnbindSmsValidReq
req
)
{
//获取绑定信息
ParkBindInfo
parkBindInfo
=
bindCache
.
getById
(
req
.
getUnqId
());
if
(
parkBindInfo
==
null
||
"0"
.
equals
(
parkBindInfo
.
getStatus
()))
{
return
ResultGenerator
.
fail
(
ResultCode
.
BIND_INFO_UNKNOWN
);
}
//验证短信
CheckVerifyCodeMicReq
checkVerifyCodeMicReq
=
new
CheckVerifyCodeMicReq
();
checkVerifyCodeMicReq
.
setPhone
(
parkBindInfo
.
getOwnerPhone
())
.
setVerifyCode
(
req
.
getSmsCode
()).
setTemplateCode
(
"PARK_UNBIND_VEHICLE"
);
smsFeign
.
checkVerifyCode
(
checkVerifyCodeMicReq
).
fallback
();
//解绑
if
(!
bindCache
.
unBind
(
parkBindInfo
.
getUnqId
(),
parkBindInfo
.
getUserId
()))
{
//手动回滚
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
ResultGenerator
.
fail
(
"解绑失败"
);
}
return
ResultGenerator
.
success
();
}
/**
* 查询用户绑定信息
*
* @param query
...
...
@@ -322,6 +450,8 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
queryReq
.
setTimeEnd
(
new
Date
());
queryReq
.
setTimeStart
(
DateUtil
.
offsetMonth
(
new
Date
(),
-
12
));
List
<
ViolationMicRes
>
byPlateNumAndType
=
violationCache
.
getByPlateNumAndType
(
queryReq
);
//过滤已处理信息
byPlateNumAndType
=
byPlateNumAndType
.
stream
().
filter
(
v
->
!
"1"
.
equals
(
v
.
getStatus
())).
collect
(
Collectors
.
toList
());
/**
* 构建违章信息返回列表
...
...
@@ -341,7 +471,7 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
}
@Override
public
Result
<
DrivingLicenseInfoRes
>
drivingLicenseInfo
(
H5BindInfoQuery
query
)
{
public
Result
<
Vehicle
DrivingLicenseInfoRes
>
drivingLicenseInfo
(
H5BindInfoQuery
query
)
{
/**
* 校验当前的绑定信息是否存在
*/
...
...
@@ -386,16 +516,17 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
/**
* 获取二维码信息
*/
Response
<
DlQrRes
>
qrInfo
=
drivingLicense
Qr
Feign
.
getQrInfo
(
new
IdCardMicReq
().
setIdCard
(
byPlateNumAndType
.
getSfzmhm
()));
Response
<
DlQrRes
>
qrInfo
=
drivingLicenseFeign
.
getQrInfo
(
new
IdCardMicReq
().
setIdCard
(
byPlateNumAndType
.
getSfzmhm
()));
if
(!
qrInfo
.
isSuccess
()
||
qrInfo
.
getData
()
==
null
)
{
return
ResultGenerator
.
fail
(
ResultCode
.
DRIVING_LICENSE_UNKNOWN
);
}
/**
* 构建驾照信息查询结果
*/
DrivingLicenseInfoRes
result
=
new
DrivingLicenseInfoRes
();
VehicleDrivingLicenseInfoRes
result
=
new
Vehicle
DrivingLicenseInfoRes
();
result
.
setDriverName
(
drivingLicenseRes
.
getXm
());
result
.
setPlateNum
(
byPlateNumAndType
.
getHphm
());
result
.
setUserId
(
query
.
getUserId
());
result
.
setDlQr
(
qrInfo
.
getData
().
getQr
());
String
validityTime
=
drivingLicenseRes
.
getYxqz
();
if
(
StrUtil
.
isNotBlank
(
validityTime
)
&&
!
"null"
.
equalsIgnoreCase
(
validityTime
))
{
...
...
@@ -409,6 +540,59 @@ public class BindServiceImpl extends ServiceImpl<BindInfoMapper, ParkBindInfo> i
return
ResultGenerator
.
success
(
result
);
}
@Override
public
void
saveValid
(
String
userId
,
String
unqId
,
String
phone
)
{
/**
* 校验当前的绑定信息是否存在
*/
ParkBindInfo
bindInfo
=
bindCache
.
getById
(
unqId
);
if
(
bindInfo
==
null
||
"0"
.
equals
(
bindInfo
.
getStatus
()))
{
throw
new
BusinessException
(
ResultCode
.
BIND_INFO_UNKNOWN
);
}
if
(!
bindInfo
.
getUserId
().
equals
(
userId
)
||
!
bindInfo
.
getPhone
().
equals
(
phone
))
{
throw
new
BusinessException
(
StatusCode
.
PARAM_ERROR
.
getCode
(),
"客户唯一编码或手机号不正确"
);
}
/**
* 根据车牌号和车牌类型查询车辆信息
*/
PlateNumAndTypeQueryReq
vechicleInfoReq
=
new
PlateNumAndTypeQueryReq
();
vechicleInfoReq
.
setPlateType
(
bindInfo
.
getPlateType
());
vechicleInfoReq
.
setPlateNum
(
bindInfo
.
getPlateNum
());
VehicleRes
byPlateNumAndType
=
vechicleCache
.
getByPlateNumAndType
(
vechicleInfoReq
);
if
(
byPlateNumAndType
.
getSfzmhm
()
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
DRIVING_LICENSE_UNKNOWN
);
}
/**
* 根据身份证号码查询驾照信息
*/
IdCardQueryReq
idCardQueryReq
=
new
IdCardQueryReq
();
idCardQueryReq
.
setIdCard
(
byPlateNumAndType
.
getSfzmhm
());
DrivingLicenseRes
drivingLicenseRes
=
drivingLicenseCache
.
getByIdCard
(
idCardQueryReq
);
if
(
drivingLicenseRes
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
DRIVING_LICENSE_UNKNOWN
);
}
// 存至缓存,有效期一天
redisTemplate
.
opsForValue
().
set
(
getValidKey
(
userId
,
drivingLicenseRes
.
getSfzmhm
()),
phone
,
24
*
3600
,
TimeUnit
.
SECONDS
);
}
/**
* 验证是否已通过短信验证
*
* @param userId
* @param idCard
* @return
*/
@Override
public
Boolean
checkValid
(
String
userId
,
String
idCard
)
{
String
s
=
redisTemplate
.
opsForValue
().
get
(
getValidKey
(
userId
,
idCard
));
return
!
StringUtils
.
isEmpty
(
s
);
}
private
String
getValidKey
(
String
userId
,
String
idCard
)
{
return
"VehValidKey:"
+
userId
+
":"
+
idCard
;
}
}
...
...
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/CredentialsImageServiceImpl.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
domain
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hikcreate.common.sdk.exception.BusinessException
;
import
com.hikcreate.edl.common.image.builder.domain.DlImageDO
;
import
com.hikcreate.edl.common.image.builder.refactor.DrawDispatcher
;
import
com.hikcreate.edl.pub.web.mobile.domain.CredentialsImageService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.io.OutputStream
;
/**
* @author MOUBK
* @create 2020/7/20 17:53
*/
@Slf4j
@Service
public
class
CredentialsImageServiceImpl
implements
CredentialsImageService
{
@Autowired
private
DrawDispatcher
drawDispatcher
;
@Override
public
OutputStream
genDlImage
(
DlImageDO
params
)
{
OutputStream
outputStream
;
try
{
outputStream
=
drawDispatcher
.
drawDl
(
params
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Gen DrivingLicense Image Error, param={}, msg={}"
,
JSONObject
.
toJSONString
(
params
),
e
);
throw
new
BusinessException
(
"获取驾驶证图片失败"
);
}
return
outputStream
;
}
}
domain/src/main/java/com/hikcreate/edl/pub/web/mobile/domain/impl/DrivingLicenseServiceImpl.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
domain
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hikcreate.common.sdk.exception.BusinessException
;
import
com.hikcreate.edl.common.sdk.util.VerifyCodeUtil
;
import
com.hikcreate.edl.pub.web.mobile.domain.DrivingLicenseService
;
import
com.hikcreate.edl.pub.web.mobile.infra.core.Result.ResultCode
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.SmsFeign
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.param.request.CheckVerifyCodeMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pub_service_sms.param.request.SendVerifyCodeMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.DrivingLicenseFeign
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.CreditIdCardMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.IdCardMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DlQrRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DrivingLicenseMicRes
;
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.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
java.util.Date
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
/**
* @author MOUBK
* @create 2020/7/21 14:03
*/
@Slf4j
@Service
public
class
DrivingLicenseServiceImpl
implements
DrivingLicenseService
{
@Autowired
private
DrivingLicenseFeign
drivingLicenseFeign
;
@Autowired
private
SmsFeign
smsFeign
;
@Autowired
private
RedisTemplate
<
String
,
String
>
redisTemplate
;
private
static
final
String
REDIS_KEY
=
"drv:idcard"
;
private
static
final
String
REDIS_SMS_KEY
=
"drv:idcard:sms"
;
@Override
public
DrivingLicenseValidRes
checkIdCard
(
String
idCard
,
String
userId
)
{
DrivingLicenseMicRes
drivingLicenseMicRes
=
drivingLicenseFeign
.
getByIdCard
(
new
CreditIdCardMicReq
().
setIdCard
(
idCard
)).
fallback
().
getData
();
if
(
drivingLicenseMicRes
==
null
)
{
throw
new
BusinessException
(
ResultCode
.
DRIVING_LICENSE_UNKNOWN
);
}
// 保存在缓存
saveToRedis
(
userId
,
drivingLicenseMicRes
);
DrivingLicenseValidRes
drivingLicenseValidRes
=
new
DrivingLicenseValidRes
();
drivingLicenseValidRes
.
setUserId
(
userId
);
drivingLicenseValidRes
.
setPhone
(
drivingLicenseMicRes
.
getPhone
());
// 检查短信发送
if
(
checkSmsValid
(
userId
,
idCard
,
drivingLicenseMicRes
.
getPhone
()))
{
drivingLicenseValidRes
.
setSendSmsFlag
(
true
);
}
else
{
drivingLicenseValidRes
.
setSendSmsFlag
(
false
);
}
return
drivingLicenseValidRes
;
}
@Override
public
void
sendSmsCode
(
String
userId
)
{
DrivingLicenseMicRes
drivingLicenseMicRes
=
getFromRedis
(
userId
);
SendVerifyCodeMicReq
micReq
=
new
SendVerifyCodeMicReq
();
micReq
.
setPhone
(
drivingLicenseMicRes
.
getPhone
());
micReq
.
setVerifyCode
(
VerifyCodeUtil
.
getCode
());
micReq
.
setTemplateCode
(
"PARK_DRIVING_LICENSE_IDCARD"
);
smsFeign
.
sendVerifyCode
(
micReq
).
fallback
();
}
@Override
public
void
validSmsCode
(
String
userId
,
String
smsCode
)
{
DrivingLicenseMicRes
drivingLicenseMicRes
=
getFromRedis
(
userId
);
CheckVerifyCodeMicReq
req
=
new
CheckVerifyCodeMicReq
();
req
.
setPhone
(
drivingLicenseMicRes
.
getPhone
());
req
.
setVerifyCode
(
smsCode
);
req
.
setTemplateCode
(
"PARK_DRIVING_LICENSE_IDCARD"
);
smsFeign
.
checkVerifyCode
(
req
).
fallback
();
// 保存验证redis
saveSmsValid
(
userId
,
drivingLicenseMicRes
.
getIdCard
(),
drivingLicenseMicRes
.
getPhone
());
}
@Override
public
DrivingLicenseInfoRes
getDrivingLicenseInfo
(
String
userId
)
{
DrivingLicenseMicRes
drivingLicenseMicRes
=
getFromRedis
(
userId
);
DlQrRes
data
=
drivingLicenseFeign
.
getQrInfo
(
new
IdCardMicReq
().
setIdCard
(
drivingLicenseMicRes
.
getIdCard
())).
fallback
().
getData
();
/**
* 构建驾照信息查询结果
*/
DrivingLicenseInfoRes
result
=
new
DrivingLicenseInfoRes
();
result
.
setDriverName
(
drivingLicenseMicRes
.
getRealName
());
result
.
setDlQr
(
data
.
getQr
());
result
.
setValidityTime
(
drivingLicenseMicRes
.
getExpiryDate
());
String
status
=
DateUtil
.
compare
(
DateUtil
.
parseDate
(
drivingLicenseMicRes
.
getExpiryDate
()),
new
Date
())
>=
0
?
"有效"
:
"已过期"
;
result
.
setStatus
(
status
);
result
.
setUserId
(
userId
);
result
.
setIdCard
(
drivingLicenseMicRes
.
getIdCard
());
result
.
setSurplusGrade
(
String
.
valueOf
(
drivingLicenseMicRes
.
getResidualScore
()));
return
result
;
}
private
void
saveSmsValid
(
String
userId
,
String
idCard
,
String
phone
)
{
redisTemplate
.
opsForValue
().
set
(
getSmsKey
(
userId
,
idCard
),
phone
,
300
,
TimeUnit
.
SECONDS
);
}
private
boolean
checkSmsValid
(
String
userId
,
String
idCard
,
String
phone
)
{
String
value
=
redisTemplate
.
opsForValue
().
get
(
getSmsKey
(
userId
,
idCard
));
if
(
Objects
.
equals
(
phone
,
value
))
{
return
true
;
}
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
;
}
private
void
saveToRedis
(
String
userId
,
DrivingLicenseMicRes
drivingLicenseMicRes
)
{
redisTemplate
.
opsForValue
().
set
(
getKey
(
userId
),
JSONObject
.
toJSONString
(
drivingLicenseMicRes
),
24
*
3600
,
TimeUnit
.
SECONDS
);
}
private
DrivingLicenseMicRes
getFromRedis
(
String
userId
)
{
String
value
=
redisTemplate
.
opsForValue
().
get
(
getKey
(
userId
));
if
(!
StringUtils
.
isEmpty
(
value
))
{
return
JSONObject
.
parseObject
(
value
,
DrivingLicenseMicRes
.
class
);
}
return
null
;
}
private
String
getKey
(
String
userId
)
{
return
REDIS_KEY
+
userId
;
}
}
infra/pom.xml
View file @
9e28c5d3
...
...
@@ -92,6 +92,10 @@
<artifactId>
sdk
</artifactId>
<version>
${parent.version}
</version>
</dependency>
<dependency>
<groupId>
com.hikcreate.edl.common
</groupId>
<artifactId>
image-builder
</artifactId>
</dependency>
</dependencies>
</project>
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/core/config/DrawConfig.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
core
.
config
;
import
com.hikcreate.edl.common.image.builder.refactor.material.DlMaterial
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author 赵东
* @date 2019/7/8 10:25
*/
@Configuration
public
class
DrawConfig
{
@Bean
@ConfigurationProperties
(
"biz.image.builder.dl"
)
public
DlMaterial
dlMaterial
()
{
return
new
DlMaterial
();
}
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/core/configbean/FastDfsConfigBean.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
core
.
configbean
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
/**
* @author zhangfubing
* @create 2019/4/28 15:28
*/
@Component
@ConfigurationProperties
(
"biz.fastdfs"
)
@Data
public
class
FastDfsConfigBean
{
/**
* FastDfs地址
*/
private
String
bigDataInnerUrl
;
/**
* 大数据fastUrl
*
* @param suffix
* @return
*/
public
String
genBigDataInnerUrl
(
String
suffix
)
{
return
bigDataInnerUrl
+
suffix
;
}
}
\ No newline at end of file
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/dcp_service_vehicle/param/request/IdCardQueryReq.java
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
data
.
feign
.
dcp_service_vehicle
.
param
.
request
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
...
...
@@ -9,6 +10,7 @@ package com.hikcreate.edl.pub.web.mobile.infra.data.feign.dcp_service_vehicle.pa
* @create 2019/7/5 14:56
*/
@Data
@Accessors
(
chain
=
true
)
public
class
IdCardQueryReq
{
@NotBlank
(
message
=
"IdCard is not blank"
)
...
...
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/DrivingLicense
Qr
Feign.java
→
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/DrivingLicenseFeign.java
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
data
.
feign
.
edl_pvt_service_drivinglicense
;
import
com.hikcreate.common.sdk.response.apiparam.Response
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.CreditIdCardMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.request.IdCardMicReq
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DlQrRes
;
import
com.hikcreate.edl.pub.web.mobile.infra.data.feign.edl_pvt_service_drivinglicense.response.DrivingLicenseMicRes
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
/**
* 驾照调用
*
* @author MOUBK
* @create 2019/4/9 19:49
*/
@FeignClient
(
value
=
"edl-pvt-service-dl"
,
path
=
"drivingLicense/qr"
)
public
interface
DrivingLicenseQrFeign
{
@FeignClient
(
value
=
"edl-pvt-service-dl"
,
path
=
"drivingLicense"
)
public
interface
DrivingLicenseFeign
{
@PostMapping
(
"getByIdCard"
)
Response
<
DrivingLicenseMicRes
>
getByIdCard
(
@RequestBody
CreditIdCardMicReq
req
);
@PostMapping
(
"getQrInfo"
)
@PostMapping
(
"
/qr/
getQrInfo"
)
Response
<
DlQrRes
>
getQrInfo
(
@RequestBody
@Validated
IdCardMicReq
req
);
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/request/CreditIdCardMicReq.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
data
.
feign
.
edl_pvt_service_drivinglicense
.
request
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
static
com
.
hikcreate
.
edl
.
common
.
constant
.
ValidateConstant
.
ID_CARD_CONSTRAINT_REGEXP
;
/**
* @author MOUBK
* @create 2019/4/8 19:43
*/
@Data
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
CreditIdCardMicReq
{
@Pattern
(
regexp
=
ID_CARD_CONSTRAINT_REGEXP
,
message
=
"身份证号不正确"
)
@NotNull
private
String
idCard
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/data/feign/edl_pvt_service_drivinglicense/response/DrivingLicenseMicRes.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
data
.
feign
.
edl_pvt_service_drivinglicense
.
response
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
java.util.List
;
/**
* @author MOUBK
* @create 2019/4/9 17:49
*/
@Data
@NoArgsConstructor
@Accessors
(
chain
=
true
)
public
class
DrivingLicenseMicRes
{
// 驾照ID
private
Long
id
;
// 驾驶证头像
private
String
avatar
;
// 清分日期
private
String
clearDate
;
// 出身年月日
private
String
birthday
;
// 剩余计分
private
Integer
residualScore
;
// 累计计分
private
Integer
cumulativeScore
;
// 生效开始日期
private
String
effectiveDate
;
// 有效期止
private
String
expiryDate
;
// 下一审验日期
private
String
verifyDate
;
// 姓名
private
String
realName
;
// 身份证号
private
String
idCard
;
// 档案号
private
String
fileNum
;
// 准驾车型
private
String
licenseType
;
// 发证机关
private
String
certDepart
;
// 发证日期
private
String
issueDate
;
// 国籍
private
String
nationality
;
// 地址
private
String
address
;
// 性别
private
String
gender
;
// 驾驶证状态
private
String
licenseStatus
;
// 联系电话
private
String
phone
;
// 地址区划
private
String
residenceZone
;
// 是否锁定
private
Boolean
isLock
;
// 准驾车型列表
private
List
<
String
>
licenseTypes
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/entity/ParkBindInfo.java
View file @
9e28c5d3
...
...
@@ -29,6 +29,10 @@ public class ParkBindInfo implements Serializable {
*/
private
String
phone
;
/**
* 车主手机号码
*/
private
String
ownerPhone
;
/**
* 车牌颜色:A:白,B:灰,C:黄,D:粉,E:红,
* F:紫,G:绿,H:蓝,I:棕,J:黑',
*/
...
...
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/AdminUnbindReq.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
model
.
param
.
request
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @author lixian
* @description
* @date 2020/7/20 18:19
**/
@Data
@Accessors
(
chain
=
true
)
@NoArgsConstructor
@AllArgsConstructor
public
class
AdminUnbindReq
{
/**
* 客户id
*/
@NotBlank
(
message
=
"客户唯一编码不能为空"
)
private
String
userId
;
/**
* 用户车辆绑定唯一编号
*/
@NotBlank
(
message
=
"用户车辆绑定唯一编号不能为空"
)
private
String
unqId
;
/**
* 时间戳
*/
@NotNull
(
message
=
"时间戳不能为空"
)
private
Long
timestamp
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/AdminUnbindSmsValidReq.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
model
.
param
.
request
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
/**
* @author lixian
* @description
* @date 2020/7/20 18:36
**/
@Data
@Accessors
(
chain
=
true
)
@NoArgsConstructor
@AllArgsConstructor
public
class
AdminUnbindSmsValidReq
{
/**
* 用户车辆绑定唯一编号
*/
@NotBlank
(
message
=
"用户车辆绑定唯一编号不能为空"
)
private
String
unqId
;
/**
* 验证码
*/
@NotBlank
(
message
=
"验证码不能为空"
)
private
String
smsCode
;
/**
* 时间戳
*/
@NotNull
(
message
=
"时间戳不能为空"
)
private
Long
timestamp
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/BindInfoReq.java
View file @
9e28c5d3
...
...
@@ -22,8 +22,15 @@ public class BindInfoReq {
* 客户电话号码
*/
@NotBlank
(
message
=
"客户手机号不能为空"
)
@Pattern
(
regexp
=
"^(1)\\d{10}$"
,
message
=
"客户手机号无效"
)
private
String
phone
;
/**
* 车主手机号码
*/
@NotBlank
(
message
=
"车主手机号不能为空"
)
@Pattern
(
regexp
=
"^(1)\\d{10}$"
,
message
=
"车主手机号无效"
)
private
String
ownerPhone
;
/**
* 车牌颜色:A:白,B:灰,C:黄,D:粉,E:红,
* F:紫,G:绿,H:蓝,I:棕,J:黑',
*/
...
...
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/BindSmsValidReq.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
model
.
param
.
request
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Size
;
/**
* @author lixian
* @description
* @date 2020/7/20 17:09
**/
@Data
public
class
BindSmsValidReq
{
/**
* 客户电话号码
*/
@NotBlank
(
message
=
"客户手机号不能为空"
)
private
String
phone
;
/**
* 车主手机号码
*/
@NotBlank
(
message
=
"车主手机号不能为空"
)
@Size
(
max
=
11
,
message
=
"车主手机号无效"
)
private
String
ownerPhone
;
/**
* 验证码
*/
@NotBlank
(
message
=
"验证码不能为空"
)
private
String
smsCode
;
/**
* 时间戳
*/
@NotNull
(
message
=
"时间戳不能为空"
)
private
Long
timestamp
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/DrivingLicenseSendSmsCodeReq.java
0 → 100644
View file @
9e28c5d3
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 15:17
*/
@Data
public
class
DrivingLicenseSendSmsCodeReq
{
@NotBlank
(
message
=
"手机号不能为空"
)
private
String
userId
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/DrivingLicenseValidReq.java
0 → 100644
View file @
9e28c5d3
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 11:24
*/
@Data
public
class
DrivingLicenseValidReq
{
@NotBlank
(
message
=
"驾驶证号不能为空"
)
private
String
idCard
;
@NotBlank
(
message
=
"用户Id不能为空"
)
private
String
userId
;
private
Long
timestamp
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/request/DrivingLicenseValidSmsCodeReq.java
0 → 100644
View file @
9e28c5d3
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 15:17
*/
@Data
public
class
DrivingLicenseValidSmsCodeReq
{
@NotBlank
(
message
=
"手机号不能为空"
)
private
String
userId
;
@NotBlank
(
message
=
"手机验证码不能为空"
)
private
String
smsCode
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/response/DrivingLicenseInfoRes.java
View file @
9e28c5d3
...
...
@@ -9,12 +9,11 @@ import lombok.Data;
@Data
public
class
DrivingLicenseInfoRes
{
private
String
userId
;
// 身份证号
private
String
idCard
;
/**
* 车牌号
*/
private
String
plateNum
;
/**
*有效期止
* 有效期止
*/
private
String
validityTime
;
/**
...
...
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/response/DrivingLicenseValidRes.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
model
.
param
.
response
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* @author MOUBK
* @create 2020/7/21 11:26
*/
@Data
@Accessors
(
chain
=
true
)
public
class
DrivingLicenseValidRes
{
private
String
phone
;
private
String
userId
;
private
Boolean
sendSmsFlag
;
}
infra/src/main/java/com/hikcreate/edl/pub/web/mobile/infra/model/param/response/VehicleDrivingLicenseInfoRes.java
0 → 100644
View file @
9e28c5d3
package
com
.
hikcreate
.
edl
.
pub
.
web
.
mobile
.
infra
.
model
.
param
.
response
;
import
lombok.Data
;
/**
* @author MOUBK
* @create 2019/7/5 15:31
*/
@Data
public
class
VehicleDrivingLicenseInfoRes
extends
DrivingLicenseInfoRes
{
/**
* 车牌号
*/
private
String
plateNum
;
}
pom.xml
View file @
9e28c5d3
...
...
@@ -73,6 +73,11 @@
<scope>
import
</scope>
</dependency>
<dependency>
<groupId>
com.hikcreate.edl.common
</groupId>
<artifactId>
image-builder
</artifactId>
<version>
1.9-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.hikcreate.edl.pub.web.mobile
</groupId>
<artifactId>
api
</artifactId>
<version>
${version}
</version>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment