Commit 212a2401 by lixinming

no message

parent 7a6656ed
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
* 收费 * 收费
*/ */
import { ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION, WEICHARTPAYSTATE } from "../../config/enum"; import { MEMBERSTATE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, WEICHARTPAYSTATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
import { findOnce } from "../../data/select"; import { findCount, findOnce, findOnceToSort } from "../../data/select";
import { eccEnumValue } from "../../util/verificationEnum"; import { eccEnumValue } from "../../util/verificationEnum";
import * as path from "path"; import * as path from "path";
const WxPay = require('wechatpay-node-v3'); const WxPay = require('wechatpay-node-v3');
...@@ -106,15 +106,38 @@ export async function payCallback(body) { ...@@ -106,15 +106,38 @@ export async function payCallback(body) {
/**支付成功 */ /**支付成功 */
let oldInfo = await findOnce(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}); let oldInfo = await findOnce(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no});
if (!oldInfo || !oldInfo.id) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
let notPayCount = await findCount(TABLEENUM.订单表, {userId:oldInfo.userId, state:ORDERSTATE.未支付} );
let updateInfo:any = { let updateInfo:any = {
paymentNum:wechartCallbackData.transaction_id, paymentNum:wechartCallbackData.transaction_id,
state:ORDERSTATE.已支付, state:ORDERSTATE.已支付,
paymentMethod:PAYMENTTYPE.微信支付 paymentMethod:PAYMENTTYPE.微信支付,
payTime:new Date().valueOf(),
}; };
if (!oldInfo.isFirst) { if (!oldInfo.isFirst) updateInfo.confirmReceipt = RECEIPTCONFIRMATION.待确认;
updateInfo.confirmReceipt = RECEIPTCONFIRMATION.待确认;
}
await updateOneData(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}, updateInfo); await updateOneData(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}, updateInfo);
/**只有一笔欠费时才更新用户状态 */
if (notPayCount <= 1) {
let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:oldInfo.userId}, {lifespanEndTime:-1}, ["orderCycleStart","orderCycleEnd"]);
let updateUserInfo:any = {
lifespanStartTime:newOrderInfo.orderCycleStart,
lifespanEndTime:newOrderInfo.orderCycleEnd,
isGracePeriod:STATE.,
gracePeriodEndTime:0,
memberState:MEMBERSTATE.正常,
paymentStatus:PAYMENTSTATUS.已支付
};
if (oldInfo.isFirst) {
updateUserInfo.isFirstPay = true;
}
await updateOneData(TABLEENUM.用户表, {userId:oldInfo.userId}, updateUserInfo);
}
return { return {
code:"SUCCESS", code:"SUCCESS",
message:"成功" message:"成功"
......
...@@ -91,7 +91,7 @@ export async function adopt({id, session}) { ...@@ -91,7 +91,7 @@ export async function adopt({id, session}) {
let thisDate = new Date(); let thisDate = new Date();
const NowMs = thisDate.valueOf(); const NowMs = thisDate.valueOf();
let addInfo:any = { let updateInfo:any = {
auditTime:NowMs, auditTime:NowMs,
joinTime:NowMs, joinTime:NowMs,
userRegisterState:USERREGISTERSTATE.通过, userRegisterState:USERREGISTERSTATE.通过,
...@@ -104,15 +104,15 @@ export async function adopt({id, session}) { ...@@ -104,15 +104,15 @@ export async function adopt({id, session}) {
let unitName = userInfo.unitName; let unitName = userInfo.unitName;
let subType = userInfo.unitMemberType; let subType = userInfo.unitMemberType;
if (userInfo.memberType == MEMBERTYPE.个人会员) { if (userInfo.memberType == MEMBERTYPE.个人会员) {
addInfo.individualMemberType = INDIVIDUALMEMBERTYPE.个人会员; updateInfo.individualMemberType = INDIVIDUALMEMBERTYPE.个人会员;
subType = userInfo.individualMemberType; subType = userInfo.individualMemberType;
} }
//todo 创建一条初始订单 //todo 创建一条初始订单
await createOrder(id, userInfo.loginId, userInfo.phone, unitName, NowMs, MEMBERLEVEL.普通会员, userInfo.memberType, subType, true); await createOrder(id, userInfo.loginId, userInfo.phone, unitName, NowMs + 1000, MEMBERLEVEL.普通会员, userInfo.memberType, subType, true);
await updateOneData(TABLEENUM.用户表, {userId:id}, addInfo); await updateOneData(TABLEENUM.用户表, {userId:id}, updateInfo);
/**提交审批历史信息 */ /**提交审批历史信息 */
let addApprovalHistory = { let addApprovalHistory = {
......
...@@ -56,6 +56,7 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, member ...@@ -56,6 +56,7 @@ export async function unitMemberList({unitName, joinTime, unitMemberType, member
item.memberState = changeEnumValue(MEMBERSTATE, item.memberState); item.memberState = changeEnumValue(MEMBERSTATE, item.memberState);
if (!item.memberLevel) item.memberLevel = "未选择"; if (!item.memberLevel) item.memberLevel = "未选择";
else item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel); else item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
item.joinTime = moment(item.joinTime).format("YYYY-MM-DD");
dataList.push(item); dataList.push(item);
}); });
...@@ -195,6 +196,8 @@ export async function individualMemberList({name, documentId, phone, individualM ...@@ -195,6 +196,8 @@ export async function individualMemberList({name, documentId, phone, individualM
if (!item.memberLevel) item.memberLevel = "未选择"; if (!item.memberLevel) item.memberLevel = "未选择";
else item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel); else item.memberLevel = changeEnumValue(MEMBERLEVEL, item.memberLevel);
item.joinTime = moment(item.joinTime).format("YYYY-MM-DD");
item.shi = getCityNameByCode(item.shi); item.shi = getCityNameByCode(item.shi);
item.sheng = getCityNameByCode(item.sheng); item.sheng = getCityNameByCode(item.sheng);
item.qu = getCityNameByCode(item.qu); item.qu = getCityNameByCode(item.qu);
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
*/ */
import moment = require("moment"); import moment = require("moment");
import { MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, STATE } from "../../config/enum"; import { MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, STATE, USERREGISTERSTATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findOnceToSort, findToPage, findToSort } from "../../data/select"; import { find, findCount, findOnce, findOnceToSort, findToPage, findToSort } from "../../data/select";
import { extractData } from "../../util/piecemeal"; import { extractData } from "../../util/piecemeal";
...@@ -97,7 +97,8 @@ export async function unpaidList({unitName, joinStartTime, joinEndTime, memberTy ...@@ -97,7 +97,8 @@ export async function unpaidList({unitName, joinStartTime, joinEndTime, memberTy
{lifespanEndTime:{"$gt":NowMs}} {lifespanEndTime:{"$gt":NowMs}}
], ],
isAdmin:STATE., isAdmin:STATE.,
isGracePeriod:STATE. isGracePeriod:STATE.,
userRegisterState:USERREGISTERSTATE.通过
} }
if (unitName) selectParam.unitName = unitName; if (unitName) selectParam.unitName = unitName;
...@@ -136,7 +137,6 @@ export async function unpaidList({unitName, joinStartTime, joinEndTime, memberTy ...@@ -136,7 +137,6 @@ export async function unpaidList({unitName, joinStartTime, joinEndTime, memberTy
*/ */
export async function getRenewalPeriod({unitName, joinStartTime, joinEndTime, memberType, pageNumber}) { export async function getRenewalPeriod({unitName, joinStartTime, joinEndTime, memberType, pageNumber}) {
const NowMs = new Date().valueOf(); const NowMs = new Date().valueOf();
/**到期时间距离今天大于90天 */
let selectParam:any = { let selectParam:any = {
"$or":[ "$or":[
{ {
...@@ -148,6 +148,7 @@ export async function getRenewalPeriod({unitName, joinStartTime, joinEndTime, me ...@@ -148,6 +148,7 @@ export async function getRenewalPeriod({unitName, joinStartTime, joinEndTime, me
lifespanEndTime:{"$lt":NowMs}, lifespanEndTime:{"$lt":NowMs},
gracePeriodEndTime:{"$lt":NowMs} gracePeriodEndTime:{"$lt":NowMs}
}], }],
isFirstPay:true,
isAdmin:STATE., isAdmin:STATE.,
} }
...@@ -209,7 +210,7 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl }) ...@@ -209,7 +210,7 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
/**只有一笔欠费时才更新用户状态 */ /**只有一笔欠费时才更新用户状态 */
if (notPayCount <= 1) { if (notPayCount <= 1) {
let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {lifespanEndTime:-1}, ["lifespanStartTime","lifespanEndTime"]); let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {lifespanEndTime:-1}, ["lifespanStartTime","lifespanEndTime"]);
let updateUserInfo = { let updateUserInfo:any = {
lifespanStartTime:newOrderInfo.lifespanStartTime, lifespanStartTime:newOrderInfo.lifespanStartTime,
lifespanEndTime:newOrderInfo.lifespanEndTime, lifespanEndTime:newOrderInfo.lifespanEndTime,
isGracePeriod:STATE., isGracePeriod:STATE.,
...@@ -217,6 +218,9 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl }) ...@@ -217,6 +218,9 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
memberState:MEMBERSTATE.正常, memberState:MEMBERSTATE.正常,
paymentStatus:PAYMENTSTATUS.已支付 paymentStatus:PAYMENTSTATUS.已支付
}; };
if (orderInfo.isFirst) {
updateUserInfo.isFirstPay = true;
}
await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo); await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo);
} }
......
...@@ -12,6 +12,7 @@ import { extractData } from "../../util/piecemeal"; ...@@ -12,6 +12,7 @@ import { extractData } from "../../util/piecemeal";
import { BizError } from "../../util/bizError"; import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum"; import { ERRORENUM } from "../../config/errorEnum";
import { updateOneData } from "../../data/update"; import { updateOneData } from "../../data/update";
import { info } from "console";
/** /**
...@@ -147,7 +148,7 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl }) ...@@ -147,7 +148,7 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
/**只有一笔欠费时才更新用户状态 */ /**只有一笔欠费时才更新用户状态 */
if (notPayCount <= 1) { if (notPayCount <= 1) {
let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {lifespanEndTime:-1}, ["orderCycleStart","orderCycleEnd"]); let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {lifespanEndTime:-1}, ["orderCycleStart","orderCycleEnd"]);
let updateUserInfo = { let updateUserInfo:any = {
lifespanStartTime:newOrderInfo.orderCycleStart, lifespanStartTime:newOrderInfo.orderCycleStart,
lifespanEndTime:newOrderInfo.orderCycleEnd, lifespanEndTime:newOrderInfo.orderCycleEnd,
isGracePeriod:STATE., isGracePeriod:STATE.,
...@@ -155,6 +156,9 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl }) ...@@ -155,6 +156,9 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
memberState:MEMBERSTATE.正常, memberState:MEMBERSTATE.正常,
paymentStatus:PAYMENTSTATUS.已支付 paymentStatus:PAYMENTSTATUS.已支付
}; };
if (orderInfo.isFirst) {
updateUserInfo.isFirstPay = true;
}
await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo); await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo);
} }
...@@ -179,16 +183,17 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) { ...@@ -179,16 +183,17 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) {
if (paymentType) findParam.paymentMethod = paymentType; if (paymentType) findParam.paymentMethod = paymentType;
if (costType) findParam.isFirst = costType == COSTTYPE.首次; if (costType) findParam.isFirst = costType == COSTTYPE.首次;
let selectFile = ["id", "unitName", "orderCycleStart", "orderCycleEnd", "money", "paymentMethod", "memberCategory", "isFirst", "paymentNum", "memberState" ]; let selectFile = ["id", "unitName", "userId", "orderCycleStart", "orderCycleEnd", "money", "paymentMethod", "memberCategory", "isFirst", "paymentNum", "memberState" ];
let dbList = await findToPage(TABLEENUM.订单表, findParam, selectFile, pageNumber); let dbList = await findToPage(TABLEENUM.订单表, findParam, selectFile, pageNumber);
let dataCount = await findCount(TABLEENUM.订单表, findParam); let dataCount = await findCount(TABLEENUM.订单表, findParam);
let dataList = []; let dataList = [];
let itemFile = ["id", "unitName", "money", "paymentNum"]; let itemFile = ["id", "unitName", "money", "paymentNum"];
dbList.forEach(info => { for ( let i = 0; i < dbList.length; i++) {
let info = dbList[i];
let itemData:any = extractData(info, itemFile); let itemData:any = extractData(info, itemFile);
itemData.memberState = changeEnumValue(MEMBERSTATE, info.memberState);
itemData.joinTime = moment(info.orderCycleStart).format("YYYY-MM-DD"); itemData.joinTime = moment(info.orderCycleStart).format("YYYY-MM-DD");
itemData.memberType = changeEnumValue(MEMBERTYPE, info.memberCategory); itemData.memberType = changeEnumValue(MEMBERTYPE, info.memberCategory);
itemData.paymentMethod = changeEnumValue(PAYMENTTYPE, info.paymentMethod); itemData.paymentMethod = changeEnumValue(PAYMENTTYPE, info.paymentMethod);
...@@ -199,9 +204,11 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) { ...@@ -199,9 +204,11 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) {
itemData.paymentMethod = "-"; itemData.paymentMethod = "-";
itemData.paymentNum = "-"; itemData.paymentNum = "-";
} }
let userInfo = await findOnce(TABLEENUM.用户表, {userId:info.userId}, ["memberState"]);
if (userInfo) itemData.memberState = changeEnumValue(MEMBERSTATE, userInfo.memberState);
dataList.push(itemData); dataList.push(itemData);
}); }
return {dataList, dataCount}; return {dataList, dataCount};
} }
...@@ -239,7 +246,7 @@ export async function confirmReceiptOut({id}) { ...@@ -239,7 +246,7 @@ export async function confirmReceiptOut({id}) {
updateInfo.firstPayExamine = false; updateInfo.firstPayExamine = false;
} }
await updateOneData(TABLEENUM.订单表, {id}, {confirmReceipt:RECEIPTCONFIRMATION.退回}); await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
return successResult(); return successResult();
} }
...@@ -346,14 +353,14 @@ export async function invoicedList({unitName, paymentType, isPay, pageNumber}) { ...@@ -346,14 +353,14 @@ export async function invoicedList({unitName, paymentType, isPay, pageNumber}) {
let dataList = []; let dataList = [];
let itemFile = ["id", "unitName", "money", "paymentNum", "state", "userId"]; let itemFile = ["id", "unitName", "money", "paymentNum", "state", "userId", "memberCategory", "paymentMethod"];
for (let i = 0; i < dbList.length; i++) { for (let i = 0; i < dbList.length; i++) {
let info = dbList[i]; let info = dbList[i];
let itemData:any = extractData(info, itemFile); let itemData:any = extractData(info, itemFile);
itemData.joinTime = moment(info.orderCycleStart).format("YYYY-MM-DD"); itemData.joinTime = moment(info.orderCycleStart).format("YYYY-MM-DD");
itemData.memberType = changeEnumValue(MEMBERTYPE, itemData.memberCategory); itemData.memberType = changeEnumValue(MEMBERTYPE, itemData.memberCategory);
itemData.paymentMethod = changeEnumValue(MEMBERTYPE, itemData.paymentMethod); 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-MM-DD")}${moment(info.orderCycleEnd).format("YYYY-MM-DD")}`;
itemData.isPay = changeEnumValue(ORDERSTATE, itemData.state); itemData.isPay = changeEnumValue(ORDERSTATE, itemData.state);
let userInfo = await findOnce(TABLEENUM.用户表, {userId:itemData.userId}, ["memberState"]) let userInfo = await findOnce(TABLEENUM.用户表, {userId:itemData.userId}, ["memberState"])
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* 权限管理 * 权限管理
*/ */
import { ADMINFIRSTDIR, ADMINLV, ADMINTYPE, MEMBERSTATE, STATE } from "../../config/enum"; import { ADMINFIRSTDIR, ADMINLV, ADMINSTATE, ADMINTYPE, MEMBERSTATE, STATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum"; import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findToPage } from "../../data/select"; import { find, findCount, findOnce, findToPage } from "../../data/select";
...@@ -25,8 +25,7 @@ export async function adminList({pageNumber}) { ...@@ -25,8 +25,7 @@ export async function adminList({pageNumber}) {
let dataList = []; let dataList = [];
dbList.forEach(info => { dbList.forEach(info => {
let {userId, memberState, loginId, adminLv, adminType} = info; let {userId, memberState, loginId, adminLv, adminType} = info;
let memberStateStr = "正常"; let memberStateStr = changeEnumValue(ADMINSTATE, memberState);
if (memberState == MEMBERSTATE.冻结管理员) memberStateStr = "冻结";
dataList.push({ dataList.push({
userId, userId,
...@@ -157,10 +156,10 @@ export async function info({id}) { ...@@ -157,10 +156,10 @@ export async function info({id}) {
let userInfo = await findOnce(TABLEENUM.用户表, {userId:id}, ["userId", "memberState"]); let userInfo = await findOnce(TABLEENUM.用户表, {userId:id}, ["userId", "memberState"]);
if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
if(userInfo.memberState == MEMBERSTATE.冻结管理员) { if(userInfo.memberState == ADMINSTATE.冻结) {
await updateOneData(TABLEENUM.用户表, {userId:id}, {memberState:MEMBERSTATE.正常}); await updateOneData(TABLEENUM.用户表, {userId:id}, {memberState:MEMBERSTATE.正常});
} else { } else {
await updateOneData(TABLEENUM.用户表, {userId:id}, {memberState:MEMBERSTATE.冻结管理员}); await updateOneData(TABLEENUM.用户表, {userId:id}, {memberState:ADMINSTATE.冻结});
} }
return sysTools.successResult(); return sysTools.successResult();
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* 用户逻辑 * 用户逻辑
*/ */
import { DOCUMENTTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, PROFCATEGORY, SEX, STATE } from "../../config/enum"; import { DOCUMENTTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, PROFCATEGORY, SEX, STATE, USERREGISTERSTATE } from "../../config/enum";
import { ERRORCODEENUM, ERRORENUM } from "../../config/errorEnum"; import { ERRORCODEENUM, ERRORENUM } from "../../config/errorEnum";
import { addOneData } from "../../data/add"; import { addOneData } from "../../data/add";
import { TABLEENUM } from "../../data/models/model"; import { TABLEENUM } from "../../data/models/model";
...@@ -26,8 +26,11 @@ export async function login({loginId, pwd}) { ...@@ -26,8 +26,11 @@ export async function login({loginId, pwd}) {
if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.账号或密码错误); if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.账号或密码错误);
if (userInfo.pwd != pwd ) throw new BizError(ERRORENUM.账号或密码错误); if (userInfo.pwd != pwd ) throw new BizError(ERRORENUM.账号或密码错误);
let token = generateToken(userInfo.userId); let token = "";
await updateOneData(TABLEENUM.用户表, {userId:userInfo.userId}, {token, tokenMs: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()});
}
let dataInfo = { let dataInfo = {
isAdmin:userInfo.isAdmin == STATE., isAdmin:userInfo.isAdmin == STATE.,
...@@ -35,7 +38,9 @@ export async function login({loginId, pwd}) { ...@@ -35,7 +38,9 @@ export async function login({loginId, pwd}) {
userId:userInfo.userId, userId:userInfo.userId,
token:token, token:token,
adminLv:userInfo.adminLv, adminLv:userInfo.adminLv,
timeMs:new Date().valueOf() timeMs:new Date().valueOf(),
isPass:userInfo.userRegisterState == USERREGISTERSTATE.通过,
memberType:userInfo.memberType
}; };
return {dataInfo} return {dataInfo}
......
...@@ -79,7 +79,7 @@ export async function homePage() { ...@@ -79,7 +79,7 @@ export async function homePage() {
reDianShiPinData.sort((a, b) => {return a.videoTime - b.videoTime}); reDianShiPinData.sort((a, b) => {return a.videoTime - b.videoTime});
for (let i= 0; i < reDianShiPinData.length; i++) { for (let i= 0; i < reDianShiPinData.length; i++) {
let {title, desc, videoUrl} = reDianShiPinData[i]; let {title, desc, videoUrl} = reDianShiPinData[i];
result.reDianShiPin.push({title, desc, videoUrl:videoUrl[0]}); result.reDianShiPin.push({title, desc, videoUrl:videoUrl});
if (i >= 4) break; if (i >= 4) break;
} }
...@@ -136,7 +136,9 @@ export async function xueHuiGaiKuang() { ...@@ -136,7 +136,9 @@ export async function xueHuiGaiKuang() {
*/ */
export async function xueHuiGaiKuangXiangQing() { export async function xueHuiGaiKuangXiangQing() {
let xueHuiGaiKuangData = await findOnce(TABLEENUM.学会概括, {} ); let xueHuiGaiKuangData = await findOnce(TABLEENUM.学会概括, {} );
let dataInfo = extractData(xueHuiGaiKuangData, ["title", "desc", "imgList"]); if (!xueHuiGaiKuangData || !xueHuiGaiKuangData.id) return {dataInfo:{}};
let dataInfo:any = extractData(xueHuiGaiKuangData, ["title", "desc", "imgList"]);
dataInfo.articleTime = moment(xueHuiGaiKuangData.ut).format("YYYY-MM-DD");
return {dataInfo}; return {dataInfo};
} }
......
...@@ -31,8 +31,8 @@ export async function info(userId:string) { ...@@ -31,8 +31,8 @@ export async function info(userId:string) {
* @param secureArgs * @param secureArgs
* @returns * @returns
*/ */
export async function update(userId:string, desc:string, title:string, imgList) { export async function update({userId, desc, title, imgList}) {
await updateOneData(TABLEENUM.学会概括, {}, {desc, title, imgList}); await updateOneData(TABLEENUM.学会概括, {}, {desc, title, imgList, ut:new Date().valueOf() });
return successResult(); return successResult();
} }
...@@ -51,6 +51,13 @@ export async function filePosition() { ...@@ -51,6 +51,13 @@ export async function filePosition() {
if (isNaN(anyKey)) { if (isNaN(anyKey)) {
let keyStr = key; let keyStr = key;
let value = ARTICLEPOSITION[key]; let value = ARTICLEPOSITION[key];
if(/_dou/.test(keyStr)) keyStr = keyStr.replace(/_dou/, ",");
if(/_zyh/.test(keyStr)) keyStr = keyStr.replace(/_zyh/, "“");
if(/_yyh/.test(keyStr)) keyStr = keyStr.replace(/_yyh/, "”");
if(/_dun/.test(keyStr)) keyStr = keyStr.replace(/_dun/, "、");
if(/_ju/.test(keyStr)) keyStr = keyStr.replace(/_ju/, "。");
if(/_hgh/.test(keyStr)) keyStr = keyStr.replace(/_hgh/, "-");
if(/_kbh/.test(keyStr)) keyStr = keyStr.replace(/_kbh/, "");
dataList.push({key:keyStr, value}); dataList.push({key:keyStr, value});
} }
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
import { BANXUELEIXING, CODETYPE, DOCUMENTTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, OPERATIONREHAVIOR, PROFCATEGORY, REGISTERFLOW, SEX, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../config/enum"; import { BANXUELEIXING, CODETYPE, DOCUMENTTYPE, MEMBERLEVEL, MEMBERTYPE, NATION, OPERATIONREHAVIOR, PROFCATEGORY, REGISTERFLOW, SEX, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../config/enum";
import { ERRORENUM } from "../config/errorEnum"; import { ERRORENUM } from "../config/errorEnum";
import { addManyData, addOneData } from "../data/add"; import { addManyData, addOneData } from "../data/add";
import { deleteManyData } from "../data/delete";
import { TABLEENUM } from "../data/models/model"; import { TABLEENUM } from "../data/models/model";
import { find, findCount, findOnce, findOnceToSort } from "../data/select"; import { find, findCount, findOnce, findOnceToSort } from "../data/select";
import { updateOneData } from "../data/update"; import { updateOneData } from "../data/update";
...@@ -12,6 +13,7 @@ import * as sysTools from "../tools/system"; ...@@ -12,6 +13,7 @@ import * as sysTools from "../tools/system";
import { BizError } from "../util/bizError"; import { BizError } from "../util/bizError";
import { extractData } from "../util/piecemeal"; import { extractData } from "../util/piecemeal";
import { changeEnumValue, eccEnumValue } from "../util/verificationEnum"; import { changeEnumValue, eccEnumValue } from "../util/verificationEnum";
import { eccFormParam } from "../util/verificationParam";
/** /**
...@@ -163,6 +165,14 @@ export async function memberRegister2({form, id}) { ...@@ -163,6 +165,14 @@ export async function memberRegister2({form, id}) {
* @returns * @returns
*/ */
export async function unitMemberRegister2({form, keyanForm, id}) { export async function unitMemberRegister2({form, keyanForm, id}) {
const keyanFormItemConfig = {
startTime: 'Number',
endTime: 'Number',
describe: 'String'
};
keyanForm.forEach(item => {
eccFormParam("会员注册流程二", keyanFormItemConfig, item );
});
let selectUserFiles = ["userId", "registerFlow", "userRegisterState"]; let selectUserFiles = ["userId", "registerFlow", "userRegisterState"];
let oldInfo = await findOnce(TABLEENUM.用户表, {userId:id, memberType:MEMBERTYPE.单位会员, isAdmin:STATE.}, selectUserFiles); let oldInfo = await findOnce(TABLEENUM.用户表, {userId:id, memberType:MEMBERTYPE.单位会员, isAdmin:STATE.}, selectUserFiles);
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
...@@ -181,13 +191,17 @@ export async function unitMemberRegister2({form, keyanForm, id}) { ...@@ -181,13 +191,17 @@ export async function unitMemberRegister2({form, keyanForm, id}) {
await updateOneData(TABLEENUM.用户表, {userId:id}, form); await updateOneData(TABLEENUM.用户表, {userId:id}, form);
/**注册提交单位科研成果信息 */ /**注册提交单位科研成果信息 */
await deleteManyData(TABLEENUM.单位所获得科研成果表, {userId:id});
let addList = []; let addList = [];
for (let i = 0; i < keyanForm.length; i++) { for (let i = 0; i < keyanForm.length; i++) {
keyanForm[i].id = sysTools.generateSystemId(TABLEENUM.单位所获得科研成果表, id); let {startTime, endTime, describe} = keyanForm[i];
keyanForm[i].userId = id; addList.push({
addList.push(keyanForm[i]); id:sysTools.generateSystemId(TABLEENUM.单位所获得科研成果表, id),
userId:id,
startTime, endTime, describe
});
} }
await addOneData(TABLEENUM.单位所获得科研成果表, addList); await addManyData(TABLEENUM.单位所获得科研成果表, addList);
return sysTools.successResult(); return sysTools.successResult();
} }
...@@ -293,12 +307,17 @@ export async function unitMemberEcho2({id}) { ...@@ -293,12 +307,17 @@ export async function unitMemberEcho2({id}) {
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let basicInfo:any = extractData(oldInfo, UnitBasicConfig); let basicInfo:any = extractData(oldInfo, UnitBasicConfig);
let unitInfo:any = extractData(oldInfo, UnitConfig); let unitInfo:any = extractData(oldInfo, UnitConfig);
delete basicInfo.userId;
/**处理枚举值 */ /**处理枚举值 */
unitInfo.unitMemberType = changeEnumValue(UNITMEMBERTYPE, unitInfo.unitMemberType); // unitInfo.unitMemberType = changeEnumValue(UNITMEMBERTYPE, unitInfo.unitMemberType);
unitInfo.yuanXiaoBanXueLeiXing = changeEnumValue(BANXUELEIXING, unitInfo.yuanXiaoBanXueLeiXing); // unitInfo.yuanXiaoBanXueLeiXing = changeEnumValue(BANXUELEIXING, unitInfo.yuanXiaoBanXueLeiXing);
let oldKeYanInfo = await find(TABLEENUM.单位所获得科研成果表, {userId:id}); let oldKeYanList = await find(TABLEENUM.单位所获得科研成果表, {userId:id});
let scientificResearch = extractData(oldKeYanInfo, ["id", "startTime", "endTime", "describe"]); let scientificResearch = [];
oldKeYanList.forEach(info => {
let item = extractData(info, ["id", "startTime", "endTime", "describe"]);
scientificResearch.push(item);
});
return {basicInfo, unitInfo, scientificResearch}; return {basicInfo, unitInfo, scientificResearch};
} }
...@@ -333,8 +352,8 @@ export async function individualMemberDetails({id}) { ...@@ -333,8 +352,8 @@ export async function individualMemberDetails({id}) {
if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在); if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
let basicInfo:any = extractData(oldInfo, IndividualBasicConfig); let basicInfo:any = extractData(oldInfo, IndividualBasicConfig);
basicInfo.documentType = changeEnumValue(DOCUMENTTYPE, basicInfo.documentType); // basicInfo.documentType = changeEnumValue(DOCUMENTTYPE, basicInfo.documentType);
basicInfo.nation = changeEnumValue(NATION, basicInfo.nation); // basicInfo.nation = changeEnumValue(NATION, basicInfo.nation);
let specialityInfo:any = extractData(oldInfo, SpecialityConfig); let specialityInfo:any = extractData(oldInfo, SpecialityConfig);
basicInfo.profCategory = changeEnumValue(PROFCATEGORY, basicInfo.profCategory); basicInfo.profCategory = changeEnumValue(PROFCATEGORY, basicInfo.profCategory);
......
import moment = require("moment");
import { MEMBERLEVEL, MEMBERTYPE, STATE, USERREGISTERSTATE } from "../config/enum";
import { TABLEENUM } from "../data/models/model";
import { find, findCount, findOnce } from "../data/select";
import { createOrder } from "./member/order";
/**
* 初始化任务
*/
export function initSystemTask() {
/**孵化器月度任务 */
createUserOrder();
setInterval(async function () {
await createUserOrder();
}, 24 * 3600 * 1000);
console.log(`systemTask init success`);
}
export async function createUserOrder() {
const NowMs = new Date().valueOf();
/**到期时间距离今天小于90天 */
let selectParam:any = {
"$and":[
{lifespanEndTime:{"$lt":NowMs + (30 * 24 * 3600 * 1000)}}
],
isAdmin:STATE.,
userRegisterState:USERREGISTERSTATE.通过
}
let files = ["userId", "lifespanEndTime", "loginId", "phone", "unitName", "memberLevel", "memberType", "unitMemberType", "individualMemberType"];
let count = await findCount(TABLEENUM.用户表, selectParam);
if (count) {
let userList = await find(TABLEENUM.用户表, selectParam, files );
let addCount = 0;
for (let i= 0; i < userList.length; i++) {
let { userId, lifespanEndTime, loginId, phone, unitName, memberLevel, memberType, unitMemberType, individualMemberType} = userList[i];
let itemInfo = await findOnce(TABLEENUM.订单表, {userId, orderCycleStart:{"$gte":lifespanEndTime}}, "orderCycleStart");
if (!itemInfo || !itemInfo.orderCycleStart) {
/**创建一条新的订单 */
let subType = memberType == MEMBERTYPE.个人会员 ? individualMemberType : unitMemberType;
await createOrder(userId, loginId, phone, unitName, lifespanEndTime, memberLevel, memberType, subType, false);
addCount += 1;
}
}
console.log(`已创建${addCount}条订单`);
}
}
...@@ -307,8 +307,15 @@ export enum DWTYPE { ...@@ -307,8 +307,15 @@ export enum DWTYPE {
export enum MEMBERSTATE { export enum MEMBERSTATE {
正常 = 1, 正常 = 1,
异常, 异常,
冻结, 冻结
冻结管理员 }
/**
* 管理员状态
*/
export enum ADMINSTATE {
正常 = 1,
冻结 = 4
} }
/** /**
......
...@@ -354,6 +354,7 @@ const ModelArray = [ ...@@ -354,6 +354,7 @@ const ModelArray = [
certificateType:'Number',//证书类型 枚举CERTIFICATETYPE certificateType:'Number',//证书类型 枚举CERTIFICATETYPE
individualMemberType:{type: 'Number'},//个人会员类型 枚举INDIVIDUALMEMBERTYPE individualMemberType:{type: 'Number'},//个人会员类型 枚举INDIVIDUALMEMBERTYPE
memberLevel:{type:'Number', default:MEMBERLEVEL.普通会员},//会员等级、职务 枚举 MEMBERLEVEL 【会员管理用】 memberLevel:{type:'Number', default:MEMBERLEVEL.普通会员},//会员等级、职务 枚举 MEMBERLEVEL 【会员管理用】
isFirstPay:{type:'Boolean', default:false},//是否完成首次支付
/**宽限期状态 */ /**宽限期状态 */
isGracePeriod:{type:'Number', default:0},//是否宽限期 0:否, 1:是 isGracePeriod:{type:'Number', default:0},//是否宽限期 0:否, 1:是
gracePeriodEndTime:'Number',//宽限期到期时间 时间戳 gracePeriodEndTime:'Number',//宽限期到期时间 时间戳
......
...@@ -6,6 +6,7 @@ import moment = require("moment"); ...@@ -6,6 +6,7 @@ import moment = require("moment");
import { addManyData, addOneData } from "./data/add"; import { addManyData, addOneData } from "./data/add";
import { TABLEENUM } from "./data/models/model"; import { TABLEENUM } from "./data/models/model";
import { generateOrderId, generateUserId } from "./tools/system"; import { generateOrderId, generateUserId } from "./tools/system";
import { createOrder } from "./biz/member/order";
/** /**
* 注册账号 * 注册账号
...@@ -13,10 +14,16 @@ import { generateOrderId, generateUserId } from "./tools/system"; ...@@ -13,10 +14,16 @@ import { generateOrderId, generateUserId } from "./tools/system";
export async function test1() { export async function test1() {
let i = parseInt(`${moment().hour()}${moment().minute()}${moment().second()}`); let i = parseInt(`${moment().hour()}${moment().minute()}${moment().second()}`);
let maxi = i + 20; let maxi = i + 8;
let dataList = []; let dataList = [];
for (i; i <= maxi; i++) { for (i; i < maxi; i++) {
let nowMs = new Date().valueOf();
let randomNum = parseInt(`${moment().hour()}${moment().minute()}${moment().second()}${Math.ceil(Math.random() * 100)}`);
let userId = generateUserId();
let endTime = new Date(moment().add(1, 'd').format("YYYY-MM-DD")+' 00:00:00').valueOf();
dataList.push({ dataList.push({
"token" : "",
"tokenMs" : 0,
"adminLv" : [], "adminLv" : [],
"registerFlow" : 2, "registerFlow" : 2,
"isAdmin" : 0, "isAdmin" : 0,
...@@ -28,10 +35,10 @@ export async function test1() { ...@@ -28,10 +35,10 @@ export async function test1() {
"http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-873169.png" "http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-873169.png"
], ],
"auxiliaryMaterial" : [], "auxiliaryMaterial" : [],
"userId" : generateUserId(), "userId" : userId,
"memberType" : 1, "memberType" : 1,
"askForTime" : 1711095028440.0, "askForTime" : nowMs,
"loginId" : `${i}`, "loginId" : randomNum,
"mail" : "18120935727@163.com", "mail" : "18120935727@163.com",
"pwd" : "123456", "pwd" : "123456",
"phone" : `1812093${Math.ceil(Math.random() * 10)}${Math.ceil(Math.random() * 10)}${Math.ceil(Math.random() * 10)}${Math.ceil(Math.random() * 10)}`, "phone" : `1812093${Math.ceil(Math.random() * 10)}${Math.ceil(Math.random() * 10)}${Math.ceil(Math.random() * 10)}${Math.ceil(Math.random() * 10)}`,
...@@ -43,23 +50,30 @@ export async function test1() { ...@@ -43,23 +50,30 @@ export async function test1() {
"documentType" : 1, "documentType" : 1,
"duties" : "吃的蔬菜生产", "duties" : "吃的蔬菜生产",
"education" : 2, "education" : 2,
"name" : `%${i}`, "name" : `V${randomNum}`,
"nation" : 1, "nation" : 1,
"otherEMP" : "村上春树", "otherEMP" : "23年前注册",
"otherPROF" : "村上春树", "otherPROF" : "23年前注册",
"photoUrl" : "http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-624049.png", "photoUrl" : "http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-624049.png",
"profAchievement" : "村上春树", "profAchievement" : "23年前注册",
"profCategory" : 1, "profCategory" : 1,
"professionalCERTUrl" : "http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-603763.png", "professionalCERTUrl" : "http://192.168.0.105:40012/whb/files/12/vue2024-03-22_16-11-603763.png",
"qu" : "130524", "qu" : "130524",
"sex" : 2, "sex" : 2,
"sheng" : "130000", "sheng" : "130000",
"shi" : "130500", "shi" : "130500",
"studyResume" : "菜市场", "studyResume" : "23年前注册",
"unitName" : "村上春树", "unitName" : "23年前注册",
"workResume" : "村上春树", "workResume" : "23年前注册",
"workTitle" : "村上春树" "workTitle" : "23年前注册",
}) "auditTime" : nowMs+1,
"individualMemberType" : 1,
"joinTime" : nowMs+1,
"lifespanEndTime" : endTime,
"lifespanStartTime" : nowMs,
"paymentStatus" : 2,
"session" : 200907
});
} }
await addManyData(TABLEENUM.用户表, dataList); await addManyData(TABLEENUM.用户表, dataList);
console.log("初始化成功"); console.log("初始化成功");
......
import { initAdmin } from "./biz/member/rightsMgmt"; import { initAdmin } from "./biz/member/rightsMgmt";
import { initSystemTask } from "./biz/task";
import { initConfig, systemConfig} from "./config/serverConfig"; import { initConfig, systemConfig} from "./config/serverConfig";
import { initDataBaseModel } from "./data/db/db"; import { initDataBaseModel } from "./data/db/db";
import { test1, initOrderData } from "./dataScript"; import { test1, initOrderData } from "./dataScript";
...@@ -15,7 +16,8 @@ async function lanuch() { ...@@ -15,7 +16,8 @@ async function lanuch() {
// await smsTask(); // await smsTask();
console.log('This indicates that the server is started successfully.'); console.log('This indicates that the server is started successfully.');
// await initAdmin(); // await initAdmin();
// test1(); // await test1();
await initSystemTask();
// await initOrderData() // await initOrderData()
} }
......
...@@ -70,7 +70,7 @@ export const Config = { ...@@ -70,7 +70,7 @@ export const Config = {
param:[ param:[
{key:"form", type:"Object", sub: {key:"form", type:"Object", sub:
{ {
rank:{type:"String", desc:"排序"}, rank:{type:"Number", desc:"排序"},
name:{typs:"String", desc:"名称"}, name:{typs:"String", desc:"名称"},
position:{type:"String", desc:"职位"}, position:{type:"String", desc:"职位"},
imgUrl:{type:"String", desc:"大图地址"}, imgUrl:{type:"String", desc:"大图地址"},
...@@ -88,7 +88,7 @@ export const Config = { ...@@ -88,7 +88,7 @@ export const Config = {
param:[ param:[
{key:"form", type:"Object", sub: {key:"form", type:"Object", sub:
{ {
rank:{type:"String", desc:"排序"}, rank:{type:"Number", desc:"排序"},
name:{typs:"String", desc:"名称"}, name:{typs:"String", desc:"名称"},
position:{type:"String", desc:"职位"}, position:{type:"String", desc:"职位"},
imgUrl:{type:"String", desc:"大图地址"}, imgUrl:{type:"String", desc:"大图地址"},
......
...@@ -209,6 +209,16 @@ export function eccReqParamater(apiName:string, conf:object, param, skipKeys?) { ...@@ -209,6 +209,16 @@ export function eccReqParamater(apiName:string, conf:object, param, skipKeys?) {
} }
break; break;
case '[String]':
if ( !Array.isArray(param[key]) ) isError = true;
for (let i =0; i < param[key].length; i++) {
let item = param[key][i];
if ( typeof item != 'string' ) {
isError = true;
errorStr = `${key}应是string型数组其中下标${i}${typeof item}`;
}
}
break;
} }
errorStr = isError && errorStr == "" ? `${key}应该是${confType}型 而不是${valueType}`: errorStr; errorStr = isError && errorStr == "" ? `${key}应该是${confType}型 而不是${valueType}`: errorStr;
if (isError) throw new BizError(ERRORENUM.参数错误, apiName, errorStr); if (isError) throw new BizError(ERRORENUM.参数错误, apiName, errorStr);
......
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