|  | @@ -24,58 +24,6 @@ module.exports = app => {
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          /**
 | 
	
		
			
				|  |  | -         * 校验规则
 | 
	
		
			
				|  |  | -         *
 | 
	
		
			
				|  |  | -         * @return {Object} - 返回校验规则
 | 
	
		
			
				|  |  | -         */
 | 
	
		
			
				|  |  | -        rule() {
 | 
	
		
			
				|  |  | -            return {
 | 
	
		
			
				|  |  | -                maintain_time: { type: 'string', required: true, allowEmpty: false },
 | 
	
		
			
				|  |  | -                duration: { type: 'string', required: true, allowEmpty: false, min: 1 },
 | 
	
		
			
				|  |  | -                msg: { type: 'string', required: false, allowEmpty: true },
 | 
	
		
			
				|  |  | -            };
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        async stop(id = 1) {
 | 
	
		
			
				|  |  | -            const data = {};
 | 
	
		
			
				|  |  | -            data.id = id;
 | 
	
		
			
				|  |  | -            data.status = maintainConst.status.notset;
 | 
	
		
			
				|  |  | -            data.maintain_time = '';
 | 
	
		
			
				|  |  | -            const operate = await this.db.update(this.tableName, data);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            return operate.affectedRows > 0;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        /**
 | 
	
		
			
				|  |  | -         * 保存数据
 | 
	
		
			
				|  |  | -         *
 | 
	
		
			
				|  |  | -         * @param {Object} data - post过来的数据
 | 
	
		
			
				|  |  | -         * @param {Number} id - 用于判断修改还是新增的id
 | 
	
		
			
				|  |  | -         * @return {boolean} - 操作结果
 | 
	
		
			
				|  |  | -         */
 | 
	
		
			
				|  |  | -        async save(data = {}, id = 1) {
 | 
	
		
			
				|  |  | -            delete data._csrf;
 | 
	
		
			
				|  |  | -            data.maintain_time = Date.parse(data.maintain_time);
 | 
	
		
			
				|  |  | -            let status = maintainConst.status.notset;
 | 
	
		
			
				|  |  | -            const thisTime = new Date().getTime();
 | 
	
		
			
				|  |  | -            if (data.maintain_time) {
 | 
	
		
			
				|  |  | -                const endtime = data.maintain_time + await this.durationAddTime(data.duration);
 | 
	
		
			
				|  |  | -                if (endtime <= thisTime) {
 | 
	
		
			
				|  |  | -                    throw '维护时间必须大于或等于当前时间';
 | 
	
		
			
				|  |  | -                } else if (data.maintain_time > thisTime) {
 | 
	
		
			
				|  |  | -                    status = maintainConst.status.unstart;
 | 
	
		
			
				|  |  | -                } else if (data.maintain_time <= thisTime && endtime > thisTime) {
 | 
	
		
			
				|  |  | -                    status = maintainConst.status.ongoing;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            data.id = id;
 | 
	
		
			
				|  |  | -            data.status = status;
 | 
	
		
			
				|  |  | -            const operate = await this.db.update(this.tableName, data);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            return operate.affectedRows > 0;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        /**
 | 
	
		
			
				|  |  |           * 同步系统设置消息
 | 
	
		
			
				|  |  |           * @param id
 | 
	
		
			
				|  |  |           * @returns {Promise<boolean>}
 | 
	
	
		
			
				|  | @@ -88,9 +36,9 @@ module.exports = app => {
 | 
	
		
			
				|  |  |                  const thisTime = new Date().getTime();
 | 
	
		
			
				|  |  |                  if (maintainData.maintain_time !== '') {
 | 
	
		
			
				|  |  |                      maintainData.maintain_time = parseFloat(maintainData.maintain_time);
 | 
	
		
			
				|  |  | -                    if (maintainData.status === maintainConst.status.unstart && maintainData.maintain_time <= thisTime && maintainData.duration === maintainConst.duration.forever) {
 | 
	
		
			
				|  |  | +                    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 && maintainData.duration !== maintainConst.duration.forever) {
 | 
	
		
			
				|  |  | +                    } 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;
 | 
	
	
		
			
				|  | @@ -110,6 +58,11 @@ module.exports = app => {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  const operate = this.db.update(this.tableName, data);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +                if (status === maintainConst.status.ongoing) {
 | 
	
		
			
				|  |  | +                    this.ctx.session = null;
 | 
	
		
			
				|  |  | +                    this.ctx.redirect('/');
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  result = operate.affectedRows > 0;
 | 
	
		
			
				|  |  |              } catch (error) {
 | 
	
		
			
				|  |  |                  console.log(error);
 |