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
提交
64123e33
提交
64123e33
编写于
6月 29, 2020
作者:
peijun.zhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add webLive 登录注册
上级
d73a619c
流水线
#27249
已失败 于阶段
in 7 second
变更
1
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
189 行增加
和
0 行删除
+189
-0
AccountController.java
.../account/account/server/controller/AccountController.java
+189
-0
未找到文件。
server/src/main/java/com/pica/cloud/account/account/server/controller/AccountController.java
浏览文件 @
64123e33
...
...
@@ -270,6 +270,139 @@ public class AccountController extends AccountBaseController {
}
}
@ApiOperation
(
"webLive端验证码登录-沿用 /login-register/v1"
)
@PostMapping
(
"/login-register/v2"
)
// @RepeatForbidden(uniqueKey = "content")
//当前版本存在性能问题 luo优化后上
public
PicaResponse
loginRegisterV2
(
@RequestBody
EncryptEntity
entity
)
throws
Exception
{
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
this
.
checkMobilePhone
(
request
.
getMobile
());
//接入新旭事务一致性
String
batchNo
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo
,
"webLive-loginRegister"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"entity:"
+
JSON
.
toJSONString
(
entity
));
AccountReq
req
=
new
AccountReq
();
req
.
setMobilePhone
(
request
.
getMobile
());
// 登录或注册,只能使用验证码
req
.
setPassword
(
null
);
req
.
setAuthCode
(
request
.
getAuthCode
());
req
.
setFlag
(
"0"
);
req
.
setUnionid
(
request
.
getUnionId
());
// 判断账号是否已经存在
Account
account
=
accountService
.
getByMobilePhone
(
req
.
getMobilePhone
());
if
(
account
!=
null
)
{
// 登录
PicaResponse
response
=
null
;
try
{
// response = this.login(req);
this
.
checkMobilePhone
(
req
.
getMobilePhone
());
logger
.
info
(
"login:{}"
,
JSONObject
.
toJSONString
(
req
));
//接入新旭事务一致性
String
batchNo1
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo1
,
"login"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"req:"
+
JSON
.
toJSONString
(
req
));
Account
account1
=
accountService
.
getByMobilePhone
(
req
.
getMobilePhone
());
//获取账号信息
if
(
account1
==
null
)
{
intactUtil
.
sendIntact
(
batchNo1
,
"login"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"未注册,请验证码登录"
);
return
PicaResponse
.
toResponse
(
null
,
PicaResultCode
.
RESULE_DATA_NONE
.
code
(),
"未注册,请验证码登录"
);
}
if
(
StringUtils
.
isBlank
(
req
.
getPassword
()))
{
//验证码登录
req
.
setFlag
(
"0"
);
intactUtil
.
sendIntact
(
batchNo1
,
"login"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"校验验证码前的返回,因为验证码可能校验不通过,就直接返回了"
);
//校验验证码
this
.
checkAuthCode
(
req
);
}
else
{
//密码登录
if
(!
StringUtils
.
equals
(
req
.
getPassword
(),
account1
.
getPassword
()))
{
intactUtil
.
sendIntact
(
batchNo1
,
"login"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"请输入正确的密码"
);
return
PicaResponse
.
toResponse
(
null
,
PicaResultCode
.
PARAM_IS_INVALID
.
code
(),
"请输入正确的密码"
);
}
}
//更新最后登录时间
Account
update
=
new
Account
();
update
.
setId
(
account1
.
getId
());
update
.
setLastLoginTime
(
new
Date
());
if
(
StringUtils
.
isBlank
(
account1
.
getUnionid
())
&&
StringUtils
.
isNotBlank
(
req
.
getUnionid
()))
{
update
.
setUnionid
(
req
.
getUnionid
());
//绑定微信unionid
update
.
setModifyId
(
account1
.
getId
());
update
.
setModifyTime
(
new
Date
());
}
accountService
.
updateAccountById
(
update
);
//登录成功,清除旧token,生成新token
String
deviceType
=
super
.
getDeviceInfo
(
"device_type"
);
//1:pc 2:android 3:ios
String
newToken
=
this
.
generateTokenWebLive
(
account1
,
deviceType
);
intactUtil
.
sendIntact
(
batchNo1
,
"login"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"req:"
+
JSON
.
toJSONString
(
req
));
response
=
PicaResponse
.
toResponse
(
newToken
);
}
catch
(
PicaException
e
)
{
if
(
e
.
getCode
().
equals
(
PicaResultCode
.
PARAM_IS_INVALID
.
code
())
||
e
.
getCode
().
equals
(
PicaResultCode
.
RESULE_DATA_NONE
.
code
())){
intactUtil
.
sendIntact
(
batchNo
,
"webLive-loginRegister"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"验证码错误或过期-不加入提醒,返回值:"
+
JSON
.
toJSONString
(
response
));
}
throw
e
;
}
if
(
response
.
getData
()
!=
null
)
{
LoginResult
result
=
new
LoginResult
();
result
.
setToken
(
response
.
getData
().
toString
());
intactUtil
.
sendIntact
(
batchNo
,
"webLive-loginRegister"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"登录成功,返回值:"
+
JSON
.
toJSONString
(
response
.
getData
()));
return
PicaResponse
.
toResponse
(
result
);
}
return
response
;
}
else
{
// 注册
PicaResponse
<
LoginResult
>
result
=
null
;
try
{
// result = this.register(req);
this
.
checkMobilePhone
(
req
.
getMobilePhone
());
accountUtils
.
checkRegisterMobilePhoneAndAuthCode
(
req
.
getMobilePhone
(),
req
.
getFlag
(),
req
.
getAuthCode
());
//接入新旭事务一致性
String
batchNo2
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo2
,
"register"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"req:"
+
JSON
.
toJSONString
(
req
));
String
deviceType
=
super
.
getDeviceInfo
(
"device_type"
);
//1:pc 2:android 3:ios
Account
account2
=
new
Account
();
account2
.
setMobilePhone
(
EncryptUtils
.
encryptContent
(
req
.
getMobilePhone
(),
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
));
switch
(
deviceType
)
{
//注册来源
case
"1"
:
account2
.
setRegisterSource
(
CommonConstants
.
SYSTEM_TYPE_P024_NO_3
);
//pc
break
;
case
"2"
:
account2
.
setRegisterSource
(
CommonConstants
.
SYSTEM_TYPE_P024_NO_1
);
//android
break
;
case
"3"
:
account2
.
setRegisterSource
(
CommonConstants
.
SYSTEM_TYPE_P024_NO_2
);
//ios
break
;
default
:
account2
.
setRegisterSource
(
AccountTypeEnum
.
DEVICE_TYPE_H5
.
getCode
());
//H5注册
}
//创建账号
accountService
.
createAccount
(
account2
);
//生成token并返回
String
newToken
=
this
.
generateTokenWebLive
(
account2
,
deviceType
);
LoginResult
result1
=
new
LoginResult
();
result1
.
setToken
(
newToken
);
intactUtil
.
sendIntact
(
batchNo2
,
"register"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"req:"
+
JSON
.
toJSONString
(
req
));
// return PicaResponse.toResponse(result);
result
=
PicaResponse
.
toResponse
(
result1
);
}
catch
(
PicaException
e
)
{
if
(
e
.
getCode
().
equals
(
PicaResultCode
.
PARAM_IS_INVALID
.
code
())
||
e
.
getCode
().
equals
(
PicaResultCode
.
RESULE_DATA_NONE
.
code
())){
intactUtil
.
sendIntact
(
batchNo
,
"webLive--loginRegister"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"验证码错误或过期-不加入提醒,返回值:"
+
JSON
.
toJSONString
(
result
));
}
throw
e
;
}
intactUtil
.
sendIntact
(
batchNo
,
"webLive--loginRegister"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"注册成功,返回值:"
+
JSON
.
toJSONString
(
result
));
return
result
;
}
}
//手机格式校验
private
void
checkMobilePhone
(
String
mobilePhone
)
{
if
(
StringUtils
.
isBlank
(
mobilePhone
)
||
!
ValidateUtils
.
isMobile
(
mobilePhone
))
{
...
...
@@ -339,6 +472,40 @@ public class AccountController extends AccountBaseController {
return
newToken
;
}
private
String
generateH5TokenWebLive
(
Account
account
)
{
String
newToken
=
StringUtils
.
EMPTY
;
try
{
//先清除旧token
String
tokenValue
=
"token-doctor-"
+
account
.
getId
().
toString
();
String
oldToken
=
redisClient
.
get
(
tokenValue
+
"-h5"
);
if
(
StringUtils
.
isNotBlank
(
oldToken
))
{
redisClient
.
del
(
oldToken
);
}
//生成新token
int
expiredSeconds
=
30
*
24
*
60
*
60
;
//H5 token有效期30天
newToken
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
).
toUpperCase
();
String
tokenKey
=
"token-"
+
newToken
;
redisClient
.
set
(
tokenKey
,
tokenValue
,
expiredSeconds
);
redisClient
.
set
(
tokenValue
+
"-h5"
,
tokenKey
,
expiredSeconds
);
//用户数据放入缓存
PicaUser
picaUser
=
new
PicaUser
();
picaUser
.
setToken
(
newToken
);
picaUser
.
setId
(
account
.
getId
().
intValue
());
picaUser
.
setMobile
(
account
.
getMobilePhone
());
picaUser
.
setName
(
account
.
getName
());
//保留原name
picaUser
.
setCreated_time
(
account
.
getCreatTime
());
Map
<
String
,
String
>
data
=
Object2Map
.
objectToMapString
(
"yyyy-MM-dd HH:mm:ss"
,
picaUser
,
new
String
[
0
]);
data
.
put
(
"sysCode"
,
"h5"
);
data
.
forEach
((
key
,
value
)
->
{
value
=
value
==
null
?
""
:
value
;
redisClient
.
hset
(
tokenValue
,
key
,
value
);
});
}
catch
(
Exception
ex
)
{
logger
.
error
(
"生成H5 token异常:{}"
+
ex
.
getMessage
(),
ex
);
}
return
newToken
;
}
//清除旧token,生成新token
private
String
generateToken
(
Account
account
,
String
deviceType
)
{
//接入新旭事务一致性
...
...
@@ -362,6 +529,28 @@ public class AccountController extends AccountBaseController {
return
newToken
;
}
private
String
generateTokenWebLive
(
Account
account
,
String
deviceType
)
{
//接入新旭事务一致性
String
batchNo
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo
,
"generateToken"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"account:"
+
JSON
.
toJSONString
(
account
)+
",deviceType:"
+
deviceType
);
String
newToken
;
switch
(
deviceType
)
{
//设备信息
case
"1"
:
//pc
//TODO
newToken
=
StringUtils
.
EMPTY
;
break
;
case
"2"
:
//android
case
"3"
:
//ios
//TODO 更新设备信息
newToken
=
StringUtils
.
EMPTY
;
break
;
default
:
//H5
newToken
=
this
.
generateH5TokenWebLive
(
account
);
}
intactUtil
.
sendIntact
(
batchNo
,
"generateToken"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"newToken:"
+
newToken
);
return
newToken
;
}
public
static
void
main
(
String
[]
args
)
{
JSON
.
toJSONString
(
null
);
System
.
out
.
println
(
"成功"
);
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录