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
提交
ba221d96
提交
ba221d96
编写于
12月 22, 2020
作者:
Peijun.zhao
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev-1223' into 'release'
Dev 1223 See merge request
!67
上级
98581e2d
b2947b43
流水线
#33746
已失败 于阶段
in 1 second
变更
23
流水线
1
隐藏空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
1126 行增加
和
10 行删除
+1126
-10
pom.xml
server/pom.xml
+6
-1
AutoCodeController.java
...account/account/server/controller/AutoCodeController.java
+1
-1
DoctorController.java
...d/account/account/server/controller/DoctorController.java
+10
-0
LoginV1Controller.java
.../account/account/server/controller/LoginV1Controller.java
+103
-0
AesAuthCodeReq.java
...account/account/server/entity/AesBean/AesAuthCodeReq.java
+11
-0
LogOneChlickCheck.java
...loud/account/account/server/entity/LogOneChlickCheck.java
+115
-0
LoginResult.java
...pica/cloud/account/account/server/entity/LoginResult.java
+29
-0
AccountExceptionEnum.java
...ud/account/account/server/enums/AccountExceptionEnum.java
+3
-0
LogOneChlickCheckMapper.java
...ccount/account/server/mapper/LogOneChlickCheckMapper.java
+21
-0
BaseRequest.java
...om/pica/cloud/account/account/server/req/BaseRequest.java
+10
-0
DoctorReq.java
.../com/pica/cloud/account/account/server/req/DoctorReq.java
+51
-0
OneClickLoginReq.java
...ca/cloud/account/account/server/req/OneClickLoginReq.java
+21
-0
AuthCodeService.java
...cloud/account/account/server/service/AuthCodeService.java
+1
-1
DoctorService.java
...a/cloud/account/account/server/service/DoctorService.java
+3
-0
LoginService.java
...ca/cloud/account/account/server/service/LoginService.java
+1
-0
LoginV1Service.java
.../cloud/account/account/server/service/LoginV1Service.java
+18
-0
AuthCodeServiceImpl.java
...ount/account/server/service/impl/AuthCodeServiceImpl.java
+7
-2
DoctorServiceImpl.java
...ccount/account/server/service/impl/DoctorServiceImpl.java
+30
-4
LoginV1ServiceImpl.java
...count/account/server/service/impl/LoginV1ServiceImpl.java
+474
-0
mybatis-generator.xml
server/src/main/resources/mybatis-generator.xml
+2
-0
DoctorMapper.xml
server/src/main/resources/mybatis/DoctorMapper.xml
+1
-1
LogOneChlickCheckMapper.xml
...er/src/main/resources/mybatis/LogOneChlickCheckMapper.xml
+175
-0
OneClickTest.java
...ica/cloud/account/account/server/mapper/OneClickTest.java
+33
-0
未找到文件。
server/pom.xml
浏览文件 @
ba221d96
...
...
@@ -226,7 +226,7 @@
<dependency>
<groupId>
com.pica.cloud.foundation
</groupId>
<artifactId>
pica-cloud-proof-client
</artifactId>
<version>
1.0.
1
</version>
<version>
1.0.
2
</version>
<exclusions>
<exclusion>
<groupId>
io.swagger
</groupId>
...
...
@@ -253,6 +253,11 @@
<!-- </exclusions>-->
<!-- </dependency>-->
<dependency>
<groupId>
com.pica.cloud.foundation
</groupId>
<artifactId>
pica-cloud-message-client
</artifactId>
<version>
1.0.6-SNAPSHOT
</version>
</dependency>
</dependencies>
<dependencyManagement>
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/AutoCodeController.java
浏览文件 @
ba221d96
...
...
@@ -225,7 +225,7 @@ public class AutoCodeController extends AccountBaseController {
public
PicaResponse
getJigsawCode
(
@RequestBody
EncryptEntity
entity
,
HttpServletRequest
req
)
throws
Exception
{
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
return
PicaResponse
.
toResponse
(
authCodeService
.
getJigsawCode
(
req
,
super
.
getSourceType
(),
request
.
getMobile
()));
return
PicaResponse
.
toResponse
(
authCodeService
.
getJigsawCode
(
req
,
super
.
getSourceType
(),
request
.
getMobile
()
,
request
.
getJigsawVersion
()
));
}
@ApiOperation
(
"微信获取验证码"
)
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/DoctorController.java
浏览文件 @
ba221d96
...
...
@@ -4,6 +4,7 @@ import com.pica.cloud.account.account.server.entity.AccountUser;
import
com.pica.cloud.account.account.server.entity.Doctor
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.exception.AccountException
;
import
com.pica.cloud.account.account.server.req.DoctorReq
;
import
com.pica.cloud.account.account.server.req.RevertAcctsReq
;
import
com.pica.cloud.account.account.server.service.DoctorService
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
...
...
@@ -60,6 +61,15 @@ public class DoctorController extends AccountBaseController {
return
PicaResponse
.
toResponse
();
}
@ApiOperation
(
"注册完新用户 完善信息接口"
)
@PutMapping
(
value
=
"/register/welcome"
,
produces
=
"application/json;charset=utf-8"
)
@EnabledLoginValidate
public
PicaResponse
registerWelcome
(
@RequestBody
DoctorReq
doctorReq
)
{
doctorReq
.
setId
(
fetchPicaUser
().
getId
());
doctorService
.
registerWelcome
(
doctorReq
);
return
PicaResponse
.
toResponse
();
}
/**
* 当前医生是哪个admin账户添加的
*
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/LoginV1Controller.java
0 → 100644
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pica.cloud.account.account.server.entity.AesBean.AesAuthCodeReq
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.entity.LogLoginAes
;
import
com.pica.cloud.account.account.server.entity.LoginResult
;
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.req.OneClickLoginReq
;
import
com.pica.cloud.account.account.server.service.LoginService
;
import
com.pica.cloud.account.account.server.service.LoginV1Service
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.account.account.server.util.CryptoUtil
;
import
com.pica.cloud.account.account.server.util.RSAUtil
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.commons.lang.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
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.RestController
;
@Api
(
description
=
"登录注册相关接口 v1.0"
)
@RestController
@RequestMapping
(
"v1/login"
)
public
class
LoginV1Controller
extends
AccountBaseController
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Autowired
private
LoginV1Service
loginV1Service
;
@Autowired
private
LoginService
loginService
;
@ApiOperation
(
value
=
"app端手机号码一键登录 v1"
)
@PostMapping
(
"one_click"
)
public
PicaResponse
<
LoginResult
>
oneClickLogin
(
@RequestBody
AesAuthCodeReq
aesReq
)
throws
Exception
{
EncryptEntity
entity
=
new
EncryptEntity
();
entity
.
setKey
(
aesReq
.
getKey
());
entity
.
setContent
(
aesReq
.
getContent
());
OneClickLoginReq
req
=
CryptoUtil
.
decrypt
(
entity
,
OneClickLoginReq
.
class
);
req
.
setProductType
(
super
.
getProductType
());
req
.
setSourceType
(
super
.
getSourceType
());
req
.
setLoginIp
(
super
.
getIpAddr
());
req
.
setUserTokenTourist
(
super
.
getUserTokenTourist
());
logger
.
info
(
"one-click req:{}"
,
JSONObject
.
toJSONString
(
req
));
LoginResult
oneClickLoginResultVo
=
loginV1Service
.
oneClickLoginV1
(
req
);
return
PicaResponse
.
toResponse
(
oneClickLoginResultVo
);
}
@ApiOperation
(
value
=
"手机号统一校验"
)
@PostMapping
(
"/unifiedVerification"
)
public
PicaResponse
unifiedVerification
(
@RequestBody
AesAuthCodeReq
req
)
throws
Exception
{
EncryptEntity
entity
=
new
EncryptEntity
();
entity
.
setKey
(
req
.
getKey
());
entity
.
setContent
(
req
.
getContent
());
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
request
.
setSourceType
(
super
.
getSourceType
());
logger
.
info
(
"v1/login/unifiedVerification:{}"
,
JSONObject
.
toJSONString
(
request
));
loginV1Service
.
mobileValidate
(
request
);
return
PicaResponse
.
toResponse
();
}
/**
* 密码登录接口(app、H5、web --> v1)
*
* @param authCodeReq
* @return
* @throws Exception
*/
@ApiOperation
(
"密码登录接口"
)
@PostMapping
(
"/password"
)
public
PicaResponse
<
LoginResult
>
v1LoginPassword
(
@RequestBody
AesAuthCodeReq
authCodeReq
)
throws
Exception
{
EncryptEntity
entity
=
new
EncryptEntity
();
entity
.
setKey
(
authCodeReq
.
getKey
());
entity
.
setContent
(
authCodeReq
.
getContent
());
BaseRequest
request
=
CryptoUtil
.
decrypt
(
entity
,
BaseRequest
.
class
);
request
.
setProductType
(
super
.
getProductType
());
Integer
sourceType
=
super
.
getSourceType
();
request
.
setSourceType
(
sourceType
==
null
?
0
:
sourceType
);
request
.
setLoginIp
(
super
.
getIpAddr
());
request
.
setUserTokenTourist
(
super
.
getUserTokenTourist
());
AccountUtils
.
checkMobilePhone
(
request
.
getMobile
());
AccountUtils
.
checkPassword
(
request
.
getPassword
());
LoginResult
login
=
loginV1Service
.
v1LoginPassword
(
request
);
if
(
SourceTypeEnum
.
SAAS
.
getCode
().
equals
(
sourceType
))
{
login
.
setDoctorId
(
""
);
}
else
{
login
.
setUserId
(
null
);
}
return
PicaResponse
.
toResponse
(
login
);
}
}
server/src/main/java/com/pica/cloud/account/account/server/entity/AesBean/AesAuthCodeReq.java
浏览文件 @
ba221d96
...
...
@@ -34,6 +34,17 @@ public class AesAuthCodeReq {
*/
private
String
content
;
// 是否需要校验该设备登录的手机号
private
Boolean
checkFlag
=
false
;
public
Boolean
getCheckFlag
()
{
return
checkFlag
;
}
public
void
setCheckFlag
(
Boolean
checkFlag
)
{
this
.
checkFlag
=
checkFlag
;
}
public
Integer
getBizType
()
{
return
bizType
;
}
...
...
server/src/main/java/com/pica/cloud/account/account/server/entity/LogOneChlickCheck.java
0 → 100644
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
entity
;
import
java.util.Date
;
public
class
LogOneChlickCheck
{
private
Integer
id
;
private
String
deviceToken
;
private
String
lastMobilePhone
;
private
String
currMobilePhone
;
private
Boolean
usedShanyan
;
private
String
keepBack
;
private
Byte
deleteFlag
;
private
Integer
createdId
;
private
Date
createdTime
;
private
Integer
modifiedId
;
private
Date
modifiedTime
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getDeviceToken
()
{
return
deviceToken
;
}
public
void
setDeviceToken
(
String
deviceToken
)
{
this
.
deviceToken
=
deviceToken
==
null
?
null
:
deviceToken
.
trim
();
}
public
String
getLastMobilePhone
()
{
return
lastMobilePhone
;
}
public
void
setLastMobilePhone
(
String
lastMobilePhone
)
{
this
.
lastMobilePhone
=
lastMobilePhone
==
null
?
null
:
lastMobilePhone
.
trim
();
}
public
String
getCurrMobilePhone
()
{
return
currMobilePhone
;
}
public
void
setCurrMobilePhone
(
String
currMobilePhone
)
{
this
.
currMobilePhone
=
currMobilePhone
==
null
?
null
:
currMobilePhone
.
trim
();
}
public
Boolean
getUsedShanyan
()
{
return
usedShanyan
;
}
public
void
setUsedShanyan
(
Boolean
usedShanyan
)
{
this
.
usedShanyan
=
usedShanyan
;
}
public
String
getKeepBack
()
{
return
keepBack
;
}
public
void
setKeepBack
(
String
keepBack
)
{
this
.
keepBack
=
keepBack
==
null
?
null
:
keepBack
.
trim
();
}
public
Byte
getDeleteFlag
()
{
return
deleteFlag
;
}
public
void
setDeleteFlag
(
Byte
deleteFlag
)
{
this
.
deleteFlag
=
deleteFlag
;
}
public
Integer
getCreatedId
()
{
return
createdId
;
}
public
void
setCreatedId
(
Integer
createdId
)
{
this
.
createdId
=
createdId
;
}
public
Date
getCreatedTime
()
{
return
createdTime
;
}
public
void
setCreatedTime
(
Date
createdTime
)
{
this
.
createdTime
=
createdTime
;
}
public
Integer
getModifiedId
()
{
return
modifiedId
;
}
public
void
setModifiedId
(
Integer
modifiedId
)
{
this
.
modifiedId
=
modifiedId
;
}
public
Date
getModifiedTime
()
{
return
modifiedTime
;
}
public
void
setModifiedTime
(
Date
modifiedTime
)
{
this
.
modifiedTime
=
modifiedTime
;
}
}
\ No newline at end of file
server/src/main/java/com/pica/cloud/account/account/server/entity/LoginResult.java
浏览文件 @
ba221d96
...
...
@@ -30,6 +30,35 @@ public class LoginResult {
@ApiModelProperty
(
"accountinfo表主键id"
)
private
Integer
acctId
;
private
Boolean
checkStatus
=
true
;
private
String
suggestMessage
;
private
String
differentMessage
;
public
Boolean
getCheckStatus
()
{
return
checkStatus
;
}
public
void
setCheckStatus
(
Boolean
checkStatus
)
{
this
.
checkStatus
=
checkStatus
;
}
public
String
getSuggestMessage
()
{
return
suggestMessage
;
}
public
void
setSuggestMessage
(
String
suggestMessage
)
{
this
.
suggestMessage
=
suggestMessage
;
}
public
String
getDifferentMessage
()
{
return
differentMessage
;
}
public
void
setDifferentMessage
(
String
differentMessage
)
{
this
.
differentMessage
=
differentMessage
;
}
public
String
getToken
()
{
return
token
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/enums/AccountExceptionEnum.java
浏览文件 @
ba221d96
...
...
@@ -67,6 +67,9 @@ public enum AccountExceptionEnum {
PAT_QUERY_MAX
(
"216558"
,
"查询参数过多"
),
PICA_PASSWORD_RESET
(
"216559"
,
"您尚未设置密码,请退出登录后使用密码方式登录进行密码设置"
),
MOBILE_NOT_REGISTER
(
"216560"
,
"手机号{mobile}尚未注册"
),
PARAMS_BIZ_TYPE_EMPTY
(
"216561"
,
"参数bizType不能为空"
),
xxx_xxx
(
""
,
""
);
...
...
server/src/main/java/com/pica/cloud/account/account/server/mapper/LogOneChlickCheckMapper.java
0 → 100644
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
mapper
;
import
com.pica.cloud.account.account.server.entity.LogOneChlickCheck
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
LogOneChlickCheckMapper
{
int
deleteByPrimaryKey
(
Integer
id
);
int
insert
(
LogOneChlickCheck
record
);
int
insertSelective
(
LogOneChlickCheck
record
);
LogOneChlickCheck
selectByPrimaryKey
(
Integer
id
);
int
updateByPrimaryKeySelective
(
LogOneChlickCheck
record
);
int
updateByPrimaryKey
(
LogOneChlickCheck
record
);
int
insertOne
(
LogOneChlickCheck
record
);
}
\ No newline at end of file
server/src/main/java/com/pica/cloud/account/account/server/req/BaseRequest.java
浏览文件 @
ba221d96
...
...
@@ -54,6 +54,16 @@ public class BaseRequest {
private
Integer
imageW
;
@ApiModelProperty
(
"用户本地token"
)
private
String
userTokenTourist
;
@ApiModelProperty
(
"拼图version"
)
private
String
jigsawVersion
;
public
String
getJigsawVersion
()
{
return
jigsawVersion
;
}
public
void
setJigsawVersion
(
String
jigsawVersion
)
{
this
.
jigsawVersion
=
jigsawVersion
;
}
public
String
getUserTokenTourist
()
{
return
userTokenTourist
;
...
...
server/src/main/java/com/pica/cloud/account/account/server/req/DoctorReq.java
0 → 100644
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
req
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
@ApiModel
public
class
DoctorReq
{
private
Integer
id
;
@ApiModelProperty
(
"姓名"
)
private
String
name
;
@ApiModelProperty
(
"科室"
)
private
String
department
;
@ApiModelProperty
(
"职称"
)
private
String
title
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getDepartment
()
{
return
department
;
}
public
void
setDepartment
(
String
department
)
{
this
.
department
=
department
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/req/OneClickLoginReq.java
浏览文件 @
ba221d96
...
...
@@ -17,6 +17,27 @@ public class OneClickLoginReq {
private
String
userTokenTourist
;
// 是否需要校验该设备登录的手机号
private
Boolean
checkFlag
=
false
;
private
String
deviceToken
;
public
String
getDeviceToken
()
{
return
deviceToken
;
}
public
void
setDeviceToken
(
String
deviceToken
)
{
this
.
deviceToken
=
deviceToken
;
}
public
Boolean
getCheckFlag
()
{
return
checkFlag
;
}
public
void
setCheckFlag
(
Boolean
checkFlag
)
{
this
.
checkFlag
=
checkFlag
;
}
public
String
getLoginIp
()
{
return
loginIp
;
}
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/AuthCodeService.java
浏览文件 @
ba221d96
...
...
@@ -22,7 +22,7 @@ public interface AuthCodeService {
int
validateJigsawCode
(
HttpServletRequest
request
,
BaseRequest
req
);
JigsawCodeModel
getJigsawCode
(
HttpServletRequest
request
,
Integer
sourceType
,
String
mobile
);
JigsawCodeModel
getJigsawCode
(
HttpServletRequest
request
,
Integer
sourceType
,
String
mobile
,
String
jigsawVersion
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/DoctorService.java
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.entity.Doctor
;
import
com.pica.cloud.account.account.server.req.DoctorReq
;
import
java.util.List
;
...
...
@@ -26,6 +27,8 @@ public interface DoctorService {
*/
void
modifyDoctorInfo
(
Doctor
doctor
,
Long
doctorId
);
int
registerWelcome
(
DoctorReq
doctorReq
);
/**
* 修改医生信息
*
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/LoginService.java
浏览文件 @
ba221d96
...
...
@@ -100,4 +100,5 @@ public interface LoginService {
int
insertLoginAesLog
(
LogLoginAes
aes
);
LoginResult
loginQRCode
(
BaseRequest
request
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/LoginV1Service.java
0 → 100644
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.entity.LoginResult
;
import
com.pica.cloud.account.account.server.req.OneClickLoginReq
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
public
interface
LoginV1Service
{
LoginResult
oneClickLoginV1
(
OneClickLoginReq
req
);
void
mobileValidate
(
BaseRequest
request
);
LoginResult
v1LoginPassword
(
BaseRequest
request
);
void
insertLog
(
Integer
userId
,
String
currMobilePhone
,
String
deviceToken
,
String
keepBack
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/impl/AuthCodeServiceImpl.java
浏览文件 @
ba221d96
...
...
@@ -287,7 +287,7 @@ public class AuthCodeServiceImpl implements AuthCodeService {
* @Return com.pica.cloud.account.account.server.model.JigsawCodeModel
*/
@Override
public
JigsawCodeModel
getJigsawCode
(
HttpServletRequest
request
,
Integer
sourceType
,
String
mobile
)
{
public
JigsawCodeModel
getJigsawCode
(
HttpServletRequest
request
,
Integer
sourceType
,
String
mobile
,
String
jigsawVersion
)
{
if
(!
SourceTypeEnum
.
H5
.
getCode
().
equals
(
sourceType
))
{
logger
.
error
(
"getJigsawCode-h5 sourceType error"
);
throw
new
PicaWarnException
(
PicaResultCode
.
PARAM_IS_INVALID
.
code
(),
PicaResultCode
.
PARAM_IS_INVALID
.
message
());
...
...
@@ -304,7 +304,12 @@ public class AuthCodeServiceImpl implements AuthCodeService {
String
key
=
Constants
.
JIGSAW_CODE_KEY
.
replace
(
"{mobile}"
,
mobile
);
if
(
needCheck
>
0
)
{
try
{
picResp
=
sliderImageService
.
getPic
();
if
(
null
!=
jigsawVersion
&&
jigsawVersion
.
equals
(
"v1"
)){
// 新版获取 拼图(指定公司背景图)
picResp
=
sliderImageService
.
getPicV1
();
}
else
{
picResp
=
sliderImageService
.
getPic
();
}
logger
.
info
(
"getJigsawCode-getPic-code:{}"
,
picResp
.
getCode
());
}
catch
(
Exception
e
)
{
logger
.
error
(
"getJigsawCode-sliderImageService.getPic invoke exception"
,
e
.
getMessage
());
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/DoctorServiceImpl.java
浏览文件 @
ba221d96
...
...
@@ -8,11 +8,13 @@ import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import
com.pica.cloud.account.account.server.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.exception.AccountException
;
import
com.pica.cloud.account.account.server.mapper.*
;
import
com.pica.cloud.account.account.server.req.DoctorReq
;
import
com.pica.cloud.account.account.server.service.DoctorService
;
import
com.pica.cloud.account.account.server.util.AESUtil
;
import
com.pica.cloud.account.account.server.util.AccountUtils
;
import
com.pica.cloud.foundation.encryption.common.constants.EncryptConstants
;
import
com.pica.cloud.foundation.encryption.util.EncryptUtils
;
import
com.pica.cloud.foundation.entity.PicaWarnException
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.utils.utils.StringUtil
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -91,6 +93,30 @@ public class DoctorServiceImpl implements DoctorService {
accountInfoDetailMapper
.
updateByPrimaryKeySelective
(
accountInfoEntity
);
}
@Override
public
int
registerWelcome
(
DoctorReq
doctorReq
)
{
logger
.
info
(
"registerWelcome req:{}"
,
JSONObject
.
toJSONString
(
doctorReq
));
Doctor
doctor
=
doctorMapper
.
selectByPrimaryKey
(
doctorReq
.
getId
());
if
(
null
==
doctor
)
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_PARAMS_ERROR
.
getCode
(),
AccountExceptionEnum
.
PICA_PARAMS_ERROR
.
getMessage
());
}
/*if(StringUtil.isNotNull(doctorReq.getDepartment())){
doctor.setDepartment(doctorReq.getDepartment());
}
if(StringUtil.isNotNull(doctorReq.getTitle())){
doctor.setTitle(doctorReq.getTitle());
}*/
if
(
StringUtil
.
isNotNull
(
doctorReq
.
getName
()))
{
doctor
.
setName
(
doctorReq
.
getName
());
doctor
.
setModifyTime
(
new
Date
());
doctor
.
setModifyId
(
doctorReq
.
getId
());
return
doctorMapper
.
updateByPrimaryKeySelective
(
doctor
);
}
return
0
;
}
@Transactional
@Override
public
void
deleteDoctorInfo
(
Integer
id
,
Long
modifyId
)
{
...
...
@@ -211,15 +237,15 @@ public class DoctorServiceImpl implements DoctorService {
@Override
public
List
<
Integer
>
getDoctorsByInnerOrg
()
{
String
ids
=
cacheClient
.
get
(
Constants
.
INNER_ORG_IDS
);
if
(
StringUtil
.
isEmpty
(
ids
))
{
if
(
StringUtil
.
isEmpty
(
ids
))
{
List
<
Integer
>
dbIds
=
doctorMapper
.
getDoctorsByInnerOrg
(
null
);
String
arrStr
=
""
;
for
(
Integer
i
:
dbIds
)
{
for
(
Integer
i
:
dbIds
)
{
arrStr
=
arrStr
+
i
+
","
;
}
cacheClient
.
setex
(
Constants
.
INNER_ORG_IDS
,
arrStr
,
3600
);
cacheClient
.
setex
(
Constants
.
INNER_ORG_IDS
,
arrStr
,
3600
);
return
dbIds
;
}
else
{
}
else
{
List
<
Integer
>
rtnIds
=
Arrays
.
asList
(
ids
.
split
(
","
)).
stream
().
filter
(
s
->
!
""
.
equals
(
s
)).
map
(
s
->
Integer
.
parseInt
(
s
)).
collect
(
Collectors
.
toList
());
return
rtnIds
;
}
...
...
server/src/main/java/com/pica/cloud/account/account/server/service/impl/LoginV1ServiceImpl.java
0 → 100644
浏览文件 @
ba221d96
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.pica.cloud.account.account.server.constants.Constants
;
import
com.pica.cloud.account.account.server.entity.*
;
import
com.pica.cloud.account.account.server.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.enums.SourceTypeEnum
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.log.AccountLogEntityUtils
;
import
com.pica.cloud.account.account.server.log.AccountLogUtils
;
import
com.pica.cloud.account.account.server.mapper.AccountInfoDetailMapper
;
import
com.pica.cloud.account.account.server.mapper.DoctorMapper
;
import
com.pica.cloud.account.account.server.mapper.LogOneChlickCheckMapper
;
import
com.pica.cloud.account.account.server.model.OneClickProcessor
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.req.OneClickLoginReq
;
import
com.pica.cloud.account.account.server.service.LoginV1Service
;
import
com.pica.cloud.account.account.server.service.RegisterService
;
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.IntactUtil
;
import
com.pica.cloud.account.account.server.util.TokenUtils
;
import
com.pica.cloud.foundation.completeness.client.utils.IntactUtils
;
import
com.pica.cloud.foundation.completeness.contract.constants.CommonConstants
;
import
com.pica.cloud.foundation.encryption.common.constants.EncryptConstants
;
import
com.pica.cloud.foundation.encryption.util.EncryptUtils
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaResponse
;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
import
com.pica.cloud.foundation.entity.PicaWarnException
;
import
com.pica.cloud.foundation.message.client.EquipmentService
;
import
com.pica.cloud.foundation.message.common.req.DeviceReq
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.utils.utils.ValidateUtils
;
import
org.apache.commons.lang3.StringUtils
;
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
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.Map
;
@Service
public
class
LoginV1ServiceImpl
implements
LoginV1Service
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Autowired
private
RegisterService
registerService
;
@Autowired
private
OneClickProcessor
oneClickProcessor
;
@Autowired
private
IntactUtil
intactUtil
;
@Autowired
private
AccountUtils
accountUtils
;
@Autowired
private
TokenUtils
tokenUtils
;
@Autowired
private
DoctorMapper
doctorInfoMapper
;
@Autowired
private
AccountLogUtils
picaLogUtils
;
@Autowired
private
AccountInfoDetailMapper
accountInfoMapper
;
@Autowired
private
ICacheClient
cacheClient
;
@Autowired
private
AccountInfoDetailMapper
accountInfoDetailMapper
;
@Qualifier
(
"accountThreadPool"
)
@Autowired
private
ThreadPoolTaskExecutor
poolTaskExecutor
;
@Autowired
private
LogOneChlickCheckMapper
logOneChlickCheckMapper
;
@Autowired
private
EquipmentService
equipmentService
;
/**
* 新版一键登录
*
* @param req
* @return
*/
@Override
public
LoginResult
oneClickLoginV1
(
OneClickLoginReq
req
)
{
QueryMobileEntity
queryMobileEntity
=
oneClickProcessor
.
tokenExchangeMobile
(
req
.
getToken
(),
req
.
getSourceType
());
if
(
queryMobileEntity
==
null
||
StringUtils
.
isBlank
(
queryMobileEntity
.
getMobile
())
||
!
ValidateUtils
.
isMobile
(
queryMobileEntity
.
getMobile
()))
{
logger
.
error
(
"oneClickLoginV1 闪验获取出错-queryMobileEntity:{}"
,
JSONObject
.
toJSONString
(
queryMobileEntity
));
throw
new
PicaException
(
PicaResultCode
.
INTERFACE_INVOKE_EXCEPTION
.
code
(),
"获取手机号失败!"
);
}
queryMobileEntity
.
setSourceType
(
req
.
getSourceType
());
AccountInfoEntity
accountInfoEntity
=
accountInfoDetailMapper
.
selectByMobile
(
AESUtil
.
encryptV0
(
queryMobileEntity
.
getMobile
()));
BaseRequest
baseRequest
=
new
BaseRequest
();
baseRequest
.
setMobile
(
queryMobileEntity
.
getMobile
());
baseRequest
.
setSourceType
(
req
.
getSourceType
());
baseRequest
.
setProductType
(
req
.
getProductType
());
baseRequest
.
setLoginIp
(
req
.
getLoginIp
());
baseRequest
.
setUserTokenTourist
(
req
.
getUserTokenTourist
());
LoginResult
result
;
if
(
accountInfoEntity
==
null
)
{
//说明是注册功能
result
=
registerService
.
register
(
baseRequest
,
queryMobileEntity
);
}
else
{
String
deviceToken
=
req
.
getDeviceToken
();
logger
.
info
(
"oneClickLoginV1-用户传入的deviceToken为{}"
,
JSONObject
.
toJSONString
(
baseRequest
));
if
(
StringUtils
.
isEmpty
(
deviceToken
))
{
throw
new
PicaException
(
PicaResultCode
.
PARAM_IS_BLANK
.
code
(),
PicaResultCode
.
PARAM_IS_BLANK
.
message
());
}
// 根据deviceToken获取该设备上一次登录的手机号
Integer
userId
=
getUserId
(
deviceToken
);
logger
.
info
(
"oneClickLoginV1-该设备上次登录的用户id为:{}"
,
userId
);
logger
.
info
(
"oneClickLoginV1-accountInfoEntity, {}"
,
JSONObject
.
toJSONString
(
accountInfoEntity
));
if
(
req
.
getCheckFlag
())
{
// 直接登录,不需要校验手机号(点击了继续一键登录)
logger
.
info
(
"oneClickLoginV1-用户直接登录, {}"
,
JSONObject
.
toJSONString
(
baseRequest
));
result
=
processLoginV1
(
baseRequest
,
accountInfoEntity
.
getId
(),
AccountTypeEnum
.
LOGIN_ONE_CLICK
.
getCode
(),
queryMobileEntity
);
// 记录继续一键登录日志
Map
<
String
,
String
>
param
=
new
HashMap
();
param
.
put
(
"req"
,
JSONObject
.
toJSONString
(
req
));
param
.
put
(
"queryMobileEntity"
,
JSONObject
.
toJSONString
(
queryMobileEntity
));
param
.
put
(
"accountInfoEntity"
,
JSONObject
.
toJSONString
(
accountInfoEntity
));
param
.
put
(
"baseRequest"
,
JSONObject
.
toJSONString
(
baseRequest
));
poolTaskExecutor
.
execute
(()
->
insertLog
(
userId
,
queryMobileEntity
.
getMobile
(),
deviceToken
,
param
.
toString
()));
}
else
{
// 第一次点"一键登录"接口,需要比对上次登录的手机号与这次是否一样
if
(
userId
==
null
)
{
// 直接登录
result
=
processLoginV1
(
baseRequest
,
accountInfoEntity
.
getId
(),
AccountTypeEnum
.
LOGIN_ONE_CLICK
.
getCode
(),
queryMobileEntity
);
}
else
{
// 根据userId获取手机号
PICAPDoctor
doctor
=
doctorInfoMapper
.
queryDoctor
(
userId
);
if
(
doctor
==
null
)
{
// 医生被删掉了,直接登录
result
=
processLoginV1
(
baseRequest
,
accountInfoEntity
.
getId
(),
AccountTypeEnum
.
LOGIN_ONE_CLICK
.
getCode
(),
queryMobileEntity
);
}
else
{
String
mobilePhone
=
doctor
.
getMobile_phone
();
mobilePhone
=
EncryptUtils
.
decryptContent
(
mobilePhone
,
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
,
EncryptConstants
.
ENCRYPT_DECRYPT_KEY
);
if
(
queryMobileEntity
.
getMobile
().
equals
(
mobilePhone
))
{
// 手机号匹配,直接登录
result
=
processLoginV1
(
baseRequest
,
accountInfoEntity
.
getId
(),
AccountTypeEnum
.
LOGIN_ONE_CLICK
.
getCode
(),
queryMobileEntity
);
}
else
{
// 该设备本次登录手机号与上次登录手机号不是同一手机号,需用户进行确认
result
=
new
LoginResult
();
result
.
setCheckStatus
(
false
);
result
.
setSuggestMessage
(
"为保证学习记录完整,建议使用同一手机号进行登录"
);
String
begin
=
mobilePhone
.
substring
(
0
,
3
);
String
end
=
mobilePhone
.
substring
(
7
,
11
);
String
last
=
begin
+
"****"
+
end
;
String
differentMessage
=
"当前设备上次使用"
+
last
+
"登录"
;
result
.
setDifferentMessage
(
differentMessage
);
}
}
}
}
}
return
result
;
}
@Override
public
void
insertLog
(
Integer
userId
,
String
currMobilePhone
,
String
deviceToken
,
String
keepBack
)
{
logger
.
info
(
"oneClickLoginV1-继续一键登录日志入库"
);
// 获取上一次登录的手机号
String
lastMobilePhone
=
""
;
PICAPDoctor
doctor
=
doctorInfoMapper
.
queryDoctor
(
userId
);
if
(
doctor
!=
null
)
{
lastMobilePhone
=
doctor
.
getMobile_phone
();
}
// 加密当前手机号
currMobilePhone
=
EncryptUtils
.
encryptContent
(
currMobilePhone
,
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
);
LogOneChlickCheck
logOneChlickCheck
=
new
LogOneChlickCheck
();
logOneChlickCheck
.
setCreatedId
(
99999999
);
logOneChlickCheck
.
setModifiedId
(
99999999
);
Date
now
=
new
Date
();
logOneChlickCheck
.
setCreatedTime
(
now
);
logOneChlickCheck
.
setModifiedTime
(
now
);
logOneChlickCheck
.
setCurrMobilePhone
(
currMobilePhone
);
logOneChlickCheck
.
setLastMobilePhone
(
lastMobilePhone
);
logOneChlickCheck
.
setDeleteFlag
((
byte
)
1
);
logOneChlickCheck
.
setUsedShanyan
(
true
);
logOneChlickCheck
.
setDeviceToken
(
deviceToken
);
logOneChlickCheck
.
setKeepBack
(
keepBack
);
logger
.
info
(
"oneClickLoginV1-继续一键登录日志入库,{}"
,
JSONObject
.
toJSONString
(
logOneChlickCheck
));
logOneChlickCheckMapper
.
insertOne
(
logOneChlickCheck
);
logger
.
info
(
"oneClickLoginV1-继续一键登录日志入库完成"
);
}
private
Integer
getUserId
(
String
deviceToken
)
{
Integer
userId
=
null
;
try
{
DeviceReq
req
=
new
DeviceReq
();
req
.
setDeviceToken
(
deviceToken
);
PicaResponse
<
Integer
>
response
=
equipmentService
.
getUserIdByDeviceToken
(
req
);
userId
=
response
.
getData
();
}
catch
(
Exception
e
)
{
// 防止message服务出问题影响一键登录流程
logger
.
error
(
"getUserId-调用message服务出错!"
);
e
.
printStackTrace
();
}
return
userId
;
}
private
LoginResult
processLoginV1
(
BaseRequest
baseRequest
,
Integer
acctId
,
Integer
loginType
,
QueryMobileEntity
queryMobileEntity
)
{
//接入新旭事务一致性
String
batchNo
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo
,
"processLoginV1"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"baseRequest:"
+
JSON
.
toJSONString
(
baseRequest
)
+
",+acctId:"
+
acctId
+
",loginType:"
+
loginType
+
",queryMobileEntity:"
+
JSON
.
toJSONString
(
queryMobileEntity
));
Date
currentTime
=
new
Date
();
Long
userId
=
accountUtils
.
getUserIdByAcctId
(
baseRequest
.
getProductType
(),
acctId
);
Account
account
=
new
Account
();
account
.
setId
(
userId
);
account
.
setAcctId
(
acctId
);
account
.
setCreatTime
(
currentTime
);
account
.
setMobilePhone
(
baseRequest
.
getMobile
());
account
.
setRegisterSource
(
baseRequest
.
getSourceType
());
String
newToken
=
tokenUtils
.
generateToken
(
account
);
LoginResult
result
=
new
LoginResult
();
result
.
setToken
(
newToken
);
result
.
setUserId
(
userId
);
result
.
setMobile
(
baseRequest
.
getMobile
());
result
.
setDoctorId
(
EncryptUtils
.
encryptContent
(
userId
+
""
,
EncryptConstants
.
ENCRYPT_TYPE_ID
));
//是否完善过个人信息(云鹊医app才需要)
if
(
baseRequest
.
getProductType
()
!=
AccountTypeEnum
.
PRODUCT_TYPE_HEALTH
.
getCode
())
{
Doctor
doctorEntity
=
doctorInfoMapper
.
selectByPrimaryKey
(
userId
.
intValue
());
result
.
setEntireFlag
(
doctorEntity
.
getEntireFlag
());
}
//记录登录日志
LogLoginEntity
entity
=
AccountLogEntityUtils
.
getLogLoginEntity
(
acctId
,
baseRequest
.
getProductType
(),
baseRequest
.
getSourceType
(),
loginType
,
baseRequest
.
getLoginIp
(),
AccountTypeEnum
.
LOGIN_STATUS_SUCCESS
.
getCode
(),
AccountTypeEnum
.
LOG_TYPE_LOGIN
.
getCode
(),
newToken
,
1
,
baseRequest
.
getUserTokenTourist
());
if
(
queryMobileEntity
!=
null
)
{
entity
.
setQueryMobileEntity
(
queryMobileEntity
);
}
picaLogUtils
.
info
(
entity
);
intactUtil
.
sendIntact
(
batchNo
,
"processLoginV1"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"baseRequest:"
+
JSON
.
toJSONString
(
baseRequest
)
+
",+acctId:"
+
acctId
+
",loginType:"
+
loginType
+
",queryMobileEntity:"
+
JSON
.
toJSONString
(
queryMobileEntity
));
return
result
;
}
/**
* 手机号 统一check
*
* @param request
*/
@Override
public
void
mobileValidate
(
BaseRequest
request
)
{
Integer
bizType
=
request
.
getBizType
();
String
mobile
=
request
.
getMobile
();
Integer
sourceType
=
request
.
getSourceType
();
if
(
null
==
bizType
)
{
logger
.
info
(
"bizType is null"
);
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PARAMS_BIZ_TYPE_EMPTY
.
getCode
(),
AccountExceptionEnum
.
PARAMS_BIZ_TYPE_EMPTY
.
getMessage
());
}
// 手机号规则校验
if
(
StringUtils
.
isNotEmpty
(
mobile
)
&&
!
ValidateUtils
.
isMobile
(
mobile
))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_MOBILE_REG_FALSE
.
getCode
(),
AccountExceptionEnum
.
PICA_MOBILE_REG_FALSE
.
getMessage
());
}
if
(
bizType
.
equals
(
3
))
{
// 账户密码登录-step1-check mobile
// 手机号是否注册
AccountInfoEntity
accountInfo
=
accountInfoMapper
.
selectByMobile
(
AESUtil
.
encryptV0
(
mobile
));
if
(
accountInfo
==
null
)
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
MOBILE_NOT_REGISTER
.
getCode
(),
AccountExceptionEnum
.
MOBILE_NOT_REGISTER
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
}
// 手机号是否设置了密码
if
(
StringUtils
.
isEmpty
(
accountInfo
.
getPassword
()))
{
if
(
sourceType
!=
null
&&
SourceTypeEnum
.
H5
.
getCode
().
equals
(
sourceType
))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD_H5
.
getCode
(),
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD_H5
.
getMessage
());
}
else
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD
.
getCode
(),
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
}
}
}
}
/**
* v1 账户密码登录
*
* @param request
* @return
*/
@Override
public
LoginResult
v1LoginPassword
(
BaseRequest
request
)
{
String
batchNo
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo
,
"v1LoginPassword"
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"request:"
+
JSON
.
toJSONString
(
request
));
String
mobile
=
request
.
getMobile
();
Integer
sourceType
=
request
.
getSourceType
();
String
encrypt
=
AESUtil
.
encryptV0
(
mobile
);
AccountInfoEntity
accountInfoEntity
=
accountInfoMapper
.
selectByMobile
(
encrypt
);
Doctor
doctorInfo
=
doctorInfoMapper
.
getDoctorInfoByMobile
(
encrypt
);
if
(
null
==
accountInfoEntity
||
null
==
doctorInfo
)
{
intactUtil
.
sendIntact
(
batchNo
,
"v1LoginPassword"
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"手机号"
+
mobile
+
"尚未注册"
);
throw
new
PicaWarnException
(
AccountExceptionEnum
.
MOBILE_NOT_REGISTER
.
getCode
(),
AccountExceptionEnum
.
MOBILE_NOT_REGISTER
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
}
else
{
String
oldPwd
=
accountInfoEntity
.
getPassword
();
String
password
=
request
.
getPassword
();
// db中账户 未设置密码
if
(
StringUtils
.
isEmpty
(
oldPwd
))
{
if
(
sourceType
!=
null
&&
SourceTypeEnum
.
H5
.
getCode
().
equals
(
sourceType
))
{
intactUtil
.
sendIntact
(
batchNo
,
"v1LoginPassword"
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD_H5
.
getMessage
());
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD_H5
.
getCode
(),
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD_H5
.
getMessage
());
}
else
{
intactUtil
.
sendIntact
(
batchNo
,
"v1LoginPassword"
,
com
.
pica
.
cloud
.
foundation
.
completeness
.
contract
.
constants
.
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD
.
getCode
(),
AccountExceptionEnum
.
PICA_MOBILE_NOT_SETED_PASSWORD
.
getMessage
()
.
replace
(
"{mobile}"
,
mobile
));
}
}
// 判断账号是否已锁
checkMobileIsLocked
(
mobile
,
sourceType
,
batchNo
,
"v1LoginPassword"
);
if
(!
password
.
equals
(
oldPwd
))
{
//登录密码错误,次数计数、存cache
checkMobileErrorPasswordLogin
(
mobile
,
sourceType
,
batchNo
,
"v1LoginPassword"
);
}
else
{
intactUtil
.
sendIntact
(
batchNo
,
"v1LoginPassword"
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"接下来调用pwdLoginCorrect"
);
//密码登录-密码正确逻辑
return
v1PwdLoginCorrect
(
request
,
mobile
,
doctorInfo
);
}
}
return
null
;
}
/**
* ------------------- private -------------------
*/
/**
* 判断账号是否已锁
*
* @param mobile
*/
private
void
checkMobileIsLocked
(
String
mobile
,
Integer
sourceType
,
String
batchNo
,
String
batchMethod
)
{
String
lockKey
=
Constants
.
ACCOUNT_LOCK_KEY
.
replace
(
"{mobile}"
,
mobile
);
if
(
cacheClient
.
exists
(
lockKey
))
{
if
(
sourceType
!=
null
&&
SourceTypeEnum
.
H5
.
getCode
().
equals
(
sourceType
))
{
intactUtil
.
sendIntact
(
batchNo
,
batchMethod
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5_H5
.
getMessage
());
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5_H5
.
getCode
(),
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5_H5
.
getMessage
());
}
else
{
intactUtil
.
sendIntact
(
batchNo
,
batchMethod
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5
.
getCode
(),
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
}
}
}
/**
* @param mobile
* @param sourceType
* @param batchNo
* @param batchMethod
*/
private
void
checkMobileErrorPasswordLogin
(
String
mobile
,
Integer
sourceType
,
String
batchNo
,
String
batchMethod
)
{
String
lockKey
=
Constants
.
ACCOUNT_LOCK_KEY
.
replace
(
"{mobile}"
,
mobile
);
String
errorKey
=
Constants
.
PWD_ERROR_NUM_KEY
.
replace
(
"{mobile}"
,
mobile
);
if
(
cacheClient
.
exists
(
errorKey
))
{
int
errorCount
=
Integer
.
parseInt
(
cacheClient
.
get
(
errorKey
));
errorCount
=
errorCount
+
1
;
cacheClient
.
set
(
errorKey
,
errorCount
,
Constants
.
PWD_ERROR_NUM_SECONDS
);
if
(
errorCount
<=
4
)
{
intactUtil
.
sendIntact
(
batchNo
,
batchMethod
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_PWD_MISMATCH_4
.
getMessage
());
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PWD_MISMATCH_4
.
getCode
(),
AccountExceptionEnum
.
PICA_PWD_MISMATCH_4
.
getMessage
());
}
else
{
// 设置账号锁定24h
cacheClient
.
set
(
lockKey
,
mobile
,
Constants
.
PWD_ERROR_NUM_SECONDS
);
if
(
sourceType
!=
null
&&
SourceTypeEnum
.
H5
.
getCode
().
equals
(
sourceType
))
{
intactUtil
.
sendIntact
(
batchNo
,
batchMethod
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5_H5
.
getMessage
());
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5_H5
.
getCode
(),
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5_H5
.
getMessage
());
}
else
{
intactUtil
.
sendIntact
(
batchNo
,
batchMethod
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5
.
getCode
(),
AccountExceptionEnum
.
PICA_PWD_MISMATCH_5
.
getMessage
().
replace
(
"{mobile}"
,
mobile
));
}
}
}
else
{
cacheClient
.
set
(
errorKey
,
1
,
Constants
.
PWD_ERROR_NUM_SECONDS
);
intactUtil
.
sendIntact
(
batchNo
,
batchMethod
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
AccountExceptionEnum
.
PICA_PWD_MISMATCH_4
.
getMessage
());
throw
new
PicaException
(
AccountExceptionEnum
.
PICA_PWD_MISMATCH_4
.
getCode
(),
AccountExceptionEnum
.
PICA_PWD_MISMATCH_4
.
getMessage
());
}
}
/**
* @Description 密码登录-密码正确逻辑
*/
private
LoginResult
v1PwdLoginCorrect
(
BaseRequest
request
,
String
mobile
,
Doctor
doctor
)
{
//接入新旭事务一致性
String
batchNo
=
IntactUtils
.
getUUID
();
intactUtil
.
sendIntact
(
batchNo
,
"v1PwdLoginCorrect"
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_1
,
"baseRequest:"
+
JSON
.
toJSONString
(
request
));
Date
currentTime
=
new
Date
();
Integer
acctId
=
doctor
.
getAcctId
();
int
productType
=
request
.
getProductType
();
int
sourceType
=
request
.
getSourceType
();
Integer
userId
=
doctor
.
getId
();
Account
account
=
new
Account
();
account
.
setId
(
userId
.
longValue
());
account
.
setAcctId
(
acctId
);
account
.
setCreatTime
(
currentTime
);
account
.
setMobilePhone
(
mobile
);
account
.
setRegisterSource
(
sourceType
);
String
newToken
=
tokenUtils
.
generateToken
(
account
);
LoginResult
result
=
new
LoginResult
();
result
.
setToken
(
newToken
);
result
.
setUserId
(
userId
.
longValue
());
result
.
setMobile
(
mobile
);
result
.
setDoctorId
(
EncryptUtils
.
encryptContent
(
userId
+
""
,
EncryptConstants
.
ENCRYPT_TYPE_ID
));
result
.
setEntireFlag
(
doctor
.
getEntireFlag
());
LogLoginEntity
entity
=
AccountLogEntityUtils
.
getLogLoginEntity
(
acctId
,
productType
,
sourceType
,
AccountTypeEnum
.
LOGIN_PWD
.
getCode
(),
request
.
getLoginIp
(),
AccountTypeEnum
.
LOGIN_STATUS_SUCCESS
.
getCode
(),
AccountTypeEnum
.
LOG_TYPE_LOGIN
.
getCode
(),
newToken
,
1
,
request
.
getUserTokenTourist
());
picaLogUtils
.
info
(
entity
);
// 密码登录成功以后,清除错误次数记录
String
pwdErrorNum
=
Constants
.
PWD_ERROR_NUM_KEY
.
replace
(
"{mobile}"
,
mobile
);
if
(
cacheClient
.
exists
(
pwdErrorNum
))
{
cacheClient
.
del
(
pwdErrorNum
);
}
intactUtil
.
sendIntact
(
batchNo
,
"v1PwdLoginCorrect"
,
CommonConstants
.
INTACT_CONTENT_LOG_STATUS_3
,
"baseRequest:"
+
JSON
.
toJSONString
(
request
));
return
result
;
}
}
server/src/main/resources/mybatis-generator.xml
浏览文件 @
ba221d96
...
...
@@ -9,6 +9,7 @@
<!-- <classPathEntry location="/Users/wangyongbo/Downloads/software/mysql-connector-java-5.1.39.jar"/>-->
<!-- <classPathEntry location="D:\programer\reponsitory\maven\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/>-->
<!--<classPathEntry location="E:\mysql_jar/mysql-connector-java-5.1.39.jar"/>-->
<classPathEntry
location=
"/Users/zhoupengcheng/mysql_jar/mysql-connector-java-5.1.49.jar"
/>
<context
id=
"tableEntity"
targetRuntime=
"MyBatis3"
>
<commentGenerator>
...
...
@@ -43,6 +44,7 @@
<!-- <table tableName="account_apple_info" domainObjectName="AccountAppleInfo" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
<!-- <table tableName="account_pat_family_record" domainObjectName="AccountPatFamilyRecord" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
<table
tableName=
"log_one_chlick_check"
domainObjectName=
"LogOneChlickCheck"
enableCountByExample=
"false"
enableUpdateByExample=
"false"
enableDeleteByExample=
"false"
enableSelectByExample=
"false"
selectByExampleQueryId=
"false"
></table>
</context>
</generatorConfiguration>
...
...
server/src/main/resources/mybatis/DoctorMapper.xml
浏览文件 @
ba221d96
...
...
@@ -126,7 +126,7 @@
select
<include
refid=
"Base_Column_List"
/>
from p_doctor
where id = #{id} and delete_flag
=
1
where id = #{id} and delete_flag
=
1
</select>
<!--删除用户-->
...
...
server/src/main/resources/mybatis/LogOneChlickCheckMapper.xml
0 → 100644
浏览文件 @
ba221d96
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.pica.cloud.account.account.server.mapper.LogOneChlickCheckMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.pica.cloud.account.account.server.entity.LogOneChlickCheck"
>
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"device_token"
property=
"deviceToken"
jdbcType=
"VARCHAR"
/>
<result
column=
"last_mobile_phone"
property=
"lastMobilePhone"
jdbcType=
"VARCHAR"
/>
<result
column=
"curr_mobile_phone"
property=
"currMobilePhone"
jdbcType=
"VARCHAR"
/>
<result
column=
"used_shanyan"
property=
"usedShanyan"
jdbcType=
"BIT"
/>
<result
column=
"keep_back"
property=
"keepBack"
jdbcType=
"VARCHAR"
/>
<result
column=
"delete_flag"
property=
"deleteFlag"
jdbcType=
"TINYINT"
/>
<result
column=
"created_id"
property=
"createdId"
jdbcType=
"INTEGER"
/>
<result
column=
"created_time"
property=
"createdTime"
jdbcType=
"TIMESTAMP"
/>
<result
column=
"modified_id"
property=
"modifiedId"
jdbcType=
"INTEGER"
/>
<result
column=
"modified_time"
property=
"modifiedTime"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, device_token, last_mobile_phone, curr_mobile_phone, used_shanyan, keep_back,
delete_flag, created_id, created_time, modified_id, modified_time
</sql>
<select
id=
"selectByPrimaryKey"
resultMap=
"BaseResultMap"
parameterType=
"java.lang.Integer"
>
select
<include
refid=
"Base_Column_List"
/>
from log_one_chlick_check
where id = #{id,jdbcType=INTEGER}
</select>
<delete
id=
"deleteByPrimaryKey"
parameterType=
"java.lang.Integer"
>
delete from log_one_chlick_check
where id = #{id,jdbcType=INTEGER}
</delete>
<insert
id=
"insert"
parameterType=
"com.pica.cloud.account.account.server.entity.LogOneChlickCheck"
>
insert into log_one_chlick_check (id, device_token, last_mobile_phone,
curr_mobile_phone, used_shanyan, keep_back,
delete_flag, created_id, created_time,
modified_id, modified_time)
values (#{id,jdbcType=INTEGER}, #{deviceToken,jdbcType=VARCHAR}, #{lastMobilePhone,jdbcType=VARCHAR},
#{currMobilePhone,jdbcType=VARCHAR}, #{usedShanyan,jdbcType=BIT}, #{keepBack,jdbcType=VARCHAR},
#{deleteFlag,jdbcType=TINYINT}, #{createdId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP},
#{modifiedId,jdbcType=INTEGER}, #{modifiedTime,jdbcType=TIMESTAMP})
</insert>
<insert
id=
"insertSelective"
parameterType=
"com.pica.cloud.account.account.server.entity.LogOneChlickCheck"
>
insert into log_one_chlick_check
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
id,
</if>
<if
test=
"deviceToken != null"
>
device_token,
</if>
<if
test=
"lastMobilePhone != null"
>
last_mobile_phone,
</if>
<if
test=
"currMobilePhone != null"
>
curr_mobile_phone,
</if>
<if
test=
"usedShanyan != null"
>
used_shanyan,
</if>
<if
test=
"keepBack != null"
>
keep_back,
</if>
<if
test=
"deleteFlag != null"
>
delete_flag,
</if>
<if
test=
"createdId != null"
>
created_id,
</if>
<if
test=
"createdTime != null"
>
created_time,
</if>
<if
test=
"modifiedId != null"
>
modified_id,
</if>
<if
test=
"modifiedTime != null"
>
modified_time,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
#{id,jdbcType=INTEGER},
</if>
<if
test=
"deviceToken != null"
>
#{deviceToken,jdbcType=VARCHAR},
</if>
<if
test=
"lastMobilePhone != null"
>
#{lastMobilePhone,jdbcType=VARCHAR},
</if>
<if
test=
"currMobilePhone != null"
>
#{currMobilePhone,jdbcType=VARCHAR},
</if>
<if
test=
"usedShanyan != null"
>
#{usedShanyan,jdbcType=BIT},
</if>
<if
test=
"keepBack != null"
>
#{keepBack,jdbcType=VARCHAR},
</if>
<if
test=
"deleteFlag != null"
>
#{deleteFlag,jdbcType=TINYINT},
</if>
<if
test=
"createdId != null"
>
#{createdId,jdbcType=INTEGER},
</if>
<if
test=
"createdTime != null"
>
#{createdTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"modifiedId != null"
>
#{modifiedId,jdbcType=INTEGER},
</if>
<if
test=
"modifiedTime != null"
>
#{modifiedTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update
id=
"updateByPrimaryKeySelective"
parameterType=
"com.pica.cloud.account.account.server.entity.LogOneChlickCheck"
>
update log_one_chlick_check
<set
>
<if
test=
"deviceToken != null"
>
device_token = #{deviceToken,jdbcType=VARCHAR},
</if>
<if
test=
"lastMobilePhone != null"
>
last_mobile_phone = #{lastMobilePhone,jdbcType=VARCHAR},
</if>
<if
test=
"currMobilePhone != null"
>
curr_mobile_phone = #{currMobilePhone,jdbcType=VARCHAR},
</if>
<if
test=
"usedShanyan != null"
>
used_shanyan = #{usedShanyan,jdbcType=BIT},
</if>
<if
test=
"keepBack != null"
>
keep_back = #{keepBack,jdbcType=VARCHAR},
</if>
<if
test=
"deleteFlag != null"
>
delete_flag = #{deleteFlag,jdbcType=TINYINT},
</if>
<if
test=
"createdId != null"
>
created_id = #{createdId,jdbcType=INTEGER},
</if>
<if
test=
"createdTime != null"
>
created_time = #{createdTime,jdbcType=TIMESTAMP},
</if>
<if
test=
"modifiedId != null"
>
modified_id = #{modifiedId,jdbcType=INTEGER},
</if>
<if
test=
"modifiedTime != null"
>
modified_time = #{modifiedTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update
id=
"updateByPrimaryKey"
parameterType=
"com.pica.cloud.account.account.server.entity.LogOneChlickCheck"
>
update log_one_chlick_check
set device_token = #{deviceToken,jdbcType=VARCHAR},
last_mobile_phone = #{lastMobilePhone,jdbcType=VARCHAR},
curr_mobile_phone = #{currMobilePhone,jdbcType=VARCHAR},
used_shanyan = #{usedShanyan,jdbcType=BIT},
keep_back = #{keepBack,jdbcType=VARCHAR},
delete_flag = #{deleteFlag,jdbcType=TINYINT},
created_id = #{createdId,jdbcType=INTEGER},
created_time = #{createdTime,jdbcType=TIMESTAMP},
modified_id = #{modifiedId,jdbcType=INTEGER},
modified_time = #{modifiedTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<insert
id=
"insertOne"
parameterType=
"com.pica.cloud.account.account.server.entity.LogOneChlickCheck"
>
insert into log_one_chlick_check (device_token, last_mobile_phone,
curr_mobile_phone, used_shanyan, keep_back,
delete_flag, created_id, created_time,
modified_id, modified_time)
values (#{deviceToken,jdbcType=VARCHAR}, #{lastMobilePhone,jdbcType=VARCHAR},
#{currMobilePhone,jdbcType=VARCHAR}, #{usedShanyan,jdbcType=BIT}, #{keepBack,jdbcType=VARCHAR},
#{deleteFlag,jdbcType=TINYINT}, #{createdId,jdbcType=INTEGER}, #{createdTime,jdbcType=TIMESTAMP},
#{modifiedId,jdbcType=INTEGER}, #{modifiedTime,jdbcType=TIMESTAMP})
</insert>
</mapper>
\ No newline at end of file
server/test/main/java/com/pica/cloud/account/account/server/mapper/OneClickTest.java
0 → 100644
浏览文件 @
ba221d96
// Copyright 2016-2101 Pica.
package
pica
.
cloud
.
account
.
account
.
server
.
mapper
;
import
com.pica.cloud.account.account.server.App
;
import
com.pica.cloud.account.account.server.service.LoginV1Service
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
/**
* @ClassName AutoCodeControllerTest
* @Description
* @Author Chongwen.jiang
* @Date 2020/4/3 14:31
* @ModifyDate 2020/4/3 14:31
* @Version 1.0
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
(
classes
=
App
.
class
)
public
class
OneClickTest
{
@Autowired
LoginV1Service
loginV1Service
;
@Test
public
void
test
()
{
loginV1Service
.
insertLog
(
1000005511
,
"13073690113"
,
"161a397c8bc807ed97"
,
"{baseRequest={\\\"flag\\\":0,\\\"loginIp\\\":\\\"172.25.36.64\\\",\\\"mobile\\\":\\\"13073690113\\\",\\\"productType\\\":1,\\\"sourceType\\\":2,\\\"userTokenTourist\\\":\\\"06388870914559557010\\\"}, accountInfoEntity={\\\"age\\\":0,\\\"createdId\\\":49,\\\"createdTime\\\":1586336527000,\\\"deleteFlag\\\":1,\\\"id\\\":49,\\\"mobilePhone\\\":\\\"N/rge2EqV+KgL+li6YBfag==\\\",\\\"modifiedId\\\":49,\\\"modifiedTime\\\":1606982710000,\\\"name\\\":\\\"\\\",\\\"password\\\":\\\"F6127053CB61F3A162F79C031302EAA9\\\",\\\"regTime\\\":1586336527000,\\\"registerProduct\\\":1,\\\"registerSource\\\":1,\\\"sex\\\":0}, queryMobileEntity={\\\"chargeStatus\\\":1,\\\"code\\\":\\\"200000\\\",\\\"data\\\":{\\\"mobileName\\\":\\\"8A7285AA29407E465B2E89053D32FB2E\\\",\\\"tradeNo\\\":\\\"790607755953070080\\\"},\\\"message\\\":\\\"成功\\\",\\\"mobile\\\":\\\"13073690113\\\",\\\"sourceType\\\":2}, req={\\\"checkFlag\\\":true,\\\"deviceToken\\\":\\\"161a3797c8bc807ed97\\\",\\\"loginIp\\\":\\\"172.25.36.64\\\",\\\"productType\\\":1,\\\"sourceType\\\":2,\\\"token\\\":\\\"A4-PAYG_0uR5Q3IeSPcQaN9mPZs20iUJPGDxQWMcNiipcrrsuN-fkr0R3dZad4_c_o5vMRFIfQo0oJiE5owd6-xN8f71byCQ8FIFuWKnxj_1AvoGrrmXBmYNu4bwA4Cinw247d_42lC6bxPxB9d-Bnl8SqBNdqX3HHWYTCtswZaT9Ig2H-9R6j9vaa4yMo9DX5mAUVJMNMQi58NcbfpcSnxPw==\\\",\\\"userTokenTourist\\\":\\\"06388870914559557010\\\"}}"
);
}
}
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录