Commit 5ccbe000 by 宋毅

tj

parent 3e1c402f
......@@ -27,6 +27,8 @@ class ProductAPI extends APIBase {
switch (action_type) {
case "addOrder"://创建订单
opResult = await this.utilsOrderSve.addOrder(pobj, pobj.actionBody);
await this.pushInfo(opResult, pobj, pobj.actionBody, "pushBusiness");
await this.pushInfo(opResult, pobj, pobj.actionBody, "pushOrder");
break;
case "getOrderInfo"://获取订单列表信息
opResult = await this.utilsOrderSve.getOrderInfo(pobj, pobj.actionBody);
......@@ -43,5 +45,44 @@ class ProductAPI extends APIBase {
}
return opResult;
}
async pushInfo(orderResult, pobj, actionBody, opType) {
if (orderResult.status != 0) {
return "";
}
var interface_list = actionBody.product_info.interface_info;
if (!interface_list) {
return "";
}
var interface_info = null;
var interface_list_temp = interface_list.filter(f => f.op_type == opType)
if (interface_list_temp && interface_list_temp.length > 0) {
interface_info = interface_list_temp[0];
}
if (!interface_info) {
return "";
}
pobj.actionBody.add_order_info = orderResult.data;
var refOpResult = this.reflexAction(interface_info, pobj);
return refOpResult;
}
async reflexAction(interface_info, pobj) {
var refResult = null;
if (interface_info.interface_type == "bd") {
if (!interface_info.method_name) {
return system.getResult(null, "产品接口参数信息有误,20110");
}//操作的方法名称
var invokeObj = system.getObject(interface_info.interface_url);
if (!invokeObj[interface_info.method_name]) {
return system.getResult(null, "产品接口参数方法信息有误,20130");
}
pobj.interface_params = interface_info.params;
var params = [pobj];
refResult = await invokeObj[interface_info.method_name].apply(invokeObj, params);
}
else if (interface_info.interface_type == "yc") {
}
return refResult;
}
}
module.exports = ProductAPI;
\ No newline at end of file
......@@ -57,5 +57,46 @@ class AppServiceBase {
var result = JSON.parse(rtn.stdout);
return result;
}
/*
返回20位业务订单号
prefix:业务前缀
*/
async getBusUid(prefix) {
prefix = (prefix || "");
if (prefix) {
prefix = prefix.toUpperCase();
}
var prefixlength = prefix.length;
var subLen = 8 - prefixlength;
var uidStr = "";
if (subLen > 0) {
uidStr = await this.getUidInfo(subLen, 60);
}
var timStr = moment().format("YYYYMMDDHHmm");
return prefix + timStr + uidStr;
}
/*
len:返回长度
radix:参与计算的长度,最大为62
*/
async getUidInfo(len, radix) {
var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');//长度62,到yz长度为长36
var uuid = [], i;
radix = radix || chars.length;
if (len) {
for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
} else {
var r;
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
for (i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random() * 16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
return uuid.join('');
}
}
module.exports = AppServiceBase;
var system = require("../../../system");
var settings = require("../../../../config/settings");
const AppServiceBase = require("../../app.base");
const logCtl = system.getObject("service.common.oplogSve");
const aliyunClient = system.getObject("util.aliyunClient");
class UtilsFqAliyunSve extends AppServiceBase {
constructor() {
super();
}
async pushBusiness(pobj) {
var add_order_info = pobj.actionBody.add_order_info;
if (pobj.appInfo.pay_type != "00") {
if (!add_order_info.orderStatus || Number(add_order_info.orderStatus) < 2) {
return "";
}
}
var orderContact = pobj.actionBody.orderContact;
var product_info = pobj.actionBody.product_info;
if (!pobj.interface_params) {
return "";
}
var interface_params_info = JSON.parse(pobj.interface_params);
if (!interface_params_info || !interface_params_info.opUrl || !interface_params_info.key || !interface_params_info.secret) {
return "";
}
var url = "https://yunfuapi-dev.gongsibao.com" + pobj.interface_params;
var params = {
idempotentId: add_order_info.orderNo,// 是 业务 ID
idempotentSource: product_info.service_business_code,// 是 业务来源(ic_jdyun、ic_ali)
idempotentSourceName: product_info.service_business_code,// 是 京东云应用、阿里云应用
city: "",// 否 所属城市
phone: orderContact.mobile,// 是 手机号
userId: pobj.userInfo.channelUserId,// 否 用户 ID
companyName: "",// 否 公司名称
orderPrice: pobj.actionBody.totalSum,// 是 订单金额
productId: product_info.price_item.service_code,// 是 产品 ID
productQuantity: pobj.actionBody.quantity,// 是 产品数量
};
var result = this.opAliyunClientPost("pushBusiness", interface_params_info.opUrl, interface_params_info.key, interface_params_info.secret, params);
}
async opAliyunClientPost(methodName, url, key, secret, params) {
try {
var rc = system.getObject("util.aliyunClient");
var rtn = = await rc.post(url, key, secret, params);
this.logCtl.info({
appid: pobj.appInfo.uapp_id,
appkey: pobj.appInfo.uappKey,
requestId: req.requestId || "",
op: "center-channel/app/base/service/impl/utilsSve/utilsFqAliyunSve.js/" + methodName,
content: "请求地址:" + url + ",参数:" + JSON.stringify(params) + ",返回结果:" + JSON.stringify(rtn),
clientIp: pobj.clientIp,
optitle: "推送订单商机到FQ信息--again",
});
if (rtn.code != 200 && rtn.success != true) {
return system.getResult(null, "推送失败,失败原因:" + rtn.errorMsg + ",selfrequestId=" + req.requestId + ",requestId=" + rtn.requestId);
}
return system.getResultSuccess(null, "推送成功");
} catch (e) {
//日志记录
this.logCtl.error({
appid: pobj.appInfo.uapp_id,
appkey: pobj.appInfo.uappKey,
requestId: req.requestId || "",
op: "center-channel/app/base/service/impl/utilsSve/utilsFqAliyunSve.js/" + methodName,
content: "error:" + e.stack,
clientIp: pobj.clientIp,
optitle: "推送操作出错->opAliyunClientPost",
});
}
}
}
module.exports = UtilsFqAliyunSve;
......@@ -46,13 +46,13 @@ class UtilsOrderService extends AppServiceBase {
return system.getResult(null, "产品编码有误,10010");
}
if (!actionBody.payCode) {
return system.getResult(null, "支付价格payCode有误,10030");
return system.getResult(null, "支付价格payCode不能为空,10030");
}
if (!actionBody.quantity || Number(actionBody.quantity) <= 0) {
return system.getResult(null, "订单数量有误,10050");
return system.getResult(null, "订单数量为空或有误,10050");
}
var url = settings.centerAppUrl() + "action/opProduct/springBoard";
pobj.actionType = "getProductDetail";
var url = settings.centerAppUrl() + "action/opProduct/springBoard";
var productItemResult = await this.restPostUrl(pobj, url);
if (productItemResult.status != 0) {
return productItemResult;
......@@ -62,20 +62,18 @@ class UtilsOrderService extends AppServiceBase {
if (verifyResult.status != 0) {
return verifyResult;
}
pobj.actionType = "getProductInterface";
pobj.actionBody.productPriceId = pobj.actionBody.product_info.price_item.id;
var productItemInterfaceResult = await this.restPostUrl(pobj, url);
// if (productItemInterfaceResult.status != 0) {
// return productItemInterfaceResult;
// }
productItemResult.data.interface_info = productItemInterfaceResult.data;
pobj.actionBody.product_info.interface_info = productItemInterfaceResult.data;
pobj.actionType = "addOrder";
var reqUrl = this.centerOrderUrl + "action/order/springBoard";
console.log(pobj);
var result = await this.restPostUrl(pobj, reqUrl);
result.serviceCode = pobj.actionBody.product_info.price_item.service_code;
result.totalSum = actionBody.totalSum;
return result;
}
......
const Client = require('aliyun-api-gateway').Client;
var RPCClient = require('@alicloud/pop-core').RPCClient;
// const client = new Client('203756805', 'crkyej0xlmqa6bmvqijun6ltxparllyn');//开发
const client = new Client('203763771', 'e5e2ytnn6nrkr9qnqk4w5e6z0xlhkznu');//线上
class aliyunClient {
constructor() {
// this.aliReqUrl = "https://aliapi.gongsibao.com/tm/springboard";
this.aliclient = new RPCClient({
accessKeyId: 'LTAI4FmyipY1wuLHjLhMWiPa',
accessKeySecret: 'hp4FF18IDCSym1prqzxrAjnnhNH3ju',
endpoint: 'https://trademark.aliyuncs.com',
apiVersion: '2018-07-24'
});
}
async post(aliReqUrl, actionBody) {
// var reqParam = {};
// reqParam["ActionProcess"] = "AliTm";
// reqParam["ActionType"] = actionType;
// reqParam["ActionBody"] = actionBody;
// if (!actionBody.reqOnlyCode) {
// actionBody["reqOnlyCode"] = await this.getCreateOrderNum();
// }
async post(aliReqUrl, key, secret, actionBody) {
const client = new Client(key, secret);
var param = {
data: actionBody,
timeout: 20000,
......@@ -36,10 +18,15 @@ class aliyunClient {
}
//阿里接口
async reqbyget(obj, cbk) {
var self = this;
const aliclient = new RPCClient({
accessKeyId: 'LTAI4FmyipY1wuLHjLhMWiPa',
accessKeySecret: 'hp4FF18IDCSym1prqzxrAjnnhNH3ju',
endpoint: 'https://trademark.aliyuncs.com',
apiVersion: '2018-07-24'
});
var action = obj.action;
var reqbody = obj.reqbody;
return self.aliclient.request(action, reqbody, {
return this.aliclient.request(action, reqbody, {
timeout: 3000, // default 3000 ms
formatAction: true, // default true, format the action to Action
formatParams: true, // default true, format the parameter name to first letter upper case
......@@ -48,30 +35,5 @@ class aliyunClient {
});
}
// async getCreateOrderNum() {
// var createOrderNum = await this.getUidStr(5, 36);//====================订单号生成
// return createOrderNum + "" + Date.now();
// }
// async getUidStr(len, radix) {
// var chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
// var uuid = [], i;
// radix = radix || chars.length;
// if (len) {
// for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
// } else {
// var r;
// uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
// uuid[14] = '4';
// for (i = 0; i < 36; i++) {
// if (!uuid[i]) {
// r = 0 | Math.random() * 16;
// uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
// }
// }
// }
// return uuid.join('');
// }
}
module.exports = aliyunClient;
......@@ -18,7 +18,71 @@
``` javascript
{
"typeOneCode":"sbfu"
"channelItemCode":"fzsbzc",// Y 产品的渠道编码
"payCode": "zzsbzc-1", // Y 支付价格code
"quantity":1,// Y 购买数量
"totalSum":300,// Y 订单总金额---(商标自助注册计算格式:小于10项为产品价格×10,大于10项的为产品价格×小项数量)
"payTotalSum":300, // Y 订单付款总金额
"notes": "订单备注信息",// N 订单备注
"orderContact":{ // N 订单联系人信息,没有则填写{}
"contacts": "宋毅",// N 联系人
"mobile": "15010929368",// N 联系人电话
"email": "songyi@gongsibao.com",// N 联系人邮箱
"fax": ""//传真
},
"channelOrder":{
"channelServiceNo":"",// N 服务单号(即渠道服务单号)
"channelOrderNo":"",// N 服务订单号(即渠道服务订单号,格式为: XX1,XX2)
"needNo":"",// N 需求单号(即渠道需求单号)
"payTime":"",// N 渠道需求单号支付时间
"orderStatus":1,// N 渠道需求单号支付支付状态 1: 待付款, 2: 已付款
"channelParams":""// N 渠道参数(自定义参数)
},// Y 渠道订单信息,没有则填写{}
"deliveryData":{
"apply": {//申请信息
"applyAddr": "上海市杨浦区国定路346号三楼0624室",//执照详细地址
"applyArea": "",//申请区域--暂时没有用到
"businessLicensePic": "https://gsb-zc.oss-cn-beijing.aliyuncs.com/zc_yyzz120315554031547442019316.jpg",//营业执照jpg地址
"businessLicensePdf": "https://gsb-zc.oss-cn-beijing.aliyuncs.com/zc_yyzz120315554031547442019316.pdf",//营业执照pdf地址
"code": "91310110398635929J",//统一社会信用代码
"customerType": "ent",//申请人类型 person个人,ent企业
"identityCardNo": "",//申请人身份证号--(申请类型为个人有此值)
"identityCardPic": "",//申请人身份证jpg地址--(申请类型为个人有此值)
"identityCardPdf": "", //申请人身份证pdf地址 --(申请类型为个人有此值)
"name": "上海辰者信息科技有限公司", //申请人名称
"gzwtsUrl": "https://gsb-zc.oss-cn-beijing.aliyuncs.com/zc_wts863215710393842862019914.jpg",//盖章委托书url
"smwjUrl":"",//说明文件url
"zipCode": "100000"//邮政编码
},
"tm": {
"colorizedPicUrl": "https://gsb-zc.oss-cn-beijing.aliyuncs.com/zc_word2picb2bc98b9fc564ef2a1f4b3cbe9352f39.jpg",//商标彩色图样
"tmName": "testbiao",//商标名称
"picUrl": "https://gsb-zc.oss-cn-beijing.aliyuncs.com/zc_word2picb2bc98b9fc564ef2a1f4b3cbe9352f39.jpg",//商标图样
"tmFormType": "3"//商标类型形式:1: 立体, 3: 字, 4: 图, 5: 字图, 6: 颜色, 7: 彩色
},
"nclones": [
{
"code": "02",//大类编码
"name": "颜料油漆",//大类名称
"nclThree": [
{
"code": "020008",//小项编码
"disabled": false,
"fullname": "020008 绘画用铝粉",//小项编码加名称
"name": "绘画用铝粉",//小项名称
"pcode": "0202"//小项所属群组编码
},
{
"code": "020005",
"disabled": false,
"fullname": "020005 食品用着色剂",
"name": "食品用着色剂",
"pcode": "0203"
}
]
}
]
}//Y 交付单信息,没有则填写{}
}
```
......@@ -26,128 +90,15 @@
#### 返回结果
```javascript
{
"status":0,
"msg":"success",
"data":[
{
"id":1,
"uapp_id":16,
"path_code":"sbfu/sbzc",
"path_name":"商标服务/商标注册",
"item_code":"zzsbzc",
"item_name":"商标注册【自助申请】",
"pic_url":null,
"product_desc":"{"logo":"","desc":["自己检索商标,准备官方所需注册材料","提交迅速,及时反馈","全流程跟踪,掌握申请进度"]}",
"channel_item_code":"FW_GOODS-581976-1",
"channel_item_name":"商标注册【自助申请】",
"sort":0,
"productType_id":2,
"created_at":"2020-01-07T15:29:57.000Z",
"product_id":1,
"price":300,
"supply_price":0,
"service_charge":0,
"public_expense":0,
"channel_profit_rate":0,
"price_type":"mj",
"price_type_name":"每件",
"price_desc":null,
"min_qty":1,
"max_qty":100,
"type_id":2,
"p_id":1,
"type_code":"sbzc",
"type_name":"商标注册",
"type_pic":null,
"type_desc":null,
"type_icon":null,
"p_type_id":1,
"p_type_code":"sbfu",
"p_type_name":"商标服务",
"p_type_pic":null,
"p_type_desc":null,
"p_type_icon":null
},
{
"id":2,
"uapp_id":16,
"path_code":"sbfu/sbzc",
"path_name":"商标服务/商标注册",
"item_code":"fzsbzc",
"item_name":"商标注册【专家辅助申请】",
"pic_url":null,
"product_desc":"{"logo":"","desc":["由专业代理人帮您检索分析,成功率高","为您优化注册方案,全方位保护","代理人全流程服务,24小时拿到官方申请号"]}",
"channel_item_code":"FW_GOODS-580010-1",
"channel_item_name":"商标注册【专家辅助申请】",
"sort":0,
"productType_id":2,
"created_at":"2020-01-07T15:30:34.000Z",
"product_id":2,
"price":699,
"supply_price":0,
"service_charge":0,
"public_expense":0,
"channel_profit_rate":0,
"price_type":"mj",
"price_type_name":"每件",
"price_desc":null,
"min_qty":1,
"max_qty":100,
"type_id":2,
"p_id":1,
"type_code":"sbzc",
"type_name":"商标注册",
"type_pic":null,
"type_desc":null,
"type_icon":null,
"p_type_id":1,
"p_type_code":"sbfu",
"p_type_name":"商标服务",
"p_type_pic":null,
"p_type_desc":null,
"p_type_icon":null
"status": 0,// 0为成功,否则失败
"msg": "success",
"data": {
"orderNo": "OT26202002151649kPgs",//订单号
"channelServiceNo": "OT26202002151649kPgs",//渠道服务单号
"channelOrderNo""OT26202002151649kPgs", //渠道订单号
"channelParams": ""//渠道参数
},
{
"id":3,
"uapp_id":16,
"path_code":"sbfu/sbzc",
"path_name":"商标服务/商标注册",
"item_code":"dbsbzc",
"item_name":"商标注册【担保申请】",
"pic_url":"",
"product_desc":"{"logo":"","desc":["专业代理人精准评估,风险共担","注册不成功,全额退款","24小时拿到官方申请号"]}",
"channel_item_code":"FW_GOODS-581978-1",
"channel_item_name":"商标注册【担保申请】",
"sort":0,
"productType_id":2,
"created_at":"2020-01-07T15:30:34.000Z",
"product_id":3,
"price":1380,
"supply_price":0,
"service_charge":0,
"public_expense":0,
"channel_profit_rate":0,
"price_type":"mj",
"price_type_name":"每件",
"price_desc":"",
"min_qty":1,
"max_qty":100,
"type_id":2,
"p_id":1,
"type_code":"sbzc",
"type_name":"商标注册",
"type_pic":null,
"type_desc":null,
"type_icon":null,
"p_type_id":1,
"p_type_code":"sbfu",
"p_type_name":"商标服务",
"p_type_pic":null,
"p_type_desc":null,
"p_type_icon":null
}
],
"requestId":"cb12e4a2f91440ab8f0d79b6845298e8"
"requestId": "2f90fad8108b4933bb97c3d978b0fe10"
}
```
......@@ -158,26 +109,30 @@
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 请求头中需要增加userpin(用户登录后的凭证)的值
#### 渠道执行的类型 actionType:addOrder
#### 渠道执行的类型 actionType:addOrderdeliveryData
``` javascript
{
"channelItemCode":"fzsbzc",// Y 产品的渠道编码
"payCode": "zzsbzc-1", // Y 支付价格code
"payCode": "fzsbzc-1", // Y 支付价格code
"quantity":1,// Y 购买数量
"totalSum":699,// Y 订单总金额
"payTotalSum":699, // Y 订单付款总金额
"notes": "订单备注信息",// N 订单备注
"orderContact":{ // N 订单联系人信息,没有则填写{}
"contacts": "宋毅",// N 联系人
"mobile": "15010929368",// N 联系人电话
"email": "songyi@gongsibao.com"// N 联系人邮箱
},
"channelOrder":{
"channelServiceNo":"",// N 服务单号(即渠道服务单号)
"channelOrderNo":"",// N 服务订单号(即渠道服务订单号,格式为: XX1,XX2)
"needNo":"",// N 需求单号(即渠道需求单号)
"buyerMoblie":"15010929366",// N 购买者手机号
"email":"15010929366@qq.com",// N 购买者邮箱
"payTime":"",// N 渠道需求单号支付时间
"orderStatus":1,// N 渠道需求单号支付支付状态 1: 待付款, 2: 已付款
"channelParams":""// N 渠道参数(自定义参数)
},// Y 渠道订单信息,没有则填写{}
"deliveryData":null//Y 交付单信息,没有则填写null
"deliveryData":{}//Y 交付单信息,没有则填写{}
}
```
......@@ -189,7 +144,8 @@
"msg": "success",
"data": {
"orderNo": "OT26202002151649kPgs",//订单号
"channelServiceNo": "OT26202002151649kPgs",//渠道单号
"channelServiceNo": "OT26202002151649kPgs",//渠道服务单号
"channelOrderNo""OT26202002151649kPgs", //渠道订单号
"channelParams": ""//渠道参数
},
"requestId": "2f90fad8108b4933bb97c3d978b0fe10"
......@@ -200,7 +156,7 @@
[返回到目录](#menu)
##### URL
[/web/payment/paymentApi/springBoard]
#### 参数格式 `JSON`
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 请求头中需要增加userpin(用户登录后的凭证)的值
#### 渠道执行的类型 actionType:getH5PayUrl
......@@ -324,18 +280,26 @@
{
"status": 0,// 0为成功,否则失败
"msg": "success",
"data": [
"data":{
"updated": "2020-02-19T06:56:32.000Z",
"flowList":{
"updated": "2020-02-19T06:53:09.000Z",
"orderDeliveryStatus": "已下单",//流程状态编码
"orderDeliveryStatusName": "已下单",//流程状态名称
"flowList": [//流程列表
{
"updated": "", //更新时间
"orderDeliveryStatus": "已下单", //流程状态编码
"orderDeliveryStatusName": "已下单"//流程状态名称
"updated": "2020-02-19T06:53:09.000Z",
"orderDeliveryStatus": "已下单",
"orderDeliveryStatusName": "已下单"
},
{
"updated": "",
"updated": "2020-02-18",
"orderDeliveryStatus": "已提交材料",
"orderDeliveryStatusName": "已提交材料"
}
],
]
}
},
"requestId": "a277fb799d9f4dda9053fb8830f9d252"
}
......
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