Selaa lähdekoodia

重新发送bug修复

ellisran 1 vuosi sitten
vanhempi
commit
854a877eee
5 muutettua tiedostoa jossa 28 lisäystä ja 21 poistoa
  1. 4 3
      app/extend/helper.js
  2. 13 13
      app/lib/wechat.js
  3. 3 2
      app/schedule/shenpi_again.js
  4. 4 0
      app/service/notice_again.js
  5. 4 3
      sql/update.sql

+ 4 - 3
app/extend/helper.js

@@ -1121,7 +1121,7 @@ module.exports = {
     },
 
     // 企业微信和公众号微信通知共用
-    async sendWechat(userId, type, judge, template, data = {}, tender = this.ctx.tender) {
+    async sendWechat(userId, type, judge, template, data = {}, tender = this.ctx.tender, ctx = this.ctx) {
         const wechats = [];
         const qywxs = {};
         if (!userId || (userId instanceof Array && userId.length === 0)) return;
@@ -1148,8 +1148,9 @@ module.exports = {
                 tenderName,
             };
             const postParam = Object.assign(param, data);
-            if (wechats.length > 0) wx.Send(wechats, template, postParam);
-            if (!_.isEmpty(qywxs)) wx.Send4Work(qywxs, template, postParam);
+            const originUrl = ctx.protocol + '://' + ctx.host;
+            if (wechats.length > 0) wx.Send(wechats, template, postParam, originUrl);
+            if (!_.isEmpty(qywxs)) wx.Send4Work(qywxs, template, postParam, originUrl);
         }
     },
 

+ 13 - 13
app/lib/wechat.js

@@ -33,7 +33,7 @@ class WX {
      * @param {Object} data - 一些模板展示数据
      * @return {Boolean} - 发送结果
      */
-    async Send(wx_openid, template, data) {
+    async Send(wx_openid, template, data, origin_url) {
         let flag = false;
         try {
             // const templateId = template;
@@ -47,7 +47,7 @@ class WX {
                 switch (template) {
                     case wxConst.template.stage :
                         templateId = wxConst.templateId.stage;
-                        url = this.ctx.protocol + '://' + this.ctx.host + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
+                        url = origin_url + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
                         msgData = {
                             first: {
                                 value: '您好,本期计量' + data.tips,
@@ -71,7 +71,7 @@ class WX {
                         break;
                     case wxConst.template.change:
                         templateId = wxConst.templateId.change;
-                        url = data.wap_url ? this.ctx.protocol + '://' + this.ctx.host + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url : '';
+                        url = data.wap_url ? origin_url + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url : '';
                         remark = data.status === wxConst.status.check ? (data.type && _.indexOf(['apply', 'project'], data.type) !== -1 ? '微信暂无法在线审批' : '微信可快速审批,如需进行详细审批') :
                             (data.status === wxConst.status.success ? '审批已通过,查看审批结果' :
                                 (data.status === wxConst.status.back ? '审批被退回,查看退回结果' : '审批已终止,查看终止结果'));
@@ -117,7 +117,7 @@ class WX {
                         break;
                     case wxConst.template.revise:
                         templateId = wxConst.templateId.revise;
-                        url = this.ctx.protocol + '://' + this.ctx.host + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
+                        url = origin_url + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
                         remark = data.status === wxConst.status.check ? '微信可快速审批,如需进行详细审批' :
                             (data.status === wxConst.status.success ? '审批已通过,查看审批结果' :
                                 (data.status === wxConst.status.back ? '审批被退回,查看退回结果' : '审批已上报,查看审批结果'));
@@ -141,7 +141,7 @@ class WX {
                         break;
                     case wxConst.template.material:
                         templateId = wxConst.templateId.material;
-                        // url = this.ctx.protocol + '://' + this.ctx.host + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
+                        // url = origin_url + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
                         remark = data.status === wxConst.status.check ? '微信暂无法在线审批' :
                             (data.status === wxConst.status.success ? '审批已通过,查看审批结果' : '审批被退回,查看退回结果');
                         msgData = {
@@ -170,7 +170,7 @@ class WX {
                         break;
                     case wxConst.template.advance:
                         templateId = wxConst.templateId.advance;
-                        url = this.ctx.protocol + '://' + this.ctx.host + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
+                        url = origin_url + '/wx/url2wap?project=' + data.code + '&url=' + sck + data.wap_url;
                         remark = data.status === wxConst.status.check ? '微信可快速审批,如需进行详细审批' :
                             (data.status === wxConst.status.success ? '审批已通过,查看审批结果' : '审批被退回,查看退回结果');
                         msgData = {
@@ -217,7 +217,7 @@ class WX {
      * @param {Object} data - 一些模板展示数据
      * @return {Boolean} - 发送结果
      */
-    async Send4Work(corps, template, data) {
+    async Send4Work(corps, template, data, origin_url) {
         let flag = false;
         try {
             // const sck = 'https://scn.ink/';
@@ -261,7 +261,7 @@ class WX {
 <div class="normal">计量期: 第${data.qi}期</div>
 <div class="normal">状态: ${data.status}</div>
 <div class="normal">备注: ${remark},请登录PC端系统。</div>`;
-                        url = this.ctx.protocol + '://' + this.ctx.host + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url;
+                        url = origin_url + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url;
                         break;
                     case wxConst.template.change:
                         title = '工程变更申请审批通知';
@@ -292,7 +292,7 @@ class WX {
 <div class="normal">标段: ${data.tenderName}</div>
 <div class="normal">变更名称: ${data.c_name}</div>
 <div class="normal">备注: ${remark},请登录PC端系统。</div>`;
-                        url = data.wap_url ? this.ctx.protocol + '://' + this.ctx.host + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url : '';
+                        url = data.wap_url ? origin_url + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url : '';
                         btntxt = '详情';
                         break;
                     case wxConst.template.ledger:
@@ -323,7 +323,7 @@ class WX {
 <div class="normal">标段: ${data.tenderName}</div>
 <div class="normal">上报时间: ${moment(new Date(data.begin_time)).format('YYYY-MM-DD')}</div>
 <div class="normal">备注: ${remark},请登录PC端系统。</div>`;
-                        url = this.ctx.protocol + '://' + this.ctx.host + `/wx/tips?msg=${remark},请登录PC端系统。`;
+                        url = origin_url + `/wx/tips?msg=${remark},请登录PC端系统。`;
                         break;
                     case wxConst.template.revise:
                         title = '台帐修订申请审批通知';
@@ -354,7 +354,7 @@ class WX {
 <div class="normal">标段: ${data.tenderName}</div>
 <div class="normal">上报时间: ${moment(new Date(data.begin_time)).format('YYYY-MM-DD')}</div>
 <div class="normal">备注: ${remark},请登录PC端系统。</div>`;
-                        url = this.ctx.protocol + '://' + this.ctx.host + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url;
+                        url = origin_url + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url;
                         btntxt = '详情';
                         break;
                     case wxConst.template.material:
@@ -391,7 +391,7 @@ class WX {
 <div class="normal">价差费用: ${data.m_tp ? data.m_tp.toString() : null}</div>
 <div class="normal">价差费用含税: ${data.hs_m_tp ? data.hs_m_tp.toString() : null}</div>
 <div class="normal">备注: ${remark},请登录PC端系统。</div>`;
-                        url = this.ctx.protocol + '://' + this.ctx.host + `/wx/tips?msg=${remark},请登录PC端系统。`;
+                        url = origin_url + `/wx/tips?msg=${remark},请登录PC端系统。`;
                         break;
                     case wxConst.template.advance:
                         title = '预付款申请审批通知';
@@ -426,7 +426,7 @@ class WX {
 <div class="normal">期数: ${data.qi}</div>
 <div class="normal">本期支付金额: ${data.tp ? data.tp.toString() : null}</div>
 <div class="normal">备注: ${remark},请登录PC端系统。</div>`;
-                        url = this.ctx.protocol + '://' + this.ctx.host + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url;
+                        url = origin_url + `/wx/work/${c}/url2wap?project=` + data.code + '&url=' + sck + data.wap_url;
                         btntxt = '详情';
                         break;
                     default:

+ 3 - 2
app/schedule/shenpi_again.js

@@ -47,7 +47,7 @@ class ShenpiAgain extends Subscription {
             const notice_setting = pinfo.notice_setting ? JSON.parse(pinfo.notice_setting) : ctx.helper._.cloneDeep(projectSettingConst.noticeSetting);
             const interval = notice_setting.mode === 'fixed' ? notice_setting.fixed : (i.times === 0 ? notice_setting.activity.first : (i.times === 1 ? notice_setting.activity.second : notice_setting.activity.later));
             const send_time = ctx.helper.calculateNextSendTime(i.last_time, interval, notice_setting.shield_times.start, notice_setting.shield_times.end);
-            console.log(new Date(), send_time);
+            console.log(i.id, new Date(), send_time);
             if (new Date() > send_time) {
                 // 判断是否已经sp_type的sp_id已经完成审批或者是否存在,如果已经审批或不存在则需要删除
                 const spInfo = await ctx.service.noticeAgain.getSpResult(i.table_name, i.sp_id);
@@ -73,11 +73,12 @@ class ShenpiAgain extends Subscription {
                 if (tenderInfo) {
                     newTenderInfo.deal_info = JSON.parse(tenderInfo.deal_info);
                 }
+                i.origin_url = JSON.parse(i.origin_url);
                 const tender = {
                     data: t,
                     info: newTenderInfo,
                 };
-                await ctx.helper.sendWechat(i.uid, i.sms_type, smsTypeConst.judge.approval.toString(), i.template, JSON.parse(i.wx_data), tender);
+                await ctx.helper.sendWechat(i.uid, i.sms_type, smsTypeConst.judge.approval.toString(), i.template, JSON.parse(i.wx_data), tender, { protocol: i.origin_url.protocol, host: i.origin_url.host });
                 updateData.push({
                     id: i.id,
                     times: i.times + 1,

+ 4 - 0
app/service/notice_again.js

@@ -39,6 +39,10 @@ module.exports = app => {
                 datas.times = 0;
                 datas.wx_data = JSON.stringify(datas.wx_data);
                 datas.sms_type = type;
+                datas.origin_url = JSON.stringify({
+                    host: this.ctx.host,
+                    protocol: this.ctx.protocol,
+                });
                 await transaction.insert(this.tableName, datas);
             }
         }

+ 4 - 3
sql/update.sql

@@ -20,6 +20,7 @@ CREATE TABLE `zh_notice_again`  (
   `sp_id` int NOT NULL COMMENT '审批类型对应审核表的id',
   `status` tinyint(2) NOT NULL DEFAULT 1 COMMENT '0为待执行,1为执行中,2为已审',
   `table_name` varchar(255) NOT NULL COMMENT '对应的审批表名称',
+  `origin_url` json NOT NULL COMMENT 'url信息',
   `sms_type` varchar(10) NOT NULL COMMENT '模版通知类型',
   `template` tinyint(2) NOT NULL COMMENT '对应的微信通知模板id',
   `wx_data` json NOT NULL COMMENT '微信通知的json',
@@ -35,13 +36,13 @@ ADD COLUMN `notice_again` json NULL DEFAULT NULL COMMENT '审批信息重新发
 ALTER TABLE `zh_project`
 ADD COLUMN `notice_setting` json NULL DEFAULT NULL COMMENT '重新发送通知设置';
 
-ALTER TABLE `calculation`.`zh_rpt_archive` 
+ALTER TABLE `calculation`.`zh_rpt_archive`
 ADD COLUMN `business_id` VARCHAR(45) NULL COMMENT '有其他业务情况,统一在这里标识(类uuid),要结合stage_id来看,如stage_id > 0,则是标段和期,< 0则是其他业务,如 -300 -> 变更令;-301 - 变更方案;-302 - 变更立项 -303 - 变更申请' AFTER `stage_id`,
 ADD COLUMN `tender_id` INT(11) NULL AFTER `business_id`,
 ADD INDEX `PRJ_STG_BZ` (`prj_id` ASC, `stage_id` ASC, `business_id` ASC);
 ;
 
-ALTER TABLE `calculation`.`zh_rpt_archive_encryption` 
+ALTER TABLE `calculation`.`zh_rpt_archive_encryption`
 ADD COLUMN `business_id` VARCHAR(45) NULL COMMENT '有其他业务情况,统一在这里标识(类uuid),要结合stage_id来看,如stage_id > 0,则是标段和期,< 0则是其他业务,如 -300 -> 变更令;-301 - 变更方案;-302 - 变更立项 -303 - 变更申请' AFTER `stage_id`,
 ADD COLUMN `tender_id` INT(11) NULL AFTER `business_id`,
 ADD INDEX `PRJ_STG_BZ` (`prj_id` ASC, `stage_id` ASC, `business_id` ASC);
@@ -53,7 +54,7 @@ ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage:
 ALTER TABLE `zh_rpt_archive`
 ADD COLUMN `business_type` varchar(30) NOT NULL DEFAULT 'stage' COMMENT 'stage: 变更令;budget: 动态决算,payment_safe: 支付审批-安全生产费,change: 变更令,change_plan: 变更方案,change_project: 变更立项,change_apply: 变更申请' AFTER `stage_id`;
 
-ALTER TABLE `calculation`.`zh_role_rpt_rel` 
+ALTER TABLE `calculation`.`zh_role_rpt_rel`
 ADD COLUMN `business_id` VARCHAR(45) NULL AFTER `sid`,
 ADD COLUMN `source_type` VARCHAR(45) NULL AFTER `business_id`,
 ADD INDEX `bz_idx` (`tender_id` ASC, `business_id` ASC);