mirror of
https://github.com/YMFE/yapi.git
synced 2025-03-07 14:16:52 +08:00
feat: 解决冲突
This commit is contained in:
commit
04580bcebc
@ -2,6 +2,7 @@ import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Icon } from 'antd';
|
||||
import './ErrMsg.scss';
|
||||
import { withRouter } from 'react-router';
|
||||
|
||||
/**
|
||||
* 错误信息提示
|
||||
@ -23,6 +24,7 @@ import './ErrMsg.scss';
|
||||
* @description 一般用于描述错误信息名称
|
||||
* @returns {object}
|
||||
*/
|
||||
@withRouter
|
||||
class ErrMsg extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@ -30,6 +32,7 @@ class ErrMsg extends Component {
|
||||
|
||||
static propTypes = {
|
||||
type: PropTypes.string,
|
||||
history: PropTypes.object,
|
||||
title: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
||||
desc: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
|
||||
opration: PropTypes.oneOfType([PropTypes.string, PropTypes.object])
|
||||
@ -39,6 +42,10 @@ class ErrMsg extends Component {
|
||||
let { type, title, desc, opration } = this.props;
|
||||
if (type) {
|
||||
switch (type) {
|
||||
case 'noFollow':
|
||||
title = '你还没有关注项目呢';
|
||||
desc = <span>先去 <a onClick={() => this.props.history.push('/group')}>“项目广场”</a> 逛逛吧, 那里可以添加关注。</span>;
|
||||
break;
|
||||
case 'noProject':
|
||||
title = '该分组还没有项目呢';
|
||||
desc = <span>请点击右上角 “<Icon type="plus-circle" />” 按钮新建项目</span>;
|
||||
|
@ -1,8 +1,8 @@
|
||||
.err-msg {
|
||||
text-align: center;
|
||||
font-size: .14rem;
|
||||
color: #999;
|
||||
line-height: 2;
|
||||
margin-bottom: .24rem;
|
||||
.icon {
|
||||
font-size: .6rem;
|
||||
margin-bottom: .08rem;
|
||||
|
@ -5,7 +5,7 @@ import { connect } from 'react-redux'
|
||||
import { delFollow } from '../../reducer/modules/follow';
|
||||
// import { Link } from 'react-router-dom';
|
||||
import PropTypes from 'prop-types';
|
||||
import { withRouter } from 'react-router'
|
||||
import { withRouter } from 'react-router';
|
||||
|
||||
@connect(
|
||||
() => {
|
||||
@ -51,13 +51,11 @@ class ProjectCard extends Component {
|
||||
// </Popconfirm>
|
||||
render() {
|
||||
const { projectData, isFollowed } = this.props;
|
||||
console.log(projectData);
|
||||
return (
|
||||
<div className="card-container">
|
||||
<Card bordered={false} className="m-card" onClick={() => this.props.history.push('/project/' + projectData._id)}>
|
||||
<Icon type="area-chart" className="ui-logo" />
|
||||
<h4 className="ui-title">{projectData.name || projectData.projectname}</h4>
|
||||
<p className="ui-desc">{projectData.desc || projectData.desc}</p>
|
||||
</Card>
|
||||
<div className="card-btns">
|
||||
<Tooltip placement="rightTop" title={isFollowed ? '取消关注' : '添加关注'}>
|
||||
|
@ -1,7 +1,7 @@
|
||||
@import '../../styles/mixin.scss';
|
||||
.card-container {
|
||||
position: relative;
|
||||
|
||||
user-select: none;
|
||||
transition: all .2s;
|
||||
.m-card, .card-btns {
|
||||
transform: translateY(0);
|
||||
@ -17,7 +17,7 @@
|
||||
transform: translateY(4px);
|
||||
}
|
||||
}
|
||||
// 按钮组
|
||||
// 卡片右上角按钮
|
||||
.card-btns {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
@ -25,7 +25,7 @@
|
||||
width: .48rem;
|
||||
height: .48rem;
|
||||
background: linear-gradient(225deg, #ccc, #ccc 50%, transparent 0);
|
||||
// 卡片右上角按钮
|
||||
border-top-right-radius: 4px;
|
||||
.icon {
|
||||
cursor: pointer;
|
||||
font-size: .16rem;
|
||||
@ -87,3 +87,19 @@
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.card-panel-s {
|
||||
.m-card {
|
||||
.ant-card-body {
|
||||
padding-top: .6rem;
|
||||
}
|
||||
.ui-logo {
|
||||
width: .6rem;
|
||||
height: .6rem;
|
||||
line-height: .6rem;
|
||||
transform: translate(-50%, -20%);
|
||||
font-size: .24rem;
|
||||
background-color: #2395f1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import { Row, Col } from 'antd';
|
||||
import { getFollowList } from '../../reducer/modules/follow';
|
||||
import Subnav from '../../components/Subnav/Subnav.js';
|
||||
import ProjectCard from '../../components/ProjectCard/ProjectCard.js';
|
||||
import ErrMsg from '../../components/ErrMsg/ErrMsg.js';
|
||||
|
||||
|
||||
@connect(
|
||||
@ -70,12 +71,12 @@ class Follows extends Component {
|
||||
}]}/>
|
||||
<div className="g-row">
|
||||
<Row gutter={24} className="follow-box card-panel">
|
||||
{data.map((item, index) => {
|
||||
{data.length ? data.map((item, index) => {
|
||||
return (
|
||||
<Col span={8} key={index}>
|
||||
<ProjectCard projectData={item} isFollowed={true} callbackResult={this.receiveRes} />
|
||||
</Col>);
|
||||
})}
|
||||
}): <ErrMsg type="noFollow"/>}
|
||||
</Row>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,10 +1,12 @@
|
||||
@import '../../../styles/mixin.scss';
|
||||
|
||||
.group-bar {
|
||||
box-shadow: 0 2px 4px 0 rgba(0,0,0,0.20);
|
||||
border-radius: 4px;
|
||||
background-color: #fff;
|
||||
min-height: 5rem;
|
||||
.curr-group {
|
||||
background: #34495E;
|
||||
background: $color-bg-dark;
|
||||
border-radius: 4px 4px 0 0;
|
||||
padding: 32px 24px;
|
||||
.curr-group-name {
|
||||
@ -16,7 +18,7 @@
|
||||
max-width: 150px;
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
|
||||
color: #fff;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
@ -103,11 +103,12 @@ class ProjectList extends Component {
|
||||
render() {
|
||||
const projectData = this.state.projectData;
|
||||
return (
|
||||
<div className="m-panel card-panel">
|
||||
<Row gutter={24}>
|
||||
<div className="m-panel card-panel card-panel-s">
|
||||
<Row gutter={16}>
|
||||
{projectData.length ? projectData.map((item, index) => {
|
||||
console.log(item);
|
||||
return (
|
||||
<Col span={12} key={index}>
|
||||
<Col span={8} key={index}>
|
||||
<ProjectCard projectData={item} />
|
||||
</Col>);
|
||||
}) : <ErrMsg type="noProject"/>}
|
||||
|
@ -6,20 +6,6 @@ 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);
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -28,7 +14,6 @@ class followController extends baseController {
|
||||
* @method GET
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} uid 用户id, 不能为空
|
||||
* @param {Number} [page] 分页页码
|
||||
* @param {Number} [limit] 分页大小
|
||||
* @returns {Object}
|
||||
@ -36,7 +21,7 @@ class followController extends baseController {
|
||||
*/
|
||||
|
||||
async list(ctx) {
|
||||
let uid = ctx.request.query.uid,
|
||||
let uid = this.getUid(),
|
||||
page = ctx.request.query.page || 1,
|
||||
limit = ctx.request.query.limit || 10;
|
||||
|
||||
@ -45,11 +30,9 @@ class followController extends baseController {
|
||||
}
|
||||
|
||||
try {
|
||||
let result = await this.Model.listWithPaging(uid, page, limit);
|
||||
let count = await this.Model.listCount(uid);
|
||||
let result = await this.Model.list(uid);
|
||||
|
||||
ctx.body = yapi.commons.resReturn({
|
||||
total: Math.ceil(count / limit),
|
||||
list: result
|
||||
});
|
||||
} catch (err) {
|
||||
@ -64,20 +47,26 @@ class followController extends baseController {
|
||||
* @method POST
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} id 关注id
|
||||
* @param {Number} projectid
|
||||
* @returns {Object}
|
||||
* @example /follow/del
|
||||
*/
|
||||
|
||||
async del(ctx) {
|
||||
let params = ctx.request.body;
|
||||
let params = ctx.request.body, uid = this.getUid();
|
||||
|
||||
if(params.followid){
|
||||
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(uid,params.projectid);
|
||||
|
||||
if (checkRepeat == 0) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 401, '项目未关注');
|
||||
}
|
||||
|
||||
try {
|
||||
let result = await this.Model.del(params.id);
|
||||
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);
|
||||
@ -90,7 +79,6 @@ class followController extends baseController {
|
||||
* @method GET
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} uid 用户id
|
||||
* @param {Number} projectid 项目id
|
||||
* @param {String} projectname 项目名
|
||||
* @param {String} icon 项目icon
|
||||
@ -101,22 +89,20 @@ class followController extends baseController {
|
||||
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不为空');
|
||||
}
|
||||
let uid = this.getUid()
|
||||
|
||||
if (!params.projectid) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 400, '项目id不能为空');
|
||||
}
|
||||
|
||||
let checkRepeat = await this.Model.checkProjectRepeat(params.uid,params.projectid);
|
||||
let checkRepeat = await this.Model.checkProjectRepeat(uid,params.projectid);
|
||||
|
||||
if (checkRepeat) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 401, '项目已关注');
|
||||
}
|
||||
@ -132,12 +118,11 @@ class followController extends baseController {
|
||||
}
|
||||
|
||||
let data = {
|
||||
uid: params.uid,
|
||||
uid: uid,
|
||||
projectid: params.projectid,
|
||||
projectname: params.projectname,
|
||||
icon: params.icon,
|
||||
color: params.color
|
||||
|
||||
};
|
||||
|
||||
try {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import projectModel from '../models/project.js';
|
||||
import yapi from '../yapi.js';
|
||||
import _ from "underscore"
|
||||
import baseController from './base.js';
|
||||
import interfaceModel from '../models/interface.js';
|
||||
import interfaceColModel from '../models/interfaceCol.js';
|
||||
@ -326,8 +327,18 @@ class projectController extends baseController {
|
||||
let auth =await this.checkAuth(group_id, 'group', 'edit')
|
||||
try {
|
||||
let result = await this.Model.list(group_id, auth);
|
||||
let follow = await this.followModel.list(this.getUid());
|
||||
let uids = [];
|
||||
result.forEach((item) => {
|
||||
result.forEach((item, index) => {
|
||||
result[index] = item.toObject();
|
||||
let f = _.find(follow, (fol)=>{
|
||||
return fol.projectid === item._id
|
||||
})
|
||||
if(f){
|
||||
result[index].follow = true;
|
||||
}else{
|
||||
result[index].follow = false;
|
||||
}
|
||||
if (uids.indexOf(item.uid) === -1) {
|
||||
uids.push(item.uid);
|
||||
}
|
||||
@ -395,7 +406,6 @@ class projectController extends baseController {
|
||||
*/
|
||||
async changeMemberRole(ctx){
|
||||
let params = ctx.request.body;
|
||||
console.log(params);
|
||||
let projectInst = yapi.getInst(projectModel);
|
||||
if (!params.member_uid) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 400, '项目成员uid不能为空');
|
||||
@ -450,26 +460,6 @@ class projectController extends baseController {
|
||||
* @returns {Object}
|
||||
* @example ./api/project/up.json
|
||||
*/
|
||||
async upSet(ctx){
|
||||
let id = ctx.request.body.id;
|
||||
let data = {};
|
||||
data.color = ctx.request.body.color;
|
||||
data.icon = ctx.request.body.icon;
|
||||
if(!id){
|
||||
return ctx.body = yapi.commons.resReturn(null, 405, '项目id不能为空');
|
||||
}
|
||||
try{
|
||||
let result = await this.Model.up(id, data);
|
||||
ctx.body = yapi.commons.resReturn(result);
|
||||
}catch(e){
|
||||
ctx.body = yapi.commons.resReturn(null, 402, e.message);
|
||||
}
|
||||
try{
|
||||
this.followModel.updateById(this.getUid(),id,data).then();
|
||||
}catch(e){
|
||||
yapi.commons.log(e, 'error'); // eslint-disable-line
|
||||
}
|
||||
}
|
||||
async up(ctx) {
|
||||
try {
|
||||
let id = ctx.request.body.id;
|
||||
@ -536,7 +526,7 @@ class projectController extends baseController {
|
||||
// }catch(e){
|
||||
// yapi.commons.log(e, 'error'); // eslint-disable-line
|
||||
// }
|
||||
|
||||
|
||||
let username = this.getUsername();
|
||||
yapi.commons.saveLog({
|
||||
content: `用户${username}更新了项目${projectData.name}`,
|
||||
@ -553,6 +543,38 @@ class projectController extends baseController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目头像
|
||||
* @interface /project/upset
|
||||
* @method POST
|
||||
* @category project
|
||||
* @foldnumber 10
|
||||
* @param {Number} id
|
||||
* @param {String} color
|
||||
* @param {String} icon
|
||||
* @return {Object}
|
||||
*/
|
||||
async upSet(ctx){
|
||||
let id = ctx.request.body.id;
|
||||
let data = {};
|
||||
data.color = ctx.request.body.color;
|
||||
data.icon = ctx.request.body.icon;
|
||||
if(!id){
|
||||
return ctx.body = yapi.commons.resReturn(null, 405, '项目id不能为空');
|
||||
}
|
||||
try{
|
||||
let result = await this.Model.up(id, data);
|
||||
ctx.body = yapi.commons.resReturn(result);
|
||||
}catch(e){
|
||||
ctx.body = yapi.commons.resReturn(null, 402, e.message);
|
||||
}
|
||||
try{
|
||||
this.followModel.updateById(this.getUid(),id,data).then();
|
||||
}catch(e){
|
||||
yapi.commons.log(e, 'error'); // eslint-disable-line
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 模糊搜索项目名称或者组名称
|
||||
* @interface /project/search
|
||||
|
@ -34,26 +34,19 @@ class followModel extends baseModel {
|
||||
return follow.save();
|
||||
}
|
||||
|
||||
del(id){
|
||||
del(projectid, uid){
|
||||
return this.model.deleteOne({
|
||||
_id: id
|
||||
projectid: projectid,
|
||||
uid: uid
|
||||
});
|
||||
}
|
||||
|
||||
listWithPaging(uid, page, limit) {
|
||||
page = parseInt(page);
|
||||
limit = parseInt(limit);
|
||||
|
||||
list(uid) {
|
||||
return this.model.find({
|
||||
uid: uid
|
||||
}).skip((page - 1) * limit).limit(limit).exec();
|
||||
}).exec();
|
||||
}
|
||||
|
||||
listCount(uid) {
|
||||
return this.model.count({
|
||||
uid: uid
|
||||
});
|
||||
}
|
||||
|
||||
checkProjectRepeat(uid,projectid){
|
||||
return this.model.count({
|
||||
|
@ -51,20 +51,6 @@ var followController = function (_baseController) {
|
||||
var _this = (0, _possibleConstructorReturn3.default)(this, (followController.__proto__ || (0, _getPrototypeOf2.default)(followController)).call(this, ctx));
|
||||
|
||||
_this.Model = _yapi2.default.getInst(_follow2.default);
|
||||
// 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);
|
||||
// }
|
||||
|
||||
|
||||
return _this;
|
||||
}
|
||||
|
||||
@ -74,7 +60,6 @@ var followController = function (_baseController) {
|
||||
* @method GET
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} uid 用户id, 不能为空
|
||||
* @param {Number} [page] 分页页码
|
||||
* @param {Number} [limit] 分页大小
|
||||
* @returns {Object}
|
||||
@ -85,12 +70,12 @@ var followController = function (_baseController) {
|
||||
key: 'list',
|
||||
value: function () {
|
||||
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(ctx) {
|
||||
var uid, page, limit, result, count;
|
||||
var uid, page, limit, result;
|
||||
return _regenerator2.default.wrap(function _callee$(_context) {
|
||||
while (1) {
|
||||
switch (_context.prev = _context.next) {
|
||||
case 0:
|
||||
uid = ctx.request.query.uid, page = ctx.request.query.page || 1, limit = ctx.request.query.limit || 10;
|
||||
uid = this.getUid(), page = ctx.request.query.page || 1, limit = ctx.request.query.limit || 10;
|
||||
|
||||
if (uid) {
|
||||
_context.next = 3;
|
||||
@ -102,36 +87,30 @@ var followController = function (_baseController) {
|
||||
case 3:
|
||||
_context.prev = 3;
|
||||
_context.next = 6;
|
||||
return this.Model.listWithPaging(uid, page, limit);
|
||||
return this.Model.list(uid);
|
||||
|
||||
case 6:
|
||||
result = _context.sent;
|
||||
_context.next = 9;
|
||||
return this.Model.listCount(uid);
|
||||
|
||||
case 9:
|
||||
count = _context.sent;
|
||||
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn({
|
||||
total: Math.ceil(count / limit),
|
||||
list: result
|
||||
});
|
||||
_context.next = 16;
|
||||
_context.next = 13;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
_context.prev = 13;
|
||||
case 10:
|
||||
_context.prev = 10;
|
||||
_context.t0 = _context['catch'](3);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context.t0.message);
|
||||
|
||||
case 16:
|
||||
case 13:
|
||||
case 'end':
|
||||
return _context.stop();
|
||||
}
|
||||
}
|
||||
}, _callee, this, [[3, 13]]);
|
||||
}, _callee, this, [[3, 10]]);
|
||||
}));
|
||||
|
||||
function list(_x) {
|
||||
@ -147,7 +126,7 @@ var followController = function (_baseController) {
|
||||
* @method POST
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} id 关注id
|
||||
* @param {Number} projectid
|
||||
* @returns {Object}
|
||||
* @example /follow/del
|
||||
*/
|
||||
@ -156,44 +135,58 @@ var followController = function (_baseController) {
|
||||
key: 'del',
|
||||
value: function () {
|
||||
var _ref2 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee2(ctx) {
|
||||
var params, result;
|
||||
var params, uid, checkRepeat, result;
|
||||
return _regenerator2.default.wrap(function _callee2$(_context2) {
|
||||
while (1) {
|
||||
switch (_context2.prev = _context2.next) {
|
||||
case 0:
|
||||
params = ctx.request.body;
|
||||
params = ctx.request.body, uid = this.getUid();
|
||||
|
||||
if (!params.followid) {
|
||||
if (params.projectid) {
|
||||
_context2.next = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context2.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '关注id不能为空'));
|
||||
return _context2.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目id不能为空'));
|
||||
|
||||
case 3:
|
||||
_context2.prev = 3;
|
||||
_context2.next = 6;
|
||||
return this.Model.del(params.id);
|
||||
_context2.next = 5;
|
||||
return this.Model.checkProjectRepeat(uid, params.projectid);
|
||||
|
||||
case 6:
|
||||
case 5:
|
||||
checkRepeat = _context2.sent;
|
||||
|
||||
if (!(checkRepeat == 0)) {
|
||||
_context2.next = 8;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context2.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, '项目未关注'));
|
||||
|
||||
case 8:
|
||||
_context2.prev = 8;
|
||||
_context2.next = 11;
|
||||
return this.Model.del(params.projectid, this.getUid());
|
||||
|
||||
case 11:
|
||||
result = _context2.sent;
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(result);
|
||||
_context2.next = 13;
|
||||
_context2.next = 18;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
_context2.prev = 10;
|
||||
_context2.t0 = _context2['catch'](3);
|
||||
case 15:
|
||||
_context2.prev = 15;
|
||||
_context2.t0 = _context2['catch'](8);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context2.t0.message);
|
||||
|
||||
case 13:
|
||||
case 18:
|
||||
case 'end':
|
||||
return _context2.stop();
|
||||
}
|
||||
}
|
||||
}, _callee2, this, [[3, 10]]);
|
||||
}, _callee2, this, [[8, 15]]);
|
||||
}));
|
||||
|
||||
function del(_x2) {
|
||||
@ -209,7 +202,6 @@ var followController = function (_baseController) {
|
||||
* @method GET
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} uid 用户id
|
||||
* @param {Number} projectid 项目id
|
||||
* @param {String} projectname 项目名
|
||||
* @param {String} icon 项目icon
|
||||
@ -221,7 +213,7 @@ var followController = function (_baseController) {
|
||||
key: 'add',
|
||||
value: function () {
|
||||
var _ref3 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee3(ctx) {
|
||||
var params, checkRepeat, data, result;
|
||||
var params, uid, checkRepeat, data, result;
|
||||
return _regenerator2.default.wrap(function _callee3$(_context3) {
|
||||
while (1) {
|
||||
switch (_context3.prev = _context3.next) {
|
||||
@ -229,99 +221,91 @@ var followController = function (_baseController) {
|
||||
params = ctx.request.body;
|
||||
|
||||
params = _yapi2.default.commons.handleParams(params, {
|
||||
uid: 'number',
|
||||
projectid: 'number',
|
||||
projectname: 'string',
|
||||
icon: 'string',
|
||||
color: 'string'
|
||||
});
|
||||
|
||||
if (params.uid) {
|
||||
_context3.next = 4;
|
||||
break;
|
||||
}
|
||||
uid = this.getUid();
|
||||
|
||||
return _context3.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '用户id不为空'));
|
||||
|
||||
case 4:
|
||||
if (params.projectid) {
|
||||
_context3.next = 6;
|
||||
_context3.next = 5;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context3.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目id不能为空'));
|
||||
|
||||
case 6:
|
||||
_context3.next = 8;
|
||||
return this.Model.checkProjectRepeat(params.uid, params.projectid);
|
||||
case 5:
|
||||
_context3.next = 7;
|
||||
return this.Model.checkProjectRepeat(uid, params.projectid);
|
||||
|
||||
case 8:
|
||||
case 7:
|
||||
checkRepeat = _context3.sent;
|
||||
|
||||
if (!checkRepeat) {
|
||||
_context3.next = 11;
|
||||
_context3.next = 10;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context3.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, '项目已关注'));
|
||||
|
||||
case 11:
|
||||
case 10:
|
||||
if (params.projectname) {
|
||||
_context3.next = 13;
|
||||
_context3.next = 12;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context3.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目名不能为空'));
|
||||
|
||||
case 13:
|
||||
case 12:
|
||||
if (params.icon) {
|
||||
_context3.next = 15;
|
||||
_context3.next = 14;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context3.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目图标标志不能为空'));
|
||||
|
||||
case 15:
|
||||
case 14:
|
||||
if (params.color) {
|
||||
_context3.next = 17;
|
||||
_context3.next = 16;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context3.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目颜色不能为空'));
|
||||
|
||||
case 17:
|
||||
case 16:
|
||||
data = {
|
||||
uid: params.uid,
|
||||
uid: uid,
|
||||
projectid: params.projectid,
|
||||
projectname: params.projectname,
|
||||
icon: params.icon,
|
||||
color: params.color
|
||||
|
||||
};
|
||||
_context3.prev = 18;
|
||||
_context3.next = 21;
|
||||
_context3.prev = 17;
|
||||
_context3.next = 20;
|
||||
return this.Model.save(data);
|
||||
|
||||
case 21:
|
||||
case 20:
|
||||
result = _context3.sent;
|
||||
|
||||
result = _yapi2.default.commons.fieldSelect(result, ['_id', 'uid', 'projectid', 'projectname', 'icon', 'color']);
|
||||
ctx.body = _yapi2.default.commons.resReturn(result);
|
||||
_context3.next = 29;
|
||||
_context3.next = 28;
|
||||
break;
|
||||
|
||||
case 26:
|
||||
_context3.prev = 26;
|
||||
_context3.t0 = _context3['catch'](18);
|
||||
case 25:
|
||||
_context3.prev = 25;
|
||||
_context3.t0 = _context3['catch'](17);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context3.t0.message);
|
||||
|
||||
case 29:
|
||||
case 28:
|
||||
case 'end':
|
||||
return _context3.stop();
|
||||
}
|
||||
}
|
||||
}, _callee3, this, [[18, 26]]);
|
||||
}, _callee3, this, [[17, 25]]);
|
||||
}));
|
||||
|
||||
function add(_x3) {
|
||||
|
@ -40,6 +40,10 @@ var _yapi = require('../yapi.js');
|
||||
|
||||
var _yapi2 = _interopRequireDefault(_yapi);
|
||||
|
||||
var _underscore = require('underscore');
|
||||
|
||||
var _underscore2 = _interopRequireDefault(_underscore);
|
||||
|
||||
var _base = require('./base.js');
|
||||
|
||||
var _base2 = _interopRequireDefault(_base);
|
||||
@ -730,7 +734,7 @@ var projectController = function (_baseController) {
|
||||
key: 'list',
|
||||
value: function () {
|
||||
var _ref7 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee7(ctx) {
|
||||
var group_id, auth, result, uids, _users, users;
|
||||
var group_id, auth, result, follow, uids, _users, users;
|
||||
|
||||
return _regenerator2.default.wrap(function _callee7$(_context7) {
|
||||
while (1) {
|
||||
@ -757,18 +761,32 @@ var projectController = function (_baseController) {
|
||||
|
||||
case 9:
|
||||
result = _context7.sent;
|
||||
_context7.next = 12;
|
||||
return this.followModel.list(this.getUid());
|
||||
|
||||
case 12:
|
||||
follow = _context7.sent;
|
||||
uids = [];
|
||||
|
||||
result.forEach(function (item) {
|
||||
result.forEach(function (item, index) {
|
||||
result[index] = item.toObject();
|
||||
var f = _underscore2.default.find(follow, function (fol) {
|
||||
return fol.projectid === item._id;
|
||||
});
|
||||
if (f) {
|
||||
result[index].follow = true;
|
||||
} else {
|
||||
result[index].follow = false;
|
||||
}
|
||||
if (uids.indexOf(item.uid) === -1) {
|
||||
uids.push(item.uid);
|
||||
}
|
||||
});
|
||||
_users = {};
|
||||
_context7.next = 15;
|
||||
_context7.next = 18;
|
||||
return _yapi2.default.getInst(_user2.default).findByUids(uids);
|
||||
|
||||
case 15:
|
||||
case 18:
|
||||
users = _context7.sent;
|
||||
|
||||
users.forEach(function (item) {
|
||||
@ -777,21 +795,21 @@ var projectController = function (_baseController) {
|
||||
ctx.body = _yapi2.default.commons.resReturn({
|
||||
list: result
|
||||
});
|
||||
_context7.next = 23;
|
||||
_context7.next = 26;
|
||||
break;
|
||||
|
||||
case 20:
|
||||
_context7.prev = 20;
|
||||
case 23:
|
||||
_context7.prev = 23;
|
||||
_context7.t0 = _context7['catch'](6);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context7.t0.message);
|
||||
|
||||
case 23:
|
||||
case 26:
|
||||
case 'end':
|
||||
return _context7.stop();
|
||||
}
|
||||
}
|
||||
}, _callee7, this, [[6, 20]]);
|
||||
}, _callee7, this, [[6, 23]]);
|
||||
}));
|
||||
|
||||
function list(_x8) {
|
||||
@ -915,73 +933,71 @@ var projectController = function (_baseController) {
|
||||
switch (_context9.prev = _context9.next) {
|
||||
case 0:
|
||||
params = ctx.request.body;
|
||||
|
||||
console.log(params);
|
||||
projectInst = _yapi2.default.getInst(_project2.default);
|
||||
|
||||
if (params.member_uid) {
|
||||
_context9.next = 5;
|
||||
_context9.next = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context9.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目成员uid不能为空'));
|
||||
|
||||
case 5:
|
||||
case 4:
|
||||
if (params.id) {
|
||||
_context9.next = 7;
|
||||
_context9.next = 6;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context9.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目id不能为空'));
|
||||
|
||||
case 7:
|
||||
_context9.next = 9;
|
||||
case 6:
|
||||
_context9.next = 8;
|
||||
return projectInst.checkMemberRepeat(params.id, params.member_uid);
|
||||
|
||||
case 9:
|
||||
case 8:
|
||||
check = _context9.sent;
|
||||
|
||||
if (!(check === 0)) {
|
||||
_context9.next = 12;
|
||||
_context9.next = 11;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context9.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 400, '项目成员不存在'));
|
||||
|
||||
case 12:
|
||||
_context9.next = 14;
|
||||
case 11:
|
||||
_context9.next = 13;
|
||||
return this.checkAuth(params.id, 'group', 'danger');
|
||||
|
||||
case 14:
|
||||
case 13:
|
||||
_context9.t0 = _context9.sent;
|
||||
|
||||
if (!(_context9.t0 !== true)) {
|
||||
_context9.next = 17;
|
||||
_context9.next = 16;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context9.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '没有权限'));
|
||||
|
||||
case 17:
|
||||
case 16:
|
||||
|
||||
params.role = params.role === 'owner' ? 'owner' : 'dev';
|
||||
|
||||
_context9.prev = 18;
|
||||
_context9.next = 21;
|
||||
_context9.prev = 17;
|
||||
_context9.next = 20;
|
||||
return projectInst.changeMemberRole(params.id, params.member_uid, params.role);
|
||||
|
||||
case 21:
|
||||
case 20:
|
||||
result = _context9.sent;
|
||||
username = this.getUsername();
|
||||
_context9.next = 25;
|
||||
_context9.next = 24;
|
||||
return this.Model.get(params.id);
|
||||
|
||||
case 25:
|
||||
case 24:
|
||||
project = _context9.sent;
|
||||
_context9.next = 28;
|
||||
_context9.next = 27;
|
||||
return _yapi2.default.getInst(_user2.default).findByUids(params.member_uid);
|
||||
|
||||
case 28:
|
||||
case 27:
|
||||
member = _context9.sent;
|
||||
|
||||
_yapi2.default.commons.saveLog({
|
||||
@ -994,21 +1010,21 @@ var projectController = function (_baseController) {
|
||||
icon: project.icon
|
||||
});
|
||||
ctx.body = _yapi2.default.commons.resReturn(result);
|
||||
_context9.next = 36;
|
||||
_context9.next = 35;
|
||||
break;
|
||||
|
||||
case 33:
|
||||
_context9.prev = 33;
|
||||
_context9.t1 = _context9['catch'](18);
|
||||
case 32:
|
||||
_context9.prev = 32;
|
||||
_context9.t1 = _context9['catch'](17);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context9.t1.message);
|
||||
|
||||
case 36:
|
||||
case 35:
|
||||
case 'end':
|
||||
return _context9.stop();
|
||||
}
|
||||
}
|
||||
}, _callee9, this, [[18, 33]]);
|
||||
}, _callee9, this, [[17, 32]]);
|
||||
}));
|
||||
|
||||
function changeMemberRole(_x10) {
|
||||
@ -1036,76 +1052,15 @@ var projectController = function (_baseController) {
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'upSet',
|
||||
key: 'up',
|
||||
value: function () {
|
||||
var _ref10 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee10(ctx) {
|
||||
var id, data, result;
|
||||
var id, params, projectData, checkRepeat, data, result, username;
|
||||
return _regenerator2.default.wrap(function _callee10$(_context10) {
|
||||
while (1) {
|
||||
switch (_context10.prev = _context10.next) {
|
||||
case 0:
|
||||
id = ctx.request.body.id;
|
||||
data = {};
|
||||
|
||||
data.color = ctx.request.body.color;
|
||||
data.icon = ctx.request.body.icon;
|
||||
|
||||
if (id) {
|
||||
_context10.next = 6;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context10.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '项目id不能为空'));
|
||||
|
||||
case 6:
|
||||
_context10.prev = 6;
|
||||
_context10.next = 9;
|
||||
return this.Model.up(id, data);
|
||||
|
||||
case 9:
|
||||
result = _context10.sent;
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(result);
|
||||
_context10.next = 16;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
_context10.prev = 13;
|
||||
_context10.t0 = _context10['catch'](6);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context10.t0.message);
|
||||
|
||||
case 16:
|
||||
try {
|
||||
this.followModel.updateById(this.getUid(), id, data).then();
|
||||
} catch (e) {
|
||||
_yapi2.default.commons.log(e, 'error'); // eslint-disable-line
|
||||
}
|
||||
|
||||
case 17:
|
||||
case 'end':
|
||||
return _context10.stop();
|
||||
}
|
||||
}
|
||||
}, _callee10, this, [[6, 13]]);
|
||||
}));
|
||||
|
||||
function upSet(_x11) {
|
||||
return _ref10.apply(this, arguments);
|
||||
}
|
||||
|
||||
return upSet;
|
||||
}()
|
||||
}, {
|
||||
key: 'up',
|
||||
value: function () {
|
||||
var _ref11 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee11(ctx) {
|
||||
var id, params, projectData, checkRepeat, data, result, username;
|
||||
return _regenerator2.default.wrap(function _callee11$(_context11) {
|
||||
while (1) {
|
||||
switch (_context11.prev = _context11.next) {
|
||||
case 0:
|
||||
_context11.prev = 0;
|
||||
_context10.prev = 0;
|
||||
id = ctx.request.body.id;
|
||||
params = ctx.request.body;
|
||||
|
||||
@ -1120,39 +1075,39 @@ var projectController = function (_baseController) {
|
||||
});
|
||||
|
||||
if (id) {
|
||||
_context11.next = 7;
|
||||
_context10.next = 7;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context11.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '项目id不能为空'));
|
||||
return _context10.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '项目id不能为空'));
|
||||
|
||||
case 7:
|
||||
_context11.next = 9;
|
||||
_context10.next = 9;
|
||||
return this.checkAuth(id, 'project', 'edit');
|
||||
|
||||
case 9:
|
||||
_context11.t0 = _context11.sent;
|
||||
_context10.t0 = _context10.sent;
|
||||
|
||||
if (!(_context11.t0 !== true)) {
|
||||
_context11.next = 12;
|
||||
if (!(_context10.t0 !== true)) {
|
||||
_context10.next = 12;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context11.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '没有权限'));
|
||||
return _context10.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '没有权限'));
|
||||
|
||||
case 12:
|
||||
_context11.next = 14;
|
||||
_context10.next = 14;
|
||||
return this.Model.get(id);
|
||||
|
||||
case 14:
|
||||
projectData = _context11.sent;
|
||||
projectData = _context10.sent;
|
||||
|
||||
if (!((params.basepath = this.handleBasepath(params.basepath)) === false)) {
|
||||
_context11.next = 17;
|
||||
_context10.next = 17;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context11.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, 'basepath格式有误'));
|
||||
return _context10.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, 'basepath格式有误'));
|
||||
|
||||
case 17:
|
||||
|
||||
@ -1161,22 +1116,22 @@ var projectController = function (_baseController) {
|
||||
}
|
||||
|
||||
if (!params.name) {
|
||||
_context11.next = 24;
|
||||
_context10.next = 24;
|
||||
break;
|
||||
}
|
||||
|
||||
_context11.next = 21;
|
||||
_context10.next = 21;
|
||||
return this.Model.checkNameRepeat(params.name);
|
||||
|
||||
case 21:
|
||||
checkRepeat = _context11.sent;
|
||||
checkRepeat = _context10.sent;
|
||||
|
||||
if (!(checkRepeat > 0)) {
|
||||
_context11.next = 24;
|
||||
_context10.next = 24;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context11.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, '已存在的项目名'));
|
||||
return _context10.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 401, '已存在的项目名'));
|
||||
|
||||
case 24:
|
||||
data = {
|
||||
@ -1192,11 +1147,11 @@ var projectController = function (_baseController) {
|
||||
if (params.env) data.env = params.env;
|
||||
if (params.color) data.color = params.color;
|
||||
if (params.icon) data.icon = params.icon;
|
||||
_context11.next = 33;
|
||||
_context10.next = 33;
|
||||
return this.Model.up(id, data);
|
||||
|
||||
case 33:
|
||||
result = _context11.sent;
|
||||
result = _context10.sent;
|
||||
|
||||
// try{
|
||||
// let data = {};
|
||||
@ -1226,28 +1181,102 @@ var projectController = function (_baseController) {
|
||||
color: params.color
|
||||
});
|
||||
ctx.body = _yapi2.default.commons.resReturn(result);
|
||||
_context11.next = 42;
|
||||
_context10.next = 42;
|
||||
break;
|
||||
|
||||
case 39:
|
||||
_context11.prev = 39;
|
||||
_context11.t1 = _context11['catch'](0);
|
||||
_context10.prev = 39;
|
||||
_context10.t1 = _context10['catch'](0);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context11.t1.message);
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context10.t1.message);
|
||||
|
||||
case 42:
|
||||
case 'end':
|
||||
return _context10.stop();
|
||||
}
|
||||
}
|
||||
}, _callee10, this, [[0, 39]]);
|
||||
}));
|
||||
|
||||
function up(_x11) {
|
||||
return _ref10.apply(this, arguments);
|
||||
}
|
||||
|
||||
return up;
|
||||
}()
|
||||
|
||||
/**
|
||||
* 修改项目头像
|
||||
* @interface /project/upset
|
||||
* @method POST
|
||||
* @category project
|
||||
* @foldnumber 10
|
||||
* @param {Number} id
|
||||
* @param {String} color
|
||||
* @param {String} icon
|
||||
* @return {Object}
|
||||
*/
|
||||
|
||||
}, {
|
||||
key: 'upSet',
|
||||
value: function () {
|
||||
var _ref11 = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee11(ctx) {
|
||||
var id, data, result;
|
||||
return _regenerator2.default.wrap(function _callee11$(_context11) {
|
||||
while (1) {
|
||||
switch (_context11.prev = _context11.next) {
|
||||
case 0:
|
||||
id = ctx.request.body.id;
|
||||
data = {};
|
||||
|
||||
data.color = ctx.request.body.color;
|
||||
data.icon = ctx.request.body.icon;
|
||||
|
||||
if (id) {
|
||||
_context11.next = 6;
|
||||
break;
|
||||
}
|
||||
|
||||
return _context11.abrupt('return', ctx.body = _yapi2.default.commons.resReturn(null, 405, '项目id不能为空'));
|
||||
|
||||
case 6:
|
||||
_context11.prev = 6;
|
||||
_context11.next = 9;
|
||||
return this.Model.up(id, data);
|
||||
|
||||
case 9:
|
||||
result = _context11.sent;
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(result);
|
||||
_context11.next = 16;
|
||||
break;
|
||||
|
||||
case 13:
|
||||
_context11.prev = 13;
|
||||
_context11.t0 = _context11['catch'](6);
|
||||
|
||||
ctx.body = _yapi2.default.commons.resReturn(null, 402, _context11.t0.message);
|
||||
|
||||
case 16:
|
||||
try {
|
||||
this.followModel.updateById(this.getUid(), id, data).then();
|
||||
} catch (e) {
|
||||
_yapi2.default.commons.log(e, 'error'); // eslint-disable-line
|
||||
}
|
||||
|
||||
case 17:
|
||||
case 'end':
|
||||
return _context11.stop();
|
||||
}
|
||||
}
|
||||
}, _callee11, this, [[0, 39]]);
|
||||
}, _callee11, this, [[6, 13]]);
|
||||
}));
|
||||
|
||||
function up(_x12) {
|
||||
function upSet(_x12) {
|
||||
return _ref11.apply(this, arguments);
|
||||
}
|
||||
|
||||
return up;
|
||||
return upSet;
|
||||
}()
|
||||
|
||||
/**
|
||||
|
@ -74,27 +74,18 @@ var followModel = function (_baseModel) {
|
||||
}
|
||||
}, {
|
||||
key: 'del',
|
||||
value: function del(id) {
|
||||
value: function del(projectid, uid) {
|
||||
return this.model.deleteOne({
|
||||
_id: id
|
||||
projectid: projectid,
|
||||
uid: uid
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: 'listWithPaging',
|
||||
value: function listWithPaging(uid, page, limit) {
|
||||
page = parseInt(page);
|
||||
limit = parseInt(limit);
|
||||
|
||||
key: 'list',
|
||||
value: function list(uid) {
|
||||
return this.model.find({
|
||||
uid: uid
|
||||
}).skip((page - 1) * limit).limit(limit).exec();
|
||||
}
|
||||
}, {
|
||||
key: 'listCount',
|
||||
value: function listCount(uid) {
|
||||
return this.model.count({
|
||||
uid: uid
|
||||
});
|
||||
}).exec();
|
||||
}
|
||||
}, {
|
||||
key: 'checkProjectRepeat',
|
||||
|
@ -220,6 +220,10 @@
|
||||
<a href="#-project-up">/project/up</a>
|
||||
</li>
|
||||
|
||||
<li >
|
||||
<a href="#-project-upset">/project/upset</a>
|
||||
</li>
|
||||
|
||||
<li >
|
||||
<a href="#-project-search">/project/search</a>
|
||||
</li>
|
||||
@ -492,7 +496,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -837,7 +841,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>
|
||||
@ -935,7 +939,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -1031,7 +1035,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -1119,7 +1123,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"logout success..."</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -1158,7 +1162,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token string">"ok"</span>
|
||||
@ -1249,7 +1253,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" ><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" ><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -1345,7 +1349,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"logout success..."</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -1830,7 +1834,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"ok"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>
|
||||
@ -1943,7 +1947,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#42" target="_blank">./server/controllers/project.js:42</a>
|
||||
<a href="./static/server/controllers/project.js.html#45" target="_blank">./server/controllers/project.js:45</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2043,7 +2047,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -2084,7 +2088,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#127" target="_blank">./server/controllers/project.js:127</a>
|
||||
<a href="./static/server/controllers/project.js.html#130" target="_blank">./server/controllers/project.js:130</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2138,7 +2142,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -2168,7 +2172,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#183" target="_blank">./server/controllers/project.js:183</a>
|
||||
<a href="./static/server/controllers/project.js.html#186" target="_blank">./server/controllers/project.js:186</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2222,7 +2226,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -2252,7 +2256,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#248" target="_blank">./server/controllers/project.js:248</a>
|
||||
<a href="./static/server/controllers/project.js.html#251" target="_blank">./server/controllers/project.js:251</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2294,7 +2298,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">[</span>
|
||||
@ -2330,7 +2334,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#273" target="_blank">./server/controllers/project.js:273</a>
|
||||
<a href="./static/server/controllers/project.js.html#276" target="_blank">./server/controllers/project.js:276</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2372,7 +2376,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -2413,7 +2417,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#305" target="_blank">./server/controllers/project.js:305</a>
|
||||
<a href="./static/server/controllers/project.js.html#308" target="_blank">./server/controllers/project.js:308</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2455,7 +2459,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -2629,7 +2633,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#345" target="_blank">./server/controllers/project.js:345</a>
|
||||
<a href="./static/server/controllers/project.js.html#358" target="_blank">./server/controllers/project.js:358</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2671,7 +2675,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -2701,7 +2705,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#381" target="_blank">./server/controllers/project.js:381</a>
|
||||
<a href="./static/server/controllers/project.js.html#394" target="_blank">./server/controllers/project.js:394</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2787,7 +2791,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#434" target="_blank">./server/controllers/project.js:434</a>
|
||||
<a href="./static/server/controllers/project.js.html#446" target="_blank">./server/controllers/project.js:446</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2893,7 +2897,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code">
|
||||
<span class="token comment" spellcheck="true">//请求示例</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token string">"id"</span><span class="token punctuation">:</span> <span class="token number">8</span><span class="token punctuation">,</span>
|
||||
@ -2915,6 +2919,92 @@
|
||||
<span class="token punctuation">}</span></code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="con-list-item">
|
||||
<blockquote class="api">
|
||||
<h3 id="-project-upset" class="page-header subject">
|
||||
/project/upset
|
||||
|
||||
<span class="ui-badge">POST</span>
|
||||
|
||||
|
||||
<a class="hashlink" href="#-project-upset">#</a>
|
||||
</h3>
|
||||
</blockquote>
|
||||
<p>
|
||||
<small class="text-muted">描述:</small>
|
||||
修改项目头像
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#545" target="_blank">./server/controllers/project.js:545</a>
|
||||
</p>
|
||||
|
||||
|
||||
<p>
|
||||
<small class="text-muted">参数:</small>
|
||||
</p>
|
||||
<div class="docs-table">
|
||||
<table class="yo-table yo-table-border">
|
||||
<colgroup>
|
||||
<col class="c1">
|
||||
<col class="c2">
|
||||
<col class="c3">
|
||||
<col class="c4">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr class="active">
|
||||
<th>参数名</th>
|
||||
<th>类型</th>
|
||||
<th>描述</th>
|
||||
<th>必选</th>
|
||||
<th>支持版本</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>Number</td>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
<i class="yo-ico glyphicon glyphicon-ok text-success"></i>
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>color</td>
|
||||
<td>String</td>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
<i class="yo-ico glyphicon glyphicon-ok text-success"></i>
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>icon</td>
|
||||
<td>String</td>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
<i class="yo-ico glyphicon glyphicon-ok text-success"></i>
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="con-list-item">
|
||||
@ -2935,7 +3025,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#519" target="_blank">./server/controllers/project.js:519</a>
|
||||
<a href="./static/server/controllers/project.js.html#577" target="_blank">./server/controllers/project.js:577</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -2977,7 +3067,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"ok"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -3030,7 +3120,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/project.js.html#573" target="_blank">./server/controllers/project.js:573</a>
|
||||
<a href="./static/server/controllers/project.js.html#631" target="_blank">./server/controllers/project.js:631</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -3323,7 +3413,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code">
|
||||
<span class="token comment" spellcheck="true">//请求 /interface/add</span>
|
||||
<span class="token comment" spellcheck="true">//header Content-Type:application/json</span>
|
||||
|
||||
@ -3458,7 +3548,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">.</span><span class="token operator">/</span>api<span class="token operator">/</span><span class="token keyword">interface</span><span class="token operator">/</span><span class="token keyword">get</span><span class="token punctuation">.</span>json</code></pre>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">.</span><span class="token operator">/</span>api<span class="token operator">/</span><span class="token keyword">interface</span><span class="token operator">/</span><span class="token keyword">get</span><span class="token punctuation">.</span>json</code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
@ -3523,7 +3613,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">.</span><span class="token operator">/</span>api<span class="token operator">/</span><span class="token keyword">interface</span><span class="token operator">/</span>list<span class="token punctuation">.</span>json</code></pre>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">.</span><span class="token operator">/</span>api<span class="token operator">/</span><span class="token keyword">interface</span><span class="token operator">/</span>list<span class="token punctuation">.</span>json</code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
@ -3748,7 +3838,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -3821,7 +3911,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token punctuation">{</span>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token punctuation">{</span>
|
||||
<span class="token string">"errcode"</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"errmsg"</span><span class="token punctuation">:</span> <span class="token string">"success"</span><span class="token punctuation">,</span>
|
||||
<span class="token string">"data"</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>
|
||||
@ -3854,7 +3944,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/follow.js.html#24" target="_blank">./server/controllers/follow.js:24</a>
|
||||
<a href="./static/server/controllers/follow.js.html#10" target="_blank">./server/controllers/follow.js:10</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -3879,18 +3969,6 @@
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tr>
|
||||
<td>uid</td>
|
||||
<td>Number</td>
|
||||
<td>用户id, 不能为空</td>
|
||||
<td>
|
||||
|
||||
<i class="yo-ico glyphicon glyphicon-ok text-success"></i>
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>page</td>
|
||||
<td>Number</td>
|
||||
@ -3916,7 +3994,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token operator">/</span>follow<span class="token operator">/</span>list</code></pre>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token operator">/</span>follow<span class="token operator">/</span>list</code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
@ -3939,7 +4017,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/follow.js.html#60" target="_blank">./server/controllers/follow.js:60</a>
|
||||
<a href="./static/server/controllers/follow.js.html#43" target="_blank">./server/controllers/follow.js:43</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -3965,9 +4043,9 @@
|
||||
</thead>
|
||||
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>projectid</td>
|
||||
<td>Number</td>
|
||||
<td>关注id</td>
|
||||
<td></td>
|
||||
<td>
|
||||
|
||||
<i class="yo-ico glyphicon glyphicon-ok text-success"></i>
|
||||
@ -3981,7 +4059,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token operator">/</span>follow<span class="token operator">/</span>del</code></pre>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token operator">/</span>follow<span class="token operator">/</span>del</code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
@ -4004,7 +4082,7 @@
|
||||
|
||||
<p>
|
||||
<small class="text-muted">源码位置:</small>
|
||||
<a href="./static/server/controllers/follow.js.html#86" target="_blank">./server/controllers/follow.js:86</a>
|
||||
<a href="./static/server/controllers/follow.js.html#75" target="_blank">./server/controllers/follow.js:75</a>
|
||||
</p>
|
||||
|
||||
|
||||
@ -4029,18 +4107,6 @@
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tr>
|
||||
<td>uid</td>
|
||||
<td>Number</td>
|
||||
<td>用户id</td>
|
||||
<td>
|
||||
|
||||
<i class="yo-ico glyphicon glyphicon-ok text-success"></i>
|
||||
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>projectid</td>
|
||||
<td>Number</td>
|
||||
@ -4082,7 +4148,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token operator">/</span>follow<span class="token operator">/</span>add</code></pre>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token operator">/</span>follow<span class="token operator">/</span>add</code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
@ -4835,7 +4901,7 @@
|
||||
|
||||
|
||||
<div>示例:</div>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code><span class="token operator">/</span>log<span class="token operator">/</span>list</code></pre>
|
||||
<pre class="ydoc-example" data-foldnumber=10><code class="js-code"><span class="token operator">/</span>log<span class="token operator">/</span>list</code></pre>
|
||||
|
||||
|
||||
</div>
|
||||
@ -4890,8 +4956,8 @@
|
||||
var $this = $(this);
|
||||
$this.removeClass('extend').addClass('fold');
|
||||
$this.html('折叠代码');
|
||||
$this.prev().height('auto');
|
||||
$this.prev().parent().height('auto');
|
||||
$this.parent().children('.js-code').height('auto');
|
||||
$this.parent().height('auto');
|
||||
});
|
||||
$('.ydoc-example').delegate('.fold', 'click', function() {
|
||||
var $this = $(this);
|
||||
@ -4899,7 +4965,7 @@
|
||||
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
|
||||
$this.removeClass('fold').addClass('extend');
|
||||
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
|
||||
$this.prev().height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.html("展开更多……");
|
||||
});
|
||||
}
|
||||
|
BIN
static/doc/images/yapi-base-flow.jpg
Normal file
BIN
static/doc/images/yapi-base-flow.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 254 KiB |
Binary file not shown.
Before Width: | Height: | Size: 37 KiB |
@ -175,8 +175,8 @@
|
||||
var $this = $(this);
|
||||
$this.removeClass('extend').addClass('fold');
|
||||
$this.html('折叠代码');
|
||||
$this.prev().height('auto');
|
||||
$this.prev().parent().height('auto');
|
||||
$this.parent().children('.js-code').height('auto');
|
||||
$this.parent().height('auto');
|
||||
});
|
||||
$('.ydoc-example').delegate('.fold', 'click', function() {
|
||||
var $this = $(this);
|
||||
@ -184,7 +184,7 @@
|
||||
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
|
||||
$this.removeClass('fold').addClass('extend');
|
||||
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
|
||||
$this.prev().height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.html("展开更多……");
|
||||
});
|
||||
}
|
||||
|
@ -70,7 +70,7 @@
|
||||
<article class="markdown-body">
|
||||
<h2 class="subject" id="Mock功能">Mock功能 <a class="hashlink" href="#Mock功能">#</a></h2> <p style='text-indent:2em;line-height:1.8em'>yapi的Mock功能可以根据用户的输入接口信息如协议、URL、接口名、请求头、请求参数、mock规则(<a href="#mock">点击到Mock规则</a>)生成Mock接口,这些接口会自动生成模拟数据,支持复杂的生成逻辑,创建者可以自由构造需要的数据。而且与常见的Mock方式如将Mock写在代码里和JS拦截等相比yapi的Mock在使用场景和效率和复杂度上是相差甚远的,正是由于yapi的Mock是一个第三方平台那么在 团队开发时任何人都可以权限许可下创建、修改接口信息等操作,这对于团队开发是很有好处的。</p>
|
||||
|
||||
<h3 class="subject" id="1 Mock步骤">1 Mock步骤 <a class="hashlink" href="#1 Mock步骤">#</a></h3><h4 class="subject" id="1.1 创建接口">1.1 创建接口 <a class="hashlink" href="#1.1 创建接口">#</a></h4><p>通过点击页面上的"+添加接口"</p>
|
||||
<h3 class="subject" id="1_Mock步骤">1 Mock步骤 <a class="hashlink" href="#1_Mock步骤">#</a></h3><h4 class="subject" id="1.1_创建接口">1.1 创建接口 <a class="hashlink" href="#1.1_创建接口">#</a></h4><p>通过点击页面上的"+添加接口"</p>
|
||||
<p><img src="http://note.youdao.com/yws/api/personal/file/WEB613bd4f29db038f2b41c03dcfceda2b6?method=download&shareKey=29bfc2b855f6f26ce0079baf567e54cc" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
<p> 输入协议、URL、接口名、请求头、请求参数、Mock规则(<a href="#mock">点击到Mock规则</a>)等信息。</p>
|
||||
<p><img src="http://note.youdao.com/yws/api/personal/file/WEB680a37ba304768804b23cf2cf36ed40d?method=download&shareKey=0d750695dce3a4c7abf697fa58d24c57" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
@ -84,14 +84,14 @@
|
||||
<p>取到上面的链接在浏览器中请求就可以得到如下结果。</p>
|
||||
<p><img src="http://note.youdao.com/yws/api/personal/file/WEB1d1f7dc7b83a8cd6f576953cf45e9719?method=download&shareKey=99b4af9baac527b969543dd0a909d2a1" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
<p><span id = "mock"></span></p>
|
||||
<h3 class="subject" id="2.1 Mock语法规范">2.1 Mock语法规范 <a class="hashlink" href="#2.1 Mock语法规范">#</a></h3><blockquote>
|
||||
<h3 class="subject" id="2.1_Mock语法规范">2.1 Mock语法规范 <a class="hashlink" href="#2.1_Mock语法规范">#</a></h3><blockquote>
|
||||
<p>了解更多Mock详情:<a href="https://github.com/nuysoft/Mock/wiki/Syntax-Specification">Mock.js 官方文档</a></p>
|
||||
</blockquote>
|
||||
<p>Mock.js 的语法规范包括两部分:</p>
|
||||
<p><a href="#DTD">1. 数据模板定义规范(Data Template Definition,DTD)</a></p>
|
||||
<p><a href="#DPD">2. 数据占位符定义规范(Data Placeholder Definition,DPD)</a></p>
|
||||
<p><span id = "DTD"></span></p>
|
||||
<h3 class="subject" id="数据模板定义规范(Data Template Definition,DTD)">数据模板定义规范(Data Template Definition,DTD) <a class="hashlink" href="#数据模板定义规范(Data Template Definition,DTD)">#</a></h3><p>数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:</p>
|
||||
<h3 class="subject" id="数据模板定义规范(Data_Template_Definition,DTD)">数据模板定义规范(Data Template Definition,DTD) <a class="hashlink" href="#数据模板定义规范(Data_Template_Definition,DTD)">#</a></h3><p>数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:</p>
|
||||
<pre><code>// 属性名 name (与生成规则之间用 "|<span class="token string">" 隔开)
|
||||
// 生成规则 rule(生成规则有7种详见下面的生成规则)
|
||||
// 属性值 value(可以含有 "</span>@占位符" 同时也指定了最终值的初始值和类型)
|
||||
@ -107,14 +107,14 @@
|
||||
'name|count.dcount'<span class="token operator">:</span> value
|
||||
'name|+step'<span class="token operator">:</span> value
|
||||
</code></pre><p>下面提供了6种生成规则以及示例包括 String、Number、Boolean、Object、Array:</p>
|
||||
<h4 class="subject" id="1. 属性值是字符串 String">1. 属性值是字符串 String <a class="hashlink" href="#1. 属性值是字符串 String">#</a></h4><pre><code><span class="token number">1</span>. 'name|min-max'<span class="token operator">:</span> string
|
||||
<h4 class="subject" id="1._属性值是字符串_String">1. 属性值是字符串 String <a class="hashlink" href="#1._属性值是字符串_String">#</a></h4><pre><code><span class="token number">1</span>. 'name|min-max'<span class="token operator">:</span> string
|
||||
|
||||
通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。
|
||||
|
||||
<span class="token number">2</span>. 'name|count'<span class="token operator">:</span> string
|
||||
|
||||
通过重复 string 生成一个字符串,重复次数等于 count。
|
||||
</code></pre><h4 class="subject" id="2. 属性值是数字 Number">2. 属性值是数字 Number <a class="hashlink" href="#2. 属性值是数字 Number">#</a></h4><pre><code><span class="token number">1</span>. 'name|+<span class="token number">1</span>'<span class="token operator">:</span> number
|
||||
</code></pre><h4 class="subject" id="2._属性值是数字_Number">2. 属性值是数字 Number <a class="hashlink" href="#2._属性值是数字_Number">#</a></h4><pre><code><span class="token number">1</span>. 'name|+<span class="token number">1</span>'<span class="token operator">:</span> number
|
||||
|
||||
属性值自动加 <span class="token number">1</span>,初始值为 number。
|
||||
|
||||
@ -140,21 +140,21 @@ Mock.mock(<span class="token punctuation">{</span>
|
||||
<span class="token property">"number3"</span><span class="token operator">:</span> <span class="token number">123.777</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"number4"</span><span class="token operator">:</span> <span class="token number">123.1231091814</span>
|
||||
<span class="token punctuation">}</span>
|
||||
</code></pre><h4 class="subject" id="3. 属性值是布尔型 Boolean">3. 属性值是布尔型 Boolean <a class="hashlink" href="#3. 属性值是布尔型 Boolean">#</a></h4><pre><code><span class="token number">1</span>. 'name|<span class="token number">1</span>'<span class="token operator">:</span> boolean
|
||||
</code></pre><h4 class="subject" id="3._属性值是布尔型_Boolean">3. 属性值是布尔型 Boolean <a class="hashlink" href="#3._属性值是布尔型_Boolean">#</a></h4><pre><code><span class="token number">1</span>. 'name|<span class="token number">1</span>'<span class="token operator">:</span> boolean
|
||||
|
||||
随机生成一个布尔值,值为 <span class="token boolean">true</span> 的概率是 <span class="token number">1</span>/<span class="token number">2</span>,值为 <span class="token boolean">false</span> 的概率同样是 <span class="token number">1</span>/<span class="token number">2</span>。
|
||||
|
||||
<span class="token number">2</span>. 'name|min-max'<span class="token operator">:</span> value
|
||||
|
||||
随机生成一个布尔值,值为 value 的概率是 min / (min + max<span class="token punctuation">)</span>,值为 !value 的概率是 max / (min + max<span class="token punctuation">)</span>。
|
||||
</code></pre><h4 class="subject" id="4. 属性值是对象 Object">4. 属性值是对象 Object <a class="hashlink" href="#4. 属性值是对象 Object">#</a></h4><pre><code><span class="token number">1</span>. 'name|count'<span class="token operator">:</span> object
|
||||
</code></pre><h4 class="subject" id="4._属性值是对象_Object">4. 属性值是对象 Object <a class="hashlink" href="#4._属性值是对象_Object">#</a></h4><pre><code><span class="token number">1</span>. 'name|count'<span class="token operator">:</span> object
|
||||
|
||||
从属性值 object 中随机选取 count 个属性。
|
||||
|
||||
<span class="token number">2</span>. 'name|min-max'<span class="token operator">:</span> object
|
||||
|
||||
从属性值 object 中随机选取 min 到 max 个属性。
|
||||
</code></pre><h4 class="subject" id="5. 属性值是数组 Array">5. 属性值是数组 Array <a class="hashlink" href="#5. 属性值是数组 Array">#</a></h4><pre><code><span class="token number">1</span>. 'name|<span class="token number">1</span>'<span class="token operator">:</span> array
|
||||
</code></pre><h4 class="subject" id="5._属性值是数组_Array">5. 属性值是数组 Array <a class="hashlink" href="#5._属性值是数组_Array">#</a></h4><pre><code><span class="token number">1</span>. 'name|<span class="token number">1</span>'<span class="token operator">:</span> array
|
||||
|
||||
从属性值 array 中随机选取 <span class="token number">1</span> 个元素,作为最终值。
|
||||
|
||||
@ -170,7 +170,7 @@ Mock.mock(<span class="token punctuation">{</span>
|
||||
|
||||
通过重复属性值 array 生成一个新数组,重复次数为 count。
|
||||
</code></pre><p><span id = "DPD"></span></p>
|
||||
<h3 class="subject" id="数据占位符定义规范(Data Placeholder Definition,DPD)">数据占位符定义规范(Data Placeholder Definition,DPD) <a class="hashlink" href="#数据占位符定义规范(Data Placeholder Definition,DPD)">#</a></h3><pre><code>占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
|
||||
<h3 class="subject" id="数据占位符定义规范(Data_Placeholder_Definition,DPD)">数据占位符定义规范(Data Placeholder Definition,DPD) <a class="hashlink" href="#数据占位符定义规范(Data_Placeholder_Definition,DPD)">#</a></h3><pre><code>占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。
|
||||
|
||||
占位符 的格式为:
|
||||
|
||||
@ -240,8 +240,8 @@ name<span class="token operator">:</span> <span class="token punctuation">{</spa
|
||||
var $this = $(this);
|
||||
$this.removeClass('extend').addClass('fold');
|
||||
$this.html('折叠代码');
|
||||
$this.prev().height('auto');
|
||||
$this.prev().parent().height('auto');
|
||||
$this.parent().children('.js-code').height('auto');
|
||||
$this.parent().height('auto');
|
||||
});
|
||||
$('.ydoc-example').delegate('.fold', 'click', function() {
|
||||
var $this = $(this);
|
||||
@ -249,7 +249,7 @@ name<span class="token operator">:</span> <span class="token punctuation">{</spa
|
||||
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
|
||||
$this.removeClass('fold').addClass('extend');
|
||||
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
|
||||
$this.prev().height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.html("展开更多……");
|
||||
});
|
||||
}
|
||||
|
@ -129,7 +129,8 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
$('.markdown-body pre').map(function(i, item) {
|
||||
$(item).addClass('ydoc-example');
|
||||
$(item).addClass('ydoc-example').append('<div class="ui-copy js-copy" data-clipboard-action="copy" data-clipboard-target=".js-code-' + i + '" data-copy-number="' + i + '">copy</div><div class="copy-tip copy-tip-' + i + '">已复制</div>');
|
||||
$(item).children('code').addClass('js-code-'+i);
|
||||
});
|
||||
|
||||
var winHeight = $(window).height() - 44,
|
||||
@ -213,4 +214,17 @@ $(document).ready(function() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// 代码复制功能
|
||||
var clipboard = new Clipboard('.js-copy');
|
||||
|
||||
clipboard.on('success', function(e) {
|
||||
var copyNumber = $(e.trigger).attr('data-copy-number');
|
||||
$('.copy-tip-'+copyNumber).show();
|
||||
setTimeout(function() {
|
||||
$('.copy-tip-'+copyNumber).hide();
|
||||
}, 1000);
|
||||
e.clearSelection();
|
||||
});
|
||||
|
||||
});
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -68,23 +68,21 @@
|
||||
<div class="ydoc-container-content " id="readme">
|
||||
|
||||
<article class="markdown-body">
|
||||
<h2 class="subject" id="快速开始">快速开始 <a class="hashlink" href="#快速开始">#</a></h2><h3 class="subject" id="1 接口管理架构">1 接口管理架构 <a class="hashlink" href="#1 接口管理架构">#</a></h3><p>平台以<strong>项目分组</strong> -> <strong>项目</strong> -> <strong>接口</strong>的划分进行接口组织管理。</p>
|
||||
<p><img src="./images/yapi-base-flow.jpg" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
<h4 class="subject" id="1.1 项目分组">1.1 项目分组 <a class="hashlink" href="#1.1 项目分组">#</a></h4><p>登录之后进到项目首页,左边侧边栏显示的即分组列表。</p>
|
||||
<h2 class="subject" id="快速开始">快速开始 <a class="hashlink" href="#快速开始">#</a></h2><h3 class="subject" id="1_创建项目分组">1 创建项目分组 <a class="hashlink" href="#1_创建项目分组">#</a></h3><h4 class="subject" id="1.1_项目分组">1.1 项目分组 <a class="hashlink" href="#1.1_项目分组">#</a></h4><p>登录之后进到项目首页,左边侧边栏显示的即分组列表。</p>
|
||||
<p><img src="http://upload-images.jianshu.io/upload_images/842107-d90ca4b3242fa760.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "200" style="margin-left:170px;display:block;" alt="图片名称" align=center /></p>
|
||||
<p>管理员有权限添加或删除分组。</p>
|
||||
<p><img src="http://upload-images.jianshu.io/upload_images/842107-a0d4d9a98003896a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "500" style="margin-left:170px;display:block;" alt="图片名称" align=center /></p>
|
||||
<blockquote>
|
||||
<p>分组名称具有唯一性</p>
|
||||
</blockquote>
|
||||
<h4 class="subject" id="1.2 项目">1.2 项目 <a class="hashlink" href="#1.2 项目">#</a></h4><p>选中不同的分组,右边会显示该分组下的项目列表。</p>
|
||||
<h4 class="subject" id="1.2_项目">1.2 项目 <a class="hashlink" href="#1.2_项目">#</a></h4><p>选中不同的分组,右边会显示该分组下的项目列表。</p>
|
||||
<p><img src="http://upload-images.jianshu.io/upload_images/842107-137bcae58b84715e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
<p>创建项目需要填写项目名称,项目线上域名(添加完成后可配置项目其他环境域名),项目接口基本路径(接口路径前面相同的部分)以及项目描述。</p>
|
||||
<p><img src="http://upload-images.jianshu.io/upload_images/842107-360a50ddb746f73d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
<blockquote>
|
||||
<p>项目『线上域名 + 基本路径』具有唯一性</p>
|
||||
</blockquote>
|
||||
<h4 class="subject" id="1.3 接口">1.3 接口 <a class="hashlink" href="#1.3 接口">#</a></h4><p>点击项目名称,进入该项目接口列表。</p>
|
||||
<h4 class="subject" id="1.3_接口">1.3 接口 <a class="hashlink" href="#1.3_接口">#</a></h4><p>点击项目名称,进入该项目接口列表。</p>
|
||||
<p><img src="http://upload-images.jianshu.io/upload_images/842107-e858005f714f4889.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
<p>点击编辑,进入接口详情页(之后接口详情页和编辑也会分开),可以编辑接口或者请求测试真实接口。</p>
|
||||
<p><img src="http://upload-images.jianshu.io/upload_images/842107-78c0ea839619d068.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "800" style="margin:0px auto;display:block;" alt="图片名称" align=center /></p>
|
||||
@ -134,8 +132,8 @@
|
||||
var $this = $(this);
|
||||
$this.removeClass('extend').addClass('fold');
|
||||
$this.html('折叠代码');
|
||||
$this.prev().height('auto');
|
||||
$this.prev().parent().height('auto');
|
||||
$this.parent().children('.js-code').height('auto');
|
||||
$this.parent().height('auto');
|
||||
});
|
||||
$('.ydoc-example').delegate('.fold', 'click', function() {
|
||||
var $this = $(this);
|
||||
@ -143,7 +141,7 @@
|
||||
EXAMPLE_MAX_HEIGHT = lineHeight * (foldnumber || 6);
|
||||
$this.removeClass('fold').addClass('extend');
|
||||
$this.parent().height(EXAMPLE_MAX_HEIGHT); // pre
|
||||
$this.prev().height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.parent().children('.js-code').height(EXAMPLE_MAX_HEIGHT); // code
|
||||
$this.html("展开更多……");
|
||||
});
|
||||
}
|
||||
|
@ -33,20 +33,6 @@ 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);
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -55,7 +41,6 @@ class followController extends baseController {
|
||||
* @method GET
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} uid 用户id, 不能为空
|
||||
* @param {Number} [page] 分页页码
|
||||
* @param {Number} [limit] 分页大小
|
||||
* @returns {Object}
|
||||
@ -63,7 +48,7 @@ class followController extends baseController {
|
||||
*/
|
||||
|
||||
async list(ctx) {
|
||||
let uid = ctx.request.query.uid,
|
||||
let uid = this.getUid(),
|
||||
page = ctx.request.query.page || 1,
|
||||
limit = ctx.request.query.limit || 10;
|
||||
|
||||
@ -72,11 +57,9 @@ class followController extends baseController {
|
||||
}
|
||||
|
||||
try {
|
||||
let result = await this.Model.listWithPaging(uid, page, limit);
|
||||
let count = await this.Model.listCount(uid);
|
||||
let result = await this.Model.list(uid);
|
||||
|
||||
ctx.body = yapi.commons.resReturn({
|
||||
total: Math.ceil(count / limit),
|
||||
list: result
|
||||
});
|
||||
} catch (err) {
|
||||
@ -91,20 +74,26 @@ class followController extends baseController {
|
||||
* @method POST
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} id 关注id
|
||||
* @param {Number} projectid
|
||||
* @returns {Object}
|
||||
* @example /follow/del
|
||||
*/
|
||||
|
||||
async del(ctx) {
|
||||
let params = ctx.request.body;
|
||||
let params = ctx.request.body, uid = this.getUid();
|
||||
|
||||
if(params.followid){
|
||||
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(uid,params.projectid);
|
||||
|
||||
if (checkRepeat == 0) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 401, '项目未关注');
|
||||
}
|
||||
|
||||
try {
|
||||
let result = await this.Model.del(params.id);
|
||||
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);
|
||||
@ -117,7 +106,6 @@ class followController extends baseController {
|
||||
* @method GET
|
||||
* @category follow
|
||||
* @foldnumber 10
|
||||
* @param {Number} uid 用户id
|
||||
* @param {Number} projectid 项目id
|
||||
* @param {String} projectname 项目名
|
||||
* @param {String} icon 项目icon
|
||||
@ -128,22 +116,20 @@ class followController extends baseController {
|
||||
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不为空');
|
||||
}
|
||||
let uid = this.getUid()
|
||||
|
||||
if (!params.projectid) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 400, '项目id不能为空');
|
||||
}
|
||||
|
||||
let checkRepeat = await this.Model.checkProjectRepeat(params.uid,params.projectid);
|
||||
let checkRepeat = await this.Model.checkProjectRepeat(uid,params.projectid);
|
||||
|
||||
if (checkRepeat) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 401, '项目已关注');
|
||||
}
|
||||
@ -159,12 +145,11 @@ class followController extends baseController {
|
||||
}
|
||||
|
||||
let data = {
|
||||
uid: params.uid,
|
||||
uid: uid,
|
||||
projectid: params.projectid,
|
||||
projectname: params.projectname,
|
||||
icon: params.icon,
|
||||
color: params.color
|
||||
|
||||
};
|
||||
|
||||
try {
|
||||
|
@ -27,6 +27,7 @@
|
||||
<pre class="brush: js;">
|
||||
import projectModel from '../models/project.js';
|
||||
import yapi from '../yapi.js';
|
||||
import _ from "underscore"
|
||||
import baseController from './base.js';
|
||||
import interfaceModel from '../models/interface.js';
|
||||
import interfaceColModel from '../models/interfaceCol.js';
|
||||
@ -36,6 +37,7 @@ import groupModel from '../models/group';
|
||||
import commons from '../utils/commons.js';
|
||||
import userModel from '../models/user.js';
|
||||
import logModel from '../models/log.js';
|
||||
import followModel from '../models/follow.js';
|
||||
import Mock from 'mockjs';
|
||||
const send = require('koa-send');
|
||||
|
||||
@ -46,6 +48,7 @@ class projectController extends baseController {
|
||||
this.Model = yapi.getInst(projectModel);
|
||||
this.groupModel = yapi.getInst(groupModel);
|
||||
this.logModel = yapi.getInst(logModel);
|
||||
this.followModel = yapi.getInst(followModel);
|
||||
}
|
||||
|
||||
handleBasepath(basepath) {
|
||||
@ -351,8 +354,18 @@ class projectController extends baseController {
|
||||
let auth =await this.checkAuth(group_id, 'group', 'edit')
|
||||
try {
|
||||
let result = await this.Model.list(group_id, auth);
|
||||
let follow = await this.followModel.list(this.getUid());
|
||||
let uids = [];
|
||||
result.forEach((item) => {
|
||||
result.forEach((item, index) => {
|
||||
result[index] = item.toObject();
|
||||
let f = _.find(follow, (fol)=>{
|
||||
return fol.projectid === item._id
|
||||
})
|
||||
if(f){
|
||||
result[index].follow = true;
|
||||
}else{
|
||||
result[index].follow = false;
|
||||
}
|
||||
if (uids.indexOf(item.uid) === -1) {
|
||||
uids.push(item.uid);
|
||||
}
|
||||
@ -420,7 +433,6 @@ class projectController extends baseController {
|
||||
*/
|
||||
async changeMemberRole(ctx){
|
||||
let params = ctx.request.body;
|
||||
console.log(params);
|
||||
let projectInst = yapi.getInst(projectModel);
|
||||
if (!params.member_uid) {
|
||||
return ctx.body = yapi.commons.resReturn(null, 400, '项目成员uid不能为空');
|
||||
@ -475,7 +487,6 @@ class projectController extends baseController {
|
||||
* @returns {Object}
|
||||
* @example ./api/project/up.json
|
||||
*/
|
||||
|
||||
async up(ctx) {
|
||||
try {
|
||||
let id = ctx.request.body.id;
|
||||
@ -527,6 +538,21 @@ class projectController extends baseController {
|
||||
if(params.color) data.color = params.color;
|
||||
if(params.icon) data.icon = params.icon;
|
||||
let result = await this.Model.up(id, data);
|
||||
// try{
|
||||
// let data = {};
|
||||
// if(params.name){
|
||||
// data.projectname = params.name;
|
||||
// }
|
||||
// if(params.icon){
|
||||
// data.icon = params.icon;
|
||||
// }
|
||||
// if(params.color){
|
||||
// data.color = params.color;
|
||||
// }
|
||||
// this.followModel.updateById(this.getUid(),id,data);
|
||||
// }catch(e){
|
||||
// yapi.commons.log(e, 'error'); // eslint-disable-line
|
||||
// }
|
||||
|
||||
let username = this.getUsername();
|
||||
yapi.commons.saveLog({
|
||||
@ -544,6 +570,38 @@ class projectController extends baseController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目头像
|
||||
* @interface /project/upset
|
||||
* @method POST
|
||||
* @category project
|
||||
* @foldnumber 10
|
||||
* @param {Number} id
|
||||
* @param {String} color
|
||||
* @param {String} icon
|
||||
* @return {Object}
|
||||
*/
|
||||
async upSet(ctx){
|
||||
let id = ctx.request.body.id;
|
||||
let data = {};
|
||||
data.color = ctx.request.body.color;
|
||||
data.icon = ctx.request.body.icon;
|
||||
if(!id){
|
||||
return ctx.body = yapi.commons.resReturn(null, 405, '项目id不能为空');
|
||||
}
|
||||
try{
|
||||
let result = await this.Model.up(id, data);
|
||||
ctx.body = yapi.commons.resReturn(result);
|
||||
}catch(e){
|
||||
ctx.body = yapi.commons.resReturn(null, 402, e.message);
|
||||
}
|
||||
try{
|
||||
this.followModel.updateById(this.getUid(),id,data).then();
|
||||
}catch(e){
|
||||
yapi.commons.log(e, 'error'); // eslint-disable-line
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 模糊搜索项目名称或者组名称
|
||||
* @interface /project/search
|
||||
|
Loading…
Reference in New Issue
Block a user