Commit 7860b996 by 孙亚楠

d

parent 4af1b983
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");
this.productSve = system.getObject("service.product.productSve");
this.ordersignlogSve = system.getObject("service.order.ordersignlogSve");
this.orderauthlogSve = system.getObject("service.order.orderauthlogSve");
this.feeSve = system.getObject("service.fee.feeSve");
}
/**
* fn:查询商户下可用订单的产品(所有)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<{msg: *, data, bizmsg: *|string, status: number}|*|{msg: string, data, bizmsg: (*|string), status: number}>}
*/
async getMerchantLiveAllProducts(pobj, pobj2, req, res){
if(!pobj.merchant_id){
return system.getResult(null, `参数错误 商户ID不能为空`);
}
try{
return await this.orderSve.getMerchantLiveAllProducts(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* 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);
if(res.status==0 && res.data.product_arr){
for(let item of res.data.product_arr){
item.price = system.f2y(item.price);
}
}
// 计费
// let feeRes = await this.feeSve.setRowsFee([res.data], "engine_account_id");
return 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);
if(res.status!=0 || res.data.count==0){
return res;
}
//格式化产品信息
let ids = [],productMap={};
for (let item of res.data.rows) {
item.price = system.f2y(item.price);
if(item.product_type=='1'){
item.product_unit_price = system.f2y(item.product_unit_price);
}
if(item.product_type=='2'){
item.product_specifications = system.f2y(item.product_specifications);
}
ids.push(item.product_id);
}
let p_listRes = await this.productSve.getByIds({ids:ids});
if(p_listRes.status!=0){
return system.getResult(`获取订单产品失败`);
}
//将产品列表映射成Map结构
for (let ele of p_listRes.data) {
productMap[ele.id]=ele;
}
for (let item of res.data.rows) {
item.product_info = productMap[item.product_id];
}
// 设置计费内容
await this.feeSve.setRowsFee(res.data.rows, "engine_account_id");
return res;
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
/**
* fn:查询商户下可用订单的产品
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async getMerchantLiveProduct(pobj, pobj2, req, res){
if(!pobj.merchant_id){
return system.getResult(null, `参数错误 商户ID不能为空`);
}
try{
return await this.orderSve.getMerchantLiveProduct(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
}
module.exports = OrderCtl;
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
const moment = require('moment');
class OrderauthlogCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.orderauthlogSve = system.getObject("service.order.orderauthlogSve");
this.productSve = system.getObject("service.product.productSve");
}
/**
* 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 = this.formatDate(pobj.spendedDate);
pobj.spendedBegin = dateRes.spendedBegin;
pobj.spendedEnd = dateRes.spendedEnd;
}
try{
let res = await this.orderauthlogSve.pageEorderAuthLog(pobj);
if(res.status!=0 || res.data.count==0){
return res;
}
//格式化产品信息
let ids = [],productMap={};
for (let item of res.data.rows) {
ids.push(item.product_id);
}
let p_listRes = await this.productSve.getByIds({ids:ids});
if(p_listRes.status!=0){
return res;
}
//将产品列表映射成Map结构
for (let ele of p_listRes.data) {
productMap[ele.id]=ele;
}
for (let item of res.data.rows) {
item.product_info = productMap[item.product_id];
}
return res;
}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 = OrderauthlogCtl;
\ No newline at end of file
var system = require("../../../system")
const settings = require("../../../../config/settings")
const CtlBase = require("../../ctlms.base");
class OrderproductCtl 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不能为空`);
}
if(!pobj.merchant_id){
return system.getResult(null, `获取数据错误`);
}
try{
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){
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 = OrderproductCtl;
\ 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 OrdersignlogCtl extends CtlBase {
constructor() {
super();
this.userSve = system.getObject("service.uc.userSve");
this.ordersignlogSve = system.getObject("service.order.ordersignlogSve");
this.productSve = system.getObject("service.product.productSve");
}
/**
* fn:保存签约日志
* ps:测试开发中开放 ,此接口不向外暴露, 认证引擎异步回调将此次操作插入到表中
* @param pobj 1.spendedBegin消费的开始时间 2.spendedEnd消费的结束时间
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async saveEorderSignLog(pobj, pobj2, req, res){
if(!pobj.order_id){
return system.getResult(null, `参数错误 订单ID不能为空`);
}
if(!pobj.product_id){
return system.getResult(null, `参数错误 产品ID不能为空`);
}
if(!pobj.engine_contract_name){
return system.getResult(null, `参数错误 签署任务名称不能为空`);
}
if(!pobj.engine_contract_id){
return system.getResult(null, `参数错误 签署ID不能为空`);
}
if(!pobj.actual_spend_name){
return system.getResult(null, `参数错误 实际使用方不能为空`);
}
if(!pobj.platform_name){
return system.getResult(null, `参数错误 平台名称不能为空`);
}
pobj.merchant_id = pobj.merchant_id ? this.trim(pobj.merchant_id) : '';
pobj.spended_num = Number(pobj.spended_num || 0);
pobj.spended_at = pobj.spended_at?pobj.spended_at:new Date();
pobj.platform_id=pobj.platform_id?pobj.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 = this.formatDate(pobj.spendedDate);
pobj.spendedBegin = dateRes.spendedBegin;
pobj.spendedEnd = dateRes.spendedEnd;
}
try{
let res= await this.ordersignlogSve.pageEorderSignLog(pobj);
if(res.status!=0 || res.data.count==0){
return res;
}
//格式化产品信息
let ids = [],productMap={};
for (let item of res.data.rows) {
ids.push(item.product_id);
}
let p_listRes = await this.productSve.getByIds({ids:ids});
if(p_listRes.status!=0){
return res;
}
//将产品列表映射成Map结构
for (let ele of p_listRes.data) {
productMap[ele.id]=ele;
}
for (let item of res.data.rows) {
item.product_info = productMap[item.product_id];
}
return res;
}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 };
}
/**
* fn:合同列表
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<void>}
*/
async pageEorderContract(pobj, pobj2, req, res){
try{
return await this.ordersignlogSve.pageEorderContract(pobj);
}catch (e) {
console.log(e);
return system.getResult(null, `系统错误`);
}
}
}
module.exports = OrdersignlogCtl;
\ No newline at end of file
var system = require("../../../system")
const CtlBase = require("../../ctlms.base");
class ProductCtl extends CtlBase {
constructor() {
super();
this.prodSve = system.getObject("service.product.productSve");
}
async getPage (pobj, pobj2, req) {
try {
let res = await this.prodSve.getPage(pobj);
return res
} catch (error) {
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)
}
}
async apiList (pobj) {
try {
let res = await this.prodSve.apiList(pobj)
return res
} catch (error) {
return system.getResultFail(500, err.message)
}
}
async apiMap (pobj) {
try {
let res = await this.prodSve.apiMap(pobj)
return res
} catch (error) {
return system.getResultFail(500, err.message)
}
}
}
module.exports = ProductCtl;
\ No newline at end of file
...@@ -21,6 +21,72 @@ class FeeService extends ServiceBase { ...@@ -21,6 +21,72 @@ class FeeService extends ServiceBase {
} }
} }
/**
* 创建计费账户
* @param params
* app_id: 电子签订单 100001
* app_data_id: 订单id
* balance: 余额,整数(分或份)
* @returns {status:0, msg: "", data: {account_id: 1111}}
*/
async createAccount(params) {
try {
return await this.callms("engine_fee", "accountCreate", params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
/**
* 账户查询
* @param params
* account_id: 账户id
* @returns
*/
async account(params) {
try {
return await this.callms("engine_fee", "accountInfo", params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
/**
* 账户查询批量
* @param params
* account_ids: 账户id
* @returns
*/
async accountBulk(params) {
try {
return await this.callms("engine_fee", "accountBulkInfo", params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
/**
* 账户查询批量
* @param params
* {
* "account_id": "1",
* "trade_amt": 57,
* "trade_no": "123314",
* "trade_desc": "三要素验证"
* }
* +
* account_ids: 账户id
* @returns
*/
async accountTrade(params) {
try {
return await this.callms("engine_fee", "accountTrade", params);
} catch (error) {
return system.getResult(null, `系统错误 错误信息 ${error}`);
}
}
/** /**
* @param params * @param params
* { * {
...@@ -60,6 +126,28 @@ class FeeService extends ServiceBase { ...@@ -60,6 +126,28 @@ class FeeService extends ServiceBase {
} }
} }
async setRowsFee(rows, field) {
if (!rows || rows.length == 0 || !field) {
return;
}
let ids = [];
for (let item of rows) {
let id = Number(item[field] || 0);
if (!id) {
continue;
}
ids.push(id);
}
let map = await this.accountBulk({ids: ids});
map = map.data || {};
for (let item of rows) {
item.fee = map[Number(item[field] || 0)] || {balance:0};
item.allowance=Number(item.product_specifications) - Number(item.fee.balance || 0);
item.allowance = item.allowance < 0 ? 0 : item.allowance;
}
}
} }
module.exports = FeeService; module.exports = FeeService;
\ No newline at end of file
const system = require("../../../system");
const ServiceBase = require("../../svems.base")
class OrderService extends ServiceBase {
constructor() {
super();
}
/**
* fn:查询商户下可用订单的产品(所有)
* @param pobj
* @param pobj2
* @param req
* @param res
* @returns {Promise<{msg: *, data, bizmsg: *|string, status: number}|*|{msg: string, data, bizmsg: (*|string), status: number}>}
*/
async getMerchantLiveAllProducts(pobj, pobj2, req, res){
return await this.callms("sve_order", "getMerchantLiveAllProducts", 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);
}
/**
* fn:查看订单列表(分页)
* @param params
* @returns {Promise<{msg: *, data, bizmsg: *|string, status: number}|any|undefined>}
*/
async pageEorder(params) {
return await this.callms("sve_order", "pageEorder", params);
}
/**
* fn:查询商户下可用订单的产品
* @param params
* @returns {Promise<{msg: string, data, bizmsg: *|string, status: number}|any|undefined>}
*/
async getMerchantLiveProduct(params){
return await this.callms("sve_order", "getMerchantLiveProduct", params);
}
}
module.exports = OrderService;
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);
}
/**
* fn:签署合同列表(分页)
* @param params
* @returns {Promise<void>}
*/
async pageEorderContract(params){
return await this.callms("sve_order", "pageEorderContract", 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
}
}
async apiList (params) {
try {
return await this.callms("engine_product", "apiList", params)
} catch (error) {
throw error
}
}
async apiMap (params) {
try {
return await this.callms("engine_product", "apiMap", params)
} catch (error) {
throw error
}
}
}
module.exports = ProductService;
\ No newline at end of file
...@@ -184,6 +184,7 @@ class System { ...@@ -184,6 +184,7 @@ class System {
var path = "/api/op/action/springboard"; var path = "/api/op/action/springboard";
if (settings.env == "dev") { if (settings.env == "dev") {
let local = "http://127.0.0.1"; let local = "http://127.0.0.1";
let liangwenkai = "http://192.168.200.183";
let dev = "http://39.107.234.14"; let dev = "http://39.107.234.14";
return { return {
// 产品引擎 // 产品引擎
...@@ -196,11 +197,11 @@ class System { ...@@ -196,11 +197,11 @@ class System {
engine_sign: local + ":3574" + path, engine_sign: local + ":3574" + path,
// 用户服务 // 用户服务
sve_uc: local + ":3651" + path, sve_uc: dev + ":3651" + path,
// 商户服务 // 商户服务
sve_merchant: local + ":3652" + path, sve_merchant: dev + ":3652" + path,
// 订单服务 // 订单服务
sve_order: dev + ":3653" + path, sve_order: local + ":3653" + path,
} }
} else { } else {
return { return {
......
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