记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
fc323e8b
Commit
fc323e8b
authored
Apr 15, 2026
by
wangyifan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
草莓护照-用户端 二要素认证
parent
7f8a9858
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
122 additions
and
0 deletions
+122
-0
AdamIdentityParam.java
...m/liquidnet/service/adam/dto/param/AdamIdentityParam.java
+19
-0
IAdamUserService.java
.../com/liquidnet/service/adam/service/IAdamUserService.java
+9
-0
AdamUserController.java
...liquidnet/service/adam/controller/AdamUserController.java
+66
-0
AdamUserServiceImpl.java
...uidnet/service/adam/service/impl/AdamUserServiceImpl.java
+28
-0
No files found.
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/param/AdamIdentityParam.java
0 → 100644
View file @
fc323e8b
package
com
.
liquidnet
.
service
.
adam
.
dto
.
param
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
@Data
@ApiModel
(
"二要素认证参数"
)
public
class
AdamIdentityParam
{
@ApiModelProperty
(
value
=
"姓名(手动填写时传)"
)
private
String
name
;
@ApiModelProperty
(
value
=
"证件号(手动填写时传)"
)
private
String
idCard
;
@ApiModelProperty
(
value
=
"入场人ID(选择观演人时传)"
)
private
String
entersId
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/service/IAdamUserService.java
View file @
fc323e8b
...
...
@@ -72,4 +72,13 @@ public interface IAdamUserService {
AdamRealInfoVo
identityForUpsert
(
String
uid
,
String
name
,
String
idCard
,
String
mobile
,
boolean
updateFlg
);
AdamRealInfoVo
identityForUpdate
(
String
uid
,
String
mobile
,
int
idType
,
int
node
,
String
idCard
,
String
idName
);
/**
* 二要素认证
* @param uid
* @param name
* @param idCard
* @return
*/
AdamRealInfoVo
verifyTwoElements
(
String
uid
,
String
name
,
String
idCard
);
}
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamUserController.java
View file @
fc323e8b
...
...
@@ -12,6 +12,7 @@ import com.liquidnet.commons.lang.util.SensitizeUtil;
import
com.liquidnet.service.adam.constant.AdamConst
;
import
com.liquidnet.service.adam.dto.AdamThirdPartParam
;
import
com.liquidnet.service.adam.dto.AdamUserInfoParam
;
import
com.liquidnet.service.adam.dto.param.AdamIdentityParam
;
import
com.liquidnet.service.adam.dto.vo.*
;
import
com.liquidnet.service.adam.service.AdamRdmService
;
import
com.liquidnet.service.adam.service.IAdamUserInfoService
;
...
...
@@ -535,6 +536,71 @@ public class AdamUserController {
return
ResponseDto
.
success
(
adamRdmService
.
getUserInfoVoByUid
(
uid
));
}
@ApiOperationSupport
(
order
=
15
)
@ApiOperation
(
value
=
"实名认证V2(二要素)"
,
notes
=
"支持手动填写(name+idCard) 或 选择观演人(entersId)"
)
@PostMapping
(
value
=
{
"identity/v2"
})
public
ResponseDto
<
AdamRealInfoVo
>
identityV2
(
@RequestBody
AdamIdentityParam
param
)
{
String
currentUid
=
CurrentUtil
.
getCurrentUid
();
// 1. 检查当前登录用户是否已实名
AdamRealInfoVo
realInfoVo
=
adamRdmService
.
getRealInfoVoByUidPlain
(
currentUid
);
if
(
realInfoVo
!=
null
&&
realInfoVo
.
getState
()
!=
null
&&
realInfoVo
.
getState
()
==
1
)
{
// 已实名,直接返回
realInfoVo
.
setName
(
SensitizeUtil
.
chineseName
(
realInfoVo
.
getName
()));
realInfoVo
.
setIdCard
(
SensitizeUtil
.
custom
(
realInfoVo
.
getIdCard
(),
3
,
2
));
return
ResponseDto
.
success
(
realInfoVo
);
}
String
name
=
param
.
getName
();
String
idCard
=
param
.
getIdCard
();
// 2. 如果传了 entersId,则根据 entersId 获取观演人的姓名和身份证号
if
(
StringUtils
.
isNotBlank
(
param
.
getEntersId
()))
{
List
<
AdamEntersVo
>
entersList
=
adamRdmService
.
getEntersVoByUid
(
currentUid
);
if
(!
CollectionUtils
.
isEmpty
(
entersList
))
{
AdamEntersVo
entersVo
=
entersList
.
stream
()
.
filter
(
e
->
param
.
getEntersId
().
equals
(
e
.
getEntersId
()))
.
findFirst
()
.
orElse
(
null
);
if
(
entersVo
==
null
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10105"
));
// 观演人不存在
}
// 只同步身份证类型的观演人信息 (type=1 大陆身份证)
if
(
entersVo
.
getType
()
==
null
||
entersVo
.
getType
()
!=
1
)
{
return
ResponseDto
.
failure
(
"10101"
,
"仅支持大陆身份证类型的观演人进行实名认证"
);
}
name
=
entersVo
.
getName
();
idCard
=
entersVo
.
getIdCard
();
}
else
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10105"
));
// 观演人不存在
}
}
// 3. 校验姓名和身份证号不能为空
if
(
StringUtils
.
isBlank
(
name
)
||
StringUtils
.
isBlank
(
idCard
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10101"
));
// 姓名或身份证件号无效
}
// 4. 格式校验
if
(!
java
.
util
.
regex
.
Pattern
.
matches
(
LnsRegex
.
Valid
.
CN_HANZI
,
name
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10103"
));
}
if
(!
java
.
util
.
regex
.
Pattern
.
matches
(
LnsRegex
.
Valid
.
CN_ID_CARD_REF
,
idCard
))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10104"
));
}
AdamRealInfoVo
vo
=
adamUserService
.
verifyTwoElements
(
currentUid
,
name
,
idCard
);
if
(
null
==
vo
)
{
log
.
error
(
"[identityV2] 二要素认证失败, param: {}"
,
JsonUtils
.
toJson
(
param
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10101"
));
}
vo
.
setName
(
SensitizeUtil
.
chineseName
(
vo
.
getName
()));
vo
.
setIdCard
(
SensitizeUtil
.
custom
(
vo
.
getIdCard
(),
3
,
2
));
return
ResponseDto
.
success
(
vo
);
}
/* ---------------------------- Internal Method ---------------------------- */
private
static
final
String
PHP_API_SMS_CODE_VALID
=
"/smsValidation"
;
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamUserServiceImpl.java
View file @
fc323e8b
...
...
@@ -509,4 +509,32 @@ public class AdamUserServiceImpl implements IAdamUserService {
log
.
debug
(
"#RDS耗时:{}ms"
,
System
.
currentTimeMillis
()
-
s
);
return
vo
;
}
@Override
public
AdamRealInfoVo
verifyTwoElements
(
String
uid
,
String
name
,
String
idCard
)
{
try
{
adamRdmService
.
identityHandler1
(
uid
,
name
,
idCard
);
AdamRealName
realName
=
new
AdamRealName
();
realName
.
setRealNameId
(
IDGenerator
.
nextSnowId
()
+
""
);
realName
.
setUid
(
uid
);
realName
.
setType
(
1
);
realName
.
setNode
(
2
);
realName
.
setName
(
name
);
realName
.
setIdCard
(
idCard
);
realName
.
setState
(
1
);
realName
.
setCreatedAt
(
LocalDateTime
.
now
());
adamRealNameService
.
add
(
realName
);
AdamRealInfoVo
vo
=
AdamRealInfoVo
.
getNew
().
copy
(
realName
);
long
s
=
System
.
currentTimeMillis
();
adamRdmService
.
setRealInfoVoByUid
(
uid
,
vo
);
log
.
debug
(
"#RDS耗时:{}ms"
,
System
.
currentTimeMillis
()
-
s
);
return
vo
;
}
catch
(
Exception
e
)
{
log
.
error
(
"error"
,
e
);
return
null
;
}
}
}
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