diff --git a/ShenNius.Framework.sln b/ShenNius.Framework.sln index a9cf9f626d8bb5e1a1b1366fa0c30850a5c41f91..6a32eb11f4bc45431ffb0990015b95c9eeaaef16 100644 --- a/ShenNius.Framework.sln +++ b/ShenNius.Framework.sln @@ -23,8 +23,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestApi", "test\TestApi\Tes EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.Share.BaseController", "src\ShenNius.Share.BaseController\ShenNius.Share.BaseController.csproj", "{F37C9888-76F5-4026-A023-99FDAB884F2D}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.ModuleCore", "src\framework\ShenNius.ModuleCore\ShenNius.ModuleCore.csproj", "{DC213E1D-F2CB-45F6-9C8F-B2BA97419160}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.Cms.API", "src\module\ShenNius.Cms.API\ShenNius.Cms.API.csproj", "{D86A554E-9BD1-46AD-BB57-786A2C4933C3}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "module", "module", "{BAFEFD43-8009-49AD-812E-6750DED4CE59}" @@ -39,6 +37,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.API.Hosting", "src EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.Blog.API", "src\module\ShenNius.Blog.API\ShenNius.Blog.API.csproj", "{6101827E-A534-4D27-95BA-8473645237AC}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "toolkit", "toolkit", "{94E54389-C585-4526-BE85-0FC56C760FD5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{9A884E7C-26A4-4AC6-9865-2AE361E28C31}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.ModuleCore", "src\framework\ShenNius.ModuleCore\ShenNius.ModuleCore.csproj", "{4C0975BF-E2F2-4AEE-9E27-D7B8763511EA}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ShenNius.Share.Swagger", "src\ShenNius.Share.Swagger\ShenNius.Share.Swagger.csproj", "{A8498979-877F-4012-AB1E-8FCAC6F990E0}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -69,10 +75,6 @@ Global {F37C9888-76F5-4026-A023-99FDAB884F2D}.Debug|Any CPU.Build.0 = Debug|Any CPU {F37C9888-76F5-4026-A023-99FDAB884F2D}.Release|Any CPU.ActiveCfg = Release|Any CPU {F37C9888-76F5-4026-A023-99FDAB884F2D}.Release|Any CPU.Build.0 = Release|Any CPU - {DC213E1D-F2CB-45F6-9C8F-B2BA97419160}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DC213E1D-F2CB-45F6-9C8F-B2BA97419160}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DC213E1D-F2CB-45F6-9C8F-B2BA97419160}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DC213E1D-F2CB-45F6-9C8F-B2BA97419160}.Release|Any CPU.Build.0 = Release|Any CPU {D86A554E-9BD1-46AD-BB57-786A2C4933C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D86A554E-9BD1-46AD-BB57-786A2C4933C3}.Debug|Any CPU.Build.0 = Debug|Any CPU {D86A554E-9BD1-46AD-BB57-786A2C4933C3}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -93,6 +95,14 @@ Global {6101827E-A534-4D27-95BA-8473645237AC}.Debug|Any CPU.Build.0 = Debug|Any CPU {6101827E-A534-4D27-95BA-8473645237AC}.Release|Any CPU.ActiveCfg = Release|Any CPU {6101827E-A534-4D27-95BA-8473645237AC}.Release|Any CPU.Build.0 = Release|Any CPU + {4C0975BF-E2F2-4AEE-9E27-D7B8763511EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4C0975BF-E2F2-4AEE-9E27-D7B8763511EA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4C0975BF-E2F2-4AEE-9E27-D7B8763511EA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4C0975BF-E2F2-4AEE-9E27-D7B8763511EA}.Release|Any CPU.Build.0 = Release|Any CPU + {A8498979-877F-4012-AB1E-8FCAC6F990E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A8498979-877F-4012-AB1E-8FCAC6F990E0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A8498979-877F-4012-AB1E-8FCAC6F990E0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A8498979-877F-4012-AB1E-8FCAC6F990E0}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -106,7 +116,6 @@ Global {4071FB4F-F0D2-4115-93A2-7D8785A7AC85} = {96F22E21-1AE7-4189-BBCC-C9E1B25E3BE9} {0108712E-7876-4FF8-AFB2-CE80CA49843C} = {8BA7DC21-479F-4AA9-AB83-9D865C77F0C1} {F37C9888-76F5-4026-A023-99FDAB884F2D} = {96F22E21-1AE7-4189-BBCC-C9E1B25E3BE9} - {DC213E1D-F2CB-45F6-9C8F-B2BA97419160} = {D838FB5A-982D-49F1-8CE0-3A1C49C5BF99} {D86A554E-9BD1-46AD-BB57-786A2C4933C3} = {BAFEFD43-8009-49AD-812E-6750DED4CE59} {BAFEFD43-8009-49AD-812E-6750DED4CE59} = {96F22E21-1AE7-4189-BBCC-C9E1B25E3BE9} {C899D3E7-F240-48E0-9B8C-F744821B72F9} = {BAFEFD43-8009-49AD-812E-6750DED4CE59} @@ -114,6 +123,10 @@ Global {140438A6-3944-4ACE-B107-4BF340FA09CE} = {96F22E21-1AE7-4189-BBCC-C9E1B25E3BE9} {456D9C0B-797B-49E0-9F55-74FD757A943C} = {140438A6-3944-4ACE-B107-4BF340FA09CE} {6101827E-A534-4D27-95BA-8473645237AC} = {BAFEFD43-8009-49AD-812E-6750DED4CE59} + {94E54389-C585-4526-BE85-0FC56C760FD5} = {D838FB5A-982D-49F1-8CE0-3A1C49C5BF99} + {9A884E7C-26A4-4AC6-9865-2AE361E28C31} = {D838FB5A-982D-49F1-8CE0-3A1C49C5BF99} + {4C0975BF-E2F2-4AEE-9E27-D7B8763511EA} = {9A884E7C-26A4-4AC6-9865-2AE361E28C31} + {A8498979-877F-4012-AB1E-8FCAC6F990E0} = {94E54389-C585-4526-BE85-0FC56C760FD5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D888E66E-172A-4435-B12D-57395F104070} diff --git a/src/ShenNius.Share.BaseController/Controllers/ApiBaseController.cs b/src/ShenNius.Share.BaseController/Controllers/ApiBaseController.cs index 8ed5a3fe8527e4f9c5e8cbdb55a3688c59f5e270..a06220b229a56788286660d64ad020a995610552 100644 --- a/src/ShenNius.Share.BaseController/Controllers/ApiBaseController.cs +++ b/src/ShenNius.Share.BaseController/Controllers/ApiBaseController.cs @@ -60,14 +60,14 @@ namespace ShenNius.Share.BaseController.Controllers [HttpGet] public virtual async Task GetListPages([FromQuery] TListQuery listQuery) { - var res = await _service.GetPagesAsync(listQuery.Page, listQuery.Limit, d => d.Id, false); + var res = await _service.GetPagesAsync(listQuery.Page, listQuery.Limit, d =>d.Status == true, d => d.Id, false); return new ApiResult(data: new { count = res.TotalItems, items = res.Items }); } [HttpGet] public virtual async Task Detail([FromQuery] TDetailQuery detailQuery) { - var res = await _service.GetModelAsync(d => d.Id == detailQuery.Id); + var res = await _service.GetModelAsync(d => d.Id == detailQuery.Id&&d.Status==true); return new ApiResult(data: res); } [HttpPost] diff --git a/src/ShenNius.Share.BaseController/Controllers/ApiTenantBaseController.cs b/src/ShenNius.Share.BaseController/Controllers/ApiTenantBaseController.cs index b5eb6949e7ed8ad0fefdb0b56975705054369fda..516f07436232a2773a89cb27dec6b8dd72f1fb58 100644 --- a/src/ShenNius.Share.BaseController/Controllers/ApiTenantBaseController.cs +++ b/src/ShenNius.Share.BaseController/Controllers/ApiTenantBaseController.cs @@ -94,7 +94,7 @@ namespace ShenNius.Share.BaseController.Controllers { foreach (var item in deleteInput.Ids) { - var res = await _service.UpdateAsync(d => new TEntity() { Status = false }, d => d.Id == item && d.SiteId == deleteInput.SiteId); + var res = await _service.UpdateAsync(d => new TEntity() { Status = false }, d => d.Id == item && d.SiteId == deleteInput.SiteId&&d.Status==true); if (res <= 0) { throw new FriendlyException("删除失败了!"); @@ -110,7 +110,7 @@ namespace ShenNius.Share.BaseController.Controllers [HttpGet] public virtual async Task GetListPages([FromQuery] TListQuery listQuery) { - var res = await _service.GetPagesAsync(listQuery.Page, listQuery.Limit, d => d.SiteId == listQuery.SiteId, d => d.Id, false); + var res = await _service.GetPagesAsync(listQuery.Page, listQuery.Limit, d => d.SiteId == listQuery.SiteId&&d.Status==true, d => d.Id, false); return new ApiResult(data: new { count = res.TotalItems, items = res.Items }); } @@ -122,7 +122,7 @@ namespace ShenNius.Share.BaseController.Controllers [HttpGet] public virtual async Task Detail([FromQuery] TDetailQuery detailQuery) { - var res = await _service.GetModelAsync(d => d.Id == detailQuery.Id && d.SiteId == detailQuery.SiteId); + var res = await _service.GetModelAsync(d => d.Id == detailQuery.Id && d.SiteId == detailQuery.SiteId&&d.Status==true); return new ApiResult(data: res); } /// diff --git a/src/ShenNius.Share.Infrastructure/Attributes/CacheInterceptorAttribute.cs b/src/ShenNius.Share.Infrastructure/Attributes/CacheInterceptorAttribute.cs index 86a63db9a6f0406857ab4d26e6f8b943361e94f2..2f215e8383198f3f4fc0d9bbfe24a8527e373134 100644 --- a/src/ShenNius.Share.Infrastructure/Attributes/CacheInterceptorAttribute.cs +++ b/src/ShenNius.Share.Infrastructure/Attributes/CacheInterceptorAttribute.cs @@ -1,5 +1,4 @@ using AspectCore.DynamicProxy; -using AspectCore.DynamicProxy.Parameters; using Newtonsoft.Json; using ShenNius.Share.Infrastructure.Cache; using System; @@ -8,8 +7,6 @@ using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using System.Collections.Concurrent; using System.Reflection; -using System.Diagnostics; -using Microsoft.AspNetCore.Http; /************************************* * 类名:CacheInterceptor * 作者:realyrare @@ -56,12 +53,13 @@ namespace ShenNius.Share.Infrastructure.Attributes var returnType = GetReturnType(context); var cache = context.ServiceProvider.GetService(); - if (!cache.Exists(key)) + object result = null; + if (cache.Exists(key)) { - return; + var strResult = cache.Get(key); + result = strResult; } - var strResult = cache.Get(key); - var result = JsonConvert.DeserializeObject(strResult, returnType); + if (result != null) { context.ReturnValue = ResultFactory(result, returnType, context.IsAsync()); @@ -82,6 +80,7 @@ namespace ShenNius.Share.Infrastructure.Attributes catch (Exception e) { Console.WriteLine(e.Message); + throw e; } } diff --git a/src/ShenNius.Share.Infrastructure/Attributes/MultiTenantAttribute.cs b/src/ShenNius.Share.Infrastructure/Attributes/MultiTenantAttribute.cs index f9bf9e4527aa52774561aab9d0c484362d0e2df5..f580f658a043b3e695aff68380c74051de62a68c 100644 --- a/src/ShenNius.Share.Infrastructure/Attributes/MultiTenantAttribute.cs +++ b/src/ShenNius.Share.Infrastructure/Attributes/MultiTenantAttribute.cs @@ -57,10 +57,5 @@ namespace ShenNius.Share.Infrastructure.Attributes } //} } - - //public override void OnActionExecuted(ActionExecutedContext context) - //{ - - //} } } \ No newline at end of file diff --git a/src/ShenNius.Share.Infrastructure/Cache/ICacheHelper.cs b/src/ShenNius.Share.Infrastructure/Cache/ICacheHelper.cs index 591337329dac2e09b6a1174009dd061ee4f49990..d94f8dedbf8f9f44b526759b7fb64bd2ae801482 100644 --- a/src/ShenNius.Share.Infrastructure/Cache/ICacheHelper.cs +++ b/src/ShenNius.Share.Infrastructure/Cache/ICacheHelper.cs @@ -21,6 +21,7 @@ namespace ShenNius.Share.Infrastructure.Cache void Set(string key, T value, TimeSpan timeSpan); T Get(string key); + object Get(string key); void Remove(string key); diff --git a/src/ShenNius.Share.Infrastructure/Cache/MemoryCacheHelper.cs b/src/ShenNius.Share.Infrastructure/Cache/MemoryCacheHelper.cs index d9d486c59636b5666d6e9ed5b462a0ca74a0756e..c734417812c5dd9abd68358230ae56bc259d8e97 100644 --- a/src/ShenNius.Share.Infrastructure/Cache/MemoryCacheHelper.cs +++ b/src/ShenNius.Share.Infrastructure/Cache/MemoryCacheHelper.cs @@ -26,9 +26,9 @@ namespace ShenNius.Share.Infrastructure.Cache { return _cache.TryGetValue(key, out _); } - + public T Get(string key) - { + { return _cache.Get(key); } @@ -105,5 +105,10 @@ namespace ShenNius.Share.Infrastructure.Cache } return data; } + + public object Get(string key) + { + return _cache.Get(key); + } } } \ No newline at end of file diff --git a/src/ShenNius.Share.Infrastructure/Cache/RedisCacheHelper.cs b/src/ShenNius.Share.Infrastructure/Cache/RedisCacheHelper.cs index 89d4037ae312d1af69886b0c64525d7584726528..ae6f315e2103f5585d097cecded54f81013cc43b 100644 --- a/src/ShenNius.Share.Infrastructure/Cache/RedisCacheHelper.cs +++ b/src/ShenNius.Share.Infrastructure/Cache/RedisCacheHelper.cs @@ -121,5 +121,10 @@ namespace ShenNius.Share.Infrastructure.Cache } return default(T); } + + public object Get(string key) + { + return _cache.StringGet(key); + } } } \ No newline at end of file diff --git a/src/ShenNius.Share.Infrastructure/Extension/AuthorizationExtension.cs b/src/ShenNius.Share.Infrastructure/Extension/AuthorizationExtension.cs index 0bd2620b816b2b0076f52cb10cf2bcdcd887aa51..f66ef00449dc5b6c640af6c7bd08bdf1ac1e8a2c 100644 --- a/src/ShenNius.Share.Infrastructure/Extension/AuthorizationExtension.cs +++ b/src/ShenNius.Share.Infrastructure/Extension/AuthorizationExtension.cs @@ -59,7 +59,7 @@ namespace ShenNius.Share.Infrastructure.Extension ValidateAudience = true, ValidAudience = jwtSetting.Audience,//订阅人 ValidateLifetime = true, - ClockSkew = TimeSpan.FromSeconds(jwtSetting.ExpireSeconds), + ClockSkew = TimeSpan.FromSeconds(jwtSetting.ExpireSeconds),//ClockSkew默认值为20s,它是一个缓冲期 RequireExpirationTime = true, }; diff --git a/src/ShenNius.Share.Infrastructure/JsonWebToken/JwtHelper.cs b/src/ShenNius.Share.Infrastructure/JsonWebToken/JwtHelper.cs index 3d6ca3eaaad76ac4b7d02874c8bebafd15516f6a..f4e9bf716c40fd1755b8e0bf8e36be8511b7a410 100644 --- a/src/ShenNius.Share.Infrastructure/JsonWebToken/JwtHelper.cs +++ b/src/ShenNius.Share.Infrastructure/JsonWebToken/JwtHelper.cs @@ -28,7 +28,7 @@ namespace ShenNius.Share.Infrastructure.JsonWebToken audience: jwtSetting.Value.Audience, claims: claims, notBefore: DateTime.Now, - expires: DateTime.Now.AddHours(1), + expires: DateTime.Now.AddDays(1), signingCredentials: creds ); // 生成 Token diff --git a/src/ShenNius.Share.Models/Dtos/Input/Cms/KeywordInput.cs b/src/ShenNius.Share.Models/Dtos/Input/Cms/KeywordInput.cs index 48e10ddc3f095f3bd054ca4724242d2ed6b70068..2b0516efe6229583ed9ba3e6abb6eae751798cc5 100644 --- a/src/ShenNius.Share.Models/Dtos/Input/Cms/KeywordInput.cs +++ b/src/ShenNius.Share.Models/Dtos/Input/Cms/KeywordInput.cs @@ -1,7 +1,5 @@ using ShenNius.Share.Models.Dtos.Common; using System; -using System.Collections.Generic; -using System.Web; /************************************* * 类名:KeywordInput diff --git a/src/ShenNius.Share.Models/Dtos/Input/Sys/DeletesInput.cs b/src/ShenNius.Share.Models/Dtos/Input/Sys/DeletesInput.cs index 7a60b0447f707d46c43c7598826249f3c13b3340..3dc2d20bd6f01837058b2cdeea89ea55a8dbce76 100644 --- a/src/ShenNius.Share.Models/Dtos/Input/Sys/DeletesInput.cs +++ b/src/ShenNius.Share.Models/Dtos/Input/Sys/DeletesInput.cs @@ -15,7 +15,7 @@ namespace ShenNius.Share.Models.Dtos.Input.Sys /// /// 多租户使用 /// - public class DeletesSiteInput: DeletesInput, IGlobalSite + public class DeletesSiteInput: DeletesInput, IGlobalSite { public int SiteId { get; set; } } diff --git a/src/ShenNius.Share.Models/Entity/Common/BaseEntity.cs b/src/ShenNius.Share.Models/Entity/Common/BaseEntity.cs index 8fb3a73fddf2c6a5cb8cef13f19b5e03408236a7..426f28af5d9ba75955f353ec192811f4ff82a249 100644 --- a/src/ShenNius.Share.Models/Entity/Common/BaseEntity.cs +++ b/src/ShenNius.Share.Models/Entity/Common/BaseEntity.cs @@ -18,6 +18,9 @@ namespace ShenNius.Share.Models.Entity.Common int Id { get; set; } DateTime? ModifyTime { get; set; } DateTime CreateTime { get; set; } + /// + /// 删除 true false为正常 + /// bool Status { get; set; } } /// @@ -25,7 +28,7 @@ namespace ShenNius.Share.Models.Entity.Common /// public interface IDeleted { - public DateTime? DeleteTime { get; set; } + //public DateTime? DeleteTime { get; set; } public bool Status { get; set; } } /// @@ -38,7 +41,7 @@ namespace ShenNius.Share.Models.Entity.Common public int SiteId { get; set; } public DateTime? ModifyTime { get; set; } public DateTime CreateTime { get; set; } - public bool Status { get; set; } + public bool Status { get; set; } = true; } /// /// 所有不是多租户的数据库实体基类 @@ -49,6 +52,6 @@ namespace ShenNius.Share.Models.Entity.Common public int Id { get; set; } public DateTime? ModifyTime { get; set; } public DateTime CreateTime { get; set; } - public bool Status { get; set; } + public bool Status { get; set; } = true; } } \ No newline at end of file diff --git a/src/ShenNius.Share.Models/ShenNius.Share.Models.xml b/src/ShenNius.Share.Models/ShenNius.Share.Models.xml index 28abdcbb988de4c6a9a4203a0fe3b506c5184782..c4e4c60a7d8915b51b0ebf739082e1ad23967768 100644 --- a/src/ShenNius.Share.Models/ShenNius.Share.Models.xml +++ b/src/ShenNius.Share.Models/ShenNius.Share.Models.xml @@ -735,6 +735,200 @@ 创建站点时间 + + + Desc:系统ID + Default:0 + Nullable:False + + + + + Desc:网站名称 + Default:- + Nullable:False + + + + + Desc:网站域名 + Default:- + Nullable:False + + + + + Desc:网站Logo + Default:- + Nullable:False + + + + + Desc:网站描述 + Default:- + Nullable:True + + + + + Desc:公司电话 + Default:- + Nullable:True + + + + + Desc:公司传真 + Default:- + Nullable:True + + + + + Desc:公司人事邮箱 + Default:- + Nullable:True + + + + + Desc:公司客服QQ + Default:- + Nullable:True + + + + + Desc:微信公众号图片 + Default:- + Nullable:True + + + + + Desc:微博链接地址或者二维码 + Default:- + Nullable:True + + + + + Desc:公司地址 + Default:- + Nullable:True + + + + + Desc:网站备案号其它等信息 + Default:- + Nullable:True + + + + + Desc:网站SEO标题 + Default:- + Nullable:False + + + + + Desc:网站SEO关键字 + Default:- + Nullable:False + + + + + Desc:网站SEO描述 + Default:- + Nullable:False + + + + + Desc:网站版权等信息 + Default:- + Nullable:False + + + + + Desc:网站开启关闭状态 + Default:b'1' + Nullable:False + + + + + Desc:如果状态关闭,请输入关闭网站原因 + Default:- + Nullable:True + + + + + 创建站点时间 + + + + + Desc:作者 + Default:- + Nullable:True + + + + + Desc:来源 + Default:- + Nullable:True + + + + + Desc:是否外链 + Default:b'0' + Nullable:False + + + + + Desc:外部链接地址 + Default:- + Nullable:True + + + + + Desc:点击量 + Default:0 + Nullable:False + + + + + Desc:最后点击时间 + Default:- + Nullable:True + + + + + Desc:是否置顶 + Default:b'0' + Nullable:False + + + + + Desc:是否热点 + Default:b'0' + Nullable:False + + Desc:字典值——英文名称 @@ -860,6 +1054,11 @@ Nullable:False + + + 左侧树形菜单 + + 登录账号 @@ -945,175 +1144,32 @@ 状态 1=整除 0=不允许登录 - - - Desc:系统ID - Default:0 - Nullable:False - - - - - Desc:网站名称 - Default:- - Nullable:False - - - - - Desc:网站域名 - Default:- - Nullable:False - - - - - Desc:网站Logo - Default:- - Nullable:False - - - - - Desc:网站描述 - Default:- - Nullable:True - - - - - Desc:公司电话 - Default:- - Nullable:True - - - - - Desc:公司传真 - Default:- - Nullable:True - - - - - Desc:公司人事邮箱 - Default:- - Nullable:True - - - - - Desc:公司客服QQ - Default:- - Nullable:True - - - - - Desc:微信公众号图片 - Default:- - Nullable:True - - - - - Desc:微博链接地址或者二维码 - Default:- - Nullable:True - - - - - Desc:公司地址 - Default:- - Nullable:True - - - - - Desc:网站备案号其它等信息 - Default:- - Nullable:True - - - - - Desc:网站SEO标题 - Default:- - Nullable:False - - - - - Desc:网站SEO关键字 - Default:- - Nullable:False - - - - - Desc:网站SEO描述 - Default:- - Nullable:False - - - - - Desc:网站版权等信息 - Default:- - Nullable:False - - - - - Desc:网站开启关闭状态 - Default:b'1' - Nullable:False - - - - - Desc:如果状态关闭,请输入关闭网站原因 - Default:- - Nullable:True - - - - - 创建站点时间 - - - - - 左侧树形菜单 - - - + 权限 - + 登录账号 - + 真是姓名 - + 手机号码 - + 邮箱 - + 备注 @@ -1327,6 +1383,11 @@ 关键词 + + + 删除 true false为正常 + + 假删除 diff --git a/src/ShenNius.Share.Service/Services/Cms/AdvListService.cs b/src/ShenNius.Share.Service/Services/Cms/AdvListService.cs index c24741d9f45185abafac8c9feb1f4a7b250f439b..0035028df48915a44f091235e90b0ea1d5b515c4 100644 --- a/src/ShenNius.Share.Service/Services/Cms/AdvListService.cs +++ b/src/ShenNius.Share.Service/Services/Cms/AdvListService.cs @@ -16,9 +16,10 @@ namespace ShenNius.Share.Domain.Services.Cms { public interface IAdvListService : IBaseServer { - + } public class AdvListService : BaseServer, IAdvListService { + } } \ No newline at end of file diff --git a/src/ShenNius.Share.Service/Services/Cms/ColumnService.cs b/src/ShenNius.Share.Service/Services/Cms/ColumnService.cs index 9dce7848e97d838a01c1bc26786ce5cee10a35d1..c2808bde4a5194b9ec5c259badb6ec50a617d77c 100644 --- a/src/ShenNius.Share.Service/Services/Cms/ColumnService.cs +++ b/src/ShenNius.Share.Service/Services/Cms/ColumnService.cs @@ -8,6 +8,8 @@ using ShenNius.Share.Models.Entity.Cms; using ShenNius.Share.Domain.Repository; using System; using System.Threading.Tasks; +using ShenNius.Share.Infrastructure.Attributes; +using System.Collections.Generic; /************************************* * 类名:ArticleService @@ -26,16 +28,21 @@ namespace ShenNius.Share.Domain.Services.Cms { Task AddToUpdateAsync(ColumnInput columnInput); Task ModifyAsync(ColumnModifyInput columnModifyInput); + string GetTest(); } public class ColumnService : BaseServer, IColumnService { private readonly IMapper _mapper; - private readonly IMemoryCache _memoryCache; - - public ColumnService(IMapper mapper, IMemoryCache memoryCache) + + public ColumnService(IMapper mapper) { _mapper = mapper; - this._memoryCache = memoryCache; + } + [CacheInterceptor] + public virtual string GetTest() + { + return "AOP-123"; + } public async Task ModifyAsync(ColumnModifyInput columnModifyInput) { diff --git a/src/ShenNius.Share.Swagger/ShenNius.Share.Swagger.csproj b/src/ShenNius.Share.Swagger/ShenNius.Share.Swagger.csproj index f79eab0041f0fa646e7e7a9078ab00ab82e6bc7c..487c0e98fcb6124a087d7dda0ea9a0a52b96607a 100644 --- a/src/ShenNius.Share.Swagger/ShenNius.Share.Swagger.csproj +++ b/src/ShenNius.Share.Swagger/ShenNius.Share.Swagger.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/client/ShenNius.Layui.Admin/Pages/Cms/Keyword.cshtml b/src/client/ShenNius.Layui.Admin/Pages/Cms/Keyword.cshtml index 30e15cbba986ff81548c496329232312a98e6d0f..a4f16f2f8c21e94a0de2a46852e761fb3b86ff92 100644 --- a/src/client/ShenNius.Layui.Admin/Pages/Cms/Keyword.cshtml +++ b/src/client/ShenNius.Layui.Admin/Pages/Cms/Keyword.cshtml @@ -49,7 +49,7 @@ cols: [[ { type: "checkbox", width: 50 }, { field: 'id', width: 80, title: 'ID', sort: true }, - { field: 'title', width: 350, title: '标题' }, + { field: 'title', width: 200, title: '标题' }, { field: 'url', title: 'url' }, { field: 'createTime', title: '创建时间' }, { field: 'modifyTime', title: '修改时间' }, @@ -89,14 +89,14 @@ var checkStatus = table.checkStatus('currentTableId') , data = checkStatus.data; if (obj.event === 'add') { - var content = '/cms/keyowrd-modify'; + var content = '/cms/keyword-modify'; var index = layer.open({ title: '添加关键词', type: 2, shade: 0.2, maxmin: true, shadeClose: true, - area: ['660px', '600px'], + area: ['600px', '300px'], content: content, end: function () { refeshTable(); @@ -111,7 +111,7 @@ listIds.push(data[i].id); } layer.confirm('您确定执行该操作吗?', { icon: 3, title: '提示信息' }, function (index) { - apiUtil.ajax('keyword/deletes', { ids: listIds }, "application/json", "delete", function (res) { + apiUtil.ajax('keyword/soft-delete', { ids: listIds }, "application/json", "delete", function (res) { if (res.statusCode == 200 && res.success == true) { layer.msg(res.msg); layer.close(index); @@ -136,14 +136,14 @@ table.on('tool(currentTableFilter)', function (obj) { var data = obj.data; if (obj.event === 'edit') { - var content = '/cms/keyowrd-modify?id=' + data.id; + var content = '/cms/keyword-modify?id=' + data.id; var index = layer.open({ title: '编辑关键词', // tips: [1, '#c00'], type: 2, shade: 0.2, shadeClose: true, - area: ['660px', '700px'], + area: ['600px', '400px'], content: content, end: function () { refeshTable(); @@ -154,9 +154,9 @@ layer.confirm('真的删除行么', function (index) { var listIds = new Array(); listIds[0] = data.id; - apiUtil.ajax('keyword/deletes', { ids: listIds }, "application/json", "delete", function (res) { + apiUtil.ajax('keyword/soft-delete', { ids: listIds }, "application/json", "delete", function (res) { if (res.statusCode == 200 && res.success == true) { - layer.msg(res.msg); + apiUtil.success(res.msg); layer.close(index); refeshTable(); } else { diff --git a/src/client/ShenNius.Layui.Admin/Pages/Cms/KeywordModify.cshtml b/src/client/ShenNius.Layui.Admin/Pages/Cms/KeywordModify.cshtml index 5022707ac527fa579130aa5579799e2ff9f7436d..c90bee60a522ce46cbf6275953f1c01c079148d1 100644 --- a/src/client/ShenNius.Layui.Admin/Pages/Cms/KeywordModify.cshtml +++ b/src/client/ShenNius.Layui.Admin/Pages/Cms/KeywordModify.cshtml @@ -1,6 +1,6 @@ @page @model ShenNius.Layui.Admin.Pages.Cms.KeywordModifyModel -section css{ +@section css{ } -
+
@@ -31,13 +31,13 @@ section css{
- +
- +
@@ -65,9 +65,9 @@ section css{ var id=@Model.Id; if (id > 0) { - apiUtil.ajax('keyowrd/detail', { id: id }, "application/json", "get", function (res) { + apiUtil.ajax('keyword/detail', { id: id }, "application/json", "get", function (res) { if (res.statusCode == 200 && res.success == true) { - form.val("keyowrd-edit", res.data); + form.val("keyword-edit", res.data); } }); } @@ -75,7 +75,7 @@ section css{ //监听提交 form.on('submit(saveBtn)', function (data) { if (data.field.id>0) { - apiUtil.ajax('keyowrd/modify', data.field, "application/json", "put", function (res) { + apiUtil.ajax('keyword/modify', data.field, "application/json", "put", function (res) { //console.log("msg:" + res.msg); if (res.statusCode == 200 && res.success == true) { apiUtil.success(res.msg); @@ -85,7 +85,7 @@ section css{ } }); } else { - apiUtil.ajax('keyowrd/add', data.field, "application/json", "post", function (res) { + apiUtil.ajax('keyword/add', data.field, "application/json", "post", function (res) { if (res.statusCode == 200 && res.success == true) { apiUtil.success(res.msg); parent.layer.close(parentIndex); diff --git a/src/hosting/ShenNius.API.Hosting/ShenNius.API.Hosting.csproj b/src/hosting/ShenNius.API.Hosting/ShenNius.API.Hosting.csproj index ef9d3e20b570f7ca6a1b195286033f523846006e..dc6bc4a08cb8026c4cccb413747416f993045db2 100644 --- a/src/hosting/ShenNius.API.Hosting/ShenNius.API.Hosting.csproj +++ b/src/hosting/ShenNius.API.Hosting/ShenNius.API.Hosting.csproj @@ -16,7 +16,6 @@ - diff --git a/src/hosting/ShenNius.API.Hosting/ShenNiusApiHostingModule.cs b/src/hosting/ShenNius.API.Hosting/ShenNiusApiHostingModule.cs index dc0b010b6a44c0336fc915922ea240f34b878a5c..5fb3df11d8115834aaaa76657f3c00afd581bac3 100644 --- a/src/hosting/ShenNius.API.Hosting/ShenNiusApiHostingModule.cs +++ b/src/hosting/ShenNius.API.Hosting/ShenNiusApiHostingModule.cs @@ -25,10 +25,10 @@ using ShenNius.Blog.API; namespace ShenNius.API.Hosting { [DependsOn( - typeof(ShenNiusShopApiModule), + //typeof(ShenNiusShopApiModule), typeof(ShenNiusCmsApiModule), typeof(ShenNiusSysApiModule), - typeof(ShenNiusBlogApiModule) + typeof(ShenNiusBlogApiModule) )] public class ShenNiusApiHostingModule : AppModule { diff --git a/src/module/ShenNius.Blog.API/Controllers/Cms/IndexController.cs b/src/module/ShenNius.Blog.API/Controllers/Cms/IndexController.cs index c4cb130b644c7e6bad41c95c1dfd64158bf0bca0..df19902620f5d17e3796f6685a16846f54df172c 100644 --- a/src/module/ShenNius.Blog.API/Controllers/Cms/IndexController.cs +++ b/src/module/ShenNius.Blog.API/Controllers/Cms/IndexController.cs @@ -54,14 +54,14 @@ namespace ShenNius.Blog.API.Controllers.Cms _cache = cache; } - private async Task> GetColumnAsync() + private async Task> GetColumnAsync(int siteId) { - return await _columnService.GetListAsync(); + return await _columnService.GetListAsync(d=>d.Status==true&&d.SiteId==siteId); } [HttpGet] - public ApiResult GetAllColumn() + public ApiResult GetAllColumn(int globalSiteId) { - return new ApiResult(GetColumnAsync()); + return new ApiResult(GetColumnAsync(globalSiteId)); } /// /// 请求站点信息 @@ -69,7 +69,7 @@ namespace ShenNius.Blog.API.Controllers.Cms /// 站点id /// [HttpGet] - public ApiResult GetSiteInfo(string globalSiteId) + public ApiResult GetSiteInfo(int globalSiteId) { var model = _cmsSiteService.GetModelAsync(d => d.Id.Equals(globalSiteId)); if (model == null) @@ -79,11 +79,11 @@ namespace ShenNius.Blog.API.Controllers.Cms return new ApiResult(model); } [HttpGet] - public async Task GetRightData(string spell) + public async Task GetRightData(string spell, int globalSiteId) { var monthArticle = await _articleService.GetArtcileByConditionAsync((ca, cc) => ca.Audit == true && SqlFunc.DateIsSame(DateTime.Now, ca.CreateTime, DateType.Month), 1, 10); var currentSpellArticle = await _articleService.GetArtcileByConditionAsync((ca, cc) => ca.Audit == true && cc.EnTitle.Trim().Equals(spell), 1, 10); - var allChildColumn = (await GetColumnAsync()).Where(d => d.ParentId != 0).ToList(); + var allChildColumn = (await GetColumnAsync(globalSiteId)).Where(d => d.ParentId != 0).ToList(); return new ApiResult(data: new { monthArticle = monthArticle.Items, currentSpellArticle = currentSpellArticle.Items, allChildColumn }); } [HttpGet] @@ -98,15 +98,15 @@ namespace ShenNius.Blog.API.Controllers.Cms }); } [HttpGet] - public async Task GetAllTags(string spell) + public async Task GetAllTags(string spell,int globalSiteId) { // 进来可能是大类或子类,1、大类下面有子类,2、大类下面没有子类 3、进来的是子类 - var model = (await GetColumnAsync()).Where(d => d.EnTitle.Equals(spell)).FirstOrDefault(); + var model = (await GetColumnAsync(globalSiteId)).Where(d => d.EnTitle.Equals(spell)).FirstOrDefault(); List columnListId = new List(); if (model.ParentId == 0) { //查下该大类有没有子类 - columnListId = (await GetColumnAsync()).Where(d => d.ParentId == model.Id).Select(d => d.Id).ToList(); + columnListId = (await GetColumnAsync(globalSiteId)).Where(d => d.ParentId == model.Id).Select(d => d.Id).ToList(); //没有子类直接赋值大类id if (columnListId.Count == 0) { @@ -127,10 +127,10 @@ namespace ShenNius.Blog.API.Controllers.Cms /// /// [HttpGet] - public async Task GetDetail(int id = 0, string parentColumnSpell = null, string childColumnspell = null) + public async Task GetDetail(int id = 0,int siteId=0 ,string parentColumnSpell = null, string childColumnspell = null) { - List columnList = await GetColumnAsync(); + List columnList = await GetColumnAsync(siteId); if (string.IsNullOrEmpty(parentColumnSpell) && string.IsNullOrEmpty(childColumnspell)) { @@ -161,11 +161,11 @@ namespace ShenNius.Blog.API.Controllers.Cms /// /// [HttpGet] - public async Task GetList(string parentColumnSpell, string childColumnSpell, string keyword, int page = 1) + public async Task GetList(int siteId,string parentColumnSpell, string childColumnSpell, string keyword, int page = 1) { Page query = null; Column columnModel = null; List allChildColumnIdList = new List(); - var columnList = await GetColumnAsync(); + var columnList = await GetColumnAsync(siteId); //keyword Expression> expression = null; if (!string.IsNullOrEmpty(keyword)) @@ -247,9 +247,9 @@ namespace ShenNius.Blog.API.Controllers.Cms return new ApiResult(result); } [HttpGet] - public async Task GetAdvList() + public async Task GetAdvList(int siteId) { - var advList = await _advlistService.GetListAsync(x => x.Status == true, x => x.Sort, false); + var advList = await _advlistService.GetListAsync(x => x.Status == true&&x.SiteId==siteId, x => x.Sort, false); return new ApiResult(advList); } } diff --git a/src/module/ShenNius.Cms.API/Controllers/AdvListController.cs b/src/module/ShenNius.Cms.API/Controllers/AdvListController.cs index c9c67d9b8292f0efacd6fb88cbaf3011932c685d..6fc8ce5d872419a69e9925081efa5c4600288196 100644 --- a/src/module/ShenNius.Cms.API/Controllers/AdvListController.cs +++ b/src/module/ShenNius.Cms.API/Controllers/AdvListController.cs @@ -41,7 +41,6 @@ namespace ShenNius.Cms.API.Controllers this._qiNiuOssModel = qiNiuOssModel.CurrentValue; this._qiniuCloud = qiniuCloud; } - [HttpGet] public override async Task GetListPages([FromQuery] KeyListSiteQuery keywordListSiteQuery) { diff --git a/src/module/ShenNius.Cms.API/Controllers/ColumnController.cs b/src/module/ShenNius.Cms.API/Controllers/ColumnController.cs index 9f2142003512abc556e662bab7f0f9712076cd4a..a0a7d921a89ffa7230d1d84819472913810489f1 100644 --- a/src/module/ShenNius.Cms.API/Controllers/ColumnController.cs +++ b/src/module/ShenNius.Cms.API/Controllers/ColumnController.cs @@ -11,6 +11,7 @@ using ShenNius.Share.Domain.Repository; using System; using System.Linq.Expressions; using System.Threading.Tasks; +using Microsoft.AspNetCore.Authorization; /************************************* * 类名:ColumnController @@ -31,7 +32,13 @@ namespace ShenNius.Cms.API.Controllers { _columnService = columnService; } - + [HttpGet] + [AllowAnonymous] + public ApiResult GetTestCache() + { + var str= _columnService.GetTest(); + return new ApiResult(str); + } [HttpGet] public override async Task GetListPages([FromQuery] KeyListSiteQuery keywordListSiteQuery) { diff --git a/src/module/ShenNius.Shop.API/ShenNius.Shop.API.csproj b/src/module/ShenNius.Shop.API/ShenNius.Shop.API.csproj index c9fa0d130c37f4eb62d19372204269a875fb32ed..816389fce89ef42a116d2684d141665a790fcbbb 100644 --- a/src/module/ShenNius.Shop.API/ShenNius.Shop.API.csproj +++ b/src/module/ShenNius.Shop.API/ShenNius.Shop.API.csproj @@ -11,8 +11,12 @@ + + + + diff --git a/src/module/ShenNius.Sys.API/ShenNius.Sys.API.csproj b/src/module/ShenNius.Sys.API/ShenNius.Sys.API.csproj index e0b8e9266bfdf8cee233c3b3cfa197527e96c045..512152d7ef1e840941d05a401095bbe9408a6fde 100644 --- a/src/module/ShenNius.Sys.API/ShenNius.Sys.API.csproj +++ b/src/module/ShenNius.Sys.API/ShenNius.Sys.API.csproj @@ -13,7 +13,6 @@ -