Commit 4d4cca22 by lixinming

Merge branch 'master' of http://123.207.147.179:8888/node_server/wenHuaBu_adminServer

# Conflicts:
#	src/config/errorEnum.ts
#	src/routers/public/router.ts
parents f92dc309 ed379596
/**
* 会员管理
*/
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, UNITMEMBERTYPE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findOnce, findToPage } from "../../data/select";
import { updateOneData } from "../../data/update";
import { successResult } from "../../tools/system";
import { BizError } from "../../util/bizError";
import { extractData } from "../../util/piecemeal";
import { changeEnumValue } from "../../util/verificationEnum";
/**
* 会员权限列表
* @param unitName 单位名称
* @param memberLevel 会员等级、职务 MEMBERLEVEL
* @param memberCategory 会员类别、会员级别 UNITMEMBERTYPE、INDIVIDUALMEMBERTYPE
* @param pageNumber 当前页
*/
export async function getAuthority({unitName, memberLevel, memberCategory, pageNumber}) {
let selectParam:any = {};
if (unitName) selectParam.unitName = unitName;
if (memberLevel) selectParam.memberLevel = memberLevel;
if (memberCategory || memberCategory>=9) selectParam.unitMemberType = memberCategory;
if (memberCategory || memberCategory<9) selectParam.individualMemberType = memberCategory;
let selectConf = ["userId", "memberState", "unitName", "memberLevel"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, [], pageNumber, 10);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
let dataList = [];
dbList.forEach(info => {
if (info.memberType == MEMBERTYPE.个人会员) {
selectConf.push("individualMemberType");
} else {
selectConf.push("unitMemberType");
}
let item:any = extractData(info, selectConf);
item.memberState = changeEnumValue(MEMBERSTATE, item.memberState);
item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
if(item.individualMemberType) item.individualMemberType = changeEnumValue(INDIVIDUALMEMBERTYPE, item.individualMemberType);
if(item.unitMemberType) item.unitMemberType = changeEnumValue(UNITMEMBERTYPE, item.unitMemberType);
dataList.push(item);
});
return {dataList, dataCount};
}
/**
* 变更权限
* @param param0
*/
export async function updateAuthority({form, userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
await updateOneData(TABLEENUM.用户表, {userId}, form);
return successResult();
}
/**
* 冻结
* @param param0
*/
export async function freeze({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
await updateOneData(TABLEENUM.用户表, {userId}, {memberState:MEMBERSTATE.冻结});
return successResult();
}
...@@ -2,17 +2,26 @@ ...@@ -2,17 +2,26 @@
* 审批逻辑 * 审批逻辑
*/ */
import { MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, USERREGISTERSTATE } from "../../config/enum"; import { MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, OPERATIONREHAVIOR, PAYMENTSTATUS, REGISTERFLOW, USERREGISTERSTATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { addManyData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
import { findCount, findToPage } from "../../data/select"; import { find, findCount, findOnce, findToPage } from "../../data/select";
import { updateOneData } from "../../data/update";
import { generateSystemId, successResult } from "../../tools/system";
import { BizError } from "../../util/bizError";
import { extractData } from "../../util/piecemeal"; import { extractData } from "../../util/piecemeal";
import { changeEnumValue } from "../../util/verificationEnum"; import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
/** /**
* 待审核 * 待审核列表
* @param param0 * @param param0
*/ */
export async function auditList({unitName, joinTime, memberType, sheng, shi, qu, pageNumber}) { export async function pendingReviewList({unitName, joinTime, memberType, sheng, shi, qu, pageNumber}) {
/**校验枚举 */
const EccFuncName = '待审核列表';
eccEnumValue(EccFuncName, '会员类型', MEMBERTYPE, memberType);
let selectParam:any = {}; let selectParam:any = {};
if (unitName) selectParam.unitName = unitName; if (unitName) selectParam.unitName = unitName;
if (joinTime) selectParam.joinTime = joinTime; if (joinTime) selectParam.joinTime = joinTime;
...@@ -29,9 +38,9 @@ export async function auditList({unitName, joinTime, memberType, sheng, shi, qu, ...@@ -29,9 +38,9 @@ export async function auditList({unitName, joinTime, memberType, sheng, shi, qu,
let dataList = []; let dataList = [];
dbList.forEach(info => { dbList.forEach(info => {
let item:any = extractData(info, selectConf); let item:any = extractData(info, selectConf);
changeEnumValue(USERREGISTERSTATE, item.userRegisterState); if (!item.userRegisterState) item.userRegisterState = "待审核";
if (!item.memberLevel) item.memberLevel = "未选择"; else item.userRegisterState = changeEnumValue(USERREGISTERSTATE, item.userRegisterState);
else changeEnumValue(MEMBERLEVEL, item.memberLevel); item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
dataList.push(item); dataList.push(item);
}); });
...@@ -39,50 +48,148 @@ export async function auditList({unitName, joinTime, memberType, sheng, shi, qu, ...@@ -39,50 +48,148 @@ export async function auditList({unitName, joinTime, memberType, sheng, shi, qu,
} }
/**
* 通过审核
* @param param0
* @returns
*/
export async function adopt({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
await updateOneData(TABLEENUM.用户表, {userId}, {userRegisterState:USERREGISTERSTATE.通过});
let now = new Date().valueOf();
let addApprovalHistory = {
id:generateSystemId(TABLEENUM.审批历史表, userId),
userId,
operationTime:now,
operationBehavior:OPERATIONREHAVIOR.通过,
remarks:""
};
await addManyData(TABLEENUM.审批历史表, addApprovalHistory);
return successResult();
}
/**
* 驳回
* @param param0
* @returns
*/
export async function reject({userId, remarks}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
await updateOneData(TABLEENUM.用户表, {userId}, {userRegisterState:USERREGISTERSTATE.驳回修改});
let selectParam = {};
if (oldInfo.memberType == MEMBERTYPE.个人会员) {
selectParam = {registerFlow:REGISTERFLOW.个人会员注册2}
} else {
selectParam = {registerFlow:REGISTERFLOW.单位会员注册2}
}
await updateOneData(TABLEENUM.用户表, {userId}, selectParam);
let now = new Date().valueOf();
let addApprovalHistory = {
id:generateSystemId(TABLEENUM.审批历史表, userId),
userId,
operationTime:now,
operationBehavior:OPERATIONREHAVIOR.驳回修改,
remarks
};
await addManyData(TABLEENUM.审批历史表, addApprovalHistory);
return successResult();
}
/**
* 审核历史
*/
export async function approvalHistoryList({userId}) {
let oldInfo = await find(TABLEENUM.审批历史表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let dataList:any = extractData(oldInfo, ["operationTime", "operationBehavior", "remarks"]);
dataList.operationBehavior = changeEnumValue(OPERATIONREHAVIOR, dataList.operationBehavior);
return dataList;
}
/**
* 待支付列表
*/
export async function toBePaidList({unitName, joinTime, memberType, paymentStatus, pageNumber}) {
/**校验枚举 */
const EccFuncName = '待审核列表';
eccEnumValue(EccFuncName, '会员类型', MEMBERTYPE, memberType);
let selectParam:any = {};
if (unitName) selectParam.unitName = unitName;
if (joinTime) selectParam.joinTime = joinTime;
if (memberType) selectParam.memberType = memberType;
if (paymentStatus) selectParam.paymentStatus = paymentStatus;
let selectConf = ["userId", "状态", "unitName", "loginId", "phone", "joinTime", "memberType", "lifespanStartTime", "lifespanEndTime", "paymentStatus"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, selectConf, pageNumber);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
let dataList = [];
dbList.forEach(info => {
let item:any = extractData(info, selectConf);
item.memberType = changeEnumValue(MEMBERTYPE, item.memberType);
item.paymentStatus = changeEnumValue(PAYMENTSTATUS, item.paymentStatus);
dataList.push(item);
});
return {dataList, dataCount};;
}
/**
* 待支付通过
* @param param0
* @returns
*/
export async function passThroughPaid({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
await updateOneData(TABLEENUM.用户表, {userId}, {paymentStatus:PAYMENTSTATUS.已支付});
return successResult();
}
/**
* 获取届次
* @param year 入会年份
* @param month 入会月份
* @returns
*/
export async function getEdition(year, month) {
//起始年份和月份
const startYear = 2018;
const startMonth = 1;
let currentYear = new Date().getFullYear();
if (year > currentYear) throw new BizError(ERRORENUM.无法获取未来届次);
//计算从起始时间给定时间的总月份数
let totalMonth = (year - startYear) * 12 + month;
//每届是6个月
let sessions = Math.ceil(totalMonth / 6);
//每10届一次
let times = Math.ceil(sessions / 10);
let sessionNumber = sessions - (times - 1) * 10 //届次是从第一次第一届开始,所以需要减一
return {frequency:"第"+times+"次", session:"第"+sessionNumber+"届"};
}
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* 会员逻辑 * 会员逻辑
*/ */
import { MEMBERSTATE, MEMBERLEVEL, DOCUMENTTYPE, NATION, PROFCATEGORY, CODETYPE, UNITINFOTYPE, MEMBERTYPE, REGISTERFLOW, SEX, USERREGISTERSTATE } from "../../config/enum"; import { MEMBERSTATE, MEMBERLEVEL, DOCUMENTTYPE, NATION, PROFCATEGORY, CODETYPE, UNITINFOTYPE, MEMBERTYPE, REGISTERFLOW, SEX, USERREGISTERSTATE, OPERATIONREHAVIOR } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum"; import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findToPage } from "../../data/select"; import { find, findCount, findOnce, findToPage } from "../../data/select";
...@@ -19,14 +19,22 @@ import { deleteManyData, deleteOneData } from "../../data/delete"; ...@@ -19,14 +19,22 @@ import { deleteManyData, deleteOneData } from "../../data/delete";
/** /**
* 单位会员列表 * 单位会员列表
* @param param0 * @param unitName 单位名称
* @param joinTime 入会时间
* @param unitMemberType 单位会员所属类型 UNITMEMBERTYPE
* @param memberLevel 会员等级 职务 MEMBERLEVEL
* @param session 届次
* @param sheng 省
* @param shi 市
* @param qu 区
* @param pageNumber 当前页
*/ */
export async function unitMemberList({unitName, joinTime, unitMemberType, workDuties, session, sheng, shi, qu, pageNumber}) { export async function unitMemberList({unitName, joinTime, unitMemberType, memberLevel, session, sheng, shi, qu, pageNumber}) {
let selectParam:any = {}; let selectParam:any = {};
if (unitName) selectParam.unitName = unitName; if (unitName) selectParam.unitName = unitName;
if (joinTime) selectParam.joinTime = joinTime; if (joinTime) selectParam.joinTime = joinTime;
if (unitMemberType) selectParam.unitMemberType = unitMemberType; if (unitMemberType) selectParam.unitMemberType = unitMemberType;
if (workDuties) selectParam.workDuties = workDuties; if (memberLevel) selectParam.memberLevel = memberLevel;
if (session) selectParam.session = session; if (session) selectParam.session = session;
if (sheng) selectParam.sheng = sheng; if (sheng) selectParam.sheng = sheng;
if (shi) selectParam.shi = shi; if (shi) selectParam.shi = shi;
...@@ -41,9 +49,9 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, workDu ...@@ -41,9 +49,9 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, workDu
let dataList = []; let dataList = [];
dbList.forEach(info => { dbList.forEach(info => {
let item:any = extractData(info, selectConf); let item:any = extractData(info, selectConf);
changeEnumValue(MEMBERSTATE, item.memberState); item.memberState = changeEnumValue(MEMBERSTATE, item.memberState);
if (!item.memberLevel) item.memberLevel = "未选择"; if (!item.memberLevel) item.memberLevel = "未选择";
else changeEnumValue(MEMBERLEVEL, item.memberLevel); else item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
dataList.push(item); dataList.push(item);
}); });
...@@ -57,18 +65,17 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, workDu ...@@ -57,18 +65,17 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, workDu
* @returns {顶部数据, 基本信息, 单位信息, 单位所获得科研成果} * @returns {顶部数据, 基本信息, 单位信息, 单位所获得科研成果}
*/ */
const UnitBasicConfig = ["userId", "unitName", "addres", "officialWebsite", "uscc", "legalPerson", "legalPersonPhone", "gongZhongHao", const UnitBasicConfig = ["userId", "unitName", "addres", "uscc", "legalPerson", "legalPersonPhone", "contactPerson", "contactPersonDuties", "sheng", "shi", "qu",
"unitPhone", "contactPerson", "contactPersonDuties", "sheng", "shi", "qu", "uusinessLicenseUrl", "personInChargeDesc"]; "uusinessLicenseUrl", "education"];
const UnitConfig = ["unitInfoType", "yuanXiaoBanXueLeiXing", "yuanXiaoZhuGuanBuMen", "yuanXiaoFuZeRen", "yuanXiaoFuZeRenZhiWu", const UnitConfig = ["unitInfoType", "yuanXiaoBanXueLeiXing", "yuanXiaoZhuGuanBuMen", "yuanXiaoFuZeRen", "yuanXiaoFuZeRenZhiWu", "yuanXiaoFuZeRenDianHua",
"yuanXiaoFuZeRenDianHua", "yuanXiaoBanGongFuZeRen", "yuanXiaoBanGongFuZeRenZhiWu", "yuanXiaoBanGongFuZeRenDianHua", "yuanXiaoKeYanFuZeRen", "yuanXiaoBanGongFuZeRenZhiWu", "yuanXiaoBanGongFuZeRenDianHua", "yuanXiaoXueShengZongRenShu", "yuanXiaoJiaoZhiGongZongRenShu", "yuanXiaoJianZhuMianJi",
"yuanXiaoKeYanFuZeRenZhiWu", "yuanXiaoKeYanFuZeRenDianHua", "yuanXiaoXueShengZongRenShu", "yuanXiaoJiaoZhiGongZongRenShu", "yuanXiaoJianZhuMianJi", "yuanXiaoKeYanFuZeRen", "yuanXiaoKeYanFuZeRenDianHua", "jiaoXueFuZeRenXinMing", "jiaoXueFuZeRenDianHua", "ZhuYaoFuZeRenYouXiang"];
"yuanXiaoGaoJiZhiCheng", "yuanXiaoKaiSheZhuanYe"];
export async function unitMemberDetails({userId}) { export async function unitMemberDetails({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}); let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let topInfo:any = extractData(oldInfo, ["session", "memberLevel"]); let topInfo:any = extractData(oldInfo, ["session", "memberLevel"]);
changeEnumValue(MEMBERLEVEL, topInfo.memberLevel); topInfo.memberLevel = changeEnumValue(MEMBERLEVEL, topInfo.memberLevel);
let basicInfo = extractData(oldInfo, UnitBasicConfig); let basicInfo = extractData(oldInfo, UnitBasicConfig);
let unitInfo = extractData(oldInfo, UnitConfig); let unitInfo = extractData(oldInfo, UnitConfig);
...@@ -89,8 +96,8 @@ export async function unitMemberUpdate({form, keyanForm, userId}) { ...@@ -89,8 +96,8 @@ export async function unitMemberUpdate({form, keyanForm, userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}); let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
/**校验枚举 */ /**校验枚举 */
changeEnumValue(UNITINFOTYPE, form.unitInfoType); const EccFuncName = '单位会员修改';
changeEnumValue(UNITINFOTYPE, form.unitInfoType); eccEnumValue(EccFuncName, '单位信息类型', UNITINFOTYPE, form.unitInfoType);
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
...@@ -163,13 +170,13 @@ export async function memberRegisterSendCode({loginId, phone, codeType}) { ...@@ -163,13 +170,13 @@ export async function memberRegisterSendCode({loginId, phone, codeType}) {
* 个人会员列表 * 个人会员列表
* @param param0 * @param param0
*/ */
export async function individualMemberList({name, documentId, phone, memberLevel, workDuties, session, joinTime, auditTime, memberState, pageNumber}) { export async function individualMemberList({name, documentId, phone, individualMemberType, memberLevel, session, joinTime, auditTime, memberState, pageNumber}) {
let selectParam:any = {}; let selectParam:any = {};
if (name) selectParam.name = name; if (name) selectParam.name = name;
if (documentId) selectParam.documentId = documentId; if (documentId) selectParam.documentId = documentId;
if (phone) selectParam.phone = phone; if (phone) selectParam.phone = phone;
if (individualMemberType) selectParam.individualMemberType = individualMemberType;
if (memberLevel) selectParam.memberLevel = memberLevel; if (memberLevel) selectParam.memberLevel = memberLevel;
if (workDuties) selectParam.workDuties = workDuties;
if (session) selectParam.session = session; if (session) selectParam.session = session;
if (joinTime) selectParam.joinTime = joinTime; if (joinTime) selectParam.joinTime = joinTime;
if (auditTime) selectParam.auditTime = auditTime; if (auditTime) selectParam.auditTime = auditTime;
...@@ -178,15 +185,15 @@ export async function individualMemberList({name, documentId, phone, memberLevel ...@@ -178,15 +185,15 @@ export async function individualMemberList({name, documentId, phone, memberLevel
selectParam.userRegisterState = USERREGISTERSTATE.通过; selectParam.userRegisterState = USERREGISTERSTATE.通过;
let selectConf = ["userId", "memberState", "unitName", "name", "sex", "nation", "loginId", "phone", "joinTime", "memberLevel", "sheng", "shi", "qu"]; let selectConf = ["userId", "memberState", "unitName", "name", "sex", "nation", "loginId", "phone", "joinTime", "memberLevel", "sheng", "shi", "qu"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, selectConf, pageNumber, 10); let dbList = await findToPage(TABLEENUM.用户表, selectParam, selectConf, pageNumber);
let dataCount = await findCount(TABLEENUM.用户表, selectParam); let dataCount = await findCount(TABLEENUM.用户表, selectParam);
let dataList = []; let dataList = [];
dbList.forEach(info => { dbList.forEach(info => {
let item:any = extractData(info, selectConf); let item:any = extractData(info, selectConf);
changeEnumValue(MEMBERSTATE, item.memberState); item.memberState = changeEnumValue(MEMBERSTATE, item.memberState);
if (!item.memberLevel) item.memberLevel = "未选择"; if (!item.memberLevel) item.memberLevel = "未选择";
else changeEnumValue(MEMBERLEVEL, item.memberLevel); else item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
dataList.push(item); dataList.push(item);
}); });
...@@ -201,21 +208,21 @@ export async function individualMemberList({name, documentId, phone, memberLevel ...@@ -201,21 +208,21 @@ export async function individualMemberList({name, documentId, phone, memberLevel
*/ */
const IndividualBasicConfig = ["name", "sex", "nation", "birth", "documentType", "documentId", "sheng", "shi", "qu", "addres", "photoUrl"]; const IndividualBasicConfig = ["name", "sex", "nation", "birth", "documentType", "documentId", "sheng", "shi", "qu", "addres", "photoUrl"];
const SpecialityConfig = ["unitName", "workDuties", "workTitle", "profCategory", "studyResume", "workResume", "profAchievement", "otherEMP", "otherPROF"]; const SpecialityConfig = ["unitName", "memberLevel", "workTitle", "profCategory", "studyResume", "workResume", "profAchievement", "otherEMP", "otherPROF"];
export async function individualMemberDetails({userId}) { export async function individualMemberDetails({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}); let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let topInfo:any = extractData(oldInfo, ["session", "memberLevel"]); let topInfo:any = extractData(oldInfo, ["session", "memberLevel"]);
changeEnumValue(MEMBERLEVEL, topInfo.memberLevel); topInfo.memberLevel = changeEnumValue(MEMBERLEVEL, topInfo.memberLevel);
let basicInfo:any = extractData(oldInfo, IndividualBasicConfig); let basicInfo:any = extractData(oldInfo, IndividualBasicConfig);
changeEnumValue(DOCUMENTTYPE, basicInfo.documentType); basicInfo.documentType = changeEnumValue(DOCUMENTTYPE, basicInfo.documentType);
changeEnumValue(NATION, basicInfo.nation); basicInfo.nation = changeEnumValue(NATION, basicInfo.nation);
let specialityInfo:any = extractData(oldInfo, SpecialityConfig); let specialityInfo:any = extractData(oldInfo, SpecialityConfig);
changeEnumValue(PROFCATEGORY, basicInfo.profCategory); basicInfo.profCategory = changeEnumValue(PROFCATEGORY, basicInfo.profCategory);
let otherAttachment:any = extractData(oldInfo, ["cardUrl", "academicCERTUrl", "professionalCERTUrl", "auxiliaryMaterial"]); let otherAttachment:any = extractData(oldInfo, ["cardUrl", "academicCERTUrl", "professionalCERTUrl", "auxiliaryMaterial"]);
...@@ -276,10 +283,6 @@ export async function individualMemberDetails({userId}) { ...@@ -276,10 +283,6 @@ export async function individualMemberDetails({userId}) {
await addOneData(TABLEENUM.用户表, form); await addOneData(TABLEENUM.用户表, form);
/**注册成功,返回userId和会员注册流程字段 */
// let oldInfo = await findOnce(TABLEENUM.用户表, {userId:form.userId});
// let dataList = extractData(oldInfo, ["userId", "registerFlow"]);
return successResult(); return successResult();
} }
...@@ -300,12 +303,26 @@ export async function memberRegister2({form, userId}) { ...@@ -300,12 +303,26 @@ export async function memberRegister2({form, userId}) {
eccEnumValue(EccFuncName, '证件类型', DOCUMENTTYPE, form.documentType); eccEnumValue(EccFuncName, '证件类型', DOCUMENTTYPE, form.documentType);
eccEnumValue(EccFuncName, '民族', NATION, form.nation); eccEnumValue(EccFuncName, '民族', NATION, form.nation);
eccEnumValue(EccFuncName, '专业类别', PROFCATEGORY, form.profCategory); eccEnumValue(EccFuncName, '专业类别', PROFCATEGORY, form.profCategory);
eccEnumValue(EccFuncName, '会员等级职务', MEMBERLEVEL, form.memberLevel);
form.registerFlow = REGISTERFLOW.个人会员注册2; //todo 审核成功后修改 form.registerFlow = REGISTERFLOW.个人会员注册2; //todo 审核成功后修改
await updateOneData(TABLEENUM.用户表, {userId}, form); await updateOneData(TABLEENUM.用户表, {userId}, form);
// let unitInfo = await findOnce(TABLEENUM.用户表, {userId}); /**用户提交注册申请,等待审核 */
// let dataList = extractData(unitInfo, ["userId", "registerFlow"]); let approvalHistoryInfo = await find(TABLEENUM.审批历史表, {userId});
let operationBehavior;
if(approvalHistoryInfo.length>1) operationBehavior = OPERATIONREHAVIOR.重新提交;
else operationBehavior = OPERATIONREHAVIOR.用户提交;
let now = new Date().valueOf();
let addApprovalHistory = {
id:generateSystemId(TABLEENUM.审批历史表, userId),
userId,
operationTime:now,
operationBehavior:operationBehavior,
remarks:""
};
await addManyData(TABLEENUM.审批历史表, addApprovalHistory);
return successResult(); return successResult();
} }
...@@ -350,10 +367,6 @@ export async function memberRegister2({form, userId}) { ...@@ -350,10 +367,6 @@ export async function memberRegister2({form, userId}) {
await addOneData(TABLEENUM.用户表, form); await addOneData(TABLEENUM.用户表, form);
/**注册成功,返回userId和会员注册流程字段 */
// let oldInfo = await findOnce(TABLEENUM.用户表, {userId:form.userId});
// let dataList = extractData(oldInfo, ["userId", "registerFlow"]);
return successResult(); return successResult();
} }
...@@ -368,10 +381,10 @@ export async function unitMemberRegister2({form, keyanForm, userId}) { ...@@ -368,10 +381,10 @@ export async function unitMemberRegister2({form, keyanForm, userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}); let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
// form.registerFlow = REGISTERFLOW.单位会员注册2; //todo 审核成功后修改 form.registerFlow = REGISTERFLOW.单位会员注册2;
await updateOneData(TABLEENUM.用户表, {userId}, form); await updateOneData(TABLEENUM.用户表, {userId}, form);
// let unitInfo = await findOnce(TABLEENUM.用户表, {userId}); // let unitInfo = await findOnce(TABLEENUM.用户表, {userId});
// let dataList = extractData(unitInfo, ["userId", "registerFlow"]); // let dataList = extractData(unitInfo, ["userId", "registerFlow"]);
let addList = []; let addList = [];
...@@ -386,19 +399,48 @@ export async function unitMemberRegister2({form, keyanForm, userId}) { ...@@ -386,19 +399,48 @@ export async function unitMemberRegister2({form, keyanForm, userId}) {
} }
/**
* 单位入会流程3
* @param param0
*/
export async function unitMemberRegister3({applicationForm, userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
await updateOneData(TABLEENUM.用户表, {userId}, {applicationForm, registerFlow:REGISTERFLOW.单位会员注册3});
/**用户提交注册申请,等待审核 */
let approvalHistoryInfo = await find(TABLEENUM.审批历史表, {userId});
let operationBehavior;
if(approvalHistoryInfo.length>1) operationBehavior = OPERATIONREHAVIOR.重新提交;
else operationBehavior = OPERATIONREHAVIOR.用户提交;
let now = new Date().valueOf();
let addApprovalHistory = {
id:generateSystemId(TABLEENUM.审批历史表, userId),
userId,
operationTime:now,
operationBehavior:operationBehavior,
remarks:""
};
await addManyData(TABLEENUM.审批历史表, addApprovalHistory);
return successResult();
}
/**
* 下载会员注册表 todo
*/
export async function downloadApplication() {
}
/** /**
* 获取当前会员注册流程 * 获取当前会员注册流程
*/ */
export async function registerFlowType({userId}) { export async function registerFlowType({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}); let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
...@@ -418,43 +460,52 @@ export async function registerFlowType({userId}) { ...@@ -418,43 +460,52 @@ export async function registerFlowType({userId}) {
/** /**
* 模拟审核通过,修改审核状态 * 模拟审核通过,修改审核状态
*/ */
export async function examine({userId}) { // export async function examine({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}); // let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); // if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let memberList:any = extractData(oldInfo, ["userId", "registerFlow", "memberType"]); // let memberList:any = extractData(oldInfo, ["userId", "registerFlow", "memberType"]);
let selectParam = {registerFlow:memberList.registerFlow, userRegisterState:USERREGISTERSTATE.待审核}; // let selectParam = {registerFlow:memberList.registerFlow, userRegisterState:USERREGISTERSTATE.待审核};
if (memberList.memberType == MEMBERTYPE.个人会员) { //个人会员 // if (memberList.memberType == MEMBERTYPE.个人会员) { //个人会员
switch (memberList.registerFlow) { // switch (memberList.registerFlow) {
case REGISTERFLOW.个人会员注册1: // case REGISTERFLOW.个人会员注册1:
selectParam.registerFlow = REGISTERFLOW.个人会员注册2; // selectParam.registerFlow = REGISTERFLOW.个人会员注册2;
break; // break;
case REGISTERFLOW.个人会员注册2: // case REGISTERFLOW.个人会员注册2:
selectParam.userRegisterState = USERREGISTERSTATE.通过; // selectParam.userRegisterState = USERREGISTERSTATE.通过;
break; // break;
} // }
} else { //单位会员 // } else { //单位会员
switch (memberList.registerFlow) { // switch (memberList.registerFlow) {
case REGISTERFLOW.单位会员注册1: // case REGISTERFLOW.单位会员注册1:
selectParam.registerFlow = REGISTERFLOW.单位会员注册2; // selectParam.registerFlow = REGISTERFLOW.单位会员注册2;
break; // break;
case REGISTERFLOW.单位会员注册2: // case REGISTERFLOW.单位会员注册2:
selectParam.registerFlow = REGISTERFLOW.单位会员注册3; // selectParam.registerFlow = REGISTERFLOW.单位会员注册3;
break; // break;
case REGISTERFLOW.单位会员注册3: // case REGISTERFLOW.单位会员注册3:
selectParam.userRegisterState = USERREGISTERSTATE.通过; // selectParam.userRegisterState = USERREGISTERSTATE.通过;
break; // break;
} // }
} // }
await updateOneData(TABLEENUM.用户表, {userId}, selectParam); // await updateOneData(TABLEENUM.用户表, {userId}, selectParam);
return successResult(); // return successResult();
} // }
/**
* 会费管理逻辑
*/
import { MEMBERSTATE, MEMBERTYPE, PAYMENTSTATUS } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findToPage } from "../../data/select";
import { extractData } from "../../util/piecemeal";
import { changeEnumValue } from "../../util/verificationEnum";
/**
* 已缴费列表
*/
export async function getPaid({unitName, joinTime, memberType, pageNumber}) {
let now = new Date().valueOf();
let selectParam:any = {"$and":[
{lifespanStartTime:{"$lt":now}},
{lifespanEndTime:{"$gt":now}}
]};
if (unitName) selectParam.unitName = unitName;
if (joinTime) selectParam.joinTime = joinTime;
if (memberType) selectParam.memberType = memberType;
let selectConf = ["userId", "memberState", "unitName", "loginId", "phone", "joinTime", "memberType"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, [], pageNumber, 10);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
let dataList = [];
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天";
item.memberState = changeEnumValue(MEMBERSTATE, item.memberState);
item.memberType = changeEnumValue(MEMBERTYPE, item.memberType);
dataList.push(item);
});
return {dataList, dataCount};
}
/**
* 续费期
*/
export async function getRenewalPeriod() {
}
/**
* 欠费
*/
export async function getArrearsFees() {
}
/**
* 宽限期
*/
export async function getGracePeriod() {
}
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* 用户逻辑 * 用户逻辑
*/ */
import { DOCUMENTTYPE, MEMBERTYPE, NATION, PROFCATEGORY, SEX, UNITINFOTYPE } from "../../config/enum"; import { DOCUMENTTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, PROFCATEGORY, SEX, UNITINFOTYPE } from "../../config/enum";
import { ERRORCODEENUM, ERRORENUM } from "../../config/errorEnum"; import { ERRORCODEENUM, ERRORENUM } from "../../config/errorEnum";
import { addOneData } from "../../data/add"; import { addOneData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
...@@ -24,6 +24,7 @@ export async function signInOfEntity({form}) { ...@@ -24,6 +24,7 @@ export async function signInOfEntity({form}) {
eccEnumValue(EccFuncName, '证件类型', DOCUMENTTYPE, form.documentType); eccEnumValue(EccFuncName, '证件类型', DOCUMENTTYPE, form.documentType);
eccEnumValue(EccFuncName, '民族', NATION, form.nation); eccEnumValue(EccFuncName, '民族', NATION, form.nation);
eccEnumValue(EccFuncName, '专业类别', PROFCATEGORY, form.profCategory); eccEnumValue(EccFuncName, '专业类别', PROFCATEGORY, form.profCategory);
eccEnumValue(EccFuncName, '会员等级职务', MEMBERLEVEL, form.memberLevel);
let oldData = await findOnce(TABLEENUM.用户表, {"$or":[{loginId:form.loginId}, {phone:form.phone}, {mail:form.mail}] }); let oldData = await findOnce(TABLEENUM.用户表, {"$or":[{loginId:form.loginId}, {phone:form.phone}, {mail:form.mail}] });
if (oldData && oldData.userId) { if (oldData && oldData.userId) {
......
...@@ -36,7 +36,7 @@ export async function list({userId, type}) { ...@@ -36,7 +36,7 @@ export async function list({userId, type}) {
dbList.forEach(info => { dbList.forEach(info => {
let item:any = extractData(info, ["id", "title", "rank", "position", "articleTitle" ]); let item:any = extractData(info, ["id", "title", "rank", "position", "articleTitle" ]);
if (!item.position) item.position = "未选择"; if (!item.position) item.position = "未选择";
else changeEnumValue(ARTICLEPOSITION, item.position); else item.position = changeEnumValue(ARTICLEPOSITION, item.position);
dataList.push(item); dataList.push(item);
}); });
......
...@@ -35,7 +35,7 @@ export async function list({userId}) { ...@@ -35,7 +35,7 @@ export async function list({userId}) {
dbList.forEach(info => { dbList.forEach(info => {
let item:any = extractData(info, ["id", "title", "articleUrl", "position", "articleTitle", "imgUrl"]); let item:any = extractData(info, ["id", "title", "articleUrl", "position", "articleTitle", "imgUrl"]);
if (!item.position) item.position = "未选择"; if (!item.position) item.position = "未选择";
else changeEnumValue(ARTICLEPOSITION, item.position); else item.position = changeEnumValue(ARTICLEPOSITION, item.position);
dataList.push(item); dataList.push(item);
}); });
......
...@@ -338,7 +338,7 @@ export enum INDIVIDUALMEMBERTYPE { ...@@ -338,7 +338,7 @@ export enum INDIVIDUALMEMBERTYPE {
/** /**
* 会员等级 * 会员等级 会员职务
*/ */
export enum MEMBERLEVEL { export enum MEMBERLEVEL {
普通会员 = 1, 普通会员 = 1,
...@@ -447,3 +447,38 @@ export enum PAYMENTTYPE { ...@@ -447,3 +447,38 @@ export enum PAYMENTTYPE {
银行转账, 银行转账,
线下支付 线下支付
} }
/**
* 院校办学类型 yuanXiaoBanXueLeiXing
*/
export enum BANXUELEIXING {
中职 = 1,
高职,
本科,
社会培训,
非教学
}
/**
* 审批历史操作行为
*/
export enum OPERATIONREHAVIOR {
待审核 = 1,
重新提交,
驳回修改,
通过,
用户提交
}
/**
* 支付状态
*/
export enum PAYMENTSTATUS {
已支付 = 1,
未支付,
银行转账,
}
...@@ -25,7 +25,8 @@ export enum ERRORENUM { ...@@ -25,7 +25,8 @@ export enum ERRORENUM {
验证码错误, 验证码错误,
验证码失效, 验证码失效,
验证码过期, 验证码过期,
重复提交 重复提交,
无法获取未来届次
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
...@@ -85,6 +85,8 @@ enum TABLEENUM { ...@@ -85,6 +85,8 @@ enum TABLEENUM {
订单表 = 'order', 订单表 = 'order',
单位所获得科研成果表 = "scientificResearch", 单位所获得科研成果表 = "scientificResearch",
验证码表 = "code", 验证码表 = "code",
审批历史表 = "approvalHistory",
权限表 = "authority",
} }
const ModelArray = [ const ModelArray = [
...@@ -352,7 +354,6 @@ const ModelArray = [ ...@@ -352,7 +354,6 @@ const ModelArray = [
addres:'String',//通信地址 addres:'String',//通信地址
photoUrl:'String',//证件照图片地址 蓝底证件照 photoUrl:'String',//证件照图片地址 蓝底证件照
workUnit:'String',//工作单位 workUnit:'String',//工作单位
workDuties:'String',//职务
workTitle:'String',//职称 workTitle:'String',//职称
userRegisterState:{type:'Number', default:USERREGISTERSTATE.待审核, index:true},//用户注册状态 枚举 userRegisterState:{type:'Number', default:USERREGISTERSTATE.待审核, index:true},//用户注册状态 枚举
registerFlow:'Number',//会员注册流程 枚举 registerFlow:'Number',//会员注册流程 枚举
...@@ -361,43 +362,42 @@ const ModelArray = [ ...@@ -361,43 +362,42 @@ const ModelArray = [
askForTime:'Number',//申请时间 askForTime:'Number',//申请时间
joinTime:'Number',//入会时间 joinTime:'Number',//入会时间
session:'String',//届次 session:'String',//届次
memberLevel:'Number',//会员等级 枚举 memberLevel:'Number',//会员等级、职务 枚举
lifespanStartTime:'Number',//会员有效期开始时间 时间戳 lifespanStartTime:'Number',//会员有效期开始时间 时间戳
lifespanEndTime:'Number',//会员有效期结束时间 时间戳 lifespanEndTime:'Number',//会员有效期结束时间 时间戳
isGracePeriod:{type:'Number', default:0},//是否宽限期 0:否, 1:是 isGracePeriod:{type:'Number', default:0},//是否宽限期 0:否, 1:是
gracePeriodEndTime:'Number',//宽限期到期时间 时间戳 gracePeriodEndTime:'Number',//宽限期到期时间 时间戳
certificateType:'Number',//证书类型 枚举 certificateType:'Number',//证书类型 枚举
education:'Number',//学历
applicationForm:'String',//入会申请表
unitName:'String',//单位名称 unitName:'String',//单位名称
officialWebsite:'String',//官网 单位网址
uscc:'String',//统一信用代码 uscc:'String',//统一信用代码
legalPerson:'String',//法人 legalPerson:'String',//法人
legalPersonMail:'String',//法人邮箱
legalPersonPhone:'String',//法人代表联系电话 legalPersonPhone:'String',//法人代表联系电话
gongZhongHao:'String',//单位公众号
unitPhone:'Number',//单位电话
contactPerson:'String',//日常联系人 contactPerson:'String',//日常联系人
contactPersonDuties:'String',//日常联系人职务 contactPersonDuties:'String',//日常联系人职务
contactPersonPhone:'String',//日常联系人手机
unitMail:'String',//单位电子邮箱
uusinessLicenseUrl:'String',//营业执照 图片地址 uusinessLicenseUrl:'String',//营业执照 图片地址
personInChargeDesc:'String',//单位主要负责人或负责人集体描述
/**单位会员信息 */ /**单位会员信息 */
unitInfoType:'Number',//单位信息类型 枚举 unitInfoType:'Number',//单位信息类型 枚举
yuanXiaoBanXueLeiXing:'String',//院校办学类型 yuanXiaoBanXueLeiXing:'Number',//院校办学类型 枚举
yuanXiaoZhuGuanBuMen:'String',//院校主管部门 yuanXiaoZhuGuanBuMen:'String',//院校主管部门
yuanXiaoFuZeRen:'String',//院校主要负责人 yuanXiaoFuZeRen:'String',//院校主要负责人
yuanXiaoFuZeRenZhiWu:'String',//院校主要负责人职务 yuanXiaoFuZeRenZhiWu:'String',//院校主要负责人职务
yuanXiaoFuZeRenDianHua:'String',//院校主要负责人电话 yuanXiaoFuZeRenDianHua:'String',//院校主要负责人电话
yuanXiaoBanGongFuZeRen:'String',//院校办公负责人 yuanXiaoBanGongFuZeRen:'String',//院校办公负责人
yuanXiaoBanGongFuZeRenZhiWu:'String',//院校办公负责人职务
yuanXiaoBanGongFuZeRenDianHua:'String',//院校办公负责人电话 yuanXiaoBanGongFuZeRenDianHua:'String',//院校办公负责人电话
yuanXiaoKeYanFuZeRen:'String',//院校办公负责人 yuanXiaoKeYanFuZeRen:'String',//院校科研负责人
yuanXiaoKeYanFuZeRenZhiWu:'String',//院校办公负责人职务 yuanXiaoKeYanFuZeRenDianHua:'String',//院校科研负责人电话
yuanXiaoKeYanFuZeRenDianHua:'String',//院校办公负责人电话
yuanXiaoXueShengZongRenShu:'String',//学生总人数 yuanXiaoXueShengZongRenShu:'String',//学生总人数
yuanXiaoJiaoZhiGongZongRenShu:'String',//教职工总人数 yuanXiaoJiaoZhiGongZongRenShu:'String',//教职工总人数
yuanXiaoJianZhuMianJi:'String',//院校建筑面积 jiaoXueFuZeRenXinMing:'String',//教学负责人姓名
yuanXiaoGaoJiZhiCheng:'String',// 院校职称 jiaoXueFuZeRenDianHua:'String',//教学负责人电话
yuanXiaoKaiSheZhuanYe:'String',//院校开设专业数 ZhuYaoFuZeRenYouXiang:'String',//主要负责人邮箱
/**个人会员信息 */ /**个人会员信息 */
cardUrl:{type:'[String]', default:[]},//身份证正反面图片地址 cardUrl:{type:'[String]', default:[]},//身份证正反面图片地址
...@@ -411,6 +411,7 @@ const ModelArray = [ ...@@ -411,6 +411,7 @@ const ModelArray = [
otherEMP:'String',//其他任职情况 otherEMP:'String',//其他任职情况
otherPROF:'String',//其他专业情况 otherPROF:'String',//其他专业情况
paymentStatus:'Number',//支付状态
} }
}, },
{ {
...@@ -462,6 +463,17 @@ const ModelArray = [ ...@@ -462,6 +463,17 @@ const ModelArray = [
isUse:{type:'Boolean', default:false},//是否使用 默认false isUse:{type:'Boolean', default:false},//是否使用 默认false
} }
}, },
{
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 },//备注
}
},
]; ];
......
import { getEdition } from "./biz/member/examine";
import { initConfig, systemConfig} from "./config/serverConfig"; import { initConfig, systemConfig} from "./config/serverConfig";
import { initDataBaseModel } from "./data/db/db"; import { initDataBaseModel } from "./data/db/db";
import { httpServer } from "./net/http_server"; import { httpServer } from "./net/http_server";
...@@ -14,4 +15,4 @@ async function lanuch() { ...@@ -14,4 +15,4 @@ async function lanuch() {
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
} }
lanuch(); lanuch();
\ No newline at end of file
import * as userBiz from "../../biz/member/user"; import * as userBiz from "../../biz/member/user";
import * as memberBiz from "../../biz/member/member"; import * as memberBiz from "../../biz/member/member";
import * as examineBiz from "../../biz/member/examine";
import * as memberFeesBiz from "../../biz/member/memberFees";
import * as authorityBiz from "../../biz/member/authority";
export const FirstName = '会员管理路由'; export const FirstName = '会员管理路由';
export const FirstRouter = '/manage/member'; export const FirstRouter = '/manage/member';
...@@ -28,7 +31,7 @@ export const Config = { ...@@ -28,7 +31,7 @@ export const Config = {
addres:{type:'String', desc:"通信地址"}, addres:{type:'String', desc:"通信地址"},
photoUrl:{type:'String', desc:"证件照图片地址"}, photoUrl:{type:'String', desc:"证件照图片地址"},
workUnit:{type:'String', desc:"工作单位"}, workUnit:{type:'String', desc:"工作单位"},
workDuties:{type:'String', desc:"职务"}, memberLevel:{type:'String', desc:"职务"},
workTitle:{type:'String', desc:"职称"}, workTitle:{type:'String', desc:"职称"},
profCategory:{type:'Number', desc:"专业类别"}, profCategory:{type:'Number', desc:"专业类别"},
studyResume:{type:'String', desc:"学习简历"}, studyResume:{type:'String', desc:"学习简历"},
...@@ -58,16 +61,12 @@ export const Config = { ...@@ -58,16 +61,12 @@ export const Config = {
phone:{type:'String', desc:"电话"}, phone:{type:'String', desc:"电话"},
mail:{type:'String', desc:"邮件"}, mail:{type:'String', desc:"邮件"},
unitName:{type:'String', desc:"单位名称"}, unitName:{type:'String', desc:"单位名称"},
officialWebsite:{type:'String', desc:"官网"},
uscc:{type:'String', desc:"统一信用代码"}, uscc:{type:'String', desc:"统一信用代码"},
legalPerson:{type:'String', desc:"法人"}, legalPerson:{type:'String', desc:"法人"},
legalPersonPhone:{type:'String', desc:"法人代表联系电话"}, legalPersonPhone:{type:'String', desc:"法人代表联系电话"},
gongZhongHao:{type:'String', desc:"单位公众号"},
unitPhone:{type:'Number', desc:"单位电话"},
contactPerson:{type:'String', desc:"日常联系人"}, contactPerson:{type:'String', desc:"日常联系人"},
contactPersonDuties:{type:'String', desc:"日常联系人职务"}, contactPersonDuties:{type:'String', desc:"日常联系人职务"},
uusinessLicenseUrl:{type:'String', desc:"营业执照"}, uusinessLicenseUrl:{type:'String', desc:"营业执照"},
personInChargeDesc:{type:'String', desc:"单位主要负责人或负责人集体描述"},
unitInfoType:{type:'Number', desc:"单位信息类型 公用接口中获取"}, unitInfoType:{type:'Number', desc:"单位信息类型 公用接口中获取"},
yuanXiaoBanXueLeiXing:{type:'String', desc:"院校办学类型"}, yuanXiaoBanXueLeiXing:{type:'String', desc:"院校办学类型"},
yuanXiaoZhuGuanBuMen:{type:'String', desc:"院校主管部门"}, yuanXiaoZhuGuanBuMen:{type:'String', desc:"院校主管部门"},
...@@ -118,7 +117,7 @@ export const Config = { ...@@ -118,7 +117,7 @@ export const Config = {
{key:"unitName", type:"String", desc:"单位名称", isNull:true}, {key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true}, {key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"unitMemberType", type:"Number", desc:"单位会员类型", isNull:true}, {key:"unitMemberType", type:"Number", desc:"单位会员类型", isNull:true},
{key:"workDuties", type:"String", desc:"职务", isNull:true}, {key:"memberLevel", type:"Number", desc:"会员等级职务", isNull:true},
{key:"session", type:"String", desc:"届次", isNull:true}, //todo {key:"session", type:"String", desc:"届次", isNull:true}, //todo
{key:"sheng", type:"String", desc:"省", isNull:true}, {key:"sheng", type:"String", desc:"省", isNull:true},
{key:"shi", type:"String", desc:"市", isNull:true}, {key:"shi", type:"String", desc:"市", isNull:true},
...@@ -134,8 +133,8 @@ export const Config = { ...@@ -134,8 +133,8 @@ export const Config = {
{key:"name", type:"String", desc:"姓名", isNull:true}, {key:"name", type:"String", desc:"姓名", isNull:true},
{key:"documentId", type:"String", desc:"身份证", isNull:true}, {key:"documentId", type:"String", desc:"身份证", isNull:true},
{key:"phone", type:"String", desc:"手机号", isNull:true}, {key:"phone", type:"String", desc:"手机号", isNull:true},
{key:"individualMemberType", type:"Number", desc:"级别、会员类型", isNull:true},
{key:"memberLevel", type:"Number", desc:"会员等级", isNull:true}, {key:"memberLevel", type:"Number", desc:"会员等级", isNull:true},
{key:"workDuties", type:"String", desc:"职务", isNull:true},
{key:"session", type:"String", desc:"届次", isNull:true}, {key:"session", type:"String", desc:"届次", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true}, {key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"auditTime", type:"Number", desc:"审核时间", isNull:true}, {key:"auditTime", type:"Number", desc:"审核时间", isNull:true},
...@@ -178,19 +177,15 @@ export const Config = { ...@@ -178,19 +177,15 @@ export const Config = {
/**基本信息 */ /**基本信息 */
unitName:{type:'String', desc:'单位名称'}, unitName:{type:'String', desc:'单位名称'},
addres:{type:'String', desc:'通信地址'}, addres:{type:'String', desc:'通信地址'},
officialWebsite:{type:'String', desc:'单位网站'},
uscc:{type:'String', desc:'单位信用代码'}, uscc:{type:'String', desc:'单位信用代码'},
legalPerson:{type:'String', desc:'法人代表'}, legalPerson:{type:'String', desc:'法人代表'},
legalPersonPhone:{type:'String', desc:'法人联系电话'}, legalPersonPhone:{type:'String', desc:'法人联系电话'},
gongZhongHao:{type:'String', desc:'单位公众号'},
unitPhone:{type:'Number', desc:'单位电话'},
contactPerson:{type:'String', desc:'日常联系人'}, contactPerson:{type:'String', desc:'日常联系人'},
contactPersonDuties:{type:'String', desc:'日常联系人职务'}, contactPersonDuties:{type:'String', desc:'日常联系人职务'},
sheng:{type:'String', desc:'省'}, sheng:{type:'String', desc:'省'},
shi:{type:'String', desc:'市'}, shi:{type:'String', desc:'市'},
qu:{type:'String', desc:'区'}, qu:{type:'String', desc:'区'},
uusinessLicenseUrl:{type:'String', desc:'营业执照'}, uusinessLicenseUrl:{type:'String', desc:'营业执照'},
personInChargeDesc:{type:'String', desc:'单位主要负责人或集体简介'},
/**单位信息 */ /**单位信息 */
unitInfoType:{type:'Number', desc:'单位信息类型'}, unitInfoType:{type:'Number', desc:'单位信息类型'},
yuanXiaoBanXueLeiXing:{type:'String', desc:'院校办学类型'}, yuanXiaoBanXueLeiXing:{type:'String', desc:'院校办学类型'},
...@@ -248,7 +243,7 @@ export const Config = { ...@@ -248,7 +243,7 @@ export const Config = {
photoUrl:{type:'String', desc:'蓝底证件照'}, photoUrl:{type:'String', desc:'蓝底证件照'},
/**专业信息 */ /**专业信息 */
workUnit:{type:'String', desc:'工作单位'}, workUnit:{type:'String', desc:'工作单位'},
workDuties:{type:'String', desc:'职务'}, memberLevel:{type:'Number', desc:'会员等级职务'},
workTitle:{type:'String', desc:'职称'}, workTitle:{type:'String', desc:'职称'},
profCategory:{type:'Number', desc:'专业类别'}, profCategory:{type:'Number', desc:'专业类别'},
studyResume:{type:'String', desc:'学习简历'}, studyResume:{type:'String', desc:'学习简历'},
...@@ -286,12 +281,12 @@ export const Config = { ...@@ -286,12 +281,12 @@ export const Config = {
{ {
key:"form", type:"Object", sub: key:"form", type:"Object", sub:
{ {
loginId:{type:'String', desc:'用户名'}, loginId:{type:'String', desc:'用户名', notMustHave:false},
mail:{type:'String', desc:'邮箱'}, mail:{type:'String', desc:'邮箱', notMustHave:false},
pwd:{type:'String', desc:'密码'}, pwd:{type:'String', desc:'密码', notMustHave:false},
confirmation:{type:'String', desc:'确认密码'}, confirmation:{type:'String', desc:'确认密码', notMustHave:false},
phone:{type:'String', desc:'联系人手机号'}, phone:{type:'String', desc:'联系人手机号', notMustHave:false},
codeNum:{type:'String', desc:'验证码'}, codeNum:{type:'String', desc:'验证码', notMustHave:false},
} }
}, },
{key:"codeId", type:"String", desc:"验证码Id"} {key:"codeId", type:"String", desc:"验证码Id"}
...@@ -305,30 +300,31 @@ export const Config = { ...@@ -305,30 +300,31 @@ export const Config = {
{ {
key:"form", type:"Object", sub: key:"form", type:"Object", sub:
{ {
name:{type:'String', desc:'真实姓名'}, name:{type:'String', desc:'真实姓名', notMustHave:false},
sex:{type:'Number', desc:'性别'}, sex:{type:'Number', desc:'性别', notMustHave:false},
documentType:{type:'Number', desc:'证件类型'}, documentType:{type:'Number', desc:'证件类型', notMustHave:false},
documentId:{type:'String', desc:'证件号码'}, documentId:{type:'String', desc:'证件号码', notMustHave:false},
birth:{type:'Number', desc:'出生年月'}, birth:{type:'Number', desc:'出生年月', notMustHave:false},
nation:{type:'Number', desc:'民族'}, nation:{type:'Number', desc:'民族', notMustHave:false},
sheng:{type:'String', desc:'省'}, sheng:{type:'String', desc:'省', notMustHave:false},
shi:{type:'String', desc:'市'}, shi:{type:'String', desc:'市', notMustHave:false},
qu:{type:'String', desc:'区'}, qu:{type:'String', desc:'区', notMustHave:false},
addres:{type:'String', desc:'通信地址'}, addres:{type:'String', desc:'通信地址', notMustHave:false},
photoUrl:{type:'String', desc:'蓝底证件照'}, education:{type:'Number', desc:'学历', notMustHave:false},
workUnit:{type:'String', desc:'工作单位'}, photoUrl:{type:'String', desc:'蓝底证件照', notMustHave:false},
workDuties:{type:'String', desc:'职务'}, workUnit:{type:'String', desc:'工作单位', notMustHave:false},
workTitle:{type:'String', desc:'职称'}, memberLevel:{type:'Number', desc:'会员等级职务', notMustHave:false},
profCategory:{type:'Number', desc:'专业类别'}, workTitle:{type:'String', desc:'职称', notMustHave:false},
studyResume:{type:'String', desc:'学习简历'}, profCategory:{type:'Number', desc:'专业类别', notMustHave:false},
workResume:{type:'String', desc:'工作简历'}, studyResume:{type:'String', desc:'学习简历', notMustHave:false},
profAchievement:{type:'String', desc:'专业成果'}, workResume:{type:'String', desc:'工作简历', notMustHave:false},
otherEMP:{type:'String', desc:'在其他社会组织任职情况'}, profAchievement:{type:'String', desc:'专业成果', notMustHave:false},
otherPROF:{type:'String', desc:'其他与本学会专业有关的情况'}, otherEMP:{type:'String', desc:'在其他社会组织任职情况', notMustHave:false},
cardUrl:{type:'[String]', desc:'个人身份证扫描件'}, otherPROF:{type:'String', desc:'其他与本学会专业有关的情况', notMustHave:false},
academicCERTUrl:{type:'String', desc:'个人学历证明扫描件'}, cardUrl:{type:'[String]', desc:'个人身份证扫描件', notMustHave:false},
professionalCERTUrl:{type:'String', desc:'个人工作证明扫描件'}, academicCERTUrl:{type:'String', desc:'个人学历证明扫描件', notMustHave:false},
auxiliaryMaterial:{type:'[String]', desc:'论文发表等证明工作成果或成绩的材料'}, professionalCERTUrl:{type:'String', desc:'个人工作证明扫描件', notMustHave:false},
auxiliaryMaterial:{type:'[String]', desc:'论文发表等证明工作成果或成绩的材料', notMustHave:false},
} }
}, },
{ {
...@@ -344,12 +340,12 @@ export const Config = { ...@@ -344,12 +340,12 @@ export const Config = {
{ {
key:"form", type:"Object", sub: key:"form", type:"Object", sub:
{ {
loginId:{type:'String', desc:'用户名'}, loginId:{type:'String', desc:'用户名', notMustHave:false},
mail:{type:'String', desc:'邮箱'}, mail:{type:'String', desc:'邮箱', notMustHave:false},
pwd:{type:'String', desc:'密码'}, pwd:{type:'String', desc:'密码', notMustHave:false},
confirmation:{type:'String', desc:'确认密码'}, confirmation:{type:'String', desc:'确认密码', notMustHave:false},
phone:{type:'String', desc:'联系人手机号'}, phone:{type:'String', desc:'联系人手机号', notMustHave:false},
codeNum:{type:'String', desc:'验证码'}, codeNum:{type:'String', desc:'验证码', notMustHave:false},
} }
}, },
{key:"codeId", type:"String", desc:"验证码Id"} {key:"codeId", type:"String", desc:"验证码Id"}
...@@ -363,39 +359,36 @@ export const Config = { ...@@ -363,39 +359,36 @@ export const Config = {
{ {
key:"form", type:"Object", sub: key:"form", type:"Object", sub:
{ {
unitName:{type:'String', desc:'单位名称'}, unitName:{type:'String', desc:'单位名称', notMustHave:false},
addres:{type:'String', desc:'通信地址'}, addres:{type:'String', desc:'通信地址', notMustHave:false},
officialWebsite:{type:'String', desc:'单位网站'}, uscc:{type:'String', desc:'单位信用代码', notMustHave:false},
uscc:{type:'String', desc:'单位信用代码'}, legalPerson:{type:'String', desc:'法人代表', notMustHave:false},
legalPerson:{type:'String', desc:'法人代表'}, legalPersonPhone:{type:'String', desc:'法人联系电话', notMustHave:false},
legalPersonPhone:{type:'String', desc:'法人联系电话'}, sheng:{type:'String', desc:'省', notMustHave:false},
sheng:{type:'String', desc:'省'}, shi:{type:'String', desc:'市', notMustHave:false},
shi:{type:'String', desc:'市'}, qu:{type:'String', desc:'区', notMustHave:false},
qu:{type:'String', desc:'区'}, contactPerson:{type:'String', desc:'日常联系人', notMustHave:false},
gongZhongHao:{type:'String', desc:'单位公众号'}, contactPersonDuties:{type:'String', desc:'日常联系人职务', notMustHave:false},
unitPhone:{type:'String', desc:'单位电话'}, uusinessLicenseUrl:{type:'String', desc:'营业执照复印件', notMustHave:false},
contactPerson:{type:'String', desc:'日常联系人'}, auxiliaryMaterial:{type:'[String]', desc:'法人邮箱', notMustHave:false},
contactPersonDuties:{type:'String', desc:'日常联系人职务'}, contactPersonPhone:{type:'[String]', desc:'日常联系人手机', notMustHave:false},
uusinessLicenseUrl:{type:'String', desc:'营业执照复印件'},
personInChargeDesc:{type:'String', desc:'单位主要负责人简介'},
/**单位信息 */ /**单位信息 */
unitInfoType:{type:'Number', desc:'单位信息类型'}, unitInfoType:{type:'Number', desc:'单位信息类型', notMustHave:false},
yuanXiaoBanXueLeiXing:{type:'String', desc:'院校办学类型'}, unitMail:{type:'[String]', desc:'单位电子邮箱', notMustHave:false},
yuanXiaoZhuGuanBuMen:{type:'String', desc:'院校主管部门'}, yuanXiaoBanXueLeiXing:{type:'String', desc:'院校办学类型', notMustHave:false},
yuanXiaoFuZeRen:{type:'String', desc:'院校主要负责人'}, yuanXiaoZhuGuanBuMen:{type:'String', desc:'院校主管部门', notMustHave:false},
yuanXiaoFuZeRenZhiWu:{type:'String', desc:'院校主要负责人职务'}, yuanXiaoFuZeRen:{type:'String', desc:'院校主要负责人', notMustHave:false},
yuanXiaoFuZeRenDianHua:{type:'String', desc:'院校主要负责人电话'}, yuanXiaoFuZeRenZhiWu:{type:'String', desc:'院校主要负责人职务', notMustHave:false},
yuanXiaoBanGongFuZeRen:{type:'String', desc:'院校办公负责人'}, yuanXiaoFuZeRenDianHua:{type:'String', desc:'院校主要负责人电话', notMustHave:false},
yuanXiaoBanGongFuZeRenZhiWu:{type:'String', desc:'院校办公负责人职务'}, yuanXiaoBanGongFuZeRen:{type:'String', desc:'院校办公负责人', notMustHave:false},
yuanXiaoBanGongFuZeRenDianHua:{type:'String', desc:'院校办公负责人电话'}, yuanXiaoBanGongFuZeRenDianHua:{type:'String', desc:'院校办公负责人电话', notMustHave:false},
yuanXiaoKeYanFuZeRen:{type:'String', desc:'院校科研负责人'}, yuanXiaoKeYanFuZeRen:{type:'String', desc:'院校科研负责人', notMustHave:false},
yuanXiaoKeYanFuZeRenZhiWu:{type:'String', desc:'院校科研负责人职务'}, yuanXiaoKeYanFuZeRenDianHua:{type:'String', desc:'院校科研负责人电话', notMustHave:false},
yuanXiaoKeYanFuZeRenDianHua:{type:'String', desc:'院校科研负责人电话'}, yuanXiaoXueShengZongRenShu:{type:'String', desc:'院校学生总人数', notMustHave:false},
yuanXiaoXueShengZongRenShu:{type:'String', desc:'院校学生总人数'}, yuanXiaoJiaoZhiGongZongRenShu:{type:'String', desc:'院校教职工总人数', notMustHave:false},
yuanXiaoJiaoZhiGongZongRenShu:{type:'String', desc:'院校教职工总人数'}, jiaoXueFuZeRenXinMing:{type:'[String]', desc:'教学负责人姓名', notMustHave:false},
yuanXiaoJianZhuMianJi:{type:'String', desc:'院校建筑总面积'}, jiaoXueFuZeRenDianHua:{type:'[String]', desc:'教学负责人电话', notMustHave:false},
yuanXiaoGaoJiZhiCheng:{type:'String', desc:'院校高级职称人数'}, ZhuYaoFuZeRenYouXiang:{type:'[String]', desc:'主要负责人邮箱', notMustHave:false},
yuanXiaoKaiSheZhuanYe:{type:'String', desc:'院校开设专业'},
} }
}, },
{ {
...@@ -408,12 +401,17 @@ export const Config = { ...@@ -408,12 +401,17 @@ export const Config = {
bindBiz:memberBiz.unitMemberRegister2 bindBiz:memberBiz.unitMemberRegister2
}, },
{ {
apiName:"模拟审核通过修改会员注册流程", apiName:"单位入会流程3",
subUrl:'/memberdb/examine', subUrl:'/memberdb/unitmemberregister2',
param:[ param:[
{key:"userId", type:"String", desc:"用户id"}, {
key:"applicationForm", type:"String", desc:"入会申请表"
},
{
key:"userId", type:"String", desc:"用户id"
}
], ],
bindBiz:memberBiz.examine bindBiz:memberBiz.unitMemberRegister3
}, },
{ {
apiName:"获取当前会员注册流程", apiName:"获取当前会员注册流程",
...@@ -423,6 +421,154 @@ export const Config = { ...@@ -423,6 +421,154 @@ export const Config = {
], ],
bindBiz:memberBiz.registerFlowType bindBiz:memberBiz.registerFlowType
} }
],
"审批管理":[
{
apiName:"待审核列表",
subUrl:'/examine/pendingreview',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"sheng", type:"String", desc:"省", isNull:true},
{key:"shi", type:"String", desc:"市", isNull:true},
{key:"qu", type:"String", desc:"区", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:examineBiz.pendingReviewList
},
{
apiName:"通过审批",
subUrl:'/examine/adopt',
param:[
{key:"userId", type:"String", desc:"待审核列表返回的用户id"}
],
bindBiz:examineBiz.adopt
},
{
apiName:"驳回审批",
subUrl:'/examine/pendingreview',
param:[
{key:"userId", type:"String", desc:"待审核列表返回的用户id"},
{key:"remarks", type:"String", desc:"驳回理由"}
],
bindBiz:examineBiz.reject
},
{
apiName:"审批历史",
subUrl:'/examine/approvalhistorylist',
param:[
{key:"userId", type:"String", desc:"待审核列表返回的用户id"},
],
bindBiz:examineBiz.approvalHistoryList
},
{
apiName:"待支付列表",
subUrl:'/examine/tobepaidlist',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"paymentStatus", type:"String", desc:"支付状态", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:examineBiz.toBePaidList
},
{
apiName:"通过支付信息",
subUrl:'/examine/passthroughpaid',
param:[
{key:"userId", type:"String", desc:"待支付列表返回的用户id"},
],
bindBiz:examineBiz.passThroughPaid
},
],
"会费管理":[
{
apiName:"已交费名单列表",
subUrl:'/memberfees/paid',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
},
{
apiName:"续费期名单列表",
subUrl:'/memberfees/paid',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
},
{
apiName:"欠费名单列表",
subUrl:'/memberfees/paid',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
},
{
apiName:"宽限期名单列表",
subUrl:'/memberfees/paid',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"joinTime", type:"Number", desc:"入会时间", isNull:true},
{key:"memberType", type:"Number", desc:"会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:memberFeesBiz.getPaid
},
],
"会员管理":[
{
apiName:"会员权限列表",
subUrl:'/authority/list',
param:[
{key:"unitName", type:"String", desc:"单位名称", isNull:true},
{key:"memberLevel", type:"Number", desc:"会员等级", isNull:true},
{key:"memberCategory", type:"Number", desc:"单位、个人会员类别", isNull:true},
{key:"pageNumber", type:"Number", desc:"当前页"}
],
bindBiz:authorityBiz.getAuthority
},
{
apiName:"变更权限",
subUrl:'/authority/update',
param:[
{
key:"form", type:"Object", sub:
{
memberLevel:{type:'Number', desc:'职务', notMustHave:false},
memberCategory:{type:'Number', desc:'单位、个人会员类别', notMustHave:false},
}
},
{
key:"userId", type:"String", desc:"用户id"
}
],
bindBiz:authorityBiz.updateAuthority
},
{
apiName:"冻结",
subUrl:'/authority/freeze',
param:[
{
key:"userId", type:"String", desc:"用户id"
}
],
bindBiz:authorityBiz.freeze
}
] ]
} }
...@@ -138,7 +138,7 @@ export const Config = { ...@@ -138,7 +138,7 @@ export const Config = {
bindBiz:publicBiz.setEnumInterface bindBiz:publicBiz.setEnumInterface
}, },
{ {
apiName:"验证码类型", apiName:"验证码类型",
subUrl:'/codetype', subUrl:'/codetype',
param:[], param:[],
defaultParam:enumConfig.CODETYPE, defaultParam:enumConfig.CODETYPE,
...@@ -177,8 +177,28 @@ export const Config = { ...@@ -177,8 +177,28 @@ export const Config = {
subUrl:'/orderstate', subUrl:'/orderstate',
param:[], param:[],
defaultParam:enumConfig.ORDERSTATE, defaultParam:enumConfig.ORDERSTATE,
bindBiz:publicBiz.setEnumInterface bindBiz:publicBiz.setEnumInterface
} },
{
apiName:"单位会员类别",
subUrl:'/unitMemberType',
param:[],
defaultParam:enumConfig.UNITMEMBERTYPE,
bindBiz:publicBiz.setEnumInterface
},
{
apiName:"个人会员类别",
subUrl:'/individualMemberType',
param:[],
defaultParam:enumConfig.INDIVIDUALMEMBERTYPE,
bindBiz:publicBiz.setEnumInterface
},
{
apiName:"会员职务",
subUrl:'/memberLevel',
param:[],
defaultParam:enumConfig.MEMBERLEVEL,
bindBiz:publicBiz.setEnumInterface
},
], ],
} }
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