| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- 'use strict';
 
- /**
 
-  * 系统维护数据模型
 
-  *
 
-  * @author CaiAoLin
 
-  * @date 2017/10/25
 
-  * @version
 
-  */
 
- const maintainConst = require('../const/maintain');
 
- module.exports = app => {
 
-     class Maintain extends app.BaseService {
 
-         /**
 
-          * 构造函数
 
-          *
 
-          * @param {Object} ctx - egg全局变量
 
-          * @return {void}
 
-          */
 
-         constructor(ctx) {
 
-             super(ctx);
 
-             this.tableName = 'maintain';
 
-         }
 
-         /**
 
-          * 同步系统设置消息
 
-          * @param id
 
-          * @returns {Promise<boolean>}
 
-          */
 
-         async syncMaintainData(id = 1) {
 
-             let result = false;
 
-             try {
 
-                 const maintainData = await this.getDataById(id);
 
-                 let status = maintainConst.status.notset;
 
-                 const thisTime = new Date().getTime();
 
-                 if (maintainData.maintain_time !== '') {
 
-                     maintainData.maintain_time = parseFloat(maintainData.maintain_time);
 
-                     if (maintainData.status !== maintainConst.status.notset && maintainData.maintain_time <= thisTime && maintainData.duration === maintainConst.duration.forever) {
 
-                         status = maintainConst.status.ongoing;
 
-                     } else if (maintainData.status !== maintainConst.status.notset) {
 
-                         const mttime = maintainData.maintain_time + await this.durationAddTime(maintainData.duration);
 
-                         if (maintainData.maintain_time > thisTime) {
 
-                             status = maintainConst.status.unstart;
 
-                         } else if (maintainData.maintain_time <= thisTime && mttime > thisTime) {
 
-                             status = maintainConst.status.ongoing;
 
-                         }
 
-                     }
 
-                 }
 
-                 if (maintainData.status === status) {
 
-                     if (status === maintainConst.status.ongoing && this.ctx.session !== null) {
 
-                         this.ctx.session = null;
 
-                         throw '系统维护中~';
 
-                     }
 
-                     return true;
 
-                 }
 
-                 const data = {};
 
-                 data.id = id;
 
-                 data.status = status;
 
-                 if (status === maintainConst.status.notset) {
 
-                     data.maintain_time = '';
 
-                 }
 
-                 const operate = this.db.update(this.tableName, data);
 
-                 if (status === maintainConst.status.ongoing && this.ctx.session !== null) {
 
-                     this.ctx.session = null;
 
-                     throw '系统维护中~';
 
-                 }
 
-                 result = operate.affectedRows > 0;
 
-             } catch (error) {
 
-                 console.log(error);
 
-                 result = false;
 
-             }
 
-             return result;
 
-         }
 
-         async durationAddTime(duration) {
 
-             const d = parseInt(duration);
 
-             let time = 0;
 
-             if (d === maintainConst.duration.min15) {
 
-                 time = 60 * 15 * 1000;
 
-             } else if (d === maintainConst.duration.min30) {
 
-                 time = 60 * 30 * 1000;
 
-             } else if (d === maintainConst.duration.hour1) {
 
-                 time = 3600 * 1000;
 
-             } else if (d === maintainConst.duration.hour2) {
 
-                 time = 3600 * 2 * 1000;
 
-             }
 
-             return time;
 
-         }
 
-     }
 
-     return Maintain;
 
- };
 
 
  |