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;
- };
|