Commit b36b4141 by lixinming

no message

parent a9942723
......@@ -2,7 +2,7 @@
* 会员管理 【权限管理】success
*/
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findOnce, findToPage } from "../../data/select";
......@@ -16,31 +16,39 @@ import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
/**
* 会员权限列表 success
* @param unitName 单位名称
* @param unitName 单位名称//改成了名称关键词
* @param memberLevel 会员等级、职务 MEMBERLEVEL
* @param memberCategory 会员类别、会员级别 UNITMEMBERTYPE、INDIVIDUALMEMBERTYPE 前端用MEMBERTYPEECCENUM
* @param pageNumber 当前页
*/
export async function getAuthority({unitName, memberLevel, memberCategory, pageNumber}) {
/**查询条件 */
let selectParam:any = {isAdmin:STATE.};
if (unitName) selectParam.unitName = unitName;
let selectParam:any = {
isAdmin:STATE.,
userRegisterState : USERREGISTERSTATE.通过,
isBlackUser:STATE.
};
if (unitName) {
selectParam["$or"] =[{unitName:{"$regex":`${unitName}`}}, {name:{"$regex":`${unitName}`}}];
}
if (memberLevel) selectParam.memberLevel = memberLevel;
if (memberCategory) {
if ( memberCategory >= 9) selectParam.unitMemberType = memberCategory;
else selectParam.individualMemberType = memberCategory;
}
const SelectFiles = ["userId", "memberState", "unitName", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType", "memberCategory"];
const SelectFiles = ["userId", "memberState", "unitName", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType", "memberCategory", "name"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, SelectFiles, pageNumber);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
const ResultFiles = ["userId", "memberState", "memberLevel", "memberType", "unitName"];
const ResultFiles = ["userId", "memberState", "memberLevel", "memberType", "unitName", "name"];
let dataList = [];
dbList.forEach(info => {
let item:any = extractData(info, ResultFiles);
if (info.memberType == MEMBERTYPE.个人会员) {
item.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, info.individualMemberType);//会员类别/级别
//会员类别/级别 2024年11月29甘明说的,个人会员这里显示个人会员不显示类别
// item.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, info.individualMemberType);
if (info.individualMemberType == INDIVIDUALMEMBERTYPE.普通会员) item.memberCategory = changeEnumValue(MEMBERTYPE, info.memberType);
else item.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, info.individualMemberType);
}
else{
item.memberCategory = changeEnumValue(UNITMEMBERTYPE, info.unitMemberType);//会员类别/级别
......
......@@ -2,7 +2,7 @@
* 收费
*/
import { MEMBERSTATE, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, WEICHARTPAYSTATE } from "../../config/enum";
import { INVOICESTATUS, MEMBERSTATE, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, WEICHARTPAYSTATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findOnce, findOnceToSort } from "../../data/select";
import * as path from "path";
......@@ -52,8 +52,8 @@ export async function placeAnOrder({id}) {
description:desc,
out_trade_no,//订单号
amount:{//金额
total:orderInfo.money * 100 //微信支付的单位是分 金额要乘100
// total:1
// total:orderInfo.money * 100 //微信支付的单位是分 金额要乘100
total:1
},
notify_url:systemConfig.weChartNotifyUrl,//订单回调
};
......@@ -141,7 +141,8 @@ export async function payCallback(body) {
payTime:new Date().valueOf(),
weChartState:WEICHARTPAYSTATE.已支付,
confirmReceipt:RECEIPTCONFIRMATION.收款确认,
confirmReceiptMs:new Date().valueOf()
confirmReceiptMs:new Date().valueOf(),
invoiceStatus:INVOICESTATUS.未开发票
};
await updateOneData(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}, updateInfo);
......@@ -159,7 +160,7 @@ export async function payCallback(body) {
updateUserInfo.isGracePeriod = STATE.,
updateUserInfo.gracePeriodEndTime = 0,
updateUserInfo.memberState = MEMBERSTATE.正常,
updateUserInfo.paymentStatus = PAYMENTSTATUS.已支付
updateUserInfo.paymentStatus = PAYMENTSTATUS.已支付
} else {//非一笔订单 要更新会员到期时间 到 用户表
updateUserInfo.lifespanStartTime = oldInfo.orderCycleStart;
updateUserInfo.lifespanEndTime = oldInfo.orderCycleEnd;
......
......@@ -267,7 +267,9 @@ export async function reject({id, remarks}) {
/**驳回修改,修改该会员注册流程回到第二步 */
let updateParam = {
userRegisterState:USERREGISTERSTATE.驳回修改,
registerFlow:REGISTERFLOW.完成第一步
registerFlow:REGISTERFLOW.完成第一步,
firstStep:new Date().valueOf(),
saveUnsubmitted:STATE.
}
await updateOneData(TABLEENUM.用户表, {userId}, updateParam);
......
......@@ -17,6 +17,30 @@ import { addOneData } from "../../data/add";
/**
* 导出会费管理表格
* @param param0
*/
export async function outPutDataForExcel({type, files}) {
if (type == 1) {
//未缴费名单
} else if (type == 2) {
//已缴费名单
} else if (type == 3) {
//缴费期名单
} else {
//宽限期名单
}
return {dataList:[["测试", "测试2"]]};
}
/**
* 已缴费列表 success
* @param name 名称关键字:个人会员匹配真实姓名,单位会员匹配单位名称
* @param memberType 会员类别 unitMemberType、individualMemberType 多选
......@@ -53,7 +77,7 @@ export async function getPaid({name, memberType, documentId, phone, mail, joinSt
selectParam.unitMemberType = {"$in":memberType};
}
}
if (documentId) selectParam.documentId = documentId;
if (documentId) selectParam.documentId = documentId;
if (phone) selectParam.phone = phone;
if (mail) selectParam.mail = mail;
if (joinStartTime) {
......
......@@ -343,7 +343,7 @@ export async function outPutConfirmReceipt({exportColumns}) {
let dataList = [selectTitle];
for (let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "documentId", "uscc", "mail", "unitMail"]);
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "documentId", "uscc", "mail", "unitMail", "memberLevel", "phone"]);
let subList = [];
for (let i = 0; i < selectConf.length; i++) {
let key = selectConf[i];
......@@ -390,6 +390,7 @@ export async function confirmReceiptHistory({id}) {
let dbList = await find(TABLEENUM.订单审批历史表, {orderId:id});
let dataList = [];
dbList.sort((a, b) => {return b.operationTime- a.operationTime});
dbList.forEach(info => {
let item:any = extractData(info, ["operationTime", "operationBehavior", "remarks", "refundImgUrl"]);
item.operationTime = moment(item.operationTime).format("YYYY-MM-DD HH:mm:SS");
......@@ -557,7 +558,7 @@ export async function backInvoice({id}) {
let dataList = [selectTitle];
for (let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "documentId", "uscc", "mail", "unitMail"]);
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "documentId", "uscc", "mail", "unitMail", "memberLevel", "phone"]);
let subList = [];
for (let i = 0; i < selectConf.length; i++) {
let key = selectConf[i];
......@@ -607,6 +608,7 @@ export async function billStateHistory({id}) {
let dbList = await find(TABLEENUM.订单审批历史表, {orderId:id});
let dataList = [];
dbList.sort((a, b) => {return b.operationTime- a.operationTime});
dbList.forEach(info => {
let item:any = extractData(info, ["operationTime", "operationBehavior", "remarks", "refundImgUrl"]);
item.operationTime = moment(item.operationTime).format("YYYY-MM-DD HH:mm:SS");
......@@ -749,7 +751,7 @@ export async function invoicedList({name, memberType, documentId, phone, mail, j
let dataList = [selectTitle];
for (let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "documentId", "uscc", "mail", "unitMail"]);
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "documentId", "uscc", "mail", "unitMail", "memberLevel", "phone"]);
let subList = [];
for (let i = 0; i < selectConf.length; i++) {
let key = selectConf[i];
......@@ -796,6 +798,7 @@ export async function invoicedHistory({id}) {
let dbList = await find(TABLEENUM.订单审批历史表, {orderId:id});
let dataList = [];
dbList.sort((a, b) => {return b.operationTime- a.operationTime});
dbList.forEach(info => {
let item:any = extractData(info, ["operationTime", "operationBehavior", "remarks", "refundImgUrl"]);
item.operationTime = moment(item.operationTime).format("YYYY-MM-DD HH:mm:SS");
......@@ -1173,7 +1176,7 @@ export async function refundApprove({id, refundImgUrl}) {
let dataList = [selectTitle];
for (let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName"]);
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState", "name", "unitName", "memberLevel", "phone"]);
let subList = [];
for (let i = 0; i < selectConf.length; i++) {
let key = selectConf[i];
......@@ -1193,6 +1196,7 @@ export async function refundApprove({id, refundImgUrl}) {
if (value) {
if (timeChnageList.indexOf(key) != -1) value = moment(value).format("YYYY-MM-DD");
else if (key == "memberCategory") value = changeEnumValue(MEMBERTYPE, value);
else if (key == "memberLevel") value = changeEnumValue(MEMBERLEVEL, value);
}
subList.push(value);
}
......
......@@ -2,7 +2,7 @@
* 用户逻辑
*/
import { ADMINTYPE, CODETYPE, MEMBERSTATE, STATE, USERREGISTERSTATE } from "../../config/enum";
import { ADMINTYPE, CODETYPE, MEMBERSTATE, REGISTERSTART, STATE, USERREGISTERSTATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { addOneData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model";
......@@ -136,4 +136,3 @@ export async function memberChangePwdSendCode({phone}) {
return {code:""};
}
......@@ -103,6 +103,7 @@ export async function getSession() {
value:(i*100)+7
});
}
session.sort( (a, b) => {return b.value- a.value});
return {session}
}
......
......@@ -2,7 +2,7 @@
* 注册流程 success
*/
import { BANXUELEIXING, CODETYPE, DOCUMENTTYPE, INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, OPERATIONREHAVIOR, PROFCATEGORY, REGISTERFLOW, SEX, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../config/enum";
import { BANXUELEIXING, CODETYPE, DOCUMENTTYPE, INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, OPERATIONREHAVIOR, PROFCATEGORY, REGISTERFLOW, REGISTERSTART, SEX, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../config/enum";
import { ERRORENUM } from "../config/errorEnum";
import { addManyData, addOneData } from "../data/add";
import { deleteManyData, deleteOneData } from "../data/delete";
......@@ -17,6 +17,33 @@ import { changeEnumValue, eccEnumValue } from "../util/verificationEnum";
import { eccFormParam } from "../util/verificationParam";
import { sendALSMS } from "./sms";
/**
* 注册状态
*/
let RegisterStartQueue = false;
export async function updateRegisterStart({start}) {
let updateInfo = "";
if (start == true) {
RegisterStartQueue = true;
updateInfo = "true";
} else {
RegisterStartQueue = false;
updateInfo = "false";
}
await updateOneData(TABLEENUM.系统表, {key:"注册开放时间"}, {value:updateInfo});
return {isSuccess:true}
}
export function updateRegisterStartQueue(start) {
RegisterStartQueue = start;
}
export function findRegisterStart() {
return {data:RegisterStartQueue}
}
/**
* 会员注册【个人会员】【流程一】success
......
......@@ -4,6 +4,8 @@ import { TABLEENUM } from "../data/models/model";
import { find, findCount, findOnce, findOnceToSort } from "../data/select";
import { createOrder } from "./member/order";
import { updateOneData } from "../data/update";
import { addOneData } from "../data/add";
import { updateRegisterStartQueue } from "./register";
/**
* 初始化任务
......@@ -17,6 +19,23 @@ export async function initSystemTask() {
await createUserOrder();
}, 24 * 3600 * 1000);
//注册状态
let registerStart = await findOnce(TABLEENUM.系统表, {key:"注册开放时间"});
if (!registerStart || !registerStart.key) {
addOneData(TABLEENUM.系统表, {key:"注册开放时间", value:"true"});
} else {
//现有的
if (registerStart.value == "true") {
updateRegisterStartQueue(true);
}
else if (registerStart.value == "false") {
updateRegisterStartQueue(false);
}
}
console.log(`systemTask init success`);
}
......
......@@ -799,7 +799,10 @@ export enum CHANGEAPPLYTYPE {
}
export enum REGISTERSTART {
关闭注册 = 1,
开放注册
}
......
......@@ -67,7 +67,8 @@ export enum ERRORENUM {
该类型退款无需确认,
注册信息待补充,
超出可申请范围,
权限错误
权限错误,
注册已暂时关闭,
}
export enum ERRORCODEENUM {
......@@ -77,7 +78,8 @@ export enum ERRORCODEENUM {
code无效 = 40029,
频繁操作请稍后再试 = 45011,
高风险等级用户 = 40226,
系统繁忙 = 40227
系统繁忙 = 40227,
黑名单用户不允许登录 = 40228
}
let bizErrorMsgMap = {};
......
......@@ -83,6 +83,8 @@ export enum CONFIRMRECEIPTCOLUMNS {
发票邮箱 = "invoiceMail",
"单位/个人邮箱" = "mail",
提交时间 = "operationTime", //上传转账凭证的时间
会员职务 = "memberLevel",
注册手机号="phone"
}
......@@ -102,7 +104,9 @@ export enum BILLSTATECOLUMNS {
"单位/个人邮箱" = "mail",
审核时间 = "confirmReceiptMs", //什么时候从费用核对通过审核时间
提交时间 = "operationTime", //上传转账凭证的时间
支付时间 = "payTime" //微信支付的时间
支付时间 = "payTime", //微信支付的时间
会员职务 = "memberLevel",
注册手机号="phone"
}
......@@ -122,7 +126,9 @@ export enum INVOICEDCOLUMNS {
"单位/个人邮箱" = "mail",
审核时间 = "confirmReceiptMs", //什么时候从费用核对通过审核时间
提交时间 = "operationTime", //上传转账凭证的时间
支付时间 = "payTime" //微信支付的时间
支付时间 = "payTime", //微信支付的时间
会员职务 = "memberLevel",
注册手机号="phone"
}
......@@ -137,12 +143,22 @@ export enum REFUNDCOLUMNS {
所缴周期 = "orderCycle",
退款金额 = "money",
退款账号 = "refundBankCarId",
开户行 = "refundBankName"
开户行 = "refundBankName",
会员职务 = "memberLevel",
注册手机号="phone"
}
//会费管理
export enum MEMBERFEESDCOLUMNS {
状态 = "memberState",
会员类别 = "memberType",
"单位/个人名称" = "name" ,
会员职务 = "memberLevel",
入会时间 = "joinTime",
缴费金额 = "Money",
"欠费年限/份" = "duration"
}
......
......@@ -94,7 +94,8 @@ enum TABLEENUM {
消息已读状态表 = "massageReads",
活动通知表 = "activityNotice",
活动报名表 = "activityEnroll",
理事变更审批历史表 = "applyHistoryList"
理事变更审批历史表 = "applyHistoryList",
系统表 = "systemConfig"
}
......@@ -630,6 +631,14 @@ const ModelArray = [
rejectRemarks:'String',//变更理事驳回理由
}
},
{
tableName:TABLEENUM.系统表,
source:TABLESOURCEENUM.mongo,
schema:{
key:{type:'String', index:true},//键
value:{type:'String', index:true},//值
}
},
];
......
......@@ -13,14 +13,19 @@ export function httpErrorHandler(err, req, res, next) {
//todo 自定义错误编码
if (err) {
if ( ERRORCODEENUM[err.message] ) {
res.success({success:false, msg:err.message, code:ERRORCODEENUM[err.message]});
let resultData = {success:false, msg:err.message, code:ERRORCODEENUM[err.message]};
if ( err.message == "黑名单用户不允许登录") {
resultData.msg = "您的会员服务已过期,如需恢复请联系秘书处:010-86208681";
}
res.success(resultData);
next();
}
else {
let resultData = {success:false, msg:err.message, code:500};
if ( resultData.msg == "黑名单用户不允许登录") {
resultData.msg = "您的会员服务已过期,如需恢复请联系秘书处:010-86208681";
}
// if ( resultData.msg == "黑名单用户不允许登录") {
// resultData.msg = "您的会员服务已过期,如需恢复请联系秘书处:010-86208681";
// }
res.success(resultData);
next();
......
......@@ -5,6 +5,7 @@ import { findOnce } from "../data/select";
import { updateOneData } from "../data/update";
import { BizError } from "../util/bizError";
import { STATE } from "../config/enum";
/**
* 中间件
......@@ -26,6 +27,10 @@ export async function checkUser(req, res, next) {
if (userInfo.token != reqToken) return next(new BizError(ERRORENUM.身份验证过期));
if (userInfo.isBlackUser == STATE.) {
return next(new BizError(ERRORENUM.黑名单用户不允许登录));
}
let checkToken = '';
//30分钟更新token
if ( (userInfo.tokenMs - new Date().valueOf()) >= (30 * 60 * 1000) ) {
......
......@@ -14,6 +14,13 @@ export const FirstRouter = '/manage/member';
export const Config = {
"用户注册":[
{
apiName:"是否开放注册",
notMiddleware:true,
subUrl:'/memberdb/memberregister/isopen',
param:[],
bindBiz:registerBiz.findRegisterStart
},
{
apiName:"个人入会流程1",
notMiddleware:true,
subUrl:'/memberdb/memberregister1',
......@@ -520,6 +527,14 @@ export const Config = {
],
"审批管理":[
{
apiName:"开放或关闭注册",
subUrl:'/examine/user/register/changestart',
param:[
{key:"start", type:"Boolean", desc:"是否开放注册"},
],
bindBiz:registerBiz.updateRegisterStart
},
{
apiName:"待审核列表",
subUrl:'/examine/pendingreview',
param:[
......@@ -578,6 +593,16 @@ export const Config = {
],
"会费管理":[
{
apiName:"会费管理导出",
subUrl:'/memberfees/outputdata',
param:[
{key:"type", type:"Number", desc:"导出类型"},
{key:"exportColumns", type:"[]", desc:"导出数据列"}
],
bindBiz:memberFeesBiz.outPutDataForExcel
},
{
apiName:"已缴费名单列表",
subUrl:'/memberfees/paid',
param:[
......
......@@ -343,6 +343,13 @@ export const Config = {
param:[],
defaultParam:outPutConfig.REFUNDCOLUMNS,
bindBiz:publicBiz.setEnumInterface
},
{
apiName:"会费管理-列表导出",
subUrl:'/memberfeesdcolumns',
param:[],
defaultParam:outPutConfig.MEMBERFEESDCOLUMNS,
bindBiz:publicBiz.setEnumInterface
}
],
......
......@@ -21,7 +21,7 @@ import * as msgActivityRouter from "./msgActivity/router";
import * as applyRouter from "./apply/router";
import * as asyncHandler from 'express-async-handler';
import { payCallback } from "../biz/member/cost";
import { checkUser, checkPermission, notCheck } from "../middleware/user";
import { checkUser } from "../middleware/user";
import { ADMINLV } from "../config/enum";
const Look = false;//true更新文档
......@@ -30,8 +30,8 @@ export async function setRouter(httpServer){
if (Look) {
await getDoc();
// await initDoc(portalRouter.FirstName, portalRouter.Config, portalRouter.FirstRouter);//网站编辑
// await initDoc(publicRouter.FirstName, publicRouter.Config, publicRouter.FirstRouter);//公用组件
// await initDoc(memberRouter.FirstName, memberRouter.Config, memberRouter.FirstRouter);//用户路由
await initDoc(publicRouter.FirstName, publicRouter.Config, publicRouter.FirstRouter);//公用组件
await initDoc(memberRouter.FirstName, memberRouter.Config, memberRouter.FirstRouter);//用户路由
// await initDoc(officalWebsiteRouter.FirstName, officalWebsiteRouter.Config, officalWebsiteRouter.FirstRouter);//官网路由
// await initDoc(orderRouter.FirstName, orderRouter.Config, orderRouter.FirstRouter);//会费相关
// await initDoc(costRouter.FirstName, costRouter.Config, costRouter.FirstRouter);//支付
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment