Ejemplo n.º 1
0
        public IActionResult FindTransactionByUser([FromBody] UserIdReq req)
        {
            var res = new SingleRsp();

            res = _svc.findTransactionByUser(req.UserId);
            return(Ok(res));
        }
Ejemplo n.º 2
0
        public string GetUserInfoById(UserIdReq req)
        {
            var userId = Convert.ToInt32(req.userId);
            var r      = AllFunc.Instance.GetUserInfo(userId);

            return(JsonConvert.SerializeObject(r));
        }
Ejemplo n.º 3
0
        public IActionResult GetBasket([FromBody] UserIdReq req)
        {
            var res = new SingleRsp();

            res = _svc.GetBasket(req.UserId);
            return(Ok(res));
        }
        /// <summary>
        /// 通过id查找用户
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task <UserReply> FindById(UserIdReq request, ServerCallContext context)
        {
            ApplicationUser user = await userManager.Users.FirstOrDefaultAsync(e => e.Id == request.UserId).ConfigureAwait(false);

            if (user == null)
            {
                throw new RpcException(new Status(StatusCode.NotFound, "用户不存在"));
            }

            //如果名字为空,可能是第三方账号登录  name保存在UserClaims表
            if (string.IsNullOrEmpty(user.Name))
            {
                //第三方登录提供商
                var extendProvider = await applicationDbContext.UserLogins
                                     .FirstOrDefaultAsync(e => e.UserId == request.UserId)
                                     .ConfigureAwait(false);

                if (extendProvider != null)
                {
                    user.Name = $"[{extendProvider.ProviderDisplayName}]" + (await applicationDbContext.UserClaims
                                                                             .FirstOrDefaultAsync(e => e.UserId == request.UserId && e.ClaimType == "name")
                                                                             .ConfigureAwait(false))?.ClaimValue;
                }
            }
            var userReply = mapper.Map <UserReply>(user);

            return(userReply);
        }
        /// <summary>
        /// 通过id获取用户拥有的角色
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task <UserRolesReply> GetRolesOfUser(UserIdReq request, ServerCallContext context)
        {
            var user = await userManager.Users.FirstOrDefaultAsync(e => e.Id == request.UserId).ConfigureAwait(false);

            if (user == null)
            {
                throw new RpcException(new Status(StatusCode.NotFound, "用户未找到"));
            }

            var roles = await userManager.GetRolesAsync(user).ConfigureAwait(false);

            UserRolesReply userRolesReply = new UserRolesReply();

            userRolesReply.Roles.AddRange(roles);
            return(userRolesReply);
        }
        /// <summary>
        /// 根据用户id返回用户的权限列表
        /// </summary>
        /// <param name="request">用户id </param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override async Task <StringListRes> GetUserPermissons(UserIdReq request, ServerCallContext context)
        {
            //查出该用户所有的角色id
            var userRoleIds = await applicationDbContext.UserRoles
                              .Where(e => e.UserId == request.UserId)
                              .Select(e => e.RoleId).ToListAsync().ConfigureAwait(false);

            //角色claim表中身份包含该权限id
            List <string> permissonIds = await applicationDbContext.RolePermissons
                                         .Where(e => userRoleIds.Contains(e.RoleId))
                                         .Distinct()
                                         .Select(e => e.PermissonId)
                                         .ToListAsync().ConfigureAwait(false);

            List <string> permissons = new List <string>();

            foreach (var id in permissonIds)
            {
                //获取声明类型信息
                var permisson = await applicationDbContext.Permissons
                                .AsNoTracking()
                                .FirstOrDefaultAsync(e => e.Id == id && e.Enabled == true)
                                .ConfigureAwait(false);

                if (permisson != null)
                {
                    permissons.Add(permisson.Name);
                }
            }

            permissons = permissons.Distinct().ToList();

            StringListRes stringListRes = new StringListRes();

            stringListRes.Items.AddRange(permissons);
            return(stringListRes);
        }