AntJob/AntJob.Data/Entity/应用在线.Biz.cs

142 lines
4.3 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.Xml.Serialization;
using NewLife;
using NewLife.Data;
using XCode;
using XCode.Membership;
namespace AntJob.Data.Entity
{
/// <summary>应用在线。各应用多实例在线</summary>
public partial class AppOnline : EntityBase<AppOnline>
{
#region
static AppOnline()
{
// 累加字段
//var df = Meta.Factory.AdditionalFields;
//df.Add(__.AppID);
// 过滤器 UserModule、TimeModule、IPModule
Meta.Modules.Add<TimeModule>();
Meta.Modules.Add<IPModule>();
}
#endregion
#region
/// <summary>应用</summary>
[XmlIgnore]
//[ScriptIgnore]
public App App => Extends.Get(nameof(App), k => App.FindByID(AppID));
/// <summary>应用</summary>
[XmlIgnore]
//[ScriptIgnore]
[DisplayName("应用")]
[Map(__.AppID)]
public String AppName => App?.Name;
#endregion
#region
/// <summary>根据编号查找</summary>
/// <param name="id">编号</param>
/// <returns>实体对象</returns>
public static AppOnline FindByID(Int32 id)
{
if (id <= 0) return null;
return Find(_.ID == id);
}
/// <summary>根据实例查找</summary>
/// <param name="instance">实例</param>
/// <returns>实体对象</returns>
public static AppOnline FindByInstance(String instance)
{
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.Find(e => e.Instance == instance);
return Find(_.Instance == instance);
}
/// <summary>根据应用查找</summary>
/// <param name="appid">应用</param>
/// <returns>实体列表</returns>
public static IList<AppOnline> FindAllByAppID(Int32 appid)
{
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.AppID == appid);
return FindAll(_.AppID == appid);
}
#endregion
#region
/// <summary>
/// 高级查询
/// </summary>
/// <param name="appid"></param>
/// <param name="start"></param>
/// <param name="end"></param>
/// <param name="key"></param>
/// <param name="p"></param>
/// <returns></returns>
public static IEnumerable<AppOnline> Search(Int32 appid, DateTime start, DateTime end, String key, PageParameter p)
{
var exp = new WhereExpression();
if (appid > 0) exp &= _.AppID == appid.ToInt();
if (!key.IsNullOrEmpty()) exp &= _.Name.Contains(key) | _.Instance.Contains(key);
exp &= _.CreateTime.Between(start, end);
return FindAll(exp, p);
}
/// <summary>
/// 获取UpdateTime距now减指定参数分钟的数据
/// </summary>
/// <param name="norunMin"></param>
/// <returns></returns>
public static IList<AppOnline> GetOnlines(Int32 norunMin = 10)
{
var now = DateTime.Now;
var exp = new WhereExpression();
exp &= _.UpdateTime <= now.AddMinutes(-norunMin);
return FindAll(exp);
}
/// <summary>根据应用查询</summary>
/// <param name="appid"></param>
/// <param name="p"></param>
/// <returns></returns>
public static IList<AppOnline> SearchByAppID(Int32 appid, PageParameter p)
{
// 实体缓存
if (Meta.Session.Count < 1000) return Meta.Cache.FindAll(e => e.AppID == appid);
return FindAll(_.AppID == appid, p);
}
#endregion
#region
/// <summary>转模型类</summary>
/// <returns></returns>
public PeerModel ToModel()
{
return new PeerModel
{
Instance = Instance,
Client = Client,
Machine = Name,
Version = Version,
CreateTime = CreateTime,
UpdateTime = UpdateTime,
};
}
#endregion
}
}