* 修改项目成员角色 * @interface /project/change_member_role * @method POST * @category project * @foldnumber 10 * @param {String} id 项目id * @param {String} member_uid 项目成员uid * @param {String} role 权限 ['owner'|'dev'] * @returns {Object} * @example
(ctx)
| 644 | * @example |
| 645 | */ |
| 646 | async changeMemberRole(ctx) { |
| 647 | let params = ctx.request.body; |
| 648 | let projectInst = yapi.getInst(projectModel); |
| 649 | |
| 650 | var check = await projectInst.checkMemberRepeat(params.id, params.member_uid); |
| 651 | if (check === 0) { |
| 652 | return (ctx.body = yapi.commons.resReturn(null, 400, '项目成员不存在')); |
| 653 | } |
| 654 | if ((await this.checkAuth(params.id, 'project', 'danger')) !== true) { |
| 655 | return (ctx.body = yapi.commons.resReturn(null, 405, '没有权限')); |
| 656 | } |
| 657 | |
| 658 | params.role = ['owner', 'dev', 'guest'].find(v => v === params.role) || 'dev'; |
| 659 | let rolename = { |
| 660 | owner: '组长', |
| 661 | dev: '开发者', |
| 662 | guest: '访客' |
| 663 | }; |
| 664 | |
| 665 | let result = await projectInst.changeMemberRole(params.id, params.member_uid, params.role); |
| 666 | |
| 667 | let username = this.getUsername(); |
| 668 | yapi |
| 669 | .getInst(userModel) |
| 670 | .findById(params.member_uid) |
| 671 | .then(member => { |
| 672 | yapi.commons.saveLog({ |
| 673 | content: `<a href="/user/profile/${this.getUid()}">${username}</a> 修改了项目中的成员 <a href="/user/profile/${ |
| 674 | params.member_uid |
| 675 | }">${member.username}</a> 的角色为 "${rolename[params.role]}"`, |
| 676 | type: 'project', |
| 677 | uid: this.getUid(), |
| 678 | username: username, |
| 679 | typeid: params.id |
| 680 | }); |
| 681 | }); |
| 682 | ctx.body = yapi.commons.resReturn(result); |
| 683 | } |
| 684 | |
| 685 | /** |
| 686 | * 修改项目成员是否收到邮件通知 |
nothing calls this directly
no test coverage detected