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
提交
8b210c15
提交
8b210c15
编写于
3月 05, 2020
作者:
Chongwen.jiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、风控调用业务修改到service层
2、验证码缓存key前缀常量提取
上级
0f4f8b92
流水线
#22420
已失败 于阶段
in 0 second
变更
7
流水线
1
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
199 行增加
和
140 行删除
+199
-140
Constants.java
...ica/cloud/account/account/server/constants/Constants.java
+3
-0
AccountController.java
.../account/account/server/controller/AccountController.java
+4
-6
AutoCodeController.java
...account/account/server/controller/AutoCodeController.java
+10
-120
AuthCodeService.java
...cloud/account/account/server/service/AuthCodeService.java
+22
-0
AuthCodeServiceImpl.java
...ount/account/server/service/impl/AuthCodeServiceImpl.java
+154
-0
AccountUtils.java
.../pica/cloud/account/account/server/util/AccountUtils.java
+3
-11
RegisterCodeKeyUtils.java
...oud/account/account/server/util/RegisterCodeKeyUtils.java
+3
-3
未找到文件。
server/src/main/java/com/pica/cloud/account/account/server/constants/Constants.java
浏览文件 @
8b210c15
...
@@ -58,4 +58,7 @@ public class Constants {
...
@@ -58,4 +58,7 @@ public class Constants {
/** h5端发送短信验证码接口开关缓存key */
/** h5端发送短信验证码接口开关缓存key */
public
static
final
String
AUTHCODE_H5_SWITCH_KEY
=
"AUTH-CODE-H5-SWITCH"
;
public
static
final
String
AUTHCODE_H5_SWITCH_KEY
=
"AUTH-CODE-H5-SWITCH"
;
/** 验证码缓存key前缀 */
public
static
final
String
AUTH_CODE_PREFIX
=
"authCode-"
;
}
}
server/src/main/java/com/pica/cloud/account/account/server/controller/AccountController.java
浏览文件 @
8b210c15
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
import
com.pica.cloud.account.account.server.constants.Constants
;
import
com.pica.cloud.account.account.server.entity.Account
;
import
com.pica.cloud.account.account.server.entity.Account
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.entity.LoginResult
;
import
com.pica.cloud.account.account.server.entity.LoginResult
;
import
com.pica.cloud.account.account.server.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.mapper.AccountMapper
;
import
com.pica.cloud.account.account.server.req.AccountReq
;
import
com.pica.cloud.account.account.server.req.AccountReq
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.service.AccountService
;
import
com.pica.cloud.account.account.server.service.AccountService
;
...
@@ -29,7 +29,6 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -29,7 +29,6 @@ import org.apache.commons.lang3.StringUtils;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -46,9 +45,8 @@ import java.util.UUID;
...
@@ -46,9 +45,8 @@ import java.util.UUID;
@RestController
@RestController
@RequestMapping
(
"/account"
)
@RequestMapping
(
"/account"
)
public
class
AccountController
extends
AccountBaseController
{
public
class
AccountController
extends
AccountBaseController
{
private
final
String
AUTH_CODE_PREFIX
=
"authCode-"
;
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountController
.
class
);
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountController
.
class
);
@Autowired
@Autowired
private
AccountService
accountService
;
private
AccountService
accountService
;
@Autowired
@Autowired
...
@@ -225,8 +223,8 @@ public class AccountController extends AccountBaseController {
...
@@ -225,8 +223,8 @@ public class AccountController extends AccountBaseController {
//获取验证码redis key
//获取验证码redis key
private
String
getAuthCodeKey
(
String
mobilePhone
,
String
flag
)
{
private
String
getAuthCodeKey
(
String
mobilePhone
,
String
flag
)
{
logger
.
info
(
AUTH_CODE_PREFIX
+
flag
+
"-"
+
EncryptUtils
.
encryptContent
(
mobilePhone
,
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
));
logger
.
info
(
Constants
.
AUTH_CODE_PREFIX
+
flag
+
"-"
+
EncryptUtils
.
encryptContent
(
mobilePhone
,
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
));
return
AUTH_CODE_PREFIX
+
flag
+
"-"
+
EncryptUtils
.
encryptContent
(
mobilePhone
,
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
);
return
Constants
.
AUTH_CODE_PREFIX
+
flag
+
"-"
+
EncryptUtils
.
encryptContent
(
mobilePhone
,
EncryptConstants
.
ENCRYPT_TYPE_MOBILE
);
}
}
//校验验证码
//校验验证码
...
...
server/src/main/java/com/pica/cloud/account/account/server/controller/AutoCodeController.java
浏览文件 @
8b210c15
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.pica.cloud.account.account.server.constants.Constants
;
import
com.pica.cloud.account.account.server.constants.Constants
;
import
com.pica.cloud.account.account.server.entity.AccountUnionEntity
;
import
com.pica.cloud.account.account.server.entity.AccountUnionEntity
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.entity.EncryptEntity
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
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.enums.AccountTypeEnum
;
import
com.pica.cloud.account.account.server.enums.RcRepTypeEnum
;
import
com.pica.cloud.account.account.server.exception.AccountException
;
import
com.pica.cloud.account.account.server.exception.AccountException
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.service.AccountService
;
import
com.pica.cloud.account.account.server.service.AccountService
;
import
com.pica.cloud.account.account.server.service.AccountUnionService
;
import
com.pica.cloud.account.account.server.service.AccountUnionService
;
import
com.pica.cloud.account.account.server.service.AuthCodeService
;
import
com.pica.cloud.account.account.server.service.CaptchaService
;
import
com.pica.cloud.account.account.server.service.CaptchaService
;
import
com.pica.cloud.account.account.server.util.*
;
import
com.pica.cloud.account.account.server.util.*
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaException
;
...
@@ -20,9 +19,6 @@ import com.pica.cloud.foundation.entity.PicaWarnException;
...
@@ -20,9 +19,6 @@ import com.pica.cloud.foundation.entity.PicaWarnException;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.redis.ICacheClient
;
import
com.pica.cloud.foundation.utils.utils.CommonUtil
;
import
com.pica.cloud.foundation.utils.utils.CommonUtil
;
import
com.pica.cloud.foundation.utils.utils.ValidateUtils
;
import
com.pica.cloud.foundation.utils.utils.ValidateUtils
;
import
com.pica.cloud.riskcontrol.riskcontrol.client.CheckCodeClient
;
import
com.pica.cloud.riskcontrol.riskcontrol.common.req.CheckcodeRiskReq
;
import
com.pica.cloud.riskcontrol.riskcontrol.common.resp.CheckcodeRiskResp
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.apache.catalina.servlet4preview.http.HttpServletRequest
;
import
org.apache.catalina.servlet4preview.http.HttpServletRequest
;
...
@@ -30,20 +26,14 @@ import org.apache.commons.lang3.StringUtils;
...
@@ -30,20 +26,14 @@ import org.apache.commons.lang3.StringUtils;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Objects
;
@Api
(
description
=
"短信验证码资源"
)
@Api
(
description
=
"短信验证码资源"
)
@RestController
@RestController
public
class
AutoCodeController
extends
AccountBaseController
{
public
class
AutoCodeController
extends
AccountBaseController
{
private
final
String
AUTH_CODE_PREFIX
=
"authCode-"
;
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountController
.
class
);
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountController
.
class
);
@Autowired
@Autowired
...
@@ -59,11 +49,8 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -59,11 +49,8 @@ public class AutoCodeController extends AccountBaseController {
private
ICacheClient
cacheClient
;
private
ICacheClient
cacheClient
;
@Autowired
@Autowired
private
CheckCodeClient
rcClient
;
private
AuthCodeService
authCodeService
;
@Autowired
@Qualifier
(
"accountThreadPool"
)
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
@GetMapping
(
"/ip"
)
@GetMapping
(
"/ip"
)
public
PicaResponse
getIp
(
HttpServletRequest
request
){
public
PicaResponse
getIp
(
HttpServletRequest
request
){
...
@@ -72,7 +59,7 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -72,7 +59,7 @@ public class AutoCodeController extends AccountBaseController {
/**
/**
* @Description native获取验证码,新老版本兼容
todo joy
* @Description native获取验证码,新老版本兼容
* @Author peijun.zhao
* @Author peijun.zhao
* @Date 2020/2/28 9:55
* @Date 2020/2/28 9:55
* @ModifyDate 2020/2/28 9:55
* @ModifyDate 2020/2/28 9:55
...
@@ -90,9 +77,7 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -90,9 +77,7 @@ public class AutoCodeController extends AccountBaseController {
if
(
request
.
getBizType
()
!=
null
&&
request
.
getBizType
().
equals
(
1
))
{
if
(
request
.
getBizType
()
!=
null
&&
request
.
getBizType
().
equals
(
1
))
{
logger
.
info
(
"app-rcValidate-start"
);
logger
.
info
(
"app-rcValidate-start"
);
// 调用风控接口
// 调用风控接口
this
.
rcValidate
(
request
.
getMobile
(),
request
.
getFlag
(),
authCodeService
.
rcValidate
(
req
,
request
,
super
.
getDeviceInfo
());
IPUtil
.
getIpAdrress
(
req
),
super
.
getDeviceInfo
(),
request
.
getDevice_token
());
// 发送短信验证码
// 发送短信验证码
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
return
PicaResponse
.
toResponse
();
return
PicaResponse
.
toResponse
();
...
@@ -100,7 +85,7 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -100,7 +85,7 @@ public class AutoCodeController extends AccountBaseController {
// 老版本业务(发送短信验证码)
// 老版本业务(发送短信验证码)
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
// 记录风控数据
// 记录风控数据
recordRcData
(
req
,
request
);
authCodeService
.
recordRcData
(
req
,
request
,
super
.
getDeviceInfo
(
"device_ip"
)
);
return
PicaResponse
.
toResponse
();
return
PicaResponse
.
toResponse
();
}
}
}
}
...
@@ -123,9 +108,7 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -123,9 +108,7 @@ public class AutoCodeController extends AccountBaseController {
if
(
request
.
getBizType
()
!=
null
&&
request
.
getBizType
().
equals
(
1
))
{
if
(
request
.
getBizType
()
!=
null
&&
request
.
getBizType
().
equals
(
1
))
{
logger
.
info
(
"h5-rcValidate-start"
);
logger
.
info
(
"h5-rcValidate-start"
);
// 调用风控接口
// 调用风控接口
this
.
rcValidate
(
request
.
getMobile
(),
request
.
getFlag
(),
authCodeService
.
rcValidate
(
req
,
request
,
super
.
getDeviceInfo
());
IPUtil
.
getIpAdrress
(
req
),
super
.
getDeviceInfo
(),
request
.
getDevice_token
());
// 发送短信验证码
// 发送短信验证码
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
return
PicaResponse
.
toResponse
();
return
PicaResponse
.
toResponse
();
...
@@ -133,7 +116,7 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -133,7 +116,7 @@ public class AutoCodeController extends AccountBaseController {
// h5(发送短信验证码)
// h5(发送短信验证码)
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
processSysCode
(
request
.
getMobile
(),
request
.
getFlag
());
// 记录风控数据
// 记录风控数据
recordRcData
(
req
,
request
);
authCodeService
.
recordRcData
(
req
,
request
,
super
.
getDeviceInfo
(
"device_ip"
)
);
return
PicaResponse
.
toResponse
();
return
PicaResponse
.
toResponse
();
}
}
}
}
...
@@ -174,37 +157,12 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -174,37 +157,12 @@ public class AutoCodeController extends AccountBaseController {
super
.
sendMobileMessage
(
mobilePhone
,
message
,
senderId
);
super
.
sendMobileMessage
(
mobilePhone
,
message
,
senderId
);
// 记录风控数据
// 记录风控数据
recordRcData
(
req
,
request
);
authCodeService
.
recordRcData
(
req
,
request
,
super
.
getDeviceInfo
(
"device_ip"
)
);
return
PicaResponse
.
toResponse
(
StringUtils
.
EMPTY
);
return
PicaResponse
.
toResponse
(
StringUtils
.
EMPTY
);
}
}
/**
* @Description 记录风控数据
* @Author Chongwen.jiang
* @Date 2020/2/27 16:53
* @ModifyDate 2020/2/27 16:53
* @Params [req, request]
* @Return void
*/
private
void
recordRcData
(
HttpServletRequest
req
,
BaseRequest
request
)
{
logger
.
info
(
"recordRcData-start"
);
CheckcodeRiskReq
rec
=
new
CheckcodeRiskReq
();
rec
.
setMobile
(
request
.
getMobile
());
rec
.
setIp
(
IPUtil
.
getIpAdrress
(
req
));
rec
.
setDeviceIp
(
super
.
getDeviceInfo
(
"device_ip"
));
rec
.
setDeviceId
(
request
.
getDevice_token
());
logger
.
info
(
"recordRcData-request-{}"
,
JSON
.
toJSONString
(
rec
));
try
{
threadPoolTaskExecutor
.
execute
(()
->
{
logger
.
info
(
"recordRcData-execute-{}"
,
JSON
.
toJSONString
(
rec
));
PicaResponse
resp
=
rcClient
.
logSend
(
rec
);
logger
.
info
(
"recordRcData-resp-{}"
,
JSON
.
toJSONString
(
resp
));
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"recordRcData invoke error"
,
e
.
getMessage
());
}
}
@ApiOperation
(
"微信获取验证码"
)
@ApiOperation
(
"微信获取验证码"
)
@PostMapping
(
value
=
"/authCode/wechat"
)
@PostMapping
(
value
=
"/authCode/wechat"
)
...
@@ -277,7 +235,7 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -277,7 +235,7 @@ public class AutoCodeController extends AccountBaseController {
//获取验证码redis key
//获取验证码redis key
private
String
getAuthCodeKey
(
String
mobilePhone
,
String
flag
)
{
private
String
getAuthCodeKey
(
String
mobilePhone
,
String
flag
)
{
return
AUTH_CODE_PREFIX
+
flag
+
"-"
+
AESUtil
.
encryptV0
(
mobilePhone
);
return
Constants
.
AUTH_CODE_PREFIX
+
flag
+
"-"
+
AESUtil
.
encryptV0
(
mobilePhone
);
}
}
//手机格式校验
//手机格式校验
...
@@ -294,74 +252,6 @@ public class AutoCodeController extends AccountBaseController {
...
@@ -294,74 +252,6 @@ public class AutoCodeController extends AccountBaseController {
return
PicaResponse
.
toResponse
(
cacheCode
);
return
PicaResponse
.
toResponse
(
cacheCode
);
}
}
/**
* @Description 调用风控接口
* @Author Chongwen.jiang
* @Date 2020/2/21 17:12
* @ModifyDate 2020/2/21 17:12
* @Params [mobile]
* @Return com.pica.cloud.account.account.server.resp.UnifiedVerificationResp
*/
private
void
rcValidate
(
String
mobile
,
Integer
flag
,
String
publicIp
,
String
deviceInfoStr
,
String
deviceToken
)
{
// 调用风控接口
PicaResponse
picaResponse
=
null
;
try
{
logger
.
info
(
"rcValidate-publicIp:{}, deviceToken:{}, deviceInfoStr:{}"
,
publicIp
,
deviceToken
,
deviceInfoStr
);
CheckcodeRiskReq
rcReq
=
new
CheckcodeRiskReq
();
rcReq
.
setMobile
(
mobile
);
rcReq
.
setIp
(
publicIp
);
PICAPDeviceInfo
deviceInfo
=
JSON
.
parseObject
(
deviceInfoStr
,
PICAPDeviceInfo
.
class
);
rcReq
.
setDeviceIp
(
deviceInfo
.
getDevice_ip
());
rcReq
.
setDeviceId
(
deviceToken
);
logger
.
info
(
"rc-checkcodeRisk-req:{}"
,
JSON
.
toJSONString
(
rcReq
));
picaResponse
=
rcClient
.
checkcodeRisk
(
rcReq
);
logger
.
info
(
"rc-checkcodeRisk-resp:{}"
,
JSON
.
toJSONString
(
picaResponse
));
}
catch
(
Exception
e
)
{
logger
.
error
(
"rc-checkcodeRisk-invoke-exception"
,
e
);
}
if
(
picaResponse
!=
null
&&
PicaResultCode
.
SUCCESS
.
code
().
equals
(
picaResponse
.
getCode
()))
{
Object
data
=
picaResponse
.
getData
();
if
(
Objects
.
nonNull
(
data
))
{
CheckcodeRiskResp
respData
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
data
),
CheckcodeRiskResp
.
class
);
if
(
StringUtils
.
isNotEmpty
(
respData
.
getProcessCode
()))
{
String
processCode
=
respData
.
getProcessCode
();
if
(
StringUtils
.
isNotEmpty
(
processCode
))
{
// 请求返回正常
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_SEND_FAIL
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_SEND_FAIL
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_SEND_FAIL
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_TRIGGER
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_TRIGGER
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_TRIGGER
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_BLACKLIST
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_BLACKLIST
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_BLACKLIST
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_DAY_LIMIT
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_DAY_LIMIT
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_DAY_LIMIT
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_60_SECOND_LIMIT
.
getCode
()))
{
// 获取剩余秒数
Long
time
=
cacheClient
.
get
(
this
.
getAuthCodeKey
(
mobile
,
flag
.
toString
())
+
"-secure"
,
Long
.
class
);
int
remainTime
=
59
-
(
int
)
(
System
.
currentTimeMillis
()
-
time
)
/
1000
;
if
(
remainTime
>
0
)
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_60_SECOND_LIMIT
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_60_SECOND_LIMIT
.
getMessage
().
replace
(
"{remainTime}"
,
String
.
valueOf
(
remainTime
)));
}
}
else
{
// processCode=1(允许发送短信验证码)
}
}
}
}
}
}
}
}
server/src/main/java/com/pica/cloud/account/account/server/service/AuthCodeService.java
0 → 100644
浏览文件 @
8b210c15
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
javax.servlet.http.HttpServletRequest
;
/**
* @ClassName AuthCodeService
* @Description 验证码业务
* @Author Chongwen.jiang
* @Date 2020/3/5 17:01
* @ModifyDate 2020/3/5 17:01
* @Version 1.0
*/
public
interface
AuthCodeService
{
void
rcValidate
(
HttpServletRequest
request
,
BaseRequest
baseRequest
,
String
deviceInfoStr
);
void
recordRcData
(
HttpServletRequest
req
,
BaseRequest
baseRequest
,
String
deviceIp
);
}
server/src/main/java/com/pica/cloud/account/account/server/service/impl/AuthCodeServiceImpl.java
0 → 100644
浏览文件 @
8b210c15
// Copyright 2016-2101 Pica.
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.pica.cloud.account.account.server.constants.Constants
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.enums.RcRepTypeEnum
;
import
com.pica.cloud.account.account.server.req.BaseRequest
;
import
com.pica.cloud.account.account.server.service.AuthCodeService
;
import
com.pica.cloud.account.account.server.util.AESUtil
;
import
com.pica.cloud.account.account.server.util.IPUtil
;
import
com.pica.cloud.account.account.server.util.PICAPDeviceInfo
;
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.redis.ICacheClient
;
import
com.pica.cloud.riskcontrol.riskcontrol.client.CheckCodeClient
;
import
com.pica.cloud.riskcontrol.riskcontrol.common.req.CheckcodeRiskReq
;
import
com.pica.cloud.riskcontrol.riskcontrol.common.resp.CheckcodeRiskResp
;
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
javax.servlet.http.HttpServletRequest
;
import
java.util.Objects
;
/**
* @ClassName AuthCodeServiceImpl
* @Description
* @Author Chongwen.jiang
* @Date 2020/3/5 17:01
* @ModifyDate 2020/3/5 17:01
* @Version 1.0
*/
@Service
public
class
AuthCodeServiceImpl
implements
AuthCodeService
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Autowired
private
CheckCodeClient
rcClient
;
@Autowired
private
ICacheClient
cacheClient
;
@Autowired
@Qualifier
(
"accountThreadPool"
)
private
ThreadPoolTaskExecutor
threadPoolTaskExecutor
;
/**
* @Description 调用风控接口
* @Author Chongwen.jiang
* @Date 2020/2/21 17:12
* @ModifyDate 2020/2/21 17:12
* @Params [mobile]
* @Return com.pica.cloud.account.account.server.resp.UnifiedVerificationResp
*/
@Override
public
void
rcValidate
(
HttpServletRequest
request
,
BaseRequest
baseRequest
,
String
deviceInfoStr
)
{
// 调用风控接口
PicaResponse
picaResponse
=
null
;
try
{
PICAPDeviceInfo
deviceInfo
=
JSON
.
parseObject
(
deviceInfoStr
,
PICAPDeviceInfo
.
class
);
String
publicIp
=
IPUtil
.
getIpAdrress
(
request
);
String
deviceToken
=
baseRequest
.
getDevice_token
();
logger
.
info
(
"rcValidate-publicIp:{}, deviceToken:{}, deviceInfoStr:{}"
,
publicIp
,
deviceToken
,
deviceInfoStr
);
CheckcodeRiskReq
rcReq
=
new
CheckcodeRiskReq
();
rcReq
.
setMobile
(
baseRequest
.
getMobile
());
rcReq
.
setIp
(
publicIp
);
rcReq
.
setDeviceIp
(
deviceInfo
.
getDevice_ip
());
rcReq
.
setDeviceId
(
deviceToken
);
logger
.
info
(
"rc-checkcodeRisk-req:{}"
,
JSON
.
toJSONString
(
rcReq
));
picaResponse
=
rcClient
.
checkcodeRisk
(
rcReq
);
logger
.
info
(
"rc-checkcodeRisk-resp:{}"
,
JSON
.
toJSONString
(
picaResponse
));
}
catch
(
Exception
e
)
{
logger
.
error
(
"rc-checkcodeRisk-invoke-exception"
,
e
);
}
if
(
picaResponse
!=
null
&&
PicaResultCode
.
SUCCESS
.
code
().
equals
(
picaResponse
.
getCode
()))
{
Object
data
=
picaResponse
.
getData
();
if
(
Objects
.
nonNull
(
data
))
{
CheckcodeRiskResp
respData
=
JSON
.
parseObject
(
JSON
.
toJSONString
(
data
),
CheckcodeRiskResp
.
class
);
if
(
StringUtils
.
isNotEmpty
(
respData
.
getProcessCode
()))
{
String
processCode
=
respData
.
getProcessCode
();
if
(
StringUtils
.
isNotEmpty
(
processCode
))
{
// 请求返回正常
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_SEND_FAIL
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_SEND_FAIL
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_SEND_FAIL
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_TRIGGER
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_TRIGGER
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_TRIGGER
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_BLACKLIST
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_BLACKLIST
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_BLACKLIST
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_DAY_LIMIT
.
getCode
()))
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_DAY_LIMIT
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_DAY_LIMIT
.
getMessage
());
}
else
if
(
processCode
.
equals
(
RcRepTypeEnum
.
RC_60_SECOND_LIMIT
.
getCode
()))
{
// 获取剩余秒数
String
authCodeKey
=
Constants
.
AUTH_CODE_PREFIX
+
baseRequest
.
getFlag
()
+
"-"
+
AESUtil
.
encryptV0
(
baseRequest
.
getMobile
())
+
"-secure"
;
Long
time
=
cacheClient
.
get
(
authCodeKey
,
Long
.
class
);
int
remainTime
=
59
-
(
int
)
(
System
.
currentTimeMillis
()
-
time
)
/
1000
;
if
(
remainTime
>
0
)
{
throw
new
PicaWarnException
(
AccountExceptionEnum
.
PICA_RC_60_SECOND_LIMIT
.
getCode
(),
AccountExceptionEnum
.
PICA_RC_60_SECOND_LIMIT
.
getMessage
().
replace
(
"{remainTime}"
,
String
.
valueOf
(
remainTime
)));
}
}
else
{
// processCode=1(允许发送短信验证码)
}
}
}
}
}
}
/**
* @Description 记录风控数据
* @Author Chongwen.jiang
* @Date 2020/2/27 16:53
* @ModifyDate 2020/2/27 16:53
* @Params [req, request]
* @Return void
*/
@Override
public
void
recordRcData
(
HttpServletRequest
request
,
BaseRequest
baseRequest
,
String
deviceIp
)
{
logger
.
info
(
"recordRcData-start"
);
CheckcodeRiskReq
rec
=
new
CheckcodeRiskReq
();
rec
.
setMobile
(
baseRequest
.
getMobile
());
rec
.
setIp
(
IPUtil
.
getIpAdrress
(
request
));
rec
.
setDeviceIp
(
deviceIp
);
rec
.
setDeviceId
(
baseRequest
.
getDevice_token
());
logger
.
info
(
"recordRcData-request-{}"
,
JSON
.
toJSONString
(
rec
));
try
{
threadPoolTaskExecutor
.
execute
(()
->
{
logger
.
info
(
"recordRcData-execute-{}"
,
JSON
.
toJSONString
(
rec
));
PicaResponse
resp
=
rcClient
.
logSend
(
rec
);
logger
.
info
(
"recordRcData-resp-{}"
,
JSON
.
toJSONString
(
resp
));
});
}
catch
(
Exception
e
)
{
logger
.
error
(
"recordRcData invoke error"
,
e
.
getMessage
());
}
}
}
server/src/main/java/com/pica/cloud/account/account/server/util/AccountUtils.java
浏览文件 @
8b210c15
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
com.pica.cloud.account.account.server.con
troller.AccountController
;
import
com.pica.cloud.account.account.server.con
stants.Constants
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.enums.AccountExceptionEnum
;
import
com.pica.cloud.account.account.server.mapper.AccountPatientInfoMapper
;
import
com.pica.cloud.account.account.server.mapper.DoctorMapper
;
import
com.pica.cloud.account.account.server.mapper.DoctorMapper
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaException
;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
import
com.pica.cloud.foundation.entity.PicaResultCode
;
...
@@ -19,21 +18,14 @@ import org.springframework.stereotype.Component;
...
@@ -19,21 +18,14 @@ import org.springframework.stereotype.Component;
*/
*/
@Component
@Component
public
class
AccountUtils
{
public
class
AccountUtils
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountUtils
.
class
);
@Autowired
@Autowired
private
ICacheClient
cacheClient
;
private
ICacheClient
cacheClient
;
private
Logger
logger
=
LoggerFactory
.
getLogger
(
AccountController
.
class
);
@Autowired
private
AccountPatientInfoMapper
accountPatientInfoMapper
;
@Autowired
@Autowired
private
DoctorMapper
doctorInfoMapper
;
private
DoctorMapper
doctorInfoMapper
;
private
static
final
String
AUTH_CODE_PREFIX
=
"authCode-"
;
private
static
final
String
AUTH_CODE_COUNT_PREFIX
=
"authCode-count-"
;
//手机非空和格式校验
//手机非空和格式校验
public
static
void
checkMobilePhone
(
String
mobilePhone
)
{
public
static
void
checkMobilePhone
(
String
mobilePhone
)
{
if
(
StringUtils
.
isBlank
(
mobilePhone
)
||
!
ValidateUtils
.
isMobile
(
mobilePhone
))
{
if
(
StringUtils
.
isBlank
(
mobilePhone
)
||
!
ValidateUtils
.
isMobile
(
mobilePhone
))
{
...
@@ -59,7 +51,7 @@ public class AccountUtils {
...
@@ -59,7 +51,7 @@ public class AccountUtils {
//获取验证码redis key
//获取验证码redis key
public
static
String
getAuthCodeKey
(
String
mobilePhone
,
String
flag
)
{
public
static
String
getAuthCodeKey
(
String
mobilePhone
,
String
flag
)
{
return
AUTH_CODE_PREFIX
+
flag
+
"-"
+
AESUtil
.
encryptV0
(
mobilePhone
);
return
Constants
.
AUTH_CODE_PREFIX
+
flag
+
"-"
+
AESUtil
.
encryptV0
(
mobilePhone
);
}
}
//手机号和验证码校验
//手机号和验证码校验
...
...
server/src/main/java/com/pica/cloud/account/account/server/util/RegisterCodeKeyUtils.java
浏览文件 @
8b210c15
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
package
com
.
pica
.
cloud
.
account
.
account
.
server
.
util
;
import
com.pica.cloud.account.account.server.constants.Constants
;
/**
/**
* Created on 2020/1/9 16:18
* Created on 2020/1/9 16:18
* author:crs
* author:crs
...
@@ -7,8 +9,6 @@ package com.pica.cloud.account.account.server.util;
...
@@ -7,8 +9,6 @@ package com.pica.cloud.account.account.server.util;
*/
*/
public
class
RegisterCodeKeyUtils
{
public
class
RegisterCodeKeyUtils
{
private
static
final
String
AUTH_CODE_PREFIX
=
"authCode-"
;
/**
/**
* 获取注册验证码的key
* 获取注册验证码的key
*
*
...
@@ -17,7 +17,7 @@ public class RegisterCodeKeyUtils {
...
@@ -17,7 +17,7 @@ public class RegisterCodeKeyUtils {
* @return
* @return
*/
*/
public
static
String
getRegisterKey
(
String
mobilePhone
,
String
authCode
)
{
public
static
String
getRegisterKey
(
String
mobilePhone
,
String
authCode
)
{
return
AUTH_CODE_PREFIX
+
AESUtil
.
encryptV0
(
mobilePhone
)
+
"-"
+
authCode
;
return
Constants
.
AUTH_CODE_PREFIX
+
AESUtil
.
encryptV0
(
mobilePhone
)
+
"-"
+
authCode
;
}
}
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录