Commit 79efc42c by lixinming

no message

parent d793fb9c
......@@ -2,7 +2,7 @@
* 会员管理 【权限管理】success
*/
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, UNITMEMBERTYPE } from "../../config/enum";
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MEMBERTYPEECCENUM, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findOnce, findToPage } from "../../data/select";
......@@ -23,7 +23,7 @@ import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
*/
export async function getAuthority({unitName, memberLevel, memberCategory, pageNumber}) {
/**查询条件 */
let selectParam:any = {};
let selectParam:any = {isAdmin:STATE.};
if (unitName) selectParam.unitName = unitName;
if (memberLevel) selectParam.memberLevel = memberLevel;
if (memberCategory) {
......@@ -31,20 +31,18 @@ export async function getAuthority({unitName, memberLevel, memberCategory, pageN
else selectParam.individualMemberType = memberCategory;
}
const SelectFiles = ["userId", "memberState", "unitName", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType"];
const SelectFiles = ["userId", "memberState", "unitName", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType", "memberCategory"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, SelectFiles, pageNumber);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
const ResultFiles = ["userId", "memberState", "memberLevel", "memberType"];
const ResultFiles = ["userId", "memberState", "memberLevel", "memberType", "unitName"];
let dataList = [];
dbList.forEach(info => {
let item:any = extractData(info, ResultFiles);
if (info.memberType == MEMBERTYPE.个人会员) {
item.unitName = info.name;
item.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, info.individualMemberType);//会员类别/级别
}
else{
item.unitName = info.unitName;
item.memberCategory = changeEnumValue(UNITMEMBERTYPE, info.unitMemberType);//会员类别/级别
}
item.memberState = changeEnumValue(MEMBERSTATE, item.memberState);
......@@ -108,21 +106,19 @@ export async function freeze({id}) {
*/
export async function authorityEcho({id}) {
const SelectFiles = ["userId", "unitName", "name", "memberLevel", "memberType", "individualMemberType", "unitMemberType"];
let dbList = await findOnce(TABLEENUM.用户表, {userId:id}, SelectFiles);
if (!dbList || !dbList.userId) throw new BizError(ERRORENUM.目标数据不存在);
let dbInfo = await findOnce(TABLEENUM.用户表, {userId:id}, SelectFiles);
if (!dbInfo || !dbInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
const ResultFiles = ["unitName", "name", "memberLevel", "memberType"];
let dataInfo:any = extractData(dbList, ResultFiles);
let dataInfo:any = extractData(dbInfo, ResultFiles);
if (dataInfo.memberType == MEMBERTYPE.个人会员) {
dataInfo.unitName = dataInfo.name;
dataInfo.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, dataInfo.individualMemberType);//会员类别/级别
dataInfo.memberCategory = changeEnumValue(INDIVIDUALMEMBERTYPE, dbInfo.individualMemberType);//会员类别/级别
}
else{
dataInfo.unitName = dataInfo.unitName;
dataInfo.memberCategory = changeEnumValue(UNITMEMBERTYPE, dataInfo.unitMemberType);//会员类别/级别
dataInfo.memberCategory = changeEnumValue(UNITMEMBERTYPE, dbInfo.unitMemberType);//会员类别/级别
}
dataInfo.memberLevel = changeEnumValue(MEMBERLEVEL, dataInfo.memberLevel);//会员等级、职务
dataInfo.memberLevel = changeEnumValue(MEMBERLEVEL, dbInfo.memberLevel);//会员等级、职务
return {dataInfo};
}
......
......@@ -5,7 +5,6 @@
import { MEMBERSTATE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, WEICHARTPAYSTATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findOnce, findOnceToSort } from "../../data/select";
import { eccEnumValue } from "../../util/verificationEnum";
import * as path from "path";
const WxPay = require('wechatpay-node-v3');
import * as fs from 'fs';
......@@ -32,10 +31,13 @@ const pay = new WxPay({
* @returns
*/
export async function placeAnOrder({id}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id}, ["id", "loginId", "userId", "memberCategory", "money", "orderCycleStart", "orderCycleEnd","weChartState", "state"]);
let orderInfo = await findOnce(TABLEENUM.订单表, {id}, ["id", "loginId", "userId", "memberCategory", "money", "orderCycleStart", "orderCycleEnd","weChartState", "state", "weChartCreatePayMs"]);
if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.订单不存在);
if (orderInfo.state == ORDERSTATE.已支付) throw new BizError(ERRORENUM.该订单已支付);
if (orderInfo.weChartState != WEICHARTPAYSTATE.未提交 ) throw new BizError(ERRORENUM.该订单正在支付);
if (orderInfo.weChartCreatePayMs && orderInfo.weChartState == WEICHARTPAYSTATE.未支付) {
if (new Date(orderInfo.weChartCreatePayMs).valueOf() < (new Date().valueOf() + (15 * 60 * 1000)) ) throw new BizError(ERRORENUM.该订单正在支付);
}
/**生成 out_trade_no */
let out_trade_no = generateWXOrderId(orderInfo.memberCategory, orderInfo.userId);
let desc = `${orderInfo.loginId}_${moment(orderInfo.orderCycleStart).format("YYYY-MM-DD")}${moment(orderInfo.orderCycleEnd).format("YYYY-MM-DD")}`;
......@@ -55,29 +57,48 @@ export async function placeAnOrder({id}) {
const result = await pay.transactions_native(Param);
if (result.status != 200) throw new BizError(ERRORENUM.调起微信支付失败);
await updateOneData(TABLEENUM.订单表, {id}, {weChartPR:out_trade_no, paymentMethod:PAYMENTTYPE.微信支付, weChartState:WEICHARTPAYSTATE.未支付 });
let updateInfo = {
weChartCreatePayMs:new Date().valueOf(),
weChartPR:out_trade_no, paymentMethod:PAYMENTTYPE.微信支付, weChartState:WEICHARTPAYSTATE.未支付
};
await updateOneData(TABLEENUM.订单表, {id}, updateInfo );
return {code_url:result.code_url, weChartPR:out_trade_no};
}
async function close(id:string) {
await updateOneData(TABLEENUM.订单表, {id}, { weChartState:WEICHARTPAYSTATE.未提交, weChartCreatePayMs:0 });
return {state:WEICHARTPAYSTATE.未提交, msg:"订单已关闭"};
}
/**
* 订单查询状态【前端调用】
*/
export async function orderState({id, weChartPR}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id, weChartPR}, ["id"]);
let orderInfo = await findOnce(TABLEENUM.订单表, {id, weChartPR}, ["id", "state", "weChartCreatePayMs", "weChartState"]);
if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.订单不存在);
if (orderInfo.state == ORDERSTATE.已支付) {
return {state:WEICHARTPAYSTATE.已支付, msg:"已支付"};//已支付
}
const result = await pay.query({out_trade_no: weChartPR});
if (result.status != 200 && result.status != 204 ) throw new BizError(ERRORENUM.查看微信支付状态失败);
if (result.trade_state == 'CLOSED' ) {
await updateOneData(TABLEENUM.订单表, {id}, { weChartState:WEICHARTPAYSTATE.未支付 });
return {state:WEICHARTPAYSTATE.未提交, msg:"订单已关闭"};
if (orderInfo.weChartState == WEICHARTPAYSTATE.未支付) {
if (!orderInfo.weChartCreatePayMs) return {state:WEICHARTPAYSTATE.未提交, msg:"订单未提交"};
if ( (new Date(orderInfo.weChartCreatePayMs).valueOf() + (15 * 60 * 1000)) > new Date().valueOf() ) {
const weChartResult = await pay.query({out_trade_no: weChartPR});
if (weChartResult.status != 200 && weChartResult.status != 204 ) throw new BizError(ERRORENUM.查看微信支付状态失败);
if (weChartResult.trade_state == 'CLOSED' ) {
await updateOneData(TABLEENUM.订单表, {id}, { weChartState:WEICHARTPAYSTATE.未提交, weChartCreatePayMs:0 });
let result = await close(id);
return result;
}
return {state:WEICHARTPAYSTATE.未支付, msg:result.trade_state_desc};
return {state:WEICHARTPAYSTATE.未支付, msg:weChartResult.trade_state_desc};
} else {
/**超过15分钟主动关闭订单 */
let result = await close(id);
return result;
}
}
return {state:WEICHARTPAYSTATE.未提交, msg:"订单未提交"};
}
......@@ -90,7 +111,7 @@ export async function orderClose({id, weChartPR}) {
await pay.close(weChartPR);
await updateOneData(TABLEENUM.订单表, {id}, { weChartState:WEICHARTPAYSTATE.未提交 });
await close(id);
return successResult();
}
......@@ -113,6 +134,7 @@ export async function payCallback(body) {
state:ORDERSTATE.已支付,
paymentMethod:PAYMENTTYPE.微信支付,
payTime:new Date().valueOf(),
weChartState:WEICHARTPAYSTATE.已支付
};
if (!oldInfo.isFirst) updateInfo.confirmReceipt = RECEIPTCONFIRMATION.待确认;
......@@ -128,6 +150,7 @@ export async function payCallback(body) {
gracePeriodEndTime:0,
memberState:MEMBERSTATE.正常,
paymentStatus:PAYMENTSTATUS.已支付
};
if (oldInfo.isFirst) {
updateUserInfo.isFirstPay = true;
......@@ -135,14 +158,13 @@ export async function payCallback(body) {
await updateOneData(TABLEENUM.用户表, {userId:oldInfo.userId}, updateUserInfo);
}
return {
code:"SUCCESS",
message:"成功"
}
} else {
await pay.close(wechartCallbackData.out_trade_no);
await updateOneData(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}, { weChartState:WEICHARTPAYSTATE.未提交, weChartCreatePayMs:0 });
throw new BizError(ERRORENUM.支付失败, wechartCallbackData.trade_state_desc);
}
} else {
......
......@@ -15,6 +15,7 @@ import { generateSystemId, successResult } from "../../tools/system";
import { BizError } from "../../util/bizError";
import { extractData } from "../../util/piecemeal";
import { eccEnumValue } from "../../util/verificationEnum";
import { eccFormParam } from "../../util/verificationParam";
/**
......@@ -30,7 +31,7 @@ export async function getMemberData({userId}) {
let topSelectFiles = ["loginId", "memberType", "userRegisterState", "integral", "joinTime", "lifespanStartTime", "lifespanEndTime", "memberLevel"];
let baseSelectFiles = [];
let majorSelectFiles = [];
let otherAttachmentFiles = [];
let otherAttachment:any= {};
/**判断会员类型,个人会员与单位会员返回不同字段 */
if (oldInfo.memberType == MEMBERTYPE.单位会员) {
baseSelectFiles = ["userId", "unitName", "uscc", "legalPerson", "legalPersonPhone", "legalPersonMail", "unitMail", "contactPerson",
......@@ -40,12 +41,12 @@ export async function getMemberData({userId}) {
"yuanXiaoKeYanFuZeRenDianHua", "jiaoXueFuZeRenXinMing", "jiaoXueFuZeRenDianHua"];
/**获取单位科研成果数据 */
let oldKeYanList = await find(TABLEENUM.单位所获得科研成果表, {userId}, ["id", "startTime", "endTime", "describe"]);
let otherAttachmentFiles = [];
if (!otherAttachment.dataList) otherAttachment.dataList = [];
oldKeYanList.forEach(info => {
otherAttachmentFiles.push({
otherAttachment.dataList.push({
id:info.id,
startTime: moment(info.startTime).format("YYYY-MM-DD"),
endTime: moment(info.endTime).format("YYYY-MM-DD"),
startTime: info.startTime,
endTime: info.endTime,
describe:info.describe
});
})
......@@ -54,14 +55,15 @@ export async function getMemberData({userId}) {
baseSelectFiles = ["userId", "name", "sex", "nation", "birth", "documentType", "documentId", "sheng", "shi", "qu", "phone", "mail",
"addres", "photoUrl", "education", "uscc", "unitName"];
majorSelectFiles = ["unitName", "duties", "workTitle", "profCategory", "studyResume", "workResume", "profAchievement", "otherEMP", "otherPROF"];
otherAttachmentFiles = ["cardUrl", "academicCERTUrl", "professionalCERTUrl", "auxiliaryMaterial"];
let otherAttachmentFiles = ["cardUrl", "academicCERTUrl", "professionalCERTUrl", "auxiliaryMaterial"];
otherAttachment = extractData(oldInfo, otherAttachmentFiles);
}
/**返回指定配置字段 */
let topInfo:any = extractData(oldInfo, topSelectFiles);
let baseInfo:any = extractData(oldInfo, baseSelectFiles);
let majorInfo:any = extractData(oldInfo, majorSelectFiles);
let otherAttachment:any = extractData(oldInfo, otherAttachmentFiles);
/**处理枚举值 */
topInfo.integral = 0;
......@@ -89,6 +91,15 @@ export async function getMemberData({userId}) {
* @returns
*/
export async function unitMemberUpdate({form, keyanForm, userId}) {
const keyanFormItemConfig = {
startTime: 'Number',
endTime: 'Number',
describe: 'String'
};
keyanForm.forEach(item => {
eccFormParam("单位会员修改", keyanFormItemConfig, item );
});
let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
......@@ -100,16 +111,21 @@ export async function unitMemberUpdate({form, keyanForm, userId}) {
await updateOneData(TABLEENUM.用户表, {userId}, form);
/**删除对应userId科研成果 */
let oldKeYanList = await find(TABLEENUM.单位所获得科研成果表, {userId});
if (!oldKeYanList || !oldKeYanList.id) throw new BizError(ERRORENUM.目标数据不存在);
let oldKeYanList= await find(TABLEENUM.单位所获得科研成果表, {userId});
if (oldKeYanList && oldKeYanList.length) {
await deleteManyData(TABLEENUM.单位所获得科研成果表, {userId});
}
/**添加新的科研信息 */
let addList = [];
for (let i = 0; i < keyanForm.length; i++) {
keyanForm[i].id = generateSystemId(TABLEENUM.单位所获得科研成果表, userId);
keyanForm[i].userId = userId;
addList.push(keyanForm);
let { startTime, endTime, describe } = keyanForm[i];
addList.push({
id:generateSystemId(TABLEENUM.单位所获得科研成果表, userId),
userId,
startTime, endTime, describe
});
}
await addManyData(TABLEENUM.单位所获得科研成果表, addList);
......@@ -137,42 +153,38 @@ export async function unitMemberUpdate({form, keyanForm, userId}) {
* 缴费消息提醒
* @param userId 登录的用户id
*/
export async function getXiaoXiZhongXin ({userId}) {
let oldInfo = await findOnce(TABLEENUM.用户表, {userId}, ["userId", "lifespanEndTime", "isGracePeriod", "gracePeriodEndTime", "lifespanStartTime"]);
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
export async function getXiaoXiZhongXin({userId}) {
const SelectFiles = ["userId", "lifespanEndTime", "isGracePeriod", "gracePeriodEndTime", "lifespanStartTime"];
let oldInfo = await findOnce(TABLEENUM.用户表, {userId, isAdmin:STATE.}, SelectFiles);
let dataInfo:any = extractData(oldInfo, ["lifespanStartTime", "lifespanEndTime"]);
const NowMs = new Date().valueOf();
/**判断是否宽限期 */
if (dataInfo.isGracePeriod == STATE.) {
/**
* 判断会费到期时间
*/
switch (oldInfo.lifespanEndTime) {
case oldInfo.lifespanEndTime > NowMs+(90*24*3600*1000):
dataInfo["membershipFees"] = "大于90天";
break;
case oldInfo.lifespanEndTime-(90*24*3600*1000) <= NowMs && oldInfo.lifespanEndTime > NowMs-(24*3600*1000):
dataInfo["membershipFees"] = "不足90天";
break;
case NowMs <= oldInfo.lifespanEndTime+(30*24*3600*1000) && NowMs > oldInfo.lifespanEndTime+(24*3600*1000):
dataInfo["membershipFees"] = "过期30天内";
break;
case NowMs > oldInfo.lifespanEndTime+(30*24*3600*1000) && NowMs <= oldInfo.lifespanEndTime+(90*24*3600*1000):
dataInfo["membershipFees"] = "过期90天内";
break;
case NowMs > oldInfo.lifespanEndTime+(90*24*3600*1000) && NowMs <= oldInfo.lifespanEndTime+(365*24*3600*1000):
dataInfo["membershipFees"] = "过期1年内";
break;
case NowMs > oldInfo.lifespanEndTime+(365*24*3600*1000):
dataInfo["membershipFees"] = "过期1年外";
break;
let str = '';
if (oldInfo.isGracePeriod == STATE. && oldInfo.gracePeriodEndTime > NowMs) str = "宽限期中";
else {
if (NowMs > oldInfo.lifespanEndTime) {
str = '过期';
if (NowMs > oldInfo.lifespanEndTime + (90*24*3600*1000)){
str += '1年外';
} else if ( NowMs > oldInfo.lifespanEndTime + (90*24*3600*1000) ) {
str += '1年内';
} else if (NowMs > oldInfo.lifespanEndTime + (30*24*3600*1000)) {
str += '90天内';
} else {
str += '30天内';
}
} else {
if (oldInfo.gracePeriodEndTime > NowMs) dataInfo["membershipFees"] = "宽限期中";
if (NowMs > oldInfo.lifespanEndTime - (90*24*3600*1000) ) {
str = "不足90天";
} else {
str = "大于90天";
}
}
}
dataInfo.membershipFees = str;
return {dataInfo};
}
......
......@@ -2,7 +2,7 @@
* 会员管理逻辑
*/
import { MEMBERSTATE, MEMBERLEVEL, DOCUMENTTYPE, NATION, PROFCATEGORY, MEMBERTYPE, USERREGISTERSTATE, STATE, UNITMEMBERTYPE, ADMINLV } from "../../config/enum";
import { MEMBERSTATE, MEMBERLEVEL, DOCUMENTTYPE, NATION, PROFCATEGORY, MEMBERTYPE, USERREGISTERSTATE, STATE, UNITMEMBERTYPE, ADMINLV, ADMINTYPE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findOnceToSort, findToPage, findToSort } from "../../data/select";
......@@ -15,6 +15,7 @@ import { addManyData, addOneData } from "../../data/add";
import { deleteManyData, deleteOneData } from "../../data/delete";
import moment = require("moment");
import { getCityNameByCode } from "../../config/cityConfig";
import { eccFormParam } from "../../util/verificationParam";
/**
......@@ -104,8 +105,8 @@ export async function unitMemberDetails({id}) {
oldKeYanList.forEach(info => {
scientificResearch.push({
id:info.id,
startTime: moment(info.startTime).format("YYYY-MM-DD"),
endTime: moment(info.endTime).format("YYYY-MM-DD"),
startTime:info.startTime,
endTime:info.endTime,
describe:info.describe
});
})
......@@ -122,6 +123,15 @@ export async function unitMemberDetails({id}) {
* @returns
*/
export async function unitMemberUpdate({form, keyanForm, id}) {
const keyanFormItemConfig = {
startTime: 'Number',
endTime: 'Number',
describe: 'String'
};
keyanForm.forEach(item => {
eccFormParam("单位会员修改", keyanFormItemConfig, item );
});
let oldInfo = await findOnce(TABLEENUM.用户表, {userId:id});
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
......@@ -133,16 +143,21 @@ export async function unitMemberUpdate({form, keyanForm, id}) {
await updateOneData(TABLEENUM.用户表, {userId:id}, form);
/**删除对应userId科研成果 */
let oldKeYanInfo = await find(TABLEENUM.单位所获得科研成果表, {userId:id});
if (!oldKeYanInfo || !oldKeYanInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
let oldKeYanList= await find(TABLEENUM.单位所获得科研成果表, {userId:id});
if (oldKeYanList && oldKeYanList.length) {
await deleteManyData(TABLEENUM.单位所获得科研成果表, {userId:id});
}
/**添加新的科研信息 */
let addList = [];
for (let i = 0; i < keyanForm.length; i++) {
keyanForm[i].id = generateSystemId(TABLEENUM.单位所获得科研成果表, id);
keyanForm[i].userId = id;
addList.push(keyanForm);
let { startTime, endTime, describe } = keyanForm[i];
addList.push({
id:generateSystemId(TABLEENUM.单位所获得科研成果表, id),
userId:id,
startTime, endTime, describe
});
}
await addManyData(TABLEENUM.单位所获得科研成果表, addList);
......@@ -229,10 +244,10 @@ export async function individualMemberDetails({id}) {
topInfo.memberLevel = changeEnumValue(MEMBERLEVEL, topInfo.memberLevel);
let basicInfo:any = extractData(oldInfo, IndividualBasicConfig);
basicInfo.documentType = changeEnumValue(DOCUMENTTYPE, basicInfo.documentType);
basicInfo.nation = changeEnumValue(NATION, basicInfo.nation);
// basicInfo.documentType = changeEnumValue(DOCUMENTTYPE, basicInfo.documentType);
// basicInfo.nation = changeEnumValue(NATION, basicInfo.nation);
/**获取订单表新社会信用代码和新发票抬头 */
let orderInfo = await findOnce(TABLEENUM.订单表, {userId:id});
let orderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:id}, {ct:-1});
if (!orderInfo || !orderInfo.userId) {
basicInfo.newUscc = "-";
basicInfo.newUnitName = "-";
......@@ -242,7 +257,7 @@ export async function individualMemberDetails({id}) {
}
let specialityInfo:any = extractData(oldInfo, SpecialityConfig);
basicInfo.profCategory = changeEnumValue(PROFCATEGORY, basicInfo.profCategory);
// basicInfo.profCategory = changeEnumValue(PROFCATEGORY, basicInfo.profCategory);
let otherAttachment:any = extractData(oldInfo, ["cardUrl", "academicCERTUrl", "professionalCERTUrl", "auxiliaryMaterial"]);
......@@ -277,11 +292,12 @@ export async function systemBase({userId}) {
});
let dataInfo = {
isAdmin:userInfo.isAdmin == STATE.,
name:userInfo.name,
name:userInfo.isAdmin ? changeEnumValue(ADMINTYPE, userInfo.adminType ) : userInfo.name,
userId:userInfo.userId,
token:userInfo.token,
adminLv,
superAdmin
superAdmin,
timeMs:moment(userInfo.lastLoginMs).format("YYYY-MM-DD HH:mm:SS"),
}
return {dataInfo}
......
......@@ -256,17 +256,19 @@ export async function confirmReceiptOut({id}) {
* @param param0
*/
export async function billStateList({unitName, paymentType, isPay, pageNumber}) {
eccEnumValue("发票列表", "支付类型", PAYMENTTYPE, paymentType);
eccEnumValue("发票列表", "是否支付", ISPAYENUM, isPay );
let findParam:any = {
invoiceStatus:INVOICESTATUS.未开发票
};
if (unitName) findParam.unitName = {"$regex":unitName};
if (paymentType) findParam.paymentMethod = paymentType;
if (isPay) findParam.state = isPay
if (paymentType) {
eccEnumValue("发票列表", "支付类型", PAYMENTTYPE, paymentType);
findParam.paymentMethod = paymentType;
}
if (isPay) findParam.state = isPay;
let selectFile = ["id", "unitName", "orderCycleStart", "orderCycleEnd", "money", "paymentMethod", "memberCategory", "state", "paymentNum" ];
let selectFile = ["id", "unitName", "orderCycleStart", "orderCycleEnd", "money", "paymentMethod", "memberCategory", "state", "paymentNum", "userId" ];
let dbList = await findToPage(TABLEENUM.订单表, findParam, selectFile, pageNumber);
let dataCount = await findCount(TABLEENUM.订单表, findParam);
......@@ -401,15 +403,6 @@ export async function transferScreenshot({id}) {
}
/**
* 个人页待订单列表 success
* @param param0
......@@ -420,16 +413,16 @@ export async function orderList({userId, type}) {
if (type == ORDERSTATE.已支付) findParam.state = ORDERSTATE.已支付;
else if (type == ORDERSTATE.未支付) findParam.state = ORDERSTATE.未支付;
const SelectFile = ["orderCycleStart", "orderCycleEnd", "money", "state", "id", "advanceInvoice", "invoiceStatus", "unitName", "confirmReceipt"];
const SelectFile = ["orderCycleStart", "orderCycleEnd", "money", "state", "id", "advanceInvoice", "invoiceStatus", "unitName", "confirmReceipt", "newUscc"];
let dbList = await find(TABLEENUM.订单表, findParam, SelectFile);
/**查询证明函需要字段会员等级 */
let myOldInfo = await findOnce(TABLEENUM.用户表, {userId}, ["memberLevel", "userId"]);
let myOldInfo = await findOnce(TABLEENUM.用户表, {userId}, ["memberLevel", "userId", "uscc"]);
if (!myOldInfo || !myOldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let memberLevel = changeEnumValue(MEMBERLEVEL, myOldInfo.memberLevel);
let dataList = [];
dbList.forEach(info => {
let {orderCycleStart, orderCycleEnd, money, state, id, unitName, confirmReceipt} = info;
let {orderCycleStart, orderCycleEnd, money, state, id, unitName, confirmReceipt, newUscc} = info;
let payState;
if (state == ORDERSTATE.已支付) {
if (!confirmReceipt) {/**首次支付 待确认未审核*/
......@@ -454,6 +447,7 @@ export async function orderList({userId, type}) {
cycle:`${moment(orderCycleStart).format("YYYY-MM-DD")}${moment(orderCycleEnd).format("YYYY-MM-DD")}`,
money:money,
id,
uscc:newUscc || myOldInfo.uscc,
invoiceStatus:invoiceState,
invoiceStatusStr:changeEnumValue(MYORDERLISTSTATE , invoiceState),
unitName,
......@@ -478,13 +472,12 @@ export async function orderList({userId, type}) {
* @param newUnitName 发票抬头
*/
export async function applicationInvoice({id, newUscc, newUnitName}) {
let orderInfo = await find(TABLEENUM.订单表, {id}, ["id", "invoiceStatus", "advanceInvoice", "invoiceAdd", "state", "advanceInvoice"]);
let orderInfo = await findOnce(TABLEENUM.订单表, {id}, ["id", "invoiceStatus", "advanceInvoice", "invoiceAdd", "state", "advanceInvoice"]);
if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.invoiceStatus == INVOICESTATUS.已开发票) throw new BizError(ERRORENUM.发票已开具不可重复提交);
if (orderInfo.invoiceStatus == INVOICESTATUS.退回) throw new BizError(ERRORENUM.请求已被退回请重新申请);
let updateInfo:any = {invoiceStatus:INVOICESTATUS.未开发票, newUscc, newUnitName};
if (orderInfo.state != ORDERSTATE.已支付) updateInfo.advanceInvoice = true;
let updateInfo:any = {invoiceStatus:INVOICESTATUS.未开发票, newUscc, newUnitName, advanceInvoice : true};
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
......@@ -529,8 +522,8 @@ export async function downInvoice({id}) {
* @param id 会员缴费列表返回的id
*/
export async function getInvoiceStatus({id}) {
let oldInfo = await findOnce(TABLEENUM.订单表, {id}, ["invoiceStatus", "userId"]);
if (!oldInfo || !oldInfo.invoiceAdd) throw new BizError(ERRORENUM.目标数据不存在);
let oldInfo = await findOnce(TABLEENUM.订单表, {id}, ["invoiceStatus", "userId", "id"]);
if (!oldInfo || !oldInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
let dataInfo = {state:AUDITINGCLIENT.已申请, remark:""};
if (oldInfo.invoiceStatus == INVOICESTATUS.已开发票) dataInfo.state = AUDITINGCLIENT.审核通过;
......@@ -538,8 +531,8 @@ export async function getInvoiceStatus({id}) {
if (oldInfo.invoiceStatus != INVOICESTATUS.退回) dataInfo.state = AUDITINGCLIENT.审核失败;
/**获取驳回理由 */
let userOldInfo = await findOnce(TABLEENUM.审批历史表, {userId:oldInfo.userId, operationBehavior:OPERATIONREHAVIOR.驳回修改}, ["remarks"]);
dataInfo.remark = userOldInfo.remark;
let userOldInfo = await findOnceToSort(TABLEENUM.审批历史表, {userId:oldInfo.userId, operationBehavior:OPERATIONREHAVIOR.驳回修改},{operationTime:-1}, ["userId", "remarks"]);
if (userOldInfo && userOldInfo.userId) dataInfo.remark = userOldInfo.remark;
return {dataInfo};
}
......
......@@ -32,7 +32,8 @@ export async function adminList({pageNumber}) {
memberState:memberStateStr,
loginId,
adminType:changeEnumValue(ADMINTYPE, adminType),
adminLv:changeEnumValue(ADMINLV, adminLv)
adminLv:changeEnumValue(ADMINLV, adminLv),
superAdmin : loginId == "admin"
});
});
......
......@@ -2,7 +2,7 @@
* 用户逻辑
*/
import { DOCUMENTTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, PROFCATEGORY, SEX, STATE, USERREGISTERSTATE } from "../../config/enum";
import { ADMINTYPE, DOCUMENTTYPE, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, NATION, PROFCATEGORY, SEX, STATE, USERREGISTERSTATE } from "../../config/enum";
import { ERRORCODEENUM, ERRORENUM } from "../../config/errorEnum";
import { addOneData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model";
......@@ -10,7 +10,7 @@ import { findOnce } from "../../data/select";
import { updateOneData } from "../../data/update";
import { generateToken, generateUserId, successResult } from "../../tools/system";
import { BizError } from "../../util/bizError";
import { eccEnumValue } from "../../util/verificationEnum";
import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
......@@ -27,18 +27,23 @@ export async function login({loginId, pwd}) {
if (userInfo.pwd != pwd ) throw new BizError(ERRORENUM.账号或密码错误);
let token = "";
const Now = new Date().valueOf();
if (userInfo.isAdmin == STATE. || (userInfo.userRegisterState == USERREGISTERSTATE.通过 && userInfo.isAdmin == STATE.)) {
token = generateToken(userInfo.userId);
await updateOneData(TABLEENUM.用户表, {userId:userInfo.userId}, {token, tokenMs:new Date().valueOf()});
await updateOneData(TABLEENUM.用户表, {userId:userInfo.userId}, {token, tokenMs:Now, lastLoginMs:Now});
}
if (userInfo.memberState >= MEMBERSTATE.冻结 ) {
throw new BizError(ERRORENUM.该账号已被冻结);
}
let dataInfo = {
isAdmin:userInfo.isAdmin == STATE.,
name:userInfo.name,
name:userInfo.isAdmin ? changeEnumValue(ADMINTYPE, userInfo.adminType ) : userInfo.name,
userId:userInfo.userId,
token:token,
adminLv:userInfo.adminLv,
timeMs:new Date().valueOf(),
timeMs:Now,
isPass:userInfo.userRegisterState == USERREGISTERSTATE.通过,
memberType:userInfo.memberType
};
......
......@@ -213,7 +213,6 @@ export async function dongTaiZiXun({type, pageNumber}) {
*/
export async function wenZhangXiangQing({id}) {
let dataBaseInfo = await findOnce(TABLEENUM.文章管理, {id, display:STATE.});
let dataInfo:any = extractData(dataBaseInfo, [ "articleTime", "imgUrl", "title", "desc"]);
dataInfo.articleTime = moment(dataInfo.articleTime).format("YYYY-MM-DD");
dataInfo.source = "中国艺术职业教育学会";
......
......@@ -397,8 +397,9 @@ export enum CERTIFICATETYPE {
* 订单状态
*/
export enum ORDERSTATE {
未支付 = 1,
已支付
已支付 = 1,
未支付,
}
......
......@@ -45,7 +45,8 @@ export enum ERRORENUM {
该订单正在支付,
微信支付回调错误,
支付失败,
地址数据错误
地址数据错误,
该账号已被冻结
}
export enum ERRORCODEENUM {
......
......@@ -341,6 +341,7 @@ const ModelArray = [
lifespanEndTime:{type:'Number', index:true},//会员有效期结束时间 时间戳 每次缴费成功更新
token:{type:'String', default:''},//token
tokenMs:{type:'Number', default:0},//token过期时间
lastLoginMs:'Number',//上次登陆时间
session:'Number',//届次
paymentStatus:'Number',//支付状态 PAYMENTSTATUS
/**管理员字段 */
......@@ -452,6 +453,7 @@ const ModelArray = [
memberCategory:'Number',//会员类别 枚举 MEMBERTYPE
weChartPR:{type:'String', default:""},//微信订单号 微信支付用
weChartState:{type:'Number', default:WEICHARTPAYSTATE.未提交},//微信支付状态 WEICHARTPAYSTATE
weChartCreatePayMs:{type:'Number'},//微信创建订单时间
// membershipFeesType:'Number',//会费类别 枚举
invoiceAdd:'String',//发票图片地址
isFirst:{type:'Boolean', default:true},//首次订单
......
......@@ -295,7 +295,6 @@ export const Config = {
{
/**基本信息 */
unitName:{type:'String', desc:'单位名称'},
uscc:{type:'String', desc:'单位信用代码'},
addres:{type:'String', desc:'通信地址'},
legalPerson:{type:'String', desc:'法人代表'},
legalPersonPhone:{type:'String', desc:'法人联系电话'},
......@@ -310,7 +309,7 @@ export const Config = {
uusinessLicenseUrl:{type:'String', desc:'营业执照'},
/**单位信息 */
unitMemberType:{type:'Number', desc:'单位类型'},
yuanXiaoBanXueLeiXing:{type:'String', desc:'办学类型'},
yuanXiaoBanXueLeiXing:{type:'Number', desc:'办学类型'},
yuanXiaoZhuGuanBuMen:{type:'String', desc:'主管部门'},
yuanXiaoFuZeRen:{type:'String', desc:'主要负责人姓名'},
yuanXiaoFuZeRenZhiWu:{type:'String', desc:'主要负责人职位'},
......@@ -622,9 +621,6 @@ export const Config = {
pwd:{type:'String', desc:'密码'},
confirmation:{type:'String', desc:'确认密码'},
}
},
{
key:"userId", type:"String", desc:"登录用户id"
}
],
bindBiz:rightsMgmtBiz.changeAdminPwd
......@@ -689,33 +685,31 @@ export const Config = {
/**基本信息 */
unitName:{type:'String', desc:'单位名称'},
addres:{type:'String', desc:'通信地址'},
uscc:{type:'String', desc:'单位信用代码'},
legalPerson:{type:'String', desc:'法人代表'},
legalPersonPhone:{type:'String', desc:'法人联系电话'},
legalPersonMail:{type:'String', desc:'法人邮箱'},
unitMail:{type:'String', desc:'单位电子邮箱'},
contactPerson:{type:'String', desc:'日常联系人'},
contactPersonDuties:{type:'String', desc:'日常联系人职务'},
contactPersonPhone:{type:'String', desc:'日常联系人电话'},
sheng:{type:'String', desc:'省'},
shi:{type:'String', desc:'市'},
qu:{type:'String', desc:'区'},
uusinessLicenseUrl:{type:'String', desc:'营业执照'},
/**单位信息 */
unitMemberType:{type:'Number', desc:'单位信息类型'},
yuanXiaoBanXueLeiXing:{type:'String', desc:'院校办学类型'},
yuanXiaoZhuGuanBuMen:{type:'String', desc:'院校主管部门'},
yuanXiaoFuZeRen:{type:'String', desc:'院校主要负责人'},
yuanXiaoFuZeRenZhiWu:{type:'String', desc:'院校主要负责人职位'},
yuanXiaoFuZeRenDianHua:{type:'String', desc:'院校主要负责人电话'},
yuanXiaoBanGongFuZeRen:{type:'String', desc:'院校办公负责人'},
yuanXiaoBanGongFuZeRenZhiWu:{type:'String', desc:'院校办公负责人职位'},
yuanXiaoBanGongFuZeRenDianHua:{type:'String', desc:'院校办公负责人电话'},
yuanXiaoKeYanFuZeRen:{type:'String', desc:'院校科研负责人'},
yuanXiaoKeYanFuZeRenZhiWu:{type:'String', desc:'院校科研负责人职位'},
yuanXiaoKeYanFuZeRenDianHua:{type:'String', desc:'院校科研负责人电话'},
yuanXiaoXueShengZongRenShu:{type:'String', desc:'院校学生总数'},
yuanXiaoJiaoZhiGongZongRenShu:{type:'String', desc:'院校教职工总人数'},
yuanXiaoJianZhuMianJi:{type:'String', desc:'院校建筑总面积'},
yuanXiaoGaoJiZhiCheng:{type:'String', desc:'院校高级职称人数'},
yuanXiaoKaiSheZhuanYe:{type:'String', desc:'院校专业总数'},
unitMemberType:{type:'Number', desc:'单位类型'},
yuanXiaoBanXueLeiXing:{type:'Number', desc:'办学类型'},
yuanXiaoZhuGuanBuMen:{type:'String', desc:'主管部门'},
yuanXiaoFuZeRen:{type:'String', desc:'主要负责人姓名'},
yuanXiaoFuZeRenZhiWu:{type:'String', desc:'主要负责人职位'},
yuanXiaoFuZeRenDianHua:{type:'String', desc:'主要负责人电话'},
ZhuYaoFuZeRenYouXiang:{type:'String', desc:'主要负责人邮箱'},
yuanXiaoBanGongFuZeRen:{type:'String', desc:'办公负责人姓名'},
yuanXiaoBanGongFuZeRenDianHua:{type:'String', desc:'办公负责人电话'},
yuanXiaoKeYanFuZeRen:{type:'String', desc:'科研负责人姓名'},
yuanXiaoKeYanFuZeRenDianHua:{type:'String', desc:'科研负责人电话'},
jiaoXueFuZeRenXinMing:{type:'String', desc:'教学负责人姓名'},
jiaoXueFuZeRenDianHua:{type:'String', desc:'教学负责人电话'},
},
desc:"表单"
},
......@@ -727,9 +721,6 @@ export const Config = {
describe:{type:'String', desc:'科研描述'},
},
desc:"单位所获得科研成果表单"
},
{
key:"userId", type:"String", desc:"用户id"
}
],
bindBiz:homePageBiz.unitMemberUpdate
......@@ -751,11 +742,14 @@ export const Config = {
sheng:{type:'String', desc:'省'},
shi:{type:'String', desc:'市'},
qu:{type:'String', desc:'区'},
phone:{type:'String', desc:'手机号码'},
mail:{type:'String', desc:'电子邮箱'},
addres:{type:'String', desc:'通信地址'},
photoUrl:{type:'String', desc:'蓝底证件照'},
education:{type:'Number', desc:'学历'},
/**专业信息 */
unitName:{type:'String', desc:'工作单位'},
memberLevel:{type:'Number', desc:'会员等级职务'},
duties:{type:'String', desc:'职务'},
workTitle:{type:'String', desc:'职称'},
profCategory:{type:'Number', desc:'专业类别'},
studyResume:{type:'String', desc:'学习简历'},
......@@ -769,9 +763,6 @@ export const Config = {
professionalCERTUrl:{type:'String', desc:'个人工作证明扫描件'},
auxiliaryMaterial:{type:'[String]', desc:'论文发表或成绩材料'},
}
},
{
key:"userId", type:"String", desc:"用户id"
}
],
bindBiz:homePageBiz.individualMemberUpdate
......
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