Files

253 lines
10 KiB
C#
Raw Permalink Normal View History

2025-11-20 09:50:21 +08:00
using Models;
using Models.ModelItems;
using Services.Cache;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Services.Manager
{
public class AppServer
{
/// <summary>
/// 查询 app 不查询禁用的权限
/// </summary>
/// <param name="id"></param>
/// <param name="IsValid"></param>
/// <returns></returns>
#region App权限信息
private static dynamic GetAppInfo(int id,int IsValid = 10,bool reauthorities = true)
{
ApplicationDomain app = Cache.CacheHelp.cacheSysApp.FirstOrDefault(x=>x.Id == id);
if(app == null)
return null;
List<AppAutho> autho = Cache.CacheHelp.cacheSysAppAutho.Where(x => x.AppId == id).ToList();
List<Authority> authorities = new List<Authority>();
if(reauthorities)
authorities = Cache.CacheHelp.cacheSysAutho.Where(x=> autho.FirstOrDefault(y=>y.AuthorityId == x.Id)!=null && x.IsValid != IsValid).ToList();
return new
{
data = authorities,
AppName = app.AppName,
AppId = app.Id,
Desc = app.Desc,
app.WebSite,
app.AppType,
app.Version,
app.ReleaseDate,
app.Icon,
app.DowSum
};
}
#endregion
#region App权限信息
/// <summary>
/// 所有正常App权限信息 查询所有就默认值即可 查询正常的权限 输入1 查询关闭的权限 输入 0
/// </summary>
/// <param name="IsValid"></param>
/// <param name="reauthorities">是否返回权限信息</param>
/// <returns></returns>
public static List<dynamic> GetAppInfo( int appid = 0, int appIsValid = 0 ,int IsValid = 0,bool reauthorities = true)
{
List<dynamic> res = new List<dynamic>();
foreach (var app in CacheHelp.cacheSysApp.Where(x =>( x.IsValid == appIsValid || appIsValid == -1) && (appid == x.Id || appid == 0)).ToList())
{
res.Add(GetAppInfo(app.Id, IsValid,reauthorities));
}
return res;
}
#endregion
#region App名是否存
public static bool CheckName(string name)
{
return Cache.CacheHelp.cacheSysApp.FirstOrDefault(x=>x.AppName == name && x.IsValid == 0) == null;
}
#endregion
#region App
public static int? AddApp(string name, string Desc = "", string uid = "", string Version = "1.0", string appicon = null, DateTime ReleaseDate = default, string WebSite = "",int AppType =0)
{
if (CacheHelp.cacheSysApp.FirstOrDefault(u => u.AppName == name && u.IsValid == 0) != null)
return null;
ApplicationDomain app = new ApplicationDomain {
AppName = name,
Desc = Desc,
CreatedBy = uid,
ReleaseDate = ReleaseDate,
WebSite = WebSite,
Version = Version,
AppType = AppType,
CreateTime = DateTime.Now,
Icon = appicon
};
int id= SqlSugarBase.Db.Insertable(app).ExecuteReturnIdentity();
DbLogServer.WriteDbLog($"添加了应用{app.AppName}{id})");
CacheHelp.Removesys(CacheHelp.syskey.sysAppsListKey);
return id;
}
#endregion
#region
public static bool DelApp(int appid,int IsValid, string uid = null)
{
try
{
ApplicationDomain app = SqlSugarBase.Db.Queryable<ApplicationDomain>().First(x => x.Id == appid);
if (app == null)
return false;
app.IsValid = IsValid;
app.CreatedBy = uid;
SqlSugarBase.Db.Updateable(app).ExecuteCommand();
if (IsValid!=0)
DbLogServer.WriteDbLog($"删除了应用{app.AppName}{app.Id})",2);
else
DbLogServer.WriteDbLog($"恢复了应用{app.AppName}{app.Id})", 1);
CacheHelp.Removesys(CacheHelp.syskey.sysAppsListKey);
return true;
}
catch (Exception ex)
{
LogHelp.WriteExceptionLog(ex);
return false;
}
finally
{
CacheHelp.Removesys(CacheHelp.syskey.Appversions);
}
}
#endregion
#region
public static bool Checkautho(int AppId, string AuthoNmae)
{
var au = CacheHelp.cacheView_AppAutho.FirstOrDefault(x => x.AppId == AppId && x.AuthorityName == AuthoNmae);
if (au == null)
return true;
else
return false;
}
#endregion
#region
public static int? Addautho(int AppId, string AuthoNmae, string Desc = "", string uid = null, string authoStatusTypeId = null)
{
try {
dynamic au = CacheHelp.cacheView_AppAutho.FirstOrDefault(x => x.AppId == AppId && x.AuthorityName == AuthoNmae);
if (au != null)
return null;
au = CacheHelp.cacheSysApp.FirstOrDefault(x => x.Id == AppId);
if (au == null)
return null;
Authority authority = new Authority { AuthorityName = AuthoNmae, Desc = Desc,CreatedBy = uid, AuthoStatusTypeId = authoStatusTypeId };
int id= SqlSugarBase.Db.Insertable(new Authority { AuthorityName = AuthoNmae, Desc = Desc, CreatedBy = uid, AuthoStatusTypeId = authoStatusTypeId }).ExecuteReturnIdentity();
SqlSugarBase.Db.Insertable(new AppAutho() { AppId = AppId, AuthorityId = id, CreatedBy = uid }).ExecuteCommand();
DbLogServer.WriteDbLog($"给应用{au.AppName}{au.Id})添加了权限'{AuthoNmae}({id})'",0);
CacheHelp.Removesys(CacheHelp.syskey.sysView_AppAuthoListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAuthorityListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAppAuthoListKey);
return id;
}
catch (Exception ex)
{
LogHelp.WriteExceptionLog(ex);
return null;
}
finally
{
CacheHelp.Removesys(CacheHelp.syskey.Appversions);
}
}
#endregion
#region
public static bool Delautho(int authoId, int status = 0, string uid = null)
{
var au = CacheHelp.cacheSysAutho.FirstOrDefault(x=>x.Id == authoId);
var app = CacheHelp.cacheView_AppAutho.FirstOrDefault(x=>x.AuthorityId == authoId);
if (au == null || app == null)
return false;
var autho = SqlSugarBase.Db.Queryable<Authority>().First(x => x.Id == authoId);
autho.IsValid = status;
SqlSugarBase.Db.Updateable(autho).ExecuteCommand();
if(status==1)
DbLogServer.WriteDbLog($"禁用了应用{app.AppName}({app.AppId})权限{au.AuthorityName}({au.Id}).",2);
else
DbLogServer.WriteDbLog( $"恢复了应用{app.AppName}({app.AppId})权限{au.AuthorityName}({au.Id}).", 2);
CacheHelp.Removesys(CacheHelp.syskey.sysView_AppAuthoListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAuthorityListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAppAuthoListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAppAuthoListKey);
return true;
}
#endregion
#region
public static bool Editautho(Authority authority, string uid)
{
try {
if (authority.Id <= 0)
return false;
var auc = CacheHelp.cacheSysAutho.FirstOrDefault(x => x.Id == authority.Id);
var app = CacheHelp.cacheView_AppAutho.FirstOrDefault(x => x.AuthorityId == authority.Id);
if (auc == null || app == null)
return false;
var au = SqlSugarBase.Db.Queryable<Authority>().First(x => x.Id == authority.Id);
au.Desc = authority.Desc ?? au.Desc;
au.AuthoStatusTypeId = authority.AuthoStatusTypeId ?? au.AuthoStatusTypeId;
au.AuthorityName = authority.AuthorityName ?? au.AuthorityName;
SqlSugarBase.Db.Updateable(au).ExecuteCommand();
DbLogServer.WriteDbLog( $"修改了{app.AuthorityName} ({app.AppId})权限{au.AuthorityName}({au.Id}).修改后为:" + JsonConvert.SerializeObject(au), 1);
CacheHelp.Removesys(CacheHelp.syskey.sysView_AppAuthoListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAuthorityListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAppAuthoListKey);
CacheHelp.Removesys(CacheHelp.syskey.sysAppAuthoListKey);
return true;
}
catch (Exception ex)
{
LogHelp.WriteExceptionLog(ex);
return false;
}
finally
{
CacheHelp.Removesys(CacheHelp.syskey.Appversions);
}
}
#endregion
#region
public static bool AddDown( int AppId,int sum = 1)
{
try
{
var app = SqlSugarBase.Db.Queryable<ApplicationDomain>().First(x => x.Id == AppId);
app.DowSum+=sum;
return SqlSugarBase.Db.Updateable(app).ExecuteCommand()>0;
}
catch (Exception ex)
{
LogHelp.WriteExceptionLog(ex);
return false;
}finally
{
CacheHelp.Removesys( CacheHelp.syskey.Appversions);
CacheHelp.Removesys( CacheHelp.syskey.sysAppsListKey);
}
}
#endregion
}
}