Commit df22e792 by lixinming

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

# Conflicts:
#	src/biz/member/order.ts
#	src/main.ts
parents 05371125 1f7ada95
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -26,11 +26,10 @@
"sequelize": "^6.35.2",
"svg-captcha": "^1.3.12",
"tencentcloud-sdk-nodejs": "^4.0.562",
"wechatpay-node-v3": "^2.1.8",
"wechatpay-node-v3": "^2.2.0",
"ws": "^5.2.2",
"xml2js": "^0.4.23"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
......
......@@ -2,6 +2,7 @@
* 审批逻辑 success
*/
import moment = require("moment");
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERTYPE, OPERATIONREHAVIOR, PAYMENTSTATUS, REGISTERFLOW, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { addManyData } from "../../data/add";
......@@ -26,7 +27,7 @@ import { createOrder } from "./order";
*/
export async function pendingReviewList({unitName, joinTime, memberType, sheng, shi, qu, pageNumber}) {
/**查询条件 */
let selectParam:any = {userRegisterState:{"$not": USERREGISTERSTATE.通过}}; //审批列表展示状态除通过外的数据
let selectParam:any = {userRegisterState:{"$ne": USERREGISTERSTATE.通过}}; //审批列表展示状态除通过外的数据
if (unitName) selectParam.unitName = unitName;
if (joinTime) selectParam.joinTime = joinTime;
if (memberType) selectParam.memberType = memberType;
......@@ -179,29 +180,49 @@ export async function approvalHistoryList({userId}) {
/**
* 获取下拉框选择届次
* @returns
*/
export async function getSession() {
const NowMs = new Date();
let nowYear = parseInt(moment(NowMs).format("YYYY"));
let nowMonth = parseInt(moment(NowMs).format("MM"));
let session = [];
for (let i = 2008; i <= nowYear; i++) {
session.push(getEdition(i, 1));
if (i==nowYear) {
if(nowMonth>6) session.push(getEdition(i, 7));
}
else session.push(getEdition(i, 7));
}
return {session}
}
/**
* 获取届次
* @param year 入会年份
* @param month 入会月份
* 下拉选择起始届次:2008年第四届第一次
* @returns
*/
export function getEdition(year, month) {
//起始年份和月份
const startYear = 2018;
//起始年份和月份 第一届第一次
const startYear = 1993;
let currentYear = new Date().getFullYear();
if (year > currentYear) throw new BizError(ERRORENUM.无法获取未来届次);
//计算从起始时间给定时间的总月份数
let totalMonth = (year - startYear) * 12 + month;
//每是6个月
//每是6个月
let sessions = Math.ceil(totalMonth / 6);
//每10届一次
//每10次一届,从第四届开始计算
let times = Math.ceil(sessions / 10);
let sessionNumber = sessions - (times - 1) * 10 //届次是从第一次第一届开始,所以需要减一
let sessionNumber = sessions - (times - 1) * 10 //届次是从第四届第一次开始,所以需要减一
return {frequency:"第"+times+"次", session:"第"+sessionNumber+"届"};
return `第${times}届,第${sessionNumber}次`;
}
......@@ -140,8 +140,6 @@ export async function delResearch({id}) {
}
/**
* 个人会员列表
* @param param0
......@@ -227,52 +225,3 @@ export async function individualMemberDetails({id}) {
/**
* 模拟审核通过,修改审核状态
*/
// export async function examine({userId}) {
// let oldInfo = await findOnce(TABLEENUM.用户表, {userId});
// if (!oldInfo || !oldInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
// let memberList:any = extractData(oldInfo, ["userId", "registerFlow", "memberType"]);
// let selectParam = {registerFlow:memberList.registerFlow, userRegisterState:USERREGISTERSTATE.待审核};
// if (memberList.memberType == MEMBERTYPE.个人会员) { //个人会员
// switch (memberList.registerFlow) {
// case REGISTERFLOW.个人会员注册1:
// selectParam.registerFlow = REGISTERFLOW.个人会员注册2;
// break;
// case REGISTERFLOW.个人会员注册2:
// selectParam.userRegisterState = USERREGISTERSTATE.通过;
// break;
// }
// } else { //单位会员
// switch (memberList.registerFlow) {
// case REGISTERFLOW.单位会员注册1:
// selectParam.registerFlow = REGISTERFLOW.单位会员注册2;
// break;
// case REGISTERFLOW.单位会员注册2:
// selectParam.registerFlow = REGISTERFLOW.单位会员注册3;
// break;
// case REGISTERFLOW.单位会员注册3:
// selectParam.userRegisterState = USERREGISTERSTATE.通过;
// break;
// }
// }
// await updateOneData(TABLEENUM.用户表, {userId}, selectParam);
// return successResult();
// }
......@@ -40,7 +40,7 @@ export async function getPaid({unitName, joinStartTime, joinEndTime, memberType,
if (memberType) selectParam.memberType = memberType;
const SelectFiles = ["userId", "memberState", "unitName", "loginId", "phone", "joinTime", "memberType", "lifespanStartTime", "lifespanEndTime", "memberLevel"];
let dbList = await findToPage(TABLEENUM.用户表, selectParam, SelectFiles, pageNumber, 10);
let dbList = await findToPage(TABLEENUM.用户表, selectParam, SelectFiles, pageNumber);
let dataCount = await findCount(TABLEENUM.用户表, selectParam);
let dataList = [];
......
......@@ -2,12 +2,12 @@
* 订单相关 success
*/
import moment = require("moment");
import { AUDITINGCLIENT, COSTTYPE, INDIVIDUALMEMBERTYPE, INVOICESTATUS, ISPAYENUM, MEMBERLEVEL, MEMBERTYPE, MYORDERLISTPAYSTATE, MYORDERLISTSTATE, OPERATIONREHAVIOR, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, UNITMEMBERTYPE } from "../../config/enum";
import { AUDITINGCLIENT, COSTTYPE, INDIVIDUALMEMBERTYPE, INVOICESTATUS, ISPAYENUM, MEMBERLEVEL, MEMBERSTATE, MEMBERTYPE, MYORDERLISTPAYSTATE, MYORDERLISTSTATE, OPERATIONREHAVIOR, 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";
import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findToPage } from "../../data/select";
import { find, findCount, findOnce, findOnceToSort, findToPage } from "../../data/select";
import { extractData } from "../../util/piecemeal";
import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum";
......@@ -82,7 +82,7 @@ export async function firstOrderList({unitName, joinTime, memberType, orderState
if (memberType) findParam.memberCategory = memberType;
if (orderState) findParam.state = orderState;
let selectFile = ["unitName", "loginId", "phone", "orderCycleStart", "orderCycleEnd", "memberCategory", "state"];
let selectFile = ["id", "unitName", "loginId", "phone", "orderCycleStart", "orderCycleEnd", "memberCategory", "state"];
let dbList = await findToPage(TABLEENUM.订单表, findParam, selectFile, pageNumber);
let dataCount = await findCount(TABLEENUM.订单表, findParam);
let dataList = [];
......@@ -122,6 +122,45 @@ export async function checkOrder({id}) {
/**
* 待支付页 线下付款
* @param param0
* @returns
*/
export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl }) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id:orderId});
if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.state == ORDERSTATE.已支付) throw new BizError(ERRORENUM.该订单已支付);
let notPayCount = await findCount(TABLEENUM.订单表, {userId:orderInfo.userId, state:ORDERSTATE.未支付} );
let updateInfo = {
paymentNum,
offlinePaymentUrl,
state:ORDERSTATE.已支付,
paymentMethod:PAYMENTTYPE.线下支付,
payTime:new Date().valueOf()
};
await updateOneData(TABLEENUM.订单表, {id:orderId}, updateInfo);
/**只有一笔欠费时才更新用户状态 */
if (notPayCount <= 1) {
let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:orderInfo.userId}, {lifespanEndTime:-1}, ["lifespanStartTime","lifespanEndTime"]);
let updateUserInfo = {
lifespanStartTime:newOrderInfo.lifespanStartTime,
lifespanEndTime:newOrderInfo.lifespanEndTime,
isGracePeriod:STATE.,
gracePeriodEndTime:0,
memberState:MEMBERSTATE.正常,
paymentStatus:PAYMENTSTATUS.已支付
};
await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo);
}
return successResult();
}
/**
* 发票管理-财务核对列表 success
* @param param0
*/
......
......@@ -5,7 +5,7 @@
import { ADMINFIRSTDIR, ADMINLV, ADMINTYPE, MEMBERSTATE, STATE } from "../../config/enum";
import { ERRORENUM } from "../../config/errorEnum";
import { TABLEENUM } from "../../data/models/model";
import { findOnce, findToPage } from "../../data/select";
import { findCount, findOnce, findToPage } from "../../data/select";
import { BizError } from "../../util/bizError";
import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
import * as sysTools from "../../tools/system";
......@@ -20,6 +20,7 @@ import { updateOneData } from "../../data/update";
export async function adminList({pageNumber}) {
let fileList = ["userId", "memberState", "loginId", "adminLv", "adminType"];
let dbList = await findToPage(TABLEENUM.用户表, {isAdmin:STATE.}, fileList, pageNumber);
let dataCount = await findCount(TABLEENUM.用户表, {isAdmin:STATE.});
let dataList = [];
dbList.forEach(info => {
......@@ -33,7 +34,7 @@ export async function adminList({pageNumber}) {
});
});
return {dataList};
return {dataList, dataCount};
}
/**
......@@ -65,7 +66,7 @@ export async function addAdmin({userId, form}) {
/**
* 修改密码
* @param param0
* @param userId 登录的用户id
* @returns
*/
export async function changeAdminPwd({userId, form}) {
......@@ -78,7 +79,7 @@ export async function changeAdminPwd({userId, form}) {
if (pwd.search(/^[A-Za-z0-9]{6,18}$/) < 0) throw new BizError(ERRORENUM.密码只能由618位字符和数字组成);
if (pwd != confirmation) throw new BizError(ERRORENUM.两次密码不一致);
await updateOneData(TABLEENUM.用户表, {userId:form.userId}, {pwd:form.pwd});
await updateOneData(TABLEENUM.用户表, {userId:form.id}, {pwd:form.pwd});
return sysTools.successResult();
}
......@@ -105,14 +106,46 @@ export async function info({id}) {
let userInfo = await findOnce(TABLEENUM.用户表, {userId:id}, ["adminLv", "userId", "loginId"]);
if (!userInfo || !userInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
let distinctMap = {};//去重
for(let i = 0; i < userInfo.adminLv.length; i++) {
let adminLv = userInfo.adminLv[i];
let firstKey = Math.floor(adminLv/100);
if (!distinctMap[firstKey]) distinctMap[firstKey] = []
if(distinctMap[firstKey]) {
distinctMap[firstKey].push({
key:ADMINLV[adminLv],
value:adminLv
});
}
}
let dataInfo = {
adminLv:userInfo.adminLv,
loginId:userInfo.loginId
};
loginId:userInfo.loginId,
distinctMap
}
return {dataInfo}
}
/**
* 冻结管理员权限、解冻管理员权限 success
* @param id 列表返回的userId
*/
export async function freeze({userId, id}) {
let userInfo = await findOnce(TABLEENUM.用户表, {userId:id}, ["userId", "memberState"]);
if (!userInfo || !userInfo.userId) throw new BizError(ERRORENUM.目标数据不存在);
if(userInfo.memberState == MEMBERSTATE.冻结管理员) {
await updateOneData(TABLEENUM.用户表, {userId:id}, {memberState:MEMBERSTATE.正常});
} else {
await updateOneData(TABLEENUM.用户表, {userId:id}, {memberState:MEMBERSTATE.冻结管理员});
}
return sysTools.successResult();
}
/**
* 权限下拉列表
*/
......
......@@ -304,7 +304,8 @@ export enum DWTYPE {
export enum MEMBERSTATE {
正常 = 1,
异常,
冻结
冻结,
冻结管理员
}
/**
......
import { createOrder } from "./biz/member/order";
import { INDIVIDUALMEMBERTYPE, MEMBERLEVEL, MEMBERTYPE } from "./config/enum";
import { initConfig, systemConfig} from "./config/serverConfig";
import { initDataBaseModel } from "./data/db/db";
import { httpServer } from "./net/http_server";
......@@ -10,7 +8,6 @@ async function lanuch() {
/**初始化数据库 */
await initDataBaseModel();
/**创建http服务 */
// await createOrder("xxsdfasdfasfdasd_test", "测试单位名称", new Date().valueOf(), MEMBERLEVEL.普通会员, MEMBERTYPE.个人会员 ,INDIVIDUALMEMBERTYPE.个人会员, false);
httpServer.createServer(systemConfig.port);
// await smsTask();
......
......@@ -284,7 +284,7 @@ export const Config = {
desc:"表单"
},
{
key:"keyanForm", type:"Object", sub:
key:"keyanForm", type:"[Object]", sub:
{
startTime:{type:'Number', desc:'开始时间'},
endTime:{type:'Number', desc:'结束时间'},
......@@ -366,7 +366,7 @@ export const Config = {
},
{
apiName:"驳回审批",
subUrl:'/examine/pendingreview',
subUrl:'/examine/reject',
param:[
{key:"id", type:"String", desc:"待审核列表返回的用户id"},
{key:"remarks", type:"String", desc:"驳回理由"}
......@@ -381,6 +381,12 @@ export const Config = {
],
bindBiz:examineBiz.approvalHistoryList
},
{
apiName:"下拉框选择届次",
subUrl:'/examine/getsession',
param:[],
bindBiz:examineBiz.getSession
}
],
"会费管理":[
{
......@@ -450,7 +456,7 @@ export const Config = {
subUrl:'/memberfees/setgraceperiod',
param:[
{key:"id", type:"String", desc:"列表返回id", isNull:true},
{key:"gracePeriodEndTime", type:"String", desc:"宽限期到期时间", isNull:true},
{key:"gracePeriodEndTime", type:"Number", desc:"宽限期到期时间", isNull:true},
],
bindBiz:memberFeesBiz.setGracePeriod
},
......@@ -562,7 +568,7 @@ export const Config = {
{
key:"form", type:"Object", sub:
{
userId:{type:'String', desc:'用户id'},
id:{type:'String', desc:'列表返回的用户id'},
pwd:{type:'String', desc:'密码'},
confirmation:{type:'String', desc:'确认密码'},
}
......@@ -591,6 +597,19 @@ export const Config = {
bindBiz:rightsMgmtBiz.info
},
{
apiName:"冻结解冻",
subUrl:'/rightsmgmt/freeze',
param:[
{
key:"userId", type:"String", desc:"登录用户id"
},
{
key:"id", type:"String", desc:"列表返回的用户id"
}
],
bindBiz:rightsMgmtBiz.freeze
},
{
apiName:"权限下拉列表",
subUrl:'/rightsmgmt/mgmtselectlist',
param:[
......@@ -603,7 +622,7 @@ export const Config = {
apiName:"会员信息展示",
subUrl:'/homepage/list',
param:[
{key:"id", type:"String", desc:"用户id"}
{key:"userId", type:"String", desc:"用户id"}
],
bindBiz:homePageBiz.getMemberData
},
......@@ -648,7 +667,7 @@ export const Config = {
desc:"表单"
},
{
key:"keyanForm", type:"Object", sub:
key:"keyanForm", type:"[Object]", sub:
{
startTime:{type:'Number', desc:'开始时间'},
endTime:{type:'Number', desc:'结束时间'},
......@@ -657,7 +676,7 @@ export const Config = {
desc:"单位所获得科研成果表单"
},
{
key:"id", type:"String", desc:"用户id"
key:"userId", type:"String", desc:"用户id"
}
],
bindBiz:homePageBiz.unitMemberUpdate
......
......@@ -24,6 +24,16 @@ export const Config = {
],
bindBiz:orderBiz.checkOrder
},
{
apiName:"待支付线下支付",
subUrl:'/order/fist/offlinepayment',
param:[
{key:"orderId", type:"String", desc:"订单标识"},
{key:"paymentNum", type:"String", desc:"转账单号"},
{key:"offlinePaymentUrl", type:"String", desc:"转账截图"},
],
bindBiz:orderBiz.offlinePayment
}
],
"发票管理":[
{
......@@ -80,13 +90,15 @@ export const Config = {
apiName:"申请发票",
subUrl:'/order/applicationinvoice',
param:[
{key:"id", type:"String", desc:"会员缴费列表返回id"}
{key:"id", type:"String", desc:"会员缴费列表返回id"},
{key:"newUscc", type:"String", desc:"新的社会信用代码"},
{key:"newUnitName", type:"String", desc:"新的发票抬头"}
],
bindBiz:orderBiz.applicationInvoice
},
{
apiName:"重新申请发票",
subUrl:'/order/applicationinvoice',
subUrl:'/order/reapplyinvoice',
param:[
{key:"id", type:"String", desc:"会员缴费列表返回id"}
],
......
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