| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- const logModel = require('../models/log.js');
- const yapi = require('../yapi.js');
- const baseController = require('./base.js');
- const groupModel = require('../models/group');
- const projectModel = require('../models/project');
- const interfaceModel = require('../models/interface');
- class logController extends baseController {
- constructor(ctx) {
- super(ctx);
- this.Model = yapi.getInst(logModel);
- this.groupModel = yapi.getInst(groupModel);
- this.projectModel = yapi.getInst(projectModel);
- this.interfaceModel = yapi.getInst(interfaceModel);
- this.schemaMap = {
- listByUpdate: {
- '*type': 'string',
- '*typeid': 'number',
- apis: [
- {
- method: 'string',
- path: 'string'
- }
- ]
- }
- };
- }
- /**
- * 获取动态列表
- * @interface /log/list
- * @method GET
- * @category log
- * @foldnumber 10
- * @param {Number} typeid 动态类型id, 不能为空
- * @param {Number} [page] 分页页码
- * @param {Number} [limit] 分页大小
- * @returns {Object}
- * @example /log/list
- */
- async list(ctx) {
- let typeid = ctx.request.query.typeid,
- page = ctx.request.query.page || 1,
- limit = ctx.request.query.limit || 10,
- type = ctx.request.query.type,
- selectValue = ctx.request.query.selectValue;
- if (!typeid) {
- return (ctx.body = yapi.commons.resReturn(null, 400, 'typeid不能为空'));
- }
- if (!type) {
- return (ctx.body = yapi.commons.resReturn(null, 400, 'type不能为空'));
- }
- try {
- if (type === 'group') {
- let projectList = await this.projectModel.list(typeid);
- let projectIds = [],
- projectDatas = {};
- for (let i in projectList) {
- projectDatas[projectList[i]._id] = projectList[i];
- projectIds[i] = projectList[i]._id;
- }
- let projectLogList = await this.Model.listWithPagingByGroup(
- typeid,
- projectIds,
- page,
- limit
- );
- projectLogList.forEach((item, index) => {
- item = item.toObject();
- if (item.type === 'project') {
- item.content =
- `在 <a href="/project/${item.typeid}">${projectDatas[item.typeid].name}</a> 项目: ` +
- item.content;
- }
- projectLogList[index] = item;
- });
- let total = await this.Model.listCountByGroup(typeid, projectIds);
- ctx.body = yapi.commons.resReturn({
- list: projectLogList,
- total: Math.ceil(total / limit)
- });
- } else if (type === "project") {
- let result = await this.Model.listWithPaging(typeid, type, page, limit, selectValue);
- let count = await this.Model.listCount(typeid, type, selectValue);
- ctx.body = yapi.commons.resReturn({
- total: Math.ceil(count / limit),
- list: result
- });
- }
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 402, err.message);
- }
- }
- /**
- * 获取特定cat_id下最新修改的动态信息
- * @interface /log/list_by_update
- * @method post
- * @category log
- * @foldnumber 10
- * @param {Number} typeid 动态类型id, 不能为空
- * @returns {Object}
- * @example /log/list
- */
- async listByUpdate(ctx) {
- let params = ctx.params;
- try {
- let { typeid, type, apis } = params;
- let list = [];
- let projectDatas = await this.projectModel.getBaseInfo(typeid, 'basepath');
- let basePath = projectDatas.toObject().basepath;
- for (let i = 0; i < apis.length; i++) {
- let api = apis[i];
- if (basePath) {
- api.path = api.path.indexOf(basePath) === 0 ? api.path.substr(basePath.length) : api.path;
- }
- let interfaceIdList = await this.interfaceModel.getByPath(
- typeid,
- api.path,
- api.method,
- '_id'
- );
- for (let j = 0; j < interfaceIdList.length; j++) {
- let interfaceId = interfaceIdList[j];
- let id = interfaceId.id;
- let result = await this.Model.listWithCatid(typeid, type, id);
- list = list.concat(result);
- }
- }
- // let result = await this.Model.listWithCatid(typeid, type, catId);
- ctx.body = yapi.commons.resReturn(list);
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 402, err.message);
- }
- }
- }
- module.exports = logController;
|