Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
head_group
xyqb-user2
Commits
5b800aeb
Commit
5b800aeb
authored
Mar 20, 2018
by
技术部-任文超
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 20180301-Fixed_LogException
parents
953c4bf0
73189d4d
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
249 additions
and
104 deletions
+249
-104
RegisterMqConfig.java
...n/java/cn/quantgroup/xyqb/config/mq/RegisterMqConfig.java
+32
-1
ImageCaptchaController.java
...b/controller/external/captcha/ImageCaptchaController.java
+10
-1
UserQueryLogController.java
.../controller/external/queryLog/UserQueryLogController.java
+47
-37
InnerController.java
...tgroup/xyqb/controller/external/user/InnerController.java
+6
-2
AuthInfoController.java
...up/xyqb/controller/internal/login/AuthInfoController.java
+4
-0
UserController.java
...ntgroup/xyqb/controller/internal/user/UserController.java
+47
-34
UserQueryInfo.java
src/main/java/cn/quantgroup/xyqb/model/UserQueryInfo.java
+19
-7
UserStatistics.java
src/main/java/cn/quantgroup/xyqb/model/UserStatistics.java
+7
-1
IRegisterMqService.java
...ava/cn/quantgroup/xyqb/service/mq/IRegisterMqService.java
+3
-3
IRegisterMqServiceImpl.java
...antgroup/xyqb/service/mq/Impl/IRegisterMqServiceImpl.java
+22
-11
SessionServiceImpl.java
...ntgroup/xyqb/service/session/impl/SessionServiceImpl.java
+1
-0
SmsServiceImpl.java
...a/cn/quantgroup/xyqb/service/sms/impl/SmsServiceImpl.java
+6
-2
MqUtils.java
src/main/java/cn/quantgroup/xyqb/util/MqUtils.java
+24
-0
TestStringCode.java
src/test/java/login/TestStringCode.java
+21
-5
No files found.
src/main/java/cn/quantgroup/xyqb/config/mq/RegisterMqConfig.java
View file @
5b800aeb
...
@@ -24,6 +24,12 @@ public class RegisterMqConfig {
...
@@ -24,6 +24,12 @@ public class RegisterMqConfig {
private
String
queueName
;
private
String
queueName
;
@Value
(
"${register.rabbitmq.exchange}"
)
@Value
(
"${register.rabbitmq.exchange}"
)
private
String
registerMqExchange
;
private
String
registerMqExchange
;
@Value
(
"${register.rabbitmq.queue.qq_gdt}"
)
private
String
queueName4Gdt
;
@Value
(
"${register.rabbitmq.routing_key.qq_gdt}"
)
private
String
routingKey4Gdt
;
@Value
(
"${register.rabbitmq.exchange.qq_gdt}"
)
private
String
exchange4Gdt
;
@Value
(
"${register.rabbitmq.connection.host}"
)
@Value
(
"${register.rabbitmq.connection.host}"
)
private
String
host
;
private
String
host
;
...
@@ -75,11 +81,36 @@ public class RegisterMqConfig {
...
@@ -75,11 +81,36 @@ public class RegisterMqConfig {
return
binding
;
return
binding
;
}
}
@Bean
(
name
=
"registerRabbitTemplate"
)
@Bean
(
name
=
"registerRabbitTemplate"
)
public
RabbitTemplate
registerTemplate
(
@Qualifier
(
"registerMqFactory"
)
ConnectionFactory
registerMqFactory
)
{
public
RabbitTemplate
registerTemplate
(
@Qualifier
(
"registerMqFactory"
)
ConnectionFactory
registerMqFactory
)
{
RabbitTemplate
template
=
new
RabbitTemplate
(
registerMqFactory
);
RabbitTemplate
template
=
new
RabbitTemplate
(
registerMqFactory
);
template
.
setExchange
(
registerMqExchange
);
template
.
setExchange
(
registerMqExchange
);
return
template
;
return
template
;
}
}
@Bean
(
name
=
"registerMqExchange4Gdt"
)
public
FanoutExchange
registerMqExchange4Gdt
()
{
return
new
FanoutExchange
(
exchange4Gdt
);
}
@Bean
(
name
=
"registerMqQueue4Gdt"
)
public
Queue
registerMqQueue4Gdt
()
{
return
new
Queue
(
queueName4Gdt
);
}
@Bean
(
name
=
"registerMqBinding4Gdt"
)
public
Binding
registerMqBinding4Gdt
(
@Qualifier
(
"registerMqAmqpAdmin"
)
AmqpAdmin
registerMqAmqpAdmin
,
@Qualifier
(
"registerMqQueue4Gdt"
)
Queue
registerMqQueue4Gdt
,
@Qualifier
(
"registerMqExchange4Gdt"
)
FanoutExchange
registerMqExchange4Gdt
)
{
Binding
binding
=
BindingBuilder
.
bind
(
registerMqQueue4Gdt
).
to
(
registerMqExchange4Gdt
);
registerMqAmqpAdmin
.
declareBinding
(
binding
);
return
binding
;
}
@Bean
(
name
=
"registerRabbitTemplate4Gdt"
)
public
RabbitTemplate
registerTemplate4Gdt
(
@Qualifier
(
"registerMqFactory"
)
ConnectionFactory
registerMqFactory
)
{
RabbitTemplate
template
=
new
RabbitTemplate
(
registerMqFactory
);
template
.
setExchange
(
exchange4Gdt
);
return
template
;
}
}
}
src/main/java/cn/quantgroup/xyqb/controller/external/captcha/ImageCaptchaController.java
View file @
5b800aeb
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
.
captcha
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
external
.
captcha
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaValidator
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.model.JsonResult
;
import
cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService
;
import
cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService
;
import
java.util.*
;
import
java.util.*
;
...
@@ -58,5 +59,13 @@ public class ImageCaptchaController {
...
@@ -58,5 +59,13 @@ public class ImageCaptchaController {
data
.
put
(
"image"
,
String
.
format
(
IMG_BASE64_PATTREN
,
imageBase64
));
data
.
put
(
"image"
,
String
.
format
(
IMG_BASE64_PATTREN
,
imageBase64
));
return
JsonResult
.
buildSuccessResult
(
""
,
data
);
return
JsonResult
.
buildSuccessResult
(
""
,
data
);
}
}
/**
* 图片验证码验证
* 注意:本方法有中间层在用,用于QG图形验证码检验
*/
@CaptchaValidator
@RequestMapping
(
"/verification_image_code"
)
public
JsonResult
verificationImageCode
()
{
return
JsonResult
.
buildSuccessResult
(
""
,
null
);
}
}
}
src/main/java/cn/quantgroup/xyqb/controller/external/queryLog/UserQueryLogController.java
View file @
5b800aeb
...
@@ -69,20 +69,18 @@ public class UserQueryLogController {
...
@@ -69,20 +69,18 @@ public class UserQueryLogController {
@Autowired
@Autowired
private
IHttpService
httpService
;
private
IHttpService
httpService
;
private
static
final
String
publicKey
=
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYiw1PKWnCbkKyzHK+blHpKTR/qtO3Oq7nvjSdcopCSmOJqji3B+qJMrf03242mYJIQeF3YSTQZTfri5EkNgoqn0Y/KYpLAKuq89jPdIkB3lvirvew9tpfbAT4B14WgoWdMH5ooqBt0ly3f+JjoBM5dKFTOrhckhFDoaB3UAaaiQIDAQAB"
;
private
static
final
String
PUBLIC_KEY
=
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCYiw1PKWnCbkKyzHK+blHpKTR/qtO3Oq7nvjSdcopCSmOJqji3B+qJMrf03242mYJIQeF3YSTQZTfri5EkNgoqn0Y/KYpLAKuq89jPdIkB3lvirvew9tpfbAT4B14WgoWdMH5ooqBt0ly3f+JjoBM5dKFTOrhckhFDoaB3UAaaiQIDAQAB"
;
private
static
final
String
privateKey
=
"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJiLDU8pacJuQrLMcr5uUekpNH+q07c6rue+NJ1yikJKY4mqOLcH6okyt/TfbjaZgkhB4XdhJNBlN+uLkSQ2CiqfRj8piksAq6rz2M90iQHeW+Ku97D22l9sBPgHXhaChZ0wfmiioG3SXLd/4mOgEzl0oVM6uFySEUOhoHdQBpqJAgMBAAECgYA3DfCWwoaWEr9l0p4TFrPfZ+y3qwrQVZCsuRw6Ow2lUT3NgK8JeATw0WpNKZqYgBziQUzDjj8AK5fcHjobDJnsKGqC2VQ+j05hQZztoHTrYxOx6xrGxIzqmbt/dPsw779xXSRJu3DuUeCm6CrGZpVpPX/NtXBxIhXRY2KRNa1SZQJBAPMboc+M6/OeGPQqFvXg9jgEWcosBpy6HtukfjONQAVuM5e0pZa8SQCLhcoHgbbqcEhbDAJEqr9x9eZjjFPSt08CQQCgoe/hOVf0s5oo1IM1TVEUkGOIzVVlyTMwu0p4jwt3987D7BKZe7mCl41quWDwL4JIQ0GcivVMpJzYsDBZHRqnAkBMgCKAHHlXdSWnF+OXxg3U/NGAhDAke5EgTvgDouxFiTMlBwygjWlviXg1Zf1UoRtqOXRi9lbA3cyijirnacSTAkBmve0ug30MmOvbfcHGkANyQcBIOf2LMxu46bKCVgwh2bC4hACJhydqrgDX6GZmehy8l7gZpo+rTAa+WkMyXHk1AkEArt6ElkyNI7TDu0By59Zin05tuZJr6QoMXs9bVH+xP3OBG1KfPYTBc9yb5MOjXIxAjyGGeDpUfhuUDBe56GTOBA=="
;
private
static
final
String
PRIVATE_KEY
=
"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJiLDU8pacJuQrLMcr5uUekpNH+q07c6rue+NJ1yikJKY4mqOLcH6okyt/TfbjaZgkhB4XdhJNBlN+uLkSQ2CiqfRj8piksAq6rz2M90iQHeW+Ku97D22l9sBPgHXhaChZ0wfmiioG3SXLd/4mOgEzl0oVM6uFySEUOhoHdQBpqJAgMBAAECgYA3DfCWwoaWEr9l0p4TFrPfZ+y3qwrQVZCsuRw6Ow2lUT3NgK8JeATw0WpNKZqYgBziQUzDjj8AK5fcHjobDJnsKGqC2VQ+j05hQZztoHTrYxOx6xrGxIzqmbt/dPsw779xXSRJu3DuUeCm6CrGZpVpPX/NtXBxIhXRY2KRNa1SZQJBAPMboc+M6/OeGPQqFvXg9jgEWcosBpy6HtukfjONQAVuM5e0pZa8SQCLhcoHgbbqcEhbDAJEqr9x9eZjjFPSt08CQQCgoe/hOVf0s5oo1IM1TVEUkGOIzVVlyTMwu0p4jwt3987D7BKZe7mCl41quWDwL4JIQ0GcivVMpJzYsDBZHRqnAkBMgCKAHHlXdSWnF+OXxg3U/NGAhDAke5EgTvgDouxFiTMlBwygjWlviXg1Zf1UoRtqOXRi9lbA3cyijirnacSTAkBmve0ug30MmOvbfcHGkANyQcBIOf2LMxu46bKCVgwh2bC4hACJhydqrgDX6GZmehy8l7gZpo+rTAa+WkMyXHk1AkEArt6ElkyNI7TDu0By59Zin05tuZJr6QoMXs9bVH+xP3OBG1KfPYTBc9yb5MOjXIxAjyGGeDpUfhuUDBe56GTOBA=="
;
@RequestMapping
(
"/queryLog"
)
@RequestMapping
(
"/queryLog"
)
public
JsonResult
queryLog
(
HttpServletRequest
request
,
@RequestParam
(
required
=
false
)
String
beginDate
,
@RequestParam
(
required
=
false
)
String
endDate
,
Integer
pageId
,
Integer
pageSize
)
{
public
JsonResult
queryLog
(
HttpServletRequest
request
,
@RequestParam
(
required
=
false
)
String
beginDate
,
@RequestParam
(
required
=
false
)
String
endDate
,
Integer
pageId
,
Integer
pageSize
)
{
LOGGER
.
info
(
"查询日期:beginDate{},endDate{}"
,
beginDate
,
endDate
);
LOGGER
.
info
(
"查询日期:beginDate{},endDate{}"
,
beginDate
,
endDate
);
String
token
=
request
.
getHeader
(
Constants
.
X_AUTH_TOKEN
);
String
token
=
request
.
getHeader
(
Constants
.
X_AUTH_TOKEN
);
if
(
token
==
null
||
token
.
equals
(
""
)){
if
(
StringUtils
.
isEmpty
(
token
)){
LOGGER
.
info
(
"token为空,非法查询"
);
LOGGER
.
info
(
"token为空,非法查询"
);
return
JsonResult
.
buildErrorStateResult
(
"缺少授权信息"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"缺少授权信息"
,
null
);
}
}
if
(
StringUtils
.
isEmpty
(
checkUserToken
(
token
))){
if
(
checkUserToken
(
token
).
equals
(
""
)){
LOGGER
.
info
(
"token授权异常"
);
LOGGER
.
info
(
"token授权异常"
);
return
JsonResult
.
buildErrorStateResult
(
"未授权查询"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"未授权查询"
,
null
);
}
}
...
@@ -144,7 +142,7 @@ public class UserQueryLogController {
...
@@ -144,7 +142,7 @@ public class UserQueryLogController {
LOGGER
.
info
(
"查询条件:key{},columns{}"
,
key
,
columns
);
LOGGER
.
info
(
"查询条件:key{},columns{}"
,
key
,
columns
);
String
token
=
request
.
getHeader
(
Constants
.
X_AUTH_TOKEN
);
String
token
=
request
.
getHeader
(
Constants
.
X_AUTH_TOKEN
);
if
(
token
==
null
||
token
.
equals
(
""
)){
if
(
StringUtils
.
isEmpty
(
token
)){
LOGGER
.
info
(
"token为空,非法查询"
);
LOGGER
.
info
(
"token为空,非法查询"
);
return
JsonResult
.
buildErrorStateResult
(
"缺少授权信息"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"缺少授权信息"
,
null
);
}
}
...
@@ -154,7 +152,7 @@ public class UserQueryLogController {
...
@@ -154,7 +152,7 @@ public class UserQueryLogController {
//后台参数校验
//后台参数校验
//校验用户权限
//校验用户权限
String
userName
=
checkUserToken
(
token
);
String
userName
=
checkUserToken
(
token
);
if
(
userName
.
equals
(
""
)){
if
(
StringUtils
.
isEmpty
(
userName
)){
LOGGER
.
info
(
"token授权异常"
);
LOGGER
.
info
(
"token授权异常"
);
return
JsonResult
.
buildErrorStateResult
(
"未授权查询"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"未授权查询"
,
null
);
}
}
...
@@ -165,8 +163,8 @@ public class UserQueryLogController {
...
@@ -165,8 +163,8 @@ public class UserQueryLogController {
String
[]
values
=
keyValues
.
split
(
"\\n"
);
String
[]
values
=
keyValues
.
split
(
"\\n"
);
List
<
String
>
queryV
=
Arrays
.
asList
(
values
);
List
<
String
>
queryV
=
Arrays
.
asList
(
values
);
if
(
queryV
!=
null
&&
queryV
.
size
()>
1
000
){
if
(
queryV
!=
null
&&
queryV
.
size
()>
50
000
){
return
JsonResult
.
buildErrorStateResult
(
"查询记录数是"
+
queryV
.
size
()+
",超过
1
000条限制"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"查询记录数是"
+
queryV
.
size
()+
",超过
50
000条限制"
,
null
);
}
}
List
<
UserQueryInfo
>
userQueryInfos
=
new
ArrayList
<
UserQueryInfo
>();
List
<
UserQueryInfo
>
userQueryInfos
=
new
ArrayList
<
UserQueryInfo
>();
...
@@ -187,7 +185,7 @@ public class UserQueryLogController {
...
@@ -187,7 +185,7 @@ public class UserQueryLogController {
columns
=
columns
+
","
+
key
;
columns
=
columns
+
","
+
key
;
}
}
if
(
key
.
equals
(
"userId"
)){
if
(
Objects
.
equals
(
key
,
"userId"
)){
List
<
Long
>
userIds
=
new
ArrayList
<
Long
>();
List
<
Long
>
userIds
=
new
ArrayList
<
Long
>();
try
{
try
{
for
(
String
s:
queryV
){
for
(
String
s:
queryV
){
...
@@ -204,7 +202,7 @@ public class UserQueryLogController {
...
@@ -204,7 +202,7 @@ public class UserQueryLogController {
}
}
userDetailPage
=
userDetailService
.
getUserDetailsPage
(
userIds
,
null
,
null
,
pageId
,
pageSize
,
"auto"
);
userDetailPage
=
userDetailService
.
getUserDetailsPage
(
userIds
,
null
,
null
,
pageId
,
pageSize
,
"auto"
);
}
else
if
(
key
.
equals
(
Constants
.
PHONE_NO
)){
}
else
if
(
Objects
.
equals
(
key
,
Constants
.
PHONE_NO
)){
for
(
String
pn:
queryV
){
for
(
String
pn:
queryV
){
if
(!
ValidationUtil
.
validatePhoneNo
(
pn
)){
if
(!
ValidationUtil
.
validatePhoneNo
(
pn
)){
return
JsonResult
.
buildErrorStateResult
(
"查询的手机号码"
+
pn
+
"格式有误"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"查询的手机号码"
+
pn
+
"格式有误"
,
null
);
...
@@ -212,7 +210,7 @@ public class UserQueryLogController {
...
@@ -212,7 +210,7 @@ public class UserQueryLogController {
}
}
userDetailPage
=
userDetailService
.
getUserDetailsPage
(
null
,
queryV
,
null
,
pageId
,
pageSize
,
"auto"
);
userDetailPage
=
userDetailService
.
getUserDetailsPage
(
null
,
queryV
,
null
,
pageId
,
pageSize
,
"auto"
);
}
else
if
(
key
.
equals
(
"idNo"
)){
}
else
if
(
Objects
.
equals
(
key
,
"idNo"
)){
IdcardValidator
iv
=
new
IdcardValidator
();
IdcardValidator
iv
=
new
IdcardValidator
();
for
(
String
idno:
queryV
){
for
(
String
idno:
queryV
){
if
(!
iv
.
is18Idcard
(
idno
)&&!
iv
.
is15Idcard
(
idno
)){
if
(!
iv
.
is18Idcard
(
idno
)&&!
iv
.
is15Idcard
(
idno
)){
...
@@ -229,9 +227,9 @@ public class UserQueryLogController {
...
@@ -229,9 +227,9 @@ public class UserQueryLogController {
if
(
columns
.
contains
(
"bankCard"
)){
if
(
columns
.
contains
(
"bankCard"
)){
//需加银行卡信息
//需加银行卡信息
if
(
key
.
equals
(
Constants
.
PHONE_NO
)){
if
(
Objects
.
equals
(
key
,
Constants
.
PHONE_NO
)){
phonesCards
=
getBankCardsByPhoneNos
(
queryV
);
phonesCards
=
getBankCardsByPhoneNos
(
queryV
);
if
(
phonesCards
!=
null
&&
phonesCards
.
get
(
"errorMsg"
)!=
null
&&!
phonesCards
.
get
(
"errorMsg"
).
equals
(
""
)){
if
(
phonesCards
!=
null
&&
phonesCards
.
get
(
"errorMsg"
)!=
null
&&!
StringUtils
.
isEmpty
(
phonesCards
.
get
(
"errorMsg"
)
)){
return
JsonResult
.
buildErrorStateResult
(
phonesCards
.
get
(
"errorMsg"
),
null
);
return
JsonResult
.
buildErrorStateResult
(
phonesCards
.
get
(
"errorMsg"
),
null
);
}
}
}
else
{
}
else
{
...
@@ -240,7 +238,7 @@ public class UserQueryLogController {
...
@@ -240,7 +238,7 @@ public class UserQueryLogController {
phones
.
add
(
uda
.
getPhoneNo
());
phones
.
add
(
uda
.
getPhoneNo
());
}
}
phonesCards
=
getBankCardsByPhoneNos
(
phones
);
phonesCards
=
getBankCardsByPhoneNos
(
phones
);
if
(
phonesCards
!=
null
&&
phonesCards
.
get
(
"errorMsg"
)!=
null
&&!
phonesCards
.
get
(
"errorMsg"
).
equals
(
""
)){
if
(
phonesCards
!=
null
&&
phonesCards
.
get
(
"errorMsg"
)!=
null
&&!
StringUtils
.
isEmpty
(
phonesCards
.
get
(
"errorMsg"
)
)){
return
JsonResult
.
buildErrorStateResult
(
phonesCards
.
get
(
"errorMsg"
),
null
);
return
JsonResult
.
buildErrorStateResult
(
phonesCards
.
get
(
"errorMsg"
),
null
);
}
}
}
}
...
@@ -267,11 +265,14 @@ public class UserQueryLogController {
...
@@ -267,11 +265,14 @@ public class UserQueryLogController {
if
(
columns
.
contains
(
Constants
.
PHONE_NO
)){
if
(
columns
.
contains
(
Constants
.
PHONE_NO
)){
uqi
.
setPhoneNo
(
ud
.
getPhoneNo
());
uqi
.
setPhoneNo
(
ud
.
getPhoneNo
());
}
}
if
(
columns
.
contains
(
"name"
)){
uqi
.
setName
(
ud
.
getName
());
}
if
(
columns
.
contains
(
"userId"
)){
if
(
columns
.
contains
(
"userId"
)){
uqi
.
setUserId
(
ud
.
getUserId
());
uqi
.
setUserId
(
ud
.
getUserId
());
}
}
if
(
columns
.
contains
(
"address"
)){
if
(
columns
.
contains
(
"address"
)){
Optional
<
Address
>
oad
=
addresslist
.
stream
().
filter
(
addr
->
addr
.
getUserId
()==
ud
.
getUserId
(
)).
findFirst
();
Optional
<
Address
>
oad
=
addresslist
.
stream
().
filter
(
addr
->
Objects
.
equals
(
addr
.
getUserId
(),
ud
.
getUserId
()
)).
findFirst
();
if
(
oad
.
isPresent
()){
if
(
oad
.
isPresent
()){
uqi
.
setAddress
(
oad
.
get
().
toString
());
uqi
.
setAddress
(
oad
.
get
().
toString
());
}
}
...
@@ -286,10 +287,10 @@ public class UserQueryLogController {
...
@@ -286,10 +287,10 @@ public class UserQueryLogController {
//保存记录
//保存记录
UserQueryLog
log
=
new
UserQueryLog
();
UserQueryLog
log
=
new
UserQueryLog
();
log
.
setQueryItems
(
columns
.
replace
(
"userId"
,
"用户ID"
).
replace
(
Constants
.
PHONE_NO
,
"手机号"
).
replace
(
"idNo"
,
"身份证号"
).
replace
(
"bankCard"
,
"银行卡号"
).
replace
(
"address"
,
"地址"
));
log
.
setQueryItems
(
columns
.
replace
(
"userId"
,
"用户ID"
).
replace
(
Constants
.
PHONE_NO
,
"手机号"
).
replace
(
"
name"
,
"姓名"
).
replace
(
"
idNo"
,
"身份证号"
).
replace
(
"bankCard"
,
"银行卡号"
).
replace
(
"address"
,
"地址"
));
log
.
setResultAmount
(
Long
.
valueOf
(
userDetailPage
.
getTotalElements
()));
log
.
setResultAmount
(
Long
.
valueOf
(
userDetailPage
.
getTotalElements
()));
//转换存储
//转换存储
log
.
setQueryCondition
(
key
.
replace
(
"userId"
,
"用户ID"
).
replace
(
Constants
.
PHONE_NO
,
"手机号"
).
replace
(
"idNo"
,
"身份证号"
));
log
.
setQueryCondition
(
key
.
replace
(
"userId"
,
"用户ID"
).
replace
(
Constants
.
PHONE_NO
,
"手机号"
).
replace
(
"
name"
,
"姓名"
).
replace
(
"
idNo"
,
"身份证号"
));
log
.
setQueryDetail
(
keyValues
.
replace
(
"\n"
,
";"
));
log
.
setQueryDetail
(
keyValues
.
replace
(
"\n"
,
";"
));
log
.
setLoginUserName
(
userName
);
log
.
setLoginUserName
(
userName
);
userQueryLogService
.
save
(
log
);
userQueryLogService
.
save
(
log
);
...
@@ -314,7 +315,7 @@ public class UserQueryLogController {
...
@@ -314,7 +315,7 @@ public class UserQueryLogController {
String
sign
=
""
;
String
sign
=
""
;
HashMap
<
String
,
String
>
phonesMap
=
new
HashMap
<
String
,
String
>();
HashMap
<
String
,
String
>
phonesMap
=
new
HashMap
<
String
,
String
>();
try
{
try
{
data
=
RSA
.
encrypt
(
phoneNoStr
,
publicKey
);
data
=
RSA
.
encrypt
(
phoneNoStr
,
PUBLIC_KEY
);
sign
=
MD5Util
.
build
(
data
);
sign
=
MD5Util
.
build
(
data
);
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
LOGGER
.
info
(
"参数加密异常"
);
LOGGER
.
info
(
"参数加密异常"
);
...
@@ -336,7 +337,7 @@ public class UserQueryLogController {
...
@@ -336,7 +337,7 @@ public class UserQueryLogController {
String
signStr
=
data1
.
get
(
"sign"
).
getAsString
();
String
signStr
=
data1
.
get
(
"sign"
).
getAsString
();
//校验签名
//校验签名
if
(
MD5Util
.
build
(
dataStr
).
equals
(
signStr
)){
if
(
MD5Util
.
build
(
dataStr
).
equals
(
signStr
)){
String
jsonDataStr
=
RSA
.
decrypt
(
dataStr
,
privateKey
);
String
jsonDataStr
=
RSA
.
decrypt
(
dataStr
,
PRIVATE_KEY
);
JsonArray
listObj
=
new
JsonParser
().
parse
(
jsonDataStr
).
getAsJsonArray
();
JsonArray
listObj
=
new
JsonParser
().
parse
(
jsonDataStr
).
getAsJsonArray
();
for
(
JsonElement
jsonElement
:
listObj
)
{
for
(
JsonElement
jsonElement
:
listObj
)
{
JsonObject
jo
=
jsonElement
.
getAsJsonObject
();
JsonObject
jo
=
jsonElement
.
getAsJsonObject
();
...
@@ -374,13 +375,13 @@ public class UserQueryLogController {
...
@@ -374,13 +375,13 @@ public class UserQueryLogController {
String
token
=
request
.
getHeader
(
Constants
.
X_AUTH_TOKEN
);
String
token
=
request
.
getHeader
(
Constants
.
X_AUTH_TOKEN
);
if
(
token
==
null
||
token
.
equals
(
""
)){
if
(
StringUtils
.
isEmpty
(
token
)){
LOGGER
.
info
(
"token为空,非法查询"
);
LOGGER
.
info
(
"token为空,非法查询"
);
return
JsonResult
.
buildErrorStateResult
(
"缺少授权信息"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"缺少授权信息"
,
null
);
}
}
String
userName
=
checkUserToken
(
token
);
String
userName
=
checkUserToken
(
token
);
if
(
userName
.
equals
(
""
)){
if
(
StringUtils
.
isEmpty
(
userName
)){
return
JsonResult
.
buildErrorStateResult
(
"未授权查询"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"未授权查询"
,
null
);
}
}
//输入enter换行\n
//输入enter换行\n
...
@@ -394,8 +395,8 @@ public class UserQueryLogController {
...
@@ -394,8 +395,8 @@ public class UserQueryLogController {
List
<
String
>
queryV
=
Arrays
.
asList
(
values
);
List
<
String
>
queryV
=
Arrays
.
asList
(
values
);
if
(
queryV
!=
null
&&
queryV
.
size
()>
1
000
){
if
(
queryV
!=
null
&&
queryV
.
size
()>
50
000
){
return
JsonResult
.
buildErrorStateResult
(
"查询记录数是"
+
queryV
.
size
()+
",超过
1
000条限制"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"查询记录数是"
+
queryV
.
size
()+
",超过
50
000条限制"
,
null
);
}
}
...
@@ -408,7 +409,7 @@ public class UserQueryLogController {
...
@@ -408,7 +409,7 @@ public class UserQueryLogController {
List
<
UserDetail
>
userDetails
=
new
ArrayList
<
UserDetail
>();
List
<
UserDetail
>
userDetails
=
new
ArrayList
<
UserDetail
>();
List
<
Address
>
addresslist
=
new
ArrayList
<
Address
>();
List
<
Address
>
addresslist
=
new
ArrayList
<
Address
>();
HashMap
<
String
,
String
>
phonesCards
=
new
HashMap
<
String
,
String
>();
HashMap
<
String
,
String
>
phonesCards
=
new
HashMap
<
String
,
String
>();
if
(
key
.
equals
(
"userId"
)){
if
(
Objects
.
equals
(
key
,
"userId"
)){
List
<
Long
>
userIds
=
new
ArrayList
<
Long
>();
List
<
Long
>
userIds
=
new
ArrayList
<
Long
>();
try
{
try
{
for
(
String
s:
queryV
){
for
(
String
s:
queryV
){
...
@@ -424,7 +425,7 @@ public class UserQueryLogController {
...
@@ -424,7 +425,7 @@ public class UserQueryLogController {
}
}
userDetails
=
userDetailService
.
findByUserIdIn
(
userIds
);
userDetails
=
userDetailService
.
findByUserIdIn
(
userIds
);
}
else
if
(
key
.
equals
(
Constants
.
PHONE_NO
)){
}
else
if
(
Objects
.
equals
(
key
,
Constants
.
PHONE_NO
)){
for
(
String
pn:
queryV
){
for
(
String
pn:
queryV
){
if
(!
ValidationUtil
.
validatePhoneNo
(
pn
)){
if
(!
ValidationUtil
.
validatePhoneNo
(
pn
)){
return
JsonResult
.
buildErrorStateResult
(
"查询的手机号码"
+
pn
+
"格式有误"
,
pn
);
return
JsonResult
.
buildErrorStateResult
(
"查询的手机号码"
+
pn
+
"格式有误"
,
pn
);
...
@@ -432,7 +433,7 @@ public class UserQueryLogController {
...
@@ -432,7 +433,7 @@ public class UserQueryLogController {
}
}
userDetails
=
userDetailService
.
findByPhoneNos
(
queryV
);
userDetails
=
userDetailService
.
findByPhoneNos
(
queryV
);
}
else
if
(
key
.
equals
(
"idNo"
)){
}
else
if
(
Objects
.
equals
(
key
,
"idNo"
)){
IdcardValidator
iv
=
new
IdcardValidator
();
IdcardValidator
iv
=
new
IdcardValidator
();
for
(
String
idno:
queryV
){
for
(
String
idno:
queryV
){
if
(!
iv
.
is18Idcard
(
idno
)&&!
iv
.
is15Idcard
(
idno
)){
if
(!
iv
.
is18Idcard
(
idno
)&&!
iv
.
is15Idcard
(
idno
)){
...
@@ -476,11 +477,14 @@ public class UserQueryLogController {
...
@@ -476,11 +477,14 @@ public class UserQueryLogController {
if
(
columns
.
contains
(
Constants
.
PHONE_NO
)){
if
(
columns
.
contains
(
Constants
.
PHONE_NO
)){
uqi
.
setPhoneNo
(
ud
.
getPhoneNo
());
uqi
.
setPhoneNo
(
ud
.
getPhoneNo
());
}
}
if
(
columns
.
contains
(
"name"
)){
uqi
.
setName
(
ud
.
getName
());
}
if
(
columns
.
contains
(
"userId"
)){
if
(
columns
.
contains
(
"userId"
)){
uqi
.
setUserId
(
ud
.
getUserId
());
uqi
.
setUserId
(
ud
.
getUserId
());
}
}
if
(
columns
.
contains
(
"address"
)){
if
(
columns
.
contains
(
"address"
)){
Optional
<
Address
>
oad
=
addresslist
.
stream
().
filter
(
addr
->
addr
.
getUserId
()==
ud
.
getUserId
(
)).
findFirst
();
Optional
<
Address
>
oad
=
addresslist
.
stream
().
filter
(
addr
->
Objects
.
equals
(
addr
.
getUserId
(),
ud
.
getUserId
()
)).
findFirst
();
if
(
oad
.
isPresent
()){
if
(
oad
.
isPresent
()){
uqi
.
setAddress
(
oad
.
get
().
toString
());
uqi
.
setAddress
(
oad
.
get
().
toString
());
}
}
...
@@ -518,13 +522,15 @@ public class UserQueryLogController {
...
@@ -518,13 +522,15 @@ public class UserQueryLogController {
cell
.
setCellValue
(
"手机号"
);
cell
.
setCellValue
(
"手机号"
);
cell
.
setCellStyle
(
style
);
cell
.
setCellStyle
(
style
);
cell
=
row
.
createCell
(
2
);
cell
=
row
.
createCell
(
2
);
cell
.
setCellValue
(
"
身份证号
"
);
cell
.
setCellValue
(
"
姓名
"
);
cell
.
setCellStyle
(
style
);
cell
.
setCellStyle
(
style
);
cell
=
row
.
createCell
(
3
);
cell
=
row
.
createCell
(
3
);
cell
.
setCellValue
(
"
银行卡
号"
);
cell
.
setCellValue
(
"
身份证
号"
);
cell
.
setCellStyle
(
style
);
cell
.
setCellStyle
(
style
);
cell
=
row
.
createCell
(
4
);
cell
=
row
.
createCell
(
4
);
cell
.
setCellValue
(
"银行卡号"
);
cell
.
setCellStyle
(
style
);
cell
=
row
.
createCell
(
5
);
cell
.
setCellValue
(
"地址"
);
cell
.
setCellValue
(
"地址"
);
cell
.
setCellStyle
(
style
);
cell
.
setCellStyle
(
style
);
...
@@ -549,17 +555,22 @@ public class UserQueryLogController {
...
@@ -549,17 +555,22 @@ public class UserQueryLogController {
HSSFCell
cell2
=
row
.
createCell
(
2
);
HSSFCell
cell2
=
row
.
createCell
(
2
);
if
(
cell2
!=
null
){
if
(
cell2
!=
null
){
cell2
.
setCellValue
(
user
.
get
IdNo
()==
null
?
" "
:
user
.
getIdNo
());
cell2
.
setCellValue
(
user
.
get
Name
()==
null
?
" "
:
user
.
getName
());
}
}
HSSFCell
cell3
=
row
.
createCell
(
3
);
HSSFCell
cell3
=
row
.
createCell
(
3
);
if
(
cell3
!=
null
){
if
(
cell3
!=
null
){
cell3
.
setCellValue
(
user
.
get
BankCards
()==
null
?
" "
:
user
.
getBankCards
());
cell3
.
setCellValue
(
user
.
get
IdNo
()==
null
?
" "
:
user
.
getIdNo
());
}
}
HSSFCell
cell4
=
row
.
createCell
(
4
);
HSSFCell
cell4
=
row
.
createCell
(
4
);
if
(
cell4
!=
null
){
if
(
cell4
!=
null
){
cell4
.
setCellValue
(
user
.
getAddress
()==
null
?
" "
:
user
.
getAddress
());
cell4
.
setCellValue
(
user
.
getBankCards
()==
null
?
" "
:
user
.
getBankCards
());
}
HSSFCell
cell5
=
row
.
createCell
(
5
);
if
(
cell5
!=
null
){
cell5
.
setCellValue
(
user
.
getAddress
()==
null
?
" "
:
user
.
getAddress
());
}
}
}
}
...
@@ -584,14 +595,13 @@ public class UserQueryLogController {
...
@@ -584,14 +595,13 @@ public class UserQueryLogController {
}
}
private
String
checkUserToken
(
String
token
){
private
String
checkUserToken
(
String
token
){
HashMap
<
String
,
String
>
parameters
=
new
HashMap
<>();
HashMap
<
String
,
String
>
parameters
=
new
HashMap
<>();
parameters
.
put
(
"token"
,
token
);
parameters
.
put
(
"token"
,
token
);
//访问用户中心查询用户银行卡接口
//访问用户中心查询用户银行卡接口
String
resultStr
=
httpService
.
post
(
yunyingUrl
+
"/user/info"
,
parameters
);
String
resultStr
=
httpService
.
post
(
yunyingUrl
+
"/user/info"
,
parameters
);
try
{
try
{
JsonObject
resultUser
=
new
JsonParser
().
parse
(
resultStr
).
getAsJsonObject
();
JsonObject
resultUser
=
new
JsonParser
().
parse
(
resultStr
).
getAsJsonObject
();
if
(
resultUser
.
get
(
"code"
).
getAsString
().
equals
(
"0000"
)&&
resultUser
.
get
(
"data"
).
getAsJsonObject
()!=
null
){
if
(
Objects
.
equals
(
"0000"
,
resultUser
.
get
(
"code"
).
getAsString
()
)&&
resultUser
.
get
(
"data"
).
getAsJsonObject
()!=
null
){
String
userName
=
resultUser
.
get
(
"data"
).
getAsJsonObject
().
get
(
"user"
).
getAsString
();
String
userName
=
resultUser
.
get
(
"data"
).
getAsJsonObject
().
get
(
"user"
).
getAsString
();
return
userName
;
return
userName
;
}
}
...
...
src/main/java/cn/quantgroup/xyqb/controller/external/user/InnerController.java
View file @
5b800aeb
...
@@ -237,8 +237,8 @@ public class InnerController implements IBaseController {
...
@@ -237,8 +237,8 @@ public class InnerController implements IBaseController {
*/
*/
@RequestMapping
(
"/user_detail/save"
)
@RequestMapping
(
"/user_detail/save"
)
public
JsonResult
saveUserDetail
(
Long
userId
,
String
phoneNo
,
String
name
,
String
idNo
,
public
JsonResult
saveUserDetail
(
Long
userId
,
String
phoneNo
,
String
name
,
String
idNo
,
String
email
,
Long
id
)
{
String
email
,
String
qq
,
Long
id
)
{
LOGGER
.
info
(
"保存用户详细信息,phoneNo:{},userId;{},name:{},idNo:{},email;{}
"
,
phoneNo
,
userId
,
name
,
idNo
,
email
);
LOGGER
.
info
(
"保存用户详细信息,phoneNo:{},userId;{},name:{},idNo:{},email;{}
,qq;{}"
,
phoneNo
,
userId
,
name
,
idNo
,
email
,
qq
);
//参数验证
//参数验证
if
(
userId
==
null
||
userId
==
0L
)
{
if
(
userId
==
null
||
userId
==
0L
)
{
return
JsonResult
.
buildErrorStateResult
(
"用户id为空."
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"用户id为空."
,
null
);
...
@@ -282,6 +282,7 @@ public class InnerController implements IBaseController {
...
@@ -282,6 +282,7 @@ public class InnerController implements IBaseController {
userDetail
.
setIdType
(
IdType
.
ID_CARD
);
userDetail
.
setIdType
(
IdType
.
ID_CARD
);
userDetail
.
setGender
(
info
.
getGender
());
userDetail
.
setGender
(
info
.
getGender
());
userDetail
.
setEmail
(
email
);
userDetail
.
setEmail
(
email
);
userDetail
.
setQq
(
qq
);
userDetail
=
userDetailService
.
saveUserDetail
(
userDetail
);
userDetail
=
userDetailService
.
saveUserDetail
(
userDetail
);
if
(
userDetail
!=
null
)
{
if
(
userDetail
!=
null
)
{
return
JsonResult
.
buildSuccessResult
(
null
,
UserDetailRet
.
getUserDetail
(
userDetail
));
return
JsonResult
.
buildSuccessResult
(
null
,
UserDetailRet
.
getUserDetail
(
userDetail
));
...
@@ -1156,6 +1157,9 @@ public class InnerController implements IBaseController {
...
@@ -1156,6 +1157,9 @@ public class InnerController implements IBaseController {
}
else
{
}
else
{
return
JsonResult
.
buildErrorStateResult
(
"校验失败"
,
""
);
return
JsonResult
.
buildErrorStateResult
(
"校验失败"
,
""
);
}
}
if
(
user
==
null
)
{
user
=
userRegisterService
.
register
(
phoneNo
,
""
,
null
);
}
if
(
Objects
.
isNull
(
user
))
{
if
(
Objects
.
isNull
(
user
))
{
return
JsonResult
.
buildErrorStateResult
(
"用户不存在"
,
""
);
return
JsonResult
.
buildErrorStateResult
(
"用户不存在"
,
""
);
}
else
{
}
else
{
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/login/AuthInfoController.java
View file @
5b800aeb
...
@@ -8,6 +8,8 @@ import cn.quantgroup.xyqb.model.session.SessionStruct;
...
@@ -8,6 +8,8 @@ import cn.quantgroup.xyqb.model.session.SessionStruct;
import
cn.quantgroup.xyqb.service.http.IHttpService
;
import
cn.quantgroup.xyqb.service.http.IHttpService
;
import
cn.quantgroup.xyqb.service.user.IUserBtRegisterService
;
import
cn.quantgroup.xyqb.service.user.IUserBtRegisterService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
cn.quantgroup.xyqb.service.user.IUserService
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -46,6 +48,8 @@ public class AuthInfoController implements IBaseController {
...
@@ -46,6 +48,8 @@ public class AuthInfoController implements IBaseController {
context
.
setBtMerchantId
(
sessionStruct
.
getValues
().
getLoginProperties
().
getBtMerchantId
());
context
.
setBtMerchantId
(
sessionStruct
.
getValues
().
getLoginProperties
().
getBtMerchantId
());
//有ThreadLocal不释放的问题,不可再使用原来方式了
//有ThreadLocal不释放的问题,不可再使用原来方式了
loginInfo
.
setLoginContext
(
context
);
loginInfo
.
setLoginContext
(
context
);
log
.
info
(
"[/auth/info/login] SessionStruct数据:{}"
,
JSONObject
.
toJSONString
(
sessionStruct
));
log
.
info
(
"[/auth/info/login] LoginInfo数据:{}"
,
JSONObject
.
toJSONString
(
loginInfo
));
return
JsonResult
.
buildSuccessResult
(
""
,
loginInfo
);
return
JsonResult
.
buildSuccessResult
(
""
,
loginInfo
);
}
}
return
JsonResult
.
buildErrorStateResult
(
"用户未登录"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"用户未登录"
,
null
);
...
...
src/main/java/cn/quantgroup/xyqb/controller/internal/user/UserController.java
View file @
5b800aeb
package
cn
.
quantgroup
.
xyqb
.
controller
.
internal
.
user
;
package
cn
.
quantgroup
.
xyqb
.
controller
.
internal
.
user
;
import
cn.quantgroup.tech.util.TechEnvironment
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.Constants
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.captcha.CaptchaFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.lock.PasswordErrorFiniteValidator
;
import
cn.quantgroup.xyqb.aspect.lock.PasswordErrorFiniteValidator
;
...
@@ -26,6 +27,8 @@ import cn.quantgroup.xyqb.util.IPUtil;
...
@@ -26,6 +27,8 @@ import cn.quantgroup.xyqb.util.IPUtil;
import
cn.quantgroup.xyqb.util.MqUtils
;
import
cn.quantgroup.xyqb.util.MqUtils
;
import
cn.quantgroup.xyqb.util.PasswordUtil
;
import
cn.quantgroup.xyqb.util.PasswordUtil
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
cn.quantgroup.xyqb.util.ValidationUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -114,31 +117,6 @@ public class UserController implements IBaseController {
...
@@ -114,31 +117,6 @@ public class UserController implements IBaseController {
return
login
(
channelId
,
appChannel
,
createdFrom
,
userId
,
key
,
request
,
openId
,
dimension
);
return
login
(
channelId
,
appChannel
,
createdFrom
,
userId
,
key
,
request
,
openId
,
dimension
);
}
}
/**
* 快速登录(手机号 + 短信验证码),H5专用入口
* 短信验证码错误达到限定次数时执行图形验证码校验
* 图形验证码累计错误达到限定次数时须重新获取
*
* @param channelId
* @param appChannel
* @param createdFrom
* @param key
* @param btRegisterChannelId
* @param dimension
* @param request
* @return
*/
@RequestMapping
(
"/login/fastV1"
)
public
JsonResult
loginFastV1
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
appChannel
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
createdFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"xyqb"
)
String
key
,
@RequestParam
(
required
=
false
)
Long
btRegisterChannelId
,
@RequestParam
(
required
=
false
)
String
dimension
,
HttpServletRequest
request
)
{
LOGGER
.
info
(
"login/fastV1 -> channelId:{},appChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{}"
,
channelId
,
appChannel
,
createdFrom
,
key
,
btRegisterChannelId
,
dimension
);
return
loginFast
(
channelId
,
appChannel
,
createdFrom
,
key
,
btRegisterChannelId
,
dimension
,
request
);
}
@LogHttpCaller
@LogHttpCaller
@PasswordErrorFiniteValidator
@PasswordErrorFiniteValidator
@RequestMapping
(
"/login"
)
@RequestMapping
(
"/login"
)
...
@@ -162,15 +140,44 @@ public class UserController implements IBaseController {
...
@@ -162,15 +140,44 @@ public class UserController implements IBaseController {
}
}
}
}
/**
* 快速登录(手机号 + 短信验证码),H5专用入口
* 短信验证码错误达到限定次数时执行图形验证码校验
* 图形验证码累计错误达到限定次数时须重新获取
*
* @param channelId
* @param appChannel
* @param createdFrom
* @param key
* @param btRegisterChannelId
* @param dimension
* @param request
* @return
*/
@RequestMapping
(
"/login/fastV1"
)
public
JsonResult
loginFastV1
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
appChannel
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
createdFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"xyqb"
)
String
key
,
@RequestParam
(
required
=
false
)
Long
btRegisterChannelId
,
@RequestParam
(
required
=
false
)
String
dimension
,
@RequestParam
(
name
=
"click_id"
,
required
=
false
)
String
clickId
,
HttpServletRequest
request
)
{
LOGGER
.
info
(
"login/fastV1 -> channelId:{},appChennel:{},createdFrom:{},key:{},btRegisterChannelId:{},dimension:{},clickId:{}"
,
channelId
,
appChannel
,
createdFrom
,
key
,
btRegisterChannelId
,
dimension
,
clickId
);
return
loginFast
(
channelId
,
appChannel
,
createdFrom
,
key
,
btRegisterChannelId
,
dimension
,
clickId
,
request
);
}
@RequestMapping
(
"/login/fast"
)
@RequestMapping
(
"/login/fast"
)
public
JsonResult
loginFast
(
public
JsonResult
loginFast
(
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
appChannel
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
channelId
,
String
appChannel
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
createdFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"1"
)
Long
createdFrom
,
@RequestParam
(
required
=
false
,
defaultValue
=
"xyqb"
)
String
key
,
@RequestParam
(
required
=
false
,
defaultValue
=
"xyqb"
)
String
key
,
@RequestParam
(
required
=
false
)
Long
btRegisterChannelId
,
@RequestParam
(
required
=
false
)
Long
btRegisterChannelId
,
@RequestParam
(
required
=
false
)
String
dimension
,
HttpServletRequest
request
)
{
@RequestParam
(
required
=
false
)
String
dimension
,
@RequestParam
(
name
=
"click_id"
,
required
=
false
)
String
clickId
,
HttpServletRequest
request
)
{
Map
<
String
,
JsonResult
>
validMap
=
getHeaderParam
(
request
);
Map
<
String
,
JsonResult
>
validMap
=
getHeaderParam
(
request
);
LOGGER
.
info
(
"login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}
"
,
channelId
,
appChannel
,
createdFrom
,
btRegisterChannelId
,
key
,
dimension
);
LOGGER
.
info
(
"login/fast -> channelId:{},appChannel:{},createdFrom:{},btRegisterChannelId:{},key:{},dimension:{}
,clickId:{}"
,
channelId
,
appChannel
,
createdFrom
,
btRegisterChannelId
,
key
,
dimension
,
clickId
);
if
(
null
!=
validMap
.
get
(
"fail"
))
{
if
(
null
!=
validMap
.
get
(
"fail"
))
{
return
validMap
.
get
(
"fail"
);
return
validMap
.
get
(
"fail"
);
}
}
...
@@ -181,29 +188,31 @@ public class UserController implements IBaseController {
...
@@ -181,29 +188,31 @@ public class UserController implements IBaseController {
JsonResult
successResult
=
validMap
.
get
(
"success"
);
JsonResult
successResult
=
validMap
.
get
(
"success"
);
String
phoneNo
=
successResult
.
getData
().
toString
();
String
phoneNo
=
successResult
.
getData
().
toString
();
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
if
(!
ValidationUtil
.
validatePhoneNo
(
phoneNo
))
{
LOGGER
.
info
(
"用户快速
登录
失败,手机号错误, createdFrom:{},phoneNo:{}"
,
createdFrom
,
phoneNo
);
LOGGER
.
info
(
"用户快速
注册
失败,手机号错误, createdFrom:{},phoneNo:{}"
,
createdFrom
,
phoneNo
);
throw
new
UserNotExistException
(
"手机号错误"
);
throw
new
UserNotExistException
(
"手机号错误"
);
}
}
String
verificationCode
=
successResult
.
getMsg
();
String
verificationCode
=
successResult
.
getMsg
();
// 执行短信验证码检查
// 执行短信验证码检查
verifyPhoneAndCode
(
phoneNo
,
verificationCode
);
verifyPhoneAndCode
(
phoneNo
,
verificationCode
);
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
User
user
=
userService
.
findByPhoneWithCache
(
phoneNo
);
// 缓存未命中时查DB
if
(
user
==
null
)
{
user
=
userService
.
findByPhoneInDb
(
phoneNo
);
}
if
(
user
!=
null
&&
!
user
.
getEnable
())
{
if
(
user
!=
null
&&
!
user
.
getEnable
())
{
LOGGER
.
error
(
"用户不存在,或者已经注销,phoneNo:{}"
,
phoneNo
);
LOGGER
.
error
(
"用户不存在,或者已经注销,phoneNo:{}"
,
phoneNo
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
return
JsonResult
.
buildErrorStateResult
(
"登录失败"
,
null
);
}
}
UserStatistics
statistics
=
null
;
JSONObject
qqGdt
=
null
;
if
(
user
==
null
)
{
if
(
user
==
null
)
{
user
=
userRegisterService
.
register
(
phoneNo
,
channelId
,
createdFrom
,
appChannel
,
btRegisterChannelId
,
dimension
);
user
=
userRegisterService
.
register
(
phoneNo
,
channelId
,
createdFrom
,
appChannel
,
btRegisterChannelId
,
dimension
);
if
(
user
==
null
)
{
if
(
user
==
null
)
{
throw
new
UserNotExistException
(
"用户未找到"
);
throw
new
UserNotExistException
(
"用户未找到"
);
}
}
//广点通转化注册 - 发送消息 - 方法内过滤
MqUtils
.
sendRegisterMessageForGdt
(
phoneNo
,
clickId
);
statistics
=
new
UserStatistics
(
user
,
dimension
,
2
,
channelId
);
}
else
{
statistics
=
new
UserStatistics
(
user
,
dimension
,
3
,
channelId
);
}
}
//增加登陆统计发送
//增加登陆统计发送
UserStatistics
statistics
=
new
UserStatistics
(
user
,
dimension
,
3
,
channelId
);
MqUtils
.
sendLoanVest
(
statistics
);
MqUtils
.
sendLoanVest
(
statistics
);
return
new
JsonResult
(
sessionService
.
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
,
merchant
));
return
new
JsonResult
(
sessionService
.
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
,
merchant
));
// return createSession(channelId, createdFrom, appChannel, user);
// return createSession(channelId, createdFrom, appChannel, user);
...
@@ -452,7 +461,7 @@ public class UserController implements IBaseController {
...
@@ -452,7 +461,7 @@ public class UserController implements IBaseController {
//用户信息存在,更新session中的最后访问时间,重新写入缓存.
//用户信息存在,更新session中的最后访问时间,重新写入缓存.
if
(
null
!=
user
||
!
user
.
getEnable
())
{
if
(
null
!=
user
||
!
user
.
getEnable
())
{
//增加登陆统计发送
//增加登陆统计发送
UserStatistics
statistics
=
new
UserStatistics
(
user
,
dimension
,
1
,
channelId
);
UserStatistics
statistics
=
new
UserStatistics
(
user
,
dimension
,
4
,
channelId
);
MqUtils
.
sendLoanVest
(
statistics
);
MqUtils
.
sendLoanVest
(
statistics
);
return
new
JsonResult
(
sessionService
.
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
,
merchant
));
return
new
JsonResult
(
sessionService
.
createSession
(
channelId
,
createdFrom
,
appChannel
,
user
,
merchant
));
}
else
{
}
else
{
...
@@ -495,6 +504,10 @@ public class UserController implements IBaseController {
...
@@ -495,6 +504,10 @@ public class UserController implements IBaseController {
* @param verificationCode
* @param verificationCode
*/
*/
private
void
verifyPhoneAndCode
(
String
phoneNo
,
String
verificationCode
)
{
private
void
verifyPhoneAndCode
(
String
phoneNo
,
String
verificationCode
)
{
// 非生产环境直接跳过验证码检验
if
(!
TechEnvironment
.
isPro
()){
return
;
}
if
(!
smsService
.
verifyPhoneAndCode
(
phoneNo
,
verificationCode
))
{
if
(!
smsService
.
verifyPhoneAndCode
(
phoneNo
,
verificationCode
))
{
smsReSendOrNot
(
phoneNo
);
smsReSendOrNot
(
phoneNo
);
LOGGER
.
info
(
"验证码校验失败,phoneNo:{} , verificationCode:{}"
,
phoneNo
,
verificationCode
);
LOGGER
.
info
(
"验证码校验失败,phoneNo:{} , verificationCode:{}"
,
phoneNo
,
verificationCode
);
...
...
src/main/java/cn/quantgroup/xyqb/model/UserQueryInfo.java
View file @
5b800aeb
...
@@ -12,17 +12,29 @@ import java.io.Serializable;
...
@@ -12,17 +12,29 @@ import java.io.Serializable;
@Data
@Data
public
class
UserQueryInfo
implements
Serializable
{
public
class
UserQueryInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1L
;
private
static
final
long
serialVersionUID
=
-
1L
;
/**
* 用户主键
*/
private
Long
userId
;
private
Long
userId
;
/**
* 登录手机号/账号
*/
private
String
phoneNo
;
private
String
phoneNo
;
/**
* 姓名
*/
private
String
name
;
/**
* 银行卡号
*/
private
String
bankCards
;
private
String
bankCards
;
/**
//证件号
* 证件号
*/
private
String
idNo
;
private
String
idNo
;
/**
//0 身份证 1 军官证 2 护照
* 地址
*/
private
String
address
;
private
String
address
;
...
...
src/main/java/cn/quantgroup/xyqb/model/UserStatistics.java
View file @
5b800aeb
...
@@ -12,7 +12,13 @@ public class UserStatistics {
...
@@ -12,7 +12,13 @@ public class UserStatistics {
private
String
uuid
;
private
String
uuid
;
private
Long
registerFrom
;
private
Long
registerFrom
;
private
String
dimension
;
private
String
dimension
;
private
int
action
;
//登录0,注册1,快捷登录2,免密登录3
/**
* 1-登录
* 2-注册
* 3-快捷登录
* 4-免密登录
*/
private
int
action
;
private
Long
channel
;
private
Long
channel
;
public
UserStatistics
()
{
public
UserStatistics
()
{
...
...
src/main/java/cn/quantgroup/xyqb/service/mq/IRegisterMqService.java
View file @
5b800aeb
package
cn
.
quantgroup
.
xyqb
.
service
.
mq
;
package
cn
.
quantgroup
.
xyqb
.
service
.
mq
;
import
cn.quantgroup.xyqb.model.UserRegisterMqMessage
;
import
java.io.Serializable
;
import
cn.quantgroup.xyqb.model.UserStatistics
;
/**
/**
* Created by xuran on 2017/9/7.
* Created by xuran on 2017/9/7.
* 用户注册信息广播
* 用户注册信息广播
*/
*/
public
interface
IRegisterMqService
{
public
interface
IRegisterMqService
{
void
send
(
UserRegisterMqMessage
message
);
void
send
(
Serializable
message
);
void
send4Gdt
(
Serializable
message
);
}
}
src/main/java/cn/quantgroup/xyqb/service/mq/Impl/IRegisterMqServiceImpl.java
View file @
5b800aeb
package
cn
.
quantgroup
.
xyqb
.
service
.
mq
.
Impl
;
package
cn
.
quantgroup
.
xyqb
.
service
.
mq
.
Impl
;
import
cn.quantgroup.xyqb.model.UserRegisterMqMessage
;
import
cn.quantgroup.xyqb.service.mq.IRegisterMqService
;
import
cn.quantgroup.xyqb.service.mq.IRegisterMqService
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -12,6 +11,8 @@ import org.springframework.beans.factory.annotation.Qualifier;
...
@@ -12,6 +11,8 @@ import org.springframework.beans.factory.annotation.Qualifier;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.scheduling.annotation.Async
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.io.Serializable
;
/**
/**
* Created by xuran on 2017/9/7.
* Created by xuran on 2017/9/7.
*/
*/
...
@@ -22,34 +23,44 @@ public class IRegisterMqServiceImpl implements IRegisterMqService {
...
@@ -22,34 +23,44 @@ public class IRegisterMqServiceImpl implements IRegisterMqService {
@Autowired
@Autowired
@Qualifier
(
"registerRabbitTemplate"
)
@Qualifier
(
"registerRabbitTemplate"
)
RabbitTemplate
registerRabTemplate
;
RabbitTemplate
registerRabTemplate
;
@Autowired
@Qualifier
(
"registerRabbitTemplate4Gdt"
)
RabbitTemplate
registerRabbitTemplate4Gdt
;
@Autowired
@Autowired
@Qualifier
(
value
=
"registerMqQueue"
)
@Qualifier
(
value
=
"registerMqQueue"
)
Queue
registerMqQueue
;
Queue
registerMqQueue
;
/**
/**
* 发送用登陆统计信息
* 发送用登陆统计信息
* @param message 订单信息
* @param message 订单信息
*/
*/
@Override
@Async
@Async
public
void
send
(
UserRegisterMqMessag
e
message
){
public
void
send
(
Serializabl
e
message
){
if
(
null
==
message
){
if
(
null
==
message
){
LOGGER
.
error
(
"广播用户注册消息不能为空"
);
LOGGER
.
error
(
"广播用户注册消息不能为空"
);
}
}
LOGGER
.
info
(
"广播用户注册消息,message={}"
,
message
);
LOGGER
.
info
(
"广播用户注册消息,message={}"
,
message
);
String
msg
=
JSONObject
.
toJSONString
(
message
);
String
msg
=
JSONObject
.
toJSONString
(
message
);
registerRabTemplate
.
convertAndSend
(
msg
);
registerRabTemplate
.
convertAndSend
(
msg
);
LOGGER
.
info
(
"广播用户注册消息,message={}"
,
msg
);
LOGGER
.
info
(
"广播用户注册消息,message={}"
,
msg
);
}
}
/**
* 发送用登陆统计信息
* @param message 订单信息
*/
@Override
@Async
public
void
send4Gdt
(
Serializable
message
){
if
(
null
==
message
){
LOGGER
.
error
(
"广点通用户注册消息不能为空"
);
}
LOGGER
.
info
(
"广点通用户注册消息,message={}"
,
message
);
String
msg
=
JSONObject
.
toJSONString
(
message
);
registerRabbitTemplate4Gdt
.
convertAndSend
(
msg
);
LOGGER
.
info
(
"广点通用户注册消息,message={}"
,
msg
);
}
}
}
src/main/java/cn/quantgroup/xyqb/service/session/impl/SessionServiceImpl.java
View file @
5b800aeb
...
@@ -62,6 +62,7 @@ public class SessionServiceImpl implements ISessionService {
...
@@ -62,6 +62,7 @@ public class SessionServiceImpl implements ISessionService {
sessionStruct
.
setAttribute
(
"channelId"
,
String
.
valueOf
(
channelId
));
sessionStruct
.
setAttribute
(
"channelId"
,
String
.
valueOf
(
channelId
));
sessionStruct
.
setAttribute
(
"createdFrom"
,
String
.
valueOf
(
createdFrom
));
sessionStruct
.
setAttribute
(
"createdFrom"
,
String
.
valueOf
(
createdFrom
));
sessionStruct
.
setAttribute
(
"appChannel"
,
String
.
valueOf
(
appChannel
));
sessionStruct
.
setAttribute
(
"appChannel"
,
String
.
valueOf
(
appChannel
));
sessionStruct
.
getValues
().
setLoginProperties
(
properties
);
authBean
.
setPhoneNo
(
user
.
getPhoneNo
());
authBean
.
setPhoneNo
(
user
.
getPhoneNo
());
authBean
.
setToken
(
sessionStruct
.
getSid
());
authBean
.
setToken
(
sessionStruct
.
getSid
());
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
persistSession
(
sessionStruct
.
getSid
(),
sessionStruct
.
getValues
());
...
...
src/main/java/cn/quantgroup/xyqb/service/sms/impl/SmsServiceImpl.java
View file @
5b800aeb
...
@@ -48,12 +48,16 @@ public class SmsServiceImpl implements ISmsService {
...
@@ -48,12 +48,16 @@ public class SmsServiceImpl implements ISmsService {
}
}
/**
* 24-“【信用钱包】么么哒,等您好久了~感谢您注册信用钱包,我们来给您送钱啦,点击提交借款申请,万元现金立即到手 s.xyqb.com/a”
* 1005-“【信用钱包】等您好久了~感谢您的注册,尊享息费5折优惠。登录 s.xyqb.com/a 享更多优惠(合理消费,理性借贷)”
* @param phoneNo
*/
@Override
@Override
public
void
sendAfterRegister
(
String
phoneNo
)
{
public
void
sendAfterRegister
(
String
phoneNo
)
{
try
{
try
{
MsgParams
msgParams
=
MsgParams
msgParams
=
new
MsgParams
(
Collections
.
singletonList
(
2
),
phoneNo
,
"1"
,
"
24
"
,
Collections
.
emptyList
());
new
MsgParams
(
Collections
.
singletonList
(
2
),
phoneNo
,
"1"
,
"
1005
"
,
Collections
.
emptyList
());
getSmsSender
().
sendMsg
(
msgParams
);
getSmsSender
().
sendMsg
(
msgParams
);
//smsSender.sendAndForget(new SendAndForgetMsg(Collections.emptyList(), "24", "1", phoneNo));
//smsSender.sendAndForget(new SendAndForgetMsg(Collections.emptyList(), "24", "1", phoneNo));
log
.
info
(
"注册完成,发送短信, phoneNo:{}"
,
phoneNo
);
log
.
info
(
"注册完成,发送短信, phoneNo:{}"
,
phoneNo
);
...
...
src/main/java/cn/quantgroup/xyqb/util/MqUtils.java
View file @
5b800aeb
...
@@ -6,7 +6,9 @@ import cn.quantgroup.xyqb.model.UserRet;
...
@@ -6,7 +6,9 @@ import cn.quantgroup.xyqb.model.UserRet;
import
cn.quantgroup.xyqb.model.UserStatistics
;
import
cn.quantgroup.xyqb.model.UserStatistics
;
import
cn.quantgroup.xyqb.service.mq.IRegisterMqService
;
import
cn.quantgroup.xyqb.service.mq.IRegisterMqService
;
import
cn.quantgroup.xyqb.service.mq.IVestService
;
import
cn.quantgroup.xyqb.service.mq.IVestService
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
/**
/**
* Created by xuran on 2017/6/23.
* Created by xuran on 2017/6/23.
...
@@ -26,6 +28,7 @@ public class MqUtils {
...
@@ -26,6 +28,7 @@ public class MqUtils {
vest
,
e
);
vest
,
e
);
}
}
}
}
/**
/**
* 用户注册消息进行广播
* 用户注册消息进行广播
* @param message
* @param message
...
@@ -50,4 +53,25 @@ public class MqUtils {
...
@@ -50,4 +53,25 @@ public class MqUtils {
MqUtils
.
sendRegisterMessage
(
registerMqMessage
);
MqUtils
.
sendRegisterMessage
(
registerMqMessage
);
return
userRet
;
return
userRet
;
}
}
/**
* 腾讯广点通转化的用户注册消息推送
* @param phoneNo - 转化成功的用户手机号
* @param clickId - 转化成功的点击动作唯一标识
*/
public
static
void
sendRegisterMessageForGdt
(
String
phoneNo
,
String
clickId
){
if
(
ValidationUtil
.
validatePhoneNo
(
phoneNo
)
&&
StringUtils
.
isNotBlank
(
clickId
)){
//填充广点通消息
JSONObject
message
=
new
JSONObject
();
message
.
put
(
"phoneNo"
,
phoneNo
);
message
.
put
(
"clickId"
,
clickId
);
try
{
IRegisterMqService
rService
=
ApplicationContextHolder
.
getBean
(
"registerMqService"
);
rService
.
send4Gdt
(
message
);
}
catch
(
Exception
e
)
{
log
.
error
(
"[MQUtils][MQUtils_exception]发送广点通用户注册信息,message={},error={}"
,
message
,
e
);
}
}
}
}
}
src/test/java/login/TestStringCode.java
View file @
5b800aeb
...
@@ -6,23 +6,39 @@ import java.util.Base64;
...
@@ -6,23 +6,39 @@ import java.util.Base64;
public
class
TestStringCode
{
public
class
TestStringCode
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
base64
(
"13511112222"
,
"000000"
));
System
.
out
.
println
(
ap_
base64
(
"13511112222"
,
"000000"
));
System
.
out
.
println
(
base64
(
"18022223333"
,
"00
0000"
));
System
.
out
.
println
(
pc_base64
(
"15566660006"
,
"
0000"
));
}
}
final
static
String
AUTHORIZATION
=
"authorization"
;
final
static
String
AUTHORIZATION
=
"authorization"
;
final
static
String
PREFIX
=
"Basic "
;
final
static
String
PREFIX_AP
=
"Basic "
;
final
static
String
PREFIX_PC
=
"Verification "
;
/*
/*
* 4.153
* 4.153
* 13576450525 123456 318e235d3e52648b236faa3f748000d5
* 13576450525 123456 318e235d3e52648b236faa3f748000d5
* 13724823305 123456 318e235d3e52648b236faa3f748000d5
* 13724823305 123456 318e235d3e52648b236faa3f748000d5
* Basic MTM1MTExMTIyMjI6MDAwMDAw
* Basic MTgwMjIyMjMzMzM6MDAwMDAw
*
*
* 4.155
* 4.155
* 13511112222 000000 c8937b92506c0e2918de053dea69edd3
* 13511112222 000000 c8937b92506c0e2918de053dea69edd3
* 18022223333 000000 c8937b92506c0e2918de053dea69edd3
* 18022223333 000000 c8937b92506c0e2918de053dea69edd3
*/
*/
final
static
String
base64
(
String
account
,
String
password
)
{
final
static
String
ap_base64
(
String
account
,
String
password
)
{
String
authorization
=
PREFIX
+
new
String
(
Base64
.
getEncoder
().
encodeToString
((
account
+
":"
+
password
).
getBytes
(
Charset
.
forName
(
"UTF-8"
))));
String
authorization
=
PREFIX_AP
+
new
String
(
Base64
.
getEncoder
().
encodeToString
((
account
+
":"
+
password
).
getBytes
(
Charset
.
forName
(
"UTF-8"
))));
return
authorization
;
}
/*
* 4.153
* 13576450525 123456 318e235d3e52648b236faa3f748000d5
* 13724823305 123456 318e235d3e52648b236faa3f748000d5
*
* 4.155
* 13511112222 000000 c8937b92506c0e2918de053dea69edd3
* 18022223333 000000 c8937b92506c0e2918de053dea69edd3
*/
final
static
String
pc_base64
(
String
phone
,
String
code
)
{
String
authorization
=
PREFIX_PC
+
new
String
(
Base64
.
getEncoder
().
encodeToString
((
phone
+
":"
+
code
).
getBytes
(
Charset
.
forName
(
"UTF-8"
))));
return
authorization
;
return
authorization
;
}
}
...
...
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