'use strict'; /** * 审批信息重新发送定时任务 * * @author CaiAoLin * @date 2017/10/26 * @version */ const Subscription = require('egg').Subscription; const projectSettingConst = require('../const/project_setting'); const smsTypeConst = require('../const/sms_type'); class ShenpiAgain extends Subscription { static get schedule() { return { interval: '1m', type: 'all', env: ['prod'], }; } async subscribe() { // const ctx = this.ctx; // console.log('hello'); // const list = await ctx.service.noticeAgain.getAllDataByCondition({ where: { status: 1 } }); // if (list.length === 0) return; // const pidList = ctx.helper._.uniq(ctx.helper._.map(list, 'pid')); // const projectsNoticeSetting = await ctx.service.project.getAllDataByCondition({ // columns: ['id', 'notice_setting'], // where: { id: pidList }, // }); // const uidList = ctx.helper._.uniq(ctx.helper._.map(list, 'uid')); // const usersNoticeSetting = await ctx.service.projectAccount.getAllDataByCondition({ // columns: ['id', 'project_id', 'notice_again'], // where: { id: uidList }, // }); // const tidList = ctx.helper._.uniq(ctx.helper._.map(list, 'tid')); // const tenderList = await ctx.service.tender.getAllDataByCondition({ columns: ['id', 'name'], where: { id: tidList } }); // const tenderInfoList = await ctx.service.tenderInfo.getAllDataByCondition({ columns: ['id', 'tid', 'deal_info'], where: { tid: tidList } }); // const updateData = []; // const deleteData = []; // const sendData = []; // for (const i of list) { // if (i.times > 10) continue;// 发超过10次就不发了吧 // const uinfo = ctx.helper._.find(usersNoticeSetting, { id: i.uid }); // const notice_again = uinfo.notice_again ? JSON.parse(uinfo.notice_again) : null; // if (!notice_again) continue; // const pinfo = ctx.helper._.find(projectsNoticeSetting, { id: i.pid }); // 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(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); // if (!spInfo) { // deleteData.push(i.id); // continue; // } else { // const status = spInfo.status || spInfo.audit_status; // if (status !== 2) { // updateData.push({ // id: i.id, // status: 2, // }); // continue; // } // } // // 重发信息并记录到更新表里数据 // const t = ctx.helper._.find(tenderList, { id: i.tid }); // const tenderInfo = ctx.helper._.find(tenderInfoList, { tid: i.tid }); // const newTenderInfo = { // deal_info: { buildName: '' }, // }; // 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, { protocol: i.origin_url.protocol, host: i.origin_url.host }); // updateData.push({ // id: i.id, // times: i.times + 1, // last_time: ctx.helper.dateTran(new Date(), 'YYYY-MM-DD HH:mm'), // }); // sendData.push({ // uid: i.uid, // sms_type: i.sms_type, // sp_type: smsTypeConst.judge.approval.toString(), // template: i.template, // wx_data: JSON.parse(i.wx_data), // tender, // origin_url: i.origin_url, // }); // } // } // if (updateData.length > 0) await ctx.service.noticeAgain.defaultUpdateRows(updateData); // if (deleteData.length > 0) await ctx.service.noticeAgain.deleteById(deleteData); // if (sendData.length > 0) { // for (const s of sendData) { // await ctx.helper.sendWechat(s.uid, s.sms_type, s.sp_type, s.template, s.wx_data, s.tender, { protocol: s.origin_url.protocol, host: s.origin_url.host }); // } // } } } module.exports = ShenpiAgain;