/// <summary>
        /// 根据用户ID集合查询用户角色列表,包含角色信息
        /// </summary>
        /// <param name="userIds">用户ID集合</param>
        /// <param name="connectionId">连接ID</param>
        /// <returns>用户角色列表</returns>
        public IList <UserRoleInfo> SelectContainsRoleByUserIds(int[] userIds, string connectionId = null)
        {
            IList <UserRoleInfo> result     = null;
            DynamicParameters    parameters = new DynamicParameters();
            StringBuilder        userIdSql  = new StringBuilder();

            for (int i = 0; i < userIds.Length; i++)
            {
                string name = $"@UserId{i}";
                parameters.Add(name, userIds[i]);
                userIdSql.AppendFormat("{0},", name);
            }
            userIdSql.Remove(userIdSql.Length - 1, 1);
            DbConnectionManager.BrainpowerExecute(connectionId, this, (connId, dbConn) =>
            {
                string sql = $"SELECT UR.user_id UserId,{RolePersistence.AllFieldMapProps().JoinSelectPropMapFields("R.")} FROM {Table} UR"
                             + $" INNER JOIN `{RolePersistence.Table}` R ON R.id=UR.role_id AND UR.user_id IN({userIdSql.ToString()})";

                Log.TraceAsync(sql, source: this.GetType().Name, tags: "SelectContainsRoleByUserIds");
                result = dbConn.Query <UserRoleInfo, RoleInfo, UserRoleInfo>(sql, (ur, r) =>
                {
                    ur.Role = r;
                    return(ur);
                }, parameters).AsList();
            }, AccessMode.SLAVE);

            return(result);
        }
        /// <summary>
        /// 根据用户ID查询角色列表
        /// </summary>
        /// <param name="userId">用户ID</param>
        /// <param name="connectionId">连接ID</param>
        /// <returns>角色列表</returns>
        public IList <RoleInfo> SelectRolesByUserId(int userId, string connectionId = null)
        {
            IList <RoleInfo> result = null;

            DbConnectionManager.BrainpowerExecute(connectionId, this, (connId, dbConn) =>
            {
                string sql = $"SELECT {RolePersistence.AllFieldMapProps().JoinSelectPropMapFields("R.")} FROM `{RolePersistence.Table}` R"
                             + $" INNER JOIN `{Table}` UR ON R.id=UR.role_id AND UR.user_id=@UserId";
                Log.TraceAsync(sql, source: this.GetType().Name, tags: "SelectRolesByUserId");
                result = dbConn.Query <RoleInfo>(sql, new { UserId = userId }).AsList();
            }, AccessMode.SLAVE);

            return(result);
        }