Exemple #1
0
        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));
            }
        }
Exemple #2
0
        /// <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;
            }));
        }
Exemple #3
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));
 }