Commit 3ec9112b by lixinming

no message

parent a11acf6f
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* 订单相关 * 订单相关
*/ */
import moment = require("moment"); import moment = require("moment");
import { COSTTYPE, INVOICESTATUS, ISPAYENUM, MEMBERLEVEL, MEMBERTYPE, ORDERSTATE, PAYMENTTYPE, RECEIPTCONFIRMATION } from "../../config/enum"; import { COSTTYPE, INVOICESTATUS, ISPAYENUM, MEMBERLEVEL, MEMBERTYPE, ORDERSTATE, PAYMENTSTATUS, PAYMENTTYPE, RECEIPTCONFIRMATION, STATE } from "../../config/enum";
import { generateOrderId, successResult } from "../../tools/system"; import { generateOrderId, successResult } from "../../tools/system";
import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum"; import { changeEnumValue, eccEnumValue } from "../../util/verificationEnum";
import { addOneData } from "../../data/add"; import { addOneData } from "../../data/add";
...@@ -57,10 +57,12 @@ export async function createOrder(userId:string, unitName:string, orderStartMs:n ...@@ -57,10 +57,12 @@ export async function createOrder(userId:string, unitName:string, orderStartMs:n
/** /**
* 初始订单 * 初始订单 success
* 会员管理-待支付页
*/ */
export async function firstOrderList({unitName, joinTime, memberType, orderState, pageNumber}) { export async function firstOrderList({unitName, joinTime, memberType, orderState, pageNumber}) {
let findParam:any = { isFirst:true }; /** 首次订单 并且未通过待支付页的审核 */
let findParam:any = { "$or":[{isFirst:true, firstPayExamine:false}] };
if (unitName) findParam.unitName = {"$regex":unitName}; if (unitName) findParam.unitName = {"$regex":unitName};
if (memberType) findParam.memberCategory = memberType; if (memberType) findParam.memberCategory = memberType;
if (orderState) findParam.state = orderState; if (orderState) findParam.state = orderState;
...@@ -75,7 +77,13 @@ export async function firstOrderList({unitName, joinTime, memberType, orderState ...@@ -75,7 +77,13 @@ export async function firstOrderList({unitName, joinTime, memberType, orderState
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(MEMBERTYPE, 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")}`;
if (info.state == ORDERSTATE.未支付) {
itemData.state = "未支付";
} else {
if (info.paymentMethod == PAYMENTTYPE.银行转账) itemData.state = "银行转账";
else itemData.state = "已支付";
}
dataList.push(itemData); dataList.push(itemData);
}); });
...@@ -84,13 +92,33 @@ export async function firstOrderList({unitName, joinTime, memberType, orderState ...@@ -84,13 +92,33 @@ export async function firstOrderList({unitName, joinTime, memberType, orderState
/** /**
* 财务核对列表 * 会员管理-待支付页-通过审核 success
* @param param0
*/
export async function checkOrder({id}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在);
if (!orderInfo.isFirst || orderInfo.firstPayExamine) throw new BizError(ERRORENUM.重复提交);
await updateOneData(TABLEENUM.订单表, {id}, {firstPayExamine:true, confirmReceipt:RECEIPTCONFIRMATION.待确认});
return successResult();
}
/**
* 发票管理-财务核对列表 success
* @param param0
*/ */
export async function paidList({unitName, paymentType, costType, pageNumber }) { export async function paidList({unitName, paymentType, costType, pageNumber }) {
eccEnumValue("财务核对列表", "支付类型", PAYMENTTYPE, paymentType); eccEnumValue("财务核对列表", "支付类型", PAYMENTTYPE, paymentType);
eccEnumValue("财务核对列表", "会费类别", COSTTYPE, costType ); eccEnumValue("财务核对列表", "会费类别", COSTTYPE, costType );
let findParam:any = { isFirst:true }; let findParam:any = {
"$or":[{isFirst:false}, {isFirst:true, firstPayExamine:true }],
confirmReceipt:RECEIPTCONFIRMATION.待确认,
state:ORDERSTATE.已支付
};
if (unitName) findParam.unitName = {"$regex":unitName}; if (unitName) findParam.unitName = {"$regex":unitName};
if (paymentType) findParam.paymentMethod = paymentType; if (paymentType) findParam.paymentMethod = paymentType;
if (costType) findParam.isFirst = costType == COSTTYPE.首次; if (costType) findParam.isFirst = costType == COSTTYPE.首次;
...@@ -117,14 +145,54 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) { ...@@ -117,14 +145,54 @@ export async function paidList({unitName, paymentType, costType, pageNumber }) {
/** /**
* 待开发票和已开发票 * 发票管理-财务核对页-收款确认 success
* @param param0
*/
export async function confirmReceiptPass({id}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.isFirst && !orderInfo.firstPayExamine ) throw new BizError(ERRORENUM.重复提交, '发票管理-财务核对页-收款确认', `提交通过时订单未通过待支付页的校验`);
if (orderInfo.confirmReceipt != RECEIPTCONFIRMATION.待确认) throw new BizError(ERRORENUM.重复提交, '发票管理-财务核对页-收款确认', `提交通过时订单已经不是待确认 是${orderInfo.confirmReceipt}`);
await updateOneData(TABLEENUM.订单表, {id}, {confirmReceipt:RECEIPTCONFIRMATION.收款确认, invoiceStatus:INVOICESTATUS.未开发票});
return successResult();
}
/**
* 发票管理-财务核对页-收款退回 success
* @param param0
*/
export async function confirmReceiptOut({id}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.isFirst && !orderInfo.firstPayExamine ) throw new BizError(ERRORENUM.重复提交, '发票管理-财务核对页-收款确认', `提交通过时订单未通过待支付页的校验`);
if (orderInfo.confirmReceipt != RECEIPTCONFIRMATION.待确认) throw new BizError(ERRORENUM.重复提交, '发票管理-财务核对页-收款确认', `提交通过时订单已经不是待确认 是${orderInfo.confirmReceipt}`);
if (orderInfo.paymentMethod == PAYMENTTYPE.微信支付) throw new BizError(ERRORENUM.微信支付无法被退回);
let updateInfo:any = {confirmReceipt:RECEIPTCONFIRMATION.退回};
if (orderInfo.isFirst == true) {
updateInfo.firstPayExamine = false;
}
await updateOneData(TABLEENUM.订单表, {id}, {confirmReceipt:RECEIPTCONFIRMATION.退回});
return successResult();
}
/**
* 发票管理-待开发票 success
* @param param0
*/ */
export async function billStateList({unitName, paymentType, isPay, pageNumber, invoiceStatus}) { export async function billStateList({unitName, paymentType, isPay, pageNumber}) {
eccEnumValue("发票列表", "支付类型", PAYMENTTYPE, paymentType); eccEnumValue("发票列表", "支付类型", PAYMENTTYPE, paymentType);
eccEnumValue("发票列表", "是否支付", ISPAYENUM, isPay ); eccEnumValue("发票列表", "是否支付", ISPAYENUM, isPay );
eccEnumValue("发票列表", "发票类型", INVOICESTATUS, invoiceStatus )
let findParam:any = { isFirst:true }; let findParam:any = {
invoiceStatus:INVOICESTATUS.未开发票
};
if (unitName) findParam.unitName = {"$regex":unitName}; if (unitName) findParam.unitName = {"$regex":unitName};
if (paymentType) findParam.paymentMethod = paymentType; if (paymentType) findParam.paymentMethod = paymentType;
if (isPay) findParam.state = isPay if (isPay) findParam.state = isPay
...@@ -150,60 +218,89 @@ export async function billStateList({unitName, paymentType, isPay, pageNumber, i ...@@ -150,60 +218,89 @@ export async function billStateList({unitName, paymentType, isPay, pageNumber, i
/** /**
* 待支付-通过审核 * 上传发票 success
* @param param0 * @param param0
*/ */
export async function checkOrder({id}) { export async function upInvoice({id, invoiceUrl}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id}); let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.firstExamine) throw new BizError(ERRORENUM.重复提交); if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.invoiceStatus != INVOICESTATUS.未开发票) throw new BizError(ERRORENUM.订单状态无法开具发票, `${orderInfo.id}无法开具发票,因为发票状态为${orderInfo.invoiceStatus}`);
await updateOneData(TABLEENUM.订单表, {id}, {firstExamine:true}); let updateInfo = {
invoiceStatus : INVOICESTATUS.已开发票,
invoiceAdd:invoiceUrl
};
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
return successResult(); return successResult();
} }
/** /**
* 收款确认通过 * 退回发票 success
* @param param0 * @param param0
*/ */
export async function confirmReceiptPass({id}) { export async function backInvoice({id}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id}); let orderInfo = await findOnce(TABLEENUM.订单表, {id});
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.confirmReceipt != RECEIPTCONFIRMATION.待确认) throw new BizError(ERRORENUM.重复提交, `收款确认通过时 状态处于${orderInfo.confirmReceipt}`); if (!orderInfo || !orderInfo.id) throw new BizError(ERRORENUM.目标数据不存在);
if (orderInfo.invoiceStatus != INVOICESTATUS.未开发票) throw new BizError(ERRORENUM.订单状态无法开具发票, `${orderInfo.id}无法开具发票,因为发票状态为${orderInfo.invoiceStatus}`);
if (orderInfo.paymentMethod == PAYMENTTYPE.微信支付) throw new BizError(ERRORENUM.微信支付无法退回发票请求);
await updateOneData(TABLEENUM.订单表, {id}, {confirmReceipt:RECEIPTCONFIRMATION.收款确认}); let updateInfo:any = {
invoiceStatus : INVOICESTATUS.退回,
};
if (orderInfo.state == ORDERSTATE.已支付 ) updateInfo.confirmReceipt = RECEIPTCONFIRMATION.待确认
await updateOneData(TABLEENUM.订单表, {id}, updateInfo);
return successResult(); return successResult();
} }
/** /**
* 收款确认失败 * 发票管理-已开发票
* @param param0 * @param param0
*/ */
export async function confirmReceiptOut({id}) { export async function InvoicedList({unitName, paymentType, isPay, pageNumber}) {
let orderInfo = await findOnce(TABLEENUM.订单表, {id}); eccEnumValue("发票列表", "支付类型", PAYMENTTYPE, paymentType);
if (!orderInfo || !orderInfo.id ) throw new BizError(ERRORENUM.目标数据不存在); 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 (orderInfo.confirmReceipt != RECEIPTCONFIRMATION.待确认) throw new BizError(ERRORENUM.重复提交, `收款确认通过时 状态处于${orderInfo.confirmReceipt}`); let selectFile = ["id", "unitName", "orderCycleStart", "orderCycleEnd", "money", "paymentMethod", "memberCategory", "state", "paymentNum" ];
let dbList = await findToPage(TABLEENUM.订单表, findParam, selectFile, pageNumber);
let dataCount = await findCount(TABLEENUM.订单表, findParam);
await updateOneData(TABLEENUM.订单表, {id}, {confirmReceipt:RECEIPTCONFIRMATION.退回}); let dataList = [];
return successResult(); let itemFile = ["unitName", "money", "paymentNum"];
dbList.forEach(info => {
let itemData:any = extractData(info, itemFile);
itemData.joinTime = moment(info.orderCycleStart).format("YYYY-MM-DD");
itemData.memberType = changeEnumValue(MEMBERTYPE, itemData.memberCategory);
itemData.paymentMethod = changeEnumValue(MEMBERTYPE, itemData.paymentMethod);
itemData.cycle = `${moment(info.orderCycleStart).format("YYYY-MM-DD")}${moment(info.orderCycleEnd).format("YYYY-MM-DD")}`
dataList.push(itemData);
});
return {dataList, dataCount};
} }
/** /**
* 个人页待订单列表 * 个人页待订单列表 success
* @param param0 * @param param0
*/ */
export async function orderList({userId, type}) { export async function orderList({userId, type}) {
eccEnumValue("个人页待订单列表", "类型", ISPAYENUM, type); eccEnumValue("个人页待订单列表", "类型", ISPAYENUM, type);
let findParam:any = {}; let findParam:any = {userId};
if (type == ORDERSTATE.已支付) findParam.state = ORDERSTATE.已支付; if (type == ORDERSTATE.已支付) findParam.state = ORDERSTATE.已支付;
else if (type == ORDERSTATE.未支付) findParam.state = ORDERSTATE.未支付; else if (type == ORDERSTATE.未支付) findParam.state = ORDERSTATE.未支付;
......
...@@ -402,11 +402,26 @@ export enum ISPAYENUM { ...@@ -402,11 +402,26 @@ export enum ISPAYENUM {
未支付 未支付
} }
/**
* 发票状态
*/
export enum INVOICESTATUS{ export enum INVOICESTATUS{
未开发票 = 1, 不具备开票条件 = 1,
已开发票 已开发票 = 2,
未开发票,
退回
} }
/**
* 发票状态 前端用
*/
export enum INVOICESTATUSCLIENT{
全部 = 0,
已开发票 = 2,
未开发票,
}
/* /*
* 短信类型 * 短信类型
......
...@@ -26,7 +26,10 @@ export enum ERRORENUM { ...@@ -26,7 +26,10 @@ export enum ERRORENUM {
验证码失效, 验证码失效,
验证码过期, 验证码过期,
重复提交, 重复提交,
无法获取未来届次 无法获取未来届次,
微信支付无法被退回,
订单状态无法开具发票,
微信支付无法退回发票请求
} }
export enum ERRORCODEENUM { export enum ERRORCODEENUM {
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
}, },
*/ */
import { MEMBERSTATE, RECEIPTCONFIRMATION, REGISTERFLOW, USERREGISTERSTATE } from "../../config/enum"; import { INVOICESTATUS, MEMBERSTATE, RECEIPTCONFIRMATION, REGISTERFLOW, USERREGISTERSTATE } from "../../config/enum";
...@@ -435,20 +435,22 @@ const ModelArray = [ ...@@ -435,20 +435,22 @@ const ModelArray = [
orderCycleStart:'Number',//订单周期开始时间 orderCycleStart:'Number',//订单周期开始时间
orderCycleEnd:'Number',//订单周期结束时间 orderCycleEnd:'Number',//订单周期结束时间
money:'String',//金额 money:'String',//金额
memberId:'String',//会员id userId:{type:'String', index:true},//会员id
loginId:'String',//登陆名 loginId:{type:'String', index:true},//登陆名
phone:"String",//登陆手机号 phone:"String",//登陆手机号
paymentNum:'String',//支付单号(与订单号不一样) paymentNum:'String',//支付单号(与订单号不一样)
// membershipFeesType:'Number',//会费类别 枚举 // membershipFeesType:'Number',//会费类别 枚举
invoiceAdd:'String',//发票图片地址 invoiceAdd:'String',//发票图片地址
state:'Number',//状态 是否支付 枚举 ORDERSTATE
firstExamine:{type:'Boolean', default:false},//首次订单的审批开关
isFirst:{type:'Boolean', default:true},//首次订单 isFirst:{type:'Boolean', default:true},//首次订单
invoiceStatus:{type:'Number', index:true},//发票状态 枚举 INVOICESTATUS state:'Number',//状态 是否支付 枚举 ORDERSTATE
paymentMethod:'Number',//付款方式 枚举 PAYMENTTYPE paymentMethod:'Number',//付款方式 枚举 PAYMENTTYPE
memberCategory:'Number',//会员类别 枚举 MEMBERTYPE firstPayExamine:{type:'Boolean', default:false},//首次订单的审批开关【待支付页审批开关】
confirmReceipt:{type:'Number', default:RECEIPTCONFIRMATION.待确认},//收款确认 confirmReceipt:{type:'Number', default:RECEIPTCONFIRMATION.待确认},//收款确认【财务核对页收款确认】
weChartPR:"String",//微信订单号 invoiceStatus:{type:'Number', default:INVOICESTATUS.不具备开票条件, index:true},//发票状态 枚举 INVOICESTATUS 【待开发票页上传发票之后更新状态】
advanceInvoice:{type:'Boolean', default:false},//是否提前开票 【个人列表页提交开发票按钮】
// memberCategory:'Number',//会员类别 枚举 MEMBERTYPE
// weChartPR:"String",//微信订单号
} }
}, },
{ {
......
...@@ -140,7 +140,7 @@ export const Config = { ...@@ -140,7 +140,7 @@ export const Config = {
apiName:"发票状态", apiName:"发票状态",
subUrl:'/invoicestate', subUrl:'/invoicestate',
param:[], param:[],
defaultParam:enumConfig.INVOICESTATUS, defaultParam:enumConfig.INVOICESTATUSCLIENT,
bindBiz:publicBiz.setEnumInterface bindBiz:publicBiz.setEnumInterface
}, },
{ {
......
...@@ -15,15 +15,15 @@ import * as officalWebsiteRouter from "./officalWebsite/router"; ...@@ -15,15 +15,15 @@ import * as officalWebsiteRouter from "./officalWebsite/router";
import * as orderRouter from "./order/router"; import * as orderRouter from "./order/router";
import * as asyncHandler from 'express-async-handler'; import * as asyncHandler from 'express-async-handler';
const Look = true;//true更新文档 const Look = false;//true更新文档
export async function setRouter(httpServer){ export async function setRouter(httpServer){
if (Look) { if (Look) {
await getDoc(); await getDoc();
// await initDoc(portalRouter.FirstName, portalRouter.Config, portalRouter.FirstRouter);//网站编辑 await initDoc(portalRouter.FirstName, portalRouter.Config, portalRouter.FirstRouter);//网站编辑
await initDoc(publicRouter.FirstName, publicRouter.Config, publicRouter.FirstRouter);//公用组件 await initDoc(publicRouter.FirstName, publicRouter.Config, publicRouter.FirstRouter);//公用组件
// await initDoc(memberRouter.FirstName, memberRouter.Config, memberRouter.FirstRouter);//用户路由 await initDoc(memberRouter.FirstName, memberRouter.Config, memberRouter.FirstRouter);//用户路由
// await initDoc(officalWebsiteRouter.FirstName, officalWebsiteRouter.Config, officalWebsiteRouter.FirstRouter);//官网路由 await initDoc(officalWebsiteRouter.FirstName, officalWebsiteRouter.Config, officalWebsiteRouter.FirstRouter);//官网路由
await initDoc(orderRouter.FirstName, orderRouter.Config, orderRouter.FirstRouter);//会费相关 await initDoc(orderRouter.FirstName, orderRouter.Config, orderRouter.FirstRouter);//会费相关
} }
await analysisRouter(httpServer, portalRouter.Config, portalRouter.FirstRouter);//网站编辑 await analysisRouter(httpServer, portalRouter.Config, portalRouter.FirstRouter);//网站编辑
......
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