Commit fa724ea5 by zhaoxiqing

Merge branch 'esign-admin' of http://gitlab.gongsibao.com/jiangyong/zhichan into esign-admin

parents 4063aa01 64ce8c0b
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
class OrderCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.orderSve = system.getObject("service.order.orderSve");
// this.redisClient = system.getObject("util.redisClient");
}
/**
* fn:保存订单
* 如果是单价商品 product_type=1 product_id =xxx product_ids =[] product_unit_price=1
* 如果是组合产品 product_type=2 product_id=xxx product_ids=['xxx','xxxx'] product_unit_price=-1
* ps:需要对金额单位进行转化
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async saveEorder(pobj, pobj2, req, res) {
try{
//TODO:首先拿到商户的账号信息 (拿到合同ID 合同名称 )
// TODO:需要去调用商户钱包 扣钱
if(!pobj.contract_url){
return system.getResult(null, `参数错误 业务合同不能为空`);
}
if(!pobj.live_start){
return system.getResult(null, `参数错误 生效时间不能为空`);
}
if(!pobj.live_end){
return system.getResult(null, `参数错误 结束时间不能为空`);
}
//保存
let res = await this.orderSve.saveEorder(pobj);
return system.getResult(res);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:审核订单
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<{msg: string, data: (*|null), bizmsg: string, status: number}>}
*/
async auditEorder(pobj, pobj2, req, res) {
try{
if(!pobj.id){
return system.getResult(null, `订单【${pobj.id}】不存在`);
}
if(!pobj.audit_status){
return system.getResult(null, `参数错误 审核状态不能为空`);
}
let res = await this.orderSve.auditEorder(pobj);
//TODO:审核订单成功之后
if(res.status==0){
pushMerchantTrade(pobj);
}
return system.getResult(res);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:推送商户流水
* @param params
*/
async pushMerchantTrade(params){
let orderBean = await this.orderSve.getEorderById({id: this.trim(id)});
if(!orderBean){
console.log(`推送流水失败 订单信息获取异常`);
}
if(params.audit_status=='20'){ //订单审核成功
}
if(params.audit_status=='30'){ //订单审核失败
}
}
/**
* fn:查看订单(根据ID查询)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<{msg: string, data: (*|null), bizmsg: string, status: number}>}
*/
async getEorderById(pobj, pobj2, req, res) {
try{
if(!pobj.id){
return system.getResult(null, `订单【${pobj.id}】不存在`);
}
let res = await this.orderSve.getEorderById(pobj);
return system.getResult(res);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:查看订单列表(分页)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<{msg: string, data: (*|null), bizmsg: string, status: number}>}
*/
async pageEorder(pobj, pobj2, req, res) {
try{
let res = await this.orderSve.pageEorder(pobj);
return system.getResult(res);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:更改订单状态
* ps:可以修改的订单的状态 支付状态 审核状态 生效状态 状态code 依次 10 20 30 待xx 完成 失败
* 每次只能修改一个状态 (这里只能修改状态没有 状态标记注释 如果修改订单审核状态为失败请调用 “auditEorder” 接口)
* TODO:可能考虑修改生效状态需要加到 延迟消息队列中 用来处理过期失效的订单
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async updEorderStatus(pobj, pobj2, req, res){
if(!pobj.id){
return system.getResult(null, `参数错误 订单ID不能为空`);
}
try{
//TODO:需要添加商户信息 (merchant_id)
return await this.orderSve.updEorderStatus(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
}
module.exports = ProductCtl;
\ No newline at end of file
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
const moment = require('moment');
class OrderCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.orderauthlogSve = system.getObject("service.order.orderauthlogSve");
}
/**
* fn:保存身份认证日志
* ps:测试开发中开放 ,此接口不向外暴露, 认证引擎异步回调将此次操作插入到表中
* @param pobj 1.spendedBegin消费的开始时间 2.spendedEnd消费的结束时间
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async saveEorderAuthLog(pobj, pobj2, req, res){
if(!pobj.order_id){
return system.getResult(null, `参数错误 订单ID不能为空`);
}
if(!pobj.product_id){
return system.getResult(null, `参数错误 产品ID不能为空`);
}
if(!pobj.user_name){
return system.getResult(null, `参数错误 使用方不能为空`);
}
if(!pobj.platform_name){
return system.getResult(null, `参数错误 平台名称不能为空`);
}
if(!pobj.actual_spend_name){
return system.getResult(null, `参数错误 实际使用方不能为空`);
}
pobj.engine_trade_id = this.trim(pobj.engine_trade_id) ||'';
pobj.spended_num = Number(pobj.spended_num || 0);
pobj.spended_at = pobj.spended_at?pobj.spended_at:new Date();
pobj.pass=pobj.pass?pobj.pass:0; //是否通过 默认是不通过
try{
return await this.orderauthlogSve.saveEorderAuthLog(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:身份认证日志列表
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async pageEorderAuthLog(pobj, pobj2, req, res){
//如果存在时间筛选 时间格式 2020-05
if(pobj.spendedDate){
let dateRes = formatDate(pobj.spendedDate);
pobj.spendedBegin = dateRes.spendedBegin;
pobj.spendedEnd = dateRes.spendedEnd;
}
try{
//TODO:需要获取当前商户信息 (商户ID)
pobj.merchant_id = "xxx";
return await this.orderauthlogSve.pageEorderAuthLog(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:格式化日期
* @param params
*/
formatDate(params){
if(!params){return;}
let date = moment(params);
let spendedBegin=date.format("YYYY-MM-DD HH:mm:ss");
let tempMonth = date.month()+1;
tempMonth=tempMonth<10?'0'+tempMonth:tempMonth;
let tempDay = date.daysInMonth();
tempDay=tempDay<10?'0'+tempDay:tempDay;
let spendedEnd = date.year() + "-" + tempMonth + '-' + tempDay + " 23:59:59";
return { spendedBegin,spendedEnd };
}
}
module.exports = ProductCtl;
\ No newline at end of file
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
class OrderCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.orderproductSve = system.getObject("service.order.orderproductSve");
}
/**
* fn:根据产品ID查询最早创建的订单
* ps:当前商户下如果存在 单个商品和组合商品 都包涵 同样的子产品 ,在实际消费的时候 应该扣除最先创建订单的子产品(订单的状态 生效中)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async listEorderProduct(pobj, pobj2, req, res){
if(!pobj.product_id){
return system.getResult(null, `参数错误 产品ID不能为空`);
}
try{
//TODO:需要获取当前商户信息 (商户ID)
pobj.merchant_id = "xxx";
return await this.orderproductSve.listEorderProduct(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:查看当前商户下所有的订单相关的产品(没有分页)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<{msg: string, data: (*|null), bizmsg: string, status: number}|void|*>}
*/
async listEorderProductByMerchantId(pobj, pobj2, req, res){
if(!pobj.product_id){
return system.getResult(null, `参数错误 产品ID不能为空`);
}
try{
if(!pobj.merchant_id){
return system.getResult(null, `获取数据错误`);
}
return await this.orderproductSve.listEorderProductByMerchantId(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
}
module.exports = ProductCtl;
\ No newline at end of file
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
const moment = require('moment');
class OrderCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.ordersignlogSve = system.getObject("service.order.ordersignlogSve");
}
/**
* fn:保存签约日志
* ps:测试开发中开放 ,此接口不向外暴露, 认证引擎异步回调将此次操作插入到表中
* @param pobj 1.spendedBegin消费的开始时间 2.spendedEnd消费的结束时间
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async saveEorderSignLog(pobj, pobj2, req, res){
if(!params.order_id){
return system.getResult(null, `参数错误 订单ID不能为空`);
}
if(!params.product_id){
return system.getResult(null, `参数错误 产品ID不能为空`);
}
if(!params.engine_contract_name){
return system.getResult(null, `参数错误 签署任务名称不能为空`);
}
if(!params.engine_contract_id){
return system.getResult(null, `参数错误 签署ID不能为空`);
}
if(!params.actual_spend_name){
return system.getResult(null, `参数错误 实际使用方不能为空`);
}
params.spended_num = Number(params.spended_num || 0);
params.spended_at = params.spended_at?params.spended_at:new Date();
params.platform_id=params.platform_id?params.platform_id:'';
try{
return await this.ordersignlogSve.saveEorderSignLog(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:签约日志列表(分页)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async pageEorderSignLog(pobj, pobj2, req, res){
//如果存在时间筛选 时间格式 2020-05
if(pobj.spendedDate){
let dateRes = formatDate(pobj.spendedDate);
pobj.spendedBegin = dateRes.spendedBegin;
pobj.spendedEnd = dateRes.spendedEnd;
}
try{
return await this.ordersignlogSve.pageEorderSignLog(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:格式化日期
* @param params
*/
formatDate(params){
if(!params){return;}
let date = moment(params);
let spendedBegin=date.format("YYYY-MM-DD HH:mm:ss");
let tempMonth = date.month()+1;
tempMonth=tempMonth<10?'0'+tempMonth:tempMonth;
let tempDay = date.daysInMonth();
tempDay=tempDay<10?'0'+tempDay:tempDay;
let spendedEnd = date.year() + "-" + tempMonth + '-' + tempDay + " 23:59:59";
return { spendedBegin,spendedEnd };
}
}
module.exports = ProductCtl;
\ No newline at end of file
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
const md5 = require("MD5");
const uuidv4 = require('uuid/v4');
const logCtl = system.getObject("web.common.oplogCtl");
class ProductCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.prodSve = system.getObject("service.product.productSve");
this.redisClient = system.getObject("util.redisClient");
}
async test(pobj, pobj2, req, res) {
console.log(pobj);
async getPage (pobj, pobj2, req) {
try {
let rs = {test: 1};
return system.getResultSuccess(rs);
let res = await this.prodSve.getPage(pobj)
return res
} catch (error) {
console.log(error);
return system.getResultFail(500, "接口异常:" + error.message);
return system.getResultFail(500, err.message)
}
}
async getAllDic (pobj, pobj2, req) {
try {
let res = await this.prodSve.getAllDic(pobj)
return res
} catch (error) {
return system.getResultFail(500, err.message)
}
}
async getByIds (pobj, pobj2, req) {
try {
let res = await this.prodSve.getByIds(pobj)
return res
} catch (error) {
return system.getResultFail(500, err.message)
}
}
async getItems (pobj, pobj2, req) {
try {
let res = await this.prodSve.getItems(pobj)
return res
} catch (error) {
return system.getResultFail(500, err.message)
}
}
async createOrUpdate (pobj, pobj2, req) {
try {
let res = await this.prodSve.createOrUpdate(pobj)
return res
} catch (error) {
return system.getResultFail(500, err.message)
}
}
}
......
const system = require("../../../system");
const ServiceBase = require("../../svems.base")
class UserService extends ServiceBase {
constructor() {
super();
}
/**
* fn:保存订单
* @param params
* @returns {Promise<{msg: *, data, bizmsg: *|string, status: number}|any|undefined>}
*/
async saveEorder(params) {
return await this.callms("sve_order", "saveEorder", params);
}
/**
* fn:审核订单
* @param params
* @returns {Promise<{msg: *, data, bizmsg: *|string, status: number}|any|undefined>}
*/
async auditEorder(params) {
return await this.callms("sve_order", "auditEorder", params);
}
/**
* fn:根据ID查看订单
* @param params
* @returns {Promise<{msg: *, data, bizmsg: *|string, status: number}|any|undefined>}
*/
async getEorderById(params) {
return await this.callms("sve_order", "getEorderById", params);
}
}
module.exports = UserService;
\ No newline at end of file
const system = require("../../../system");
const ServiceBase = require("../../svems.base")
class UserService extends ServiceBase {
constructor() {
super();
}
/**
* fn:保存身份认证日志
* @param params
* @returns {Promise<void>}
*/
async saveEorderAuthLog(params){
return await this.callms("sve_order", "saveEorderAuthLog", params);
}
/**
* fn:身份认证日志列表
* @param params
* @returns {Promise<void>}
*/
async pageEorderAuthLog(params){
return await this.callms("sve_order", "pageEorderAuthLog", params);
}
}
module.exports = UserService;
\ No newline at end of file
const system = require("../../../system");
const ServiceBase = require("../../svems.base")
class UserService extends ServiceBase {
constructor() {
super();
}
/**
* fn:根据产品ID查询最早创建的订单
* ps:当前商户下如果存在 单个商品和组合商品 都包涵 同样的子产品 ,在实际消费的时候 应该扣除最先创建订单的子产品(订单的状态 生效中)
* @param params
* @returns {Promise<void>}
*/
async listEorderProduct(params){
return await this.callms("sve_order", "listEorderProduct", params);
}
/**
* fn:fn:查看当前商户下所有的订单相关的产品(没有分页)
* @param params
* @returns {Promise<{msg: string, data, bizmsg: *|string, status: number}|*|undefined>}
*/
async listEorderProductByMerchantId(params){
return await this.callms("sve_order", "listEorderProductByMerchantId", params);
}
}
module.exports = UserService;
\ No newline at end of file
const system = require("../../../system");
const ServiceBase = require("../../svems.base")
class UserService extends ServiceBase {
constructor() {
super();
}
/**
* fn:保存签约日志
* @param params
* @returns {Promise<void>}
*/
async saveEorderSignLog(params){
return await this.callms("sve_order", "saveEorderSignLog", params);
}
/**
* fn:签约日志列表
* @param params
* @returns {Promise<void>}
*/
async pageEorderSignLog(params){
return await this.callms("sve_order", "pageEorderSignLog", params);
}
}
module.exports = UserService;
\ No newline at end of file
const system = require("../../../system");
const ServiceBase = require("../../svems.base")
class ProductService extends ServiceBase {
constructor() {
super();
}
async getPage (params) {
try {
return await this.callms("engine_product", "getPage", params)
} catch (error) {
throw error
}
}
async getAllDic (params) {
try {
return await this.callms("engine_product", "getAllDic", params)
} catch (error) {
throw error
}
}
async getByIds (params) {
try {
return await this.callms("engine_product", "getByIds", params)
} catch (error) {
throw error
}
}
async getItems (params) {
try {
return await this.callms("engine_product", "getItems", params)
} catch (error) {
throw error
}
}
async createOrUpdate (params) {
try {
return await this.callms("engine_product", "createOrUpdate", params)
} catch (error) {
throw error
}
}
}
module.exports = ProductService;
\ No newline at end of file
......@@ -186,7 +186,7 @@ class System {
let local = "http://127.0.0.1";
let dev = "http://39.107.234.14";
return {
// 签约引擎
// 产品引擎
engine_product: local + ":3571" + path,
// 计费引擎
engine_fee: local + ":3103" + path,
......@@ -196,7 +196,7 @@ class System {
engine_sign: local + ":3103" + path,
// 用户服务
sve_uc: local + ":3651" + path,
sve_uc: dev + ":3651" + path,
// 商户服务
sve_merchant: local + ":3652" + path,
// 订单服务
......
......@@ -2,60 +2,70 @@
var system = require("../../base/system");
var fs = require('fs');
var marked = require("marked");
const os = require("os")
module.exports = function (app) {
app.get('/doc', function (req, res) {
var path = process.cwd() + "/app/front/entry/public/apidoc/README.md";
// var path = process.cwd() + "/xgg-saas-platform/app/front/entry/public/apidoc/README.md";
fs.readFile(path, function(err, data){
if(err){
// var path = process.cwd() + "/app/front/entry/public/apidoc/README.md";
// var path = process.cwd() + "/esign-admin/app/front/entry/public/apidoc/README.md";
var path = `${process.cwd()}${os.type == 'Windows_NT' ?
"/esign-admin/app/front/entry/public/apidoc/README.md" :
"/app/front/entry/public/apidoc/README.md"}`;
fs.readFile(path, function (err, data) {
if (err) {
console.log(err);
res.send("文件不存在!");
} else{
} else {
console.log(data);
str = marked(data.toString());
res.render('apidoc',{str});
}
res.render('apidoc', { str });
}
});
});
app.get('/doc/:forder', function (req, res) {
var path = process.cwd() + "/app/front/entry/public/apidoc/README.md";
// var path = process.cwd() + "/xgg-saas-platform/app/front/entry/public/apidoc/README.md";
// var path = process.cwd() + "/app/front/entry/public/apidoc/README.md";
// var path = process.cwd() + "/esign-admin/app/front/entry/public/apidoc/README.md";
var path = `${process.cwd()}${os.type == 'Windows_NT' ?
"/esign-admin/app/front/entry/public/apidoc/README.md" :
"/app/front/entry/public/apidoc/README.md"}`;
fs.readFile(path, function(err, data){
if(err){
fs.readFile(path, function (err, data) {
if (err) {
console.log(err);
res.send("文件不存在!");
} else{
} else {
console.log(data);
str = marked(data.toString());
res.render('apidoc',{str});
}
res.render('apidoc', { str });
}
});
});
app.get('/doc/:forder/:fileName', function (req, res) {
var forder = req.params["forder"];
var fileName = req.params["fileName"] || "README.md";
var path = process.cwd() + "/app/front/entry/public/apidoc";
// var path = process.cwd() + "/xgg-saas-platform/app/front/entry/public/apidoc";
if(forder) {
path = path + "/" + forder + "/" + fileName;
// var path = process.cwd() + "/app/front/entry/public/apidoc";
// var path = process.cwd() + "/esign-admin/app/front/entry/public/apidoc";
var path = `${process.cwd()}${os.type == 'Windows_NT' ?
"/esign-admin/app/front/entry/public/apidoc" :
"/app/front/entry/public/apidoc"}`;
if (forder) {
path = path + "/" + forder + "/" + fileName;
} else {
path = path + "/" + fileName;
}
fs.readFile(path, function(err, data){
if(err){
fs.readFile(path, function (err, data) {
if (err) {
console.log(err);
res.send("文件不存在!");
} else{
} else {
console.log(data);
str = marked(data.toString());
console.log(str);
res.render('apidoc',{str});
}
res.render('apidoc', { str });
}
});
});
};
......@@ -91,6 +91,7 @@ module.exports = function (app) {
req.body.classname = classPath;
if(req.loginUser) {
}
params.push(methodName);
......
......@@ -33,6 +33,7 @@
"gm": "^1.23.1",
"marked": "^0.7.0",
"method-override": "^2.3.10",
"moment": "^2.27.0",
"morgan": "^1.9.0",
"multer": "^1.3.0",
"mysql2": "^1.5.3",
......
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