| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- const yapi = require('../yapi.js');
- const baseController = require('./base.js');
- const followModel = require('../models/follow');
- const projectModel = require('../models/project');
- class followController extends baseController {
- constructor(ctx) {
- super(ctx);
- this.Model = yapi.getInst(followModel);
- this.projectModel = yapi.getInst(projectModel);
- }
- /**
- * 获取关注项目列表
- * @interface /follow/list
- * @method GET
- * @category follow
- * @foldnumber 10
- * @param {Number} [page] 分页页码
- * @param {Number} [limit] 分页大小
- * @returns {Object}
- * @example /follow/list
- */
- async list(ctx) {
- let uid = this.getUid();
- // 关注列表暂时不分页 page & limit 为分页配置
- // 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.list(uid);
- ctx.body = yapi.commons.resReturn({
- list: result
- });
- } catch (err) {
- ctx.body = yapi.commons.resReturn(null, 402, err.message);
- }
- }
- /**
- * 取消关注
- * @interface /follow/del
- * @method POST
- * @category follow
- * @foldnumber 10
- * @param {Number} projectid
- * @returns {Object}
- * @example /follow/del
- */
- async del(ctx) {
- let params = ctx.request.body,
- uid = this.getUid();
- if (!params.projectid) {
- return (ctx.body = yapi.commons.resReturn(null, 400, '项目id不能为空'));
- }
- let checkRepeat = await this.Model.checkProjectRepeat(uid, params.projectid);
- if (checkRepeat == 0) {
- return (ctx.body = yapi.commons.resReturn(null, 401, '项目未关注'));
- }
- try {
- let result = await this.Model.del(params.projectid, this.getUid());
- 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} 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, {
- projectid: 'number'
- });
- let uid = this.getUid();
- if (!params.projectid) {
- return (ctx.body = yapi.commons.resReturn(null, 400, '项目id不能为空'));
- }
- let checkRepeat = await this.Model.checkProjectRepeat(uid, params.projectid);
- if (checkRepeat) {
- return (ctx.body = yapi.commons.resReturn(null, 401, '项目已关注'));
- }
- try {
- let project = await this.projectModel.get(params.projectid);
- let data = {
- uid: uid,
- projectid: params.projectid,
- projectname: project.name,
- icon: project.icon,
- color: project.color
- };
- 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;
|