using System.Linq; using System.Threading.Tasks; using Abp.Application.Services.Dto; using Abp.Auditing; using Abp.Authorization; using Abp.Domain.Entities; using Abp.Domain.Repositories; using Abp.Runtime.Caching; using ContractService.Authorization; using ContractService.BaseInfo; using ContractService.BaseSystem.States.Dto; using ContractService.Configuration; using IwbZero; using IwbZero.AppServiceBase; using IwbZero.Auditing; using IwbZero.Authorization.Base.Users; using IwbZero.ToolCommon.Lambda; namespace ContractService.BaseSystem.States { [AbpAuthorize, AuditLog("系统字典", "字典")] public class StatesAppService : IwbAsyncCrudAppService, IStatesAppService { public StatesAppService(ICacheManager cacheManager, IRepository repository) : base(repository, "StateNo") { CacheManager = cacheManager; } protected override string KeyExistMessage => string.Format(L(IwbLanguageMessage.KeyExistMessageFormatter), L("state")); protected override string KeyNotExistMessage => string.Format(L(IwbLanguageMessage.KeyNotExistMessageFormatter), L("state")); protected override string GetPermissionName { get; set; } = PermissionNames.PagesSystemMgStateMgQuery; protected override string GetAllPermissionName { get; set; } = PermissionNames.PagesSystemMgStateMgQuery; protected override string UpdatePermissionName { get; set; } = PermissionNames.PagesSystemMgStateMgUpdate; public override async Task Create(StateCreateDto input) { if (AbpSession.UserName != UserBase.HostAdminName && AbpSession.UserName != UserBase.HostSystemName && AbpSession.UserName != UserBase.AdminUserName && AbpSession.UserName != UserBase.SystemUserName) { ThrowError(IwbLanguageMessage.NoPermissionOperation); } await base.Create(input); } public override async Task Update(StateUpdateDto input) { if (AbpSession.UserName != UserBase.HostAdminName && AbpSession.UserName != UserBase.HostSystemName && AbpSession.UserName != UserBase.AdminUserName && AbpSession.UserName != UserBase.SystemUserName) { ThrowError(IwbLanguageMessage.NoPermissionOperation); } await UpdateEntity(input); await CacheManager.GetCache(IwbZeroConsts.SysStateCache) .RemoveAsync(input.TableName + "." + input.ColumnName + "." + input.CodeValue); } public override async Task Delete(EntityDto input) { #if DEBUG if ( AbpSession.UserName != UserBase.HostAdminName && AbpSession.UserName != UserBase.HostSystemName && AbpSession.UserName != UserBase.AdminUserName && AbpSession.UserName != UserBase.SystemUserName ) { ThrowError(IwbLanguageMessage.NoPermissionOperation); } await base.Delete(input); #else ThrowError(IwbLanguageMessage.CanNotDelete); #endif } protected override IQueryable KeyWordFilter(IQueryable query, string keyword) { query = query.Where(a => a.StateName.Contains(keyword) || a.TableName.Contains(keyword) || a.ColumnName.Contains(keyword) || a.CodeValue.Contains(keyword)); return query; } } }