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
212a2401
Commit
212a2401
authored
Mar 25, 2024
by
lixinming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
7a6656ed
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
216 additions
and
66 deletions
+216
-66
cost.ts
src/biz/member/cost.ts
+31
-8
examine.ts
src/biz/member/examine.ts
+4
-4
member.ts
src/biz/member/member.ts
+3
-0
memberFees.ts
src/biz/member/memberFees.ts
+8
-4
order.ts
src/biz/member/order.ts
+15
-8
rightsMgmt.ts
src/biz/member/rightsMgmt.ts
+4
-5
user.ts
src/biz/member/user.ts
+9
-4
officialWebsite.ts
src/biz/officialWebsite.ts
+4
-2
xueHuiGaikuo.ts
src/biz/portal/xueHui/xueHuiGaikuo.ts
+2
-2
public.ts
src/biz/public.ts
+7
-0
register.ts
src/biz/register.ts
+29
-10
task.ts
src/biz/task.ts
+47
-0
enum.ts
src/config/enum.ts
+9
-2
model.ts
src/data/models/model.ts
+1
-0
dataScript.ts
src/dataScript.ts
+28
-14
main.ts
src/main.ts
+3
-1
router.ts
src/routers/portal/router.ts
+2
-2
verificationParam.ts
src/util/verificationParam.ts
+10
-0
No files found.
src/biz/member/cost.ts
View file @
212a2401
...
...
@@ -2,9 +2,9 @@
* 收费
*/
import
{
ORDERSTATE
,
PAYMENTTYPE
,
RECEIPTCONFIRMATION
,
WEICHARTPAYSTATE
}
from
"../../config/enum"
;
import
{
MEMBERSTATE
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
RECEIPTCONFIRMATION
,
STATE
,
WEICHARTPAYSTATE
}
from
"../../config/enum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
find
Once
}
from
"../../data/select"
;
import
{
find
Count
,
findOnce
,
findOnceToSort
}
from
"../../data/select"
;
import
{
eccEnumValue
}
from
"../../util/verificationEnum"
;
import
*
as
path
from
"path"
;
const
WxPay
=
require
(
'wechatpay-node-v3'
);
...
...
@@ -106,15 +106,38 @@ export async function payCallback(body) {
/**支付成功 */
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
订单表
,
{
weChartPR
:
wechartCallbackData
.
out_trade_no
});
if
(
!
oldInfo
||
!
oldInfo
.
id
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
notPayCount
=
await
findCount
(
TABLEENUM
.
订单表
,
{
userId
:
oldInfo
.
userId
,
state
:
ORDERSTATE
.
未支付
}
);
let
updateInfo
:
any
=
{
paymentNum
:
wechartCallbackData
.
transaction_id
,
state
:
ORDERSTATE
.
已支付
,
paymentMethod
:
PAYMENTTYPE
.
微信支付
paymentNum
:
wechartCallbackData
.
transaction_id
,
state
:
ORDERSTATE
.
已支付
,
paymentMethod
:
PAYMENTTYPE
.
微信支付
,
payTime
:
new
Date
().
valueOf
(),
};
if
(
!
oldInfo
.
isFirst
)
{
updateInfo
.
confirmReceipt
=
RECEIPTCONFIRMATION
.
待确认
;
}
if
(
!
oldInfo
.
isFirst
)
updateInfo
.
confirmReceipt
=
RECEIPTCONFIRMATION
.
待确认
;
await
updateOneData
(
TABLEENUM
.
订单表
,
{
weChartPR
:
wechartCallbackData
.
out_trade_no
},
updateInfo
);
/**只有一笔欠费时才更新用户状态 */
if
(
notPayCount
<=
1
)
{
let
newOrderInfo
=
await
findOnceToSort
(
TABLEENUM
.
订单表
,
{
userId
:
oldInfo
.
userId
},
{
lifespanEndTime
:
-
1
},
[
"orderCycleStart"
,
"orderCycleEnd"
]);
let
updateUserInfo
:
any
=
{
lifespanStartTime
:
newOrderInfo
.
orderCycleStart
,
lifespanEndTime
:
newOrderInfo
.
orderCycleEnd
,
isGracePeriod
:
STATE
.
否
,
gracePeriodEndTime
:
0
,
memberState
:
MEMBERSTATE
.
正常
,
paymentStatus
:
PAYMENTSTATUS
.
已支付
};
if
(
oldInfo
.
isFirst
)
{
updateUserInfo
.
isFirstPay
=
true
;
}
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
oldInfo
.
userId
},
updateUserInfo
);
}
return
{
code
:
"SUCCESS"
,
message
:
"成功"
...
...
src/biz/member/examine.ts
View file @
212a2401
...
...
@@ -91,7 +91,7 @@ export async function adopt({id, session}) {
let
thisDate
=
new
Date
();
const
NowMs
=
thisDate
.
valueOf
();
let
add
Info
:
any
=
{
let
update
Info
:
any
=
{
auditTime
:
NowMs
,
joinTime
:
NowMs
,
userRegisterState
:
USERREGISTERSTATE
.
通过
,
...
...
@@ -104,15 +104,15 @@ export async function adopt({id, session}) {
let
unitName
=
userInfo
.
unitName
;
let
subType
=
userInfo
.
unitMemberType
;
if
(
userInfo
.
memberType
==
MEMBERTYPE
.
个人会员
)
{
add
Info
.
individualMemberType
=
INDIVIDUALMEMBERTYPE
.
个人会员
;
update
Info
.
individualMemberType
=
INDIVIDUALMEMBERTYPE
.
个人会员
;
subType
=
userInfo
.
individualMemberType
;
}
//todo 创建一条初始订单
await
createOrder
(
id
,
userInfo
.
loginId
,
userInfo
.
phone
,
unitName
,
NowMs
,
MEMBERLEVEL
.
普通会员
,
userInfo
.
memberType
,
subType
,
true
);
await
createOrder
(
id
,
userInfo
.
loginId
,
userInfo
.
phone
,
unitName
,
NowMs
+
1000
,
MEMBERLEVEL
.
普通会员
,
userInfo
.
memberType
,
subType
,
true
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
add
Info
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
update
Info
);
/**提交审批历史信息 */
let
addApprovalHistory
=
{
...
...
src/biz/member/member.ts
View file @
212a2401
...
...
@@ -56,6 +56,7 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, member
item
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
item
.
memberState
);
if
(
!
item
.
memberLevel
)
item
.
memberLevel
=
"未选择"
;
else
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
item
.
joinTime
=
moment
(
item
.
joinTime
).
format
(
"YYYY-MM-DD"
);
dataList
.
push
(
item
);
});
...
...
@@ -195,6 +196,8 @@ export async function individualMemberList({name, documentId, phone, individualM
if
(
!
item
.
memberLevel
)
item
.
memberLevel
=
"未选择"
;
else
item
.
memberLevel
=
changeEnumValue
(
MEMBERLEVEL
,
item
.
memberLevel
);
item
.
joinTime
=
moment
(
item
.
joinTime
).
format
(
"YYYY-MM-DD"
);
item
.
shi
=
getCityNameByCode
(
item
.
shi
);
item
.
sheng
=
getCityNameByCode
(
item
.
sheng
);
item
.
qu
=
getCityNameByCode
(
item
.
qu
);
...
...
src/biz/member/memberFees.ts
View file @
212a2401
...
...
@@ -3,7 +3,7 @@
*/
import
moment
=
require
(
"moment"
);
import
{
MEMBERLEVEL
,
MEMBERSTATE
,
MEMBERTYPE
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
STATE
}
from
"../../config/enum"
;
import
{
MEMBERLEVEL
,
MEMBERSTATE
,
MEMBERTYPE
,
ORDERSTATE
,
PAYMENTSTATUS
,
PAYMENTTYPE
,
STATE
,
USERREGISTERSTATE
}
from
"../../config/enum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
find
,
findCount
,
findOnce
,
findOnceToSort
,
findToPage
,
findToSort
}
from
"../../data/select"
;
import
{
extractData
}
from
"../../util/piecemeal"
;
...
...
@@ -97,7 +97,8 @@ export async function unpaidList({unitName, joinStartTime, joinEndTime, memberTy
{
lifespanEndTime
:{
"$gt"
:
NowMs
}}
],
isAdmin
:
STATE
.
否
,
isGracePeriod
:
STATE
.
否
isGracePeriod
:
STATE
.
否
,
userRegisterState
:
USERREGISTERSTATE
.
通过
}
if
(
unitName
)
selectParam
.
unitName
=
unitName
;
...
...
@@ -136,7 +137,6 @@ export async function unpaidList({unitName, joinStartTime, joinEndTime, memberTy
*/
export
async
function
getRenewalPeriod
({
unitName
,
joinStartTime
,
joinEndTime
,
memberType
,
pageNumber
})
{
const
NowMs
=
new
Date
().
valueOf
();
/**到期时间距离今天大于90天 */
let
selectParam
:
any
=
{
"$or"
:[
{
...
...
@@ -148,6 +148,7 @@ export async function getRenewalPeriod({unitName, joinStartTime, joinEndTime, me
lifespanEndTime
:{
"$lt"
:
NowMs
},
gracePeriodEndTime
:{
"$lt"
:
NowMs
}
}],
isFirstPay
:
true
,
isAdmin
:
STATE
.
否
,
}
...
...
@@ -209,7 +210,7 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
/**只有一笔欠费时才更新用户状态 */
if
(
notPayCount
<=
1
)
{
let
newOrderInfo
=
await
findOnceToSort
(
TABLEENUM
.
订单表
,
{
userId
:
orderInfo
.
userId
},
{
lifespanEndTime
:
-
1
},
[
"lifespanStartTime"
,
"lifespanEndTime"
]);
let
updateUserInfo
=
{
let
updateUserInfo
:
any
=
{
lifespanStartTime
:
newOrderInfo
.
lifespanStartTime
,
lifespanEndTime
:
newOrderInfo
.
lifespanEndTime
,
isGracePeriod
:
STATE
.
否
,
...
...
@@ -217,6 +218,9 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
memberState
:
MEMBERSTATE
.
正常
,
paymentStatus
:
PAYMENTSTATUS
.
已支付
};
if
(
orderInfo
.
isFirst
)
{
updateUserInfo
.
isFirstPay
=
true
;
}
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
orderInfo
.
userId
},
updateUserInfo
);
}
...
...
src/biz/member/order.ts
View file @
212a2401
...
...
@@ -12,6 +12,7 @@ import { extractData } from "../../util/piecemeal";
import
{
BizError
}
from
"../../util/bizError"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
updateOneData
}
from
"../../data/update"
;
import
{
info
}
from
"console"
;
/**
...
...
@@ -147,7 +148,7 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
/**只有一笔欠费时才更新用户状态 */
if
(
notPayCount
<=
1
)
{
let
newOrderInfo
=
await
findOnceToSort
(
TABLEENUM
.
订单表
,
{
userId
:
orderInfo
.
userId
},
{
lifespanEndTime
:
-
1
},
[
"orderCycleStart"
,
"orderCycleEnd"
]);
let
updateUserInfo
=
{
let
updateUserInfo
:
any
=
{
lifespanStartTime
:
newOrderInfo
.
orderCycleStart
,
lifespanEndTime
:
newOrderInfo
.
orderCycleEnd
,
isGracePeriod
:
STATE
.
否
,
...
...
@@ -155,6 +156,9 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
memberState
:
MEMBERSTATE
.
正常
,
paymentStatus
:
PAYMENTSTATUS
.
已支付
};
if
(
orderInfo
.
isFirst
)
{
updateUserInfo
.
isFirstPay
=
true
;
}
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
orderInfo
.
userId
},
updateUserInfo
);
}
...
...
@@ -179,16 +183,17 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) {
if
(
paymentType
)
findParam
.
paymentMethod
=
paymentType
;
if
(
costType
)
findParam
.
isFirst
=
costType
==
COSTTYPE
.
首次
;
let
selectFile
=
[
"id"
,
"unitName"
,
"orderCycleStart"
,
"orderCycleEnd"
,
"money"
,
"paymentMethod"
,
"memberCategory"
,
"isFirst"
,
"paymentNum"
,
"memberState"
];
let
selectFile
=
[
"id"
,
"unitName"
,
"
userId"
,
"
orderCycleStart"
,
"orderCycleEnd"
,
"money"
,
"paymentMethod"
,
"memberCategory"
,
"isFirst"
,
"paymentNum"
,
"memberState"
];
let
dbList
=
await
findToPage
(
TABLEENUM
.
订单表
,
findParam
,
selectFile
,
pageNumber
);
let
dataCount
=
await
findCount
(
TABLEENUM
.
订单表
,
findParam
);
let
dataList
=
[];
let
itemFile
=
[
"id"
,
"unitName"
,
"money"
,
"paymentNum"
];
dbList
.
forEach
(
info
=>
{
for
(
let
i
=
0
;
i
<
dbList
.
length
;
i
++
)
{
let
info
=
dbList
[
i
];
let
itemData
:
any
=
extractData
(
info
,
itemFile
);
itemData
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
info
.
memberState
);
itemData
.
joinTime
=
moment
(
info
.
orderCycleStart
).
format
(
"YYYY-MM-DD"
);
itemData
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
info
.
memberCategory
);
itemData
.
paymentMethod
=
changeEnumValue
(
PAYMENTTYPE
,
info
.
paymentMethod
);
...
...
@@ -199,9 +204,11 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) {
itemData
.
paymentMethod
=
"-"
;
itemData
.
paymentNum
=
"-"
;
}
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
info
.
userId
},
[
"memberState"
]);
if
(
userInfo
)
itemData
.
memberState
=
changeEnumValue
(
MEMBERSTATE
,
userInfo
.
memberState
);
dataList
.
push
(
itemData
);
}
);
}
return
{
dataList
,
dataCount
};
}
...
...
@@ -239,7 +246,7 @@ export async function confirmReceiptOut({id}) {
updateInfo
.
firstPayExamine
=
false
;
}
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
},
{
confirmReceipt
:
RECEIPTCONFIRMATION
.
退回
}
);
await
updateOneData
(
TABLEENUM
.
订单表
,
{
id
},
updateInfo
);
return
successResult
();
}
...
...
@@ -346,14 +353,14 @@ export async function invoicedList({unitName, paymentType, isPay, pageNumber}) {
let
dataList
=
[];
let
itemFile
=
[
"id"
,
"unitName"
,
"money"
,
"paymentNum"
,
"state"
,
"userId"
];
let
itemFile
=
[
"id"
,
"unitName"
,
"money"
,
"paymentNum"
,
"state"
,
"userId"
,
"memberCategory"
,
"paymentMethod"
];
for
(
let
i
=
0
;
i
<
dbList
.
length
;
i
++
)
{
let
info
=
dbList
[
i
];
let
itemData
:
any
=
extractData
(
info
,
itemFile
);
itemData
.
joinTime
=
moment
(
info
.
orderCycleStart
).
format
(
"YYYY-MM-DD"
);
itemData
.
memberType
=
changeEnumValue
(
MEMBERTYPE
,
itemData
.
memberCategory
);
itemData
.
paymentMethod
=
changeEnumValue
(
MEMBER
TYPE
,
itemData
.
paymentMethod
);
itemData
.
paymentMethod
=
changeEnumValue
(
PAYMENT
TYPE
,
itemData
.
paymentMethod
);
itemData
.
cycle
=
`
${
moment
(
info
.
orderCycleStart
).
format
(
"YYYY-MM-DD"
)}
至
${
moment
(
info
.
orderCycleEnd
).
format
(
"YYYY-MM-DD"
)}
`
;
itemData
.
isPay
=
changeEnumValue
(
ORDERSTATE
,
itemData
.
state
);
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
itemData
.
userId
},
[
"memberState"
])
...
...
src/biz/member/rightsMgmt.ts
View file @
212a2401
...
...
@@ -2,7 +2,7 @@
* 权限管理
*/
import
{
ADMINFIRSTDIR
,
ADMINLV
,
ADMINTYPE
,
MEMBERSTATE
,
STATE
}
from
"../../config/enum"
;
import
{
ADMINFIRSTDIR
,
ADMINLV
,
ADMIN
STATE
,
ADMIN
TYPE
,
MEMBERSTATE
,
STATE
}
from
"../../config/enum"
;
import
{
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
import
{
find
,
findCount
,
findOnce
,
findToPage
}
from
"../../data/select"
;
...
...
@@ -25,8 +25,7 @@ export async function adminList({pageNumber}) {
let
dataList
=
[];
dbList
.
forEach
(
info
=>
{
let
{
userId
,
memberState
,
loginId
,
adminLv
,
adminType
}
=
info
;
let
memberStateStr
=
"正常"
;
if
(
memberState
==
MEMBERSTATE
.
冻结管理员
)
memberStateStr
=
"冻结"
;
let
memberStateStr
=
changeEnumValue
(
ADMINSTATE
,
memberState
);
dataList
.
push
({
userId
,
...
...
@@ -157,10 +156,10 @@ export async function info({id}) {
let
userInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
[
"userId"
,
"memberState"
]);
if
(
!
userInfo
||
!
userInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
if
(
userInfo
.
memberState
==
MEMBERSTATE
.
冻结管理员
)
{
if
(
userInfo
.
memberState
==
ADMINSTATE
.
冻结
)
{
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
{
memberState
:
MEMBERSTATE
.
正常
});
}
else
{
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
{
memberState
:
MEMBERSTATE
.
冻结管理员
});
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
{
memberState
:
ADMINSTATE
.
冻结
});
}
return
sysTools
.
successResult
();
...
...
src/biz/member/user.ts
View file @
212a2401
...
...
@@ -2,7 +2,7 @@
* 用户逻辑
*/
import
{
DOCUMENTTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
,
NATION
,
PROFCATEGORY
,
SEX
,
STATE
}
from
"../../config/enum"
;
import
{
DOCUMENTTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
,
NATION
,
PROFCATEGORY
,
SEX
,
STATE
,
USERREGISTERSTATE
}
from
"../../config/enum"
;
import
{
ERRORCODEENUM
,
ERRORENUM
}
from
"../../config/errorEnum"
;
import
{
addOneData
}
from
"../../data/add"
;
import
{
TABLEENUM
}
from
"../../data/models/model"
;
...
...
@@ -26,8 +26,11 @@ export async function login({loginId, pwd}) {
if
(
!
userInfo
||
!
userInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
账号或密码错误
);
if
(
userInfo
.
pwd
!=
pwd
)
throw
new
BizError
(
ERRORENUM
.
账号或密码错误
);
let
token
=
generateToken
(
userInfo
.
userId
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
userInfo
.
userId
},
{
token
,
tokenMs
:
new
Date
().
valueOf
()});
let
token
=
""
;
if
(
userInfo
.
isAdmin
==
STATE
.
是
||
(
userInfo
.
userRegisterState
==
USERREGISTERSTATE
.
通过
&&
userInfo
.
isAdmin
==
STATE
.
否
))
{
token
=
generateToken
(
userInfo
.
userId
);
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
userInfo
.
userId
},
{
token
,
tokenMs
:
new
Date
().
valueOf
()});
}
let
dataInfo
=
{
isAdmin
:
userInfo
.
isAdmin
==
STATE
.
是
,
...
...
@@ -35,7 +38,9 @@ export async function login({loginId, pwd}) {
userId
:
userInfo
.
userId
,
token
:
token
,
adminLv
:
userInfo
.
adminLv
,
timeMs
:
new
Date
().
valueOf
()
timeMs
:
new
Date
().
valueOf
(),
isPass
:
userInfo
.
userRegisterState
==
USERREGISTERSTATE
.
通过
,
memberType
:
userInfo
.
memberType
};
return
{
dataInfo
}
...
...
src/biz/officialWebsite.ts
View file @
212a2401
...
...
@@ -79,7 +79,7 @@ export async function homePage() {
reDianShiPinData
.
sort
((
a
,
b
)
=>
{
return
a
.
videoTime
-
b
.
videoTime
});
for
(
let
i
=
0
;
i
<
reDianShiPinData
.
length
;
i
++
)
{
let
{
title
,
desc
,
videoUrl
}
=
reDianShiPinData
[
i
];
result
.
reDianShiPin
.
push
({
title
,
desc
,
videoUrl
:
videoUrl
[
0
]
});
result
.
reDianShiPin
.
push
({
title
,
desc
,
videoUrl
:
videoUrl
});
if
(
i
>=
4
)
break
;
}
...
...
@@ -136,7 +136,9 @@ export async function xueHuiGaiKuang() {
*/
export
async
function
xueHuiGaiKuangXiangQing
()
{
let
xueHuiGaiKuangData
=
await
findOnce
(
TABLEENUM
.
学会概括
,
{}
);
let
dataInfo
=
extractData
(
xueHuiGaiKuangData
,
[
"title"
,
"desc"
,
"imgList"
]);
if
(
!
xueHuiGaiKuangData
||
!
xueHuiGaiKuangData
.
id
)
return
{
dataInfo
:{}};
let
dataInfo
:
any
=
extractData
(
xueHuiGaiKuangData
,
[
"title"
,
"desc"
,
"imgList"
]);
dataInfo
.
articleTime
=
moment
(
xueHuiGaiKuangData
.
ut
).
format
(
"YYYY-MM-DD"
);
return
{
dataInfo
};
}
...
...
src/biz/portal/xueHui/xueHuiGaikuo.ts
View file @
212a2401
...
...
@@ -31,8 +31,8 @@ export async function info(userId:string) {
* @param secureArgs
* @returns
*/
export
async
function
update
(
userId
:
string
,
desc
:
string
,
title
:
string
,
imgList
)
{
await
updateOneData
(
TABLEENUM
.
学会概括
,
{},
{
desc
,
title
,
imgList
});
export
async
function
update
(
{
userId
,
desc
,
title
,
imgList
}
)
{
await
updateOneData
(
TABLEENUM
.
学会概括
,
{},
{
desc
,
title
,
imgList
,
ut
:
new
Date
().
valueOf
()
});
return
successResult
();
}
src/biz/public.ts
View file @
212a2401
...
...
@@ -51,6 +51,13 @@ export async function filePosition() {
if
(
isNaN
(
anyKey
))
{
let
keyStr
=
key
;
let
value
=
ARTICLEPOSITION
[
key
];
if
(
/_dou/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_dou/
,
","
);
if
(
/_zyh/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_zyh/
,
"“"
);
if
(
/_yyh/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_yyh/
,
"”"
);
if
(
/_dun/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_dun/
,
"、"
);
if
(
/_ju/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_ju/
,
"。"
);
if
(
/_hgh/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_hgh/
,
"-"
);
if
(
/_kbh/
.
test
(
keyStr
))
keyStr
=
keyStr
.
replace
(
/_kbh/
,
""
);
dataList
.
push
({
key
:
keyStr
,
value
});
}
}
...
...
src/biz/register.ts
View file @
212a2401
...
...
@@ -5,6 +5,7 @@
import
{
BANXUELEIXING
,
CODETYPE
,
DOCUMENTTYPE
,
MEMBERLEVEL
,
MEMBERTYPE
,
NATION
,
OPERATIONREHAVIOR
,
PROFCATEGORY
,
REGISTERFLOW
,
SEX
,
STATE
,
UNITMEMBERTYPE
,
USERREGISTERSTATE
}
from
"../config/enum"
;
import
{
ERRORENUM
}
from
"../config/errorEnum"
;
import
{
addManyData
,
addOneData
}
from
"../data/add"
;
import
{
deleteManyData
}
from
"../data/delete"
;
import
{
TABLEENUM
}
from
"../data/models/model"
;
import
{
find
,
findCount
,
findOnce
,
findOnceToSort
}
from
"../data/select"
;
import
{
updateOneData
}
from
"../data/update"
;
...
...
@@ -12,6 +13,7 @@ import * as sysTools from "../tools/system";
import
{
BizError
}
from
"../util/bizError"
;
import
{
extractData
}
from
"../util/piecemeal"
;
import
{
changeEnumValue
,
eccEnumValue
}
from
"../util/verificationEnum"
;
import
{
eccFormParam
}
from
"../util/verificationParam"
;
/**
...
...
@@ -163,6 +165,14 @@ export async function memberRegister2({form, id}) {
* @returns
*/
export
async
function
unitMemberRegister2
({
form
,
keyanForm
,
id
})
{
const
keyanFormItemConfig
=
{
startTime
:
'Number'
,
endTime
:
'Number'
,
describe
:
'String'
};
keyanForm
.
forEach
(
item
=>
{
eccFormParam
(
"会员注册流程二"
,
keyanFormItemConfig
,
item
);
});
let
selectUserFiles
=
[
"userId"
,
"registerFlow"
,
"userRegisterState"
];
let
oldInfo
=
await
findOnce
(
TABLEENUM
.
用户表
,
{
userId
:
id
,
memberType
:
MEMBERTYPE
.
单位会员
,
isAdmin
:
STATE
.
否
},
selectUserFiles
);
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
...
...
@@ -181,13 +191,17 @@ export async function unitMemberRegister2({form, keyanForm, id}) {
await
updateOneData
(
TABLEENUM
.
用户表
,
{
userId
:
id
},
form
);
/**注册提交单位科研成果信息 */
await
deleteManyData
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
:
id
});
let
addList
=
[];
for
(
let
i
=
0
;
i
<
keyanForm
.
length
;
i
++
)
{
keyanForm
[
i
].
id
=
sysTools
.
generateSystemId
(
TABLEENUM
.
单位所获得科研成果表
,
id
);
keyanForm
[
i
].
userId
=
id
;
addList
.
push
(
keyanForm
[
i
]);
let
{
startTime
,
endTime
,
describe
}
=
keyanForm
[
i
];
addList
.
push
({
id
:
sysTools
.
generateSystemId
(
TABLEENUM
.
单位所获得科研成果表
,
id
),
userId
:
id
,
startTime
,
endTime
,
describe
});
}
await
add
One
Data
(
TABLEENUM
.
单位所获得科研成果表
,
addList
);
await
add
Many
Data
(
TABLEENUM
.
单位所获得科研成果表
,
addList
);
return
sysTools
.
successResult
();
}
...
...
@@ -293,12 +307,17 @@ export async function unitMemberEcho2({id}) {
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
basicInfo
:
any
=
extractData
(
oldInfo
,
UnitBasicConfig
);
let
unitInfo
:
any
=
extractData
(
oldInfo
,
UnitConfig
);
delete
basicInfo
.
userId
;
/**处理枚举值 */
unitInfo
.
unitMemberType
=
changeEnumValue
(
UNITMEMBERTYPE
,
unitInfo
.
unitMemberType
);
unitInfo
.
yuanXiaoBanXueLeiXing
=
changeEnumValue
(
BANXUELEIXING
,
unitInfo
.
yuanXiaoBanXueLeiXing
);
//
unitInfo.unitMemberType = changeEnumValue(UNITMEMBERTYPE, unitInfo.unitMemberType);
//
unitInfo.yuanXiaoBanXueLeiXing = changeEnumValue(BANXUELEIXING, unitInfo.yuanXiaoBanXueLeiXing);
let
oldKeYanInfo
=
await
find
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
:
id
});
let
scientificResearch
=
extractData
(
oldKeYanInfo
,
[
"id"
,
"startTime"
,
"endTime"
,
"describe"
]);
let
oldKeYanList
=
await
find
(
TABLEENUM
.
单位所获得科研成果表
,
{
userId
:
id
});
let
scientificResearch
=
[];
oldKeYanList
.
forEach
(
info
=>
{
let
item
=
extractData
(
info
,
[
"id"
,
"startTime"
,
"endTime"
,
"describe"
]);
scientificResearch
.
push
(
item
);
});
return
{
basicInfo
,
unitInfo
,
scientificResearch
};
}
...
...
@@ -333,8 +352,8 @@ export async function individualMemberDetails({id}) {
if
(
!
oldInfo
||
!
oldInfo
.
userId
)
throw
new
BizError
(
ERRORENUM
.
目标数据不存在
);
let
basicInfo
:
any
=
extractData
(
oldInfo
,
IndividualBasicConfig
);
basicInfo
.
documentType
=
changeEnumValue
(
DOCUMENTTYPE
,
basicInfo
.
documentType
);
basicInfo
.
nation
=
changeEnumValue
(
NATION
,
basicInfo
.
nation
);
//
basicInfo.documentType = changeEnumValue(DOCUMENTTYPE, basicInfo.documentType);
//
basicInfo.nation = changeEnumValue(NATION, basicInfo.nation);
let
specialityInfo
:
any
=
extractData
(
oldInfo
,
SpecialityConfig
);
basicInfo
.
profCategory
=
changeEnumValue
(
PROFCATEGORY
,
basicInfo
.
profCategory
);
...
...
src/biz/task.ts
0 → 100644
View file @
212a2401
import
moment
=
require
(
"moment"
);
import
{
MEMBERLEVEL
,
MEMBERTYPE
,
STATE
,
USERREGISTERSTATE
}
from
"../config/enum"
;
import
{
TABLEENUM
}
from
"../data/models/model"
;
import
{
find
,
findCount
,
findOnce
}
from
"../data/select"
;
import
{
createOrder
}
from
"./member/order"
;
/**
* 初始化任务
*/
export
function
initSystemTask
()
{
/**孵化器月度任务 */
createUserOrder
();
setInterval
(
async
function
()
{
await
createUserOrder
();
},
24
*
3600
*
1000
);
console
.
log
(
`systemTask init success`
);
}
export
async
function
createUserOrder
()
{
const
NowMs
=
new
Date
().
valueOf
();
/**到期时间距离今天小于90天 */
let
selectParam
:
any
=
{
"$and"
:[
{
lifespanEndTime
:{
"$lt"
:
NowMs
+
(
30
*
24
*
3600
*
1000
)}}
],
isAdmin
:
STATE
.
否
,
userRegisterState
:
USERREGISTERSTATE
.
通过
}
let
files
=
[
"userId"
,
"lifespanEndTime"
,
"loginId"
,
"phone"
,
"unitName"
,
"memberLevel"
,
"memberType"
,
"unitMemberType"
,
"individualMemberType"
];
let
count
=
await
findCount
(
TABLEENUM
.
用户表
,
selectParam
);
if
(
count
)
{
let
userList
=
await
find
(
TABLEENUM
.
用户表
,
selectParam
,
files
);
let
addCount
=
0
;
for
(
let
i
=
0
;
i
<
userList
.
length
;
i
++
)
{
let
{
userId
,
lifespanEndTime
,
loginId
,
phone
,
unitName
,
memberLevel
,
memberType
,
unitMemberType
,
individualMemberType
}
=
userList
[
i
];
let
itemInfo
=
await
findOnce
(
TABLEENUM
.
订单表
,
{
userId
,
orderCycleStart
:{
"$gte"
:
lifespanEndTime
}},
"orderCycleStart"
);
if
(
!
itemInfo
||
!
itemInfo
.
orderCycleStart
)
{
/**创建一条新的订单 */
let
subType
=
memberType
==
MEMBERTYPE
.
个人会员
?
individualMemberType
:
unitMemberType
;
await
createOrder
(
userId
,
loginId
,
phone
,
unitName
,
lifespanEndTime
,
memberLevel
,
memberType
,
subType
,
false
);
addCount
+=
1
;
}
}
console
.
log
(
`已创建
${
addCount
}
条订单`
);
}
}
src/config/enum.ts
View file @
212a2401
...
...
@@ -307,8 +307,15 @@ export enum DWTYPE {
export
enum
MEMBERSTATE
{
正常
=
1
,
异常
,
冻结
,
冻结管理员
冻结
}
/**
* 管理员状态
*/
export
enum
ADMINSTATE
{
正常
=
1
,
冻结
=
4
}
/**
...
...
src/data/models/model.ts
View file @
212a2401
...
...
@@ -354,6 +354,7 @@ const ModelArray = [
certificateType
:
'Number'
,
//证书类型 枚举CERTIFICATETYPE
individualMemberType
:{
type
:
'Number'
},
//个人会员类型 枚举INDIVIDUALMEMBERTYPE
memberLevel
:{
type
:
'Number'
,
default
:
MEMBERLEVEL
.
普通会员
},
//会员等级、职务 枚举 MEMBERLEVEL 【会员管理用】
isFirstPay
:{
type
:
'Boolean'
,
default
:
false
},
//是否完成首次支付
/**宽限期状态 */
isGracePeriod
:{
type
:
'Number'
,
default
:
0
},
//是否宽限期 0:否, 1:是
gracePeriodEndTime
:
'Number'
,
//宽限期到期时间 时间戳
...
...
src/dataScript.ts
View file @
212a2401
...
...
@@ -6,6 +6,7 @@ import moment = require("moment");
import
{
addManyData
,
addOneData
}
from
"./data/add"
;
import
{
TABLEENUM
}
from
"./data/models/model"
;
import
{
generateOrderId
,
generateUserId
}
from
"./tools/system"
;
import
{
createOrder
}
from
"./biz/member/order"
;
/**
* 注册账号
...
...
@@ -13,10 +14,16 @@ import { generateOrderId, generateUserId } from "./tools/system";
export
async
function
test1
()
{
let
i
=
parseInt
(
`
${
moment
().
hour
()}${
moment
().
minute
()}${
moment
().
second
()}
`
);
let
maxi
=
i
+
20
;
let
maxi
=
i
+
8
;
let
dataList
=
[];
for
(
i
;
i
<=
maxi
;
i
++
)
{
for
(
i
;
i
<
maxi
;
i
++
)
{
let
nowMs
=
new
Date
().
valueOf
();
let
randomNum
=
parseInt
(
`
${
moment
().
hour
()}${
moment
().
minute
()}${
moment
().
second
()}${
Math
.
ceil
(
Math
.
random
()
*
100
)}
`
);
let
userId
=
generateUserId
();
let
endTime
=
new
Date
(
moment
().
add
(
1
,
'd'
).
format
(
"YYYY-MM-DD"
)
+
' 00:00:00'
).
valueOf
();
dataList
.
push
({
"token"
:
""
,
"tokenMs"
:
0
,
"adminLv"
:
[],
"registerFlow"
:
2
,
"isAdmin"
:
0
,
...
...
@@ -28,10 +35,10 @@ export async function test1() {
"http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-873169.png"
],
"auxiliaryMaterial"
:
[],
"userId"
:
generateUserId
()
,
"userId"
:
userId
,
"memberType"
:
1
,
"askForTime"
:
1711095028440.0
,
"loginId"
:
`
${
i
}
`
,
"askForTime"
:
nowMs
,
"loginId"
:
randomNum
,
"mail"
:
"18120935727@163.com"
,
"pwd"
:
"123456"
,
"phone"
:
`1812093
${
Math
.
ceil
(
Math
.
random
()
*
10
)}${
Math
.
ceil
(
Math
.
random
()
*
10
)}${
Math
.
ceil
(
Math
.
random
()
*
10
)}${
Math
.
ceil
(
Math
.
random
()
*
10
)}
`
,
...
...
@@ -43,23 +50,30 @@ export async function test1() {
"documentType"
:
1
,
"duties"
:
"吃的蔬菜生产"
,
"education"
:
2
,
"name"
:
`
%
${
i
}
`
,
"name"
:
`
V
${
randomNum
}
`
,
"nation"
:
1
,
"otherEMP"
:
"
村上春树
"
,
"otherPROF"
:
"
村上春树
"
,
"otherEMP"
:
"
23年前注册
"
,
"otherPROF"
:
"
23年前注册
"
,
"photoUrl"
:
"http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-624049.png"
,
"profAchievement"
:
"
村上春树
"
,
"profAchievement"
:
"
23年前注册
"
,
"profCategory"
:
1
,
"professionalCERTUrl"
:
"http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-603763.png"
,
"qu"
:
"130524"
,
"sex"
:
2
,
"sheng"
:
"130000"
,
"shi"
:
"130500"
,
"studyResume"
:
"菜市场"
,
"unitName"
:
"村上春树"
,
"workResume"
:
"村上春树"
,
"workTitle"
:
"村上春树"
})
"studyResume"
:
"23年前注册"
,
"unitName"
:
"23年前注册"
,
"workResume"
:
"23年前注册"
,
"workTitle"
:
"23年前注册"
,
"auditTime"
:
nowMs
+
1
,
"individualMemberType"
:
1
,
"joinTime"
:
nowMs
+
1
,
"lifespanEndTime"
:
endTime
,
"lifespanStartTime"
:
nowMs
,
"paymentStatus"
:
2
,
"session"
:
200907
});
}
await
addManyData
(
TABLEENUM
.
用户表
,
dataList
);
console
.
log
(
"初始化成功"
);
...
...
src/main.ts
View file @
212a2401
import
{
initAdmin
}
from
"./biz/member/rightsMgmt"
;
import
{
initSystemTask
}
from
"./biz/task"
;
import
{
initConfig
,
systemConfig
}
from
"./config/serverConfig"
;
import
{
initDataBaseModel
}
from
"./data/db/db"
;
import
{
test1
,
initOrderData
}
from
"./dataScript"
;
...
...
@@ -15,7 +16,8 @@ async function lanuch() {
// await smsTask();
console
.
log
(
'This indicates that the server is started successfully.'
);
// await initAdmin();
// test1();
// await test1();
await
initSystemTask
();
// await initOrderData()
}
...
...
src/routers/portal/router.ts
View file @
212a2401
...
...
@@ -70,7 +70,7 @@ export const Config = {
param
:[
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
rank
:{
type
:
"
String
"
,
desc
:
"排序"
},
rank
:{
type
:
"
Number
"
,
desc
:
"排序"
},
name
:{
typs
:
"String"
,
desc
:
"名称"
},
position
:{
type
:
"String"
,
desc
:
"职位"
},
imgUrl
:{
type
:
"String"
,
desc
:
"大图地址"
},
...
...
@@ -88,7 +88,7 @@ export const Config = {
param
:[
{
key
:
"form"
,
type
:
"Object"
,
sub
:
{
rank
:{
type
:
"
String
"
,
desc
:
"排序"
},
rank
:{
type
:
"
Number
"
,
desc
:
"排序"
},
name
:{
typs
:
"String"
,
desc
:
"名称"
},
position
:{
type
:
"String"
,
desc
:
"职位"
},
imgUrl
:{
type
:
"String"
,
desc
:
"大图地址"
},
...
...
src/util/verificationParam.ts
View file @
212a2401
...
...
@@ -209,6 +209,16 @@ export function eccReqParamater(apiName:string, conf:object, param, skipKeys?) {
}
break
;
case
'[String]'
:
if
(
!
Array
.
isArray
(
param
[
key
])
)
isError
=
true
;
for
(
let
i
=
0
;
i
<
param
[
key
].
length
;
i
++
)
{
let
item
=
param
[
key
][
i
];
if
(
typeof
item
!=
'string'
)
{
isError
=
true
;
errorStr
=
`
${
key
}
应是string型数组其中下标
${
i
}
是
${
typeof
item
}
`
;
}
}
break
;
}
errorStr
=
isError
&&
errorStr
==
""
?
`
${
key
}
应该是
${
confType
}
型 而不是
${
valueType
}
`
:
errorStr
;
if
(
isError
)
throw
new
BizError
(
ERRORENUM
.
参数错误
,
apiName
,
errorStr
);
...
...
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