新增数据表栏位值唯一性校验

master
xiaochanghai 1 year ago
parent bd535fe7f6
commit 8ea12c84a3
  1. 9
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  2. 4
      Tiobon.Core.Api/Tiobon.Core.xml
  3. 4
      Tiobon.Core.Api/appsettings.json
  4. 59
      Tiobon.Core.Common/DB/Dapper/Entity/EntityAttribute.cs
  5. 47
      Tiobon.Core.Common/DB/Dapper/Extensions/EntityProperties.cs
  6. 20
      Tiobon.Core.Common/Enums/ModifyType.cs
  7. 8
      Tiobon.Core.Model/Entity/AttributeManager/EntityAttribute.cs
  8. 10
      Tiobon.Core.Model/Models/Ghra/Ghra_Grade.cs
  9. 113
      Tiobon.Core.Services/BASE/BaseServices.cs
  10. 2849
      Tiobon.Core/Tiobon.Core.Model.xml
  11. 662
      Tiobon.Core/Tiobon.Core.xml

@ -576,12 +576,12 @@
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghra_Grade.GradeNo"> <member name="P:Tiobon.Core.Model.Models.Ghra_Grade.GradeNo">
<summary> <summary>
GradeNo 编号
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghra_Grade.GradeName"> <member name="P:Tiobon.Core.Model.Models.Ghra_Grade.GradeName">
<summary> <summary>
GradeName 名称
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.Models.Ghra_Grade.MKey"> <member name="P:Tiobon.Core.Model.Models.Ghra_Grade.MKey">
@ -1722,6 +1722,11 @@
表中文名 表中文名
</summary> </summary>
</member> </member>
<member name="P:Tiobon.Core.Model.EntityColumnAttribute.IsOnly">
<summary>
是否校验唯一性
</summary>
</member>
<member name="T:Tiobon.Core.Model.IDS4DbModels.ApplicationRole"> <member name="T:Tiobon.Core.Model.IDS4DbModels.ApplicationRole">
<summary> <summary>
以下model 来自ids4项目,多库模式,为了调取ids4数据 以下model 来自ids4项目,多库模式,为了调取ids4数据

@ -278,11 +278,11 @@
登录管理【无权限】 登录管理【无权限】
</summary> </summary>
</member> </member>
<member name="M:Tiobon.Core.Controllers.LoginController.#ctor(Tiobon.Core.IServices.ISysUserInfoServices,Tiobon.Core.IServices.IUserRoleServices,Tiobon.Core.IServices.IRoleServices,Tiobon.Core.AuthHelper.PermissionRequirement,Tiobon.Core.IServices.IRoleModulePermissionServices,Microsoft.Extensions.Logging.ILogger{Tiobon.Core.Controllers.LoginController})"> <member name="M:Tiobon.Core.Controllers.LoginController.#ctor(Tiobon.Core.IServices.IGhrs_UserServices,Tiobon.Core.IServices.IUserRoleServices,Tiobon.Core.IServices.IRoleServices,Tiobon.Core.AuthHelper.PermissionRequirement,Tiobon.Core.IServices.IRoleModulePermissionServices,Microsoft.Extensions.Logging.ILogger{Tiobon.Core.Controllers.LoginController})">
<summary> <summary>
构造函数注入 构造函数注入
</summary> </summary>
<param name="sysUserInfoServices"></param> <param name="ghrs_UserServices"></param>
<param name="userRoleServices"></param> <param name="userRoleServices"></param>
<param name="roleServices"></param> <param name="roleServices"></param>
<param name="requirement"></param> <param name="requirement"></param>

@ -107,8 +107,8 @@
"ConnId": "WMTiobon_MSSQL_Main", "ConnId": "WMTiobon_MSSQL_Main",
"DBType": 1, "DBType": 1,
"Enabled": true, "Enabled": true,
//"Connection": "Data Source=47.99.54.186;User ID=GHR;Password=Tiobon20190101;Database=GHR30;Encrypt=True;TrustServerCertificate=True;", "Connection": "Data Source=47.99.54.186;User ID=GHR;Password=Tiobon20190101;Database=GHR30;Encrypt=True;TrustServerCertificate=True;",
"Connection": "Data Source=116.204.98.209;User ID=Tiobon;Password=&($!4UGUyU#$2sp9O;Database=Tiobon;Encrypt=True;TrustServerCertificate=True;", //"Connection": "Data Source=116.204.98.209;User ID=Tiobon;Password=&($!4UGUyU#$2sp9O;Database=Tiobon;Encrypt=True;TrustServerCertificate=True;",
"ProviderName": "System.Data.SqlClient" "ProviderName": "System.Data.SqlClient"
}, },
{ {

@ -1,38 +1,31 @@
using System; namespace Tiobon.Core.Common.DB.Dapper.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tiobon.Core.Common.DB.Dapper.Entity public class EntityAttribute : Attribute
{ {
public class EntityAttribute : Attribute /// <summary>
{ /// 真实表名(数据库表名,若没有填写默认实体为表名)
/// <summary> /// </summary>
/// 真实表名(数据库表名,若没有填写默认实体为表名) public string TableName { get; set; }
/// </summary> /// <summary>
public string TableName { get; set; } /// 表中文名
/// <summary> /// </summary>
/// 表中文名 public string TableCnName { get; set; }
/// </summary> /// <summary>
public string TableCnName { get; set; } /// 子表
/// <summary> /// </summary>
/// 子表 public Type[] DetailTable { get; set; }
/// </summary> /// <summary>
public Type[] DetailTable { get; set; } /// 子表中文名
/// <summary> /// </summary>
/// 子表中文名 public string DetailTableCnName { get; set; }
/// </summary> /// <summary>
public string DetailTableCnName { get; set; } /// 数据库
/// <summary> /// </summary>
/// 数据库 public string DBServer { get; set; }
/// </summary>
public string DBServer { get; set; }
//是否开启用户数据权限,true=用户只能操作自己(及下级角色)创建的数据,如:查询、删除、修改等操作 //是否开启用户数据权限,true=用户只能操作自己(及下级角色)创建的数据,如:查询、删除、修改等操作
public bool CurrentUserPermission { get; set; } public bool CurrentUserPermission { get; set; }
public Type ApiInput { get; set; } public Type ApiInput { get; set; }
public Type ApiOutput { get; set; } public Type ApiOutput { get; set; }
}
} }

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using System.Data; using System.Data;
@ -8,6 +9,10 @@ using System.Linq.Expressions;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using Tiobon.Core.Common.DB.Dapper.Entity; using Tiobon.Core.Common.DB.Dapper.Entity;
using static Dapper.SqlMapper;
using Tiobon.Core.Model.Models;
using Tiobon.Core.Model;
using AutoMapper.Execution;
namespace Tiobon.Core.Common.DB.Dapper.Extensions; namespace Tiobon.Core.Common.DB.Dapper.Extensions;
@ -525,6 +530,42 @@ public static class EntityProperties
return displayName; return displayName;
} }
public static string GetDescription(this PropertyInfo type)
{
Attribute attribute = type.GetCustomAttribute(typeof(DescriptionAttribute));
if (attribute != null && attribute is DescriptionAttribute)
{
return (attribute as DescriptionAttribute).Description ?? type.Name;
}
return type.Name;
}
public static void GetOnlyList<T>(this T entity, out List<string> names, out List<object> values, out List<string> descriptions)
{
names = new List<string>();
values = new List<object>();
descriptions = new List<string>();
PropertyInfo[] propertyInfo = typeof(T).GetProperties().ToArray();
foreach (PropertyInfo property in propertyInfo)
{
//paramsList.Add(property.Name);
object val = property.GetValue(entity);
object objAtrr = property.GetTypeCustomAttributes(typeof(EntityColumnAttribute), out bool asType);
var description = property.GetDescription();
if (property.ContainsCustomAttributes(typeof(EntityColumnAttribute)))
{
var is1 = ((EntityColumnAttribute)objAtrr).IsOnly;
if (is1)
{
names.Add(property.Name);
values.Add(val);
descriptions.Add(description);
}
}
}
}
/// <summary> /// <summary>
/// 获取属性的指定属性 /// 获取属性的指定属性
/// </summary> /// </summary>
@ -589,10 +630,10 @@ public static class EntityProperties
/// <returns></returns> /// <returns></returns>
public static string GetEntityTableName(this Type type) public static string GetEntityTableName(this Type type)
{ {
Attribute attribute = type.GetCustomAttribute(typeof(EntityAttribute)); Attribute attribute = type.GetCustomAttribute(typeof(Entity.EntityAttribute));
if (attribute != null && attribute is EntityAttribute) if (attribute != null && attribute is Entity.EntityAttribute)
{ {
return (attribute as EntityAttribute).TableName ?? type.Name; return (attribute as Entity.EntityAttribute).TableName ?? type.Name;
} }
return type.Name; return type.Name;
} }

@ -0,0 +1,20 @@
namespace Tiobon.Core.Common.Enums;
/// <summary>
/// 资料修改模式
/// </summary>
public enum ModifyType
{
/// <summary>
/// 新增模式。
/// </summary>
Add,
/// <summary>
/// 修改模式。
/// </summary>
Edit,
/// <summary>
/// 删除模式
/// </summary>
Delete
}

@ -29,4 +29,12 @@
//public Type ApiInput { get; set; } //public Type ApiInput { get; set; }
//public Type ApiOutput { get; set; } //public Type ApiOutput { get; set; }
} }
public class EntityColumnAttribute : Attribute
{
/// <summary>
/// 是否校验唯一性
/// </summary>
public bool IsOnly { get; set; } = true;
}
} }

@ -29,15 +29,17 @@ namespace Tiobon.Core.Model.Models
{ {
/// <summary> /// <summary>
/// GradeNo /// 编号
/// </summary> /// </summary>
[Display(Name = "GradeNo"), Description("GradeNo"), MaxLength(100, ErrorMessage = "GradeNo 不能超过 100 个字符")] [EntityColumn]
[Display(Name = "GradeNo"), Description("编号"), MaxLength(100, ErrorMessage = "GradeNo 不能超过 100 个字符")]
public string GradeNo { get; set; } public string GradeNo { get; set; }
/// <summary> /// <summary>
/// GradeName /// 名称
/// </summary> /// </summary>
[Display(Name = "GradeName"), Description("GradeName"), MaxLength(1000, ErrorMessage = "GradeName 不能超过 1000 个字符")] [EntityColumn]
[Display(Name = "GradeName"), Description("名称"), MaxLength(1000, ErrorMessage = "GradeName 不能超过 1000 个字符")]
public string GradeName { get; set; } public string GradeName { get; set; }
/// <summary> /// <summary>

@ -3,10 +3,12 @@ using System.Linq.Expressions;
using System.Reflection; using System.Reflection;
using AgileObjects.AgileMapper; using AgileObjects.AgileMapper;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using SqlSugar; using SqlSugar;
using Tiobon.Core.Common; using Tiobon.Core.Common;
using Tiobon.Core.Common.DB.Dapper;
using Tiobon.Core.Common.DB.Dapper.Extensions; using Tiobon.Core.Common.DB.Dapper.Extensions;
using Tiobon.Core.Common.Enums;
using Tiobon.Core.Common.Extensions; using Tiobon.Core.Common.Extensions;
using Tiobon.Core.Common.Helper; using Tiobon.Core.Common.Helper;
using Tiobon.Core.Common.UserManager; using Tiobon.Core.Common.UserManager;
@ -410,7 +412,6 @@ namespace Tiobon.Core.Services.BASE
/// <returns></returns> /// <returns></returns>
public async Task<long> Add(TInsertDto entity) public async Task<long> Add(TInsertDto entity)
{ {
var userId = UserContext.Current.User_Id;
HttpRequest request = UserContext.Context.Request; HttpRequest request = UserContext.Context.Request;
var api = request.Path.ObjToString().TrimEnd('/').ToLower(); var api = request.Path.ObjToString().TrimEnd('/').ToLower();
var ip = GetUserIp(UserContext.Context); var ip = GetUserIp(UserContext.Context);
@ -421,6 +422,10 @@ namespace Tiobon.Core.Services.BASE
ent.CreateIP = ip; ent.CreateIP = ip;
ent.CreateProg = api; ent.CreateProg = api;
#region 检查是否存在相同值
CheckOnly(entity1);
#endregion
return await BaseDal.Add(entity1); return await BaseDal.Add(entity1);
} }
@ -441,6 +446,11 @@ namespace Tiobon.Core.Services.BASE
BasePoco ent = entity as BasePoco; BasePoco ent = entity as BasePoco;
ent.CreateIP = ip; ent.CreateIP = ip;
ent.CreateProg = api; ent.CreateProg = api;
#region 检查是否存在相同值
CheckOnly(entity);
#endregion
}); });
return await BaseDal.Add(list); return await BaseDal.Add(list);
} }
@ -464,6 +474,7 @@ namespace Tiobon.Core.Services.BASE
BasePoco ent = entity as BasePoco; BasePoco ent = entity as BasePoco;
ent.UpdateIP = ip; ent.UpdateIP = ip;
ent.UpdateProg = api; ent.UpdateProg = api;
CheckOnly(entity, Id);
return await BaseDal.Update(entity); return await BaseDal.Update(entity);
} }
public async Task<bool> Update(Dictionary<long, TEditDto> editModels) public async Task<bool> Update(Dictionary<long, TEditDto> editModels)
@ -484,6 +495,7 @@ namespace Tiobon.Core.Services.BASE
BasePoco ent = entity as BasePoco; BasePoco ent = entity as BasePoco;
ent.UpdateIP = ip; ent.UpdateIP = ip;
ent.UpdateProg = api; ent.UpdateProg = api;
CheckOnly(entity, keyValuePairs.Key);
entities.Add(entity); entities.Add(entity);
} }
@ -880,6 +892,103 @@ namespace Tiobon.Core.Services.BASE
Conditions = string.Empty Conditions = string.Empty
}; };
} }
public static void CheckOnly(TEntity entity, long? id = null)
{
Type entityType = typeof(TEntity);
var tableName = entityType.GetEntityTableName();
var names = new List<string>();
var values = new List<object>();
var descriptions = new List<string>();
entity.GetOnlyList(out names, out values, out descriptions);
for (int i = 0; i < names.Count; i++)
{
CheckCodeExist(tableName, names[i], values[i], id != null ? ModifyType.Edit : ModifyType.Add, descriptions[i]);
}
}
/// <summary>
/// 检查表中是否已经存在相同代码的数据
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="fieldName">字段名</param>
/// <param name="fieldValue">字段值</param>
/// <param name="modifyType">ModifyType.Add,ModifyType.Edit</param>
/// <param name="rowid">ModifyType.Edit时修改记录的ROW_ID值</param>
/// <param name="promptName">判断栏位的提示名称</param>
public static void CheckCodeExist(string tableName, string fieldName, object fieldValue, ModifyType modifyType, string promptName, long? rowid = null)
{
try
{
CheckCodeExist(tableName, fieldName, fieldValue, modifyType, rowid, promptName, null);
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 检查表中是否已经存在相同代码的数据
/// </summary>
/// <param name="tableName">表名</param>
/// <param name="fieldName">字段名</param>
/// <param name="fieldValue">字段值</param>
/// <param name="whereCondition">条件</param>
/// <param name="modifyType">ModifyType.Add,ModifyType.Edit</param>
/// <param name="rowid">ModifyType.Edit时修改记录的ROW_ID值</param>
/// <param name="promptName">判断栏位的提示名称</param>
/// <param name="whereCondition">Where后的条件,如:IS_ALCON='Y'</param>
public static bool CheckCodeExist(string tableName, string fieldName, object fieldValue, ModifyType modifyType, long? rowid, string promptName, string whereCondition)
{
try
{
bool result = false;
if (modifyType == ModifyType.Add)
{
string sql = string.Empty;
sql = "SELECT COUNT(*) FROM " + tableName + " WHERE " + fieldName + "='" + fieldValue + "' AND IsEnable=1";
if (!string.IsNullOrEmpty(whereCondition))
sql += " AND " + whereCondition;
int count = Convert.ToInt32(DbAccess.ExecuteScalar(sql));
if (count > 0)
{
result = true;
throw new Exception(string.Format("{0}【{1}】已经存在!", promptName, fieldValue));
}
else
result = false;
}
else if (modifyType == ModifyType.Edit)
{
string sql = string.Empty;
sql = "SELECT COUNT(*) FROM " + tableName + " WHERE " + fieldName + "='" + fieldValue + "' AND IsEnable=1 AND ID!='" + rowid.Value + "'";
if (!string.IsNullOrEmpty(whereCondition))
sql += " AND " + whereCondition;
int count = Convert.ToInt32(DbAccess.ExecuteScalar(sql));
if (count > 0)
{
result = true;
throw new Exception(string.Format("{0}【{1}】已经存在!", promptName, fieldValue));
}
else
result = false;
}
return result;
}
catch (Exception)
{
throw;
}
}
#endregion #endregion
} }
} }

File diff suppressed because it is too large Load Diff

@ -0,0 +1,662 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Tiobon.Core.Api</name>
</assembly>
<members>
<member name="T:Tiobon.Core.Controllers.AuthorizeController">
<summary>
登录管理【无权限】
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.#ctor(Tiobon.Core.IServices.ISysUserInfoServices,Tiobon.Core.IServices.IGhrs_UserServices,Tiobon.Core.AuthHelper.PermissionRequirement,Tiobon.Core.IServices.IRoleModulePermissionServices,Microsoft.Extensions.Logging.ILogger{Tiobon.Core.Controllers.AuthorizeController})">
<summary>
构造函数注入
</summary>
<param name="sysUserInfoServices"></param>
<param name="ghrs_UserServices"></param>
<param name="requirement"></param>
<param name="roleModulePermissionServices"></param>
<param name="logger"></param>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.GetJwtStr(System.String,System.String)">
<summary>
获取JWT的方法1
</summary>
<param name="name"></param>
<param name="pass"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.GetJwtStrForNuxt(System.String,System.String)">
<summary>
获取JWT的方法2:给Nuxt提供
</summary>
<param name="name"></param>
<param name="pass"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.GetJwtToken3(System.String,System.String)">
<summary>
获取JWT的方法3:整个系统主要方法
</summary>
<param name="name"></param>
<param name="pass"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.RefreshToken(System.String)">
<summary>
请求刷新Token(以旧换新)
</summary>
<param name="token"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.Login(Tiobon.Core.Controllers.SwaggerLoginRequest)">
<summary>
用户登录
</summary>
<param name="loginRequest"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.AuthorizeController.AutoLogin(System.Nullable{System.Int64})">
<summary>
用户自动登录
</summary>
<param name="Id"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Controllers.BaseController`5">
<summary>
增删改查基础服务
</summary>
<typeparam name="IServiceBase"></typeparam>
<typeparam name="TEntity"></typeparam>
<typeparam name="TEntityDto"></typeparam>
<typeparam name="TInsertDto"></typeparam>
<typeparam name="TEditDto"></typeparam>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.#ctor(`0)">
<summary>
初始化 (注入)
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.QueryByFilter(Tiobon.Core.Common.QueryFilter)">
<summary>
根据条件查询数据
</summary>
<param name="filter">条件</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.QueryById(System.Int64)">
<summary>
根据Id查询数据
</summary>
<param name="Id">主键ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.Insert(`3)">
<summary>
新增数据
</summary>
<param name="insertModel"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.BulkInsert(System.Collections.Generic.List{`3})">
<summary>
批量新增数据
</summary>
<param name="insertModels"></param>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.Put(System.Int64,`4)">
<summary>
更新数据
</summary>
<param name="Id">主键ID</param>
<param name="editModel"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.BulkUpdate(System.Collections.Generic.Dictionary{System.Int64,`4})">
<summary>
批量更新数据
</summary>
<param name="editModels"></param>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.Delete(System.Int64)">
<summary>
删除数据
</summary>
<param name="Id">主键ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.BulkDelete(System.Int64[])">
<summary>
批量删除数据
</summary>
<param name="Ids">主键IDs</param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Controllers.TiobonController">
<summary>
博客管理
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.#ctor(Microsoft.Extensions.Logging.ILogger{Tiobon.Core.Controllers.TiobonController})">
<summary>
构造函数
</summary>
<param name="logger"></param>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.Get(System.Int32,System.Int32,System.String,System.String)">
<summary>
获取博客列表【无权限】
</summary>
<param name="id"></param>
<param name="page"></param>
<param name="bcategory"></param>
<param name="key"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.Get(System.Int64)">
<summary>
获取博客详情
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.DetailNuxtNoPer(System.Int64)">
<summary>
获取详情【无权限】
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.V2_Tiobontest">
<summary>
获取博客测试信息 v2版本
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.Post(Tiobon.Core.Model.Models.TiobonArticle)">
<summary>
添加博客【无权限】
</summary>
<param name="TiobonArticle"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.AddForMVP(Tiobon.Core.Model.Models.TiobonArticle)">
<summary>
</summary>
<param name="TiobonArticle"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.Put(Tiobon.Core.Model.Models.TiobonArticle)">
<summary>
更新博客信息
</summary>
<param name="TiobonArticle"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.Delete(System.Int64)">
<summary>
删除博客
</summary>
<param name="id"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TiobonController.ApacheTestUpdate">
<summary>
apache jemeter 压力测试
更新接口
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.DbFirstController.#ctor(SqlSugar.ISqlSugarClient,Microsoft.AspNetCore.Hosting.IWebHostEnvironment)">
<summary>
构造函数
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.DbFirstController.GetFrameFiles">
<summary>
获取 整体框架 文件(主库)(一般可用第一次生成)
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.DbFirstController.GetFrameFilesByTableNames(System.String[],System.String)">
<summary>
获取仓储层和服务层(需指定表名和数据库)
</summary>
<param name="ConnID">数据库链接名称</param>
<param name="tableNames">需要生成的表名</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.DbFirstController.GetFrameFilesByTableNamesForEntity(System.String[],System.String)">
<summary>
获取实体(需指定表名和数据库)
</summary>
<param name="ConnID">数据库链接名称</param>
<param name="tableNames">需要生成的表名</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.DbFirstController.GetFrameFilesByTableNamesForController(System.String[],System.String)">
<summary>
获取控制器(需指定表名和数据库)
</summary>
<param name="ConnID">数据库链接名称</param>
<param name="tableNames">需要生成的表名</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.DbFirstController.GetAllFrameFilesByTableNames(System.String,System.String)">
<summary>
DbFrist 根据数据库表名 生成整体框架,包含Model层(一般可用第一次生成)
</summary>
<param name="ConnID">数据库链接名称</param>
<param name="tableName">需要生成的表名</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.MigrateController.DataMigrateFromOld2New">
<summary>
获取权限部分Map数据(从库)
迁移到新库(主库)
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.MigrateController.SaveData2TsvAsync">
<summary>
权限数据库导出tsv
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.MigrateController.SaveData2ExcelAsync">
<summary>
权限数据库导出excel
</summary>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Controllers.LoginController">
<summary>
登录管理【无权限】
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.#ctor(Tiobon.Core.IServices.ISysUserInfoServices,Tiobon.Core.IServices.IUserRoleServices,Tiobon.Core.IServices.IRoleServices,Tiobon.Core.AuthHelper.PermissionRequirement,Tiobon.Core.IServices.IRoleModulePermissionServices,Microsoft.Extensions.Logging.ILogger{Tiobon.Core.Controllers.LoginController})">
<summary>
构造函数注入
</summary>
<param name="sysUserInfoServices"></param>
<param name="userRoleServices"></param>
<param name="roleServices"></param>
<param name="requirement"></param>
<param name="roleModulePermissionServices"></param>
<param name="logger"></param>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.GetJwtStr(System.String,System.String)">
<summary>
获取JWT的方法1
</summary>
<param name="name"></param>
<param name="pass"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.GetJwtStrForNuxt(System.String,System.String)">
<summary>
获取JWT的方法2:给Nuxt提供
</summary>
<param name="name"></param>
<param name="pass"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.GetJwtToken3(System.String,System.String)">
<summary>
获取JWT的方法3:整个系统主要方法
</summary>
<param name="name"></param>
<param name="pass"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.RefreshToken(System.String)">
<summary>
请求刷新Token(以旧换新)
</summary>
<param name="token"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.Getjsonp(System.String,System.Int64,System.String,System.Int32,System.Int32)">
<summary>
获取JWT的方法4:给 JSONP 测试
</summary>
<param name="callBack"></param>
<param name="id"></param>
<param name="sub"></param>
<param name="expiresSliding"></param>
<param name="expiresAbsoulute"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.Md5Password(System.String)">
<summary>
测试 MD5 加密字符串
</summary>
<param name="password"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.SwgLogin(Tiobon.Core.Controllers.SwaggerLoginRequest)">
<summary>
swagger登录
</summary>
<param name="loginRequest"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.LoginController.WxLogin(System.String,System.String)">
<summary>
weixin登录
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.Get(System.Int32,System.String)">
<summary>
分页获取
</summary>
<param name="page"></param>
<param name="key"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.Post(Tiobon.Core.Model.Models.TasksQz)">
<summary>
添加计划任务
</summary>
<param name="tasksQz"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.Put(Tiobon.Core.Model.Models.TasksQz)">
<summary>
修改计划任务
</summary>
<param name="tasksQz"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.Delete(System.Int64)">
<summary>
删除一个任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.StartJob(System.Int64)">
<summary>
启动计划任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.StopJob(System.Int64)">
<summary>
停止一个计划任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.PauseJob(System.Int64)">
<summary>
暂停一个计划任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.ResumeJob(System.Int64)">
<summary>
恢复一个计划任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.ReCovery(System.Int64)">
<summary>
重启一个计划任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.GetTaskNameSpace">
<summary>
获取任务命名空间
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.ExecuteJob(System.Int64)">
<summary>
立即执行任务
</summary>
<param name="jobId"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.GetTaskLogs(System.Int64,System.Int32,System.Int32,System.Nullable{System.DateTime},System.Nullable{System.DateTime})">
<summary>
获取任务运行日志
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.TasksQzController.GetTaskOverview(System.Int64,System.Int32,System.Int32,System.Nullable{System.DateTime},System.Nullable{System.DateTime},System.String)">
<summary>
任务概况
</summary>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghra_GradeController">
<summary>
年级(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Ghrs_UserController">
<summary>
系统用户(Controller)
</summary>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Systems.CacheManageController">
<summary>
缓存管理
</summary>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.CacheManageController.Get">
<summary>
获取全部缓存
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.CacheManageController.Get(System.String)">
<summary>
获取缓存
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.CacheManageController.Post(System.String,System.String,System.Nullable{System.Int32})">
<summary>
新增
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.CacheManageController.Delete">
<summary>
删除全部缓存
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.CacheManageController.Delete(System.String)">
<summary>
删除缓存
</summary>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Systems.DataBaseController">
<summary>
数据库管理
</summary>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DataBaseController.GetAllConfig">
<summary>
获取库配置
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DataBaseController.GetTableInfoList(System.String,Tiobon.Core.Model.Systems.DataBase.DataBaseReadType)">
<summary>
获取表信息
</summary>
<param name="configId">配置Id</param>
<param name="readType">读取类型</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DataBaseController.GetColumnInfosByTableName(System.String,System.String,Tiobon.Core.Model.Systems.DataBase.DataBaseReadType)">
<summary>
获取表字段
</summary>
<param name="tableName">表名</param>
<param name="configId">ConfigId</param>
<param name="readType">读取类型</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DataBaseController.PutTableEditRemark(Tiobon.Core.Model.Systems.DataBase.EditTableInput)">
<summary>
编辑表备注
</summary>
<param name="input"></param>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DataBaseController.PutColumnEditRemark(Tiobon.Core.Model.Systems.DataBase.EditColumnInput)">
<summary>
编辑列备注
</summary>
<param name="input"></param>
</member>
<member name="T:Tiobon.Core.Api.Controllers.Systems.DynamicCodeFirstController">
<summary>
动态建表 CURD
</summary>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DynamicCodeFirstController.GetDynamicType">
<summary>
动态type
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DynamicCodeFirstController.GetDynamicType2">
<summary>
动态type 继承BaseEntity
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DynamicCodeFirstController.TestCreateTable">
<summary>
测试建表
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DynamicCodeFirstController.TestQuery">
<summary>
测试查询
</summary>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Systems.DynamicCodeFirstController.TestInsert(System.String,System.String)">
<summary>
测试写入
</summary>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Filter.GlobalActionFilter">
<summary>
全局请求验证
</summary>
</member>
<member name="P:Tiobon.Core.Api.Filter.GlobalActionFilter.Message">
<summary>
</summary>
</member>
<member name="M:Tiobon.Core.Api.Filter.GlobalActionFilter.OnActionExecuting(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext)">
<summary>
</summary>
<param name="filterContext"></param>
</member>
<member name="M:Tiobon.Core.Api.Filter.GlobalActionFilter.OnActionExecuted(Microsoft.AspNetCore.Mvc.Filters.ActionExecutedContext)">
<summary>
</summary>
<param name="filterContext"></param>
</member>
<member name="M:Tiobon.Core.Api.Filter.GlobalActionFilter.OnResultExecuting(Microsoft.AspNetCore.Mvc.Filters.ResultExecutingContext)">
<summary>
</summary>
<param name="filterContext"></param>
</member>
<member name="M:Tiobon.Core.Api.Filter.GlobalActionFilter.OnResultExecuted(Microsoft.AspNetCore.Mvc.Filters.ResultExecutedContext)">
<summary>
</summary>
<param name="filterContext"></param>
</member>
<member name="T:Tiobon.Core.Filter.GlobalRouteAuthorizeConvention">
<summary>
Summary:全局路由权限公约
Remarks:目的是针对不同的路由,采用不同的授权过滤器
如果 controller 上不加 [Authorize] 特性,默认都是 Permission 策略
否则,如果想特例其他授权机制的话,需要在 controller 上带上 [Authorize],然后再action上自定义授权即可,比如 [Authorize(Roles = "Admin")]
</summary>
</member>
<member name="T:Tiobon.Core.Filter.GlobalAuthorizeFilter">
<summary>
全局权限过滤器【无效】
</summary>
</member>
<member name="T:Tiobon.Core.Filter.GlobalExceptionsFilter">
<summary>
全局异常错误日志
</summary>
</member>
<member name="M:Tiobon.Core.Filter.GlobalExceptionsFilter.WriteLog(System.String,System.Exception)">
<summary>
自定义返回格式
</summary>
<param name="throwMsg"></param>
<param name="ex"></param>
<returns></returns>
</member>
<member name="P:Tiobon.Core.Filter.JsonErrorResponse.Message">
<summary>
生产环境的消息
</summary>
</member>
<member name="P:Tiobon.Core.Filter.JsonErrorResponse.DevelopmentMessage">
<summary>
开发环境的消息
</summary>
</member>
<member name="T:Tiobon.Core.Filter.GlobalRoutePrefixFilter">
<summary>
全局路由前缀公约
</summary>
</member>
<member name="T:Tiobon.Core.SwaggerHelper.CustomRouteAttribute">
<summary>
自定义路由 /api/{version}/[controler]/[action]
</summary>
</member>
<member name="P:Tiobon.Core.SwaggerHelper.CustomRouteAttribute.GroupName">
<summary>
分组名称,是来实现接口 IApiDescriptionGroupNameProvider
</summary>
</member>
<member name="M:Tiobon.Core.SwaggerHelper.CustomRouteAttribute.#ctor(System.String)">
<summary>
自定义路由构造函数,继承基类路由
</summary>
<param name="actionName"></param>
</member>
<member name="M:Tiobon.Core.SwaggerHelper.CustomRouteAttribute.#ctor(Tiobon.Core.Extensions.CustomApiVersion.ApiVersions,System.String)">
<summary>
自定义版本+路由构造函数,继承基类路由
</summary>
<param name="actionName"></param>
<param name="version"></param>
</member>
</members>
</doc>
Loading…
Cancel
Save