* 添加项目分组成员 * @interface /group/add_member * @method POST * @category group * @foldnumber 10 * @param {String} id 项目分组id * @param {String} member_uids 项目分组成员[uid] * @param {String} role 成员角色,owner or dev or guest * @returns {Object} * @example
(ctx)
| 244 | * @example |
| 245 | */ |
| 246 | async addMember(ctx) { |
| 247 | let params = ctx.params; |
| 248 | let groupInst = yapi.getInst(groupModel); |
| 249 | |
| 250 | params.role = ['owner', 'dev', 'guest'].find(v => v === params.role) || 'dev'; |
| 251 | let add_members = []; |
| 252 | let exist_members = []; |
| 253 | let no_members = []; |
| 254 | for (let i = 0, len = params.member_uids.length; i < len; i++) { |
| 255 | let id = params.member_uids[i]; |
| 256 | let check = await groupInst.checkMemberRepeat(params.id, id); |
| 257 | let userdata = await this.getUserdata(id, params.role); |
| 258 | if (check > 0) { |
| 259 | exist_members.push(userdata); |
| 260 | } else if (!userdata) { |
| 261 | no_members.push(id); |
| 262 | } else { |
| 263 | userdata.role !== 'admin' && add_members.push(userdata); |
| 264 | delete userdata._role; |
| 265 | } |
| 266 | } |
| 267 | |
| 268 | let result = await groupInst.addMember(params.id, add_members); |
| 269 | let username = this.getUsername(); |
| 270 | if (add_members.length) { |
| 271 | let members = add_members.map(item => { |
| 272 | return `<a href = "/user/profile/${item.uid}">${item.username}</a>`; |
| 273 | }); |
| 274 | members = members.join('、'); |
| 275 | yapi.commons.saveLog({ |
| 276 | content: `<a href="/user/profile/${this.getUid()}">${username}</a> 新增了分组成员 ${members} 为 ${ |
| 277 | rolename[params.role] |
| 278 | }`, |
| 279 | type: 'group', |
| 280 | uid: this.getUid(), |
| 281 | username: username, |
| 282 | typeid: params.id |
| 283 | }); |
| 284 | } |
| 285 | ctx.body = yapi.commons.resReturn({ |
| 286 | result, |
| 287 | add_members, |
| 288 | exist_members, |
| 289 | no_members |
| 290 | }); |
| 291 | } |
| 292 | |
| 293 | /** |
| 294 | * 修改项目分组成员角色 |
no test coverage detected