| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /**
- * Created by gxl.gao on 2017/10/24.
- */
- const baseController = require('controllers/base.js');
- const statisMockModel = require('./statisMockModel.js');
- const groupModel = require('models/group.js');
- const projectModel = require('models/project.js');
- const interfaceModel = require('models/interface.js');
- const interfaceCaseModel = require('models/interfaceCase.js');
- const yapi = require('yapi.js');
- const config = require('./index.js');
- const commons = require('./util.js');
- const os = require('os');
- let cpu = require('cpu-load');
- class statisMockController extends baseController {
- constructor(ctx) {
- super(ctx);
- this.Model = yapi.getInst(statisMockModel);
- this.groupModel = yapi.getInst(groupModel);
- this.projectModel = yapi.getInst(projectModel);
- this.interfaceModel = yapi.getInst(interfaceModel);
- this.interfaceCaseModel = yapi.getInst(interfaceCaseModel);
- }
- /**
- * 获取所有统计总数
- * @interface statismock/count
- * @method get
- * @category statistics
- * @foldnumber 10
- * @returns {Object}
- */
- async getStatisCount(ctx) {
- try {
- let groupCount = await this.groupModel.getGroupListCount();
- let projectCount = await this.projectModel.getProjectListCount();
- let interfaceCount = await this.interfaceModel.getInterfaceListCount();
- let interfaceCaseCount = await this.interfaceCaseModel.getInterfaceCaseListCount();
- return (ctx.body = yapi.commons.resReturn({
- groupCount,
- projectCount,
- interfaceCount,
- interfaceCaseCount
- }));
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 400, err.message);
- }
- }
- /**
- * 获取所有mock接口数据信息
- * @interface statismock/get
- * @method get
- * @category statistics
- * @foldnumber 10
- * @returns {Object}
- */
- async getMockDateList(ctx) {
- try {
- let mockCount = await this.Model.getTotalCount();
- let mockDateList = [];
- if (!this.getRole() === 'admin') {
- return (ctx.body = yapi.commons.resReturn(null, 405, '没有权限'));
- }
- // 默认时间是30 天为一周期
- let dateInterval = commons.getDateRange();
- mockDateList = await this.Model.getDayCount(dateInterval);
- return (ctx.body = yapi.commons.resReturn({ mockCount, mockDateList }));
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 400, err.message);
- }
- }
- /**
- * 获取邮箱状态信息
- * @interface statismock/getSystemStatus
- * @method get
- * @category statistics
- * @foldnumber 10
- * @returns {Object}
- */
- async getSystemStatus(ctx) {
- try {
- let mail = '';
- if (yapi.WEBCONFIG.mail && yapi.WEBCONFIG.mail.enable) {
- mail = await this.checkEmail();
- // return ctx.body = yapi.commons.resReturn(result);
- } else {
- mail = '未配置';
- }
- let load = (await this.cupLoad()) * 100;
- let systemName = os.platform();
- let totalmem = commons.transformBytesToGB(os.totalmem());
- let freemem = commons.transformBytesToGB(os.freemem());
- let uptime = commons.transformSecondsToDay(os.uptime());
- let data = {
- mail,
- systemName,
- totalmem,
- freemem,
- uptime,
- load: load.toFixed(2)
- };
- return (ctx.body = yapi.commons.resReturn(data));
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 400, err.message);
- }
- }
- checkEmail() {
- return new Promise((resolve, reject) => {
- let result = {};
- yapi.mail.verify(error => {
- if (error) {
- result = '不可用';
- resolve(result);
- } else {
- result = '可用';
- resolve(result);
- }
- });
- });
- }
- async groupDataStatis(ctx) {
- try {
- let groupData = await this.groupModel.list();
- let result = [];
- for (let i = 0; i < groupData.length; i++) {
- let group = groupData[i];
- let groupId = group._id;
- const data = {
- name: group.group_name,
- interface: 0,
- mock: 0,
- project: 0
- };
- result.push(data);
- let projectCount = await this.projectModel.listCount(groupId);
- let projectData = await this.projectModel.list(groupId);
- let interfaceCount = 0;
- for (let j = 0; j < projectData.length; j++) {
- let project = projectData[j];
- interfaceCount += await this.interfaceModel.listCount({
- project_id: project._id
- });
- }
- let mockCount = await this.Model.countByGroupId(groupId);
- data.interface = interfaceCount;
- data.project = projectCount;
- data.mock = mockCount;
- }
- return (ctx.body = yapi.commons.resReturn(result));
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 400, err.message);
- }
- }
- cupLoad() {
- return new Promise((resolve, reject) => {
- cpu(1000, function(load) {
- resolve(load);
- });
- });
- }
- }
- module.exports = statisMockController;
|