135 lines
4.3 KiB
C#
135 lines
4.3 KiB
C#
/*******************************************************************************
|
||
* Copyright © 2020 HT.Cloud.Framework 版权所有
|
||
* Author: HT.Cloud
|
||
* Description: WaterCloud快速开发平台
|
||
* Website:
|
||
*********************************************************************************/
|
||
|
||
using SqlSugar;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Threading.Tasks;
|
||
using HT.Cloud.Code;
|
||
using HT.Cloud.Domain.SystemManage;
|
||
using HT.Cloud.Domain.SystemOrganize;
|
||
|
||
namespace HT.Cloud.Service.SystemManage
|
||
{
|
||
public class ModuleService : BaseService<ModuleEntity>, IDenpendency
|
||
{
|
||
/// <summary>
|
||
/// 缓存操作类
|
||
/// </summary>
|
||
private string authorizecacheKey = GlobalContext.SystemConfig.ProjectPrefix + "_authorizeurldata_";// +权限
|
||
|
||
//获取类名
|
||
|
||
public ModuleService(ISqlSugarClient context) : base(context)
|
||
{
|
||
}
|
||
|
||
public async Task<List<ModuleEntity>> GetList()
|
||
{
|
||
var query = repository.IQueryable();
|
||
return await query.Where(a => a.F_DeleteMark == false).OrderBy(a => a.F_SortCode).ToListAsync();
|
||
}
|
||
|
||
public async Task<List<ModuleEntity>> GetBesidesList()
|
||
{
|
||
var moduleList = repository.Db.Queryable<DataPrivilegeRuleEntity>().Select(a => a.F_ModuleId).ToList();
|
||
var query = repository.IQueryable().Where(a => !moduleList.Contains(a.F_Id) && a.F_EnabledMark == true && a.F_Target == "iframe");
|
||
return await query.OrderBy(a => a.F_SortCode).ToListAsync();
|
||
}
|
||
|
||
public async Task<List<ModuleEntity>> GetLookList()
|
||
{
|
||
var query = repository.IQueryable().Where(a => a.F_DeleteMark == false);
|
||
query = GetDataPrivilege("a", "", query);
|
||
return await query.OrderBy(a => a.F_SortCode).ToListAsync();
|
||
}
|
||
|
||
public async Task<ModuleEntity> GetLookForm(string keyValue)
|
||
{
|
||
var data = await repository.FindEntity(keyValue);
|
||
return GetFieldsFilterData(data);
|
||
}
|
||
|
||
public async Task<ModuleEntity> GetForm(string keyValue)
|
||
{
|
||
var data = await repository.FindEntity(keyValue);
|
||
return data;
|
||
}
|
||
|
||
public async Task<string> GetMaxSortCode(string F_ParentId)
|
||
{
|
||
try
|
||
{
|
||
int F_SortCode = (int)await repository.Db.Queryable<ModuleEntity>().Where(t => t.F_ParentId == F_ParentId).MaxAsync(a => a.F_SortCode);
|
||
|
||
return (F_SortCode + 1).ToString();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
return "0";
|
||
}
|
||
}
|
||
|
||
public async Task DeleteForm(string keyValue)
|
||
{
|
||
if (await repository.IQueryable(a => a.F_ParentId.Equals(keyValue)).AnyAsync())
|
||
{
|
||
throw new Exception("删除失败!操作的对象包含了下级数据。");
|
||
}
|
||
else
|
||
{
|
||
repository.Db.Ado.BeginTran();
|
||
await repository.Delete(a => a.F_Id == keyValue);
|
||
await repository.Db.Deleteable<ModuleButtonEntity>().Where(a => a.F_ModuleId == keyValue).ExecuteCommandAsync();
|
||
await repository.Db.Deleteable<ModuleFieldsEntity>().Where(a => a.F_ModuleId == keyValue).ExecuteCommandAsync();
|
||
repository.Db.Ado.CommitTran();
|
||
await CacheHelper.RemoveAsync(authorizecacheKey + repository.Db.CurrentConnectionConfig.ConfigId + "_list");
|
||
}
|
||
}
|
||
|
||
public async Task<List<ModuleEntity>> GetListByRole(string roleid)
|
||
{
|
||
var moduleList = repository.Db.Queryable<RoleAuthorizeEntity>().Where(a => a.F_ObjectId == roleid && a.F_ItemType == 1).Select(a => a.F_ItemId).ToList();
|
||
var query = repository.IQueryable().Where(a => (moduleList.Contains(a.F_Id) || a.F_IsPublic == true) && a.F_DeleteMark == false && a.F_EnabledMark == true);
|
||
return await query.OrderBy(a => a.F_SortCode).ToListAsync();
|
||
}
|
||
|
||
public async Task SubmitForm(ModuleEntity moduleEntity, string keyValue)
|
||
{
|
||
if (!string.IsNullOrEmpty(moduleEntity.F_Authorize))
|
||
{
|
||
moduleEntity.F_Authorize = moduleEntity.F_Authorize.ToLower();
|
||
}
|
||
if (!string.IsNullOrEmpty(keyValue))
|
||
{
|
||
moduleEntity.Modify(keyValue);
|
||
await repository.Update(moduleEntity);
|
||
}
|
||
else
|
||
{
|
||
moduleEntity.Create();
|
||
await repository.Insert(moduleEntity);
|
||
}
|
||
await CacheHelper.RemoveAsync(authorizecacheKey + repository.Db.CurrentConnectionConfig.ConfigId + "_list");
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新菜单排序
|
||
/// </summary>
|
||
/// <param name="F_Id">内码</param>
|
||
/// <param name="SortCode">排序数字</param>
|
||
/// <returns></returns>
|
||
public async Task SubmitUpdateForm(string F_Id, int SortCode)
|
||
{
|
||
//更新
|
||
await repository.Update(a => a.F_Id == F_Id, a => new ModuleEntity()
|
||
{
|
||
F_SortCode = SortCode
|
||
});
|
||
}
|
||
}
|
||
} |