MCPcopy Index your code
hub / github.com/YMFE/yapi / addMember

Method addMember

server/controllers/group.js:246–291  ·  view source on GitHub ↗

* 添加项目分组成员 * @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)

Source from the content-addressed store, hash-verified

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 * 修改项目分组成员角色

Callers 1

addMethod · 0.45

Calls 4

getUserdataMethod · 0.95
getUsernameMethod · 0.80
checkMemberRepeatMethod · 0.45
getUidMethod · 0.45

Tested by

no test coverage detected