XCode/XUnitTest.XCode/Code/Entity/租户.cs

398 lines
16 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.Serialization;
using System.Web.Script.Serialization;
using System.Xml.Serialization;
using NewLife;
using NewLife.Data;
using XCode;
using XCode.Cache;
using XCode.Configuration;
using XCode.DataAccessLayer;
namespace XCode.Membership666;
/// <summary>租户。多租户SAAS平台用于隔离业务数据</summary>
[Serializable]
[DataObject]
[Description("租户。多租户SAAS平台用于隔离业务数据")]
[BindIndex("IU_Tenant_Code", true, "Code")]
[BindTable("Tenant", Description = "租户。多租户SAAS平台用于隔离业务数据", ConnName = "Membership666", DbType = DatabaseType.None)]
public partial class Tenant : ITenant, IEntity<ITenant>
{
#region
private Int32 _Id;
/// <summary>编号</summary>
[DisplayName("编号")]
[Description("编号")]
[DataObjectField(true, true, false, 0)]
[BindColumn("Id", "编号", "")]
public Int32 Id { get => _Id; set { if (OnPropertyChanging("Id", value)) { _Id = value; OnPropertyChanged("Id"); } } }
private String? _Code;
/// <summary>编码。唯一编码</summary>
[DisplayName("编码")]
[Description("编码。唯一编码")]
[DataObjectField(false, false, true, 50)]
[BindColumn("Code", "编码。唯一编码", "")]
public String? Code { get => _Code; set { if (OnPropertyChanging("Code", value)) { _Code = value; OnPropertyChanged("Code"); } } }
private String? _Name;
/// <summary>名称。显示名称</summary>
[DisplayName("名称")]
[Description("名称。显示名称")]
[DataObjectField(false, false, true, 50)]
[BindColumn("Name", "名称。显示名称", "", Master = true)]
public String? Name { get => _Name; set { if (OnPropertyChanging("Name", value)) { _Name = value; OnPropertyChanged("Name"); } } }
private Boolean _Enable;
/// <summary>启用</summary>
[DisplayName("启用")]
[Description("启用")]
[DataObjectField(false, false, false, 0)]
[BindColumn("Enable", "启用", "")]
public Boolean Enable { get => _Enable; set { if (OnPropertyChanging("Enable", value)) { _Enable = value; OnPropertyChanged("Enable"); } } }
private Int32 _ManagerId;
/// <summary>管理者</summary>
[DisplayName("管理者")]
[Description("管理者")]
[DataObjectField(false, false, false, 0)]
[BindColumn("ManagerId", "管理者", "")]
public Int32 ManagerId { get => _ManagerId; set { if (OnPropertyChanging("ManagerId", value)) { _ManagerId = value; OnPropertyChanged("ManagerId"); } } }
private String? _RoleIds;
/// <summary>角色组。租户可选的角色集合,不同级别的租户所拥有的角色不一样,高级功能也会不同</summary>
[DisplayName("角色组")]
[Description("角色组。租户可选的角色集合,不同级别的租户所拥有的角色不一样,高级功能也会不同")]
[DataObjectField(false, false, true, 200)]
[BindColumn("RoleIds", "角色组。租户可选的角色集合,不同级别的租户所拥有的角色不一样,高级功能也会不同", "")]
public String? RoleIds { get => _RoleIds; set { if (OnPropertyChanging("RoleIds", value)) { _RoleIds = value; OnPropertyChanged("RoleIds"); } } }
private String? _Logo;
/// <summary>图标。附件路径</summary>
[DisplayName("图标")]
[Description("图标。附件路径")]
[DataObjectField(false, false, true, 50)]
[BindColumn("Logo", "图标。附件路径", "", ItemType = "image")]
public String? Logo { get => _Logo; set { if (OnPropertyChanging("Logo", value)) { _Logo = value; OnPropertyChanged("Logo"); } } }
private String? _DatabaseName;
/// <summary>数据库。分库用的数据库名</summary>
[DisplayName("数据库")]
[Description("数据库。分库用的数据库名")]
[DataObjectField(false, false, true, 50)]
[BindColumn("DatabaseName", "数据库。分库用的数据库名", "")]
public String? DatabaseName { get => _DatabaseName; set { if (OnPropertyChanging("DatabaseName", value)) { _DatabaseName = value; OnPropertyChanged("DatabaseName"); } } }
private String? _TableName;
/// <summary>数据表。分表用的数据表前缀</summary>
[DisplayName("数据表")]
[Description("数据表。分表用的数据表前缀")]
[DataObjectField(false, false, true, 50)]
[BindColumn("TableName", "数据表。分表用的数据表前缀", "")]
public String? TableName { get => _TableName; set { if (OnPropertyChanging("TableName", value)) { _TableName = value; OnPropertyChanged("TableName"); } } }
private DateTime _Expired;
/// <summary>过期时间。达到该时间后,自动禁用租户,空表示永不过期</summary>
[DisplayName("过期时间")]
[Description("过期时间。达到该时间后,自动禁用租户,空表示永不过期")]
[DataObjectField(false, false, true, 0)]
[BindColumn("Expired", "过期时间。达到该时间后,自动禁用租户,空表示永不过期", "")]
public DateTime Expired { get => _Expired; set { if (OnPropertyChanging("Expired", value)) { _Expired = value; OnPropertyChanged("Expired"); } } }
private Int32 _CreateUserId;
/// <summary>创建者</summary>
[Category("扩展")]
[DisplayName("创建者")]
[Description("创建者")]
[DataObjectField(false, false, false, 0)]
[BindColumn("CreateUserId", "创建者", "")]
public Int32 CreateUserId { get => _CreateUserId; set { if (OnPropertyChanging("CreateUserId", value)) { _CreateUserId = value; OnPropertyChanged("CreateUserId"); } } }
private DateTime _CreateTime;
/// <summary>创建时间</summary>
[Category("扩展")]
[DisplayName("创建时间")]
[Description("创建时间")]
[DataObjectField(false, false, true, 0)]
[BindColumn("CreateTime", "创建时间", "")]
public DateTime CreateTime { get => _CreateTime; set { if (OnPropertyChanging("CreateTime", value)) { _CreateTime = value; OnPropertyChanged("CreateTime"); } } }
private String? _CreateIP;
/// <summary>创建地址</summary>
[Category("扩展")]
[DisplayName("创建地址")]
[Description("创建地址")]
[DataObjectField(false, false, true, 50)]
[BindColumn("CreateIP", "创建地址", "")]
public String? CreateIP { get => _CreateIP; set { if (OnPropertyChanging("CreateIP", value)) { _CreateIP = value; OnPropertyChanged("CreateIP"); } } }
private Int32 _UpdateUserId;
/// <summary>更新者</summary>
[Category("扩展")]
[DisplayName("更新者")]
[Description("更新者")]
[DataObjectField(false, false, false, 0)]
[BindColumn("UpdateUserId", "更新者", "")]
public Int32 UpdateUserId { get => _UpdateUserId; set { if (OnPropertyChanging("UpdateUserId", value)) { _UpdateUserId = value; OnPropertyChanged("UpdateUserId"); } } }
private DateTime _UpdateTime;
/// <summary>更新时间</summary>
[Category("扩展")]
[DisplayName("更新时间")]
[Description("更新时间")]
[DataObjectField(false, false, true, 0)]
[BindColumn("UpdateTime", "更新时间", "")]
public DateTime UpdateTime { get => _UpdateTime; set { if (OnPropertyChanging("UpdateTime", value)) { _UpdateTime = value; OnPropertyChanged("UpdateTime"); } } }
private String? _UpdateIP;
/// <summary>更新地址</summary>
[Category("扩展")]
[DisplayName("更新地址")]
[Description("更新地址")]
[DataObjectField(false, false, true, 50)]
[BindColumn("UpdateIP", "更新地址", "")]
public String? UpdateIP { get => _UpdateIP; set { if (OnPropertyChanging("UpdateIP", value)) { _UpdateIP = value; OnPropertyChanged("UpdateIP"); } } }
private String? _Remark;
/// <summary>描述</summary>
[Category("扩展")]
[DisplayName("描述")]
[Description("描述")]
[DataObjectField(false, false, true, 500)]
[BindColumn("Remark", "描述", "")]
public String? Remark { get => _Remark; set { if (OnPropertyChanging("Remark", value)) { _Remark = value; OnPropertyChanged("Remark"); } } }
#endregion
#region
/// <summary>拷贝模型对象</summary>
/// <param name="model">模型</param>
public void Copy(ITenant model)
{
Id = model.Id;
Code = model.Code;
Name = model.Name;
Enable = model.Enable;
ManagerId = model.ManagerId;
RoleIds = model.RoleIds;
Logo = model.Logo;
DatabaseName = model.DatabaseName;
TableName = model.TableName;
Expired = model.Expired;
Remark = model.Remark;
}
#endregion
#region /
/// <summary>获取/设置 字段值</summary>
/// <param name="name">字段名</param>
/// <returns></returns>
public override Object? this[String name]
{
get => name switch
{
"Id" => _Id,
"Code" => _Code,
"Name" => _Name,
"Enable" => _Enable,
"ManagerId" => _ManagerId,
"RoleIds" => _RoleIds,
"Logo" => _Logo,
"DatabaseName" => _DatabaseName,
"TableName" => _TableName,
"Expired" => _Expired,
"CreateUserId" => _CreateUserId,
"CreateTime" => _CreateTime,
"CreateIP" => _CreateIP,
"UpdateUserId" => _UpdateUserId,
"UpdateTime" => _UpdateTime,
"UpdateIP" => _UpdateIP,
"Remark" => _Remark,
_ => base[name]
};
set
{
switch (name)
{
case "Id": _Id = value.ToInt(); break;
case "Code": _Code = Convert.ToString(value); break;
case "Name": _Name = Convert.ToString(value); break;
case "Enable": _Enable = value.ToBoolean(); break;
case "ManagerId": _ManagerId = value.ToInt(); break;
case "RoleIds": _RoleIds = Convert.ToString(value); break;
case "Logo": _Logo = Convert.ToString(value); break;
case "DatabaseName": _DatabaseName = Convert.ToString(value); break;
case "TableName": _TableName = Convert.ToString(value); break;
case "Expired": _Expired = value.ToDateTime(); break;
case "CreateUserId": _CreateUserId = value.ToInt(); break;
case "CreateTime": _CreateTime = value.ToDateTime(); break;
case "CreateIP": _CreateIP = Convert.ToString(value); break;
case "UpdateUserId": _UpdateUserId = value.ToInt(); break;
case "UpdateTime": _UpdateTime = value.ToDateTime(); break;
case "UpdateIP": _UpdateIP = Convert.ToString(value); break;
case "Remark": _Remark = Convert.ToString(value); break;
default: base[name] = value; break;
}
}
}
#endregion
#region
/// <summary>管理者</summary>
[XmlIgnore, IgnoreDataMember, ScriptIgnore]
public User? Manager => Extends.Get(nameof(Manager), k => User.FindByID(ManagerId));
/// <summary>管理者</summary>
[Map(nameof(ManagerId), typeof(User), "ID")]
public String? ManagerName => Manager?.ToString();
#endregion
#region
/// <summary>根据编号查找</summary>
/// <param name="id">编号</param>
/// <returns>实体对象</returns>
public static Tenant? FindById(Int32 id)
{
if (id < 0) return null;
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Id == id);
// 单对象缓存
return Meta.SingleCache[id];
//return Find(_.Id == id);
}
/// <summary>根据编码查找</summary>
/// <param name="code">编码</param>
/// <returns>实体对象</returns>
public static Tenant? FindByCode(String? code)
{
if (code == null) return null;
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Code.EqualIgnoreCase(code));
return Find(_.Code == code);
}
#endregion
#region
/// <summary>取得租户字段信息的快捷方式</summary>
public partial class _
{
/// <summary>编号</summary>
public static readonly Field Id = FindByName("Id");
/// <summary>编码。唯一编码</summary>
public static readonly Field Code = FindByName("Code");
/// <summary>名称。显示名称</summary>
public static readonly Field Name = FindByName("Name");
/// <summary>启用</summary>
public static readonly Field Enable = FindByName("Enable");
/// <summary>管理者</summary>
public static readonly Field ManagerId = FindByName("ManagerId");
/// <summary>角色组。租户可选的角色集合,不同级别的租户所拥有的角色不一样,高级功能也会不同</summary>
public static readonly Field RoleIds = FindByName("RoleIds");
/// <summary>图标。附件路径</summary>
public static readonly Field Logo = FindByName("Logo");
/// <summary>数据库。分库用的数据库名</summary>
public static readonly Field DatabaseName = FindByName("DatabaseName");
/// <summary>数据表。分表用的数据表前缀</summary>
public static readonly Field TableName = FindByName("TableName");
/// <summary>过期时间。达到该时间后,自动禁用租户,空表示永不过期</summary>
public static readonly Field Expired = FindByName("Expired");
/// <summary>创建者</summary>
public static readonly Field CreateUserId = FindByName("CreateUserId");
/// <summary>创建时间</summary>
public static readonly Field CreateTime = FindByName("CreateTime");
/// <summary>创建地址</summary>
public static readonly Field CreateIP = FindByName("CreateIP");
/// <summary>更新者</summary>
public static readonly Field UpdateUserId = FindByName("UpdateUserId");
/// <summary>更新时间</summary>
public static readonly Field UpdateTime = FindByName("UpdateTime");
/// <summary>更新地址</summary>
public static readonly Field UpdateIP = FindByName("UpdateIP");
/// <summary>描述</summary>
public static readonly Field Remark = FindByName("Remark");
static Field FindByName(String name) => Meta.Table.FindByName(name);
}
/// <summary>取得租户字段名称的快捷方式</summary>
public partial class __
{
/// <summary>编号</summary>
public const String Id = "Id";
/// <summary>编码。唯一编码</summary>
public const String Code = "Code";
/// <summary>名称。显示名称</summary>
public const String Name = "Name";
/// <summary>启用</summary>
public const String Enable = "Enable";
/// <summary>管理者</summary>
public const String ManagerId = "ManagerId";
/// <summary>角色组。租户可选的角色集合,不同级别的租户所拥有的角色不一样,高级功能也会不同</summary>
public const String RoleIds = "RoleIds";
/// <summary>图标。附件路径</summary>
public const String Logo = "Logo";
/// <summary>数据库。分库用的数据库名</summary>
public const String DatabaseName = "DatabaseName";
/// <summary>数据表。分表用的数据表前缀</summary>
public const String TableName = "TableName";
/// <summary>过期时间。达到该时间后,自动禁用租户,空表示永不过期</summary>
public const String Expired = "Expired";
/// <summary>创建者</summary>
public const String CreateUserId = "CreateUserId";
/// <summary>创建时间</summary>
public const String CreateTime = "CreateTime";
/// <summary>创建地址</summary>
public const String CreateIP = "CreateIP";
/// <summary>更新者</summary>
public const String UpdateUserId = "UpdateUserId";
/// <summary>更新时间</summary>
public const String UpdateTime = "UpdateTime";
/// <summary>更新地址</summary>
public const String UpdateIP = "UpdateIP";
/// <summary>描述</summary>
public const String Remark = "Remark";
}
#endregion
}