Commit de69d1d7 by 王栋源

wdy

parent 5ce3ae83
...@@ -41,6 +41,7 @@ class Need extends APIBase { ...@@ -41,6 +41,7 @@ class Need extends APIBase {
opResult = system.getResult(null, "验证码错误"); opResult = system.getResult(null, "验证码错误");
return opResult; return opResult;
} }
await self.utilsMsgSendSve.removeVerificationCode(pobj.actionBody.ContactsMobile);
} }
switch (action_type) { switch (action_type) {
case "test"://测试 case "test"://测试
......
...@@ -47,6 +47,7 @@ class Order extends APIBase { ...@@ -47,6 +47,7 @@ class Order extends APIBase {
opResult = system.getResult(null, "验证码错误"); opResult = system.getResult(null, "验证码错误");
return opResult; return opResult;
} }
await self.utilsMsgSendSve.removeVerificationCode(pobj.actionBody.Info[0].formInfo.contactsPhone);
} }
} }
switch (action_type) { switch (action_type) {
...@@ -91,6 +92,9 @@ class Order extends APIBase { ...@@ -91,6 +92,9 @@ class Order extends APIBase {
break; break;
case "refundOrder"://退款接口 case "refundOrder"://退款接口
opResult = await this.orderinfoSve.refundOrder(pobj.actionBody, req); opResult = await this.orderinfoSve.refundOrder(pobj.actionBody, req);
if(opResult.status>0){
await self.orderDeliverySve.sendNotification(pobj.actionBody.orderNum,320);
}
break; break;
case "jftime"://计费时间修改 case "jftime"://计费时间修改
opResult = await this.orderinfoSve.jftime(pobj.actionBody, req); opResult = await this.orderinfoSve.jftime(pobj.actionBody, req);
......
...@@ -93,6 +93,18 @@ class OrderDeliveryDao extends Dao{ ...@@ -93,6 +93,18 @@ class OrderDeliveryDao extends Dao{
var list = await this.customQuery(sql, params); var list = await this.customQuery(sql, params);
return list; return list;
} }
/**
* 通过订单号获取资质证照信息
*/
async getQcInfoByMainOrderNum(mainOrderNum){
var params = {
mainOrderNum: mainOrderNum
};
var sql = "select deliver_content from v_order_oproduct_odelivery where tx_orders_num = :mainOrderNum "+
"and deliver_content is not null and (product_type='/qcfw/icp/' or product_type='/qcfw/edi/' ) order by updated_at desc limit 1";
var list = await this.customQuery(sql, params);
return list;
}
/** /**
* 获取订单交付信息 * 获取订单交付信息
*/ */
......
...@@ -31,9 +31,9 @@ class TxPushLogService extends ServiceBase { ...@@ -31,9 +31,9 @@ class TxPushLogService extends ServiceBase {
try { try {
var loginfo = await this.findOne({ deal_name: pobj.interface.para.dealName, push_action_type: "orderPayNotify" }); var loginfo = await this.findOne({ deal_name: pobj.interface.para.dealName, push_action_type: "orderPayNotify" });
if (loginfo) { if (loginfo) {
return self.returnTX(1, "cgateway", "ok", { "flowId": loginfo.flow_id, "resourceIds": [pobj.interface.para.dealName] }) return self.returnTX(0, "cgateway", "ok", { "flowId": loginfo.flow_id, "resourceIds": [pobj.interface.para.dealName] })
} }
var flow_id = await this.getBusUid("f"); var flow_id = await Date.now();
var newobj = { var newobj = {
flow_id: flow_id, flow_id: flow_id,
deal_name: pobj.interface.para.dealName, deal_name: pobj.interface.para.dealName,
...@@ -60,7 +60,7 @@ class TxPushLogService extends ServiceBase { ...@@ -60,7 +60,7 @@ class TxPushLogService extends ServiceBase {
}; };
var a = await this.execPostByTimeOut(req, pushobj, settings.opPushUrl()); var a = await this.execPostByTimeOut(req, pushobj, settings.opPushUrl());
return self.returnTX(1, "cgateway", "ok", { "flowId": creatlog.flow_id, "resourceIds": [pobj.interface.para.dealName] }) return self.returnTX(0, "cgateway", "ok", { "flowId": creatlog.flow_id, "resourceIds": [pobj.interface.para.dealName] })
} catch (e) { } catch (e) {
this.execClient.execLogs("txPushLogSve.js/createCbsInstance方法出现异常", { params: orderNum }, "txPushLogSve_createCbsInstance_error", null, e.stack); this.execClient.execLogs("txPushLogSve.js/createCbsInstance方法出现异常", { params: orderNum }, "txPushLogSve_createCbsInstance_error", null, e.stack);
return this.returnTX(-1, "cgateway", "请求失败", null) return this.returnTX(-1, "cgateway", "请求失败", null)
...@@ -78,7 +78,7 @@ class TxPushLogService extends ServiceBase { ...@@ -78,7 +78,7 @@ class TxPushLogService extends ServiceBase {
if (!loginfo) { if (!loginfo) {
return self.returnTX(-1, "cgateway", "产品不存在", null) return self.returnTX(-1, "cgateway", "产品不存在", null)
} }
var orderInfo = await this.orderInfoDao.findOne({ order_num: loginfo.dataValues.dealName }); var orderInfo = await this.orderInfoDao.findOne({ order_num: loginfo.dataValues.deal_name });
if (!orderInfo) { if (!orderInfo) {
return self.returnTX(-1, "cgateway", "资源不存在", null) return self.returnTX(-1, "cgateway", "资源不存在", null)
} }
...@@ -86,7 +86,7 @@ class TxPushLogService extends ServiceBase { ...@@ -86,7 +86,7 @@ class TxPushLogService extends ServiceBase {
if (orderInfo.status == 320) { if (orderInfo.status == 320) {
status = 3; status = 3;
} }
return self.returnTX(1, "cgateway", "ok", { "status": status }) return self.returnTX(0, "cgateway", "ok", { "status": status })
} }
...@@ -119,7 +119,7 @@ class TxPushLogService extends ServiceBase { ...@@ -119,7 +119,7 @@ class TxPushLogService extends ServiceBase {
} }
resources.push(resource); resources.push(resource);
} }
return self.returnTX(1, "cgateway", "ok", { "resources": resources }) return self.returnTX(0, "cgateway", "ok", { "resources": resources })
} }
//用户所有资源拉取 //用户所有资源拉取
...@@ -159,7 +159,7 @@ class TxPushLogService extends ServiceBase { ...@@ -159,7 +159,7 @@ class TxPushLogService extends ServiceBase {
} }
resources.push(resource); resources.push(resource);
} }
return self.returnTX(1, "cgateway", "ok", { "total": orderProduct.count, "resources": resources }) return self.returnTX(0, "cgateway", "ok", { "total": orderProduct.count, "resources": resources })
} }
//隔离资源 //隔离资源
...@@ -173,13 +173,13 @@ class TxPushLogService extends ServiceBase { ...@@ -173,13 +173,13 @@ class TxPushLogService extends ServiceBase {
return self.returnTX(-1, "mall_logic", "资源不存在", null) return self.returnTX(-1, "mall_logic", "资源不存在", null)
} }
if (orderProduct.dataValues.status == 2) { if (orderProduct.dataValues.status == 2) {
return self.returnTX(1, "mall_logic", "ok", null) return self.returnTX(0, "mall_logic", "ok", null)
} }
if (orderProduct.dataValues.status == 3) { if (orderProduct.dataValues.status == 3) {
return self.returnTX(-1, "mall_logic", "资源已销毁", null) return self.returnTX(-1, "mall_logic", "资源已销毁", null)
} }
await this.orderProductDao.update({ id: orderProduct.dataValues.id, status: 2, isolated_time: new Date() }); await this.orderProductDao.update({ id: orderProduct.dataValues.id, status: 2, isolated_time: new Date() });
return self.returnTX(1, "mall_logic", "ok", null) return self.returnTX(0, "mall_logic", "ok", null)
} }
...@@ -197,7 +197,7 @@ class TxPushLogService extends ServiceBase { ...@@ -197,7 +197,7 @@ class TxPushLogService extends ServiceBase {
return self.returnTX(-1, "mall_logic", "资源未隔离", null) return self.returnTX(-1, "mall_logic", "资源未隔离", null)
} }
if (orderProduct.dataValues.status == 3) { if (orderProduct.dataValues.status == 3) {
return self.returnTX(1, "mall_logic", "资源已销毁", null) return self.returnTX(0, "mall_logic", "资源已销毁", null)
} }
var flow_id = await this.getBusUid("f"); var flow_id = await this.getBusUid("f");
var newobj = { var newobj = {
...@@ -214,7 +214,7 @@ class TxPushLogService extends ServiceBase { ...@@ -214,7 +214,7 @@ class TxPushLogService extends ServiceBase {
return self.returnTX(-1, "mall_logic", "请求错误", null) return self.returnTX(-1, "mall_logic", "请求错误", null)
} }
await this.orderProductDao.update({ id: orderProduct.dataValues.id, status: 3 }); await this.orderProductDao.update({ id: orderProduct.dataValues.id, status: 3 });
return self.returnTX(1, "mall_logic", "ok", { flowId: flow_id }) return self.returnTX(0, "mall_logic", "ok", { flowId: flow_id })
} }
......
...@@ -8,50 +8,126 @@ class NeedSolutionService extends ServiceBase { ...@@ -8,50 +8,126 @@ class NeedSolutionService extends ServiceBase {
this.needInfoDao = system.getObject("db.need.needInfoDao"); this.needInfoDao = system.getObject("db.need.needInfoDao");
this.utilsMsgSendSve = system.getObject("service.utilsSve.utilsMsgSendSve"); this.utilsMsgSendSve = system.getObject("service.utilsSve.utilsMsgSendSve");
} }
/** /**
* 发送短信通知 * 发送消息通知
* @param {*} mobile 接收人手机号 * @param {*} needInfo 需求信息
* @param {*} userId 用户id
* @param {*} consultType 产品类型
* @param {*} consultName 产品类型名称
* @param {*} status 状态 * @param {*} status 状态
*/ */
async sendSmsNotification(mobile, userId, consultType, consultName, status) { async sendNotification(needInfo, status) {
try { try {
var nameArr = consultName ? consultName.split("/") : []; if(!needInfo || !status || !needInfo.consult_type){
return system.getResultFail();
}
var nameArr = needInfo && needInfo.consult_type_name ? needInfo.consult_type_name.split("/") : [];
var productName = null; var productName = null;
if (nameArr && nameArr.length == 4) { if (nameArr && nameArr.length == 4) {
productName = nameArr[2]; productName = nameArr[2];
} }
var params = { phoneNumber: mobile, messageBody: null }; var typeOne =null;
var webinfoParams = { "title": null, "subAccount": userId, "messageBody": null };//站内信通知参数 if (needInfo.consult_type.indexOf("/ic/") >= 0) {//工商产品
var messageBody = null; typeOne = "ic";
var webinfoMessageBody = null;
if (consultType.indexOf("/ic/") >= 0) {//工商产品
messageBody = MsgTemplate.ic.need[status] && MsgTemplate.ic.need[status].sms ? MsgTemplate.ic.need[status].sms : "";
messageBody = messageBody.replace(/{productName}/g, productName);
webinfoMessageBody = MsgTemplate.ic.need[status] && MsgTemplate.ic.need[status].webinfo ? MsgTemplate.ic.need[status].webinfo : "";
webinfoMessageBody = webinfoMessageBody.replace(/{productName}/g, productName);
webinfoParams.title = MsgTemplate.ic.need[status] && MsgTemplate.ic.need[status].webinfotitle ? MsgTemplate.ic.need[status].webinfotitle : "";
} }
if (consultType.indexOf("/qcfw/") >= 0) {//资质证照产品 if (needInfo.consult_type.indexOf("/qcfw/") >= 0) {//资质证照产品
typeOne="qcfw";
}
if(!typeOne || !productName){
return system.getResultFail();
}
var params = {};
if(needInfo.contacts_mobile){//短信
var sms = MsgTemplate[typeOne].need[status] && MsgTemplate[typeOne].need[status].sms ? MsgTemplate[typeOne].need[status].sms : "";
if(sms){
if(productName){
sms = sms.replace(/{productName}/g, productName);
}
if(needInfo.region_name){
sms = sms.replace(/{area}/g, needInfo.region_name);
}
if(needInfo.user_id){
sms = sms.replace(/{userId}/g, needInfo.user_id);
}
if(needInfo.user_name){
sms = sms.replace(/{userName}/g, needInfo.user_name);
}
if (sms.indexOf("{")<0 && sms.indexOf("}")<0) {
params["phoneList"] = [{phoneNumber:needInfo.contacts_mobile,messageBody:sms}];
}
}
}
if(needInfo.user_id){//站内信
var webinfo = MsgTemplate[typeOne].need[status] && MsgTemplate[typeOne].need[status].webinfo ? MsgTemplate[typeOne].need[status].webinfo : "";
var webinfotitle = MsgTemplate[typeOne].need[status] && MsgTemplate[typeOne].need[status].webinfotitle ? MsgTemplate[typeOne].need[status].webinfotitle : "";
if(webinfo && webinfotitle){
if(productName){
webinfo = webinfo.replace(/{productName}/g, productName);
}
if(needInfo.region_name){
webinfo = webinfo.replace(/{area}/g, needInfo.region_name);
}
if(needInfo.user_id){
webinfo = webinfo.replace(/{userId}/g, needInfo.user_id);
}
if(needInfo.user_name){
webinfo = webinfo.replace(/{userName}/g, needInfo.user_name);
}
if (webinfo.indexOf("{")<0 && webinfo.indexOf("}")<0) {
params["subAccountList"] = [{title:webinfotitle,subAccount:needInfo.user_id,messageBody:webinfo}];
}
}
}
if(needInfo.wechat_no){//微信
var wechatMsg = MsgTemplate[typeOne].need[status] && MsgTemplate[typeOne].need[status].wx ? MsgTemplate[typeOne].need[status].wx : "";
var wechattitle = MsgTemplate[typeOne].need[status] && MsgTemplate[typeOne].need[status].webinfotitle ? MsgTemplate[typeOne].need[status].webinfotitle : "";
if(wechatMsg && wechattitle){
if(productName){
wechatMsg = wechatMsg.replace(/{productName}/g, productName);
}
if(needInfo.region_name){
wechatMsg = wechatMsg.replace(/{area}/g, needInfo.region_name);
}
if(needInfo.solutionNum){
wechatMsg = wechatMsg.replace(/{solutionNum}/g, needInfo.solutionNum);
}
if(needInfo.user_id){
wechatMsg = wechatMsg.replace(/{userId}/g, needInfo.user_id);
}
if(needInfo.user_name){
wechatMsg = wechatMsg.replace(/{userName}/g, needInfo.user_name);
}
if (wechatMsg.indexOf("{")<0 && wechatMsg.indexOf("}")<0) {
params["wechatList"] = [{title:wechattitle,wechatNumber:needInfo.wechat_no,messageBody:wechatMsg}];
}
}
} }
// console.log(messageBody,"ddddddddd"); if(needInfo.email){//邮箱
if (userId && webinfoParams.title && messageBody && messageBody.indexOf("{") < 0 && messageBody.indexOf("}") < 0 && webinfoMessageBody && webinfoMessageBody.indexOf("{") < 0 && webinfoMessageBody.indexOf("}") < 0) { var emailMsg = MsgTemplate[typeOne].need[status] && MsgTemplate[typeOne].need[status].email ? MsgTemplate[typeOne].need[status].email : "";
params.messageBody = messageBody; if(emailMsg){
webinfoParams.messageBody = webinfoMessageBody; if(productName){
// await this.utilsMsgSendSve.sendMessageByPhone(params);//发送短信 emailMsg = emailMsg.replace(/{productName}/g, productName);
await this.utilsMsgSendSve.sendMessageVerify({ phoneList: [params], subAccountList: [webinfoParams] }); }
if(needInfo.region_name){
emailMsg = emailMsg.replace(/{area}/g, needInfo.region_name);
}
if(needInfo.user_id){
emailMsg = emailMsg.replace(/{userId}/g, needInfo.user_id);
}
if(needInfo.user_name){
emailMsg = emailMsg.replace(/{userName}/g, needInfo.user_name);
}
if (emailMsg.indexOf("{")<0 && emailMsg.indexOf("}")<0) {
params["emailList"] = [{email:needInfo.email,messageBody:emailMsg}];
}
}
} }
return; await this.utilsMsgSendSve.sendMessageVerify(params);
return system.getResultSuccess();
} catch (e) { } catch (e) {
this.execClient.execLogs("needSolutionSve.js/sendSmsNotification(发送短信通知)方法出现异常", { mobile: mobile, consultType: consultType, consultName: consultName, status: status }, "needSolutionSve_sendSmsNotification_error", null, e.stack); this.execClient.execLogs("needSolutionSve.js/sendNotification(发送短信通知)方法出现异常", { needInfo:needInfo, status: status }, "needSolutionSve_sendNotification_error", null, e.stack);
return; return system.getResultFail();
} }
} }
//服务商提交/修改方案 //服务商提交/修改方案
async submitSolution(pobj) { async submitSolution(pobj) {
...@@ -101,7 +177,8 @@ class NeedSolutionService extends ServiceBase { ...@@ -101,7 +177,8 @@ class NeedSolutionService extends ServiceBase {
await self.dao.update(updateObj, t); await self.dao.update(updateObj, t);
await self.needInfoDao.update({ id: needinfo.id, status: "3" }, t); await self.needInfoDao.update({ id: needinfo.id, status: "3" }, t);
//发送短信通知 //发送短信通知
self.sendSmsNotification(needinfo.contacts_mobile, needinfo.user_id, needinfo.consult_type, needinfo.consult_type_name, 3); needinfo.solutionNum = ab.solutionNum;
self.sendNotification(needinfo, 3);
return system.getResultSuccess(); return system.getResultSuccess();
}); });
...@@ -125,9 +202,9 @@ class NeedSolutionService extends ServiceBase { ...@@ -125,9 +202,9 @@ class NeedSolutionService extends ServiceBase {
return await self.db.transaction(async function (t) { return await self.db.transaction(async function (t) {
await self.needInfoDao.update({ id: needinfo.id, status: "3" }, t); await self.needInfoDao.update({ id: needinfo.id, status: "3" }, t);
await self.dao.create(createObj, t); await self.dao.create(createObj, t);
//发送短信通知 //发送消息通知
// self.sendSmsNotification(needinfo.contacts_mobile,needinfo.consult_type,needinfo.consult_type_name,3); needinfo.solutionNum = solution_num;
self.sendSmsNotification(needinfo.contacts_mobile, needinfo.user_id, needinfo.consult_type, needinfo.consult_type_name, 3); self.sendNotification(needinfo, 3);
return system.getResultSuccess(solution_num); return system.getResultSuccess(solution_num);
}); });
...@@ -185,8 +262,4 @@ class NeedSolutionService extends ServiceBase { ...@@ -185,8 +262,4 @@ class NeedSolutionService extends ServiceBase {
}) })
} }
} }
module.exports = NeedSolutionService; module.exports = NeedSolutionService;
// var task = new NeedSolutionService(); \ No newline at end of file
// task.sendSmsNotification("15675201933","/ic/cpreg/","/工商服务/云上园区注册/",3).then(d=>{
// console.log("eeeeeeeeeeeeee"+d);
// })
\ No newline at end of file
...@@ -155,264 +155,176 @@ class OrderDeliveryService extends ServiceBase { ...@@ -155,264 +155,176 @@ class OrderDeliveryService extends ServiceBase {
return system.getResultSuccess(); return system.getResultSuccess();
} }
/** /**
* 组装短信模板 * 组装模板参数
* @param {*} orderdetail 订单数据 * @param {*} orderdetail 订单详情
* @param {*} status 订单交付状态 * @param {*} productName 产品名称
* @param {*} productType 产品类型 * @param {*} productType 产品类型
* @param {*} productTypeName 产品类型名称 * @param {*} msgTemplate 消息模板
* @param {*} productTypeOne 产品一类
*/ */
async packageSmsTemplates(orderdetail,status,productType,productTypeName,productTypeOne){ async packageTemplatesParams(orderdetail,productName,productType,msgTemplate){
var params={}; //productName orderNum expirationDate timeRemaining userId userName area parkName logisticsCompany waybillNo
var phoneNumber=orderdetail.order_snapshot && orderdetail.order_snapshot.contactsPhone?orderdetail.order_snapshot.contactsPhone:"";//联系人手机号 if(orderdetail.order_num){//订单号
if(phoneNumber && productType){ msgTemplate=msgTemplate.replace(/{orderNum}/g, orderdetail.order_num);
if(productType=="/ic/cpreg/" && status==130){//云上公司注册工商审核环节不通知 }
return; if(orderdetail.total_sum){//订单金额
} var totalSum = orderdetail.total_sum/100;
var smsMessageBody= null;//短信模板内容 totalSum= totalSum.toFixed(2);
if(productType.indexOf("/ic/")>=0){//工商产品 msgTemplate=msgTemplate.replace(/{totalSum}/g,totalSum);
smsMessageBody=MsgTemplate.ic.order[status] && MsgTemplate.ic.order[status].sms?MsgTemplate.ic.order[status].sms:""; }
if(smsMessageBody){ if(orderdetail.end_time){//过期时间
smsMessageBody = smsMessageBody.replace(/{productName}/g,productTypeName) msgTemplate = msgTemplate.replace(/{expirationDate}/g,orderdetail.end_time);
.replace(/{orderNum}/g,orderdetail.order_num); var m1 = moment(new Date());
if(orderdetail.end_time){//过期时间 var m2 = moment(new Date(orderdetail.end_time));
smsMessageBody = smsMessageBody.replace(/{expirationDate}/g,orderdetail.end_time); var days = m2.diff(m1,'day');
var m1 = moment(new Date()); if(days && days>=0){//剩余天数
var m2 = moment(new Date(orderdetail.end_time)); msgTemplate = msgTemplate.replace(/{timeRemaining}/g,days);
var days = m2.diff(m1,'day');
if(days && days>=0){//剩余天数
smsMessageBody = smsMessageBody.replace(/{timeRemaining}/g,days);
}
}
if(orderdetail.user_id){//用户账号
smsMessageBody = smsMessageBody.replace(/{userId}/g,orderdetail.user_id);
}
if(orderdetail.user_name){//用户昵称
smsMessageBody = smsMessageBody.replace(/{userName}/g,orderdetail.user_name);
}
if(orderdetail.region_name){//地区
smsMessageBody = smsMessageBody.replace(/{area}/g,orderdetail.region_name);
}
var deliverContent = orderdetail.deliver_content;
if(deliverContent){
//注册园区
if(productType=="/ic/cpreg/" && deliverContent.companyInfo && deliverContent.companyInfo.registeredPark){
smsMessageBody = smsMessageBody.replace(/{parkName}/g,deliverContent.companyInfo.registeredPark);
}
//邮寄信息
if(deliverContent.expressInfo && deliverContent.expressInfo.logisticsCompany && deliverContent.expressInfo.trackingNumber ){
smsMessageBody = smsMessageBody.replace(/{logisticsCompany}/g,deliverContent.expressInfo.logisticsCompany)
.replace(/{waybillNo}/g,deliverContent.expressInfo.trackingNumber);
}
}
}
} }
if(productType.indexOf("/qcfw/")>=0){//资质证照 }
if(status==170 && (productType=="/qcfw/icpannals/" || productType=="/qcfw/ediannals/" )){//年报已完成 var deliverContent = orderdetail.deliver_content;
smsMessageBody=MsgTemplate.qcfw.order[status] && MsgTemplate.qcfw.order[status].ar_sms?MsgTemplate.qcfw.order[status].ar_sms:""; if(deliverContent){
}else{ //注册园区
smsMessageBody=MsgTemplate.qcfw.order[status] && MsgTemplate.qcfw.order[status].sms?MsgTemplate.qcfw.order[status].sms:""; if(orderdetail.product_type=="/ic/cpreg/" && deliverContent.companyInfo && deliverContent.companyInfo.registeredPark){
} msgTemplate = msgTemplate.replace(/{parkName}/g,deliverContent.companyInfo.registeredPark);
if(smsMessageBody){
smsMessageBody = smsMessageBody.replace(/{productName}/g,productTypeName);
if(orderdetail.user_id){//用户账号
smsMessageBody = smsMessageBody.replace(/{userId}/g,orderdetail.user_id);
}
if(orderdetail.user_name){//用户昵称
smsMessageBody = smsMessageBody.replace(/{userName}/g,orderdetail.user_name);
}
if(productTypeOne){//产品一类名称
smsMessageBody = smsMessageBody.replace(/{productType}/g,productTypeOne);
}
if(orderdetail.end_time){//过期时间
smsMessageBody = smsMessageBody.replace(/{expirationDate}/g,orderdetail.end_time);
var m1 = moment(new Date());
var m2 = moment(new Date(orderdetail.end_time));
var days = m2.diff(m1,'day');
if(days && days>=0){//剩余天数
smsMessageBody = smsMessageBody.replace(/{timeRemaining}/g,days);
}
}
var deliverContent = orderdetail.deliver_content;
if(deliverContent){
//邮寄信息
if(deliverContent.expressInfo && deliverContent.expressInfo.logisticsCompany && deliverContent.expressInfo.trackingNumber ){
smsMessageBody = smsMessageBody.replace(/{logisticsCompany}/g,deliverContent.expressInfo.logisticsCompany)
.replace(/{waybillNo}/g,deliverContent.expressInfo.trackingNumber);
}
//资质证号
if(deliverContent.qualification && deliverContent.qualification.certificateNumber){
smsMessageBody = smsMessageBody.replace(/{qcNo}/g,deliverContent.qualification.certificateNumber);
}
}
var orderSnapshot = orderdetail.order_snapshot;//订单快照
if(orderSnapshot && orderSnapshot.serviceArea){//服务地址
smsMessageBody = smsMessageBody.replace(/{area}/g,orderSnapshot.serviceArea);
}
}
} }
if(!smsMessageBody || smsMessageBody.indexOf("{")>=0 || !phoneNumber){ //邮寄信息
return null; if(deliverContent.expressInfo && deliverContent.expressInfo.logisticsCompany && deliverContent.expressInfo.trackingNumber ){
msgTemplate = msgTemplate.replace(/{logisticsCompany}/g,deliverContent.expressInfo.logisticsCompany)
.replace(/{waybillNo}/g,deliverContent.expressInfo.trackingNumber);
} }
params.phoneNumber = phoneNumber; //资质证号
params.messageBody = smsMessageBody; if(deliverContent.qualification && deliverContent.qualification.certificateNumber){
return params; msgTemplate = msgTemplate.replace(/{qcNo}/g,deliverContent.qualification.certificateNumber);
} }else if(orderdetail.certificateNumber){
return null; msgTemplate = msgTemplate.replace(/{qcNo}/g,orderdetail.certificateNumber);
}
/**
* 组装站内信模板
* @param {*} orderdetail 订单数据
* @param {*} status 订单交付状态
* @param {*} productType 产品类型
* @param {*} productTypeName 产品类型名称
* @param {*} productTypeOne 产品一类
*/
async packageWebinfoTemplates(orderdetail,status,productType,productTypeName,productTypeOne){
var params={};
var subAccount=orderdetail.user_id || "";//用户id
if(subAccount && productType){
if(productType=="/ic/cpreg/" && status==130){//云上公司注册工商审核环节不通知
return;
} }
var webinfoMessageBody = null;//站内信模板 if(deliverContent.annualReport){//年报列表
if(productType.indexOf("/ic/")>=0){//工商产品 var year = null;
webinfoMessageBody=MsgTemplate.ic.order[status] && MsgTemplate.ic.order[status].webinfo?MsgTemplate.ic.order[status].webinfo:""; for(var i=0;i<deliverContent.annualReport.length;i++){
params.title = MsgTemplate.ic.order[status] && MsgTemplate.ic.order[status].webinfotitle?MsgTemplate.ic.order[status].webinfotitle:""; var annualReport = deliverContent.annualReport[i];
if(webinfoMessageBody){ if(annualReport && annualReport.year && annualReport.status && annualReport.status=='declaresuccess'){
webinfoMessageBody = webinfoMessageBody.replace(/{productName}/g,productTypeName) if(!year || year<annualReport.year)
.replace(/{orderNum}/g,orderdetail.order_num); year=annualReport.year;
if(orderdetail.end_time){//过期时间
webinfoMessageBody = webinfoMessageBody.replace(/{expirationDate}/g,orderdetail.end_time);
var m1 = moment(new Date());
var m2 = moment(new Date(orderdetail.end_time));
var days = m2.diff(m1,'day');
if(days && days>=0){//剩余天数
webinfoMessageBody = webinfoMessageBody.replace(/{timeRemaining}/g,days);
}
}
if(orderdetail.user_id){//用户账号
webinfoMessageBody = webinfoMessageBody.replace(/{userId}/g,orderdetail.user_id);
}
if(orderdetail.user_name){//用户昵称
webinfoMessageBody = webinfoMessageBody.replace(/{userName}/g,orderdetail.user_name);
}
if(orderdetail.region_name){//地区
webinfoMessageBody = webinfoMessageBody.replace(/{area}/g,orderdetail.region_name);
}
var deliverContent = orderdetail.deliver_content;
if(deliverContent){
//注册园区
if(productType=="/ic/cpreg/" && deliverContent.companyInfo && deliverContent.companyInfo.registeredPark){
webinfoMessageBody = webinfoMessageBody.replace(/{parkName}/g,deliverContent.companyInfo.registeredPark);
}
//邮寄信息
if(deliverContent.expressInfo && deliverContent.expressInfo.logisticsCompany && deliverContent.expressInfo.trackingNumber ){
webinfoMessageBody = webinfoMessageBody.replace(/{logisticsCompany}/g,deliverContent.expressInfo.logisticsCompany)
.replace(/{waybillNo}/g,deliverContent.expressInfo.trackingNumber);
}
} }
} }
} if(year){
if(productType.indexOf("/qcfw/")>=0){//资质证照 msgTemplate = msgTemplate.replace(/{year}/g,year);
params.title = MsgTemplate.qcfw.order[status] && MsgTemplate.qcfw.order[status].webinfotitle?MsgTemplate.qcfw.order[status].webinfotitle:"";
if(status==170 && (productType=="/qcfw/icpannals/" || productType=="/qcfw/ediannals/" )){//年报已完成
webinfoMessageBody=MsgTemplate.qcfw.order[status] && MsgTemplate.qcfw.order[status].ar_webinfo?MsgTemplate.qcfw.order[status].ar_webinfo:"";
}else{
webinfoMessageBody=MsgTemplate.qcfw.order[status] && MsgTemplate.qcfw.order[status].webinfo?MsgTemplate.qcfw.order[status].webinfo:"";
}
if(webinfoMessageBody){
webinfoMessageBody = webinfoMessageBody.replace(/{productName}/g,productTypeName);
if(orderdetail.end_time){//过期时间
webinfoMessageBody = webinfoMessageBody.replace(/{expirationDate}/g,orderdetail.end_time);
var m1 = moment(new Date());
var m2 = moment(new Date(orderdetail.end_time));
var days = m2.diff(m1,'day');
if(days && days>=0){//剩余天数
webinfoMessageBody = webinfoMessageBody.replace(/{timeRemaining}/g,days);
}
}
if(orderdetail.user_id){//用户账号
webinfoMessageBody = webinfoMessageBody.replace(/{userId}/g,orderdetail.user_id);
}
if(orderdetail.user_name){//用户昵称
webinfoMessageBody = webinfoMessageBody.replace(/{userName}/g,orderdetail.user_name);
}
if(productTypeOne){//产品一类名称
webinfoMessageBody = webinfoMessageBody.replace(/{productType}/g,productTypeOne);
}
var deliverContent = orderdetail.deliver_content;
if(deliverContent){
//邮寄信息
if(deliverContent.expressInfo && deliverContent.expressInfo.logisticsCompany && deliverContent.expressInfo.trackingNumber ){
webinfoMessageBody = webinfoMessageBody.replace(/{logisticsCompany}/g,deliverContent.expressInfo.logisticsCompany)
.replace(/{waybillNo}/g,deliverContent.expressInfo.trackingNumber);
}
//资质证号
if(deliverContent.qualification && deliverContent.qualification.certificateNumber){
webinfoMessageBody = webinfoMessageBody.replace(/{qcNo}/g,deliverContent.qualification.certificateNumber);
}
}
var orderSnapshot = orderdetail.order_snapshot;//订单快照
if(orderSnapshot && orderSnapshot.serviceArea){//服务地址
webinfoMessageBody = webinfoMessageBody.replace(/{area}/g,orderSnapshot.serviceArea);
}
} }
} }
if(!webinfoMessageBody || webinfoMessageBody.indexOf("{")>=0 || !subAccount){
return null;
}
params.subAccount = subAccount;
params.messageBody = webinfoMessageBody;
return params;
} }
return null; if(productName){//产品名称
msgTemplate = msgTemplate.replace(/{productName}/g, productName);
}
if(productType){//产品类型名称
msgTemplate = msgTemplate.replace(/{productType}/g, productType);
}
if(orderdetail.region_name){//地区
msgTemplate = msgTemplate.replace(/{area}/g, orderdetail.region_name);
}
if(orderdetail.user_id){//用户id
msgTemplate = msgTemplate.replace(/{userId}/g, orderdetail.user_id);
}
if(orderdetail.user_name){//用户昵称
msgTemplate = msgTemplate.replace(/{userName}/g, orderdetail.user_name);
}
return msgTemplate;
} }
/** /**
* 发送消息通知 * 发送消息通知
* @param {*} orderNum 订单号 * @param {*} orderNum 订单号
* @param {*} status 订单交付状态 * @param {*} status 状态
*/ */
async sendNotification(orderNum,status){ async sendNotification(orderNum, status) {
try { try {
var smsParams = {phoneNumber:null,messageBody:null};//短信通知参数 var functionModule = "order";//功能模块编码,用于获取消息模板
var webinfoParams = {"title":null,"subAccount":null,"messageBody":null};//站内信通知参数 var orderdetail = null;
//获取订单详情 //获取订单详情
var orderDetailRes = await this.dao.getOrderDetailByOrderNum(orderNum); var orderDetailRes = await this.dao.getOrderDetailByOrderNum(orderNum);
if(orderDetailRes && orderDetailRes.length>0){ if(orderDetailRes && orderDetailRes.length>0){
var orderdetail = orderDetailRes[0];//订单详情信息 orderdetail = orderDetailRes[0];
var productType=orderdetail.product_type;//产品类型 }
var product_type_name = orderdetail.product_type_name;//产品类型名称 if(!orderdetail || !status || !orderdetail.product_type){
var product_type_one_name = null;//产品一类 return system.getResultFail();
if(!productType || !product_type_name){ }
return; var nameArr = orderdetail.product_type_name ? orderdetail.product_type_name.split("/") : [];
var productName = null;//产品名称
var productType = null;//产品类型名称
if (nameArr && nameArr.length == 4) {
productName = nameArr[2];
productType = nameArr[1];
}
var typeOne =null;//产品大类编码,用于获取消息模板
if (orderdetail.product_type.indexOf("/ic/") >= 0) {//工商产品
typeOne = "ic";
}
if (orderdetail.product_type.indexOf("/qcfw/") >= 0) {//资质证照产品
typeOne="qcfw";
}
if(!typeOne || !productName){
return system.getResultFail();
}
var params = {};
if(status==170 && (orderdetail.product_type=="/qcfw/icpannals/" || orderdetail.product_type=="/qcfw/ediannals/" )){//年报已完成
functionModule="others";
if(orderdetail.tx_orders_num){
//获取资质信息
var qcInfoRes = await this.dao.getQcInfoByMainOrderNum(orderdetail.tx_orders_num);
if(qcInfoRes && qcInfoRes.length>0){
if(qcInfoRes[0] && qcInfoRes[0].deliver_content && qcInfoRes[0].deliver_content.qualification && qcInfoRes[0].deliver_content.qualification.certificateNumber){
orderdetail.certificateNumber = qcInfoRes[0].deliver_content.qualification.certificateNumber;
}
}
}
}
if(orderdetail.order_snapshot && orderdetail.order_snapshot.contactsPhone){//短信
var sms = MsgTemplate[typeOne][functionModule][status] && MsgTemplate[typeOne][functionModule][status].sms ? MsgTemplate[typeOne][functionModule][status].sms : "";
if(sms){
sms = await this.packageTemplatesParams(orderdetail,productName,productType,sms);
if (sms.indexOf("{")<0 && sms.indexOf("}")<0) {
params["phoneList"] = [{phoneNumber:orderdetail.order_snapshot.contactsPhone,messageBody:sms}];
}
}
}
if(orderdetail.user_id){//站内信
var webinfo = MsgTemplate[typeOne][functionModule][status] && MsgTemplate[typeOne][functionModule][status].webinfo ? MsgTemplate[typeOne][functionModule][status].webinfo : "";
var webinfotitle = MsgTemplate[typeOne][functionModule][status] && MsgTemplate[typeOne][functionModule][status].webinfotitle ? MsgTemplate[typeOne][functionModule][status].webinfotitle : "";
if(webinfo && webinfotitle){
webinfo = await this.packageTemplatesParams(orderdetail,productName,productType,webinfo);
if (webinfo.indexOf("{")<0 && webinfo.indexOf("}")<0) {
params["subAccountList"] = [{title:webinfotitle,subAccount:orderdetail.user_id,messageBody:webinfo}];
}
} }
var productArr = product_type_name.split("/");
if(productArr && productArr.length==4){ }
product_type_name = productArr[2]; if(orderdetail.wechat_no){//微信
product_type_one_name = productArr[1]; var wechatMsg = MsgTemplate[typeOne][functionModule][status] && MsgTemplate[typeOne][functionModule][status].wx ? MsgTemplate[typeOne][functionModule][status].wx : "";
var wechattitle = MsgTemplate[typeOne][functionModule][status] && MsgTemplate[typeOne][functionModule][status].webinfotitle ? MsgTemplate[typeOne][functionModule][status].webinfotitle : "";
if(wechatMsg && wechattitle){
wechatMsg = await this.packageTemplatesParams(orderdetail,productName,productType,wechatMsg);
if (wechatMsg.indexOf("{")<0 && wechatMsg.indexOf("}")<0) {
params["wechatList"] = [{title:wechattitle,wechatNumber:orderdetail.wechat_no,messageBody:wechatMsg}];
}
} }
//组装消息模板
var smsParams = await this.packageSmsTemplates(orderdetail,status,productType,product_type_name,product_type_one_name); }
var webinfoParams = await this.packageWebinfoTemplates(orderdetail,status,productType,product_type_name,product_type_one_name); if(orderdetail.email){//邮箱
if(smsParams && webinfoParams){ var emailMsg = MsgTemplate[typeOne][functionModule][status] && MsgTemplate[typeOne][functionModule][status].email ? MsgTemplate[typeOne][functionModule][status].email : "";
console.log(JSON.stringify(smsParams),"smsParams++++++++++++++++++++++++++++++"); if(emailMsg){
console.log(JSON.stringify(webinfoParams),"webinfoParams------------------------"); emailMsg = await this.packageTemplatesParams(orderdetail,productName,productType,emailMsg);
// await this.utilsMsgSendSve.sendMessageVerify({phoneList:[smsParams],subAccountList:[webinfoParams]});//发送消息通知 if (emailMsg.indexOf("{")<0 && emailMsg.indexOf("}")<0) {
params["emailList"] = [{email:orderdetail.email,messageBody:emailMsg}];
}
} }
return; }
} await this.utilsMsgSendSve.sendMessageVerify(params);
console.log(JSON.stringify(params),"params++++++++++++++++++++++++++++++++++++++++");
return system.getResultSuccess(params);
} catch (e) { } catch (e) {
console.log(e.stack) this.execClient.execLogs("orderDeliverySve.js/sendNotification(发送消息通知)方法出现异常", { orderNum:orderNum, status: status }, "orderDeliverySve_sendNotification_error", null, e.stack);
this.execClient.execLogs("orderDeliverySve.js/sendNotification(发送短信通知)方法出现异常", {orderNum:orderNum,status:status}, "orderDeliverySve_sendNotification_error", null, e.stack); return system.getResultFail();
return;
} }
} }
/** /**
* 创建资质信息 * 创建资质信息
......
...@@ -238,8 +238,8 @@ class OrderInfoService extends ServiceBase { ...@@ -238,8 +238,8 @@ class OrderInfoService extends ServiceBase {
user_id: pobj.actionBody.interface.para.uin, user_id: pobj.actionBody.interface.para.uin,
delivery_status: 1, delivery_status: 1,
user_name: txorderdetail.goodsDetail.formInfo.userName, user_name: txorderdetail.goodsDetail.formInfo.userName,
email: txorderdetail.goodsDetail.formInfo.email || "", email: txorderdetail.goodsDetail.formInfo.Email || "",
wechat_no: txorderdetail.goodsDetail.formInfo.wechatNo || "" wechat_no: txorderdetail.goodsDetail.formInfo.WechatNo || ""
} }
var orderDeliveryinfo = await self.orderDeliveryDao.create(orderDeliveryobj, t); var orderDeliveryinfo = await self.orderDeliveryDao.create(orderDeliveryobj, t);
var orderPayobj = { var orderPayobj = {
...@@ -267,6 +267,9 @@ class OrderInfoService extends ServiceBase { ...@@ -267,6 +267,9 @@ class OrderInfoService extends ServiceBase {
if (!ispush) { if (!ispush) {
return system.getResultSuccess(); return system.getResultSuccess();
} }
txorderdetail.goodsDetail.formInfo.buyTime=new Date(txorderdetail.payEndTime);
txorderdetail.goodsDetail.formInfo.timeSpan=1;
txorderdetail.goodsDetail.formInfo.timeUnit="y";
//生产者------订单推送 //生产者------订单推送
var pushobj = { var pushobj = {
"actionType": "produceData",// Y 功能名称 "actionType": "produceData",// Y 功能名称
...@@ -832,7 +835,7 @@ class OrderInfoService extends ServiceBase { ...@@ -832,7 +835,7 @@ class OrderInfoService extends ServiceBase {
} }
//退款 //退款
async refundOrder(req,pobj) { async refundOrder(pobj, req) {
if (!pobj.orderNum) { if (!pobj.orderNum) {
return system.getResultFail(-101, "orderNum is empty"); return system.getResultFail(-101, "orderNum is empty");
} }
......
...@@ -46,6 +46,20 @@ class UtilsMsgSendService extends AppServiceBase { ...@@ -46,6 +46,20 @@ class UtilsMsgSendService extends AppServiceBase {
return await this.redisClient.getCache(key); return await this.redisClient.getCache(key);
} }
/** /**
* 删除验证码
* @param {*} phoneNumber 手机号
*/
async removeVerificationCode(phoneNumber) {
if (!phoneNumber) {
return system.getResult(null, "手机号不能为空");
}
if (!(/^1[3|4|5|6|7|8|9][0-9]\d{8}$/.test(phoneNumber))) {
return system.getResult(null, "手机号有误,请输入正确手机号");
}
var key = this.prefix + phoneNumber;
return await this.redisClient.delete(key);
}
/**
* 发送信息 * 发送信息
* @param {*} params 格式: * @param {*} params 格式:
{ {
...@@ -154,6 +168,29 @@ class UtilsMsgSendService extends AppServiceBase { ...@@ -154,6 +168,29 @@ class UtilsMsgSendService extends AppServiceBase {
} }
} }
} }
if (verifyResult) {
return verifyResult;
}
if (params.emailList && params.emailList.length > 0) {
for (let index = 0; index < params.emailList.length; index++) {
var element = params.emailList[index];
if (element) {
if (!element.email) {
verifyResult = system.getResult(null, "邮箱不能为空");
break;
}
if (!element.messageBody) {
verifyResult = system.getResult(null, "微信消息主体不能为空");
break;
}
reqParam.emailTpl.push(element.messageBody);
reqParam.emailList.push(element.email);
}
}
}
if (verifyResult) {
return verifyResult;
}
var sendResult = await this.sendMessage(reqParam); var sendResult = await this.sendMessage(reqParam);
if (sendResult.status == 1) { if (sendResult.status == 1) {
this.redisClient.setWithEx(shaStr, 1, setCacheEx); this.redisClient.setWithEx(shaStr, 1, setCacheEx);
......
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