using Abp.Authorization; using Abp.Domain.Repositories; using Abp.Linq.Extensions; using Abp.Runtime.Caching; using VberZero.AppService.Base; using VberZero.AppService.Base.Dto; using VberZero.AppService.States.Dto; using VberZero.Auditing; using VberZero.BaseSystem; using VberZero.BaseSystem.Users; using VberZero.Session; using VberZero.Tools.StringModel; namespace VberZero.AppService.States; [AbpAuthorize, AuditLog("字典管理", "字典")] public class StateAppServiceBase : VzCrudAppServiceBase, IStateAppServiceBase { public StateAppServiceBase(ICacheManager cacheManager, IRepository repository) : base(repository, "StateNo") { CacheManager = cacheManager; } protected override string KeyExistMessage => string.Format(L("KeyExistMessageFormatter"), L("state")); protected override string KeyNotExistMessage => string.Format(L("KeyNotExistMessageFormatter"), L("state")); public override Task Create(StateCreateDto input) { return Task.CompletedTask; } public override async Task Update(StateUpdateDto input) { //if (AbpSession.GetUserName() != User.AdminUserName && AbpSession.GetUserName() != User.SystemUserName) //{ // ThrowError("NoPermissionOperation"); //} if (AbpSession.GetUserType() > VzDefinition.UserType.System) { ThrowError("NoPermissionOperation"); } CheckUpdatePermission(); var entity = await GetEntity(input); await UpdateEntity(input, entity); await CacheManager.GetCache(VzConsts.CacheSysState) .RemoveAsync(entity.CodeKey + "." + entity.CodeValue); } public override async Task Delete(VzEntityDto input) { #if DEBUG if (AbpSession.GetUserName() != User.AdminUserName && AbpSession.GetUserName() != User.SystemUserName) { ThrowError("NoPermissionOperation"); } await base.Delete(input); #else ThrowError("CanNotDelete"); #endif } protected override IQueryable SelfSorting(IQueryable query, VzPagedRequestDto input) { if (query is IQueryable queryable) return (IQueryable)queryable.OrderByDescending(r => r.Id); return query; } protected override IQueryable KeyWordFilter(IQueryable query, string keyword) { if (query is IQueryable queryable) return (IQueryable)queryable.WhereIf(keyword.NotEmpty(), a => a.CodeKey.Contains(keyword) || a.CodeValue.Contains(keyword)); return query; } }