Commit 8db60d12 by Sxy

feat: 推送数据到启服通

parent 6e08c279
...@@ -23,7 +23,7 @@ class DeliverCtl extends CtlBase { ...@@ -23,7 +23,7 @@ class DeliverCtl extends CtlBase {
if (val.delivery_status === system.ANNUALREPORT.TAKEEFFECT) { if (val.delivery_status === system.ANNUALREPORT.TAKEEFFECT) {
val.delivery_status = val['annualreports.status'] || system.ANNUALREPORT.WAITDECLARE; val.delivery_status = val['annualreports.status'] || system.ANNUALREPORT.WAITDECLARE;
} }
val.source_name = system.SOURCENAME[val.source_name] ? system.SOURCENAME[val.source_name] : val.source_name; val.source_name = system.SOURCENAME[val.source_name] || val.source_name;
result.push(val); result.push(val);
} }
rs.results.rows = result; rs.results.rows = result;
......
...@@ -28,9 +28,7 @@ class DeliverDao extends Dao { ...@@ -28,9 +28,7 @@ class DeliverDao extends Dao {
switch (qobj.bizpath) { switch (qobj.bizpath) {
case "/deliveryManagement/wait": case "/deliveryManagement/wait":
qc.where.delivery_status = qc.where.delivery_status || { qc.where.delivery_status = qc.where.delivery_status || {
$in: [system.SERVERSESTATUS.RECEIVED, system.SERVERSESTATUS.COLLECTING, $notIn: [system.SERVERSESTATUS.SUCCESS, system.SERVERSESTATUS.CLOSED]
system.SERVERSESTATUS.SUBMITING, system.SERVERSESTATUS.DISPOSEING, system.SERVERSESTATUS.POSTING
]
} }
break break
case "/deliveryManagement/all": case "/deliveryManagement/all":
......
...@@ -4,6 +4,8 @@ const settings = require("../../../../config/settings"); ...@@ -4,6 +4,8 @@ const settings = require("../../../../config/settings");
const moment = require("moment"); const moment = require("moment");
const System = require("../../../system"); const System = require("../../../system");
// const pushTx = require("../../../utils/totxClient") // const pushTx = require("../../../utils/totxClient")
const pushQft = require("../../../utils/toqifutongClient")
class DeliverService extends ServiceBase { class DeliverService extends ServiceBase {
constructor() { constructor() {
...@@ -50,7 +52,10 @@ class DeliverService extends ServiceBase { ...@@ -50,7 +52,10 @@ class DeliverService extends ServiceBase {
// 推送到商城 // 推送到商城
// await pushTx.submitMaterials(deliverData, JSON.parse(JSON.stringify(pobj.cache_info))) // await pushTx.submitMaterials(deliverData, JSON.parse(JSON.stringify(pobj.cache_info)))
// TODO: if ([system.SERVERSESTATUS.COLLECTING, system.SERVERSESTATUS.USERCONFIRMATIONREJECT].includes(deliverData.delivery_status)) {
await pushQft.submitMaterials(deliverData, JSON.parse(JSON.stringify(pobj.cache_info)))
}
return this.db.transaction(async (t) => { return this.db.transaction(async (t) => {
await this.cacheinfoDao.createOrUpdate(pobj, t); await this.cacheinfoDao.createOrUpdate(pobj, t);
await this.materialDao.createOrUpdate(pobj, t); await this.materialDao.createOrUpdate(pobj, t);
...@@ -137,19 +142,26 @@ class DeliverService extends ServiceBase { ...@@ -137,19 +142,26 @@ class DeliverService extends ServiceBase {
switch (deliverData.delivery_status) { switch (deliverData.delivery_status) {
case system.SERVERSESTATUS.USERCONFIRMATIONRESOLVE: case system.SERVERSESTATUS.USERCONFIRMATIONRESOLVE:
status = system.SERVERSESTATUS.ACCOUNTREGISTRATION; status = system.SERVERSESTATUS.ACCOUNTREGISTRATION;
await pushQft.changeStatus(deliverData, pushQft.ALISTATUS.ACCOUNTREGISTRATION);
break break
case system.SERVERSESTATUS.ACCOUNTREGISTRATION: case system.SERVERSESTATUS.ACCOUNTREGISTRATION:
status = system.SERVERSESTATUS.SUBMITING; status = system.SERVERSESTATUS.SUBMITING;
await pushQft.changeStatus(deliverData, pushQft.ALISTATUS.SUBMITING);
break break
case system.SERVERSESTATUS.DISPOSEING: case system.SERVERSESTATUS.DISPOSEING:
// 查询 资质信息 // 查询 资质信息
const ualificationData = await this.qualificationDao.findOne({ const qualificationData = await this.qualificationDao.findOne({
deliver_id: deliverData.id deliver_id: deliverData.id
}); });
if (!ualificationData) { if (!qualificationData) {
throw new Error("请上传办理的资质证照信息"); throw new Error("请上传办理的资质证照信息");
} }
status = system.SERVERSESTATUS.THROUGH; status = system.SERVERSESTATUS.THROUGH;
await pushQft.changeStatus(deliverData, pushQft.ALISTATUS.THROUGH, {
officialFileURL: qualificationData.file.url
});
break break
case system.SERVERSESTATUS.THROUGH: case system.SERVERSESTATUS.THROUGH:
status = system.SERVERSESTATUS.SUCCESS; status = system.SERVERSESTATUS.SUCCESS;
...@@ -158,6 +170,8 @@ class DeliverService extends ServiceBase { ...@@ -158,6 +170,8 @@ class DeliverService extends ServiceBase {
case system.SERVERSESTATUS.SUBMITING: case system.SERVERSESTATUS.SUBMITING:
status = system.SERVERSESTATUS.DISPOSEING; status = system.SERVERSESTATUS.DISPOSEING;
// txstatus = pushTx.TXSTATUS.DISPOSEING; // txstatus = pushTx.TXSTATUS.DISPOSEING;
await pushQft.changeStatus(deliverData, pushQft.ALISTATUS.DISPOSEING);
break break
case system.SERVERSESTATUS.POSTING: case system.SERVERSESTATUS.POSTING:
status = system.SERVERSESTATUS.SUCCESS; status = system.SERVERSESTATUS.SUCCESS;
...@@ -167,7 +181,6 @@ class DeliverService extends ServiceBase { ...@@ -167,7 +181,6 @@ class DeliverService extends ServiceBase {
// await pushTx.pushChangeOrder(txstatus, deliverData.delivery_code); // await pushTx.pushChangeOrder(txstatus, deliverData.delivery_code);
// TODO: 状态变更通知
await this.dao.updateByWhere({ await this.dao.updateByWhere({
delivery_status: status delivery_status: status
}, { }, {
...@@ -290,15 +303,18 @@ class DeliverService extends ServiceBase { ...@@ -290,15 +303,18 @@ class DeliverService extends ServiceBase {
if (!deliverData) { if (!deliverData) {
throw new Error("查不到交付单"); throw new Error("查不到交付单");
} }
if (![system.SERVERSESTATUS.RECEIVED, system.SERVERSESTATUS.COLLECTING].includes(deliverData.delivery_status)) { // if (![system.SERVERSESTATUS.RECEIVED, system.SERVERSESTATUS.COLLECTING].includes(deliverData.delivery_status)) {
throw new Error("该交付单状态下不可提交"); // throw new Error("该交付单状态下不可提交");
} // }
// 推送 关闭交付 // 推送 关闭交付
// await pushTx.pushChangeOrder(pushTx.TXSTATUS.CLOSED, deliverData.delivery_code, { // await pushTx.pushChangeOrder(pushTx.TXSTATUS.CLOSED, deliverData.delivery_code, {
// close_reason: pobj.close_reason // close_reason: pobj.close_reason
// }); // });
// 推送 退费 // 推送 退费
// await pushTx.returnPremium(deliverData.delivery_code); // await pushTx.returnPremium(deliverData.delivery_code);
await pushQft.closeDelivery(deliverData, {
note: pobj.close_reason
})
// 年报逻辑 // 年报逻辑
let annualReportData; let annualReportData;
if (deliverData.master_source_number) { if (deliverData.master_source_number) {
......
...@@ -355,7 +355,7 @@ System.SERVERSESTATUS = { ...@@ -355,7 +355,7 @@ System.SERVERSESTATUS = {
RECEIVED: "received",//已接单 RECEIVED: "received",//已接单
COLLECTING: "collecting",//收集材料中 COLLECTING: "collecting",//收集材料中
SUBMITING: "submiting",//递交材料中 SUBMITING: "submiting",//递交材料中
DISPOSEING: "disposeing",//工信部处理中 DISPOSEING: "disposeing",//工信部处理中 || 工信部已受理
POSTING: "posting",//证书已邮寄 POSTING: "posting",//证书已邮寄
SUCCESS: "success",//服务已完成 SUCCESS: "success",//服务已完成
CLOSED: "closed",//已关闭 CLOSED: "closed",//已关闭
...@@ -365,6 +365,9 @@ System.SERVERSESTATUS = { ...@@ -365,6 +365,9 @@ System.SERVERSESTATUS = {
USERCONFIRMATIONRESOLVE: "userConfirmationResolve",//用户已确认递交文件 USERCONFIRMATIONRESOLVE: "userConfirmationResolve",//用户已确认递交文件
ACCOUNTREGISTRATION: "accountRegistration",//账户注册 ACCOUNTREGISTRATION: "accountRegistration",//账户注册
THROUGH: "through",//工信部通过 THROUGH: "through",//工信部通过
THROUGHFAIL: "throughFail", // 工信部未通过
DISPOSEINGFAIL: "disposeingFail" // 工信部未受理
} }
// 年报服务单状态 // 年报服务单状态
System.ANNUALREPORT = { System.ANNUALREPORT = {
...@@ -379,7 +382,8 @@ System.ANNUALREPORT = { ...@@ -379,7 +382,8 @@ System.ANNUALREPORT = {
// 渠道名 // 渠道名
System.SOURCENAME = { System.SOURCENAME = {
tencentCloud: "腾讯云" tencentCloud: "腾讯云",
aliCloud: "阿里云"
} }
/* /*
......
const axios = require("axios");
const settings = require("../../config/settings");
const system = require("../system");
const centerChannelUrl = settings.centerChannelUrl();
const qifutongUrl = settings.qifutongUrl();
const { appKey, secret } = settings;
axios.defaults.timeout = 3 * 1000; // 4s
const ALISTATUS = {
ACCOUNTREGISTRATION: 507, // 完成账户注册
SUBMITING: 508, // 提交材料到工信部
DISPOSEING: 509, // 工信部已受理
DISPOSEINGFAIL: 510, // 工信不予受理
THROUGH: 511, // 工信部通过
THROUGHFAIL: 512 // 工信部未通过
}
const getAppTokenByAppKey = async () => {
const data = await postRequest(`${centerChannelUrl}/api/opreceive/accessAuth/getAppTokenByAppKey`,
{
"actionType": "getAppTokenByAppKey",
"actionBody": {
"appkey": appKey,
"secret": secret
}
});
return data.token
}
const getLoginByUserName = async (mobile) => {
const token = await getAppTokenByAppKey();
const data = await postRequest(`${centerChannelUrl}/api/opreceive/accessAuth/springBoard`,
{
"actionType": "getLoginByUserName",
"actionBody": {
"channelUserId": mobile,
"mobile": mobile,
"userName": mobile
}
}, {
token
});
return {
token,
userpin: data.userpin
}
}
/**
* 递交材料
* @param {*} deliverData
* @param {*} materials
*/
const submitMaterials = async (deliverData, materials) => {
let { delivery_info: { serviceName } } = deliverData;
let { proposerInfo: { principalInfo, businessLicense }, shareholderData, otherMaterialsInfo, implementationPlanInfo: { webApp } } = materials;
let Domain = webApp[0].domain;
let CorporateName = businessLicense.name;
let IncludeForeignInvestment = ["含外资", "全外资"].includes(serviceName);
let PartnerBusinessLicense = otherMaterialsInfo.find(item => {
return item.title === '营业执照'
});
PartnerBusinessLicense = PartnerBusinessLicense && PartnerBusinessLicense.file.url
let PartnerIdCardList = [
...(
principalInfo.filter(item => {
return item.file.url
}).map(item => {
return item.file.url
})
),
...(
shareholderData.filter(item => {
return item.file.url
}).map(item => {
return item.file.url
})
)
];
let PartnerDomainCertificate = otherMaterialsInfo.find(item => {
return item.title === '域名证书'
});
PartnerDomainCertificate = PartnerDomainCertificate && PartnerDomainCertificate.file.url;
let PartnerPlan = otherMaterialsInfo.find(item => {
return item.title === '收费方案'
});
PartnerPlan = PartnerPlan && PartnerPlan.file.url;
let PartnerForeignInvestment = otherMaterialsInfo.find(item => {
return item.title === '股东追溯承诺书'
});
PartnerForeignInvestment = PartnerForeignInvestment && PartnerForeignInvestment.file.url;
let PartnerLaw = otherMaterialsInfo.find(item => {
return item.title === '依法经营电信业务承诺书'
});
PartnerLaw = PartnerLaw && PartnerLaw.file.url;
// let PartnerPreviewOtherList = [];
await pushQiFuTong(deliverData.salesman_phone, {
actionType: "serviceProviderSubmitMaterial",
actionBody: {
orderNo: deliverData.delivery_code, //订单号 必填
material: { //材料信息
Domain, //备案域名必填
CorporateName, //法人名称必填
IncludeForeignInvestment, //必填
PartnerBusinessLicense, //必填
PartnerIdCardList, //相关人员证书必填
PartnerDomainCertificate, //必填
// "PartnerPreviewOtherList": [
// "合作方递交其他供预览的件,只能传递ZIP包"
// ],
PartnerPlan,
PartnerForeignInvestment,
PartnerLaw,
}
}
});
}
/**
* 改变 状态
* @param {*} status
* @param {*} sendMessage 办理的资质文件等
*/
const changeStatus = async (deliverData, status, sendMessage = {}) => {
await pushQiFuTong(deliverData.salesman_phone, {
actionType: "serviceProviderNotification",
actionBody: {
orderNo: deliverData.delivery_code, //订单号 必填
status, //交付状态 必填
// officialFileURL: "" //官文url 非必填
...sendMessage
}
});
}
/**
* 关闭交付单
* @param {*} deliverData
* @param {*} sendMessage 关闭理由
*/
const closeDelivery = async (deliverData, sendMessage = {}) => {
await pushQiFuTong(deliverData.salesman_phone, {
actionType: "closeOrderDelivery",
actionBody: {
orderNo: deliverData.delivery_code, //订单号 必填
// officialFileURL: "" //官文url 非必填
...sendMessage
}
});
}
/**
* 推送到 启服通
* @param {*} mobile
* @param {*} data
*/
const pushQiFuTong = async (mobile, data) => {
const header = await getLoginByUserName(mobile);
await postRequest(`${qifutongUrl}/web/action/qcapi/springBoard`, data, header);
}
/**
* 发送请求
* @param {*} url
* @param {*} data
*/
const postRequest = async (url, data, headers = {}) => {
try {
console.log("推送启服通请求数据 ------- ");
console.log(JSON.stringify(data))
let result = await axios.post(url, data, {
headers: {
'Content-Type': 'application/json',
...headers
}
});
result = result.data;
console.log("启服通返回数据 ------- ");
console.log(result);
if (result.status === 0) {
return result.data
} else {
throw new Error(result.msg)
}
} catch (err) {
console.log("------ 启服通err -----");
console.log(err)
throw (err)
}
}
module.exports = {
submitMaterials,
ALISTATUS,
changeStatus,
closeDelivery
}
\ No newline at end of file
...@@ -19,6 +19,8 @@ var settings = { ...@@ -19,6 +19,8 @@ var settings = {
port: process.env.NODE_PORT || 8002, port: process.env.NODE_PORT || 8002,
logindex: "center_manage", logindex: "center_manage",
appname: "icp_deliver", appname: "icp_deliver",
appKey: "201912031344",
secret: "7cbb846246874167b5c7e01cd0016c88",
kongurl: function () { if (this.env == "dev") { var localsettings = require("./localsettings"); return localsettings.kongurl; } else { return ENVINPUT.KONG_ADMIAN; } }, kongurl: function () { if (this.env == "dev") { var localsettings = require("./localsettings"); return localsettings.kongurl; } else { return ENVINPUT.KONG_ADMIAN; } },
txurl: function () { txurl: function () {
if (this.env == "dev") { var localsettings = require("./localsettings"); return localsettings.txurl; } if (this.env == "dev") { var localsettings = require("./localsettings"); return localsettings.txurl; }
...@@ -38,6 +40,20 @@ var settings = { ...@@ -38,6 +40,20 @@ var settings = {
return "http://sytxpublic-msgq-service"; return "http://sytxpublic-msgq-service";
} }
}, },
centerChannelUrl: function () {//---------center-channel
if (this.env == "dev") {
return "http://alitm.qifu-dev.gongsibao.com";
} else {
return "http://alitm.qifu-dev.gongsibao.com";
}
},
qifutongUrl: function () {//---------center-channel
if (this.env == "dev") {
return "http://gsbweb.qifu-dev.gongsibao.com";
} else {
return "http://gsbweb.qifu-dev.gongsibao.com";
}
},
pmappid: 1, pmappid: 1,
pmcompanyid: 1, pmcompanyid: 1,
pmroleid: { "ta": 1, "pr": 2 }, pmroleid: { "ta": 1, "pr": 2 },
......
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