public async Task <IActionResult> TransferTeamAsync([FromBody] TransferTeamDto dto) { string openId = GetOpenId(); try { var data = await _teamServices.TransferTeamAsync(dto, openId); return(SuccessMsg("转让成功!")); } catch (Exception err) { _logger.Error(typeof(TeamController), "转让失败!", new Exception(err.Message)); return(FailedMsg(err.Message)); } }
/// <summary> /// 团队转让 /// </summary> /// <param name="dto"></param> /// <param name="openId"></param> /// <returns></returns> public async Task <bool> TransferTeamAsync(TransferTeamDto dto, string openId) { if (dto.TeamId == null) { throw new Exception("团队Id为空!"); } if (dto.MemberId == null) { throw new Exception("成员Id为空!"); } if (openId == null) { throw new Exception("用户唯一标识为空!"); } var UserId = db.Queryable <Wx_UserInfo>().Where(a => a.OpenId == openId).First()?.ID; //找到UserId var Role = db.Queryable <TeamMember, Role>((a, b) => new JoinQueryInfos ( JoinType.Inner, a.RoleId == b.ID )).Where((a, b) => a.TeamId == dto.TeamId && a.JoinedUserId == UserId) .Select((a, b) => new { RoleName = b.Name }).First(); if (Role.RoleName != AppConsts.RoleName.Creator) { throw new Exception("您不是团队拥有者,无此权限!"); } Role role = new Role(); var result = 0; string CreatorRoleId = string.Empty; //创建者角色Id string AdminRoleId = string.Empty; //管理角色Id return(await Task.Run(() => { db.BeginTran(); //找到转让人Id var transId = db.Queryable <TeamMember>().Where(t => t.TeamId == dto.TeamId && t.JoinedUserId == UserId).First()?.ID; AdminRoleId = db.Queryable <Role>().Where(r => r.TeamId == dto.TeamId && r.Name == AppConsts.RoleName.Admin).First()?.ID; CreatorRoleId = db.Queryable <Role>().Where(r => r.TeamId == dto.TeamId && r.Name == AppConsts.RoleName.Creator).First()?.ID; //团队转让前先把原有的创建者角色修改为管理员 db.Updateable <TeamMember>().SetColumns(a => new TeamMember() { RoleId = AdminRoleId }) .Where(t => t.ID == transId) .ExecuteCommand(); //更新团队创建者 db.Updateable <Team>().SetColumns(a => new Team() { LastModifyUserId = UserId, LastModifyTime = DateTime.Now }) .Where(a => a.ID == dto.TeamId) .ExecuteCommand(); //更新成员角色、修改时间 result = db.Updateable <TeamMember>().SetColumns(a => new TeamMember() { RoleId = CreatorRoleId, LastModifyTime = DateTime.Now }) .Where(a => a.ID == dto.MemberId) .ExecuteCommand(); db.CommitTran(); return result > 0; })); }
/// <summary> /// 团队转让 /// </summary> /// <param name="dto"></param> /// <param name="openId"></param> /// <returns></returns> public async Task <bool> TransferTeamAsync(TransferTeamDto dto, string openId) { return(await _teameDal.TransferTeamAsync(dto, openId)); }