Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica-cloud-account
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
com.pica.cloud.account
pica-cloud-account
提交
9ced984c
提交
9ced984c
编写于
4月 24, 2020
作者:
Chongwen.jiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
app端身份证识别接口开发
上级
3bd6069b
流水线
#24745
已失败 于阶段
in 0 second
变更
13
流水线
1
展开全部
隐藏空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
734 行增加
和
13 行删除
+734
-13
pom.xml
server/pom.xml
+13
-1
Constants.java
...ica/cloud/account/account/server/constants/Constants.java
+12
-0
OcrController.java
...loud/account/account/server/controller/OcrController.java
+47
-0
AccountExceptionEnum.java
...ud/account/account/server/enums/AccountExceptionEnum.java
+1
-0
DoctorCardCacheModel.java
...ud/account/account/server/model/DoctorCardCacheModel.java
+79
-0
CardRecognizeEncryptReq.java
...d/account/account/server/req/CardRecognizeEncryptReq.java
+51
-0
CardRecognizeReq.java
...ca/cloud/account/account/server/req/CardRecognizeReq.java
+61
-0
CardRecognizeResp.java
.../cloud/account/account/server/resp/CardRecognizeResp.java
+50
-0
OcrService.java
...pica/cloud/account/account/server/service/OcrService.java
+29
-0
ThreadPoolService.java
...oud/account/account/server/service/ThreadPoolService.java
+24
-0
AuthCodeServiceImpl.java
...ount/account/server/service/impl/AuthCodeServiceImpl.java
+8
-12
OcrServiceImpl.java
...d/account/account/server/service/impl/OcrServiceImpl.java
+297
-0
ThreadPoolServiceImpl.java
...nt/account/server/service/impl/ThreadPoolServiceImpl.java
+62
-0
未找到文件。
server/pom.xml
浏览文件 @
9ced984c
...
...
@@ -174,7 +174,7 @@
<dependency>
<groupId>
com.pica.cloud.riskcontrol
</groupId>
<artifactId>
pica-cloud-riskcontrol-client
</artifactId>
<version>
1.0.3.
1
</version>
<version>
1.0.3.
2
</version>
</dependency>
<!-- apple identifyToken校验 -->
...
...
@@ -207,6 +207,18 @@
</exclusions>
</dependency>
<dependency>
<groupId>
com.pica.cloud.base.file
</groupId>
<artifactId>
pica-cloud-file-client
</artifactId>
<version>
1.0.2.1
</version>
</dependency>
<dependency>
<groupId>
com.pica.cloud.base.file
</groupId>
<artifactId>
pica-cloud-file-common
</artifactId>
<version>
1.0.2.2
</version>
</dependency>
</dependencies>
...
...
server/src/main/java/com/pica/cloud/account/account/server/constants/Constants.java
浏览文件 @
9ced984c
...
...
@@ -75,4 +75,16 @@ public class Constants {
/** 风控记录过数据 */
public
static
final
String
RC_RECORDED_DATA_KEY
=
"risk-{mobile}-{ip}"
;
/** app身份证识别,风控调用标识缓存key */
public
static
final
String
OCR_INVOKED_RC_KEY
=
"account-ocrInvokedRc-{timestamp}"
;
/** ocr识别出错接口返回的响应code */
public
static
final
String
OCR_FAIL
=
"3232"
;
/** 身份证正面ocr识别信息缓存key */
public
static
final
String
CARD_OCR_INFO_KEY
=
"ws-cardFront-{timestamp}"
;
/** 身份证正面ocr识别信息缓存key有效时间 */
public
static
final
int
CARD_OCR_EXPIRE
=
60
*
30
;
}
server/src/main/java/com/pica/cloud/account/account/server/controller/OcrController.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
import
com.pica.cloud.account.account.server.req.CardRecognizeEncryptReq
;
import
com.pica.cloud.account.account.server.service.OcrService
;
import
com.pica.cloud.account.account.server.util.IPUtil
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
com.pica.cloud.foundation.service.starter.interceptor.EnabledLoginValidate
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @ClassName OcrController
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/24 11:57
* @ModifyDate 2020/4/24 11:57
* @Version 1.0
*/
@Api
(
description
=
"ocr识别"
)
@RequestMapping
(
"/ocr"
)
@RestController
public
class
OcrController
extends
AccountBaseController
{
@Autowired
private
OcrService
ocrService
;
@ApiOperation
(
"身份证识别(app)"
)
@EnabledLoginValidate
@PostMapping
(
"/cardRecognize"
)
public
PicaResponse
ocrRecognizeApp
(
HttpServletRequest
request
,
@RequestBody
CardRecognizeEncryptReq
req
,
@RequestHeader
(
"token"
)
String
token
,
@RequestHeader
(
"sourceType"
)
Integer
sourceType
)
{
PicaUser
user
=
super
.
fetchPicaUser
();
String
ip
=
IPUtil
.
getIpAdrress
(
request
);
String
deviceIp
=
super
.
getDeviceInfo
(
"device_ip"
);
return
PicaResponse
.
toResponse
(
ocrService
.
ocrRecognizeApp
(
user
,
req
,
token
,
ip
,
sourceType
,
deviceIp
));
}
}
server/src/main/java/com/pica/cloud/account/account/server/enums/AccountExceptionEnum.java
浏览文件 @
9ced984c
...
...
@@ -55,6 +55,7 @@ public enum AccountExceptionEnum {
PICA_MOBILE_NOT_REGIST_H5
(
"216547"
,
"该手机号尚未设置密码,设置密码请前往云鹊医APP,或使用其他方式登录。"
),
PICA_MOBILE_NOT_SETED_PASSWORD_H5
(
"216548"
,
"该手机号尚未设置密码,设置密码请前往云鹊医APP,或使用其他方式登录。"
),
PICA_PWD_MISMATCH_5_H5
(
"216549"
,
"该账号密码错误次数已达上限请24小时后再试,或请使用其他登录方式"
),
CARD_FRONT_RECOGNIZE_ERROR
(
"216550"
,
"请上传真实带有头像面的身份证保证其边框完整,信息清晰无局部遮挡"
),
xxx_xxx
(
""
,
""
);
...
...
server/src/main/java/com/pica/cloud/account/account/server/model/DoctorCardCacheModel.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
model
;
/**
* @ClassName DoctorCardCacheDto
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/23 11:50
* @ModifyDate 2020/4/23 11:50
* @Version 1.0
*/
public
class
DoctorCardCacheModel
{
private
String
name
;
/** 男 女 */
private
String
sex
;
private
String
nation
;
private
String
birthday
;
private
String
nativePlace
;
private
String
cardNo
;
public
DoctorCardCacheModel
(){}
public
DoctorCardCacheModel
(
String
name
,
String
sex
,
String
nation
,
String
birthday
,
String
nativePlace
,
String
cardNo
){
this
.
name
=
name
;
this
.
sex
=
sex
;
this
.
nation
=
nation
;
this
.
birthday
=
birthday
;
this
.
nativePlace
=
nativePlace
;
this
.
cardNo
=
cardNo
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getSex
()
{
return
sex
;
}
public
void
setSex
(
String
sex
)
{
this
.
sex
=
sex
;
}
public
String
getNation
()
{
return
nation
;
}
public
void
setNation
(
String
nation
)
{
this
.
nation
=
nation
;
}
public
String
getBirthday
()
{
return
birthday
;
}
public
void
setBirthday
(
String
birthday
)
{
this
.
birthday
=
birthday
;
}
public
String
getNativePlace
()
{
return
nativePlace
;
}
public
void
setNativePlace
(
String
nativePlace
)
{
this
.
nativePlace
=
nativePlace
;
}
public
String
getCardNo
()
{
return
cardNo
;
}
public
void
setCardNo
(
String
cardNo
)
{
this
.
cardNo
=
cardNo
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/req/CardRecognizeEncryptReq.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
req
;
import
io.swagger.annotations.ApiModel
;
/**
* @ClassName CardRecognizeEncryptReq
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/24 15:04
* @ModifyDate 2020/4/24 15:04
* @Version 1.0
*/
@ApiModel
(
value
=
"CardRecognizeEncryptReq"
,
description
=
"app身份证识别请求类"
)
public
class
CardRecognizeEncryptReq
{
/**
* 加密后的密文
*/
private
String
key
;
/**
* 加密后的数据
*/
private
String
content
;
/** 图片base64字符串,该字段不加密 */
private
String
file64Str
;
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
String
getFile64Str
()
{
return
file64Str
;
}
public
void
setFile64Str
(
String
file64Str
)
{
this
.
file64Str
=
file64Str
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/req/CardRecognizeReq.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
req
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* @ClassName appUploadOcrReq
* @Description app身份证识别请求类
* @Author Chongwen.jiang
* @Date 2020/4/23 18:00
* @ModifyDate 2020/4/23 18:00
* @Version 1.0
*/
@ApiModel
(
value
=
"AppUploadOcrReq"
,
description
=
"原生端上传图片请求类"
)
public
class
CardRecognizeReq
{
@ApiModelProperty
(
value
=
"图片base64字符串"
)
private
String
file64Str
;
@ApiModelProperty
(
value
=
"图片原始名称"
)
private
String
name
;
@ApiModelProperty
(
value
=
"设备id"
)
private
String
device_token
;
@ApiModelProperty
(
value
=
"风控校验返回的唯一标识"
)
private
String
no
;
public
String
getFile64Str
()
{
return
file64Str
;
}
public
void
setFile64Str
(
String
file64Str
)
{
this
.
file64Str
=
file64Str
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getNo
()
{
return
no
;
}
public
void
setNo
(
String
no
)
{
this
.
no
=
no
;
}
public
String
getDevice_token
()
{
return
device_token
;
}
public
void
setDevice_token
(
String
device_token
)
{
this
.
device_token
=
device_token
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/resp/CardRecognizeResp.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
resp
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
/**
* @ClassName CardRecognizeResp
* @Description app份证识别响应类
* @Author Chongwen.jiang
* @Date 2020/4/17 17:50
* @ModifyDate 2020/4/17 17:50
* @Version 1.0
*/
@ApiModel
(
value
=
"CardRecognizeResp"
,
description
=
"身份证识别响应类"
)
public
class
CardRecognizeResp
{
@ApiModelProperty
(
value
=
"图片全路径"
)
private
String
fileUrl
;
@ApiModelProperty
(
value
=
"是否触发风控(1触发 2不需要)"
)
private
Boolean
needCheck
=
true
;
@ApiModelProperty
(
value
=
"唯一标识"
)
private
String
no
;
public
String
getFileUrl
()
{
return
fileUrl
;
}
public
void
setFileUrl
(
String
fileUrl
)
{
this
.
fileUrl
=
fileUrl
;
}
public
String
getNo
()
{
return
no
;
}
public
void
setNo
(
String
no
)
{
this
.
no
=
no
;
}
public
Boolean
getNeedCheck
()
{
return
needCheck
;
}
public
void
setNeedCheck
(
Boolean
needCheck
)
{
this
.
needCheck
=
needCheck
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/service/OcrService.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.req.CardRecognizeEncryptReq
;
import
com.pica.cloud.account.account.server.resp.CardRecognizeResp
;
import
com.pica.cloud.foundation.utils.entity.PicaUser
;
/**
* @ClassName OcrService
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/24 11:57
* @ModifyDate 2020/4/24 11:57
* @Version 1.0
*/
public
interface
OcrService
{
/**
* @Description app身份证识别接口(包括风控校验)
* @Author Chongwen.jiang
* @Date 2020/4/24 13:12
* @ModifyDate 2020/4/24 13:12
* @Params [user, entity, token, ip, sourceType, deviceIp]
* @Return com.pica.cloud.account.account.server.resp.CardRecognizeResp
*/
CardRecognizeResp
ocrRecognizeApp
(
PicaUser
user
,
CardRecognizeEncryptReq
entity
,
String
token
,
String
ip
,
Integer
sourceType
,
String
deviceIp
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/ThreadPoolService.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
/**
* @ClassName ThreadPoolService
* @Description 线程池服务
* @Author Chongwen.jiang
* @Date 2020/4/22 17:50
* @ModifyDate 2020/4/22 17:50
* @Version 1.0
*/
public
interface
ThreadPoolService
{
/**
* @Description 记录风控数据
* @Author Chongwen.jiang
* @Date 2020/4/22 17:58
* @ModifyDate 2020/4/22 17:58
* @Params [sourceType, mobile, ip, deviceToken, deviceIp]
* @Return void
*/
void
recordRcData
(
Integer
sourceType
,
String
mobile
,
String
ip
,
String
deviceToken
,
String
deviceIp
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/impl/AuthCodeServiceImpl.java
浏览文件 @
9ced984c
...
...
@@ -11,6 +11,7 @@ import com.pica.cloud.account.account.server.enums.SourceTypeEnum;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.model.JigsawCodeModel
;
import
com.pica.cloud.account.account.server.service.AuthCodeService
;
import
com.pica.cloud.account.account.server.service.ThreadPoolService
;
import
com.pica.cloud.account.account.server.util.AESUtil
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.account.account.server.util.IPUtil
;
...
...
@@ -55,11 +56,10 @@ public class AuthCodeServiceImpl implements AuthCodeService {
private
ICacheClient
cacheClient
;
@Autowired
@Qualifier
(
"accountThreadPool"
)
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
private
SliderImageService
sliderImageService
;
@Autowired
private
SliderImageService
sliderImage
Service
;
private
ThreadPoolService
threadPool
Service
;
/**
...
...
@@ -188,15 +188,11 @@ public class AuthCodeServiceImpl implements AuthCodeService {
rec
.
setDeviceIp
(
deviceIp
);
rec
.
setDeviceId
(
baseRequest
.
getDevice_token
());
rec
.
setSourceType
(
baseRequest
.
getSourceType
());
try
{
threadPoolTaskExecutor
.
execute
(()
->
{
logger
.
info
(
"recordRcData-execute-{}"
,
JSON
.
toJSONString
(
rec
));
PicaResponse
resp
=
rcClient
.
logSend
(
rec
);
logger
.
info
(
"recordRcData-resp-{}"
,
JSON
.
toJSONString
(
resp
));
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"recordRcData invoke error"
,
e
.
getMessage
());
}
String
ip
=
IPUtil
.
getIpAdrress
(
request
);
logger
.
info
(
"recordRcData start"
);
threadPoolService
.
recordRcData
(
baseRequest
.
getSourceType
(),
baseRequest
.
getMobile
(),
ip
,
baseRequest
.
getDevice_token
(),
deviceIp
);
}
/**
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/OcrServiceImpl.java
0 → 100644
浏览文件 @
9ced984c
此差异已折叠。
点击以展开。
server/src/main/java/com/pica/cloud/account/account/server/service/impl/ThreadPoolServiceImpl.java
0 → 100644
浏览文件 @
9ced984c
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.pica.cloud.account.account.server.service.ThreadPoolService
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
com.pica.cloud.foundation.utils.utils.StringUtil
;
import
com.pica.cloud.riskcontrol.riskcontrol.client.CheckCodeClient
;
import
com.pica.cloud.riskcontrol.riskcontrol.common.req.CheckcodeRiskReq
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.stereotype.Service
;
/**
* @ClassName ThreadPoolServiceImpl
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/22 17:51
* @ModifyDate 2020/4/22 17:51
* @Version 1.0
*/
@Service
public
class
ThreadPoolServiceImpl
implements
ThreadPoolService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ThreadPoolServiceImpl
.
class
);
@Autowired
@Qualifier
(
"accountThreadPool"
)
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@Autowired
private
CheckCodeClient
rcClient
;
@Override
public
void
recordRcData
(
Integer
sourceType
,
String
mobile
,
String
ip
,
String
deviceToken
,
String
deviceIp
)
{
CheckcodeRiskReq
rec
=
new
CheckcodeRiskReq
();
rec
.
setSourceType
(
sourceType
);
rec
.
setMobile
(
mobile
);
rec
.
setIp
(
ip
);
if
(!
StringUtil
.
isEmpty
(
deviceToken
))
{
rec
.
setDeviceId
(
deviceToken
);
}
if
(!
StringUtil
.
isEmpty
(
deviceIp
))
{
rec
.
setDeviceIp
(
deviceIp
);
}
try
{
threadPoolTaskExecutor
.
execute
(()
->
{
logger
.
info
(
"recordRcData-execute-{}"
,
JSON
.
toJSONString
(
rec
));
PicaResponse
resp
=
rcClient
.
logSend
(
rec
);
logger
.
info
(
"recordRcData-resp-{}"
,
JSON
.
toJSONString
(
resp
));
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"recordRcData invoke error"
,
e
.
getMessage
());
}
}
}
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录