Commit e214330b by lixinming

no message

parent 935d61c0
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -4,8 +4,13 @@
"description": "",
"main": "main.ts",
"dependencies": {
"@alicloud/credentials": "^2.4.3",
"@alicloud/dypnsapi20170525": "^1.2.1",
"@alicloud/dysmsapi20170525": "^4.1.1",
"@alicloud/openapi-client": "^0.4.14",
"@alicloud/sms-sdk": "^1.1.6",
"@alicloud/tea-typescript": "^1.8.0",
"@alicloud/tea-util": "^1.4.10",
"@types/node": "^10.12.18",
"compression": "^1.7.4",
"express": "^4.17.1",
......@@ -45,6 +50,5 @@
"video/**/*"
],
"outputPath": "dist"
},
"devDependencies": {}
}
}
......@@ -3,18 +3,19 @@
*/
import moment = require("moment");
import { BANXUELEIXING, CERTIFICATETYPE, CHANGEAPPLYTYPE, CLIENTMSGLABLE, INDIVIDUALMEMBERTYPE, INFOCHANGEAPPLYTYPE, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { BANXUELEIXING, CERTIFICATETYPE, CHANGEAPPLYTYPE, CLIENTMSGLABLE, INDIVIDUALMEMBERTYPE, INFOCHANGEAPPLYTYPE, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, MSGTYPE, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findOnceToSort, findToPage, findToSort, findToSortToPage } from "../../data/select";
import { extractData } from "../../util/piecemeal";
import { changeEnumValue } from "../../util/verificationEnum";
import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum";
import { generateSystemId, getMenberNum, successResult } from "../../tools/system";
import { generateSystemId, generateUserId, getMenberNum, successResult } from "../../tools/system";
import { updateOneData } from "../../data/update";
import { setEnumInterface } from "../public";
import { addOneData } from "../../data/add";
import { systemSendMail } from "../mail";
import { sendMessage } from "../sms";
/**
......@@ -148,7 +149,10 @@ export async function applyList({name, joinStartTime, joinEndTime, memberCategor
await updateOneData(TABLEENUM.理事变更审批历史表, {applyId:userInfo.applyId}, updateInfo);
//发送邮件
await systemSendMail(id, MAILTYPE.变更已通过 );
systemSendMail(id, MAILTYPE.变更已通过 );
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.变更已通过);
return successResult();
}
......@@ -214,6 +218,9 @@ export async function applyBatchAdopt({idList}) {
//发送邮件
await systemSendMail(id, MAILTYPE.变更已通过 );
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.变更已通过);
}
return successResult();
......@@ -289,6 +296,9 @@ export async function applyReject({id, remarks}) {
//发送邮件
await systemSendMail(id, MAILTYPE.变更驳回 );
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.变更驳回);
return successResult();
}
......@@ -448,96 +458,60 @@ export async function outPutApply() {
* @returns
*/
export async function infomationChangeList({name, changeState, unitMemberType, uscc, legalPerson, legalPersonPhone, legalPersonMail, pageSize, pageNumber}) {
let selectParam:any = {memberType:MEMBERTYPE.单位会员, infoChangeId:{"$ne":null}};
if (name || changeState || unitMemberType.length || uscc || legalPerson || legalPersonPhone || legalPersonMail) selectParam["$or"] = [];
if (name) {
selectParam["$or"].push({unitName:{"$regex":name}});
}
if (changeState) {
selectParam["$or"].push({infoChangeOptionType:changeState});
// selectParam.infoChangeOptionType = changeState;
}
if (unitMemberType.length) {
selectParam["$or"].push({unitMemberType:{"$in":unitMemberType}});
// selectParam.unitMemberType = {"$in":unitMemberType};
}
if (uscc) {
selectParam["$or"].push({uscc});
// selectParam.uscc = uscc;
}
if (legalPerson) {
selectParam["$or"].push({legalPerson:{"$regex":legalPerson}});
// selectParam.legalPerson = {"$regex":legalPerson};
}
if (legalPersonPhone) {
selectParam["$or"].push({legalPersonPhone})
// selectParam.legalPersonPhone = legalPersonPhone;
}
if (legalPersonMail) {
selectParam["$or"].push({legalPersonMail})
// selectParam.legalPersonMail = legalPersonMail;
}
//查询变更后的信息 条件
let selectHistoryParam:any = {};
let isSelectHistory = false;
//查询变更前的信息(当前信息) 条件
let selectUserParam:any = {memberType:MEMBERTYPE.单位会员, infoChangeId:{"$ne":null}};
if (name) {
selectHistoryParam.unitName = {"$regex":name};
isSelectHistory = true;
selectUserParam.unitName = {"$regex":name};
}
if (changeState) {
selectHistoryParam.infoChangeOptionType = changeState;
isSelectHistory = true;
selectUserParam.infoChangeOptionType = changeState;
}
if (unitMemberType.length) {
selectHistoryParam.unitMemberType = {"$in":unitMemberType};
isSelectHistory = true;
selectUserParam.unitMemberType = {"$in":unitMemberType};
}
if (uscc) {
selectHistoryParam.uscc = uscc;
isSelectHistory = true;
selectUserParam.uscc = uscc;
}
if (legalPerson) {
selectHistoryParam.legalPerson = {"$regex":legalPerson};
isSelectHistory = true;
selectUserParam.legalPerson = {"$regex":legalPerson};
}
if (legalPersonPhone) {
selectHistoryParam.legalPersonPhone = legalPersonPhone;
isSelectHistory = true;
selectUserParam.legalPersonPhone = legalPersonPhone;
}
if (legalPersonMail) {
selectHistoryParam.legalPersonMail = legalPersonMail;
isSelectHistory = true;
}
let checkHistoryDataList = [];
if (isSelectHistory) {
checkHistoryDataList.push("0");
let dbHistoryList = await findToSort(TABLEENUM.资料变更审批历史表, selectHistoryParam, {createTimeMs:-1}, []);
dbHistoryList.forEach(key => {
checkHistoryDataList.push(key.userId);
});
selectUserParam.legalPersonMail = legalPersonMail;
}
if (checkHistoryDataList.length) {
// 去除数组userId重复项
let uniqueList = checkHistoryDataList.filter((item, index) =>
checkHistoryDataList.indexOf(item) === index
);
let checkChangeUserIdList = [];//修改表中存在的用户
let checkChangeMap = {};//匹配变更信息 新的会覆盖旧的
selectParam["$or"].push({userId:{"$in":uniqueList}})
// selectParam.userId = {"$in":uniqueList}
}
//查询变更后的信息
let dbHistoryList = await findToSort(TABLEENUM.资料变更审批历史表, selectHistoryParam, {createTimeMs:1}, ["userId"]);
let dbAllHistoryList = await findToSort(TABLEENUM.资料变更审批历史表, {}, {createTimeMs:1}, []);
dbAllHistoryList.forEach(item => {
checkChangeMap[item.userId] = item;
});
dbHistoryList.forEach(item => {
if (checkChangeUserIdList.indexOf(item.userId) == -1) checkChangeUserIdList.push(item.userId);
})
let dbList = await findToSortToPage(TABLEENUM.用户表, selectParam, ["userId", "memberType", "userId", "unitName", "infoChangeId", "uscc", "legalPerson", "unitMemberType", "yuanXiaoBanXueLeiXing"], {infoChangeMs:-1}, pageNumber, pageSize);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
let dbList = await findToSortToPage(TABLEENUM.用户表, selectUserParam, ["userId", "memberType", "userId", "unitName", "infoChangeId", "uscc", "legalPerson", "unitMemberType", "yuanXiaoBanXueLeiXing"], {infoChangeMs:-1}, pageNumber, pageSize);
let dataCount = await findCount(TABLEENUM.用户表, selectUserParam);
let dataList = [];
for (let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let itemFileList = ["unitName","uscc", "legalPerson", "yuanXiaoBanXueLeiXing", "unitMemberType", "uusinessLicenseUrl", "applicationForm", "desc", "rejectRemarks", "infoChangeOptionType", "infoChangeId", "yuanXiaoBanXueLeiXing", "legalPersonMail", "legalPersonPhone"];
let logInfo = await findOnceToSort(TABLEENUM.资料变更审批历史表, {infoChangeId:info.infoChangeId}, {createTimeMs:-1}, itemFileList);
// let itemFileList = ["unitName","uscc", "legalPerson", "yuanXiaoBanXueLeiXing", "unitMemberType", "uusinessLicenseUrl", "applicationForm", "desc", "rejectRemarks", "infoChangeOptionType", "infoChangeId", "yuanXiaoBanXueLeiXing", "legalPersonMail", "legalPersonPhone"];
let logInfo = checkChangeMap[info.userId];
let yuanXiaoBanXueLeiXing= logInfo.yuanXiaoBanXueLeiXing || info.yuanXiaoBanXueLeiXing;
let item = {
infoChangeOptionType:changeEnumValue(INFOCHANGEAPPLYTYPE, logInfo.infoChangeOptionType),
......@@ -574,6 +548,135 @@ export async function infomationChangeList({name, changeState, unitMemberType, u
dataList.push(item);
}
// if (name || changeState || unitMemberType.length || uscc || legalPerson || legalPersonPhone || legalPersonMail) {
// selectUserParam["$or"] = [];
// }
// if (name) {
// selectParam["$or"].push({unitName:{"$regex":name}});
// }
// if (changeState) {
// selectParam["$or"].push({infoChangeOptionType:changeState});
// // selectParam.infoChangeOptionType = changeState;
// }
// if (unitMemberType.length) {
// selectParam["$or"].push({unitMemberType:{"$in":unitMemberType}});
// // selectParam.unitMemberType = {"$in":unitMemberType};
// }
// if (uscc) {
// selectParam["$or"].push({uscc});
// // selectParam.uscc = uscc;
// }
// if (legalPerson) {
// selectParam["$or"].push({legalPerson:{"$regex":legalPerson}});
// // selectParam.legalPerson = {"$regex":legalPerson};
// }
// if (legalPersonPhone) {
// selectParam["$or"].push({legalPersonPhone})
// // selectParam.legalPersonPhone = legalPersonPhone;
// }
// if (legalPersonMail) {
// selectParam["$or"].push({legalPersonMail})
// // selectParam.legalPersonMail = legalPersonMail;
// }
// let selectHistoryParam:any = {};
// let isSelectHistory = false;
// if (name) {
// selectHistoryParam.unitName = {"$regex":name};
// isSelectHistory = true;
// }
// // if (changeState) {
// // selectHistoryParam.infoChangeOptionType = changeState;
// // isSelectHistory = true;
// // }
// if (unitMemberType.length) {
// selectHistoryParam.unitMemberType = {"$in":unitMemberType};
// isSelectHistory = true;
// }
// if (uscc) {
// selectHistoryParam.uscc = uscc;
// isSelectHistory = true;
// }
// if (legalPerson) {
// selectHistoryParam.legalPerson = {"$regex":legalPerson};
// isSelectHistory = true;
// }
// if (legalPersonPhone) {
// selectHistoryParam.legalPersonPhone = legalPersonPhone;
// isSelectHistory = true;
// }
// if (legalPersonMail) {
// selectHistoryParam.legalPersonMail = legalPersonMail;
// isSelectHistory = true;
// }
let checkHistoryDataList = [];
// if (isSelectHistory) {
// checkHistoryDataList.push("0");
// let dbHistoryList = await findToSort(TABLEENUM.资料变更审批历史表, selectHistoryParam, {createTimeMs:-1}, []);
// dbHistoryList.forEach(key => {
// checkHistoryDataList.push(key.userId);
// });
// }
// if (checkHistoryDataList.length) {
// // 去除数组userId重复项
// let uniqueList = checkHistoryDataList.filter((item, index) =>
// checkHistoryDataList.indexOf(item) === index
// );
// selectParam["$or"].push({userId:{"$in":uniqueList}})
// // selectParam.userId = {"$in":uniqueList}
// }
// let dbList = await findToSortToPage(TABLEENUM.用户表, selectParam, ["userId", "memberType", "userId", "unitName", "infoChangeId", "uscc", "legalPerson", "unitMemberType", "yuanXiaoBanXueLeiXing"], {infoChangeMs:-1}, pageNumber, pageSize);
// let dataCount = await findCount(TABLEENUM.用户表, selectParam);
// let dataList = [];
// for (let i = 0; i < dbList.length; i++) {
// let info = dbList[i];
// let itemFileList = ["unitName","uscc", "legalPerson", "yuanXiaoBanXueLeiXing", "unitMemberType", "uusinessLicenseUrl", "applicationForm", "desc", "rejectRemarks", "infoChangeOptionType", "infoChangeId", "yuanXiaoBanXueLeiXing", "legalPersonMail", "legalPersonPhone"];
// let logInfo = await findOnceToSort(TABLEENUM.资料变更审批历史表, {infoChangeId:info.infoChangeId}, {createTimeMs:-1}, itemFileList);
// let yuanXiaoBanXueLeiXing= logInfo.yuanXiaoBanXueLeiXing || info.yuanXiaoBanXueLeiXing;
// let item = {
// infoChangeOptionType:changeEnumValue(INFOCHANGEAPPLYTYPE, logInfo.infoChangeOptionType),
// infoChangeId:info.infoChangeId,
// unitName:logInfo.unitName,
// uscc:logInfo.uscc,
// legalPerson:logInfo.legalPerson,
// unitMemberType:changeEnumValue(MEMBERTYPEECCENUM, logInfo.unitMemberType),
// uusinessLicenseUrl:logInfo.uusinessLicenseUrl,
// applicationForm:logInfo.applicationForm,
// yuanXiaoBanXueLeiXing:changeEnumValue(BANXUELEIXING, yuanXiaoBanXueLeiXing),
// desc:logInfo.desc,
// unitNameChange:false,
// usccChange:false,
// unitMemberTypeChange:false,
// legalPersonChange:false,
// yuanXiaoBanXueLeiXingChange:false,
// memberType:changeEnumValue(MEMBERTYPE, info.memberType),
// userId:info.userId,
// legalPersonMail:logInfo.legalPersonMail || '',
// legalPersonPhone:logInfo.legalPersonPhone || '',
// legalPersonMailChange:false,
// legalPersonPhoneChange:false,
// rejectRemarks:logInfo.rejectRemarks || ""
// };
// if (logInfo.unitName != info.unitName) item.unitNameChange = true;
// if (logInfo.uscc != info.uscc) item.usccChange = true;
// if (logInfo.unitMemberType != info.unitMemberType) item.unitMemberTypeChange = true;
// if (logInfo.legalPerson != info.legalPerson) item.legalPersonChange = true;
// if (logInfo.yuanXiaoBanXueLeiXing != info.yuanXiaoBanXueLeiXing) item.yuanXiaoBanXueLeiXingChange = true;
// if (logInfo.legalPersonMail != info.legalPersonMail) item.legalPersonMailChange = true;
// if (logInfo.legalPersonPhone != info.legalPersonPhone) item.legalPersonPhoneChange = true;
// if (item.infoChangeOptionType == "驳回修改") item.infoChangeOptionType = "已驳回"; // 2025.02.25【驳回修改】文字修改为【已驳回】
// dataList.push(item);
// }
return {dataList, dataCount};
}
......@@ -631,6 +734,9 @@ export async function infomationChangePass({infoChangeId}) {
//发送邮件
await systemSendMail(userInfo.userId, MAILTYPE.变更已通过 );
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.变更已通过);
return successResult();
}
......@@ -680,6 +786,10 @@ export async function infomationChangeOut({infoChangeId, rejectRemarks}) {
//发送邮件
await systemSendMail(onceData.userId, MAILTYPE.变更驳回 );
let userInfo = await findOnce(TABLEENUM.用户表, {userId:onceData.userId}, ["infoChangeId", "infoChangeOptionType", "userId"]);
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.变更驳回);
return successResult();
}
......@@ -842,6 +952,10 @@ export async function infomationChangeManyPass({infoChangeIdList}) {
//发送邮件
await systemSendMail(onceData.userId, MAILTYPE.变更已通过 );
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.变更已通过);
}
......
......@@ -135,11 +135,11 @@ export async function testCallback(weChartPR) {
weChartState:WEICHARTPAYSTATE.已支付,
confirmReceipt:RECEIPTCONFIRMATION.收款确认,
confirmReceiptMs:new Date().valueOf(),
invoiceStatus:INVOICESTATUS.未开发票,
};
if (userInfo.memberType == MEMBERTYPE.单位会员) {
updateInfo.invoiceStatus = INVOICESTATUS.不具备开票条件;
}
if (oldInfo.invoiceStatus == INVOICESTATUS.不具备开票条件) updateInfo.invoiceStatus = INVOICESTATUS.未开发票;
await updateOneData(TABLEENUM.订单表, {weChartPR}, updateInfo);
//更新用户状态
let notPayCount = await findCount(TABLEENUM.订单表, {userId:oldInfo.userId, state:ORDERSTATE.未支付} );
......@@ -202,9 +202,9 @@ export async function payCallback(body) {
weChartState:WEICHARTPAYSTATE.已支付,
confirmReceipt:RECEIPTCONFIRMATION.收款确认,
confirmReceiptMs:new Date().valueOf(),
invoiceStatus:INVOICESTATUS.未开发票
};
if (oldInfo.memberCategory == MEMBERTYPE.个人会员 ) updateInfo.invoiceTime = new Date().valueOf();
if (oldInfo.invoiceStatus == INVOICESTATUS.不具备开票条件) updateInfo.invoiceStatus = INVOICESTATUS.未开发票;
await updateOneData(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}, updateInfo);
......
......@@ -3,7 +3,7 @@
*/
import moment = require("moment");
import { BANXUELEIXING, CERTIFICATETYPE, DOCUMENTTYPE, EDUCATION, INDIVIDUALMEMBERTYPE, LOGONSTATE, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, NATION, OPERATIONREHAVIOR, PAYMENTSTATUS, PROFCATEGORY, REGISTERFLOW, REGISTERFLOWCLIENT, SEX, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../../config/enum";
import { BANXUELEIXING, CERTIFICATETYPE, DOCUMENTTYPE, EDUCATION, INDIVIDUALMEMBERTYPE, LOGONSTATE, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, MSGTYPE, NATION, OPERATIONREHAVIOR, PAYMENTSTATUS, PROFCATEGORY, REGISTERFLOW, REGISTERFLOWCLIENT, SEX, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { addManyData, addOneData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model";
......@@ -15,7 +15,7 @@ import { extractData } from "../../util/piecemeal";
import { changeEnumValue } from "../../util/verificationEnum";
import { createOrder } from "./order";
import { getCityNameByCode } from "../../config/cityConfig";
import { sendPassNotice } from "../sms";
import { sendMessage, sendPassNotice } from "../sms";
import { SessionTimeMsConfig } from "../../config/serverConfig";
import { deleteOneData } from "../../data/delete";
import { systemSendMail } from "../mail";
......@@ -204,8 +204,9 @@ export async function submitDocument({name, memberType, documentId, phone, mail,
dbList.forEach(info => {
let item:any = extractData(info, SelectFiles);
/**处理枚举值 */
// if (!item.userRegisterState) item.userRegisterState = USERREGISTERSTATE.待审核;
// else item.userRegisterState = changeEnumValue(USERREGISTERSTATE, item.userRegisterState);
if (!item.userRegisterState) item.userRegisterState = USERREGISTERSTATE.待审核;
else item.userRegisterState = changeEnumValue(USERREGISTERSTATE, item.userRegisterState);
item.registerFlow = changeEnumValue(REGISTERFLOWCLIENT, item.registerFlow);
item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
item.sheng = getCityNameByCode(item.sheng);
......@@ -457,12 +458,15 @@ export async function adopt({id, session}) {
};
await addManyData(TABLEENUM.审批历史表, addApprovalHistory);
//发送短信
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
await sendPassNotice(userInfo.phone, smsName);
//发送邮件
await systemSendMail(userInfo.userId, MAILTYPE.审核通过以及缴费通知 );
//发送短信
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.审核通过以及缴费通知);
return successResult();
}
......@@ -547,7 +551,7 @@ export async function batchAdopt({idList, session}) {
* @param remarks 驳回理由
* @returns
*/
export async function reject({id, remarks}) {
export async function reject({id, remarks, rejectType}) {
let userId = id;
let userInfo = await findOnce(TABLEENUM.用户表, {userId, isAdmin:STATE.});
if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
......@@ -585,7 +589,11 @@ export async function reject({id, remarks}) {
await addManyData(TABLEENUM.审批历史表, addApprovalHistory);
//发送邮件
await systemSendMail(userInfo.userId, MAILTYPE.审核期间驳回通知 );
systemSendMail(userInfo.userId, MAILTYPE.审核期间驳回通知 );
//发短信
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.审核期间驳回通知, rejectType);
return successResult();
}
......
......@@ -3,7 +3,7 @@
*/
import moment = require("moment");
import { COSTTYPE, INVOICESTATUS, ISRECEIVE, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE } from "../../../config/enum";
import { COSTTYPE, INVOICESTATUS, ISRECEIVE, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, MSGTYPE, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE } from "../../../config/enum";
import { ERRORENUM } from "../../../config/errorEnum";
import { TABLEENUM } from "../../../data/models/model";
import { find, findCount, findOnce, findOnceToSort, findToPage, findToSortToPage } from "../../../data/select";
......@@ -14,6 +14,7 @@ import { updateOneData } from "../../../data/update";
import { addOneData } from "../../../data/add";
import { getEdition, successResult } from "../../../tools/system";
import { systemSendMail } from "../../mail";
import { sendMessage } from "../../sms";
/**
......@@ -174,17 +175,20 @@ export async function paidList({name, memberType, documentId, phone, mail, joinS
/**
* 发票管理-财务核对页-收款确认 success
* 财务核对页-收款确认 success
* @param id 订单id
*/
export async function confirmReceiptPass({id}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在);
// if (orderInfo.isFirst && !orderInfo.firstPayExamine ) throw new BizError(ERRORENUM.重复提交, '发票管理-财务核对页-收款确认', `提交通过时订单未通过待支付页的校验`);
// if (orderInfo.isFirst && !orderInfo.firstPayExamine ) throw new BizError(ERRORENUM.重复提交, '财务核对页-收款确认', `提交通过时订单未通过待支付页的校验`);
if (orderInfo.confirmReceipt != RECEIPTCONFIRMATION.待确认) throw new BizError(ERRORENUM.重复提交, '发票管理-财务核对页-收款确认', `提交通过时订单已经不是待确认 是${orderInfo.confirmReceipt}`);
let updateInfo:any = {confirmReceipt:RECEIPTCONFIRMATION.收款确认, confirmReceiptMs:new Date().valueOf()};
if (orderInfo.invoiceStatus != INVOICESTATUS.已开发票) updateInfo.invoiceStatus = INVOICESTATUS.未开发票;
let updateInfo:any = {
confirmReceipt:RECEIPTCONFIRMATION.收款确认,
confirmReceiptMs:new Date().valueOf()
};
if (orderInfo.invoiceStatus == INVOICESTATUS.不具备开票条件) updateInfo.invoiceStatus = INVOICESTATUS.未开发票;
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
let notPayCount = await findCount(TABLEENUM.订单表, {userId:orderInfo.userId, state:ORDERSTATE.未支付} );
......@@ -203,6 +207,7 @@ export async function confirmReceiptPass({id}) {
updateUserInfo.lifespanStartTime = orderInfo.orderCycleStart;
updateUserInfo.lifespanEndTime = orderInfo.orderCycleEnd;
}
if (orderInfo.isFirst) {
updateUserInfo.isFirstPay = true;
}
......@@ -221,6 +226,10 @@ export async function confirmReceiptPass({id}) {
//发送邮件
await systemSendMail(orderInfo.userId, MAILTYPE.会员缴费成功后针对线下汇款财务审核通过的时候发送 );
let userInfo = await findOnce(TABLEENUM.用户表, {userId:orderInfo.userId});
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.会员缴费成功后针对线下汇款财务审核通过的时候发送);
return successResult();
}
......@@ -257,8 +266,17 @@ export async function confirmReceiptOut({id, isReceive, returnsReasons}) {
if (isReceive == ISRECEIVE.提供账户_zkh需退款_ykh){
//发送邮件
await systemSendMail(orderInfo.userId, MAILTYPE.会员缴费财务驳回需退款 );
let userInfo = await findOnce(TABLEENUM.用户表, {userId:orderInfo.userId});
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.会员缴费财务驳回需退款);
} else {
await systemSendMail(orderInfo.userId, MAILTYPE.会员缴费财务驳回无需退款 );
let userInfo = await findOnce(TABLEENUM.用户表, {userId:orderInfo.userId});
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.会员缴费财务驳回无需退款);
}
......
......@@ -4,7 +4,7 @@
*/
import moment = require("moment");
import { INVOICESTATUS, ISPAYENUM, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, ORDEREXAMINE, ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE } from "../../../config/enum";
import { INVOICESTATUS, ISPAYENUM, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, MSGTYPE, ORDEREXAMINE, ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE } from "../../../config/enum";
import { TABLEENUM } from "../../../data/models/model";
import { find, findCount, findOnce, findOnceToSort, findToPage, findToSortToPage } from "../../../data/select";
import { extractData } from "../../../util/piecemeal";
......@@ -15,6 +15,7 @@ import { updateOneData } from "../../../data/update";
import { addOneData } from "../../../data/add";
import { successResult } from "../../../tools/system";
import { systemSendMail } from "../../mail";
import { sendMessage } from "../../sms";
/**
......@@ -149,6 +150,7 @@ export async function billStateList({name, memberType, documentId, invoiceApplyM
itemData.paymentMethod = changeEnumValue(PAYMENTTYPE, itemData.paymentMethod);
// itemData.isPay = changeEnumValue(ORDERSTATE, itemData.state);
if(info.confirmReceipt == RECEIPTCONFIRMATION.收款确认 && info.state == ORDERSTATE.已支付) itemData.isPay = "已支付";
else if (info.confirmReceipt != RECEIPTCONFIRMATION.收款确认 && info.state == ORDERSTATE.已支付) itemData.isPay = "核对中"; //费用核对里待审批和驳回列表里的数据都会显示核对中
// else if (info.refundSuccessful) itemData.isPay = "已退回";
......@@ -264,8 +266,11 @@ export async function upInvoice({id, invoiceUrl}) {
if(orderInfo.state == STATE.) {
//提前开票 发送邮件
await systemSendMail(orderInfo.userId, MAILTYPE.会员催缴通知提前开发票 );
}
let userInfo = await findOnce(TABLEENUM.用户表, {userId:orderInfo.userId});
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.会员催缴通知提前开发票);
}
return successResult();
}
......@@ -480,24 +485,17 @@ export async function billStateBatchAdopt({idList}) {
* @param pageNumber 当前页
*/
export async function invoicedList({name, memberType, documentId, invoiceExamineTime, phone, memberLevel, paymentType, isPay, weChartPR, state, pageNumber}) {
//校验参数
eccEnumValue("发票列表", "支付类型", PAYMENTTYPE, paymentType);
eccEnumValue("发票列表", "是否支付", ISPAYENUM, isPay );
let findParam:any = {
invoiceStatus:INVOICESTATUS.已开发票
};
if (invoiceExamineTime) {
findParam.invoiceExamineTime = {"$gt":invoiceExamineTime, "$lt":invoiceExamineTime};
}
/**用户表查询条件 */
/**组合 用户表 查询条件 */
let checkUserIdList = []
let itemParam:any = {};
let userTableParam:any = {};
let isSelectUser = false;
if (name) {
isSelectUser = true;
itemParam = {
userTableParam = {
"$or":[
{unitName:{"$regex":`${name}`}},
{name:{"$regex":`${name}`}}
......@@ -506,60 +504,66 @@ export async function invoicedList({name, memberType, documentId, invoiceExamine
}
if (memberType && memberType.length) {
isSelectUser = true;
itemParam["$or"] = [ {unitMemberType:{"$in":memberType}}, {individualMemberType:{"$in":memberType}} ];
userTableParam["$or"] = [ {unitMemberType:{"$in":memberType}}, {individualMemberType:{"$in":memberType}} ];
}
if (documentId) {
isSelectUser = true;
itemParam.documentId = documentId;
userTableParam.documentId = documentId;
}
// if (mail) {
// isSelectUser = true;
// itemParam.mail = mail;
// }
if (state) {
isSelectUser = true;
itemParam.memberState = state;
userTableParam.memberState = state;
}
if (memberLevel && memberLevel.length) {
isSelectUser = true;
itemParam.memberLevel = {"$in":memberLevel};
userTableParam.memberLevel = {"$in":memberLevel};
}
if (isSelectUser) {
let checkUserIdDataList = await find(TABLEENUM.用户表, itemParam, ["userId"]);
let checkUserIdDataList = await find(TABLEENUM.用户表, userTableParam, ["userId"]);
checkUserIdDataList.forEach(key => {
checkUserIdList.push(key.userId);
});
}
if (checkUserIdList.length) {
findParam.userId = {"$in":checkUserIdList}
}
/**组合 订单表 查询条件 */
let findParam:any = { invoiceStatus:INVOICESTATUS.已开发票 };
if (invoiceExamineTime) findParam.invoiceExamineTime = {"$gt":invoiceExamineTime, "$lt":invoiceExamineTime};
if (checkUserIdList.length) findParam.userId = {"$in":checkUserIdList};
if (phone) findParam.phone = phone;
if (paymentType) findParam.paymentMethod = paymentType;
if (isPay) findParam.state = isPay;
if (weChartPR) findParam.paymentNum = {"$regex":`${weChartPR}`};
let selectFile = ["id", "unitName", "orderCycleStart", "orderCycleEnd", "money", "invoiceExamineTime", "paymentMethod", "memberCategory", "state", "paymentNum", "userId", "desc", "invoiceMail", "confirmReceipt"];
let selectFile = ["id", "unitName", "orderCycleStart", "orderCycleEnd", "money", "invoiceExamineTime", "paymentMethod", "memberCategory", "state",
"paymentNum", "userId", "desc", "invoiceMail"];
//查询结果
let dbList = await findToPage(TABLEENUM.订单表, findParam, selectFile, pageNumber);
let dataCount = await findCount(TABLEENUM.订单表, findParam);
let dataList = [];
let itemFile = ["id", "unitName", "money", "paymentNum", "state", "userId", "memberCategory", "paymentMethod", "desc", "invoiceExamineTime", "invoiceMail"];
for (let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let itemData:any = extractData(info, itemFile);
if (!itemData.desc) itemData.desc = "";
itemData.joinTime = moment(info.orderCycleStart).format("YYYY-MM-DD");
itemData.memberType = changeEnumValue(MEMBERTYPE, itemData.memberCategory);
itemData.paymentMethod = changeEnumValue(PAYMENTTYPE, itemData.paymentMethod);
// itemData.cycle = `${moment(info.orderCycleStart).format("YYYY-MM-DD")}至${moment(info.orderCycleEnd).format("YYYY-MM-DD")}`;
itemData.cycle = `${moment(info.orderCycleStart).format("YYYY")}${moment(info.orderCycleEnd).format("YYYY")}`;
itemData.isPay = changeEnumValue(ORDERSTATE, itemData.state);
itemData.isPay = ""
if(info.confirmReceipt == RECEIPTCONFIRMATION.收款确认 && info.state == ORDERSTATE.已支付) itemData.isPay = "已支付";
else if (info.confirmReceipt != RECEIPTCONFIRMATION.收款确认 && info.state == ORDERSTATE.已支付) itemData.isPay = "核对中"; //费用核对里待审批和驳回列表里的数据都会显示核对中
// else if (info.refundSuccessful) itemData.isPay = "已退回";
else itemData.isPay = "未支付";
itemData.invoiceExamineTime = info.invoiceExamineTime ? moment(info.invoiceExamineTime).format("YYYY-MM-DD") : '-';
let userInfo = await findOnce(TABLEENUM.用户表, {userId:itemData.userId}, ["userId", "memberState", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType", "mail"])
if(userInfo) {
if(userInfo.memberType == MEMBERTYPE.个人会员) {
......@@ -572,10 +576,10 @@ export async function invoicedList({name, memberType, documentId, invoiceExamine
}
itemData.memberLevel = changeEnumValue(MEMBERLEVEL, userInfo.memberLevel);
}
itemData.memberState = changeEnumValue(MEMBERSTATE, userInfo.memberState);
itemData.name = userInfo.name;
itemData.invoiceExamineTime = info.invoiceExamineTime ? moment(info.invoiceExamineTime).format("YYYY-MM-DD") : '-';
/**会员状态显示修改为:只记录当前一笔订单的状态,如:已支付订单状态显示正常 */
// itemData.memberState = changeEnumValue(MEMBERSTATE, userInfo.memberState); //修改前的
itemData.memberState = (info.state == ORDERSTATE.已支付 && info.confirmReceipt == RECEIPTCONFIRMATION.收款确认) ? "正常" : "异常" ; //修改后的
dataList.push(itemData);
}
......
......@@ -90,6 +90,10 @@ export async function getMemberData({userId}) {
if(baseInfo.shi) baseInfo.shiName = getCityNameByCode(baseInfo.shi);
if(baseInfo.qu) baseInfo.quName = getCityNameByCode(baseInfo.qu);
if (baseInfo.sheng == "-") baseInfo.sheng = "";
if (baseInfo.shi == "-") baseInfo.shi = "";
if (baseInfo.qu == "-") baseInfo.qu = "";
return {topInfo, baseInfo, majorInfo, otherAttachment};
}
......@@ -528,7 +532,7 @@ export async function isNeedSupplement({userId}) {
// "yuanXiaoKeYanFuZeRenDianHua", "jiaoXueFuZeRenXinMing", "jiaoXueFuZeRenDianHua"]
// };
const DwRequiredConf = {
"基本信息": ["sheng", "shi", "qu", "addres", "contactPerson", "contactPersonDuties", "phone", "applicationForm"],
"基本信息": ["sheng", "shi", "qu", "addres", "contactPerson", "contactPersonDuties", "phone"],// "applicationForm"
"单位信息": ["yuanXiaoZhuGuanBuMen", "yuanXiaoFuZeRen", "yuanXiaoFuZeRenZhiWu",
"yuanXiaoFuZeRenDianHua", "yuanXiaoBanGongFuZeRen", "yuanXiaoBanGongFuZeRenDianHua", "ZhuYaoFuZeRenYouXiang", "yuanXiaoKeYanFuZeRen",
"yuanXiaoKeYanFuZeRenDianHua", "jiaoXueFuZeRenXinMing", "jiaoXueFuZeRenDianHua"]
......@@ -825,7 +829,8 @@ export async function infomationChangeUpdate({userId, unitName, uscc, legalPerso
legalPersonMail,
legalPersonPhone,
infoChangeOptionType,
createTimeMs:new Date().valueOf()
createTimeMs:new Date().valueOf(),
isDraft:0
};
await updateOneData(TABLEENUM.用户表, {userId}, {infoChangeId:applyInfo.infoChangeId, infoChangeMs:new Date().valueOf(), infoChangeOptionType});
......@@ -836,6 +841,39 @@ export async function infomationChangeUpdate({userId, unitName, uscc, legalPerso
/**
* 保存 资料变更
* @param param0
* @returns
*/
export async function infomationSave({userId, unitName, uscc, legalPerson, unitMemberType, uusinessLicenseUrl, applicationForm, desc, yuanXiaoBanXueLeiXing, legalPersonMail, legalPersonPhone}) {
let userInfo = await findOnce(TABLEENUM.用户表, {userId}, ["memberType"]);
if (userInfo.memberType != MEMBERTYPE.单位会员) throw new BizError(ERRORENUM.非单位会员不可操作);
let applyToSort = await findOnceToSort(TABLEENUM.资料变更审批历史表, {userId}, {createTimeMs:-1});
let infoChangeOptionType = INFOCHANGEAPPLYTYPE.待审批;
if (applyToSort) {
//新增了状态:驳回提交,当上次审批状态为驳回修改时,当前提交状态为驳回提交
if (applyToSort.infoChangeOptionType == INFOCHANGEAPPLYTYPE.驳回修改) infoChangeOptionType = INFOCHANGEAPPLYTYPE.驳回提交;
}
if (applyToSort.infoChangeOptionType == INFOCHANGEAPPLYTYPE.驳回提交 || applyToSort.infoChangeOptionType == INFOCHANGEAPPLYTYPE.通过 ) {
return successResult();
}
//直接修改
let updateInfo = {
unitName, uscc, legalPerson, unitMemberType, uusinessLicenseUrl, applicationForm, desc, yuanXiaoBanXueLeiXing, legalPersonMail, legalPersonPhone
};
await updateOneData(TABLEENUM.资料变更审批历史表, {applyId:applyToSort.applyId}, updateInfo);
return successResult();
}
/**
* 资料变更回显
* @param param0
* @returns
......@@ -879,7 +917,7 @@ export async function infomationChangeInfo({userId}) {
if (infomationChangeHistoryInfo.infoChangeOptionType == INFOCHANGEAPPLYTYPE.待审批 || infomationChangeHistoryInfo.infoChangeOptionType == INFOCHANGEAPPLYTYPE.驳回提交) {
isUpdate = false;
}
else isUpdate = true;
else isUpdate = true;//true是可以编辑
}
const UnitConfig = ["unitMemberType", "yuanXiaoBanXueLeiXing", "yuanXiaoZhuGuanBuMen", "yuanXiaoFuZeRen", "yuanXiaoFuZeRenZhiWu", "yuanXiaoBanGongFuZeRenZhiWu",
"yuanXiaoFuZeRenDianHua", "yuanXiaoBanGongFuZeRen", "yuanXiaoBanGongFuZeRenDianHua", "ZhuYaoFuZeRenYouXiang", "yuanXiaoKeYanFuZeRen", "yuanXiaoKeYanFuZeRenDianHua",
......
......@@ -378,6 +378,8 @@ export async function unpaidList({name, memberType, documentId, phone, mail, joi
export async function getRenewalPeriod({name, memberType, documentId, phone, mail, joinStartTime, joinEndTime, memberLevel, session, pageNumber}) {
const NowMs = new Date().valueOf();
//lifespanEndTime:{"$gt":NowMs + (90 * 24 * 3600 * 1000), "$gt":NowMs},
/**查询条件 */
let selectParam:any = {
userRegisterState:USERREGISTERSTATE.通过,
isAdmin:STATE.,
......@@ -392,10 +394,8 @@ export async function getRenewalPeriod({name, memberType, documentId, phone, mai
gracePeriodEndTime:{"$lt":NowMs}
}
]
}
if (session) {
selectParam.session = session;
}
};
if (session) { selectParam.session = session; }
if (name){
if (!selectParam["$and"]) selectParam["$and"] = [];
selectParam["$and"].push({
......@@ -405,9 +405,7 @@ export async function getRenewalPeriod({name, memberType, documentId, phone, mai
]
});
}
if (joinStartTime) {
selectParam["joinTime"] = {"$gt":joinStartTime};
}
if (joinStartTime) { selectParam["joinTime"] = {"$gt":joinStartTime}; }
if (joinEndTime) {
if (!selectParam["joinTime"]) selectParam["joinTime"] = {};
selectParam["joinTime"]["$lt"] = joinEndTime;
......@@ -490,41 +488,46 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
state:ORDERSTATE.已支付,
paymentMethod:PAYMENTTYPE.后台上传,
payTime:new Date().valueOf(),
confirmReceipt:RECEIPTCONFIRMATION.收款确认,
confirmReceipt:RECEIPTCONFIRMATION.待确认,//20250521-> 收款确认 改成 待确认
confirmReceiptMs:new Date().valueOf()
};
await updateOneData(TABLEENUM.订单表, {id:orderId}, updateInfo);
//2024年12月21日版本修改 修改成线下付款的用户不需要审核
let notPayCount = await findCount(TABLEENUM.订单表, {userId:orderInfo.userId, state:ORDERSTATE.未支付} );
let updateUserInfo:any = {};
/**只有一笔欠费时才更新用户状态 */
if (notPayCount < 1) {
let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {orderCycleEnd:-1}, ["orderCycleStart","orderCycleEnd"]);
updateUserInfo.lifespanStartTime = newOrderInfo.orderCycleStart,
updateUserInfo.lifespanEndTime = newOrderInfo.orderCycleEnd,
updateUserInfo.isGracePeriod = STATE.,
updateUserInfo.gracePeriodEndTime = 0,
updateUserInfo.memberState = MEMBERSTATE.正常,
updateUserInfo.paymentStatus = PAYMENTSTATUS.已支付
} else {//非一笔订单 要更新会员到期时间 到 用户表
updateUserInfo.lifespanStartTime = orderInfo.orderCycleStart;
updateUserInfo.lifespanEndTime = orderInfo.orderCycleEnd;
}
if (orderInfo.isFirst) {
updateUserInfo.isFirstPay = true;
}
if (Object.keys(updateUserInfo).length) await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo);
//添加日志
// let notPayCount = await findCount(TABLEENUM.订单表, {userId:orderInfo.userId, state:ORDERSTATE.未支付} );
// let updateUserInfo:any = {};
// /**只有一笔欠费时才更新用户状态 */
// if (notPayCount < 1) {
// let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {orderCycleEnd:-1}, ["orderCycleStart","orderCycleEnd"]);
// updateUserInfo.lifespanStartTime = newOrderInfo.orderCycleStart,
// updateUserInfo.lifespanEndTime = newOrderInfo.orderCycleEnd,
// updateUserInfo.isGracePeriod = STATE.否,
// updateUserInfo.gracePeriodEndTime = 0,
// updateUserInfo.memberState = MEMBERSTATE.正常,
// updateUserInfo.paymentStatus = PAYMENTSTATUS.已支付
// } else {//非一笔订单 要更新会员到期时间 到 用户表
// updateUserInfo.lifespanStartTime = orderInfo.orderCycleStart;
// updateUserInfo.lifespanEndTime = orderInfo.orderCycleEnd;
// }
// if (orderInfo.isFirst) {
// updateUserInfo.isFirstPay = true;
// }
// if (Object.keys(updateUserInfo).length) await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo);
// 添加日志
// let addLogInfo = {
// orderId:orderId,
// operationTime:new Date().valueOf(),
// operationBehavior:ORDEREXAMINE.审核时间,
// isReceiveMoney:true,
// remarks:``
// };
let addLogInfo = {
orderId:orderId,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.审核时间,
isReceiveMoney:true,
remarks:``
operationBehavior:ORDEREXAMINE.用户提交,
remarks:`后台上传`
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
......
......@@ -494,6 +494,10 @@ export async function addActivity({userId, form}) {
}
await addManyData(TABLEENUM.活动通知已读状态表, addReadInfo);
// //发短信
// let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
// sendMessage(userInfo.phone, {name:smsName}, MSGTYPE., rejectType);
return successResult();
}
......
......@@ -2,7 +2,7 @@
* 订单相关 success
*/
import moment = require("moment");
import { AUDITINGCLIENT, COSTTYPE, INDIVIDUALMEMBERTYPE, INVOICESTATUS, ISPAYENUM, ISRECEIVE, ISRECEIVEMONEY, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, MYORDERLISTPAYSTATE, MYORDERLISTSTATE, OPERATIONREHAVIOR, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { AUDITINGCLIENT, COSTTYPE, INDIVIDUALMEMBERTYPE, INVOICESTATUS, ISPAYENUM, ISRECEIVE, ISRECEIVEMONEY, MAILTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, MSGTYPE, MYORDERLISTPAYSTATE, MYORDERLISTSTATE, OPERATIONREHAVIOR, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { generateOrderId, successResult } from "../../tools/system";
import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
import { addOneData } from "../../data/add";
......@@ -13,6 +13,7 @@ import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum";
import { updateOneData } from "../../data/update";
import { systemSendMail } from "../mail";
import { sendMessage } from "../sms";
// db.getCollection('orders').insertOne({ "paymentNum" : "", "offlinePaymentUrl" : "", "weChartPR" : "", "weChartState" : 0, "isFirst" : true, "firstPayExamine" : false, "confirmReceipt" : 0, "confirmReceiptMs" : 0, "invoiceStatus" : 1, "advanceInvoice" : false, "isReceive" : 0, "isReplenishReturnInfo" : false, "refundSuccessful" : false, "isSueInvoicesInAdvance" : false, "id" : "3f9b9936f12ed619f11458ac46ff3835", "orderCycleStart" : 1498262400100.0, "orderCycleEnd" : 1529798400100.0, "unitName" : "西安市艺术学校", "money" : 2000, "paymentMethod" : 0, "userId" : "f2bed663f23c43b751876be9eae93334", "loginId" : "西安市艺术学校1960", "memberCategory" : 2, "invoiceAdd" : "", "state" : 2, "phone" : "13991991926", "ct" : 1734334302795})
......@@ -412,7 +413,8 @@ export async function getInvoiceStatus({id}) {
if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.state == ORDERSTATE.已支付 && orderInfo.confirmReceipt != RECEIPTCONFIRMATION.退回) throw new BizError(ERRORENUM.该订单已支付);
let updateInfo = {
let updateInfo:any = {
paymentNum:weChartPR,
offlinePaymentUrl,
state:ORDERSTATE.已支付,
......@@ -421,10 +423,12 @@ export async function getInvoiceStatus({id}) {
confirmReceipt:RECEIPTCONFIRMATION.待确认,
invoiceMail,
desc,
invoiceStatus:INVOICESTATUS.未开发票,
advanceInvoice:true,
invoiceTime:new Date().valueOf()
};
if (orderInfo.invoiceStatus == INVOICESTATUS.不具备开票条件 ) {
updateInfo.invoiceStatus = INVOICESTATUS.未开发票;
}
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
......@@ -691,6 +695,11 @@ export async function refundApprove({id, refundImgUrl}) {
//发送邮件
await systemSendMail(orderInfo.userId, MAILTYPE.财务退款通知 );
//发短信
let userInfo = await findOnce(TABLEENUM.用户表, {userId:orderInfo.userId});
let smsName = userInfo.memberType == MEMBERTYPE.个人会员 ? userInfo.name : userInfo.unitName;
sendMessage(userInfo.phone, {name:smsName}, MSGTYPE.财务退款通知);
return successResult();
}
......
......@@ -18,9 +18,14 @@ import { eccFormParam } from "../util/verificationParam";
import { sendALSMS } from "./sms";
/**
* 注册状态
* 注册状态 =false时不可以注册 =true时可以注册
*/
let RegisterStartQueue = false;
/**
* 更新注册状态
* (后台使用接口)
*/
export async function updateRegisterStart({start}) {
let updateInfo = "";
if (start == true) {
......@@ -36,17 +41,27 @@ export async function updateRegisterStart({start}) {
return {isSuccess:true}
}
/**
* 启动服务的时候会检查系统表中的是否开放注册,随后会同步到这里来
* (系统使用)
* @param start
*/
export function updateRegisterStartQueue(start) {
RegisterStartQueue = start;
}
/**
* 前端查询是否开放注册
* (前端使用接口)
* @returns
*/
export function findRegisterStart() {
return {data:RegisterStartQueue}
}
/**
* 会员注册【个人会员】【流程一】success
* 会员注册【个人会员】【流程一】
* @param form
*/
export async function memberRegister1({form}) {
......@@ -97,7 +112,7 @@ export async function memberRegister1({form}) {
/**
* 会员注册【个人会员】【流程二】success
* 会员注册【个人会员】【流程二】
* @param form
* @param userId
* @returns
......
// This file is auto-generated, don't edit it
import { MAILTYPE, MSGTYPE } from "../config/enum";
import { ERRORENUM } from "../config/errorEnum";
import { BizError } from "../util/bizError";
import { logError } from "../util/log";
import { changeEnumValue } from "../util/verificationEnum";
// 依赖的模块可通过下载工程中的模块依赖文件或右上角的获取 SDK 依赖信息查看
const Dypnsapi20170525 = require('@alicloud/dypnsapi20170525');
const Dysmsapi20170525 = require('@alicloud/dysmsapi20170525');
const OpenApi = require('@alicloud/openapi-client');
const Util = require('@alicloud/tea-util');
const Credential = require('@alicloud/credentials');
const Tea = require('@alicloud/tea-typescript');
let smsClient;
export async function initSMS() {
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378664.html。
let config = new OpenApi.Config({
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
// // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
// // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378664.html。
// let config = new OpenApi.Config({
// // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
// accessKeyId: 'LTAI5tD7Finu3fxFMCi3415S',
// // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
// accessKeySecret: 'sbPR0AdDPfjm7v2NSffk5apPm6UClV',
// });
// // Endpoint 请参考 https://api.aliyun.com/product/Dypnsapi
// config.endpoint = `dypnsapi.aliyuncs.com`;
// smsClient = new Dypnsapi20170525.default(config);
const credentialsConfig = new Credential.Config({
// 凭证类型。
type: 'access_key',
// 设置accessKeyId值,此处已从环境变量中获取accessKeyId为例。
accessKeyId: 'LTAI5tD7Finu3fxFMCi3415S',
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET
// 设置accessKeySecret值,此处已从环境变量中获取accessKeySecret为例
accessKeySecret: 'sbPR0AdDPfjm7v2NSffk5apPm6UClV',
});
// Endpoint 请参考 https://api.aliyun.com/product/Dypnsapi
config.endpoint = `dypnsapi.aliyuncs.com`;
smsClient = new Dypnsapi20170525.default(config);
let credentialClient = new Credential.default(credentialsConfig);
const ecsConfig = new OpenApi.Config();
ecsConfig.endpoint = 'dysmsapi.aliyuncs.com'; // 配置云产品服务接入地址(endpoint)。
ecsConfig.credential = credentialClient; // 使用Credentials配置凭证。
smsClient = new Dysmsapi20170525.default(ecsConfig);
}
export async function sendALSMS(code:string, phone:string ) {
try {
/**先生成request */
let requstParam = new Dypnsapi20170525.SendSmsVerifyCodeRequest({
phoneNumber: phone,
let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
phoneNumbers: phone,
signName: '中国艺术职业教育学会',
templateCode: 'SMS_296230597',
templateParam: `{"code":"${code}"}`,
// templateParam:code
});
//发起调用
let runtime = new Util.RuntimeOptions({});
const resp = await smsClient.sendSmsVerifyCodeWithOptions(requstParam, runtime);
} catch(err) {
throw new BizError(ERRORENUM.短信验证码发送失败, err);
let runtime = new Util.RuntimeOptions({ });
try {
// 复制代码运行请自行打印 API 的返回值
await smsClient.sendSmsWithOptions(sendSmsRequest, runtime);
} catch (error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
console.log(error.message);
// 诊断地址
console.log(error.data["Recommend"]);
Util.default.assertAsString(error.message);
}
return
// try {
// /**先生成request */
// let requstParam = new Dypnsapi20170525.SendSmsRequest({
// phoneNumber: phone,
// signName: '中国艺术职业教育学会',
// templateCode: 'SMS_468140012',//老的 SMS_296230597
// templateParam: `{"code":"${code}"}`,
// // templateParam:code
// });
// //发起调用+
// let runtime = new Util.RuntimeOptions({});
// const resp = await smsClient.sendSmsWithOptions(requstParam, runtime);
// console.log(resp)
// } catch(err) {
// throw new BizError(ERRORENUM.短信验证码发送失败, err);
// }
}
export async function sendPassNotice(phone:string, name:string) {
try {
/**先生成request */
let requstParam = new Dypnsapi20170525.SendSmsVerifyCodeRequest({
phoneNumber: phone,
let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
phoneNumbers: phone,
signName: '中国艺术职业教育学会',
templateCode: 'SMS_467160001',
templateParam: `{"name":"${name}"}`,
// templateParam:code
});
//发起调用
let runtime = new Util.RuntimeOptions({});
const resp = await smsClient.sendSmsVerifyCodeWithOptions(requstParam, runtime);
let runtime = new Util.RuntimeOptions({ });
try {
// 复制代码运行请自行打印 API 的返回值
await smsClient.sendSmsWithOptions(sendSmsRequest, runtime);
} catch (error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
console.log(error.message);
// 诊断地址
console.log(error.data["Recommend"]);
Util.default.assertAsString(error.message);
}
}
export async function test() {
// await check();
let phone1 = "18711017326";//17274689187
await sendALSMS("3321", phone1);
// let phone2 = "16621071125";
// await sendALSMS("1234", phone2);
// let phone3 = "18120935727";
// await sendALSMS("1234", phone3);
// let param = {name:"测试测试1"};
// await sendMessage(phone, param, MSGTYPE.审核期间驳回通知, 1);
// await sendMessage(phone, param, MSGTYPE.审核期间驳回通知, 2);
// await sendMessage(phone, param, MSGTYPE.审核通过以及缴费通知);
// await sendMessage(phone, param, MSGTYPE.会员缴费财务驳回无需退款);
// await sendMessage(phone, param, MSGTYPE.会员缴费财务驳回需退款);
// await sendMessage(phone, param, MSGTYPE.会员缴费成功后针对线下汇款财务审核通过的时候发送);
// await sendMessage(phone, param, MSGTYPE.会员会费到期缴费通知);
// await sendMessage(phone, param, MSGTYPE.会员催缴通知提前开发票);
// await sendMessage(phone, param, MSGTYPE.会员宽限期最后一天);
// await sendMessage(phone, param, MSGTYPE.往期欠费通知);
// await sendMessage(phone, param, MSGTYPE.变更驳回);
// await sendMessage(phone, param, MSGTYPE.变更已通过);
// await sendMessage(phone, param, MSGTYPE.会员活动or会议通知);
// await sendMessage(phone, param, MSGTYPE.会员活动or会议催促未报名人员通知);
// await sendMessage(phone, param, MSGTYPE.财务退款通知);
console.log("验证码测试完成");
}
export async function sendMessage(phone, param, type, subType?) {
let templateCode = "";
let templateParam = JSON.stringify(param);
switch (type) {
case MSGTYPE.审核期间驳回通知:
if (subType == 1) templateCode = "SMS_488195065";//重新提交
else templateCode = "SMS_488280139";//不提示重新提交
break;
case MSGTYPE.审核通过以及缴费通知:
templateCode = "SMS_488270030";
break;
case MSGTYPE.会员缴费财务驳回无需退款:
templateCode = "SMS_488035070";
break;
case MSGTYPE.会员缴费财务驳回需退款:
templateCode = "SMS_488035070";
break;
case MSGTYPE.会员缴费成功后针对线下汇款财务审核通过的时候发送:
templateCode = "SMS_488060068";
break;
case MSGTYPE.会员会费到期缴费通知://这里还没做
templateCode = "SMS_488040064";
break;
case MSGTYPE.会员催缴通知提前开发票:
templateCode = "SMS_488135059";
break;
case MSGTYPE.会员宽限期最后一天:
templateCode = "SMS_488040064";
break;
case MSGTYPE.往期欠费通知:
templateCode = "SMS_488285027";
break;
case MSGTYPE.变更驳回:
templateCode = "SMS_488285032";
break;
case MSGTYPE.变更已通过:
templateCode = "SMS_488155068";
break;
case MSGTYPE.会员活动or会议通知:
templateCode = "SMS_488295010";
break;
case MSGTYPE.会员活动or会议催促未报名人员通知:
templateCode = "SMS_488205063";
break;
case MSGTYPE.财务退款通知:
templateCode = "SMS_488180065";
break;
}
try {
let sendSmsRequest = new Dysmsapi20170525.SendSmsRequest({
phoneNumbers: phone,
signName: '中国艺术职业教育学会',
templateCode,
templateParam,
});
let runtime = new Util.RuntimeOptions({ });
await smsClient.sendSmsWithOptions(sendSmsRequest, runtime);
} catch(err) {
logError("发送通知短信失败", err);
console.log("发送通知短信失败", err);
logError("发送通知短信失败", phone, err);
console.log("发送通知短信失败",phone, err);
}
}
\ No newline at end of file
......@@ -68,7 +68,7 @@ export async function createUserOrder() {
addCount += 1;
//发送邮件
await systemSendMail(userId, MAILTYPE.会员进入宽限期 );
// await systemSendMail(userId, MAILTYPE.会员进入宽限期 );
}
}
}
......
......@@ -887,6 +887,25 @@ export enum MAILTYPE {
}
export enum MSGTYPE {
审核期间驳回通知 = 1,
审核通过以及缴费通知,
会员缴费财务驳回无需退款,
会员缴费财务驳回需退款,
会员缴费成功后针对线下汇款财务审核通过的时候发送,
会员会费到期缴费通知,
会员催缴通知提前开发票,
往期欠费通知,
会员宽限期最后一天,
变更驳回,
变更已通过,
会员活动or会议通知,
会员活动or会议催促未报名人员通知,
财务退款通知,
邮箱获取验证码
}
/**
* 是否需要退款
*/
......
......@@ -77,7 +77,6 @@ export enum AUDITINGCOLUMNS {
单位名称 = "unitName",
办学类型 = "yuanXiaoBanXueLeiXing",
单位简介 = "danWeiJianJie",
会员职务 = "memberLevel",
// 标签 = "lableId",
法人代表 = "legalPerson",
法人联系电话 = "legalPersonPhone",
......@@ -103,8 +102,6 @@ export enum AUDITINGCOLUMNS {
科研负责人电话 = "yuanXiaoKeYanFuZeRenDianHua",
教学负责人姓名 = "jiaoXueFuZeRenXinMing",
教学负责人电话 = "jiaoXueFuZeRenDianHua",
届次 = "session",
入会时间 = "joinTime",
}
......@@ -116,7 +113,6 @@ export enum APPLYAUDITINGCOLUMNS {
姓名 = "name",
性别 = "sex",
工作单位 = "unitName",
职务 = "duties",
职称 = "workTitle",
出生年月 = "birth",
证件类型 = "documentType",
......@@ -125,14 +121,11 @@ export enum APPLYAUDITINGCOLUMNS {
电子邮箱 = "mail",
会员职务 = "memberLevel",
// 标签 = "lableId",
会员级别 = "individualMemberType",
专业类别 = "profCategory",
学历 = "education",
民族 = "nation",
省市区 = "shengshiqu",
通信地址 = "addres",
届次 = "session",
入会时间 = "joinTime",
通信地址 = "addres"
}
......
......@@ -104,6 +104,7 @@ enum TABLEENUM {
const ModelArray = [
{
tableName:TABLEENUM.学会概括,
source:TABLESOURCEENUM.mongo,
schema:{
id:{ type:'String', index:true },
......@@ -683,6 +684,7 @@ const ModelArray = [
yuanXiaoBanXueLeiXing:'Number',//办学类型
rejectRemarks:'String',//变更驳回理由
createTimeMs:'Number',//日志时间
isDraft:{type:'Number', default:0},//是否是草稿
}
},
{
......
......@@ -257,3 +257,8 @@ export async function initOrderData() {
await addManyData(TABLEENUM.订单表, dataList);
console.log("订单数据模拟成功");
}
export async function updateOrderAndUser() {
}
\ No newline at end of file
import { changeDB, getMailData, getData, getUnitData, outPutMember } from "./biz/cleanData";
import { sendMail } from "./biz/mail";
import { testCallback } from "./biz/member/cost";
import { initActivity } from "./biz/member/msgActivity";
import { getSession } from "./biz/public";
import { initSaveUnsubmitted } from "./biz/register";
import { initSMS } from "./biz/sms";
import { initSMS, test } from "./biz/sms";
import { initSystemTask } from "./biz/task";
import { initConfig, systemConfig} from "./config/serverConfig";
import { initDataBaseModel } from "./data/db/db";
import { httpServer } from "./net/http_server";
import { getEdition } from "./tools/system";
async function lanuch() {
......@@ -32,13 +29,17 @@ async function lanuch() {
// console.log(moment(1498262400000).format("YYYY-MM-DD HH:mm:SS"))
console.log("服务初始化成功");
// await sendMail("18711017326@163.com");
// await testCallback("dc1a1414b4368dd4ea657d2d36ba554a")
// await testCallback("ef48bd04cce245fb26cc5e52362fe144")
// await getUnitData();
// await changeDB();
// await getData();
// await outPutMember();
// await test();
console.log(getEdition(2018, 1));
}
lanuch();
......@@ -8,7 +8,6 @@ import * as homePageBiz from "../../biz/member/homePage";
import * as rightsMgmtBiz from "../../biz/member/rightsMgmt";
import * as mailBiz from "../../biz/mail";
import * as ossBiz from "../../biz/oss";
import { ADMINLV } from "../../config/enum";
export const FirstName = '会员管理路由';
export const FirstRouter = '/manage/member';
......@@ -736,7 +735,8 @@ export const Config = {
subUrl:'/examine/reject',
param:[
{key:"id", type:"String", desc:"待审核列表返回的用户id"},
{key:"remarks", type:"String", desc:"驳回理由"}
{key:"remarks", type:"String", desc:"驳回理由"},
{key:"rejectType", type:"Number", desc:"驳回类型"},
],
bindBiz:examineBiz.reject
},
......@@ -1223,6 +1223,23 @@ export const Config = {
bindBiz:homePageBiz.infomationChangeUpdate
},
{
apiName:"资料变更保存资料",
subUrl:'/homepage/infomationchange/save',
param:[
{key:"unitName", type:"String", desc:"单位会员名称", notMustHave:true},
{key:"uscc", type:"String", desc:"统一信用代码", notMustHave:true},
{key:"legalPerson", type:"String", desc:"法人代表", notMustHave:true},
{key:"unitMemberType", type:"Number", desc:"单位会员类型", notMustHave:true},
{key:"yuanXiaoBanXueLeiXing", type:"Number", desc:"帮学类型", notMustHave:true},
{key:"uusinessLicenseUrl", type:"String", desc:"营业执照", notMustHave:true},
{key:"applicationForm", type:"String", desc:"盖章申请表", notMustHave:true},
{key:"desc", type:"String", desc:"描述位", notMustHave:true},
{key:"legalPersonMail", type:"String", desc:"法人邮件", notMustHave:true},
{key:"legalPersonPhone", type:"String", desc:"法人电话", notMustHave:true},
],
bindBiz:homePageBiz.infomationSave
},
{
apiName:"资料变更回显",
subUrl:'/homepage/infomationchange/info',
param:[],
......@@ -1301,8 +1318,8 @@ export const Config = {
// legalPersonPhone:{type:'String', desc:'法人联系电话', notMustHave:false},
// legalPersonMail:{type:'String', desc:'法人邮箱', notMustHave:false},
// unitMail:{type:'String', desc:'单位电子邮箱', notMustHave:false}, 2024.4.22日的需求 去掉
contactPerson:{type:'String', desc:'日常联系人', notMustHave:false},
contactPersonDuties:{type:'String', desc:'日常联系人职务', notMustHave:false},
// contactPerson:{type:'String', desc:'日常联系人', notMustHave:false},
// contactPersonDuties:{type:'String', desc:'日常联系人职务', notMustHave:false},
phone:{type:'String', desc:'日常联系人手机', notMustHave:false},
mail:{type:'String', desc:'日常联系人邮箱', notMustHave:false},
// uusinessLicenseUrl:{type:'String', desc:'营业执照复印件', notMustHave:false},
......@@ -1313,7 +1330,7 @@ export const Config = {
yuanXiaoFuZeRen:{type:'String', desc:'院校主要负责人', notMustHave:false},
yuanXiaoFuZeRenZhiWu:{type:'String', desc:'院校主要负责人职务', notMustHave:false},
yuanXiaoFuZeRenDianHua:{type:'String', desc:'院校主要负责人电话', notMustHave:false},
yuanXiaoBanGongFuZeRen:{type:'String', desc:'院校办公负责人', notMustHave:false},
yuanXiaoBanGongFuZeRen:{type:'String', desc:'院校办公负责人',notMustHave:false},
yuanXiaoBanGongFuZeRenDianHua:{type:'String', desc:'院校办公负责人电话', notMustHave:false},
ZhuYaoFuZeRenYouXiang:{type:'String', desc:'主要负责人邮箱', notMustHave:false},
yuanXiaoKeYanFuZeRen:{type:'String', desc:'院校科研负责人', notMustHave:false},
......
......@@ -121,6 +121,7 @@ export function getSessionByEdition(year, month) {
}
/**
* 获取届次
* @param year 入会年份
......
{
{
"_id": ObjectId("66d7b6ef491f213cc0c0a77e"),
"token": "",
"tokenMs": 0,
"isInput": true,
"inputUserChangePwd": false,
"adminLv": [],
"registerFlow": 2,
"isAdmin": 0,
"userRegisterState": 4,
"memberState": 2,
"memberLevel": 1,
"isFirstPay": false,
"isGracePeriod": 0,
"profCategory": [15],
"auxiliaryMaterial": [],
"lableId": [],
"isBlackUser": 0,
"saveUnsubmitted": 1,
"userId": "in_a78c2485d04a479d447af20313638754",
"memberType": 1,
"loginId": "张文婷",
"pwd": "111111",
"phone": "15012862855",
"individualMemberType": 1,
"firstStep": 1551398400,
"sex": 2,
"name": "张文婷",
"documentId": "150203198901154525",
"unitName": "深圳市娜乔传播有限公司",
"duties": "爵士舞教学管理高级教师",
"sheng": "440000",
"shi": "440300",
"qu": "440306",
"addres": "深圳市宝安区福海街道凤凰里",
"workTitle": "3",
"studyResume": "1999-9-2004-5北京盛基艺术学校舞蹈系\r\n2004-9-2008-6广东省海洋大学艺术学院舞蹈系",
"profAchievement": "2008年参加深圳市宝安区教师比赛三等奖\r\n2009参加深圳市宝安区少儿艺术舞蹈专场比赛三等奖\r\n2010参加深圳市宝安区少儿艺术舞蹈专场比赛二等奖\r\n2012年参加全国优秀特长生深圳赛区舞蹈专场比赛金奖并获得优秀教师称号\r\n2015年参加第四届广东省爵士舞街舞表演公开赛教师组三等奖\r\n2015年参加深圳宝体杯少儿舞蹈大赛荣获表演一等奖\r\n2016年参加全国爵士舞考级中心流行舞大赛教师组一等奖\r\n2017年全国爵士舞考级中心,心筑八年,酉新起舞教师组比赛二等奖\r\n2018年担任深圳五和小学艺术节舞蹈指导教师\r\n2019年梅林小学艺术节班级节目指导并荣获金奖\r\n2020年第五届肖邦国际青少年分赛指导一等奖;金奖\r\n在中国艺术职业教育学会社会艺术水平考级工作成绩突出颁发CEFA 2020年度优秀考官证书",
"otherEMP": "无",
"otherPROF": "爵士舞专业高级教师及考官",
"documentType": 1,
"askForTime": 1551398400000,
"auditTime": 1553731200000,
"joinTime": 1553731200000,
"session": 202001,
"paymentStatus": 2,
"lifespanStartTime": 1553731200000,
"lifespanEndTime": 1585353600000,
"memberNum": "CEFA-20190328-44-00074-GR",
"gracePeriodEndTime": 0,
"mail": "103923630@qq.com",
"nation": 1,
"birth": 600796801000,
"__v": 0
}
// db.getCollection('users').find({name:"张文婷"},{session:202001, askForTime:1551398400000, auditTime:1553731200000, joinTime:1553731200000, lifespanStartTime: 1553731200000, lifespanEndTime:1585353600000, "memberNum": "CEFA-20190328-44-00074-GR"
// })
{
"paymentNum": "",
"offlinePaymentUrl": "",
"weChartPR": "",
"weChartState": 0,
"isFirst": false,
"firstPayExamine": false,
"confirmReceipt": 0,
"invoiceStatus": 1,
"advanceInvoice": false,
"isReplenishReturnInfo": false,
"id": "a376618fcba587456d362fa50e7944a4",
"orderCycleStart": 1711584000000,
"orderCycleEnd": 1743120000000,
"unitName": "深圳市娜乔传播有限公司",
"money": 100,
"paymentMethod": 0,
"userId": "dee167d8112bdf0692362a02d3385d47",
"loginId": "张文婷",
"memberCategory": 1,
"invoiceAdd": "",
"state": 2,
"phone": "15012862855",
"ct": 1733102457715
},
{
"paymentNum": "",
"offlinePaymentUrl": "",
"weChartPR": "",
"weChartState": 0,
"isFirst": false,
"firstPayExamine": false,
"confirmReceipt": 0,
"confirmReceiptMs": 0,
"invoiceStatus": 1,
"advanceInvoice": false,
"isReceive": 0,
"isReplenishReturnInfo": false,
"refundSuccessful": false,
"refundReject": false,
"isSueInvoicesInAdvance": false,
"id": "0575fafc719737a5aeff9213d2f30804",
"orderCycleStart": 1743120000000,
"orderCycleEnd": 1774656000000,
"unitName": "深圳市娜乔传播有限公司",
"money": 100,
"paymentMethod": 0,
"userId": "in_a78c2485d04a479d447af20313638754",
"loginId": "张文婷",
"memberCategory": 1,
"invoiceAdd": "",
"state": 2,
"phone": "15012862855",
"ct": 1743140068992
}
///////////////////////////////////新的原来的订单
{ "_id" : ObjectId("682c02e2b427c4463080acf8"), "paymentNum" : "", "offlinePaymentUrl" : "", "weChartPR" : "", "weChartState" : 0, "isFirst" : true, "firstPayExamine" : false, "confirmReceipt" : 0, "confirmReceiptMs" : 0, "invoiceStatus" : 1, "advanceInvoice" : false, "isReceive" : 0, "isReplenishReturnInfo" : false, "refundSuccessful" : false, "refundReject" : false, "isSueInvoicesInAdvance" : false, "id" : "11f70ab521c1d1e9f5b3b80d68cbfcd6", "orderCycleStart" : 1747714787026, "orderCycleEnd" : 1779250787026, "unitName" : "深圳翼星潮童", "money" : 100, "paymentMethod" : 0, "userId" : "dee167d8112bdf0692362a02d3385d47", "loginId" : "张文婷", "memberCategory" : 1, "invoiceAdd" : "", "state" : 2, "phone" : "15012862855", "ct" : 1747714786106, "__v" : 0 }
{ "_id" : ObjectId("66744eea736c1a556f1af1dc"), "token" : "8533e5dbe32f531274bb7d61a907e1bc", "tokenMs" : 1744784172347, "isInput" : false, "inputUserChangePwd" : false, "adminLv" : [ ], "registerFlow" : 2, "isAdmin" : 0, "userRegisterState" : 4, "memberState" : 2, "memberLevel" : 1, "isFirstPay" : false, "isGracePeriod" : 0, "profCategory" : [ 3 ], "auxiliaryMaterial" : [ ], "userId" : "dee167d8112bdf0692362a02d3385d47", "memberType" : 1, "loginId" : "张文婷", "mail" : "103923630@qq.com", "pwd" : "LjR19881126115", "phone" : "15012862855", "individualMemberType" : 1, "__v" : 0, "isBlackUser" : 0, "lastLoginMs" : 1744782893631, "academicCERTUrl" : "https://wenhuabu-files.oss-cn-beijing.aliyuncs.com/dee167d8112bdf0692362a02d3385d47/zhucexinxi/1744784128520/张文婷学历认证.jpeg", "addres" : "福海街道凤凰里", "askForTime" : 1744784172348, "birth" : 600796800000, "cardUrlBack" : "https://wenhuabu-files.oss-cn-beijing.aliyuncs.com/dee167d8112bdf0692362a02d3385d47/zhucexinxi/1744784039362/image.jpg", "cardUrlJust" : "https://wenhuabu-files.oss-cn-beijing.aliyuncs.com/dee167d8112bdf0692362a02d3385d47/zhucexinxi/1744784004319/image.jpg", "documentId" : "150203198901154525", "documentType" : 1, "duties" : "教学主管", "education" : 3, "name" : "张文婷", "nation" : 1, "photoUrl" : "https://wenhuabu-files.oss-cn-beijing.aliyuncs.com/dee167d8112bdf0692362a02d3385d47/zhucexinxi/1744783055983/ae4a39b39ea0484203a3a21d74f89961.jpeg", "profAchievement" : "<p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加深圳市宝安区教师比赛三等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加深圳市宝安区少儿艺术舞蹈专场比赛三等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加深圳市宝安区少儿艺术舞蹈专场比赛二等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加全国优秀特长生深圳赛区舞蹈专场比赛金奖并获得优秀教师称号</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加第四届广东省爵士舞街舞表演公开赛教师组三等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加深圳宝体杯少儿舞蹈大赛荣获表演一等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">参加全国爵士舞考级中心流行舞大赛教师组一等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">全国爵士舞考级中心,心筑八年,酉新起舞教师组比赛二等奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">舞颂九州舞蹈比赛荣获金奖,优秀指导教师</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">小兰花舞蹈比赛荣获金奖</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">担任南山外国语/育才二小社团活动街舞导师/学校艺术节,运动会班级节目指导并荣获金奖/多次担任舞蹈评委</span></p><p class=\"p1\" style=\"font-stretch: normal; font-size: 19px; line-height: normal; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal; caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); text-align: start; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.3); -webkit-text-size-adjust: auto;\"><span class=\"s1\" style=\"font-family: UICTFontTextStyleBody; font-size: 19px;\">担任马士基/平安保险年会舞蹈编排</span></p>", "qu" : "440306", "saveUnsubmitted" : 1, "sex" : 2, "sheng" : "440000", "shi" : "440300", "studyResume" : "1999年9月-2004年6月北京盛基艺术学校<div>2004年9月-2008年6月广东海洋大学艺术学院舞蹈编导</div>", "unitName" : "深圳翼星潮童", "workResume" : "2008年9月深圳东方英文书院<div>2013年10月至今翼星潮童(原小天鹅模特舞蹈艺术团)</div>", "workTitle" : "高级", "logonState" : 4, "otherEMP" : "", "otherPROF" : "", "professionalCERTUrl" : "", "auditTime" : 1747714786026, "joinTime" : 1745406929499, "lifespanEndTime" : 1745406930499, "lifespanStartTime" : 1745406929499, "memberNum" : "CEFA-20250423-44-01485-GR", "paymentStatus" : 2, "session" : 202501 }
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