Commit 3ec9112b by lixinming

no message

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