Commit cab499a8 by 宋毅

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

parents fc8f48e3 e75289b5
......@@ -46,6 +46,7 @@ class PatentQueryAPI extends WEBBase {
case "CommomSearchbyInventor"://根据发明人查询聚合
case "CommomSearchbyFilingno"://根据申请号查询聚合
case "CommomSearchbyPubno"://根据公开号查询聚合
case "AffairsearchbyFilingno"://根据申请号查询并根据法律状态日期排序
opResult = await this.patentSve.opReqResult(pobj, req);
break;
default:
......
......@@ -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;
......
......@@ -8,6 +8,7 @@ class NameAPI extends WEBBase{
this.utilsOrderSve = system.getObject("service.utilsSve.utilsOrderSve");
this.centerOrderUrl = settings.centerOrderUrl();
this.centerCacheUrl = settings.centerCacheUrl();
this.aliGetNamesjavaUrl = settings.aliGetNamesjavaUrl();
}
/**
* 接口跳转-POST请求
......@@ -36,6 +37,9 @@ class NameAPI extends WEBBase{
case "getNameDetail"://详情
opResult = await this.getNameDetail(pobj);
break;
case "getNames"://详情
opResult = await this.getNames(pobj,pobj.actionBody);
break;
default:
opResult = system.getResult(null, "action_type参数错误");
break;
......@@ -131,6 +135,18 @@ class NameAPI extends WEBBase{
}
return system.getResult(null,'try again');
}
async getNames(pobj,actionBody){
let rtn = await this.restClient.execPost(actionBody,this.aliGetNamesjavaUrl);
if (!rtn.stdout) {
return system.getResultFail();
}
var result = JSON.parse(rtn.stdout);
if(result) {
return system.getResultSuccess(result);
}
return system.getResultFail(result);
}
}
const cacheJson = {
......
......@@ -85,7 +85,7 @@ class Need extends APIBase {
case "confirmIcpIntention":// 2020 0827 lin 新增 4.3 用户需求确认
opResult = await this.utilsNeedSve.confirmIcpIntention(pobj, pobj.actionBody);
break;
case "needBatchUpload":// 2020 0827 lin 新增 4.3 用户需求确认
case "needBatchUpload":// 2020 0914 lin 新增 刷单一条龙服务
opResult = await this.utilsNeedSve.needBatchUpload(pobj, pobj.actionBody);
break;
case "testsymq":
......
......@@ -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";
......
......@@ -753,7 +753,7 @@ class UtilsOrderService extends AppServiceBase {
}
async wxPayNotify(parmas, client_ip) { // 微信宝回调
async wxPayNotify(parmas, client_ip) { // 微信宝回调 ----暂时不用
try {
//日志记录
this.logCtl.info({
......@@ -853,6 +853,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;
......@@ -8,9 +8,28 @@ class UtilsTmOrderCallService extends AppServiceBase {
constructor() {
super();
this.aliclient = system.getObject("util.aliyunClient");
this.centerOrderUrl = settings.centerOrderUrl();
this.aliUappId = settings.aliUappId();
}
async queryTradeProduceList(pobj, actionBody) {//2020 0907 lin 新增 ali查询 用户确认资料支付尾款,并更新订单状态
// 1查询渠道/商品为icp/edi的订单已经支付部分款的订单。
// 这里写死 itemCode 和 订单状态
pobj.actionBody.itemCode = "tmjy"
pobj.actionBody.orderStatus = 64
pobj.actionType = "queryVOrderByOrderStatusAndItemCode";
pobj.appInfo = {
uapp_id: this.aliUappId
}
// 随便填的。因为center-order会校验if (!pobj.userInfo) {
pobj.userInfo = {
uapp_id: this.aliUappId
}
var url = this.centerOrderUrl + "action/order/springBoard";
var res = await this.restPostUrl(pobj, url);
console.log(res);
// 2查询渠道/商品为icp/edi的订单已经支付尾款的订单。
// 3
var obj = {
BuyerStatus: 11,
PageNum: 1,
......
......@@ -172,6 +172,14 @@ class System {
data: data || null,
};
}
// 2020 0916 lin 新增返回格式 成功status为1
static getResultRedisQueueSuccess(data, okmsg = "success") {
return {
status: 1,
msg: okmsg,
data: data || null,
};
}
/**
* 请求返回成功 自定义
......
......@@ -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"] || "";
......
......@@ -51,6 +51,14 @@ var settings = {
return "http://aliossjava-service/uploadfile";
}
},
aliGetNamesjavaUrl: function () {
if (this.env == "dev") {
return "192.168.210.240:80/getNames";
} else {
return "http://aliossjava-service/getNames";
}
},
tmtransactionUrl: function () {
if (this.env == "dev") {
return "http://192.168.2.109:8080/uploadfile";
......@@ -220,6 +228,13 @@ var settings = {
return "https://m.ucommune.com/"// 6.29lin修改为测试环境。原因优客 目前还没有正式环境
}
},
aliUappId: function () {
if (this.env == "dev") {
return 18// uapp_id
} else {
return 18// uapp_id
}
},
apiconfig: {
opLogUrl: function () {
return settings.reqEsAddr() + "center_channel_log/_doc?pretty";
......
......@@ -14,6 +14,7 @@
1. [根据申请号查询聚合](#CommomSearchbyFilingno)
1. [根据公开号查询聚合](#CommomSearchbyPubno)
1. [根据发明人查询聚合](#CommomSearchbyInventor)
1. [根据申请号查询并根据法律状态日期排序](#AffairsearchbyFilingno)
## **<a name="CommomSearchbyApplicant"> 根据申请人查询聚合接口</a>**
......@@ -1073,3 +1074,73 @@
}
```
## **<a name="AffairsearchbyFilingno"> 根据申请号查询并根据法律状态日期排序</a>**
[返回到目录](#menu)
##### URL
[/action/patentQuery/AffairsearchbyFilingno]
#### 参数格式 `JSON`
#### HTTP请求方式 `POST`
#### 渠道执行的类型 actionType:AffairsearchbyFilingno
```javascript
{
"filingno":"201410451887"//申请号
}
```
#### 返回结果
```javascript
{
"status": 0,
"msg": "操作成功",
"data": {
"total": 3,
"max_score": null,
"hits": [{
"_index": "bigdata_patent_affair",
"_type": "_doc",
"_id": "24696710",
"_score": null,
"_source": {
"filing_no": "201410451887",
"aff_info": "公开",
"aff_date": "2015-01-21",
"aff_timestamp": 1421816400,
"aff_status": "公开",
"aff_code": "024000"
},
"sort": [1421798400000]
}, {
"_index": "bigdata_patent_affair",
"_type": "_doc",
"_id": "5523865",
"_score": null,
"_source": {
"filing_no": "201410451887",
"aff_info": "实质审查的生效",
"aff_date": "2015-02-18",
"aff_timestamp": 1424235600,
"aff_status": "实质审查的生效",
"aff_code": "001000"
},
"sort": [1424217600000]
}, {
"_index": "bigdata_patent_affair",
"_type": "_doc",
"_id": "41352716",
"_score": null,
"_source": {
"filing_no": "201410451887",
"aff_info": "授权",
"aff_date": "2017-10-10",
"aff_timestamp": 1507608000,
"aff_status": "授权",
"aff_code": "026000"
},
"sort": [1507593600000]
}]
},
"bizmsg": "empty"
}
```
\ No newline at end of file
......@@ -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 产品名称
}
```
......@@ -179,3 +181,172 @@
}
```
## **<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