Commit 38e99881 by lixinming

no message

parent d3fb4cc3
......@@ -2,9 +2,9 @@
* 收费
*/
import { ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, WEICHARTPAYSTATE } from "../../config/enum";
import { MEMBERSTATE, ORDEREXAMINE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, WEICHARTPAYSTATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { findCount, findOnce } from "../../data/select";
import { findCount, findOnce, findOnceToSort } from "../../data/select";
import * as path from "path";
const WxPay = require('wechatpay-node-v3');
import * as fs from 'fs';
......@@ -14,6 +14,7 @@ import { generateWXOrderId, successResult } from "../../tools/system";
import { updateOneData } from "../../data/update";
import moment = require("moment");
import { systemConfig } from "../../config/serverConfig";
import { addOneData } from "../../data/add";
const AppId = 'wx96c0cf11b3babcf6';
const MchId = '1614605859';
......@@ -132,38 +133,50 @@ export async function payCallback(body) {
let oldInfo = await findOnce(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no});
if (!oldInfo || !oldInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
let notPayCount = await findCount(TABLEENUM.订单表, {userId:oldInfo.userId, state:ORDERSTATE.未支付} );
//更新订单状态
let updateInfo:any = {
paymentNum:wechartCallbackData.transaction_id,
state:ORDERSTATE.已支付,
paymentMethod:PAYMENTTYPE.微信支付,
payTime:new Date().valueOf(),
weChartState:WEICHARTPAYSTATE.已支付,
confirmReceipt:RECEIPTCONFIRMATION.待确认
confirmReceipt:RECEIPTCONFIRMATION.收款确认,
confirmReceiptMs:new Date().valueOf()
};
await updateOneData(TABLEENUM.订单表, {weChartPR:wechartCallbackData.out_trade_no}, updateInfo);
//更新用户状态
let notPayCount = await findCount(TABLEENUM.订单表, {userId:oldInfo.userId, state:ORDERSTATE.未支付} );
/**只有一笔欠费时才更新用户状态 */
let updateUserInfo:any = {};
// if (notPayCount <= 1) {
// let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:oldInfo.userId}, {lifespanEndTime:-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 = oldInfo.orderCycleStart;
// updateUserInfo.lifespanEndTime = oldInfo.orderCycleEnd;
// }
// if (oldInfo.isFirst) {
// updateUserInfo.isFirstPay = true;
// }
// if (Object.keys(updateUserInfo).length) await updateOneData(TABLEENUM.用户表, {userId:oldInfo.userId}, updateUserInfo);
if (notPayCount < 1) {
let newOrderInfo = await findOnceToSort(TABLEENUM.订单表, {userId:oldInfo.userId}, {lifespanEndTime:-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 = oldInfo.orderCycleStart;
updateUserInfo.lifespanEndTime = oldInfo.orderCycleEnd;
}
if (oldInfo.isFirst) {
updateUserInfo.isFirstPay = true;
}
if (Object.keys(updateUserInfo).length) await updateOneData(TABLEENUM.用户表, {userId:oldInfo.userId}, updateUserInfo);
//添加审批日志
let addLogInfo = {
orderId:oldInfo.id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.用户提交,
remarks:"微信付款"
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
return {
code:"SUCCESS",
......
......@@ -3,7 +3,7 @@
*/
import moment = require("moment");
import { MEMBERSTATE, MEMBERTYPE, ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../../config/enum";
import { MEMBERSTATE, MEMBERTYPE, ORDEREXAMINE, ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE, UNITMEMBERTYPE, USERREGISTERSTATE } from "../../config/enum";
import { TABLEENUM } from "../../data/models/model";
import { find, findCount, findOnce, findToPage, findToSort, findToSortToPage } from "../../data/select";
import { extractData } from "../../util/piecemeal";
......@@ -12,6 +12,7 @@ import { BizError } from "../../util/bizError";
import { ERRORENUM } from "../../config/errorEnum";
import { updateOneData } from "../../data/update";
import { successResult } from "../../tools/system";
import { addOneData } from "../../data/add";
......@@ -285,6 +286,16 @@ export async function offlinePayment({orderId, paymentNum, offlinePaymentUrl })
await updateOneData(TABLEENUM.订单表, {id:orderId}, updateInfo);
//添加审批日志
let addLogInfo = {
orderId,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.用户提交,
remarks:""
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
return successResult();
}
......
......@@ -271,6 +271,17 @@ export async function confirmReceiptPass({id}) {
updateUserInfo.isFirstPay = true;
}
if (Object.keys(updateUserInfo).length) await updateOneData(TABLEENUM.用户表, {userId:orderInfo.userId}, updateUserInfo);
//添加日志
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.审核时间,
isReceiveMoney:true,
remarks:``
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
return successResult();
}
......@@ -298,8 +309,8 @@ export async function confirmReceiptOut({id, isReceive, returnsReasons}) {
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.退,
isReceiveMoney:isReceive == ISRECEIVE.提供账户_zkh需退款_ykh,
operationBehavior:ORDEREXAMINE.,
isReceiveMoney:isReceive == ISRECEIVE.未收到款项_xg其他,
remarks:`${changeEnumValue(ISRECEIVE, isReceive)}`
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
......@@ -484,6 +495,16 @@ export async function upInvoice({id, invoiceUrl}) {
};
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
//添加日志
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.已开票,
isReceiveMoney:true,
remarks:``
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
return successResult();
}
......@@ -848,7 +869,6 @@ export async function orderList({userId, type}) {
} else {//无需退款
payState = MYORDERLISTPAYSTATE.缴费失败;
}
}
} else {
payState = MYORDERLISTPAYSTATE.待缴费;
......@@ -985,6 +1005,15 @@ export async function getInvoiceStatus({id}) {
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
//添加日志
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.用户提交,
remarks:`${desc}`
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
return successResult();
}
......@@ -999,7 +1028,7 @@ export async function reasonInfo({id}) {
if ( orderInfo.confirmReceipt != RECEIPTCONFIRMATION.退回) throw new BizError(ERRORENUM.该订单未被退回);
let logInfo = await findOnceToSort(TABLEENUM.订单审批历史表, {operationBehavior:ORDEREXAMINE.退回}, {operationTime:-1});
let logInfo = await findOnceToSort(TABLEENUM.订单审批历史表, {operationBehavior:ORDEREXAMINE.用户提交}, {operationTime:-1});
let dataInfo = {
operationTime:moment(logInfo.operationTime).format("YYYY/MM/DD HH:mm:SS"),
......@@ -1037,8 +1066,8 @@ export async function accountInfo({id, form}) {
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.用户提交,
remarks:`退款账户${form.refundBankCarId}`
operationBehavior:ORDEREXAMINE.退款申请,
remarks:`${form.refundDesc}`
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
......@@ -1104,9 +1133,9 @@ export async function refundApprove({id, refundImgUrl}) {
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.退回,
operationBehavior:ORDEREXAMINE.已退款,
isReceiveMoney:true,
remarks:`已退款`,
remarks:``,
refundImgUrl
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
......@@ -1173,24 +1202,52 @@ export async function refundApprove({id, refundImgUrl}) {
* 审批历史
*/
export async function approveLog({id}) {
// let logsList = await find(TABLEENUM.订单审批历史表, {orderId:id});
// let dataList = [];
// logsList.forEach(info => {
// let { operationTime, operationBehavior, isReceiveMoney, remarks } = info;
// let desc = "";
// let addInfo:any = {
// operationTime:moment(operationTime).format("YYYY-MM-DD HH:mm:SS"),
// operationBehavior:changeEnumValue(ORDEREXAMINE, info.operationBehavior),
// remarks,
// other
// };
// if (info.refundImgUrl) {
// addInfo.refundImgUrl = refundImgUrl;
// }
// } );
let logsList = await find(TABLEENUM.订单审批历史表, {orderId:id});
let dataList = [];
logsList.forEach(info => {
let { operationTime, operationBehavior, isReceiveMoney, remarks } = info;
let addInfo:any = {
operationTime:moment(operationTime).format("YYYY-MM-DD HH:mm:SS"),
operationBehavior:changeEnumValue(ORDEREXAMINE, info.operationBehavior),
desc:remarks,
other:""
};
dataList.push(addInfo);
} );
return {dataList};
}
export async function reconfirm({id, weChartPR, offlinePaymentUrl, desc}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.state == ORDERSTATE.已支付 && orderInfo.confirmReceipt != RECEIPTCONFIRMATION.退回) throw new BizError(ERRORENUM.该订单已支付);
let updateInfo = {
paymentNum:weChartPR,
offlinePaymentUrl,
state:ORDERSTATE.已支付,
paymentMethod:PAYMENTTYPE.线下支付,
payTime:new Date().valueOf(),
confirmReceipt:RECEIPTCONFIRMATION.待确认,
desc
};
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
//添加日志
let addLogInfo = {
orderId:id,
operationTime:new Date().valueOf(),
operationBehavior:ORDEREXAMINE.用户提交,
remarks:`${desc}`
};
await addOneData(TABLEENUM.订单审批历史表, addLogInfo );
return successResult();
}
......@@ -62,3 +62,6 @@ function getExcel(filePath) {
export async function 单位会员() {
}
\ No newline at end of file
......@@ -573,8 +573,7 @@ export enum ADMINTYPE {
*/
export enum ADMINFIRSTDIR {
网站管理 = 1,
会员管理 = 2,
会员操作 = 3
会员管理 = 2
}
......@@ -594,12 +593,12 @@ export enum ADMINLV {
审批管理,
会费管理,
发票管理,
会员管理,
变更管理,
管理设置 = 206,
标签系统,
通知管理 = 208,
会员信息修改 = 301,
单位会员申请表
会员信息修改 = 209,
单位会员申请表 = 210
}
......@@ -762,8 +761,20 @@ export enum ISRECEIVE {
* 订单审批
*/
export enum ORDEREXAMINE {
用户提交 = 1,
退回
// 用户提交 = 1,
// 退回,
// 审核时间,//关联
// 支付时间, //关联微信支付
// 已开发票
用户提交 = 1,//用户提交
驳回,//驳回
支付时间,//支付时间
审核时间,//审核时间
已开票,//已开票
退款申请,//退款申请
已退款//已退款
}
......
......@@ -66,7 +66,8 @@ export enum ERRORENUM {
订单非退回状态,
该类型退款无需确认,
注册信息待补充,
超出可申请范围
超出可申请范围,
权限错误
}
export enum ERRORCODEENUM {
......
......@@ -40,13 +40,25 @@ export async function checkUser(req, res, next) {
userId,
isAdmin:userInfo.isAdmin
}
if (userInfo.isAdmin) {
req.adminInfomation = {
adminLv:userInfo.adminLv
}
}
next();
}
export async function notCheck(req, res, next) {
console.log("结束");
next();
}
export async function checkPermission(apiKey, callback) {
console.log("走完流程", apiKey);
return callback();
}
/**
* 中间件 数据维护接口
......
......@@ -2,6 +2,7 @@
* 变更审批
*/
import * as applyBiz from "../../biz/member/apply";
import { ADMINLV } from "../../config/enum";
export const FirstName = '变更审批';
......
......@@ -2,6 +2,7 @@
* 黑名单
*/
import * as blacklistBiz from "../../biz/member/blacklist";
import { ADMINLV } from "../../config/enum";
export const FirstName = '黑名单';
......
......@@ -2,6 +2,7 @@
* 标签
*/
import * as lableBiz from "../../biz/member/labelSystem";
import { ADMINLV } from "../../config/enum";
export const FirstName = '标签相关';
export const FirstRouter = '/manage/lable';
......
......@@ -7,6 +7,7 @@ import * as registerBiz from "../../biz/register";
import * as homePageBiz from "../../biz/member/homePage";
import * as rightsMgmtBiz from "../../biz/member/rightsMgmt";
import * as ossBiz from "../../biz/oss";
import { ADMINLV } from "../../config/enum";
export const FirstName = '会员管理路由';
export const FirstRouter = '/manage/member';
......
......@@ -241,6 +241,25 @@ export const Config = {
bindBiz:orderBiz.orderList
},
{
apiName:"查看原因",//会员列表->查看原因
subUrl:'/order/reason',
param:[
{key:"id", type:"String", desc:"会员缴费列表返回id"},
],
bindBiz:orderBiz.approveLog
},
{
apiName:"查看原因的确定",//会员列表->查看原因->确定
subUrl:'/order/reconfirm',
param:[
{key:"id", type:"String", desc:"会员缴费列表返回id"},
{key:"weChartPR", type:"String", desc:"转账单号"},
{key:"offlinePaymentUrl", type:"String", desc:"截图上传"},
{key:"desc", type:"String", desc:"备注", isNull:true},
],
bindBiz:orderBiz.reconfirm
},
{
apiName:"申请发票",
subUrl:'/order/applicationinvoice',
param:[
......@@ -268,7 +287,7 @@ export const Config = {
bindBiz:orderBiz.downInvoice
},
{
apiName:"上传转账截图",
apiName:"上传转账截图",//个人页面线下付款
subUrl:'/order/uptransferimg',
param:[
{key:"id", type:"String", desc:"会员缴费列表返回id"},
......
......@@ -21,7 +21,8 @@ import * as msgActivityRouter from "./msgActivity/router";
import * as applyRouter from "./apply/router";
import * as asyncHandler from 'express-async-handler';
import { payCallback } from "../biz/member/cost";
import { checkUser } from "../middleware/user";
import { checkUser, checkPermission, notCheck } from "../middleware/user";
import { ADMINLV } from "../config/enum";
const Look = false;//true更新文档
......@@ -29,8 +30,8 @@ export async function setRouter(httpServer){
if (Look) {
await getDoc();
// await initDoc(portalRouter.FirstName, portalRouter.Config, portalRouter.FirstRouter);//网站编辑
await initDoc(publicRouter.FirstName, publicRouter.Config, publicRouter.FirstRouter);//公用组件
await initDoc(memberRouter.FirstName, memberRouter.Config, memberRouter.FirstRouter);//用户路由
// await initDoc(publicRouter.FirstName, publicRouter.Config, publicRouter.FirstRouter);//公用组件
// await initDoc(memberRouter.FirstName, memberRouter.Config, memberRouter.FirstRouter);//用户路由
// await initDoc(officalWebsiteRouter.FirstName, officalWebsiteRouter.Config, officalWebsiteRouter.FirstRouter);//官网路由
// await initDoc(orderRouter.FirstName, orderRouter.Config, orderRouter.FirstRouter);//会费相关
// await initDoc(costRouter.FirstName, costRouter.Config, costRouter.FirstRouter);//支付
......@@ -39,7 +40,7 @@ export async function setRouter(httpServer){
// await initDoc("2.0", labelRouter.Config, labelRouter.FirstRouter);//标签路由
// await initDoc("2.0", blacklistRouter.Config, blacklistRouter.FirstRouter);//黑名单路由
// await initDoc("2.0", msgActivityRouter.Config, msgActivityRouter.FirstRouter);//消息活动通知路由
await initDoc(applyRouter.FirstName, applyRouter.Config, applyRouter.FirstRouter);//变更审批路由
// await initDoc(applyRouter.FirstName, applyRouter.Config, applyRouter.FirstRouter);//变更审批路由
}
analysisRouter(httpServer, portalRouter.Config, portalRouter.FirstRouter, true);//网站编辑
analysisRouter(httpServer, publicRouter.Config, publicRouter.FirstRouter, false);//公用组件
......@@ -59,14 +60,74 @@ function analysisRouter(httpServer, config, firstRouter, haveMiddleware) {
for (let modelKey in config) {
config[modelKey].forEach(info => {
let {apiName, defaultParam, subUrl, param, bindBiz, notMiddleware} = info;
if (haveMiddleware && !notMiddleware) httpServer.post(firstRouter+subUrl, checkUser, asyncHandler(routerFun(apiName, defaultParam, subUrl, param, bindBiz, notMiddleware)));
else httpServer.post(firstRouter+subUrl, asyncHandler(routerFun(apiName, defaultParam, subUrl, param, bindBiz, notMiddleware)));
if (haveMiddleware && !notMiddleware) httpServer.post(firstRouter+subUrl, checkUser, asyncHandler(routerFun(apiName, defaultParam, subUrl, param, bindBiz, notMiddleware, modelKey)));
else httpServer.post(firstRouter+subUrl, asyncHandler(routerFun(apiName, defaultParam, subUrl, param, bindBiz, notMiddleware, modelKey)));
});
}
}
let permissionConfig = {
"变更审批管理":{adminPermission:true, lv:ADMINLV.审批管理},
"黑名单管理":{adminPermission:true, lv:ADMINLV.会员库},
"微信支付":{adminPermission:false},
"标签管理":{adminPermission:true, lv:ADMINLV.标签系统},
"用户注册":{adminPermission:false},
"登陆相关":{adminPermission:false},
"会员库":{adminPermission:true, lv:ADMINLV.会员库},
"审批管理":{adminPermission:true, lv:ADMINLV.审批管理},
"会费管理":{adminPermission:true, lv:ADMINLV.会费管理},
"会员管理":{adminPermission:true, lv:ADMINLV.变更管理},
"权限管理":{adminPermission:true, lv:ADMINLV.管理设置},
"个人首页展示":{adminPermission:false, lv:ADMINLV.会员库},
"oss授权":{adminPermission:false},
"消息通知":{adminPermission:false},
"活动通知":{adminPermission:false},
"会员个人页活动通知":{adminPermission:false},
"发票管理":{adminPermission:true, lv:ADMINLV.发票管理},
"会员个人页":{adminPermission:false},
"会员导出":{adminPermission:true, lv:ADMINLV.会员库},
"审批导出":{adminPermission:true, lv:ADMINLV.会员库},
"学会概况_学会概括":{adminPermission:true, lv:ADMINLV.学会概况},
"学会概况_学会领导":{adminPermission:true, lv:ADMINLV.学会概况},
"学会概况_学会架构":{adminPermission:true, lv:ADMINLV.学会概况},
"首页_专题系列":{adminPermission:true, lv:ADMINLV.首页},
"品牌项目_学术研究":{adminPermission:true, lv:ADMINLV.品牌项目},
"品牌项目_芳华杯":{adminPermission:true, lv:ADMINLV.品牌项目},
"分支机构_机构管理":{adminPermission:true, lv:ADMINLV.分支机构},
"通知公告_会议通知":{adminPermission:true, lv:ADMINLV.内容管理},
"通知公告_活动通知":{adminPermission:true, lv:ADMINLV.内容管理},
"通知公告_项目公告":{adminPermission:true, lv:ADMINLV.内容管理},
"内容管理_banner管理":{adminPermission:true, lv:ADMINLV.内容管理},
"内容管理_视频管理":{adminPermission:true, lv:ADMINLV.内容管理},
"内容管理_文章管理":{adminPermission:true, lv:ADMINLV.内容管理},
"党建工作_学习园地":{adminPermission:true, lv:ADMINLV.党建工作},
"党建工作_主题教育":{adminPermission:true, lv:ADMINLV.党建工作},
"党建工作_文字资料":{adminPermission:true, lv:ADMINLV.党建工作},
"分支机构_机构管理_工作动态":{adminPermission:true, lv:ADMINLV.分支机构},
"分支机构_机构管理_委员名单":{adminPermission:true, lv:ADMINLV.分支机构},
"分支机构_机构管理_下载管理":{adminPermission:true, lv:ADMINLV.分支机构}
};
function routerFun(apiName, defaultParam, subUrl, param, bindBiz, notMiddleware) {
function routerFun(apiName, defaultParam, subUrl, param, bindBiz, notMiddleware, modelKey) {
return async function (req, res) {
//判断权限
//modelKey
let permissionInfo = permissionConfig[modelKey];
if (permissionInfo) {
let {adminPermission, lv} = permissionInfo;
if (adminPermission && !req.adminInfomation) {
//路由是管理员路由,用户不是管理员用户
throw new BizError(ERRORENUM.权限错误);
} else if(adminPermission && req.adminInfomation) {
//路由是管理员路由,用户是管理员用户
if (req.adminInfomation.adminLv.indexOf(lv) == -1 ) {
throw new BizError(ERRORENUM.权限错误);
}
}
}
let chackObjectList = [];
let checkStringMap = {};
let stringNotMustHaveKeys = [];
......
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