Commit 2209e01b by 王悦

done

parent 0f9b8586
......@@ -4,7 +4,7 @@ MAINTAINER jy "jiangyong@gongsibao.com"
ADD zhiquanquan /apps/zhiquanquan/
WORKDIR /apps/zhiquanquan/
RUN cnpm install -S
CMD ["node","/apps/gsb-marketplat/main.js"]
CMD ["node","/apps/zhiquanquan/main.js"]
......
let system = require("../../../system")
const http = require("http")
const querystring = require('querystring');
let settings = require("../../../../config/settings");
const CtlBase = require("../../ctl.base");
const logCtl = system.getObject("web.common.oplogCtl");
const tmtransactionPath = "/api/action/tmQuery/springBoard";
const tmurl = settings.channelApiUrl() + tmtransactionPath;
//标源检索
class searchCtl extends CtlBase {
constructor() {
super("trademark", "trademarkSve");
this.execClient = system.getObject("util.execClient");
}
/**
* @api {post} /web/trademark/searchCtl/findAndCountAll 检索列表
* @apiGroup 标源检索
* @apiParamExample {json} 请求参数
* {"pageInfo": {"pageNo":1,"pageSize":10}}
* @apiSuccessExample {json} 成功示例:
* {"success": ""}
* @apiErrorExample {json} 失败示例:
* {"error": ""}
*/
async findAndCountAll(p, q, req) {
let query = {
"actionType": "",
"actionBody": {
pageSize: p.pageInfo.pageSize,
currentPage: p.pageInfo.pageNo,
"tmName": "",//商标名称
"regMan": "",
"regNum": "",
"sqlbtabkey": "",//商标类别
"flzttabkey": "",//法律状态
"sqnftabkey": "",//申请年份
"ncl": [],//尼斯大类
"xcl": [],//尼斯群组
"nclNum": [],//尼斯大类
}
};
if (Object.keys(p.search).length>0) {
if (p.search.sbzch) {//注册号查询
query.actionType = "findTrademarkzchAccurate";
query.actionBody.regNum = p.search.sbzch
} else if (p.search.zcren) {//申请人查询
query.actionType = "findTrademarkzcr";
query.actionBody.regMan = p.search.zcren
} else if (p.search.sbmc) {//商标名称查询
query.actionType = "findTrademarkNameAccurate";
query.actionBody.tmName = p.search.sbmc
}
}else return;
let tokenInfo = await this.service.getToken();
let rtn = await this.execClient.execPostTK(query, tmurl,tokenInfo.data.token);
let data = rtn.data;
let published = await this.service.findAll({company_id:p.company_id});
data.rows.forEach(item=>{
for (let t of published){
if (t.tm_code == item.sbzch)
item._disabled = true;
}
});
return system.getResultList(data.count,data.rows)
}
}
module.exports = searchCtl;
let system = require("../../../system")
const http = require("http")
const querystring = require('querystring');
let settings = require("../../../../config/settings");
const CtlBase = require("../../ctl.base");
const logCtl = system.getObject("web.common.oplogCtl");
const tmtransactionPath = "/tmtransaction/action/trademarktransaction/springBoard";
const tmurl = settings.tmtransactionurl() + tmtransactionPath;
let pushClient = require("../../../utils/totxClient.js").trademark;
//标源管理
class TrademarkCtl extends CtlBase {
constructor() {
super("trademark", CtlBase.getServiceName(TrademarkCtl));
this.execClient = system.getObject("util.execClient");
}
/**
* @api {post} /web/trademark/trademarkctl/findAndCountAll 获取列表
* @apiGroup 标源管理
* @apiParamExample {json} 请求参数
* {"pageInfo": {"pageNo":1,"pageSize":10}}
* @apiSuccessExample {json} 成功示例:
* {"status":0,"msg":""data":{"results":{"rows":[]}}}
* @apiErrorExample {json} 失败示例:
* {"error": ""}
*/
async findAndCountAll(p, q, req) {
try {
let query = {
"actionType": "tmInfo",
"actionBody": {
channel_code: p.company_id,
pageInfo: p.pageInfo
}
};
if (p.search) {
if (p.search.name)
query.actionBody.name = p.search.name;
else if (p.search.code)
query.actionBody.code = p.search.code;
else if (p.search.channel_name)
query.actionBody.name = p.search.channel_name;
else if (p.search.tm_start_day)
query.actionBody.tm_start_day = p.search.tm_start_day;
else if (p.search.tm_end_day)
query.actionBody.tm_end_day = p.search.tm_end_day;
}
let rtn = await this.execClient.execPost(query, tmurl);
let data = JSON.parse(rtn.stdout);
return system.getResultList(data.totalCount, data.data)
} catch (e) {
console.error(e)
}
}
/**
* @api {post} /web/trademark/trademarkctl/findOne 获取详情
* @apiGroup 标源管理
* @apiParamExample {json} 请求参数
* {"id": "1"}
* @apiSuccessExample {json} 成功示例:
* {"success": ""}
* @apiErrorExample {json} 失败示例:
* {"error": ""}
*/
async findOne(p, q, req) {
let body = {
"actionType": "tmDetail",
"actionBody": {
tmId: 0
}
};
body.actionBody.tmId = p.id;
let rtn = await this.execClient.execPost(body, tmurl);
let data = JSON.parse(rtn.stdout);
return system.getResultSuccess(data.data)
}
/**
* @api {post} /web/trademark/trademarkctl/publish 批量发布
* @apiGroup 标源管理
* @apiParamExample {json} 请求参数
* [{"name":"商标名称","code":"商标申请号","business_quoted_price":"底价","contacts":"联系人","mobile":"手机号"}]
* @apiSuccessExample {json} 成功示例:
* {"status":0,"msg":"","data":[],"bizmsg":"empty","requestId":""}
* @apiErrorExample {json} 失败示例:
* {"error": ""}
*/
async publish(p, q, req) {
let body = {
"tm": p
};
let rtn = await pushClient(body);
if (rtn.status == 1) {
let tradedb = [];
p.map(db => tradedb.push({
opath: p.opath,
user_id: p.userid,
company_id: p.company_id,
// trademark_id: db.id,
tm_code: db.code
}));
rtn = await this.service.bulkCreate(tradedb);
}
return system.getResult(rtn)
}
/**
* @api {post} /web/trademark/trademarkctl/update 修改
* @apiDescription (下架/审核/状态修改)
* @apiGroup 标源管理
* @apiParamExample {json} 请求参数
* {"id": "1"}
* @apiSuccessExample {json} 成功示例:
* {"success": ""}
* @apiErrorExample {json} 失败示例:
* {"error": ""}
*/
async update(p, q, req) {
let body = {
"actionType": "tmInfoUpdate",
"actionBody": p
};
let rtn = await this.execClient.execPost(body, tmurl);
let data = JSON.parse(rtn.stdout);
return system.getResult(data.data)
}
/**
* @api {post} /web/trademark/trademarkCtl/delete 删除
* @apiGroup 标源管理
* @apiParamExample {json} 请求参数
* {"id": "1"}
* @apiSuccessExample {json} 成功示例:
* {"success": ""}
* @apiErrorExample {json} 失败示例:
* {"error": ""}
*/
async delete(p, q, req) {
let body = {
"actionType": "tmInfoDelete",
"actionBody": {
id: 0
}
};
body.actionBody.id = p.id;
let rtn = await this.execClient.execPost(body, tmurl);
let data = JSON.parse(rtn.stdout);
if (data.status == 1) {
let en = await this.service.findOne({trademark_id: p.id});
if (en != null) {
en.destroy();
}
}
return system.getResult(data.data)
}
//接受队列返回消息
async notify(p, q, req) {
let update = [];
let tradedb = p.actionBody.resultInfo.data;
tradedb.map(db => update.push({
trademark_id: db.id,
tm_code: db.code
}));
let res = await this.service.dao.model.bulkCreate(tradedb, {updateOnDuplicate: ["tm_code"]});
return system.getResult(res)
}
}
module.exports = TrademarkCtl;
const system=require("../../../system");
const Dao=require("../../dao.base");
class TrademarkDao extends Dao{
constructor(){
super(Dao.getModelName(TrademarkDao));
}
}
module.exports=TrademarkDao;
const system = require("../../../system");
const settings = require("../../../../config/settings");
const appconfig = system.getSysConfig();
module.exports = (db, DataTypes) => {
return db.define("trademark", {
user_id: DataTypes.INTEGER, //平台用户id
company_id: DataTypes.INTEGER, //平台公司id
trademark_id: DataTypes.INTEGER, //标源id
tm_code: DataTypes.STRING, //商标申请号
opath: DataTypes.STRING, //用户路径
}, {
paranoid: true,//假的删除
underscored: true,
version: true,
freezeTableName: true,
//freezeTableName: true,
// define the table's name
tableName: 'user_trademark',
validate: {
},
indexes: [
]
});
};
const system = require("../../../system");
const ServiceBase = require("../../sve.base");
var settings = require("../../../../config/settings");
var RPCClient = require('@alicloud/pop-core').RPCClient;
var OSS = require('ali-oss');
const crypto = require('crypto');
var moment = require("moment");
class TrademarkService extends ServiceBase {
constructor() {
super("trademark", ServiceBase.getDaoName(TrademarkService));
}
}
module.exports = TrademarkService;
......@@ -12,8 +12,36 @@ class ServiceBase {
this.dao = system.getObject("db." + gname + "." + daoName);
this.restS = system.getObject("util.restClient");
this.md5 = require("MD5");
}
getEncryptStr(str) {
this.execClient = system.getObject("util.execClient");
this.channelApiUrl = settings.channelApiUrl();
this.appInfo = {
aliyuntmtransfer: { appkey: "202003231118", secret: "7cbb846246874167b5c7e01cd0016c99" }
};
}
async getToken() {
var self = this;
var reqTokenUrl = settings.channelApiUrl() + "/api/opreceive/accessAuth/getAppTokenByAppKey";
var reqParam = self.appInfo["aliyuntmtransfer"];
if (!reqParam.appkey || !reqParam.secret) {
return system.getResult(null, "reqType类型有误,请求失败");
}
var param = {
"actionType": "getAppTokenByAppKey",
"actionBody": {
"appkey": reqParam.appkey,
"secret": reqParam.secret
}
};
var rtn = await this.execClient.execPost(param, reqTokenUrl);
if (!rtn.stdout) {
return system.getResult(null, "获取token失败");
}
var tokenResult = JSON.parse(rtn.stdout);
return tokenResult;
}
getEncryptStr(str) {
if (!str) {
throw new Error("字符串不能为空");
}
......@@ -38,6 +66,10 @@ class ServiceBase {
async refQuery(pobj) {
return this.dao.refQuery(pobj);
}
async bulkCreate(ids) {
var en = await this.dao.bulkCreate(ids);
return en;
}
async bulkDelete(ids) {
var en = await this.dao.bulkDelete(ids);
return en;
......
......@@ -151,6 +151,14 @@ class System {
data: data,
};
}
static getResultList(count,rows, okmsg = "success") {
return {
status: 0,
msg: okmsg,
data: {results: { count, rows }},
};
}
/**
* 请求返回失败
* @param {*} status 操作失败状态,默认为-1
......@@ -276,10 +284,10 @@ class System {
var param = {
actionType: "produceLogsData",// Y 功能名称
actionBody: {
opTitle: opTitle || "",// N 操作的业务标题
opTitle: opTitle || "",// N 操作的业务标题
identifyCode: identifyCode || "brg-center-manage",// Y 操作的业务标识
indexName: settings.logindex,// Y es索引值,同一个项目用一个值
messageBody: params, //日志的描述信息
messageBody: params, //日志的描述信息
resultInfo: isLogData ? resultInfo : { status: resultInfo.status },//返回信息
errorInfo: errorInfo,//错误信息
requestId: resultInfo.requestId || ""
......
var childproc = require('child_process');
const util = require('util');
const exec = util.promisify(require('child_process').exec);
const uuidv4 = require('uuid/v4');
class ExecClient {
constructor() {
this.cmdPostPattern = "curl -k -H 'Content-type: application/json' -d '{data}' {url}";
this.cmdGetPattern = "curl -G -X GET '{url}'";
this.cmdPostPatternEs = "curl --user admines:adminGSBes. -k -H 'Content-type: application/json' -d '{data}' {url}";
this.cmdPostTK = "curl -k -H 'Content-type: application/json' -H 'token:{tk}' -H 'request-id:{requestId}' -d '{data}' {url}";
}
getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
return u;
}
async exec(cmd) {
//await后面表达式返回的promise对象,是then的语法糖,await返回then函数的返回值
//异常需要try/catch自己捕获或外部catch捕获
......@@ -76,6 +80,29 @@ class ExecClient {
return {stdout, stderr};
}
async execPostTK(subData, url, token) {
let cmd = this.FetchPostTK(subData, url, token);
console.log(cmd);
var result = await this.exec(cmd, {
maxBuffer: 1024 * 1024 * 15
});
var rtn = result.stdout;
if (rtn) {
return JSON.parse(rtn);
} else {
return {
data: cmd,
status: -1
};
}
}
FetchPostTK(subData, url, token) {
var data = JSON.stringify(subData);
var requestId = this.getUUID();
var cmd = this.cmdPostTK.replace(/\{data\}/g,
data).replace(/\{url\}/g, url).replace(/\{tk\}/g, token).replace(/\{requestId\}/g, requestId);
return cmd;
}
FetchPostCmdEs(subData, url) {
var data = JSON.stringify(subData);
var cmd = this.cmdPostPatternEs.replace(/\{data\}/g,
......
......@@ -2,6 +2,7 @@ const axios = require("axios");
const settings = require("../../config/settings");
const system = require("../system");
const annualreportDao = system.getObject("db.delivery.annualreportDao");
const uuidv4 = require('uuid/v4');
const BUSINESSTYPE = {
ICP: "/qcfw/icp/",
......@@ -35,7 +36,11 @@ const publicApi = axios.create({
}
})
function getUUID() {
var uuid = uuidv4();
var u = uuid.replace(/\-/g, "");
return u;
}
/**
* 推送 方案
......@@ -185,7 +190,40 @@ const returnPremium = async (orderNum) => {
}
}
const trademark = async (body) => {
try {
let data = {
"actionType": "produceData",
"actionBody": {
"pushUrl": settings.tmtransactionurl() + "/tmtransaction/action/trademarktransaction/springBoard",
"actionType": "tmBatchUpload",
"identifyCode": "trademark",
"notifyUrl": settings.serviceurl() + "/web/trademark/trademarkCtl/notify",
"messageBody": body,
// "headData":{
// "XAPPKEY":"42d814c1-4daa-4643-88b2-f5dd3ec853f3"
// }
},
requestId:getUUID()
}
console.log("请求数据 ------- ");
console.log(data);
let result = await publicApi.post('/api/queueAction/producer/springBoard', data);
result = result.data;
console.log("返回数据 ------- ");
console.log(result);
if (result.status === 1) {
return result
} else {
throw new Error(result.message)
}
} catch (err) {
console.log("------ err -----");
console.log(err)
throw (err)
}
}
/**
* 发送请求
......@@ -223,5 +261,6 @@ module.exports = {
pushChangeOrder,
pushDeclareReport,
TXSTATUS,
returnPremium
returnPremium,
trademark
}
\ No newline at end of file
......@@ -4,7 +4,7 @@ var ENVINPUT = {
DB_PORT: process.env.DB_PORT,
DB_USER: process.env.DB_USER,
DB_PWD: process.env.DB_PWD,
DB_NAME: process.env.MARKETPLAT_DB_NAME,
DB_NAME: process.env.ZHIQUANQUAN_DB_NAME,
REDIS_HOST: process.env.REDIS_HOST,
REDIS_PORT: process.env.REDIS_PORT,
REDIS_PWD: process.env.REDIS_PWD,
......@@ -18,7 +18,7 @@ var settings = {
basepath: path.normalize(path.join(__dirname, '../..')),
port: process.env.NODE_PORT || 3003,
logindex: "center_manage",
appname: "gsb_marketplat",
appname: "zhiquanquan",
kongurl: function () { if (this.env == "dev") { var localsettings = require("./localsettings"); return localsettings.kongurl; } else { return ENVINPUT.KONG_ADMIAN; } },
txurl: function () {
if (this.env == "dev") { var localsettings = require("./localsettings"); return localsettings.txurl; }
......@@ -43,21 +43,21 @@ var settings = {
},
requrl: function () {
if (this.env == "dev") {
return "http://192.168.1.128:4018";
return "http://192.168.18.101:4018";
} else {
return "http://sytxpublic-msgq-service";
}
},
paasUrl:function(){
if(this.env=="dev"){
return "http://60.205.209.94:4001/";
return "http://59.110.125.77:4001/";
}else {
return "https://open.gongsibao.com/";
}
},
channelApiUrl: function () {
if (this.env == "dev") {
return "http://60.205.209.94:4003";
return "http://alitm.qifu-dev.gongsibao.com";
} else {
return "http://zc-channel-service";
}
......@@ -69,6 +69,20 @@ var settings = {
return "http://localhost:8080";
}
},
tmtransactionurl:function () {
if (this.env == "dev") {
return "http://gsbweb.qifu-dev.gongsibao.com";
} else {
return "http://gsbweb.qifu-dev.gongsibao.com";
}
},
serviceurl:function () {
if (this.env == "dev") {
return "http://192.168.200.181:3003";
} else {
return "http://gsbweb.qifu-dev.gongsibao.com";
}
},
pmappid: 1,
pmcompanyid: 1,
pmroleid: { "ta": 1, "pr": 2 },
......
......@@ -30,5 +30,6 @@ var server = http.createServer(app);
//var socketServer = new SocketServer(server);
server.listen(setttings.port, function(){
console.log('Express server listening on port ' + app.get('port'));
console.log('apidoc address ' +`http://localhost:${app.get('port')}/apidoc/index.html`);
});
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