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": {}
}
}
......@@ -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;
}
......@@ -218,9 +223,13 @@ export async function confirmReceiptPass({id}) {
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
//发送邮件
//发送邮件
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";
/**
......@@ -148,6 +149,7 @@ export async function billStateList({name, memberType, documentId, invoiceApplyM
itemData.memberType = changeEnumValue(MEMBERTYPE, itemData.memberCategory);
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 = "核对中"; //费用核对里待审批和驳回列表里的数据都会显示核对中
......@@ -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"]);
// 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);
// 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);
......@@ -688,9 +692,14 @@ export async function refundApprove({id, refundImgUrl}) {
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
//发送邮件
//发送邮件
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
......
......@@ -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 },
......@@ -682,7 +683,8 @@ const ModelArray = [
legalPersonPhone:"String",//法人电话
yuanXiaoBanXueLeiXing:'Number',//办学类型
rejectRemarks:'String',//变更驳回理由
createTimeMs:'Number',//日志时间
createTimeMs:'Number',//日志时间
isDraft:{type:'Number', default:0},//是否是草稿
}
},
{
......
......@@ -256,4 +256,9 @@ 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 入会年份
......
This diff is collapsed. Click to expand it.
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