mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-04-30 04:45:56 +08:00
fix webapi 未设置代码生成 Load加载数据报错,MVC页面没有代码生成界面 https://gitee.com/yubaolee/OpenAuth.Core/issues/I4RLEP
This commit is contained in:
parent
3f077f5d80
commit
ac0dfef321
@ -40,7 +40,8 @@ namespace OpenAuth.App
|
||||
{
|
||||
throw new CommonException("登录已过期", Define.INVALID_TOKEN);
|
||||
}
|
||||
var columnFields = loginContext.GetTableColumns("<%=Table.Name%>");
|
||||
//如果是WebAPI,请务必改为loginContext.GetTableColumns("<%=Table.Name%>");
|
||||
var columnFields = loginContext.GetTableColumnsFromDb("<%=Table.Name%>");
|
||||
if (columnFields == null || columnFields.Count == 0)
|
||||
{
|
||||
throw new Exception("请在代码生成界面配置Category表的字段属性");
|
||||
|
@ -73,6 +73,17 @@ namespace OpenAuth.App
|
||||
{
|
||||
return _strategy.GetTableColumns(moduleCode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取角色可访问的字段信息,因为MVC版本没有代码生成器,所以只能通过直接读取数据库表结构的方式
|
||||
/// </summary>
|
||||
/// <param name="moduleCode"></param>
|
||||
/// <returns></returns>
|
||||
[Obsolete("获取角色可访问的字段信息,因为MVC版本没有代码生成器,所以只能通过直接读取数据库表结构的方式")]
|
||||
public List<BuilderTableColumn> GetTableColumnsFromDb(string moduleCode)
|
||||
{
|
||||
return _strategy.GetTableColumnsFromDb(moduleCode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -149,6 +149,24 @@ namespace OpenAuth.App
|
||||
return allprops.Where(u => props.Contains(u.ColumnName)).ToList();
|
||||
}
|
||||
|
||||
public List<BuilderTableColumn> GetTableColumnsFromDb(string moduleCode)
|
||||
{
|
||||
var allprops = _dbExtension.GetTableColumnsFromDb(moduleCode);
|
||||
|
||||
//如果是系统模块,直接返回所有字段。防止开发者把模块配置成系统模块,还在外层调用loginContext.GetProperties("xxxx");
|
||||
bool? isSysModule = UnitWork.FirstOrDefault<Module>(u => u.Code == moduleCode)?.IsSys;
|
||||
if (isSysModule!= null && isSysModule.Value)
|
||||
{
|
||||
return allprops.ToList();
|
||||
}
|
||||
|
||||
var props =UnitWork.Find<Relevance>(u =>
|
||||
u.Key == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
|
||||
.Select(u => u.ThirdId);
|
||||
|
||||
return allprops.Where(u => props.Contains(u.ColumnName)).ToList();
|
||||
}
|
||||
|
||||
//用户角色
|
||||
|
||||
public NormalAuthStrategy(IUnitWork<OpenAuthDBContext> unitWork, IRepository<User,OpenAuthDBContext> repository, DbExtension dbExtension) : base(unitWork, repository,null)
|
||||
|
@ -98,6 +98,11 @@ namespace OpenAuth.App
|
||||
return UnitWork.Find<BuilderTableColumn>(u => u.TableName.ToLower() == moduleCode.ToLower()).ToList();
|
||||
}
|
||||
|
||||
public List<BuilderTableColumn> GetTableColumnsFromDb(string moduleCode)
|
||||
{
|
||||
return _dbExtension.GetTableColumnsFromDb(moduleCode);
|
||||
}
|
||||
|
||||
|
||||
public SystemAuthStrategy(IUnitWork<OpenAuthDBContext> unitWork, IRepository<User,OpenAuthDBContext> repository, DbExtension dbExtension) : base(unitWork, repository, null)
|
||||
{
|
||||
|
@ -34,13 +34,14 @@ namespace OpenAuth.App
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取数据库一个表的所有属性值及属性描述
|
||||
/// 通过实体获取字段定义,因为MVC版本没有代码生成界面,只能通过这种方式
|
||||
/// </summary>
|
||||
/// <param name="moduleName">模块名称/表名</param>
|
||||
/// <returns></returns>
|
||||
public List<KeyDescription> GetProperties(string moduleName)
|
||||
[Obsolete("因为MVC版本没有代码生成界面,只能通过这种方式")]
|
||||
public List<BuilderTableColumn> GetTableColumnsFromDb(string moduleName)
|
||||
{
|
||||
var result = new List<KeyDescription>();
|
||||
var result = new List<BuilderTableColumn>();
|
||||
const string domain = "openauth.repository.domain.";
|
||||
IEntityType entity = null;
|
||||
_contexts.ForEach(u =>
|
||||
@ -67,12 +68,13 @@ namespace OpenAuth.App
|
||||
{
|
||||
typeName = Nullable.GetUnderlyingType(property.PropertyType).Name;
|
||||
}
|
||||
result.Add(new KeyDescription
|
||||
result.Add(new BuilderTableColumn
|
||||
{
|
||||
Key = property.Name,
|
||||
Description = description,
|
||||
Browsable = browsable,
|
||||
Type = typeName
|
||||
ColumnName = property.Name,
|
||||
TableName = moduleName,
|
||||
Comment = description,
|
||||
IsList = browsable,
|
||||
ColumnType = typeName
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,13 @@ namespace OpenAuth.App
|
||||
/// <param name="moduleCode"></param>
|
||||
/// <returns></returns>
|
||||
List<BuilderTableColumn> GetTableColumns(string moduleCode);
|
||||
/// <summary>
|
||||
/// 获取角色可访问的字段信息,因为MVC版本没有代码生成器,所以只能通过直接读取数据库表结构的方式
|
||||
/// </summary>
|
||||
/// <param name="moduleCode"></param>
|
||||
/// <returns></returns>
|
||||
[Obsolete("获取角色可访问的字段信息,因为MVC版本没有代码生成器,所以只能通过直接读取数据库表结构的方式")]
|
||||
List<BuilderTableColumn> GetTableColumnsFromDb(string moduleCode);
|
||||
|
||||
}
|
||||
}
|
@ -16,7 +16,7 @@ namespace OpenAuth.App.Test
|
||||
|
||||
var app = _autofacServiceProvider.GetService<DbExtension>();
|
||||
|
||||
var result = app.GetProperties("Category");
|
||||
var result = app.GetTableColumnsFromDb("Category");
|
||||
Console.WriteLine(JsonHelper.Instance.Serialize(result));
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,11 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using Infrastructure;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using NUnit.Framework;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using MySqlConnector;
|
||||
using OpenAuth.Repository.Domain;
|
||||
using OpenAuth.Repository.Interface;
|
||||
|
||||
@ -24,5 +27,19 @@ namespace OpenAuth.Repository.Test
|
||||
Console.WriteLine(JsonHelper.Instance.Serialize(users));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 测试Mysql执行存储过程
|
||||
/// </summary>
|
||||
[Test]
|
||||
public void ExecProcedureWithParam()
|
||||
{
|
||||
var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>();
|
||||
var param = new MySqlParameter("keyword", SqlDbType.NVarChar);
|
||||
param.Value = "test%";
|
||||
var users = unitWork.ExecProcedure<User>("sp_alluser", new []{param});
|
||||
Console.WriteLine(JsonHelper.Instance.Serialize(users));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user