mirror of
https://github.com/YMFE/yapi.git
synced 2024-12-21 05:19:42 +08:00
155 lines
4.4 KiB
JavaScript
155 lines
4.4 KiB
JavaScript
import yapi from '../yapi.js';
|
||
import baseController from './base.js';
|
||
import followModel from '../models/follow';
|
||
|
||
class followController extends baseController {
|
||
constructor(ctx) {
|
||
super(ctx);
|
||
this.Model = yapi.getInst(followModel);
|
||
// try{
|
||
// var res = this.Model.save({
|
||
// uid: 107,
|
||
// projectid: 221,
|
||
// projectname: 'Flight',
|
||
// icon: 'code'
|
||
// });
|
||
// // var res = this.Model.del(107);
|
||
// ctx.body = yapi.commons.resReturn(null, 200,res);
|
||
// }catch(err){
|
||
// ctx.body = yapi.commons.resReturn(null, 402, err.message);
|
||
// }
|
||
|
||
|
||
}
|
||
|
||
/**
|
||
* 获取关注项目列表
|
||
* @interface /follow/list
|
||
* @method GET
|
||
* @category follow
|
||
* @foldnumber 10
|
||
* @param {Number} uid 用户id, 不能为空
|
||
* @param {Number} [page] 分页页码
|
||
* @param {Number} [limit] 分页大小
|
||
* @returns {Object}
|
||
* @example /follow/list
|
||
*/
|
||
|
||
async list(ctx) {
|
||
let uid = ctx.request.query.uid,
|
||
page = ctx.request.query.page || 1,
|
||
limit = ctx.request.query.limit || 10;
|
||
|
||
if (!uid) {
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '用户id不能为空');
|
||
}
|
||
|
||
try {
|
||
let result = await this.Model.listWithPaging(uid, page, limit);
|
||
let count = await this.Model.listCount(uid);
|
||
|
||
ctx.body = yapi.commons.resReturn({
|
||
total: Math.ceil(count / limit),
|
||
list: result
|
||
});
|
||
} catch (err) {
|
||
ctx.body = yapi.commons.resReturn(null, 402, err.message);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 取消关注
|
||
* @interface /follow/del
|
||
* @method POST
|
||
* @category follow
|
||
* @foldnumber 10
|
||
* @param {Number} id 关注id
|
||
* @returns {Object}
|
||
* @example /follow/del
|
||
*/
|
||
|
||
async del(ctx) {
|
||
let params = ctx.request.body;
|
||
|
||
if(params.followid){
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '关注id不能为空');
|
||
}
|
||
|
||
try {
|
||
let result = await this.Model.del(params.id);
|
||
ctx.body = yapi.commons.resReturn(result);
|
||
} catch (e) {
|
||
ctx.body = yapi.commons.resReturn(null, 402, e.message);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 添加关注
|
||
* @interface /follow/add
|
||
* @method GET
|
||
* @category follow
|
||
* @foldnumber 10
|
||
* @param {Number} uid 用户id
|
||
* @param {Number} projectid 项目id
|
||
* @param {String} projectname 项目名
|
||
* @param {String} icon 项目icon
|
||
* @returns {Object}
|
||
* @example /follow/add
|
||
*/
|
||
|
||
async add(ctx) {
|
||
let params = ctx.request.body;
|
||
params = yapi.commons.handleParams(params, {
|
||
uid: 'number',
|
||
projectid: 'number',
|
||
projectname: 'string',
|
||
icon: 'string',
|
||
color: 'string'
|
||
});
|
||
|
||
if (!params.uid) {
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '用户id不为空');
|
||
}
|
||
|
||
if (!params.projectid) {
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '项目id不能为空');
|
||
}
|
||
|
||
let checkRepeat = await this.Model.checkProjectRepeat(params.uid,params.projectid);
|
||
if (checkRepeat) {
|
||
return ctx.body = yapi.commons.resReturn(null, 401, '项目已关注');
|
||
}
|
||
|
||
if (!params.projectname) {
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '项目名不能为空');
|
||
}
|
||
if (!params.icon) {
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '项目图标标志不能为空');
|
||
}
|
||
if (!params.color) {
|
||
return ctx.body = yapi.commons.resReturn(null, 400, '项目颜色不能为空');
|
||
}
|
||
|
||
let data = {
|
||
uid: params.uid,
|
||
projectid: params.projectid,
|
||
projectname: params.projectname,
|
||
icon: params.icon,
|
||
color: params.color
|
||
|
||
};
|
||
|
||
try {
|
||
let result = await this.Model.save(data);
|
||
result = yapi.commons.fieldSelect(result, ['_id', 'uid', 'projectid', 'projectname', 'icon', 'color']);
|
||
ctx.body = yapi.commons.resReturn(result);
|
||
} catch (e) {
|
||
ctx.body = yapi.commons.resReturn(null, 402, e.message);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
module.exports = followController;
|