* 添加项目成员 * @interface /project/add_member * @method POST * @category project * @foldnumber 10 * @param {Number} id 项目id,不能为空 * @param {Array} member_uid 项目成员uid,不能为空 * @returns {Object} * @example ./api/project/add_member.json
(ctx)
| 393 | * @example ./api/project/add_member.json |
| 394 | */ |
| 395 | async addMember(ctx) { |
| 396 | let params = ctx.params; |
| 397 | if ((await this.checkAuth(params.id, 'project', 'edit')) !== true) { |
| 398 | return (ctx.body = yapi.commons.resReturn(null, 405, '没有权限')); |
| 399 | } |
| 400 | |
| 401 | params.role = ['owner', 'dev', 'guest'].find(v => v === params.role) || 'dev'; |
| 402 | let add_members = []; |
| 403 | let exist_members = []; |
| 404 | let no_members = []; |
| 405 | for (let i = 0, len = params.member_uids.length; i < len; i++) { |
| 406 | let id = params.member_uids[i]; |
| 407 | let check = await this.Model.checkMemberRepeat(params.id, id); |
| 408 | let userdata = await yapi.commons.getUserdata(id, params.role); |
| 409 | if (check > 0) { |
| 410 | exist_members.push(userdata); |
| 411 | } else if (!userdata) { |
| 412 | no_members.push(id); |
| 413 | } else { |
| 414 | add_members.push(userdata); |
| 415 | } |
| 416 | } |
| 417 | |
| 418 | let result = await this.Model.addMember(params.id, add_members); |
| 419 | if (add_members.length) { |
| 420 | let members = add_members.map(item => { |
| 421 | return `<a href = "/user/profile/${item.uid}">${item.username}</a>`; |
| 422 | }); |
| 423 | members = members.join('、'); |
| 424 | let username = this.getUsername(); |
| 425 | yapi.commons.saveLog({ |
| 426 | content: `<a href="/user/profile/${this.getUid()}">${username}</a> 添加了项目成员 ${members}`, |
| 427 | type: 'project', |
| 428 | uid: this.getUid(), |
| 429 | username: username, |
| 430 | typeid: params.id |
| 431 | }); |
| 432 | } |
| 433 | ctx.body = yapi.commons.resReturn({ |
| 434 | result, |
| 435 | add_members, |
| 436 | exist_members, |
| 437 | no_members |
| 438 | }); |
| 439 | } |
| 440 | /** |
| 441 | * 删除项目成员 |
| 442 | * @interface /project/del_member |
no test coverage detected