Commit 1b9b2984 by 王勇飞

Merge branch 'center-channel' of gitlab.gongsibao.com:jiangyong/zhichan into center-channel

parents e554d7dd 527d8878
......@@ -37,6 +37,9 @@ class ProductAPI extends WEBBase {
case "getProductPrice":
opResult = await this.utilsProductSve.getProductPrice(pobj,pobj.actionBody)
break;
case "getProductRecommend":
opResult = await this.utilsProductSve.getProductRecommend(pobj,pobj.actionBody);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
}
......
......@@ -99,6 +99,9 @@ class TmQueryAPI extends WEBBase {
opResult = system.getResult(null, rtn.msg);
}
break;
case "getNclByCode":
opResult = await this.toolSve.getNclByCode(pobj,req);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
......
......@@ -85,6 +85,9 @@ class Need extends APIBase {
case "confirmIcpIntention":// 2020 0827 lin 新增 4.3 用户需求确认
opResult = await this.utilsNeedSve.confirmIcpIntention(pobj, pobj.actionBody);
break;
case "needBatchUpload":// 2020 0914 lin 新增 刷单一条龙服务
opResult = await this.utilsNeedSve.needBatchUpload(pobj, pobj.actionBody);
break;
case "testsymq":
opResult = await this.utilsNeedSve.testsymq(pobj);
break;
......
......@@ -54,7 +54,8 @@ class QcCenterOrderService extends AppServiceBase {
}
var self = this;
//推送方案
await this.pushIcpSolution(pushObj, needsolution.solutionNo, pobj.appInfo, self);
// 2020 0916 lin 修改 增加获取返回值
var pushIcpSolutionRes = await this.pushIcpSolution(pushObj, needsolution.solutionNo, pobj.appInfo, self);
// // 2020 0806 lin 新增推送
// var reqParams = {
......@@ -87,7 +88,8 @@ class QcCenterOrderService extends AppServiceBase {
appInfo: pobj.appInfo
}
this.utilsPushSve.aliBusiness2Delivery(reqParams, "updateChanceStatus");
return system.getResultSuccess();
//
return system.getResultSuccess(pushIcpSolutionRes);
}
return res;
}
......@@ -124,6 +126,7 @@ class QcCenterOrderService extends AppServiceBase {
var a = await self.reqCenterOrderApi(reqObj3);//保存用户确认方案url
}
}
return confirmRes;
}
}
}
......
......@@ -111,6 +111,13 @@ class ToolService extends AppServiceBase {
var plaintext = bytes.toString(cryptoJS.enc.Utf8);
return system.getResultSuccess(plaintext);
}
//智能推荐、犬类保护获取尼斯分类
async getNclByCode(pobj,req){
var reqUrl = settings.centerOrderUrl() + "action/tmOrder/springBoard";
var result = await this.restPostUrl(pobj, reqUrl);
return result;
}
}
module.exports = ToolService;
......@@ -110,7 +110,7 @@ class utilsDeliverSve extends AppServiceBase{
let result = await this.restPostUrl(pobj, url);
if(result.status !==0){
return system.getResult(null,'更新失败')
return system.getResult(null,result.msg)
}
//获取订单
let orderUrl = this.centerOrderUrl + "action/order/springBoard";
......
......@@ -14,6 +14,7 @@ class UtilsNeedService extends AppServiceBase {
this.restClient = system.getObject("util.restClient");
this.utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve");
this.utilsneedSve = system.getObject("service.common.gatewaypushlogSve");
this.qcCenterOrderSve = system.getObject("service.common.qcCenterOrderSve");
this.opPushQueueUrl = settings.opPushQueueUrl();
}
......@@ -448,7 +449,8 @@ class UtilsNeedService extends AppServiceBase {
var self = this;
var reqUrl = this.centerOrderUrl + "action/need/springBoard";
var result = await this.restPostUrl(pobj, reqUrl);
await self.aliclient.reqbyget({ action: "WriteCommunicationLog", reqbody: { BizId: pobj.actionBody.intentionBizId, Note: pobj.actionBody.note }, apiVersion: "2019-05-08" });
var res = await self.aliclient.reqbyget({ action: "WriteCommunicationLog", reqbody: { BizId: pobj.actionBody.intentionBizId, Note: pobj.actionBody.note }, apiVersion: "2019-05-08" });
console.log("res",res)
//推送交付系统
var reqParams = {
actionBody: {
......@@ -456,21 +458,19 @@ class UtilsNeedService extends AppServiceBase {
status: "followingUp"
},
opType: "updateChanceStatus",
appInfo: pobj.appInfo,
userInfo: pobj.userInfo
appInfo: pobj.appInfo
}
self.utilsPushSve.aliBusiness2Delivery(reqParams, "updateChanceStatus");
// var reqParams = {
// actionBody: {
// "bizId": pobj.actionBody.intentionBizId,
// "follow_date": (new Date()).toISOString(),
// "follow_content": pobj.actionBody.note
// },
// opType: "updateChanceStatus",
// appInfo: pobj.appInfo,
// userInfo: pobj.userInfo
// }
// self.utilsPushSve.aliBusiness2Fq(pobj, "pushCloseICPNeed");
var fqobj = {
actionBody: {
"bizId": pobj.actionBody.intentionBizId,
"follow_date": (new Date()).toISOString(),
"follow_content": pobj.actionBody.note
},
opType: "aliFollowup",
appInfo: pobj.appInfo
}
self.utilsPushSve.aliBusiness2Fq(fqobj, "aliFollowup");
return system.getResultSuccess();
}
......@@ -612,6 +612,113 @@ class UtilsNeedService extends AppServiceBase {
}
}
}
// 2020 0914 lin 新增 刷单一条龙服务
async needBatchUpload(pobj,actionBody) {
var BizIds="";
var demands = [];
// 声明两个数组 用来走后四步用
var npobj = [];
var spobj = [];
// 遍历生成阿里需求 并把bizId 填充进数组
for(var i = 0;i < actionBody.demands.length;i++) {
// 第一步
// 地区转换
var area = this.areaChange(actionBody.demands[i].area)
// SubmitIcpIntention需要的类型转换ICP许可证 = 5/EDI许可证 = 7
var bizType = this.bizTypeChange(actionBody.demands[i].type)
// 声明调用4.1需要的参数
var obj = {
Mobile: actionBody.demands[i].contactMobile,// 手机号
UserName:actionBody.demands[i].contactName,// 用户名
Description:actionBody.demands[i].description,
Area:area,
BizType:bizType,
Channel:"gsb",
Token:"gsb",
}
// 4.1 提交阿里需求
var aliResult = await this.aliclient.reqbyget({ action: "SubmitIcpIntention", reqbody: obj, apiVersion: "2019-05-08" });
console.log("needBatchUpload-aliResult",aliResult)
// 整合前端需要的数据1
BizIds += aliResult.data.BizId + ",";
npobj.push({
"intentionBizId": aliResult.data.BizId,
"type": this.bizTypeChange(actionBody.demands[i].type),
"description":actionBody.demands[i].description,
"mobile":actionBody.demands[i].contactMobile
})
spobj.push({
"needNo": aliResult.data.BizId,//渠道需求号
"solutionContent":{
// submitIcpProgramme需要的类型转换 ICP许可证 = icpsq/EDI许可证 = edisq
"bizType":actionBody.demands[i].type,//产品类型 icpsq edisq
"solution":{
// "IcpType":1,//方案类型 不传默认1 1:icp 2: edi 参数无效
"CompanyName":actionBody.demands[i].companyName,
"CompanyAddress":actionBody.demands[i].companyAddress,
"Area":actionBody.demands[i].area,
"Note":actionBody.demands[i].description
}
}
})
if(aliResult.status != 0) {
// 统计失败次数
}
}
// 判断数据是否符合 执行后四步 的条件
if(npobj.length != actionBody.demands.length || spobj.length != actionBody.demands.length) {
return system.getResultFail(-5018,"提交阿里需求失败");
}
// 睡3秒 意义:等待阿里异步分配成功。如果不等待则提交方案会失败 无法生成支付链接,需求状态错误
await this.sleep(3000)
// 遍历 执行后面步骤 创建企服需求单(提交方案需要)。提交方案。需求沟通提交
for(var i = 0;i < actionBody.demands.length;i++) {
// 第二步
// 创建企服通需求单
var objString1 = JSON.stringify(pobj);
var obj1 = JSON.parse(objString1);
obj1.actionBody = npobj[i];
var opResult = await this.submitNeed(obj1, obj1.actionBody);
console.log("needBatchUpload-opResult",opResult)
// 第三步
// 提交Icp注册方案
// 程序执行比异步分配需求快,所以写成两个循环
var objString2 = JSON.stringify(pobj);
var obj2 = JSON.parse(objString2);
obj2.actionType = "submitIcpProgramme";
obj2.actionBody = spobj[i];
var subRes = await this.qcCenterOrderSve.submitIcpProgramme(obj2);
console.log("----------------------------------start");
console.log("needBatchUpload-res",subRes)
console.log("----------------------------------end");
// 第四步
// 需求沟通记录接口
var writeRes = await this.writeCommunicationLog({actionBody:{intentionBizId:npobj[i].intentionBizId,note:"测试反馈"}});
console.log("needBatchUpload-writeRes",writeRes)
// 整合前端需要的数据2
demands.push({
uniqueCode:actionBody.demands[i].uniqueCode,
demandCode: opResult.data.needNo
})
}
// 第五步 用户需求确认
// 首先切割掉BizId最后一位 是,
BizIds = BizIds.substr(0, BizIds.length - 1);
var aliConfirmResult = await this.aliclient.reqbyget({ action: "ConfirmIcpIntention", reqbody: {BizIds:BizIds}, apiVersion: "2019-05-08" });
console.log("needBatchUpload-aliConfirmResult",aliConfirmResult)
// 获取链接失败
if(aliConfirmResult.status != 0) {
return system.getResultFail(-5018,"confirmIcpIntention fail");
}
var res = {
paymentLink:aliConfirmResult.data.ConfirmUrl,
batchNumber:actionBody.batchNumber,
demands:demands
}
// 2020 0916 lin 新增返回格式 成功status为1 因为queue判断成功请求的条件为status1
return system.getResultRedisQueueSuccess(res);
}
async testsymq(pobj) {
var a = null;
try {
......@@ -623,6 +730,101 @@ class UtilsNeedService extends AppServiceBase {
}
areaChange(area) {
switch (area) {
case "北京":
return "1";
case "上海":
return "2"
case "福建":
return "3"
case "广西":
return "4"
case "广东":
return "5"
case "安徽":
return "6"
case "河南":
return "7"
case "湖北":
return "8"
case "浙江":
return "9"
case "江苏":
return "10"
case "山东":
return "11"
case "陕西":
return "12"
case "宁夏":
return "13"
case "甘肃":
return "14"
case "新疆":
return "15"
case "青海":
return "16"
case "天津":
return "17"
case "重庆":
return "18"
case "河北":
return "19"
case "山西":
return "20"
case "辽宁":
return "21"
case "吉林":
return "22"
case "黑龙江":
return "23"
case "江西":
return "24"
case "湖南":
return "25"
case "四川":
return "26"
case "贵州":
return "27"
case "云南":
return "28"
case "内蒙古":
return "29"
case "西藏":
return "30"
case "含外资":
return "31"
case "全外资":
return "32"
case "香港":
return "33"
case "海南":
return "34"
default:
return "35"
}
}
bizTypeChange(bizType) {
switch(bizType) {
case "ICP许可证":
return "5"
case "EDI许可证":
return "7"
}
}
needBizTypeChange(type) {
switch(type) {
case "ICP许可证":
return "icpsq"
case "EDI许可证":
return "edisq"
}
}
sleep(t) {
return new Promise(res => setTimeout(res, t))
}
urlSplit(url) {
var arr = url.split("?")[1]; //根据?跟个url
var arr2 = arr[1].split("&"); //根据&重新分割参数
......@@ -632,6 +834,11 @@ class UtilsNeedService extends AppServiceBase {
}
return jsonarr;
}
// async test() {
// var aliConfirmResult = await this.aliclient.reqbyget({ action: "ConfirmIcpIntention", reqbody: {BizIds:"20200916170117000001,20200916170117000002,20200916170117000003,20200916170118000001,20200916170118000002,20200916170118000003,20200916170119000001,20200916170119000002,20200916170120000001,20200916170120000002,20200916170120000003,20200916170121000001,20200916170121000002,20200916170121000003,20200916170122000001,20200916170122000002,20200916170122000003,20200916170123000001,20200916170123000002"}, apiVersion: "2019-05-08" });
// console.log("needBatchUpload-aliConfirmResult",aliConfirmResult)
// }
// async test1() {
// var a = await this.aliclient.reqbyget({ action: "CloseIntention", reqbody: { BizId: "20200416125415000001", Note: "测试需求关闭" }, apiVersion: "2019-05-08" });
......@@ -653,4 +860,7 @@ module.exports = UtilsNeedService;
// var a = new UtilsNeedService();
// a.queryTradeIntentionUserList({ actionBody: { intentionBizId: "20200803095203000001", userFeedBack: true } });
// var a = new UtilsNeedService();
// a.test();
......@@ -697,7 +697,7 @@ class UtilsOrderService extends AppServiceBase {
}
async wxPayNotify(parmas, client_ip) { // 微信宝回调
async wxPayNotify(parmas, client_ip) { // 微信宝回调 ----暂时不用
try {
//日志记录
this.logCtl.info({
......@@ -797,6 +797,107 @@ class UtilsOrderService extends AppServiceBase {
}
}
async channelPayNotify(params, client_ip){//渠道订单支付通知
try{
this.logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道订单支付回调参数信息",
op: "service/impl/utilsSve/utilsOrderSve.js/channelPayNotify",
content: JSON.stringify(params),
clientIp: client_ip || ""
});
if(!params.appkey){
return system.getResult(null,'appKey can be not null')
}
if(!params.orderNo){
return system.getResult(null,'orderNo can be not null')
}
if(!params.payTotalSum){
return system.getResult(null,'payTotalSum can be not null')
}
if(!params.signature){
return system.getResult(null,'signature can be not null')
}
if(!params.payType){
return system.getResult(null,'payType can be not null')
}
if(!params.payOrderNo){
return system.getResult(null,'payOrderNo can be not null')
}
let url = this.centerAppUrl + 'payment/paymentApi/getAppInfoByAppKey';
let appInfoRt = await this.restPostUrl({appKey:params.appkey},url);
if(appInfoRt.status !=0){
appInfoRt.msg = appInfoRt.msg + ",100270";
return appInfoRt;
}
let singStr = params.appkey + params.orderNo + params.payTotalSum + appInfoRt.data.uapp_secret
let sign = md5(singStr).toUpperCase();
if(sign != params.signature){
return system.getResultFail(-1,'验证签名失败')
}
var appInfo = appInfoRt.data;
// 拿锁
var locker = await this.cacheManager["TlPayLocker"].enter(params.orderNo);
console.log("拿锁结果",locker)
if (!locker || locker != "1") {
this.logCtl.info({
appid: appInfoRt.data.uappId,
appkey: "",
op: "service/impl/utilsSve/utilsOrderSve.js/aliPayNotify",
content: "参数=" + JSON.stringify(params),
clientIp: params.client_ip || "",
optitle: "阿里回调操作频繁---太频繁了,太频繁了"
});
return system.getResultFail(-200, "阿里回调操作频繁---太频繁了,太频繁了");
}
params.appInfo = { uapp_id: appInfo.uapp_id };
params.pay_type = params.payType;
//修改并返回订单支付状态,创建收款单
// 这里修改了order_info的状态(status/paytime等)
var orderUrl = this.centerOrderUrl + "opaction/opPayOrder/receivePayCallBackNotifyByChannel";
var opOrderResult = await this.restPostUrl(params, orderUrl);
if (opOrderResult.status != 0) {
opOrderResult.data = null;
return opOrderResult;
}
opOrderResult.data.appInfo = {
uapp_id: appInfo.uapp_id,
uapp_key: appInfo.uapp_key,
app_code: appInfo.app_code,
app_name: appInfo.app_name
};
opOrderResult.data.userInfo = {
channel_userid: opOrderResult.data.order_info.channelUserId,
channel_username: opOrderResult.data.order_info.channelUserId,
channel_nickname: opOrderResult.data.order_info.channelUserId
};
opOrderResult.data.orderNo = params.orderNo;
opOrderResult.data.order_info.pay_flow_no = params.trade_no || "";// 2020 0704 lin 新增 推送fq必填字段
opOrderResult.data.order_info.pay_channel = params.payType == 'wx' ?'微信':'支付宝';//付款方式
opOrderResult.data.order_info.pay_time = params.payTime;//付款时间
opOrderResult.data.order_info.pay_payer_bank_no = params.buyer_email || "";//付款账号
opOrderResult.data.order_contact = opOrderResult.data.delivery_content.orderContact;
var pobj = {
appInfo: opOrderResult.data.appInfo,
actionBody: opOrderResult.data
}
// 推送
this.utilsPushSve.pushBusInfo(pobj, "pushOrder", 0);
opOrderResult.data = null;
return opOrderResult;
}catch (e) {
await this.cacheManager["TlPayLocker"].release(params.orderNo);
this.logCtl.error({
optitle: "回调处理订单---error异常",
op: "center-app/app/base/service/impl/utilsSve/utilstlbankSve.js/opBackNotify",
content: "参数=" + JSON.stringify(params) + ",error:" + e.stack,
clientIp: client_ip || ""
});
return system.getResultFail(-200, e.stack);
}
}
async tmAccept(pobj) {// 2020 0828 lin 新增 ali商标交易 创建订单接口
try {
......
......@@ -19,6 +19,9 @@ class UtilsProductService extends AppServiceBase {
if (!actionBody.pathCode) {
return system.getResult(null, "actionBody.pathCode can not be empty,100330");
}
if(actionBody.name){
pobj.actionBody.productName = actionBody.name;
}
pobj.actionBody.pathCode = "/" + actionBody.pathCode + "/";
var url = settings.centerAppUrl() + "action/opProduct/springBoard";
return await this.restPostUrl(pobj, url);
......@@ -77,6 +80,43 @@ class UtilsProductService extends AppServiceBase {
let url = settings.centerAppUrl() + "action/opProduct/springBoard";
return await this.restPostUrl(pobj, url);
}
/**
* 获取推荐产品
* @param pobj
* @param actionBody
* @returns {Promise<void>}
*/
async getProductRecommend(pobj,actionBody){
const type = actionBody.type;
if(!type){
return system.getResult(-1,'type can be not empty')
}
switch (type) {
case 1:
if(!actionBody.companyName){
return system.getResultFail(-1,'companyName can be not empty')
}
break;
case 2:
if(!actionBody.companyName){
return system.getResultFail(-1,'companyName can be not empty')
}
if(!actionBody.productCode){
return system.getResultFail(-1,'productCode can be not empty')
}
break;
case 3:
if(!actionBody.productCode){
return system.getResultFail(-1,'productCode can be not empty')
}
break;
default:
return system.getResultFail(-1,'type 参数错误');
}
let url = settings.centerAppUrl() + "action/opProduct/springBoard";
return await this.restPostUrl(pobj,url);
}
}
module.exports = UtilsProductService;
......@@ -172,7 +172,15 @@ class System {
data: data || null,
};
}
// 2020 0916 lin 新增返回格式 成功status为1
static getResultRedisQueueSuccess(data, okmsg = "success") {
return {
status: 1,
msg: okmsg,
data: data || null,
};
}
/**
* 请求返回成功 自定义
* @param {*} data 操作成功返回的数据
......
......@@ -53,7 +53,7 @@ class aliyunClient {
reqAliclient.apiVersion = obj.apiVersion;
}
var res = await reqAliclient.request(action, reqbody, {
timeout: 3000, // default 3000 ms
timeout: 10000, // default 3000 ms 2020 0916 lin修改3000为10000,原因ConfirmIcpIntention BizIds 超过5条会超时
formatAction: true, // default true, format the action to Action
formatParams: true, // default true, format the parameter name to first letter upper case
method: 'GET', // set the http method, default is GET
......
......@@ -199,6 +199,31 @@ module.exports = function (app) {
}
});
app.use('/orderNotify/channelPayNotify', async function (req, res) {
try{
var client_ip = system.get_client_ip(req);
var result = await utilsOrderSve.channelPayNotify(req.body, client_ip);
logCtl.info({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道支付订单通知 api层",
op: "center-channel/orderNotify/channelPayNotify",
content: "支付回调处理结果:" + JSON.stringify(result),
clientIp: client_ip || ""
});
if (result.status != 0) {
return res.end("FAIL");
}
return res.end("success");
}catch (e) {
var client_ip = system.get_client_ip(req);
logCtl.error({
optitle: (new Date()).Format("yyyy-MM-dd hh:mm:ss") + "渠道订单支付通知处理异常",
op: "center-channel/orderNotify/channelPayNotify",
content: "回调参数:req=" + JSON.stringify(req) + "error:" + e.stack,
clientIp: client_ip || ""
});
}
});
app.all("/web/*", async function (req, res, next) {
var result = system.getResult(null, "req method must is post");
......@@ -248,7 +273,8 @@ module.exports = function (app) {
"getNeedListUser",
"manualEvaluation", "diagnosisInfo", "check", "enterpriseInfo", "diagnosisDetail",
"submitIcpIntention", "queryIntentionList", "confirmIcpIntention",
"tmAccept", "tmStatus"
"tmAccept", "tmStatus",
"needBatchUpload"
];
if (lst.indexOf(req.body.actionType) >= 0) {
var userpin = req.headers["userpin"] || "";
......
......@@ -6,14 +6,14 @@ var marked = require("marked");
module.exports = function (app) {
app.get('/doc', function (req, res) {
if (!req.query.key) {
res.send("文件不存在!!!");
return;
}
if (req.query.key != "doc12345789") {
res.send("文件不存在!!!!!!");
return;
}
// if (!req.query.key) {
// res.send("文件不存在!!!");
// return;
// }
// if (req.query.key != "doc12345789") {
// res.send("文件不存在!!!!!!");
// return;
// }
var path = process.cwd() + "/app/front/entry/public/apidoc/README.md";
fs.readFile(path, function (err, data) {
if (err) {
......@@ -43,16 +43,16 @@ module.exports = function (app) {
});
app.get('/doc/api/:forder/:fileName', function (req, res) {
if (req.url != "/doc/api/platform/fgbusinesschance.md") {
if (!req.query.key) {
res.send("文件不存在!!!");
return;
}
if (req.query.key != "doc12345789") {
res.send("文件不存在!!!!!!");
return;
}
}
// if (req.url != "/doc/api/platform/fgbusinesschance.md") {
// if (!req.query.key) {
// res.send("文件不存在!!!");
// return;
// }
// if (req.query.key != "doc12345789") {
// res.send("文件不存在!!!!!!");
// return;
// }
// }
var forder = req.params["forder"];
var fileName = req.params["fileName"] || "README.md";
var path = process.cwd() + "/app/front/entry/public/apidoc";
......
......@@ -380,7 +380,10 @@
"appkey":"202001170336",// Y appkey
"orderNo":"TM26202002271337mkgN",// Y 订单号
"payTotalSum":300.00,// Y 订单金额
"signature":"DC18F27EFC1A251AFC5F2FCF36ABE6FA"
"signature":"DC18F27EFC1A251AFC5F2FCF36ABE6FA",
"payType":"", //支付方式 wx alipay
"payTime":"",// 支付时间
"payOrderNo":""// 支付订单流水号
}
```
......
......@@ -3,6 +3,7 @@
1. [产品列表-根据产品大类获取](#getProductListByOneCode)
1. [产品列表-根据产品二类获取](#getProductListByTwoCode)
1. [产品详情](#getProductDetail)
1. [产品推荐](#getProductRecommend)
## **<a name="getProductListByOneCode"> 产品列表-根据产品大类编码获取</a>**
......@@ -15,7 +16,8 @@
``` javascript
{
"pathCode":"sbfu" //查询的路径:大类code
"pathCode":"sbfu", //查询的路径:大类code
"productName":"工商" // N 产品名称
}
```
......@@ -178,4 +180,173 @@
"requestId": "5913fc3ae97a402e93330c2d488f1f7e"
}
```
## **<a name="getProductRecommend"> 产品推荐</a>**
[返回到目录](#menu)
##### URL
[/action/product/springBoard]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 渠道执行的类型 actionType:getProductRecommend
``` javascript
{
"companyName":"科技部测试",// N 公司名称
"productCode":"gszc",// N 产品code
"type":2 //Y 1只查公司的推荐(company_name Y),2公司+产品(product_code Y company_name Y),3只查询产品(product_code Y)
}
```
#### 返回结果 0为成功,否则为失败
```javascript
{
"status": 0,
"msg": "success",
"data": [
{
"uapp_id": 26,//平台id--显示不用
"path_code": "/sbfu/sbzc/",//产品路径编码--显示不用
"path_name": "/商标服务/商标注册/",//产品路径名称--显示不用
"item_code": "zzsbzc",//产品code
"item_name": "商标注册【自助申请】",//产品名称
"channel_item_code": "zzsbzc",//渠道产品code
"channel_item_name": "商标注册【自助申请】",//渠道产品名称
"pic_url": "http://gsb-zc.oss-cn-beijing.aliyuncs.com/zc_qft_pi15755163570461.png",//产品的图片
"product_short_desc": "适合熟知商标注册流程的企业用户", //产品的介绍
"product_desc": "[\"自己检索商标,准备官方所需注册材料\",\"提交迅速,及时反馈\",\"全流程跟踪,掌握申请进度\"]", //产品的描述列表
"desc_url": null,//产品介绍图片地址
"icon_url": null,//产品的icon
"productType_id": 2,//产品类型id--显示用不到
"sort": 1,//排序
"pay_code": "zzsbzc-1", //支付价格code
"service_charge": 30,//服务费
"public_expense": 270,//官费
"price": 300,//价格
"price_type": "mj",//定价类型:mj:每件,mc:每次,mt:每天,my:每月,mn:每年,qj:区间
"price_type_name": "每件",//定价类型名称
"price_desc": "每件(10小项)",//定价描述
"min_qty": null,//区间最小值
"max_qty": null//区间最大值
},
{
"product_id": 85,
"uapp_id": 38,
"path_code": "/sbfu/sbzc/",
"path_name": "/商标服务/商标注册/",
"item_code": "zzsbzc",
"item_name": "商标自助注册",
"channel_item_code": "zzsbzc",
"channel_item_name": "商标自助注册",
"pic_url": "",
"product_short_desc": "适合熟知商标注册流程的企业用户",
"product_desc": "[\"自己检索商标,准备官方所需注册材料\",\"提交迅速,及时反馈\",\"全流程跟踪,掌握申请进度\"]",
"desc_url": null,
"icon_url": null,
"productType_id": 63,
"sort": 1,
"pay_code": "zzsbzc-1",
"service_charge": 30,
"public_expense": 270,
"price": 300,
"price_type": "mj",
"price_type_name": "件",
"price_desc": "每件(10小项)",
"additions_desc": null,
"min_qty": null,
"max_qty": null,
"pc_pic_url": "https://mall-image.gongsibao.com/images/202007/thumb_img/2737_thumb_P_1593555482849.jpg",
"pc_desc_url": ""
},
{
"product_id": 86,
"uapp_id": 38,
"path_code": "/sbfu/sbzc/",
"path_name": "/商标服务/商标注册/",
"item_code": "fzsbzc",
"item_name": "商标辅助注册",
"channel_item_code": "fzsbzc",
"channel_item_name": "商标辅助注册",
"pic_url": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_3644155747559516320191016635163223322.png",
"product_short_desc": null,
"product_desc": "[\"由专业代理人帮您检索分析,成功率高\",\"为您优化注册方案,全方位保护\",\"代理人全流程服务,24小时拿到官方申请号\"]",
"desc_url": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_8071566301043178201920193723178zc_11341557742471246201913181431246代理人.jpg",
"icon_url": null,
"productType_id": 63,
"sort": 3,
"pay_code": "fzsbzc-1",
"service_charge": 429,
"public_expense": 270,
"price": 699,
"price_type": "mj",
"price_type_name": "件",
"price_desc": "每件(10小项)",
"additions_desc": null,
"min_qty": null,
"max_qty": null,
"pc_pic_url": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_3644155747559516320191016635163223322.png",
"pc_desc_url": "[{\"descUrl\":\"https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_8071566301043178201920193723178zc_11341557742471246201913181431246%E4%BB%A3%E7%90%86%E4%BA%BA.jpg\",\"sort\":1}]"
},
{
"product_id": 87,
"uapp_id": 38,
"path_code": "/sbfu/sbzc/",
"path_name": "/商标服务/商标注册/",
"item_code": "dbsbzc",
"item_name": "商标担保注册",
"channel_item_code": "dbsbzc",
"channel_item_name": "商标担保注册",
"pic_url": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_108415573041498072019816299807WX20190508-162857@2x.png",
"product_short_desc": null,
"product_desc": "[\"专业代理人精准评估,风险共担\",\"注册不成功,全额退款\",\"24小时拿到官方申请号\"]",
"desc_url": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_2594155775291371220191321833712%E9%8E%B7%E5%91%AC%E7%B9%9A%E9%8D%9F%E5%97%98%E7%88%A3%E5%A8%89%E3%84%A5%E5%94%BD.jpg",
"icon_url": null,
"productType_id": 63,
"sort": 5,
"pay_code": "dbsbzc-1",
"service_charge": 1029,
"public_expense": 270,
"price": 1299,
"price_type": "mj",
"price_type_name": "件",
"price_desc": "每件(10小项)",
"additions_desc": null,
"min_qty": null,
"max_qty": null,
"pc_pic_url": "https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_108415573041498072019816299807WX20190508-162857@2x.png",
"pc_desc_url": "[{\"descUrl\":\"https://gsb-zc.oss-cn-beijing.aliyuncs.com//zc_2594155775291371220191321833712%E9%8E%B7%E5%91%AC%E7%B9%9A%E9%8D%9F%E5%97%98%E7%88%A3%E5%A8%89%E3%84%A5%E5%94%BD.jpg\",\"sort\":1}]"
},
{
"product_id": 116,
"uapp_id": 38,
"path_code": "/gsfu/zcxg/",
"path_name": "/工商服务/注册相关/",
"item_code": "gsdb",
"item_name": "登报",
"channel_item_code": "gsdb",
"channel_item_name": "登报",
"pic_url": "",
"product_short_desc": "公司宝 登报申明 公司注销声明/公司减资声明/原件丢失声明等",
"product_desc": "",
"desc_url": null,
"icon_url": null,
"productType_id": 60,
"sort": 0,
"pay_code": "bjgsdb-1",
"service_charge": 0,
"public_expense": 0,
"price": 200,
"price_type": "mj",
"price_type_name": "件",
"price_desc": "北京",
"additions_desc": null,
"min_qty": null,
"max_qty": null,
"pc_pic_url": "https://mall-image.gongsibao.com/images/202001/thumb_img/0_thumb_P_1579138397162.jpg",
"pc_desc_url": "[{\"descUrl\":\"https://mall-image.gongsibao.com/uploads/image/2019/08/19/783aebc5718a573eff1e267b88fc1f8a.jpg\",\"sort\":1}]"
}
],
"requestId": "c39ee8a924074904b1694dd3bf2d6c4b"
}
```
\ No newline at end of file
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