Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
T
ts-api-demo
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wmvm
ts-api-demo
Commits
6a569627
Commit
6a569627
authored
Nov 06, 2024
by
ml
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改
parent
d09345a0
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
82 additions
and
6 deletions
+82
-6
mUserManage.service.ts
src/functional/mvc/service/mUserManage.service.ts
+82
-6
No files found.
src/functional/mvc/service/mUserManage.service.ts
View file @
6a569627
import
{
coinAddress
,
coinWithdraw
,
ormDB
,
userAccountChangeLog
,
userInfo
,
userProfile
}
from
"@madex/ex-ts-dao"
;
import
{
coinAddress
,
coinWithdraw
,
ormDB
,
userAccountChangeLog
,
userInfo
}
from
"@madex/ex-ts-dao"
;
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
ErrorCode
}
from
"../../../constant/errorCode"
;
import
{
getProfileByUserIds
}
from
"./mUserProfile.service"
;
import
{
getRealNameByUserId
,
getRealNameMapByUserIds
}
from
"./mUserRealName.service"
;
import
{
getRealNameMapByUserIds
,
getRealNameByUserId
}
from
"./mUserRealName.service"
;
import
{
MUserRedisKey
}
from
"../../../constant/mUserRedisKey"
;
import
{
MUserRedisKey
}
from
"../../../constant/mUserRedisKey"
;
import
{
getMUserInfoByEmail
,
getMUserInfoByUid
,
getUserInfoMapByUids
,
sendEmail
,
updateMUserInfo
}
from
"../../../utils/mUserUtils"
;
import
{
getMUserInfoByEmail
,
getMUserInfoByUid
,
getUserInfoMapByUids
,
sendEmail
,
updateMUserInfo
}
from
"../../../utils/mUserUtils"
;
import
{
existEmail
,
getProcessingEmailListByMUserId
}
from
"./mUserAccountChangeLog.service"
;
import
{
existEmail
,
getProcessingEmailListByMUserId
}
from
"./mUserAccountChangeLog.service"
;
...
@@ -131,7 +130,7 @@ export async function oneUserDetail(m_user_id: number) {
...
@@ -131,7 +130,7 @@ export async function oneUserDetail(m_user_id: number) {
throw
ErrorCode
.
DATA_NOT_EXIST
;
throw
ErrorCode
.
DATA_NOT_EXIST
;
}
}
let
oneRealName
=
await
getRealNameByUserId
(
m_user_id
);
let
oneRealName
=
await
getRealNameByUserId
(
m_user_id
);
let
isLoginLock
=
await
redisUtilsCommon
.
getSync
(
m_user_id
+
MUserRedisKey
.
USER_LOCK_SUFFIX
);
let
isLoginLock
=
await
getLoginLimit
(
m_user_id
);
//24小时提现限制
//24小时提现限制
let
dead_line
=
datetimeUtils
.
add
(
oneUser
.
secure_modifiedAt
,
datetimeUtils
.
DAY
);
let
dead_line
=
datetimeUtils
.
add
(
oneUser
.
secure_modifiedAt
,
datetimeUtils
.
DAY
);
let
is_withdraw
=
datetimeUtils
.
between
(
new
Date
(),
dead_line
);
let
is_withdraw
=
datetimeUtils
.
between
(
new
Date
(),
dead_line
);
...
@@ -145,7 +144,7 @@ export async function oneUserDetail(m_user_id: number) {
...
@@ -145,7 +144,7 @@ export async function oneUserDetail(m_user_id: number) {
kyc_identity
:
oneRealName
?
oneRealName
.
identity
:
0
,
//证件号
kyc_identity
:
oneRealName
?
oneRealName
.
identity
:
0
,
//证件号
is_bind_totp
:
oneUser
.
totp_encrypt
?
1
:
0
,
is_bind_totp
:
oneUser
.
totp_encrypt
?
1
:
0
,
lock_status
:
oneUser
.
is_lock
,
//0 否 1 是
lock_status
:
oneUser
.
is_lock
,
//0 否 1 是
login_lock
:
isLoginLock
?
1
:
0
,
//登陆锁定 0 否 1 是
login_lock
:
isLoginLock
.
is_limit
?
1
:
0
,
//登陆锁定 0 否 1 是
withdraw_limit_24
:
is_withdraw
>
0
?
0
:
1
,
//24小时提现限制
withdraw_limit_24
:
is_withdraw
>
0
?
0
:
1
,
//24小时提现限制
}
}
return
res
;
return
res
;
...
@@ -312,7 +311,8 @@ export async function unlockAccount(currentUserId: number, m_user_id: any, ip: a
...
@@ -312,7 +311,8 @@ export async function unlockAccount(currentUserId: number, m_user_id: any, ip: a
export
async
function
clearLoginLimit
(
currentUserId
:
number
,
m_user_id
:
any
,
ip
:
any
,
totp_code
:
any
)
{
export
async
function
clearLoginLimit
(
currentUserId
:
number
,
m_user_id
:
any
,
ip
:
any
,
totp_code
:
any
)
{
//校验谷歌
//校验谷歌
await
checkTotp
(
currentUserId
,
totp_code
);
await
checkTotp
(
currentUserId
,
totp_code
);
await
redisUtilsCommon
.
delSync
(
m_user_id
+
MUserRedisKey
.
USER_LOCK_SUFFIX
);
await
delLoginLimit
(
m_user_id
);
//管理后台操作日志
//管理后台操作日志
addOptLog
(
currentUserId
,
Number
(
m_user_id
),
'清除用户登陆限制'
,
ip
,
""
,
'用户管理'
);
addOptLog
(
currentUserId
,
Number
(
m_user_id
),
'清除用户登陆限制'
,
ip
,
""
,
'用户管理'
);
...
@@ -463,6 +463,82 @@ async function buildReturnData(pageData: any, fill_user_info: boolean, fill_coin
...
@@ -463,6 +463,82 @@ async function buildReturnData(pageData: any, fill_user_info: boolean, fill_coin
}
}
}
}
/**
* 查询登陆是否被限制 以及限制次数
* @param user_id
*/
async
function
getLoginLimit
(
user_id
:
number
)
{
let
res
=
{
is_limit
:
0
,
//是否被限制 1 登陆密码限制 2 谷歌验证码限制 3 验证码限制
times
:
0
}
let
[
totpCodeErrKey
,
verifyCodeErrKey
,
totpCodeErrTimesKey
,
verifyCodeErrTimesKey
,
loginPwdErrKey
]
=
getLoginLimitKeys
(
user_id
);
let
loginPwdErrKeyData
=
await
redisUtilsCommon
.
getSync
(
loginPwdErrKey
);
if
(
loginPwdErrKeyData
)
{
res
.
is_limit
=
1
;
res
.
times
=
loginPwdErrKeyData
;
return
res
;
}
let
totpCodeErrKeyData
=
await
redisUtilsCommon
.
getSync
(
totpCodeErrKey
);
if
(
totpCodeErrKeyData
)
{
res
.
is_limit
=
2
;
res
.
times
=
await
redisUtilsCommon
.
getSync
(
totpCodeErrTimesKey
);
return
res
;
}
let
verifyCodeErrKeyData
=
await
redisUtilsCommon
.
getSync
(
verifyCodeErrKey
);
if
(
verifyCodeErrKeyData
)
{
res
.
is_limit
=
3
;
res
.
times
=
await
redisUtilsCommon
.
getSync
(
verifyCodeErrTimesKey
);
return
res
;
}
return
res
;
}
/**
* 清除登陆限制
* @param user_id
*/
async
function
delLoginLimit
(
user_id
:
number
)
{
let
[
totpCodeErrKey
,
verifyCodeErrKey
,
totpCodeErrTimesKey
,
verifyCodeErrTimesKey
,
loginPwdErrKey
]
=
getLoginLimitKeys
(
user_id
);
redisUtilsCommon
.
delSync
(
loginPwdErrKey
);
redisUtilsCommon
.
delSync
(
totpCodeErrKey
);
redisUtilsCommon
.
delSync
(
verifyCodeErrKey
);
redisUtilsCommon
.
writeSync
(
totpCodeErrTimesKey
,
0
);
redisUtilsCommon
.
writeSync
(
verifyCodeErrTimesKey
,
0
);
}
/**
* 获取登陆限制的redis key
* @param user_id
*/
function
getLoginLimitKeys
(
user_id
:
number
)
{
//谷歌验证码错误
let
totpCodeErr
=
'2015'
;
//验证码错误
let
verifyCodeErr
=
'2018'
;
//谷歌验证码错误 锁2小时 的key
let
totpCodeErrKey
=
"lock2hourExpiredKey.userId."
+
user_id
+
".errorCode."
+
totpCodeErr
;
//验证码错误 锁2小时 的key
let
verifyCodeErrKey
=
"lock2hourExpiredKey.userId."
+
user_id
+
".errorCode."
+
verifyCodeErr
;
//谷歌验证码错误次数 的key
let
totpCodeErrTimesKey
=
"errorTimesWithCode.userId."
+
user_id
+
".errorCode."
+
totpCodeErr
;
//验证码错误 次数 的key
let
verifyCodeErrTimesKey
=
"errorTimesWithCode.userId."
+
user_id
+
".errorCode."
+
verifyCodeErr
;
//登陆密码错误 的key
let
loginPwdErrKey
=
user_id
+
MUserRedisKey
.
USER_LOCK_SUFFIX
;
return
[
totpCodeErrKey
,
verifyCodeErrKey
,
totpCodeErrTimesKey
,
verifyCodeErrTimesKey
,
loginPwdErrKey
];
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment