Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
f4a698bc
提交
f4a698bc
authored
4月 17, 2020
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
迁移 user 模块的发送短信功能到 system 模块
上级
4ffc2cb8
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
262 行增加
和
50 行删除
+262
-50
pom.xml
system/pom.xml
+1
-2
SystemErrorCodeEnum.java
...iocoder/mall/system/biz/constant/SystemErrorCodeEnum.java
+7
-0
OAuth2MobileCodeMapper.java
...er/mall/system/biz/dao/oauth2/OAuth2MobileCodeMapper.java
+6
-6
OAuth2MobileCodeDO.java
...mall/system/biz/dataobject/oauth2/OAuth2MobileCodeDO.java
+57
-0
OAuth2MobileCodeAuthenticateDTO.java
...ystem/biz/dto/oatuh2/OAuth2MobileCodeAuthenticateDTO.java
+14
-0
OAuth2MobileCodeSendDTO.java
...r/mall/system/biz/dto/oatuh2/OAuth2MobileCodeSendDTO.java
+14
-0
package-info.java
...ain/java/cn/iocoder/mall/system/biz/dto/package-info.java
+0
-1
AdminService.java
...n/iocoder/mall/system/biz/service/admin/AdminService.java
+3
-0
OAuth2MobileCodeService.java
...ll/system/biz/service/oauth2/OAuth2MobileCodeService.java
+14
-0
OAuth2Service.java
...iocoder/mall/system/biz/service/oauth2/OAuth2Service.java
+3
-0
OAuth2MobileCodeServiceImpl.java
.../biz/service/oauth2/impl/OAuth2MobileCodeServiceImpl.java
+67
-0
OAuth2ServiceImpl.java
...all/system/biz/service/oauth2/impl/OAuth2ServiceImpl.java
+6
-0
UserService.java
.../cn/iocoder/mall/system/biz/service/user/UserService.java
+10
-0
UserServiceImpl.java
...er/mall/system/biz/service/user/impl/UserServiceImpl.java
+8
-0
biz.properties
system/system-biz/src/main/resources/biz.properties
+5
-2
UsersOAuth2Controller.java
...l/system/rest/controller/users/UsersOAuth2Controller.java
+46
-0
UserErrorCodeEnum.java
.../cn/iocoder/mall/user/api/constant/UserErrorCodeEnum.java
+1
-7
MobileCodeServiceImpl.java
.../iocoder/mall/user/biz/service/MobileCodeServiceImpl.java
+0
-28
application.properties
...ice-impl/src/main/resources/config/application.properties
+0
-4
没有找到文件。
system/pom.xml
浏览文件 @
f4a698bc
...
...
@@ -14,7 +14,7 @@
<packaging>
pom
</packaging>
<modules>
<!-- <module>system-application</module>--
>
<module>
system-application
</module
>
<module>
system-sdk
</module>
<module>
system-service-api
</module>
<module>
system-service-impl
</module>
...
...
@@ -22,7 +22,6 @@
<module>
system-rpc
</module>
<module>
system-rest
</module>
<module>
system-biz
</module>
<module>
system-application
</module>
</modules>
<dependencyManagement>
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/constant/SystemErrorCodeEnum.java
浏览文件 @
f4a698bc
...
...
@@ -24,6 +24,13 @@ public enum SystemErrorCodeEnum implements ServiceExceptionUtil.Enumerable {
// OAUTH_INVALID_REFRESH_TOKEN_EXPIRED(1002001018, "访问令牌已过期"),
// OAUTH_INVALID_REFRESH_TOKEN_INVALID(1002001019, "刷新令牌已失效"),
// ========== OAuth 手机验证码模块 ==========
OAUTH2_MOBILE_CODE_NOT_FOUND
(
1001001100
,
"验证码不存在"
),
OAUTH2_MOBILE_CODE_EXPIRED
(
1001001101
,
"验证码已过期"
),
OAUTH2_MOBILE_CODE_USED
(
1001001102
,
"验证码已使用"
),
OAUTH2_MOBILE_CODE_NOT_CORRECT
(
1001001104
,
"验证码不正确"
),
OAUTH2_MOBILE_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY
(
1001001105
,
"超过每日短信发送数量"
),
OAUTH2_MOBILE_CODE_SEND_TOO_FAST
(
1001001106
,
"短信发送过于频率"
),
// ========== 管理员模块 1002002000 ==========
ADMIN_NOT_FOUND
(
1002002000
,
"管理员不存在"
),
...
...
user/user-service-impl/src/main/java/cn/iocoder/mall/user/biz/dao/
MobileCodeMapper.java
→
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dao/oauth2/OAuth2
MobileCodeMapper.java
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
user
.
biz
.
dao
;
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dao
.
oauth2
;
import
cn.iocoder.mall.
user.biz.dataobject.
MobileCodeDO
;
import
cn.iocoder.mall.
system.biz.dataobject.oauth2.OAuth2
MobileCodeDO
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.springframework.stereotype.Repository
;
@Repository
// 实际不加也没问entity,就是不想 IDEA 那看到有个报错
public
interface
MobileCodeMapper
extends
BaseMapper
<
MobileCodeDO
>
{
@Repository
public
interface
OAuth2MobileCodeMapper
extends
BaseMapper
<
OAuth2
MobileCodeDO
>
{
/**
* 获得手机号的最后一个手机验证码
...
...
@@ -14,8 +14,8 @@ public interface MobileCodeMapper extends BaseMapper<MobileCodeDO> {
* @param mobile 手机号
* @return 手机验证码
*/
default
MobileCodeDO
selectLast1
ByMobile
(
String
mobile
)
{
QueryWrapper
<
MobileCodeDO
>
query
=
new
QueryWrapper
<
MobileCodeDO
>()
default
OAuth2MobileCodeDO
selectLast
ByMobile
(
String
mobile
)
{
QueryWrapper
<
OAuth2MobileCodeDO
>
query
=
new
QueryWrapper
<
OAuth2
MobileCodeDO
>()
.
eq
(
"mobile"
,
mobile
)
.
orderByDesc
(
"id"
)
.
last
(
"limit 1"
);
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dataobject/oauth2/OAuth2MobileCodeDO.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dataobject
.
oauth2
;
import
cn.iocoder.common.framework.dataobject.BaseDO
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
java.util.Date
;
/**
* OAuth2 手机验证码
*/
@TableName
(
"oauth2_mobile_code"
)
@Data
@EqualsAndHashCode
(
callSuper
=
true
)
@Accessors
(
chain
=
true
)
public
class
OAuth2MobileCodeDO
extends
BaseDO
{
/**
* 编号
*/
private
Integer
id
;
/**
* 手机号
*/
private
String
mobile
;
/**
* 验证码
*/
private
String
code
;
/**
* 创建 IP
*/
private
String
createIp
;
/**
* 今日发送的第几条
*/
private
Integer
todayIndex
;
/**
* 是否使用
*/
private
Boolean
used
;
/**
* 使用的账号编号
*/
private
Integer
usedAccountId
;
/**
* 使用时间
*/
private
Date
usedTime
;
/**
* 使用 IP
*/
private
Date
usedIp
;
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/oatuh2/OAuth2MobileCodeAuthenticateDTO.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
oatuh2
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
// TODO 注释
@Data
@Accessors
(
chain
=
true
)
public
class
OAuth2MobileCodeAuthenticateDTO
{
private
String
mobile
;
private
String
code
;
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/oatuh2/OAuth2MobileCodeSendDTO.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
.
oatuh2
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
// TODO 注释
@Data
@Accessors
(
chain
=
true
)
public
class
OAuth2MobileCodeSendDTO
{
private
String
mobile
;
private
String
ip
;
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/dto/package-info.java
deleted
100644 → 0
浏览文件 @
4ffc2cb8
package
cn
.
iocoder
.
mall
.
system
.
biz
.
dto
;
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/admin/AdminService.java
浏览文件 @
f4a698bc
...
...
@@ -2,6 +2,9 @@ package cn.iocoder.mall.system.biz.service.admin;
import
cn.iocoder.mall.system.biz.bo.admin.AdminBO
;
/**
* 管理员 Service 接口
*/
public
interface
AdminService
{
AdminBO
get
(
Integer
id
);
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/oauth2/OAuth2MobileCodeService.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
oauth2
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2MobileCodeSendDTO
;
/**
* OAuth2 手机验证码 Service 接口
*
* 我们将手机验证码登陆的方式,作为一种拓展的 OAuth2 的认证方式。因此,我们放在了 `oauth2` 包下
*/
public
interface
OAuth2MobileCodeService
{
void
sendMobileCode
(
OAuth2MobileCodeSendDTO
sendDTO
);
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/oauth2/OAuth2Service.java
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
oauth2
;
import
cn.iocoder.mall.system.biz.bo.ouath2.OAuth2AccessTokenBO
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2MobileCodeAuthenticateDTO
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2UsernameAuthenticateDTO
;
/**
...
...
@@ -10,4 +11,6 @@ public interface OAuth2Service {
OAuth2AccessTokenBO
authenticate
(
OAuth2UsernameAuthenticateDTO
usernameAuthenticateDTO
);
OAuth2AccessTokenBO
authenticate
(
OAuth2MobileCodeAuthenticateDTO
mobileCodeAuthenticateDTO
);
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/oauth2/impl/OAuth2MobileCodeServiceImpl.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
oauth2
.
impl
;
import
cn.iocoder.common.framework.constant.SysErrorCodeEnum
;
import
cn.iocoder.common.framework.util.ServiceExceptionUtil
;
import
cn.iocoder.common.framework.util.ValidationUtil
;
import
cn.iocoder.mall.system.biz.constant.SystemErrorCodeEnum
;
import
cn.iocoder.mall.system.biz.dao.oauth2.OAuth2MobileCodeMapper
;
import
cn.iocoder.mall.system.biz.dataobject.oauth2.OAuth2MobileCodeDO
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2MobileCodeSendDTO
;
import
cn.iocoder.mall.system.biz.service.oauth2.OAuth2MobileCodeService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
@Service
public
class
OAuth2MobileCodeServiceImpl
implements
OAuth2MobileCodeService
{
/**
* 每条验证码的过期时间,单位:毫秒
*/
@Value
(
"${modules.oauth2-mobile-code-service.code-expire-time-millis}"
)
private
int
codeExpireTimes
;
/**
* 每日发送最大数量
*/
@Value
(
"${modules.oauth2-mobile-code-service.send-maximum-quantity-per-day}"
)
private
int
sendMaximumQuantityPerDay
;
/**
* 短信发送频率,单位:毫秒
*/
@Value
(
"${modules.oauth2-mobile-code-service.send-frequency}"
)
private
int
sendFrequency
;
@Autowired
private
OAuth2MobileCodeMapper
oauth2MobileCodeMapper
;
@Override
public
void
sendMobileCode
(
OAuth2MobileCodeSendDTO
sendDTO
)
{
if
(!
ValidationUtil
.
isMobile
(
sendDTO
.
getMobile
()))
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"手机格式不正确"
);
// TODO 有点搓
}
// 校验是否可以发送验证码
OAuth2MobileCodeDO
lastMobileCodePO
=
oauth2MobileCodeMapper
.
selectLastByMobile
(
sendDTO
.
getMobile
());
if
(
lastMobileCodePO
!=
null
)
{
if
(
lastMobileCodePO
.
getTodayIndex
()
>=
sendMaximumQuantityPerDay
)
{
// 超过当天发送的上限。
throw
ServiceExceptionUtil
.
exception
(
SystemErrorCodeEnum
.
OAUTH2_MOBILE_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY
.
getCode
());
}
if
(
System
.
currentTimeMillis
()
-
lastMobileCodePO
.
getCreateTime
().
getTime
()
<
sendFrequency
)
{
// 发送过于频繁
throw
ServiceExceptionUtil
.
exception
(
SystemErrorCodeEnum
.
OAUTH2_MOBILE_CODE_SEND_TOO_FAST
.
getCode
());
}
// TODO 提升,每个 IP 每天可发送数量
// TODO 提升,每个 IP 每小时可发送数量
}
// 创建验证码记录
OAuth2MobileCodeDO
newMobileCodePO
=
new
OAuth2MobileCodeDO
().
setMobile
(
sendDTO
.
getMobile
())
.
setCode
(
"9999"
)
// TODO 芋艿,随机 4 位验证码 or 6 位验证码
.
setTodayIndex
(
lastMobileCodePO
!=
null
?
lastMobileCodePO
.
getTodayIndex
()
:
1
)
.
setCreateIp
(
sendDTO
.
getIp
())
.
setUsed
(
false
);
newMobileCodePO
.
setCreateTime
(
new
Date
());
oauth2MobileCodeMapper
.
insert
(
newMobileCodePO
);
// TODO 发送验证码短信
}
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/oauth2/impl/OAuth2ServiceImpl.java
浏览文件 @
f4a698bc
...
...
@@ -8,6 +8,7 @@ import cn.iocoder.mall.system.biz.dao.oauth2.OAuth2AccessTokenMapper;
import
cn.iocoder.mall.system.biz.dao.oauth2.OAuth2RefreshTokenMapper
;
import
cn.iocoder.mall.system.biz.dataobject.oauth2.OAuth2AccessTokenDO
;
import
cn.iocoder.mall.system.biz.dataobject.oauth2.OAuth2RefreshTokenDO
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2MobileCodeAuthenticateDTO
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2UsernameAuthenticateDTO
;
import
cn.iocoder.mall.system.biz.service.account.AccountService
;
import
cn.iocoder.mall.system.biz.service.oauth2.OAuth2Service
;
...
...
@@ -63,6 +64,11 @@ public class OAuth2ServiceImpl implements OAuth2Service {
return
OAuth2Convert
.
INSTANCE
.
convert
(
oauth2AccessTokenDO
);
}
@Override
public
OAuth2AccessTokenBO
authenticate
(
OAuth2MobileCodeAuthenticateDTO
mobileCodeAuthenticateDTO
)
{
return
null
;
}
private
OAuth2AccessTokenDO
createOAuth2AccessToken
(
Integer
accountId
,
String
refreshToken
)
{
OAuth2AccessTokenDO
accessToken
=
new
OAuth2AccessTokenDO
()
.
setId
(
generateAccessToken
())
...
...
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/user/UserService.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
user
;
/**
* 用户 Service 接口
*/
public
interface
UserService
{
}
system/system-biz/src/main/java/cn/iocoder/mall/system/biz/service/user/impl/UserServiceImpl.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
biz
.
service
.
user
.
impl
;
import
cn.iocoder.mall.system.biz.service.user.UserService
;
import
org.springframework.stereotype.Service
;
@Service
public
class
UserServiceImpl
implements
UserService
{
}
system/system-biz/src/main/resources/biz.properties
浏览文件 @
f4a698bc
##################### 业务模块 #####################
## OAuth2CodeService
modules.oauth2-code-service.access-token-expire-time-millis
=
2880000
modules.oauth2-code-service.refresh-token-expire-time-millis
=
43200000
\ No newline at end of file
modules.oauth2-code-service.refresh-token-expire-time-millis
=
43200000
## OAuth2MobileCodeService
modules.oauth2-mobile-code-service.code-expire-time-millis
=
600000
modules.oauth2-mobile-code-service.send-maximum-quantity-per-day
=
10
modules.oauth2-mobile-code-service.send-frequency
=
60000
system/system-rest/src/main/java/cn/iocoder/mall/system/rest/controller/users/UsersOAuth2Controller.java
0 → 100644
浏览文件 @
f4a698bc
package
cn
.
iocoder
.
mall
.
system
.
rest
.
controller
.
users
;
import
cn.iocoder.common.framework.constant.MallConstants
;
import
cn.iocoder.common.framework.util.HttpUtil
;
import
cn.iocoder.common.framework.vo.CommonResult
;
import
cn.iocoder.mall.system.biz.dto.oatuh2.OAuth2MobileCodeSendDTO
;
import
cn.iocoder.mall.system.biz.service.oauth2.OAuth2MobileCodeService
;
import
cn.iocoder.mall.system.biz.service.oauth2.OAuth2Service
;
import
cn.iocoder.mall.system.biz.service.user.UserService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.servlet.http.HttpServletRequest
;
@RestController
@RequestMapping
(
MallConstants
.
ROOT_PATH_USER
+
"/oauth2"
)
@Api
(
tags
=
"用户 - OAuth2 API"
)
public
class
UsersOAuth2Controller
{
@Autowired
private
OAuth2Service
oauth2Service
;
@Autowired
private
UserService
userService
;
@Autowired
private
OAuth2MobileCodeService
oauth2MobileCodeService
;
@PostMapping
(
"/send_mobile_code"
)
@ApiOperation
(
"发送手机验证码"
)
@ApiImplicitParam
(
name
=
"mobile"
,
value
=
"手机号"
,
required
=
true
,
example
=
"15601691234"
)
public
CommonResult
<
Boolean
>
sendMobileCode
(
@RequestParam
(
"mobile"
)
String
mobile
,
HttpServletRequest
request
)
{
// 执行发送验证码
OAuth2MobileCodeSendDTO
sendDTO
=
new
OAuth2MobileCodeSendDTO
()
.
setMobile
(
mobile
).
setIp
(
HttpUtil
.
getIp
(
request
));
oauth2MobileCodeService
.
sendMobileCode
(
sendDTO
);
// 返回成功
return
CommonResult
.
success
(
true
);
}
}
user/user-service-api/src/main/java/cn/iocoder/mall/user/api/constant/UserErrorCodeEnum.java
浏览文件 @
f4a698bc
...
...
@@ -27,13 +27,7 @@ public enum UserErrorCodeEnum {
USER_STATUS_EQUALS
(
1001002003
,
"账号已经是该状态"
),
USER_MOBILE_EQUALS
(
1001002004
,
"账号已经是该手机号"
),
// ========== 手机验证码模块 ==========
MOBILE_CODE_NOT_FOUND
(
1001003000
,
"验证码不存在"
),
MOBILE_CODE_EXPIRED
(
1001003001
,
"验证码已过期"
),
MOBILE_CODE_USED
(
1001003002
,
"验证码已使用"
),
MOBILE_CODE_NOT_CORRECT
(
1001003003
,
"验证码不正确"
),
MOBILE_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY
(
1001003004
,
"超过每日短信发送数量"
),
MOBILE_CODE_SEND_TOO_FAST
(
1001003005
,
"短信发送过于频率"
),
// ========== 用户地址 ==========
USER_ADDRESS_NOT_EXISTENT
(
1001004000
,
"用户地址不存在!"
),
...
...
user/user-service-impl/src/main/java/cn/iocoder/mall/user/biz/service/MobileCodeServiceImpl.java
浏览文件 @
f4a698bc
...
...
@@ -49,7 +49,6 @@ public class MobileCodeServiceImpl implements MobileCodeService {
* @return 手机验证码信息
*/
public
MobileCodeDO
validLastMobileCode
(
String
mobile
,
String
code
)
{
// TODO: 2019-04-09 Sin 暂时先忽略掉验证码校验
// return new MobileCodeDO().setCode(code).setCreateTime(new Date()).setId(1);
MobileCodeDO
mobileCodePO
=
mobileCodeMapper
.
selectLast1ByMobile
(
mobile
);
if
(
mobileCodePO
==
null
)
{
// 若验证码不存在,抛出异常
...
...
@@ -78,31 +77,4 @@ public class MobileCodeServiceImpl implements MobileCodeService {
mobileCodeMapper
.
updateById
(
update
);
}
// TODO 芋艿,后面要返回有效时间
public
void
send
(
String
mobile
)
{
if
(!
ValidationUtil
.
isMobile
(
mobile
))
{
throw
ServiceExceptionUtil
.
exception
(
SysErrorCodeEnum
.
VALIDATION_REQUEST_PARAM_ERROR
.
getCode
(),
"手机格式不正确"
);
// TODO 有点搓
}
// 校验是否可以发送验证码
MobileCodeDO
lastMobileCodePO
=
mobileCodeMapper
.
selectLast1ByMobile
(
mobile
);
if
(
lastMobileCodePO
!=
null
)
{
if
(
lastMobileCodePO
.
getTodayIndex
()
>=
sendMaximumQuantityPerDay
)
{
// 超过当天发送的上限。
throw
ServiceExceptionUtil
.
exception
(
UserErrorCodeEnum
.
MOBILE_CODE_EXCEED_SEND_MAXIMUM_QUANTITY_PER_DAY
.
getCode
());
}
if
(
System
.
currentTimeMillis
()
-
lastMobileCodePO
.
getCreateTime
().
getTime
()
<
sendFrequency
)
{
// 发送过于频繁
throw
ServiceExceptionUtil
.
exception
(
UserErrorCodeEnum
.
MOBILE_CODE_SEND_TOO_FAST
.
getCode
());
}
// TODO 提升,每个 IP 每天可发送数量
// TODO 提升,每个 IP 每小时可发送数量
}
// 创建验证码记录
MobileCodeDO
newMobileCodePO
=
new
MobileCodeDO
().
setMobile
(
mobile
)
.
setCode
(
"9999"
)
// TODO 芋艿,随机 4 位验证码 or 6 位验证码
.
setTodayIndex
(
lastMobileCodePO
!=
null
?
lastMobileCodePO
.
getTodayIndex
()
:
1
)
.
setUsed
(
false
);
newMobileCodePO
.
setCreateTime
(
new
Date
());
mobileCodeMapper
.
insert
(
newMobileCodePO
);
// TODO 发送验证码短信
}
}
user/user-service-impl/src/main/resources/config/application.properties
浏览文件 @
f4a698bc
##################### 业务模块 #####################
## MobileCodeService
modules.mobile-code-service.code-expire-time-millis
=
600000
modules.mobile-code-service.send-maximum-quantity-per-day
=
10
modules.mobile-code-service.send-frequency
=
60000
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论