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
6893339f
Commit
6893339f
authored
Mar 19, 2024
by
chenjinjing
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://123.207.147.179:8888/node_server/wenHuaBu_adminServer
parents
05de9aca
049d79c7
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
373 additions
and
72 deletions
+373
-72
authority.ts
src/biz/member/authority.ts
+1
-1
examine.ts
src/biz/member/examine.ts
+2
-2
member.ts
src/biz/member/member.ts
+22
-23
memberFees.ts
src/biz/member/memberFees.ts
+254
-28
order.ts
src/biz/member/order.ts
+3
-2
rightsMgmt.ts
src/biz/member/rightsMgmt.ts
+73
-3
register.ts
src/biz/register.ts
+1
-1
errorEnum.ts
src/config/errorEnum.ts
+3
-1
model.ts
src/data/models/model.ts
+10
-7
router.ts
src/routers/member/router.ts
+4
-4
No files found.
src/biz/member/authority.ts
View file @
6893339f
/**
* 会员管理 【权限管理】
* 会员管理 【权限管理】
success
*/
import
{
INDIVIDUALMEMBERTYPE
,
MEMBERLEVEL
,
MEMBERSTATE
,
MEMBERTYPE
,
MEMBERTYPEECCENUM
,
UNITMEMBERTYPE
}
from
"../../config/enum"
;
...
...
src/biz/member/examine.ts
View file @
6893339f
/**
* 审批逻辑
* 审批逻辑
success
*/
import
{
INDIVIDUALMEMBERTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
,
OPERATIONREHAVIOR
,
PAYMENTSTATUS
,
REGISTERFLOW
,
STATE
,
UNITMEMBERTYPE
,
USERREGISTERSTATE
}
from
"../../config/enum"
;
...
...
@@ -11,7 +11,7 @@ import { updateOneData } from "../../data/update";
import
{
generateSystemId
,
successResult
}
from
"../../tools/system"
;
import
{
BizError
}
from
"../../util/bizError"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
import
{
changeEnumValue
,
eccEnumValue
}
from
"../../util/verificationEnum"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
import
{
createOrder
}
from
"./order"
;
/**
...
...
src/biz/member/member.ts
View file @
6893339f
/**
* 会员逻辑
* 会员
管理
逻辑
*/
import
{
MEMBERSTATE
,
MEMBERLEVEL
,
DOCUMENTTYPE
,
NATION
,
PROFCATEGORY
,
CODETYPE
,
MEMBERTYPE
,
REGISTERFLOW
,
SEX
,
USERREGISTERSTATE
,
OPERATIONREHAVIOR
,
STATE
,
BANXUELEIXING
,
UNITMEMBERTYPE
}
from
"../../config/enum"
;
...
...
@@ -11,13 +11,12 @@ import { generateSystemId, successResult } from "../../tools/system";
import
{
BizError
}
from
"../../util/bizError"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
import
{
changeEnumValue
,
eccEnumValue
}
from
"../../util/verificationEnum"
;
import
*
as
sysTools
from
"../../tools/system"
;
import
{
addManyData
,
addOneData
}
from
"../../data/add"
;
import
{
deleteManyData
,
deleteOneData
}
from
"../../data/delete"
;
/**
* 单位会员列表
* 单位会员列表
success
* @param unitName 单位名称
* @param joinTime 入会时间
* @param unitMemberType 单位会员所属类型 UNITMEMBERTYPE
...
...
@@ -29,7 +28,7 @@ import { deleteManyData, deleteOneData } from "../../data/delete";
* @param pageNumber 当前页
*/
export
async
function
unitMemberList
({
unitName
,
joinTime
,
unitMemberType
,
memberLevel
,
session
,
sheng
,
shi
,
qu
,
pageNumber
})
{
let
selectParam
:
any
=
{};
let
selectParam
:
any
=
{
isAdmin
:
STATE
.
否
};
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
unitMemberType
)
selectParam
.
unitMemberType
=
unitMemberType
;
...
...
@@ -41,13 +40,13 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, member
selectParam
.
memberType
=
MEMBERTYPE
.
单位会员
;
selectParam
.
userRegisterState
=
USERREGISTERSTATE
.
通过
;
let
selectConf
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"unitMemberLevel"
,
"sheng"
,
"shi"
,
"qu"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
selectConf
,
pageNumber
);
const
SelectFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"unitMemberLevel"
,
"sheng"
,
"shi"
,
"qu"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
SelectFiles
,
pageNumber
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
let
item
:
any
=
extractData
(
info
,
SelectFiles
);
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
if
(
!
item
.
memberLevel
)
item
.
memberLevel
=
"未选择"
;
else
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
...
...
@@ -70,8 +69,8 @@ const UnitConfig = ["unitMemberType", "yuanXiaoBanXueLeiXing", "yuanXiaoZhuGuanB
"yuanXiaoBanGongFuZeRenZhiWu"
,
"yuanXiaoBanGongFuZeRenDianHua"
,
"yuanXiaoXueShengZongRenShu"
,
"yuanXiaoJiaoZhiGongZongRenShu"
,
"yuanXiaoJianZhuMianJi"
,
"yuanXiaoKeYanFuZeRen"
,
"yuanXiaoKeYanFuZeRenDianHua"
,
"jiaoXueFuZeRenXinMing"
,
"jiaoXueFuZeRenDianHua"
,
"ZhuYaoFuZeRenYouXiang"
];
export
async
function
unitMemberDetails
({
userI
d
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
export
async
function
unitMemberDetails
({
i
d
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
topInfo
:
any
=
extractData
(
oldInfo
,
[
"session"
,
"memberLevel"
]);
/**处理枚举值 */
...
...
@@ -79,7 +78,7 @@ export async function unitMemberDetails({userId}) {
let
basicInfo
=
extractData
(
oldInfo
,
UnitBasicConfig
);
let
unitInfo
=
extractData
(
oldInfo
,
UnitConfig
);
let
oldKeYanInfo
=
await
findOnce
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
});
let
oldKeYanInfo
=
await
findOnce
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
:
id
});
let
scientificResearch
=
extractData
(
oldKeYanInfo
,
[
"id"
,
"startTime"
,
"endTime"
,
"describe"
]);
return
{
topInfo
,
basicInfo
,
unitInfo
,
scientificResearch
};
...
...
@@ -93,27 +92,27 @@ export async function unitMemberDetails({userId}) {
* @param userId
* @returns
*/
export
async
function
unitMemberUpdate
({
form
,
keyanForm
,
userId
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
export
async
function
unitMemberUpdate
({
form
,
keyanForm
,
id
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
/**校验枚举 */
const
EccFuncName
=
'单位会员修改'
;
eccEnumValue
(
EccFuncName
,
'单位信息类型'
,
UNITMEMBERTYPE
,
form
.
unitMemberType
);
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
/**修改会员用户信息 */
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
form
);
/**删除对应userId科研成果 */
let
oldKeYanInfo
=
await
find
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
});
let
oldKeYanInfo
=
await
find
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
:
id
});
if
(
!
oldKeYanInfo
||
!
oldKeYanInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
await
deleteManyData
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
});
await
deleteManyData
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
:
id
});
/**添加新的科研信息 */
let
addList
=
[];
for
(
let
i
=
0
;
i
<
keyanForm
.
length
;
i
++
)
{
keyanForm
[
i
].
id
=
generateSystemId
(
TABLEENUM
.
单位所获得科研成果表
,
userI
d
);
keyanForm
[
i
].
userId
=
userI
d
;
keyanForm
[
i
].
id
=
generateSystemId
(
TABLEENUM
.
单位所获得科研成果表
,
i
d
);
keyanForm
[
i
].
userId
=
i
d
;
addList
.
push
(
keyanForm
);
}
await
addManyData
(
TABLEENUM
.
单位所获得科研成果表
,
addList
);
...
...
@@ -181,8 +180,8 @@ export async function individualMemberList({name, documentId, phone, individualM
const
IndividualBasicConfig
=
[
"name"
,
"sex"
,
"nation"
,
"birth"
,
"documentType"
,
"documentId"
,
"sheng"
,
"shi"
,
"qu"
,
"addres"
,
"photoUrl"
];
const
SpecialityConfig
=
[
"unitName"
,
"memberLevel"
,
"workTitle"
,
"profCategory"
,
"studyResume"
,
"workResume"
,
"profAchievement"
,
"otherEMP"
,
"otherPROF"
];
export
async
function
individualMemberDetails
({
userI
d
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
export
async
function
individualMemberDetails
({
i
d
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
topInfo
:
any
=
extractData
(
oldInfo
,
[
"session"
,
"memberLevel"
]);
...
...
@@ -207,10 +206,10 @@ export async function individualMemberDetails({userId}) {
* @param form
* @returns
*/
export
async
function
individualMemberUpdate
({
form
,
userI
d
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
});
export
async
function
individualMemberUpdate
({
form
,
i
d
})
{
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
});
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
},
form
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
form
);
return
successResult
();
}
...
...
src/biz/member/memberFees.ts
View file @
6893339f
...
...
@@ -2,41 +2,48 @@
* 会费管理逻辑
*/
import
{
MEMBERSTATE
,
MEMBERTYPE
,
PAYMENTSTATUS
}
from
"../../config/enum"
;
import
moment
=
require
(
"moment"
);
import
{
MEMBERSTATE
,
MEMBERTYPE
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
STATE
}
from
"../../config/enum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
find
Count
,
findToPage
}
from
"../../data/select"
;
import
{
find
,
findCount
,
findOnce
,
findOnceToSort
,
findToPage
,
findToSort
}
from
"../../data/select"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
import
{
changeEnumValue
}
from
"../../util/verificationEnum"
;
import
{
BizError
}
from
"../../util/bizError"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
updateOneData
}
from
"../../data/update"
;
import
{
successResult
}
from
"../../tools/system"
;
/**
* 已缴费列表
* 已缴费列表
success
*/
export
async
function
getPaid
({
unitName
,
joinTime
,
memberType
,
pageNumber
})
{
let
now
=
new
Date
().
valueOf
();
const
NowMs
=
new
Date
().
valueOf
();
/**到期时间距离今天大于90天 */
let
selectParam
:
any
=
{
"$expr"
:{
"$gt"
:[{
"$subtract"
:[
"$lifespanEndTime"
,
now
]
},
90
]
}};
let
selectParam
:
any
=
{
"$and"
:[
{
"lifespanEndTime"
:{
"$gt"
:
NowMs
+
(
90
*
24
*
3600
*
1000
)}},
{
"lifespanEndTime"
:{
"$gt"
:
NowMs
}},
],
isAdmin
:
STATE
.
否
,
isGracePeriod
:
STATE
.
否
}
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
memberType
)
selectParam
.
memberType
=
memberType
;
let
selectConf
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberTyp
e"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
[]
,
pageNumber
,
10
);
const
SelectFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
,
"lifespanStartTime"
,
"lifespanEndTim
e"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
SelectFiles
,
pageNumber
,
10
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
const
itemFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
selectConf
);
item
.
lifespanTime
=
item
.
lifespanStartTime
+
"至"
+
item
.
lifespanEndTime
;
item
.
nextLifespanTime
=
""
;
if
(
item
.
lifespanEndTime
-
now
>
90
)
item
.
nextLifespanTime
=
"大于90天"
;
let
item
:
any
=
extractData
(
info
,
itemFiles
);
item
.
lifespanTime
=
`
${
moment
(
info
.
lifespanStartTime
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
info
.
lifespanEndTime
).
format
(
"YYYY-MM-DD"
)}
`
;
item
.
nextLifespanTime
=
"大于90天"
;
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
...
...
@@ -46,35 +53,253 @@ export async function getPaid({unitName, joinTime, memberType, pageNumber}) {
return
{
dataList
,
dataCount
};
}
/**
* 已缴费列表中的订单日志 success
* @param param0
*/
export
async
function
paidOrderList
({
userId
})
{
let
dbList
=
await
findToSort
(
TABLEENUM
.
订单表
,
{
userId
},
{
payTime
:
-
1
},
[
"orderCycleStart"
,
"orderCycleEnd"
,
"money"
,
"paymentMethod"
,
"state"
]);
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
{
orderCycleStart
,
orderCycleEnd
,
money
,
paymentMethod
,
state
}
=
info
;
let
paymentMethodStr
=
'-'
;
if
(
state
==
ORDERSTATE
.
已支付
)
{
paymentMethodStr
=
changeEnumValue
(
PAYMENTTYPE
,
paymentMethod
);
}
dataList
.
push
({
orderCycle
:
`
${
moment
(
orderCycleStart
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
orderCycleEnd
).
format
(
"YYYY-MM-DD"
)}
`
,
money
,
paymentMethod
:
paymentMethodStr
,
state
:
changeEnumValue
(
ORDERSTATE
,
state
)
});
});
return
{
dataList
};
}
/**
* 续费期
* 待缴费列表 success
* @param param0
*/
export
async
function
getRenewalPeriod
(
)
{
let
now
=
new
Date
().
valueOf
();
/**到期时间距离今天
等于90天至1
天 */
let
selectParam
:
any
=
{
"$expr"
:{
export
async
function
unpaidList
({
unitName
,
joinTime
,
memberType
,
pageNumber
}
)
{
const
NowMs
=
new
Date
().
valueOf
();
/**到期时间距离今天
大于90
天 */
let
selectParam
:
any
=
{
"$and"
:[
{
"$lte"
:[{
"$subtract"
:[
"$lifespanEndTime"
,
now
]
},
90
]},
{
"$gt"
:[{
"$subtract"
:[
"$lifespanEndTime"
,
now
]
},
1
]},
]}
{
"lifespanEndTime"
:{
"$lt"
:
NowMs
+
(
30
*
24
*
3600
*
1000
)}},
{
"lifespanEndTime"
:{
"$gt"
:
NowMs
}}
],
isAdmin
:
STATE
.
否
,
isGracePeriod
:
STATE
.
否
}
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
memberType
)
selectParam
.
memberType
=
memberType
;
const
SelectFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
,
"lifespanStartTime"
,
"lifespanEndTime"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
SelectFiles
,
pageNumber
,
10
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
const
itemFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
itemFiles
);
item
.
lifespanTime
=
`
${
moment
(
info
.
lifespanStartTime
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
info
.
lifespanEndTime
).
format
(
"YYYY-MM-DD"
)}
`
;
item
.
nextLifespanTime
=
"不足90天"
;
if
(
info
.
lifespanEndTime
<
(
NowMs
+
(
30
*
24
*
3600
*
1000
)
)
)
item
.
nextLifespanTime
=
"不足30天"
;
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
dataList
.
push
(
item
);
});
return
{
dataList
,
dataCount
};
}
/**
* 会费管理-欠费 success
*/
export
async
function
getRenewalPeriod
({
unitName
,
joinTime
,
memberType
,
pageNumber
})
{
const
NowMs
=
new
Date
().
valueOf
();
/**到期时间距离今天大于90天 */
let
selectParam
:
any
=
{
"$or"
:[
{
isGracePeriod
:
STATE
.
否
,
lifespanEndTime
:{
"$lt"
:
NowMs
}
},
{
isGracePeriod
:
STATE
.
是
,
lifespanEndTime
:{
"$lt"
:
NowMs
},
gracePeriodEndTime
:{
"$lt"
:
NowMs
}
}],
isAdmin
:
STATE
.
否
,
}
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
memberType
)
selectParam
.
memberType
=
memberType
;
const
SelectFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
,
"lifespanStartTime"
,
"lifespanEndTime"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
SelectFiles
,
pageNumber
,
10
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
const
itemFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
itemFiles
);
item
.
lifespanTime
=
`
${
moment
(
info
.
lifespanEndTime
).
format
(
"YYYY-MM-DD"
)}
`
;
if
(
info
.
lifespanEndTime
>
(
NowMs
-
(
30
*
24
*
3600
*
1000
)
)
)
item
.
nextLifespanTime
=
"过期30天内"
;
else
if
(
info
.
lifespanEndTime
>
(
NowMs
-
(
365
*
24
*
3600
*
1000
)
)
)
{
item
.
nextLifespanTime
=
"过期1年内"
;
}
else
item
.
nextLifespanTime
=
"过期2年内"
;
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
dataList
.
push
(
item
);
});
return
{
dataList
,
dataCount
};
}
/**
* 线下付款 success
* @param param0
*/
export
async
function
offlinePayment
({
orderId
,
paymentNum
,
offlinePaymentUrl
})
{
let
orderInfo
=
await
findOnce
(
TABLEENUM
.
订单表
,
{
id
:
orderId
});
if
(
!
orderInfo
||
!
orderInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
if
(
orderInfo
.
state
==
ORDERSTATE
.
已支付
)
throw
new
BizError
(
ERRORENUM
.
该订单已支付
);
let
notPayCount
=
await
findCount
(
TABLEENUM
.
订单表
,
{
userId
:
orderInfo
.
userId
,
state
:
ORDERSTATE
.
未支付
}
);
let
updateInfo
=
{
paymentNum
,
offlinePaymentUrl
,
state
:
ORDERSTATE
.
已支付
,
paymentMethod
:
PAYMENTTYPE
.
线下支付
,
payTime
:
new
Date
().
valueOf
()
};
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
:
orderId
},
updateInfo
);
/**只有一笔欠费时才更新用户状态 */
if
(
notPayCount
<=
1
)
{
let
newOrderInfo
=
await
findOnceToSort
(
TABLEENUM
.
订单表
,
{
userId
:
orderInfo
.
userId
},
{
lifespanEndTime
:
-
1
},
[
"lifespanStartTime"
,
"lifespanEndTime"
]);
let
updateUserInfo
=
{
lifespanStartTime
:
newOrderInfo
.
lifespanStartTime
,
lifespanEndTime
:
newOrderInfo
.
lifespanEndTime
,
isGracePeriod
:
STATE
.
否
,
gracePeriodEndTime
:
0
,
memberState
:
MEMBERSTATE
.
正常
,
paymentStatus
:
PAYMENTSTATUS
.
已支付
};
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
orderInfo
.
userId
},
updateUserInfo
);
}
return
successResult
();
}
/**
* 多比订单时选择线下付款页面的选择缴费周期页
* @param param0
* @returns
*/
export
async
function
selectManyOrderForUser
({
id
})
{
let
notPayList
=
await
find
(
TABLEENUM
.
订单表
,
{
userId
:
id
,
state
:
ORDERSTATE
.
未支付
},[
"orderCycleStart"
,
"orderCycleEnd"
,
"id"
]
);
let
dataList
=
[];
notPayList
.
forEach
(
info
=>
{
let
{
orderCycleStart
,
orderCycleEnd
,
id
}
=
info
;
dataList
.
push
({
key
:
`
${
moment
(
orderCycleStart
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
orderCycleEnd
).
format
(
"YYYY-MM-DD"
)}
`
,
value
:
id
});
});
return
{
dataList
};
}
/**
* 设置宽限期 success
* @param param0
*/
export
async
function
setGracePeriod
({
id
,
gracePeriodEndTime
})
{
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
,
isAdmin
:
STATE
.
否
},
[
"userId"
]);
if
(
!
userInfo
||
!
userInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
updateInfo
=
{
isGracePeriod
:
STATE
.
是
,
gracePeriodEndTime
};
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
updateInfo
);
return
successResult
();
}
/**
*
欠费
*
宽限期列表 success
*/
export
async
function
getArrearsFees
()
{
export
async
function
getGracePeriod
({
unitName
,
joinTime
,
memberType
,
pageNumber
})
{
const
NowMs
=
new
Date
().
valueOf
();
/**到期时间距离今天大于90天 */
let
selectParam
:
any
=
{
isGracePeriod
:
STATE
.
是
,
gracePeriodEndTime
:{
"$gt"
:
NowMs
},
isAdmin
:
STATE
.
否
,
}
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
if
(
joinTime
)
selectParam
.
joinTime
=
joinTime
;
if
(
memberType
)
selectParam
.
memberType
=
memberType
;
const
SelectFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
,
"lifespanStartTime"
,
"lifespanEndTime"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
用户表
,
selectParam
,
SelectFiles
,
pageNumber
,
10
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
let
dataList
=
[];
const
itemFiles
=
[
"userId"
,
"memberState"
,
"unitName"
,
"loginId"
,
"phone"
,
"joinTime"
,
"memberType"
];
dbList
.
forEach
(
info
=>
{
let
item
:
any
=
extractData
(
info
,
itemFiles
);
item
.
lifespanTime
=
`
${
moment
(
info
.
lifespanEndTime
).
format
(
"YYYY-MM-DD"
)}
`
;
item
.
nextLifespanTime
=
"宽限期中"
;
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
item
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
item
.
memberType
);
dataList
.
push
(
item
);
});
return
{
dataList
,
dataCount
};
}
/**
* 宽限期
* 移除宽限期
* @param param0
* @returns
*/
export
async
function
getGracePeriod
()
{
export
async
function
delGracePeriod
({
id
})
{
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
,
isAdmin
:
STATE
.
否
},
[
"userId"
]);
if
(
!
userInfo
||
!
userInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
if
(
userInfo
.
isGracePeriod
)
throw
new
BizError
(
ERRORENUM
.
该用户已在宽限期内
);
let
updateInfo
=
{
isGracePeriod
:
STATE
.
否
,
gracePeriodEndTime
:
0
};
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
updateInfo
);
return
successResult
();
}
\ No newline at end of file
src/biz/member/order.ts
View file @
6893339f
/**
* 订单相关
* 订单相关
success
*/
import
moment
=
require
(
"moment"
);
import
{
COSTTYPE
,
INDIVIDUALMEMBERTYPE
,
INVOICESTATUS
,
ISPAYENUM
,
MEMBERLEVEL
,
MEMBERTYPE
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
RECEIPTCONFIRMATION
,
STATE
,
UNITMEMBERTYPE
}
from
"../../config/enum"
;
...
...
@@ -61,7 +61,8 @@ export async function createOrder(userId:string, unitName:string, orderStartMs:n
paymentNum
:
0
,
invoiceAdd
:
''
,
state
:
ORDERSTATE
.
未支付
,
isFirst
isFirst
,
ct
:
new
Date
().
valueOf
()
};
await
addOneData
(
TABLEENUM
.
订单表
,
addInfo
);
...
...
src/biz/member/rightsMgmt.ts
View file @
6893339f
...
...
@@ -2,7 +2,7 @@
* 权限管理
*/
import
{
ADMINLV
,
ADMINTYPE
,
MEMBERSTATE
,
STATE
}
from
"../../config/enum"
;
import
{
ADMIN
FIRSTDIR
,
ADMIN
LV
,
ADMINTYPE
,
MEMBERSTATE
,
STATE
}
from
"../../config/enum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
findOnce
,
findToPage
}
from
"../../data/select"
;
...
...
@@ -10,6 +10,7 @@ import { BizError } from "../../util/bizError";
import
{
changeEnumValue
,
eccEnumValue
}
from
"../../util/verificationEnum"
;
import
*
as
sysTools
from
"../../tools/system"
;
import
{
addOneData
}
from
"../../data/add"
;
import
{
updateOneData
}
from
"../../data/update"
;
/**
* 管理员列表
...
...
@@ -62,20 +63,88 @@ export async function addAdmin({userId, form}) {
return
sysTools
.
successResult
();
}
/**
* 修改密码
* @param param0
* @returns
*/
export
async
function
changeAdminPwd
({
userId
,
form
})
{
let
{
pwd
,
confirmation
}
=
form
;
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
form
.
userId
});
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
form
.
userId
},
[
"id"
]);
if
(
!
userInfo
||
!
userInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
/**校验密码 */
if
(
pwd
.
search
(
/^
[
A-Za-z0-9
]{6,18}
$/
)
<
0
)
throw
new
BizError
(
ERRORENUM
.
密码只能由
6
至
18
位字符和数字组成
);
if
(
pwd
!=
confirmation
)
throw
new
BizError
(
ERRORENUM
.
两次密码不一致
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
form
.
userId
},
{
pwd
:
form
.
pwd
});
return
sysTools
.
successResult
();
}
/**
* 修改权限
*/
export
async
function
updateMGMT
({
id
,
adminLv
})
{
eccEnumValue
(
"修改管理员权限权限"
,
"权限列表"
,
ADMINLV
,
adminLv
);
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
[
"adminLv"
,
"userId"
,
"loginId"
]);
if
(
!
userInfo
||
!
userInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
{
adminLv
});
return
sysTools
.
successResult
();
}
/**
* 回显
*/
export
async
function
info
({
id
})
{
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
[
"adminLv"
,
"userId"
,
"loginId"
]);
if
(
!
userInfo
||
!
userInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
dataInfo
=
{
adminLv
:
userInfo
.
adminLv
,
loginId
:
userInfo
.
loginId
};
return
{
dataInfo
}
}
/**
* 权限下拉列表
*/
export
async
function
mgmtSelectList
()
{
let
distinctMap
=
{};
//去重
for
(
let
key
in
ADMINFIRSTDIR
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
//字符
let
keyStr
=
key
;
let
value
=
ADMINFIRSTDIR
[
key
];
distinctMap
[
value
]
=
{
key
:
keyStr
,
value
,
subList
:[]
}
}
}
for
(
let
key
in
ADMINLV
)
{
let
anyKey
:
any
=
key
;
if
(
isNaN
(
anyKey
))
{
//字符
let
keyStr
=
key
;
let
value
:
any
=
ADMINFIRSTDIR
[
key
];
let
firstKey
=
Math
.
floor
(
value
/
100
);
distinctMap
[
firstKey
].
subList
.
push
({
key
:
keyStr
,
value
});
}
}
let
dataList
=
Object
.
values
(
distinctMap
);
return
{
dataList
};
}
\ No newline at end of file
src/biz/register.ts
View file @
6893339f
/**
* 注册流程
* 注册流程
success
*/
import
{
BANXUELEIXING
,
CODETYPE
,
DOCUMENTTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
,
NATION
,
OPERATIONREHAVIOR
,
PROFCATEGORY
,
REGISTERFLOW
,
SEX
,
STATE
,
UNITMEMBERTYPE
,
USERREGISTERSTATE
}
from
"../config/enum"
;
...
...
src/config/errorEnum.ts
View file @
6893339f
...
...
@@ -33,7 +33,9 @@ export enum ERRORENUM {
流程
3
不支持会员身份非单位会员
,
数据状态错误
,
用户已注册成功
,
不具备审批条件
不具备审批条件
,
该用户已在宽限期内
,
该订单已支付
}
export
enum
ERRORCODEENUM
{
...
...
src/data/models/model.ts
View file @
6893339f
...
...
@@ -336,12 +336,12 @@ const ModelArray = [
auditTime
:
'Number'
,
//审核时间 会员审核列表审核时间
joinTime
:
'Number'
,
//入会时间 审核通过时间
memberType
:{
type
:
'Number'
},
//会员类型 枚举MEMBERTYPE
lifespanStartTime
:
'Number'
,
//会员有效期开始时间 时间戳 每次缴费成功更新
lifespanEndTime
:
'Number'
,
//会员有效期结束时间 时间戳 每次缴费成功更新
lifespanStartTime
:
{
type
:
'Number'
}
,
//会员有效期开始时间 时间戳 每次缴费成功更新
lifespanEndTime
:
{
type
:
'Number'
,
index
:
true
}
,
//会员有效期结束时间 时间戳 每次缴费成功更新
token
:{
type
:
'String'
,
default
:
''
},
//token
tokenMs
:{
type
:
'Number'
,
default
:
0
},
//token过期时间
session
:
'String'
,
//届次
paymentStatus
:
'Number'
,
//支付状态
paymentStatus
:
'Number'
,
//支付状态
PAYMENTSTATUS
/**管理员字段 */
adminType
:{
type
:
'Number'
},
//管理员类别 ADMINTYPE
adminLv
:
"[Number]"
,
//管理员等级 多选 ADMINLV
...
...
@@ -349,7 +349,7 @@ const ModelArray = [
registerFlow
:{
type
:
'Number'
,
default
:
REGISTERFLOW
.
未注册
},
//会员注册流程 枚举
isAdmin
:{
type
:
'Number'
,
index
:
true
,
default
:
STATE
.
否
},
//是否是管理员
userRegisterState
:{
type
:
'Number'
,
default
:
USERREGISTERSTATE
.
待审核
},
//用户注册状态 枚举USERREGISTERSTATE
memberState
:{
type
:
'Number'
,
default
:
MEMBERSTATE
.
正常
},
//会员状态 枚举MEMBERSTATE
memberState
:{
type
:
'Number'
,
default
:
MEMBERSTATE
.
正常
},
//会员状态 枚举
MEMBERSTATE
certificateType
:
'Number'
,
//证书类型 枚举CERTIFICATETYPE
individualMemberType
:{
type
:
'Number'
},
//个人会员类型 枚举INDIVIDUALMEMBERTYPE
memberLevel
:
'Number'
,
//会员等级、职务 枚举MEMBERLEVEL【会员管理用】
...
...
@@ -441,13 +441,14 @@ const ModelArray = [
unitName
:
'String'
,
//单位名称
orderCycleStart
:
'Number'
,
//订单周期开始时间
orderCycleEnd
:
'Number'
,
//订单周期结束时间
money
:
'
String
'
,
//金额
money
:
'
Number
'
,
//金额
userId
:{
type
:
'String'
,
index
:
true
},
//会员id
loginId
:{
type
:
'String'
,
index
:
true
},
//登陆名
phone
:
"String"
,
//登陆手机号
paymentNum
:
'String'
,
//支付单号(与订单号不一样)
paymentNum
:{
type
:
'String'
,
default
:
""
},
//支付单号(与订单号不一样) 线下付款时录入
offlinePaymentUrl
:{
type
:
'String'
,
default
:
""
},
//转账图片
memberCategory
:
'Number'
,
//会员类别 枚举 MEMBERTYPE
weChartPR
:
"String"
,
//微信订单号 微信支付用
weChartPR
:
{
type
:
'String'
,
default
:
""
}
,
//微信订单号 微信支付用
// membershipFeesType:'Number',//会费类别 枚举
invoiceAdd
:
'String'
,
//发票图片地址
isFirst
:{
type
:
'Boolean'
,
default
:
true
},
//首次订单
...
...
@@ -459,6 +460,8 @@ const ModelArray = [
advanceInvoice
:{
type
:
'Boolean'
,
default
:
false
},
//是否提前开票 【个人列表页提交开发票按钮】
newUnitName
:
'String'
,
//单位名称,新发票抬头【变更发票抬头使用】
newUscc
:
'String'
,
//新统一信用代码【变更发票信用代码使用】
ct
:
'Number'
,
//订单创建时间
payTime
:
'Number'
,
//支付时间
}
},
{
...
...
src/routers/member/router.ts
View file @
6893339f
...
...
@@ -223,7 +223,7 @@ export const Config = {
apiName
:
"单位会员详情"
,
subUrl
:
'/memberdb/unitmemberdetails'
,
param
:[
{
key
:
"
userI
d"
,
type
:
"String"
,
desc
:
"用户id"
}
{
key
:
"
i
d"
,
type
:
"String"
,
desc
:
"用户id"
}
],
bindBiz
:
memberBiz
.
unitMemberDetails
},
...
...
@@ -231,7 +231,7 @@ export const Config = {
apiName
:
"个人会员详情"
,
subUrl
:
'/memberdb/individualmemberdetails'
,
param
:[
{
key
:
"
userI
d"
,
type
:
"String"
,
desc
:
"用户id"
}
{
key
:
"
i
d"
,
type
:
"String"
,
desc
:
"用户id"
}
],
bindBiz
:
memberBiz
.
individualMemberDetails
},
...
...
@@ -293,7 +293,7 @@ export const Config = {
desc
:
"单位所获得科研成果表单"
},
{
key
:
"
userI
d"
,
type
:
"String"
,
desc
:
"用户id"
key
:
"
i
d"
,
type
:
"String"
,
desc
:
"用户id"
}
],
bindBiz
:
memberBiz
.
unitMemberUpdate
...
...
@@ -335,7 +335,7 @@ export const Config = {
}
},
{
key
:
"
userI
d"
,
type
:
"String"
,
desc
:
"用户id"
key
:
"
i
d"
,
type
:
"String"
,
desc
:
"用户id"
}
],
bindBiz
:
memberBiz
.
individualMemberUpdate
...
...
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