Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wenHuaBu_adminServer
Overview
Overview
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
node_server
wenHuaBu_adminServer
Commits
681962af
Commit
681962af
authored
Mar 16, 2024
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
382893c2
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
7 additions
and
257 deletions
+7
-257
member.ts
src/biz/member/member.ts
+0
-251
errorEnum.ts
src/config/errorEnum.ts
+3
-1
model.ts
src/data/models/model.ts
+4
-5
No files found.
src/biz/member/member.ts
View file @
681962af
...
...
@@ -135,29 +135,6 @@ export async function delResearch({id}) {
}
/**
* 会员注册【短信验证码】 success
* @param userId
* @param phone
* @returns
*/
export
async
function
memberRegisterSendCode
({
phone
})
{
const
NowMs
=
new
Date
().
valueOf
();
let
codeSelectParam
=
{
phone
,
isUse
:
false
,
type
:
CODETYPE
.
用户注册
,
sendMs
:{
"$gt"
:
sysTools
.
getTodayMs
()}
}
let
lastCodeInfo
=
await
findOnceToSort
(
TABLEENUM
.
验证码表
,
codeSelectParam
,
{
sendMs
:
-
1
});
if
(
lastCodeInfo
.
code
)
{
if
(
(
lastCodeInfo
.
sendMs
+
(
60
*
1000
))
>
NowMs
)
throw
new
BizError
(
ERRORENUM
.
频繁操作请稍后再试
);
/**校验今日同类型验证码次数 */
let
todayNotUseCount
=
await
findCount
(
TABLEENUM
.
验证码表
,
codeSelectParam
);
if
(
todayNotUseCount
>=
4
)
throw
new
BizError
(
ERRORENUM
.
发送验证码次数超限制
,
`
${
phone
}
注册验证码超过限制3`
);
}
const
Code
=
sysTools
.
generateSMSCode
();
//生成短信验证码
let
addInfo
=
{
code
:
Code
,
phone
,
sendMs
:
NowMs
,
type
:
CODETYPE
.
用户注册
,
isUse
:
false
};
await
addOneData
(
TABLEENUM
.
验证码表
,
addInfo
);
return
{
code
:
Code
};
}
/**
...
...
@@ -239,234 +216,6 @@ export async function individualMemberDetails({userId}) {
}
/**
* 会员注册【个人会员】【流程一】success
* @param form
*/
export
async
function
memberRegister1
({
form
})
{
let
{
loginId
,
mail
,
pwd
,
confirmation
,
phone
,
codeNum
}
=
form
;
const
NowMs
=
new
Date
().
valueOf
();
/**校验密码 */
if
(
pwd
.
search
(
/^
[
A-Za-z0-9
]{6,18}
$/
)
<
0
)
throw
new
BizError
(
ERRORENUM
.
密码只能由
6
至
18
位字符和数字组成
);
if
(
pwd
!=
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
/**校验去重 */
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
loginId
},
{
phone
:
phone
},
{
mail
:
mail
}]
});
if
(
oldData
&&
oldData
.
userId
)
{
if
(
oldData
.
loginId
==
loginId
)
throw
new
BizError
(
ERRORENUM
.
用户名重复
,
loginId
);
if
(
oldData
.
phone
==
phone
)
throw
new
BizError
(
ERRORENUM
.
联系人手机号重复
,
phone
);
if
(
oldData
.
mail
==
mail
)
throw
new
BizError
(
ERRORENUM
.
邮箱重复
,
loginId
);
}
/**比对验证码 */
let
codeInfo
=
await
findOnceToSort
(
TABLEENUM
.
验证码表
,
{
phone
,
isUse
:
false
,
type
:
CODETYPE
.
用户注册
,
sendMs
:{
"$gt"
:
sysTools
.
getTodayMs
()
}},
{
sendMs
:
-
1
});
if
(
!
codeInfo
)
throw
new
BizError
(
ERRORENUM
.
code
无效
,
`
${
phone
}
在注册时,code表中不存在该手机号的验证码`
);
if
(
codeInfo
!=
codeNum
)
throw
new
BizError
(
ERRORENUM
.
验证码错误
,
`
${
phone
}
不存在
${
codeNum
}
`
);
if
((
codeInfo
.
sendMs
+
(
30
*
60
*
1000
)
)
<
NowMs
)
throw
new
BizError
(
ERRORENUM
.
验证码过期
);
/**初始化账号信息 */
let
userId
=
sysTools
.
generateUserId
();
//系统生成唯一id
let
addInfo
=
{
userId
,
memberType
:
MEMBERTYPE
.
个人会员
,
isAdmin
:
STATE
.
否
,
registerFlow
:
REGISTERFLOW
.
完成第一步
,
//会员注册流程状态
askForTime
:
NowMs
,
//申请时间
loginId
,
mail
,
pwd
,
phone
,
};
await
addOneData
(
TABLEENUM
.
用户表
,
addInfo
);
await
updateOneData
(
TABLEENUM
.
验证码表
,
{
phone
,
code
:
codeNum
,
isUse
:
false
},
{
isUse
:
true
});
return
{
userId
}
}
/**
* 会员注册【个人会员】【流程2】success
* @param form
* @param userId
* @returns
*/
export
async
function
memberRegister2
({
form
,
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
const
NowMs
=
new
Date
().
valueOf
();
/**校验枚举 */
const
EccFuncName
=
'注册个人会员流程2'
;
eccEnumValue
(
EccFuncName
,
'性别'
,
SEX
,
form
.
sex
);
eccEnumValue
(
EccFuncName
,
'证件类型'
,
DOCUMENTTYPE
,
form
.
documentType
);
eccEnumValue
(
EccFuncName
,
'民族'
,
NATION
,
form
.
nation
);
eccEnumValue
(
EccFuncName
,
'专业类别'
,
PROFCATEGORY
,
form
.
profCategory
);
eccEnumValue
(
EccFuncName
,
'会员等级职务'
,
MEMBERLEVEL
,
form
.
memberLevel
);
form
.
registerFlow
=
REGISTERFLOW
.
完成第二步
;
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
/**用户提交注册申请,等待审核 */
let
approvalHistoryInfo
=
await
find
(
TABLEENUM
.
审批历史表
,
{
userId
});
let
operationBehavior
;
/**判断是否第一次提交审核 */
if
(
approvalHistoryInfo
.
length
>
1
)
operationBehavior
=
OPERATIONREHAVIOR
.
重新提交
;
else
operationBehavior
=
OPERATIONREHAVIOR
.
用户提交
;
/**提交审批历史信息 */
let
addApprovalHistory
=
{
id
:
generateSystemId
(
TABLEENUM
.
审批历史表
,
userId
),
userId
,
operationTime
:
NowMs
,
operationBehavior
:
operationBehavior
,
remarks
:
""
};
await
addManyData
(
TABLEENUM
.
审批历史表
,
addApprovalHistory
);
return
successResult
();
}
/**
* 会员注册【单位会员】【流程一】success
* @param form
*/
export
async
function
unitMemberRegister1
({
form
})
{
let
{
loginId
,
mail
,
pwd
,
confirmation
,
phone
,
codeNum
}
=
form
;
const
NowMs
=
new
Date
().
valueOf
();
/**校验密码 */
if
(
pwd
.
search
(
/^
[
A-Za-z0-9
]{6,18}
$/
)
<
0
)
throw
new
BizError
(
ERRORENUM
.
密码只能由
6
至
18
位字符和数字组成
);
if
(
pwd
!=
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
/**校验去重 */
let
oldData
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
"$or"
:[{
loginId
:
loginId
},
{
phone
:
phone
},
{
mail
:
mail
}]
});
if
(
oldData
&&
oldData
.
userId
)
{
if
(
oldData
.
loginId
==
loginId
)
throw
new
BizError
(
ERRORENUM
.
用户名重复
,
loginId
);
if
(
oldData
.
phone
==
phone
)
throw
new
BizError
(
ERRORENUM
.
联系人手机号重复
,
phone
);
if
(
oldData
.
mail
==
mail
)
throw
new
BizError
(
ERRORENUM
.
邮箱重复
,
loginId
);
}
/**比对验证码 */
let
codeInfo
=
await
findOnceToSort
(
TABLEENUM
.
验证码表
,
{
phone
,
isUse
:
false
,
type
:
CODETYPE
.
用户注册
,
sendMs
:{
"$gt"
:
sysTools
.
getTodayMs
()
}},
{
sendMs
:
-
1
});
if
(
!
codeInfo
)
throw
new
BizError
(
ERRORENUM
.
code
无效
,
`
${
phone
}
在注册时,code表中不存在该手机号的验证码`
);
if
(
codeInfo
!=
codeNum
)
throw
new
BizError
(
ERRORENUM
.
验证码错误
,
`
${
phone
}
不存在
${
codeNum
}
`
);
if
((
codeInfo
.
sendMs
+
(
30
*
60
*
1000
)
)
<
NowMs
)
throw
new
BizError
(
ERRORENUM
.
验证码过期
);
/**初始化账号信息 */
let
userId
=
sysTools
.
generateUserId
();
let
addInfo
=
{
userId
,
memberType
:
MEMBERTYPE
.
单位会员
,
isAdmin
:
STATE
.
否
,
//是否管理员
registerFlow
:
REGISTERFLOW
.
完成第一步
,
//会员注册流程状态
askForTime
:
NowMs
,
//申请时间
loginId
,
mail
,
pwd
,
phone
};
await
addOneData
(
TABLEENUM
.
用户表
,
addInfo
);
/**修改验证码状态为已使用 */
await
updateOneData
(
TABLEENUM
.
验证码表
,
{
phone
,
code
:
codeNum
,
isUse
:
false
},
{
isUse
:
true
});
return
{
userId
};
}
/**
* 单位入会流程2
* @param form 表单
* @param keyanForm 科研表单
* @param userId
* @returns
*/
export
async
function
unitMemberRegister2
({
form
,
keyanForm
,
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
/**校验枚举 */
const
EccFuncName
=
'注册单位会员流程2'
;
eccEnumValue
(
EccFuncName
,
'专业类别'
,
PROFCATEGORY
,
form
.
profCategory
);
eccEnumValue
(
EccFuncName
,
'院校办学类型'
,
BANXUELEIXING
,
form
.
yuanXiaoBanXueLeiXing
);
eccEnumValue
(
EccFuncName
,
'单位信息类型'
,
UNITINFOTYPE
,
form
.
unitInfoType
);
form
.
registerFlow
=
REGISTERFLOW
.
完成第二步
;
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
/**注册提交单位科研成果信息 */
let
addList
=
[];
for
(
let
i
=
0
;
i
<
keyanForm
.
length
;
i
++
)
{
keyanForm
[
i
].
id
=
generateSystemId
(
TABLEENUM
.
单位所获得科研成果表
,
userId
);
keyanForm
[
i
].
userId
=
userId
;
addList
.
push
(
keyanForm
[
i
]);
}
await
addManyData
(
TABLEENUM
.
单位所获得科研成果表
,
addList
);
return
successResult
();
}
/**
* 会员注册【单位会员】【流程3】success
* @param application 入会申请表
* @param userId
*/
export
async
function
unitMemberRegister3
({
application
,
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
const
NowMs
=
new
Date
().
valueOf
();
if
(
oldInfo
.
memberType
!=
MEMBERTYPE
.
单位会员
)
throw
new
BizError
(
ERRORENUM
.
流程
3
不支持会员身份非单位会员
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
{
application
,
registerFlow
:
REGISTERFLOW
.
完成第三步
});
/**用户提交注册申请,等待审核 */
let
approvalHistoryInfo
=
await
find
(
TABLEENUM
.
审批历史表
,
{
userId
});
let
operationBehavior
;
/**判断是否第一次提交审核 */
if
(
approvalHistoryInfo
.
length
>
1
)
operationBehavior
=
OPERATIONREHAVIOR
.
重新提交
;
else
operationBehavior
=
OPERATIONREHAVIOR
.
用户提交
;
/**提交审批历史信息 */
let
addApprovalHistory
=
{
id
:
generateSystemId
(
TABLEENUM
.
审批历史表
,
userId
),
userId
,
operationTime
:
NowMs
,
operationBehavior
:
operationBehavior
,
remarks
:
""
};
await
addManyData
(
TABLEENUM
.
审批历史表
,
addApprovalHistory
);
return
successResult
();
}
/**
* 下载会员注册表 todo
*/
export
async
function
downloadApplication
()
{
}
/**
* 获取当前会员注册流程
* registerFlow:注册流程状态 REGISTERFLOW 会员注册流程步骤
* userRegisterState:用户注册状态 USERREGISTERSTATE 会员注册是否已审批通过
* 前端通过该方法获取注册流程状态,流程1通过返回状态【完成第一步】,流程2通过返回状态【完成第二步】,流程3通过返回状态【完成第三步】
*/
export
async
function
registerFlowType
({
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
if
(
!
oldInfo
.
registerFlow
)
{
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
{
registerFlow
:
REGISTERFLOW
.
未注册
});
}
let
dataInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
let
dataList
:
any
=
extractData
(
dataInfo
,
[
"userId"
,
"registerFlow"
,
"userRegisterState"
]);
return
dataList
;
}
...
...
src/config/errorEnum.ts
View file @
681962af
...
...
@@ -30,7 +30,9 @@ export enum ERRORENUM {
微信支付无法被退回
,
订单状态无法开具发票
,
微信支付无法退回发票请求
,
流程
3
不支持会员身份非单位会员
流程
3
不支持会员身份非单位会员
,
数据状态错误
,
用户已注册成功
}
export
enum
ERRORCODEENUM
{
...
...
src/data/models/model.ts
View file @
681962af
...
...
@@ -476,11 +476,10 @@ const ModelArray = [
tableName
:
TABLEENUM
.
审批历史表
,
source
:
TABLESOURCEENUM
.
mongo
,
schema
:{
id
:{
type
:
'String'
,
index
:
true
},
userId
:
'String'
,
//用户id 外键
operationTime
:{
type
:
'Number'
,
index
:
true
},
//操作时间
operationBehavior
:{
type
:
'Number'
,
index
:
true
},
//操作行为 枚举
remarks
:{
type
:
'String'
,
index
:
true
},
//备注
userId
:{
type
:
'String'
,
index
:
true
},
//用户id 外键
operationTime
:{
type
:
'Number'
},
//操作时间
operationBehavior
:{
type
:
'Number'
},
//操作行为 枚举
remarks
:{
type
:
'String'
},
//备注
}
},
];
...
...
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