From 1655870d4d5cb6de860475fea0ec0d60258cf470 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sat, 15 Apr 2023 22:44:33 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E5=85=A8=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=B7=91=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Data/Filters/DefaultDataFilter.cs | 53 +++ .../Data/Filters/IDataFilter.cs | 23 + .../Ddd/Services/ReadOnlyAppService.cs | 1 + .../Sqlsugar/Filters/SqlsugarDataFilter.cs | 45 ++ .../Sqlsugar/SqlSugarDbContext.cs | 76 ++-- .../Yi.Framework.Infrastructure/Startup.cs | 5 + .../Bbs/Domain/ForumManager.cs | 42 ++ .../Bbs/Event/SeeDiscussEventHandler.cs | 29 ++ .../Bbs/Services/IArticleService.cs | 13 + .../Bbs/Services/IBannerService.cs | 13 + .../Bbs/Services/ICommentService.cs | 13 + .../Bbs/Services/IDiscussService.cs | 13 + .../Bbs/Services/ILabelService.cs | 13 + .../Bbs/Services/IPlateService.cs | 13 + .../Bbs/Services/ISettingService.cs | 16 + .../Bbs/Services/Impl/AgreeService.cs | 71 ++++ .../Bbs/Services/Impl/ArticleService.cs | 113 +++++ .../Bbs/Services/Impl/BannerService.cs | 14 + .../Bbs/Services/Impl/CommentService.cs | 107 +++++ .../Bbs/Services/Impl/DiscussService.cs | 150 +++++++ .../Bbs/Services/Impl/MyTypeService.cs | 54 +++ .../Bbs/Services/Impl/PlateService.cs | 14 + .../Bbs/Services/Impl/SettingService.cs | 21 + .../Rbac/Domain/AccountManager.cs | 2 +- .../Rbac/Event/LoginEventHandler.cs | 11 +- .../Rbac/Services/IConfigService.cs | 13 + .../Rbac/Services/IDeptService.cs | 2 +- .../Rbac/Services/IMenuService.cs | 2 +- .../Rbac/Services/IPostService.cs | 2 +- .../Rbac/Services/IRoleService.cs | 2 +- .../Rbac/Services/IUserService.cs | 2 +- .../Rbac/Services/Impl/AccountService.cs | 25 +- .../Rbac/Services/Impl/ConfigService.cs | 34 ++ .../Rbac/Services/Impl/DeptService.cs | 2 +- .../Rbac/Services/Impl/LoginLogService.cs | 30 ++ .../Rbac/Services/Impl/MenuService.cs | 2 +- .../Rbac/Services/Impl/PostService.cs | 2 +- .../Rbac/Services/Impl/RoleService.cs | 2 +- .../Rbac/Services/Impl/UserService.cs | 4 +- .../Yi.Furion.Application.csproj | 4 - .../Yi.Furion.Application.xml | 286 ++++++++++--- .../Yi.Furion.Core/Bbs/Consts/ArticleConst.cs | 19 + .../Yi.Furion.Core/Bbs/Consts/CommentConst.cs | 16 + .../Yi.Furion.Core/Bbs/Consts/DiscussConst.cs | 19 + .../Yi.Furion.Core/Bbs/Consts/LabelConst.cs | 16 + .../Yi.Furion.Core/Bbs/Consts/PlateConst.cs | 17 + .../Yi.Furion.Core/Bbs/Dtos/Argee/AgreeDto.cs | 30 ++ .../Bbs/Dtos/Article/ArticleAllOutputDto.cs | 18 + .../Bbs/Dtos/Article/ArticleCreateInputVo.cs | 19 + .../Bbs/Dtos/Article/ArticleGetListInputVo.cs | 13 + .../Dtos/Article/ArticleGetListOutputDto.cs | 16 + .../Bbs/Dtos/Article/ArticleGetOutputDto.cs | 13 + .../Bbs/Dtos/Article/ArticleUpdateInputVo.cs | 10 + .../Bbs/Dtos/Banner/BannerCreateInputVo.cs | 18 + .../Bbs/Dtos/Banner/BannerGetListInputVo.cs | 9 + .../Bbs/Dtos/Banner/BannerGetListOutputDto.cs | 15 + .../Bbs/Dtos/Banner/BannerGetOutputDto.cs | 15 + .../Bbs/Dtos/Banner/BannerUpdateInputVo.cs | 9 + .../Bbs/Dtos/Comment/CommentCreateInputVo.cs | 36 ++ .../Bbs/Dtos/Comment/CommentGetListInputVo.cs | 13 + .../Dtos/Comment/CommentGetListOutputDto.cs | 49 +++ .../Bbs/Dtos/Comment/CommentGetOutputDto.cs | 36 ++ .../Bbs/Dtos/Comment/CommentUpdateInputVo.cs | 10 + .../Bbs/Dtos/Discuss/DiscussCreateInputVo.cs | 33 ++ .../Bbs/Dtos/Discuss/DiscussGetListInputVo.cs | 19 + .../Dtos/Discuss/DiscussGetListOutputDto.cs | 95 +++++ .../Bbs/Dtos/Discuss/DiscussGetOutputDto.cs | 40 ++ .../Bbs/Dtos/Discuss/DiscussUpdateInputVo.cs | 25 ++ .../Bbs/Dtos/MyType/MyTypeCreateInputVo.cs | 18 + .../Bbs/Dtos/MyType/MyTypeGetListInputVo.cs | 19 + .../Bbs/Dtos/MyType/MyTypeGetListOutputDto.cs | 13 + .../Bbs/Dtos/MyType/MyTypeOutputDto.cs | 13 + .../Bbs/Dtos/MyType/MyTypeUpdateInputVo.cs | 17 + .../Bbs/Dtos/Plate/PlateCreateInputVo.cs | 19 + .../Bbs/Dtos/Plate/PlateGetListInputVo.cs | 12 + .../Bbs/Dtos/Plate/PlateGetListOutputDto.cs | 20 + .../Bbs/Dtos/Plate/PlateGetOutputDto.cs | 12 + .../Bbs/Dtos/Plate/PlateUpdateInputVo.cs | 18 + .../Bbs/Entities/AgreeEntity .cs | 35 ++ .../Bbs/Entities/ArticleEntity.cs | 58 +++ .../Bbs/Entities/BannerEntity.cs | 26 ++ .../Bbs/Entities/CommentEntity.cs | 67 +++ .../Bbs/Entities/DiscussEntity.cs | 63 +++ .../Bbs/Entities/DiscussMyTypeEntity.cs | 21 + .../Bbs/Entities/MyTypeEntity.cs | 20 + .../Bbs/Entities/PlateEntity.cs | 18 + .../Bbs/Entities/SettingEntity.cs | 18 + .../Bbs/Enums/DiscussPermissionTypeEnum.cs | 27 ++ .../Bbs/Enums/QueryDiscussTypeEnum.cs | 16 + .../Bbs/Etos/SeeDiscussEventSource.cs | 32 ++ Yi.Furion.Net6/Yi.Furion.Core/GlobalUsings.cs | 17 + .../{ConstClasses => Consts}/DeptConst.cs | 2 +- .../{ConstClasses => Consts}/MenuConst.cs | 2 +- .../{ConstClasses => Consts}/PostConst.cs | 2 +- .../{ConstClasses => Consts}/RoleConst.cs | 2 +- .../{ConstClasses => Consts}/UserConst.cs | 2 +- .../Rbac/Dtos/Account/CaptchaImageDto.cs | 2 +- .../Rbac/Dtos/Account/LoginInputVo.cs | 2 +- .../Rbac/Dtos/Account/PhoneCaptchaImageDto.cs | 2 +- .../Rbac/Dtos/Account/RegisterDto.cs | 2 +- .../Rbac/Dtos/Account/RestPasswordDto.cs | 2 +- .../Rbac/Dtos/Account/UpdateIconDto.cs | 2 +- .../Rbac/Dtos/Account/UpdatePasswordDto.cs | 2 +- .../Rbac/Dtos/Config/ConfigCreateInputVo.cs | 17 + .../Rbac/Dtos/Config/ConfigGetListInputVo.cs | 21 + .../Dtos/Config/ConfigGetListOutputDto.cs | 40 ++ .../Rbac/Dtos/Config/ConfigGetOutputDto.cs | 16 + .../Rbac/Dtos/Config/ConfigUpdateInputVo.cs | 14 + .../Rbac/Dtos/Dept/DeptCreateInputVo.cs | 2 +- .../Rbac/Dtos/Dept/DeptGetListInputVo.cs | 2 +- .../Rbac/Dtos/Dept/DeptGetListOutputDto.cs | 3 +- .../Rbac/Dtos/Dept/DeptGetOutputDto.cs | 2 +- .../Rbac/Dtos/Dept/DeptUpdateInputVo.cs | 2 +- .../Dtos/LoginLog/LoginLogGetListInputVo.cs | 11 + .../Dtos/LoginLog/LoginLogGetListOutputDto.cs | 32 ++ .../Rbac/Dtos/Menu/MenuCreateInputVo.cs | 5 +- .../Rbac/Dtos/Menu/MenuGetListInputVo.cs | 2 +- .../Rbac/Dtos/Menu/MenuGetListOutputDto.cs | 5 +- .../Rbac/Dtos/Menu/MenuGetOutputDto.cs | 5 +- .../Rbac/Dtos/Menu/MenuUpdateInputVo.cs | 5 +- .../Rbac/Dtos/Post/PostCreateInputVo.cs | 2 +- .../Rbac/Dtos/Post/PostGetListInputVo.cs | 2 +- .../Rbac/Dtos/Post/PostGetListOutputDto.cs | 2 +- .../Rbac/Dtos/Post/PostGetOutputDto.cs | 3 +- .../Rbac/Dtos/Post/PostUpdateInputVo.cs | 4 +- .../Rbac/Dtos/Role/RoleCreateInputVo.cs | 5 +- .../Rbac/Dtos/Role/RoleGetListInputVo.cs | 2 +- .../Rbac/Dtos/Role/RoleGetListOutputDto.cs | 4 +- .../Rbac/Dtos/Role/RoleGetOutputDto.cs | 4 +- .../Rbac/Dtos/Role/RoleUpdateInputVo.cs | 4 +- .../Rbac/Dtos/User/ProfileUpdateInputVo.cs | 4 +- .../Rbac/Dtos/User/UserCreateInputVo.cs | 5 +- .../Rbac/Dtos/User/UserGetListInputVo.cs | 2 +- .../Rbac/Dtos/User/UserGetListOutputDto.cs | 4 +- .../Rbac/Dtos/User/UserGetOutputDto.cs | 10 +- .../Rbac/Dtos/User/UserUpdateInputVo.cs | 4 +- .../Rbac/Entities/ConfigEntity.cs | 58 +++ .../Rbac/Entities/MenuEntity.cs | 2 +- .../Rbac/Entities/RoleEntity.cs | 2 +- .../Rbac/Entities/UserEntity.cs | 2 +- .../{EnumClasses => Enums}/DataScopeEnum.cs | 2 +- .../{EnumClasses => Enums}/MenuTypeEnum.cs | 2 +- .../Rbac/{EnumClasses => Enums}/SexEnum.cs | 2 +- .../Rbac/Etos/LoginEventSource.cs | 2 + .../Yi.Furion.Core/Yi.Furion.Core.csproj | 3 +- .../Yi.Furion.Core/Yi.Furion.Core.xml | 395 +++++++++++++++++- .../Repositories/IArticleRepository.cs | 14 + .../Repositories/Impl/ArticleRepository.cs | 24 ++ .../Repositories/Impl/UserRepository.cs | 2 +- Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs | 2 + Yi.RuoYi.Vue3/src/utils/request.js | 2 +- 151 files changed, 3120 insertions(+), 209 deletions(-) create mode 100644 Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/DefaultDataFilter.cs create mode 100644 Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/IDataFilter.cs create mode 100644 Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/Filters/SqlsugarDataFilter.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Domain/ForumManager.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Event/SeeDiscussEventHandler.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IArticleService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IBannerService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ICommentService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IDiscussService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ILabelService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IPlateService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ISettingService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/AgreeService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/ArticleService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/BannerService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/CommentService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/DiscussService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/MyTypeService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/PlateService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/SettingService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IConfigService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/ConfigService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/LoginLogService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/ArticleConst.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/CommentConst.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/DiscussConst.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/LabelConst.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/PlateConst.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Argee/AgreeDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleAllOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleUpdateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerUpdateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentUpdateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussUpdateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeUpdateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateUpdateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/AgreeEntity .cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/ArticleEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/BannerEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/CommentEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussMyTypeEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/MyTypeEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/PlateEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/SettingEntity.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/DiscussPermissionTypeEnum.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/QueryDiscussTypeEnum.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Bbs/Etos/SeeDiscussEventSource.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/GlobalUsings.cs rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{ConstClasses => Consts}/DeptConst.cs (83%) rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{ConstClasses => Consts}/MenuConst.cs (83%) rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{ConstClasses => Consts}/PostConst.cs (83%) rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{ConstClasses => Consts}/RoleConst.cs (83%) rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{ConstClasses => Consts}/UserConst.cs (96%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/CaptchaImageDto.cs (86%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/LoginInputVo.cs (88%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs (81%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/RegisterDto.cs (94%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/RestPasswordDto.cs (81%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/UpdateIconDto.cs (80%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Account/UpdatePasswordDto.cs (85%) create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigCreateInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigUpdateInputVo.cs rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Dept/DeptCreateInputVo.cs (93%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Dept/DeptGetListInputVo.cs (87%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Dept/DeptGetListOutputDto.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Dept/DeptGetOutputDto.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Dept/DeptUpdateInputVo.cs (92%) create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListInputVo.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListOutputDto.cs rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Menu/MenuCreateInputVo.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Menu/MenuGetListInputVo.cs (82%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Menu/MenuGetListOutputDto.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Menu/MenuGetOutputDto.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Menu/MenuUpdateInputVo.cs (90%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Post/PostCreateInputVo.cs (92%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Post/PostGetListInputVo.cs (86%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Post/PostGetListOutputDto.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Post/PostGetOutputDto.cs (90%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Post/PostUpdateInputVo.cs (88%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Role/RoleCreateInputVo.cs (82%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Role/RoleGetListInputVo.cs (84%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Role/RoleGetListOutputDto.cs (86%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Role/RoleGetOutputDto.cs (86%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/Role/RoleUpdateInputVo.cs (83%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/User/ProfileUpdateInputVo.cs (83%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/User/UserCreateInputVo.cs (89%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/User/UserGetListInputVo.cs (88%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/User/UserGetListOutputDto.cs (91%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/User/UserGetOutputDto.cs (82%) rename Yi.Furion.Net6/{Yi.Furion.Application => Yi.Furion.Core}/Rbac/Dtos/User/UserUpdateInputVo.cs (90%) create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/ConfigEntity.cs rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{EnumClasses => Enums}/DataScopeEnum.cs (86%) rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{EnumClasses => Enums}/MenuTypeEnum.cs (85%) rename Yi.Furion.Net6/Yi.Furion.Core/Rbac/{EnumClasses => Enums}/SexEnum.cs (91%) create mode 100644 Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/IArticleRepository.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/ArticleRepository.cs diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/DefaultDataFilter.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/DefaultDataFilter.cs new file mode 100644 index 00000000..6d19bc51 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/DefaultDataFilter.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Infrastructure.Data.Filters +{ + public class DefaultDataFilter : IDataFilter + { + private readonly IServiceProvider _serviceProvider; + + public DefaultDataFilter(IServiceProvider serviceProvider) + { + _serviceProvider = serviceProvider; + } + + + + public IDisposable Disable() where TFilter : class + { + return this; + } + + public IDisposable Enable() where TFilter : class + { + return this; + } + + public bool IsEnabled() where TFilter : class + { + return false; + } + + public void RemoveFilter() where TFilter : class + { + } + public void RemoveAndBackup() where TFilter : class + { + } + + public void AddFilter(Expression> expression) where TFilter : class + { + } + + public void Dispose() + { + + } + } +} diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/IDataFilter.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/IDataFilter.cs new file mode 100644 index 00000000..219a9e19 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Data/Filters/IDataFilter.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Infrastructure.Data.Filters +{ + public interface IDataFilter : IDisposable + { + IDisposable Enable() where TFilter : class; + + IDisposable Disable() where TFilter : class; + + bool IsEnabled() where TFilter : class; + + void AddFilter(Expression> expression) where TFilter : class; + + void RemoveFilter() where TFilter : class; + } + +} diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Ddd/Services/ReadOnlyAppService.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Ddd/Services/ReadOnlyAppService.cs index 5182cfda..5aefc3e4 100644 --- a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Ddd/Services/ReadOnlyAppService.cs +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Ddd/Services/ReadOnlyAppService.cs @@ -77,6 +77,7 @@ where TEntityDto : IEntityDto /// /// /// + [Route("")] public virtual async Task> GetListAsync([FromQuery]TGetListInput input) { var totalCount = -1; diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/Filters/SqlsugarDataFilter.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/Filters/SqlsugarDataFilter.cs new file mode 100644 index 00000000..68a94012 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/Filters/SqlsugarDataFilter.cs @@ -0,0 +1,45 @@ +using System.Linq.Expressions; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Filters; + +namespace Yi.Framework.Infrastructure.Sqlsugar.Filters +{ + public class SqlsugarDataFilter : IDataFilter + { + private ISqlSugarClient _Db { get; set; } + public SqlsugarDataFilter(ISqlSugarClient sqlSugarClient) + { + _Db = sqlSugarClient; + } + public void AddFilter(Expression> expression) where TFilter : class + { + _Db.QueryFilter.AddTableFilter(expression); + } + + public IDisposable Disable() where TFilter : class + { + _Db.QueryFilter.ClearAndBackup(); + return this; + } + + public IDisposable Enable() where TFilter : class + { + throw new NotImplementedException("暂时没有单独还原过滤器的方式"); + } + + public bool IsEnabled() where TFilter : class + { + throw new NotImplementedException("暂时没有判断过滤器的方式"); + } + + public void RemoveFilter() where TFilter : class + { + _Db.QueryFilter.Clear(); + } + + public void Dispose() + { + _Db.QueryFilter.Restore(); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/SqlSugarDbContext.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/SqlSugarDbContext.cs index 9bb2372f..47ad22a3 100644 --- a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/SqlSugarDbContext.cs +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Sqlsugar/SqlSugarDbContext.cs @@ -8,6 +8,8 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; using Yi.Framework.Infrastructure.CurrentUsers; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Data.Entities; namespace Yi.Framework.Infrastructure.Sqlsugar { @@ -83,45 +85,45 @@ namespace Yi.Framework.Infrastructure.Sqlsugar db.Aop.DataExecuting = (oldValue, entityInfo) => { - //switch (entityInfo.OperationType) - //{ - // case DataFilterType.UpdateByObject: + switch (entityInfo.OperationType) + { + case DataFilterType.UpdateByObject: - // if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.LastModificationTime))) - // { - // entityInfo.SetValue(DateTime.Now); - // } - // if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.LastModifierId))) - // { - // if (_currentUser != null) - // { - // entityInfo.SetValue(_currentUser.Id); - // } - // } - // break; - // case DataFilterType.InsertByObject: - // if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.CreationTime))) - // { - // entityInfo.SetValue(DateTime.Now); - // } - // if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.CreatorId))) - // { - // if (_currentUser != null) - // { - // entityInfo.SetValue(_currentUser.Id); - // } - // } + if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.LastModificationTime))) + { + entityInfo.SetValue(DateTime.Now); + } + if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.LastModifierId))) + { + if (_currentUser != null) + { + entityInfo.SetValue(_currentUser.Id); + } + } + break; + case DataFilterType.InsertByObject: + if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.CreationTime))) + { + entityInfo.SetValue(DateTime.Now); + } + if (entityInfo.PropertyName.Equals(nameof(IAuditedObject.CreatorId))) + { + if (_currentUser != null) + { + entityInfo.SetValue(_currentUser.Id); + } + } - // //插入时,需要租户id,先预留 - // if (entityInfo.PropertyName.Equals(nameof(IMultiTenant.TenantId))) - // { - // //if (this.CurrentTenant is not null) - // //{ - // // entityInfo.SetValue(this.CurrentTenant.Id); - // //} - // } - // break; - //} + //插入时,需要租户id,先预留 + if (entityInfo.PropertyName.Equals(nameof(IMultiTenant.TenantId))) + { + //if (this.CurrentTenant is not null) + //{ + // entityInfo.SetValue(this.CurrentTenant.Id); + //} + } + break; + } }; db.Aop.OnLogExecuting = (s, p) => { diff --git a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs index 2d1ec8de..10362790 100644 --- a/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs +++ b/Yi.Furion.Net6/Yi.Framework.Infrastructure/Startup.cs @@ -3,8 +3,11 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; +using StackExchange.Profiling.SqlFormatters; using Yi.Framework.Infrastructure.AspNetCore; +using Yi.Framework.Infrastructure.Data.Filters; using Yi.Framework.Infrastructure.Sqlsugar; +using Yi.Framework.Infrastructure.Sqlsugar.Filters; using Yi.Framework.Infrastructure.Sqlsugar.Uow; namespace Yi.Framework.Infrastructure; @@ -20,6 +23,8 @@ public class Startup : AppStartup services.AddDbSqlsugarContextServer(); services.AddUnitOfWork(); + + services.AddTransient(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Domain/ForumManager.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Domain/ForumManager.cs new file mode 100644 index 00000000..3546b7d1 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Domain/ForumManager.cs @@ -0,0 +1,42 @@ +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Framework.Infrastructure.Helper; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Application.Bbs.Domain +{ + /// + /// 论坛模块的领域服务 + /// + public class ForumManager:ITransient + { + private readonly IRepository _discussRepository; + private readonly IRepository _plateEntityRepository; + private readonly IRepository _commentRepository; + public ForumManager(IRepository discussRepository, IRepository plateEntityRepository, IRepository commentRepository) + { + _discussRepository = discussRepository; + _plateEntityRepository = plateEntityRepository; + _commentRepository = commentRepository; + } + + //主题是不能直接创建的,需要由领域服务统一创建 + public async Task CreateDiscussAsync(DiscussEntity entity) + { + entity.Id = SnowflakeHelper.NextId; + entity.CreationTime = DateTime.Now; + entity.AgreeNum = 0; + entity.SeeNum = 0; + return await _discussRepository.InsertReturnEntityAsync(entity); + } + + public async Task CreateCommentAsync(long discussId, long parentId, long rootId, string content) + { + var entity = new CommentEntity(discussId); + entity.Id = SnowflakeHelper.NextId; + entity.Content = content; + entity.ParentId = parentId; + entity.RootId = rootId; + return await _commentRepository.InsertReturnEntityAsync(entity); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Event/SeeDiscussEventHandler.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Event/SeeDiscussEventHandler.cs new file mode 100644 index 00000000..8c6a8611 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Event/SeeDiscussEventHandler.cs @@ -0,0 +1,29 @@ +using Furion.EventBus; +using Microsoft.AspNetCore.Mvc.Diagnostics; +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Furion.Core.Bbs.Entities; +using Yi.Furion.Core.Bbs.Etos; + +namespace Yi.Furion.Application.Bbs.Event +{ + public class SeeDiscussEventHandler : IEventSubscriber, ISingleton + { + private IRepository _repository; + public SeeDiscussEventHandler(IRepository repository) + { + _repository = repository; + } + //[EventSubscribe(nameof(LoginEventSource))] + public async Task HandlerAsync(EventHandlerExecutingContext context) + { + var eventData = (SeeDiscussEventArgs)context.Source.Payload; + var entity = await _repository.GetByIdAsync(eventData.DiscussId); + if (entity is not null) + { + entity.SeeNum += 1; + await _repository.UpdateAsync(entity); + } + } + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IArticleService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IArticleService.cs new file mode 100644 index 00000000..6b6790e1 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IArticleService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Bbs.Dtos.Article; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Article服务抽象 + /// + public interface IArticleService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IBannerService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IBannerService.cs new file mode 100644 index 00000000..54c8456f --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IBannerService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Bbs.Dtos.Banner; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Banner抽象 + /// + public interface IBannerService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ICommentService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ICommentService.cs new file mode 100644 index 00000000..ef33c414 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ICommentService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Bbs.Dtos.Comment; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Comment服务抽象 + /// + public interface ICommentService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IDiscussService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IDiscussService.cs new file mode 100644 index 00000000..1098a035 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IDiscussService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Bbs.Dtos.Discuss; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Discuss服务抽象 + /// + public interface IDiscussService : ICrudAppService + { + Task VerifyDiscussPermissionAsync(long discussId); + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ILabelService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ILabelService.cs new file mode 100644 index 00000000..4fd5b249 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ILabelService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Bbs.Dtos.MyType; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Label服务抽象 + /// + public interface ILabelService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IPlateService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IPlateService.cs new file mode 100644 index 00000000..b245da01 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/IPlateService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Bbs.Dtos.Plate; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Plate服务抽象 + /// + public interface IPlateService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ISettingService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ISettingService.cs new file mode 100644 index 00000000..84fc5299 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/ISettingService.cs @@ -0,0 +1,16 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; + +namespace Yi.Furion.Application.Bbs.Services +{ + /// + /// Setting应用抽象 + /// + public interface ISettingService : IApplicationService + { + /// + /// 获取配置标题 + /// + /// + Task GetTitleAsync(); + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/AgreeService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/AgreeService.cs new file mode 100644 index 00000000..7591c779 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/AgreeService.cs @@ -0,0 +1,71 @@ +using Yi.Framework.Infrastructure.CurrentUsers; +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Framework.Infrastructure.Exceptions; +using Yi.Furion.Core.Bbs.Dtos.Argee; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// 点赞功能 + /// + public class AgreeService : ApplicationService, IApplicationService, IDynamicApiController, ITransient + { + public AgreeService(IRepository repository, IRepository discssRepository, ICurrentUser currentUser) + { + _repository = repository; + _currentUser = currentUser; + _discssRepository = discssRepository; + } + + private IRepository _repository { get; set; } + + private IRepository _discssRepository { get; set; } + private ICurrentUser _currentUser { get; set; } + + + /// + /// 点赞,返回true为点赞+1,返回false为点赞-1 + /// + /// + [UnitOfWork] + public async Task PostOperateAsync(long discussId) + { + var entity = await _repository.GetFirstAsync(x => x.DiscussId == discussId && x.CreatorId == _currentUser.Id); + //判断是否已经点赞过 + if (entity is null) + { + + //没点赞过,添加记录即可,,修改总点赞数量 + await _repository.InsertAsync(new AgreeEntity(discussId)); + var discussEntity = await _discssRepository.GetByIdAsync(discussId); + if (discussEntity is null) + { + throw new UserFriendlyException("主题为空"); + } + discussEntity.AgreeNum += 1; + await _discssRepository.UpdateAsync(discussEntity); + + return new AgreeDto(true); + + } + else + { + + //点赞过,删除即可,修改总点赞数量 + await _repository.DeleteByIdAsync(entity.Id); + var discussEntity = await _discssRepository.GetByIdAsync(discussId); + if (discussEntity is null) + { + throw new UserFriendlyException("主题为空"); + } + discussEntity.AgreeNum -= 1; + await _discssRepository.UpdateAsync(discussEntity); + + return new AgreeDto(false); + } + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/ArticleService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/ArticleService.cs new file mode 100644 index 00000000..392c833a --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/ArticleService.cs @@ -0,0 +1,113 @@ +using Yi.Framework.Infrastructure.CurrentUsers; +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Framework.Infrastructure.Exceptions; +using Yi.Furion.Core.Bbs.Consts; +using Yi.Furion.Core.Bbs.Dtos.Article; +using Yi.Furion.Core.Bbs.Entities; +using Yi.Furion.Core.Rbac.Consts; +using Yi.Furion.Sqlsugar.Core.Repositories; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// Article服务实现 + /// + + public class ArticleService : CrudAppService, + IArticleService, IDynamicApiController, ITransient + { + public ArticleService(IArticleRepository articleRepository, + IRepository discussRepository, + ICurrentUser currentUser, + IDiscussService discussService) + { + + _articleRepository = articleRepository; + _currentUser = currentUser; + _discussRepository = discussRepository; + _discussService = discussService; + + + } + private IArticleRepository _articleRepository { get; set; } + private IRepository _discussRepository { get; set; } + private ICurrentUser _currentUser { get; set; } + private IDiscussService _discussService { get; set; } + /// + /// 获取文章全部平铺信息 + /// + /// + /// + /// + [Route("/api/article/all/discuss-id/{discussId}")] + public async Task> GetAllAsync([FromRoute] long discussId) + { + await _discussService.VerifyDiscussPermissionAsync(discussId); + + + var entities = await _articleRepository.GetTreeAsync(x => x.DiscussId == discussId); + //var result = entities.Tile(); + var items = _mapper.Map>(entities); + return items; + } + + /// + /// 查询文章 + /// + /// + /// + /// + public async Task> GetDiscussIdAsync([FromRoute] long discussId) + { + if (!await _discussRepository.IsAnyAsync(x => x.Id == discussId)) + { + throw new UserFriendlyException(DiscussConst.主题不存在); + } + + var entities = await _articleRepository.GetTreeAsync(x => x.DiscussId == discussId); + var items = await MapToGetListOutputDtosAsync(entities); + return items; + } + + /// + /// 发表文章 + /// + /// + /// + /// + public async override Task CreateAsync(ArticleCreateInputVo input) + { + var discuss = await _discussRepository.GetFirstAsync(x => x.Id == input.DiscussId); + if (discuss is null) + { + throw new UserFriendlyException(DiscussConst.主题不存在); + } + if (input.ParentId != 0 && !await _repository.IsAnyAsync(x => x.Id == input.ParentId)) + { + throw new UserFriendlyException(ArticleConst.文章不存在); + } + await VerifyDiscussCreateIdAsync(discuss.CreatorId); + return await base.CreateAsync(input); + } + + + /// + /// 效验创建权限 + /// + /// + /// + public async Task VerifyDiscussCreateIdAsync(long? userId) + { + //只有文章是特殊的,不能在其他主题下创建 + //主题的创建者不是当前用户,同时,没有权限或者超级管理 + + //false & true & false ,三个条件任意满意一个,即可成功使用||,最后取反,一个都不满足 + // + if (userId != _currentUser.Id && !UserConst.Admin.Equals(_currentUser.UserName) && !_currentUser.Permission.Contains("bbs:discuss:add")) + { + throw new UserFriendlyException("无权限在其他用户主题中创建子文章"); + } + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/BannerService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/BannerService.cs new file mode 100644 index 00000000..d6ed6bb4 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/BannerService.cs @@ -0,0 +1,14 @@ +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Furion.Core.Bbs.Dtos.Banner; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// Banner服务实现 + /// + public class BannerService : CrudAppService, + IBannerService,IDynamicApiController,ITransient + { + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/CommentService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/CommentService.cs new file mode 100644 index 00000000..542ddf2c --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/CommentService.cs @@ -0,0 +1,107 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.CurrentUsers; +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Framework.Infrastructure.Exceptions; +using Yi.Furion.Application.Bbs.Domain; +using Yi.Furion.Core.Bbs.Consts; +using Yi.Furion.Core.Bbs.Dtos.Comment; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// 评论 + /// + public class CommentService : CrudAppService, + ICommentService, IDynamicApiController, ITransient + { + + public CommentService(ForumManager forumManager, ICurrentUser currentUser, IRepository discussRepository, IDiscussService discussService) + { + _forumManager = forumManager; + _currentUser = currentUser; + _discussRepository = discussRepository; + _discussService=discussService; + } + + private ForumManager _forumManager { get; set; } + + + private ICurrentUser _currentUser { get; set; } + + private IRepository _discussRepository { get; set; } + + private IDiscussService _discussService { get; set; } + /// + /// 获取改主题下的评论,结构为二维列表,该查询无分页 + /// + /// + /// + /// + public async Task> GetDiscussIdAsync([FromRoute] long discussId, [FromQuery] CommentGetListInputVo input) + { + await _discussService.VerifyDiscussPermissionAsync(discussId); + + var entities = await _DbQueryable.WhereIF(!string.IsNullOrEmpty(input.Content), x => x.Content.Contains(input.Content)) + .Where(x => x.DiscussId == discussId) + .Includes(x => x.CreateUser) + .ToListAsync(); + + //结果初始值,第一层等于全部根节点 + var outPut = entities.Where(x => x.ParentId == 0).OrderByDescending(x => x.CreationTime).ToList(); + + //将全部数据进行hash + var dic = entities.ToDictionary(x => x.Id); + + + foreach (var comment in entities) + { + //不是根节点,需要赋值 被评论者用户信息等 + if (comment.ParentId != 0) + { + var parentComment = dic[comment.ParentId]; + comment.CommentedUser = parentComment.CreateUser; + } + + //root或者parent id,根节点都是等于0的 + var id = comment.RootId; + if (id is not 0) + { + dic[id].Children.Add(comment); + } + + } + + //子类需要排序 + outPut.ForEach(x => + { + x.Children = x.Children.OrderByDescending(x => x.CreationTime).ToList(); + + }); + + //获取全量主题评论, 先获取顶级的,将其他子组合到顶级下,形成一个二维,先转成dto + List items = await MapToGetListOutputDtosAsync(outPut); + return new PagedResultDto(entities.Count(), items); + } + + + /// + /// 发表评论 + /// + /// + /// + /// + public override async Task CreateAsync(CommentCreateInputVo input) + { + if (!await _discussRepository.IsAnyAsync(x => x.Id == input.DiscussId)) + { + throw new UserFriendlyException(DiscussConst.主题不存在); + } + var entity = await _forumManager.CreateCommentAsync(input.DiscussId, input.ParentId, input.RootId, input.Content); + return await MapToGetOutputDtoAsync(entity); + } + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/DiscussService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/DiscussService.cs new file mode 100644 index 00000000..dffb98c2 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/DiscussService.cs @@ -0,0 +1,150 @@ +using Furion.EventBus; +using SqlSugar; +using Yi.Framework.Infrastructure.CurrentUsers; +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Framework.Infrastructure.Exceptions; +using Yi.Furion.Application.Bbs.Domain; +using Yi.Furion.Core.Bbs.Consts; +using Yi.Furion.Core.Bbs.Dtos.Discuss; +using Yi.Furion.Core.Bbs.Entities; +using Yi.Furion.Core.Bbs.Enums; +using Yi.Furion.Core.Bbs.Etos; +using Yi.Furion.Core.Rbac.Dtos.User; +using Yi.Furion.Core.Rbac.Entities; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// Discuss应用服务实现,用于参数效验、领域服务业务组合、日志记录、事务处理、账户信息 + /// + public class DiscussService : CrudAppService, + IDiscussService,IDynamicApiController,ITransient + { + public DiscussService(ICurrentUser currentUser, ForumManager forumManager, IRepository plateEntityRepository, IEventPublisher eventPublisher) + { + _currentUser = currentUser; + _forumManager = forumManager; + _plateEntityRepository= plateEntityRepository; + _eventPublisher= eventPublisher; + } + + private ForumManager _forumManager { get; set; } + + + private IRepository _plateEntityRepository { get; set; } + + private IEventPublisher _eventPublisher { get; set; } + + + //[Autowired] + private ICurrentUser _currentUser { get; set; } + /// + /// 单查 + /// + /// + /// + public async override Task GetAsync(long id) + { + + //查询主题发布 浏览主题 事件,浏览数+1 + var item = await _DbQueryable.LeftJoin((discuss, user) => discuss.CreatorId == user.Id) + .Select((discuss, user) => new DiscussGetOutputDto + { + User = new UserGetListOutputDto() { UserName = user.UserName, Nick = user.Nick, Icon = user.Icon } + }, true).SingleAsync(discuss => discuss.Id == id); + + await VerifyDiscussPermissionAsync(item.Id); + + if (item is not null) + { + _eventPublisher.PublishAsync(new SeeDiscussEventSource(new SeeDiscussEventArgs { DiscussId = item.Id, OldSeeNum = item.SeeNum })); + } + + return item; + } + + + /// + /// 查询 + /// + /// + /// + + public override async Task> GetListAsync([FromQuery] DiscussGetListInputVo input) + { + //需要关联创建者用户 + RefAsync total = 0; + var items = await _DbQueryable + .WhereIF(!string.IsNullOrEmpty(input.Title), x => x.Title.Contains(input.Title)) + .WhereIF(input.PlateId is not null, x => x.PlateId == input.PlateId) + .Where(x => x.IsTop == input.IsTop) + + .LeftJoin((discuss, user) => discuss.CreatorId == user.Id) + .OrderByIF(input.Type == QueryDiscussTypeEnum.New, discuss => discuss.CreationTime, OrderByType.Desc) + .OrderByIF(input.Type == QueryDiscussTypeEnum.Host, discuss => discuss.SeeNum, OrderByType.Desc) + .OrderByIF(input.Type == QueryDiscussTypeEnum.Suggest, discuss => discuss.AgreeNum, OrderByType.Desc) + .Select((discuss, user) => new DiscussGetListOutputDto + { + Id = discuss.Id, + IsAgree = SqlFunc.Subqueryable().Where(x => x.CreatorId == _currentUser.Id && x.DiscussId == discuss.Id).Any(), + + User = new UserGetListOutputDto() { Id = user.Id, UserName = user.UserName, Nick = user.Nick, Icon = user.Icon } + + }, true) + .ToPageListAsync(input.PageNum, input.PageSize, total); + + //查询完主题之后,要过滤一下私有的主题信息 + items.ApplyPermissionTypeFilter(_currentUser.Id); + return new PagedResultDto(total, items); + } + + /// + /// 创建主题 + /// + /// + /// + public override async Task CreateAsync(DiscussCreateInputVo input) + { + if (!await _plateEntityRepository.IsAnyAsync(x => x.Id == input.PlateId)) + { + throw new UserFriendlyException(PlateConst.板块不存在); + } + var entity = await _forumManager.CreateDiscussAsync(await MapToEntityAsync(input)); + return await MapToGetOutputDtoAsync(entity); + } + + + + + /// + /// 效验主题查询权限 + /// + /// + /// + /// + public async Task VerifyDiscussPermissionAsync(long discussId) + { + var discuss = await _repository.GetFirstAsync(x => x.Id == discussId); + if (discuss is null) + { + throw new UserFriendlyException(DiscussConst.主题不存在); + } + if (discuss.PermissionType == DiscussPermissionTypeEnum.Oneself) + { + if (discuss.CreatorId != _currentUser.Id) + { + throw new UserFriendlyException(DiscussConst.私密); + } + } + if (discuss.PermissionType == DiscussPermissionTypeEnum.User) + { + if (discuss.CreatorId != _currentUser.Id && !discuss.PermissionUserIds.Contains(_currentUser.Id)) + { + throw new UserFriendlyException(DiscussConst.私密); + } + } + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/MyTypeService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/MyTypeService.cs new file mode 100644 index 00000000..06654991 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/MyTypeService.cs @@ -0,0 +1,54 @@ +using Yi.Framework.Infrastructure.CurrentUsers; +using Yi.Framework.Infrastructure.Data.Filters; +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Framework.Infrastructure.Helper; +using Yi.Furion.Core.Bbs.Dtos.MyType; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// Label服务实现 + /// + public class MyTypeService : CrudAppService, + ILabelService, IDynamicApiController, ITransient + { + public MyTypeService(ICurrentUser currentUser, IDataFilter dataFilter) + { + _currentUser = currentUser; + _dataFilter = dataFilter; + } + + private ICurrentUser _currentUser { get; set; } + + private IDataFilter _dataFilter { get; set; } + + /// + /// 获取当前用户的主题类型 + /// + /// + /// + public Task> GetListCurrentAsync(MyTypeGetListInputVo input) + { + + _dataFilter.AddFilter(x => x.UserId == _currentUser.Id); + return base.GetListAsync(input); + } + + /// + /// 创建 + /// + /// + /// + public override async Task CreateAsync(MyTypeCreateInputVo input) + { + var entity = await MapToEntityAsync(input); + entity.Id = SnowflakeHelper.NextId; + entity.UserId = _currentUser.Id; + entity.IsDeleted = false; + var outputEntity = await _repository.InsertReturnEntityAsync(entity); + return await MapToGetOutputDtoAsync(outputEntity); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/PlateService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/PlateService.cs new file mode 100644 index 00000000..ab7800dd --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/PlateService.cs @@ -0,0 +1,14 @@ +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Furion.Core.Bbs.Dtos.Plate; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// Plate服务实现 + /// + public class PlateService : CrudAppService, + IPlateService,IDynamicApiController,ITransient + { + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/SettingService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/SettingService.cs new file mode 100644 index 00000000..9e9945ac --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Bbs/Services/Impl/SettingService.cs @@ -0,0 +1,21 @@ +using Yi.Framework.Infrastructure.Ddd.Services; + +namespace Yi.Furion.Application.Bbs.Services.Impl +{ + /// + /// Setting服务实现 + /// + public class SettingService : ApplicationService, + ISettingService,IDynamicApiController,ITransient + { + /// + /// 获取配置标题 + /// + /// + /// + public Task GetTitleAsync() + { + return Task.FromResult("你好世界"); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Domain/AccountManager.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Domain/AccountManager.cs index cf2a73dd..7e184f36 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Domain/AccountManager.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Domain/AccountManager.cs @@ -2,7 +2,7 @@ using Yi.Framework.Infrastructure.Ddd.Repositories; using Yi.Framework.Infrastructure.Exceptions; using Yi.Framework.Infrastructure.Helper; -using Yi.Furion.Core.Rbac.ConstClasses; +using Yi.Furion.Core.Rbac.Consts; using Yi.Furion.Core.Rbac.Dtos; using Yi.Furion.Core.Rbac.Entities; diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Event/LoginEventHandler.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Event/LoginEventHandler.cs index 7fc20512..4eba4810 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Event/LoginEventHandler.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Event/LoginEventHandler.cs @@ -9,25 +9,22 @@ using Yi.Furion.Core.Rbac.Etos; namespace Yi.Furion.Application.Rbac.Event { - public class LoginEventHandler : IEventSubscriber, ISingleton + public class LoginEventHandler : IEventSubscriber,ISingleton { private readonly IRepository _loginLogRepository; - private readonly IHttpContextAccessor _httpContextAccessor; - private HttpContext _httpContext => _httpContextAccessor.HttpContext; - public LoginEventHandler(IRepository loginLogRepository, IHttpContextAccessor httpContextAccessor) + public LoginEventHandler(IRepository loginLogRepository) { _loginLogRepository = loginLogRepository; - _httpContextAccessor = httpContextAccessor; } //[EventSubscribe(nameof(LoginEventSource))] public Task HandlerAsync(EventHandlerExecutingContext context) { var eventData = (LoginEventArgs)context.Source.Payload; - var loginLogEntity = GetLoginLogInfo(_httpContext); + var loginLogEntity = GetLoginLogInfo(eventData.httpContext); loginLogEntity.Id = SnowflakeHelper.NextId; loginLogEntity.LogMsg = eventData.UserName + "登录系统"; loginLogEntity.LoginUser = eventData.UserName; - loginLogEntity.LoginIp = _httpContext.GetClientIp(); + loginLogEntity.LoginIp = eventData.httpContext.GetClientIp(); _loginLogRepository.InsertAsync(loginLogEntity); return Task.CompletedTask; diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IConfigService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IConfigService.cs new file mode 100644 index 00000000..e8d5f72b --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IConfigService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.Rbac.Dtos.Config; + +namespace Yi.Furion.Application.Rbac.Services +{ + /// + /// Config服务抽象 + /// + public interface IConfigService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs index 150a1102..c183a53f 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IDeptService.cs @@ -1,5 +1,5 @@ using Yi.Framework.Infrastructure.Ddd.Services.Abstract; -using Yi.Furion.Application.Rbac.Dtos.Dept; +using Yi.Furion.Core.Rbac.Dtos.Dept; namespace Yi.Furion.Application.Rbac.Services { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IMenuService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IMenuService.cs index 77f4c1b4..2ae55768 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IMenuService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IMenuService.cs @@ -1,5 +1,5 @@ using Yi.Framework.Infrastructure.Ddd.Services.Abstract; -using Yi.Furion.Application.Rbac.Dtos.Menu; +using Yi.Furion.Core.Rbac.Dtos.Menu; namespace Yi.Furion.Application.Rbac.Services { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IPostService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IPostService.cs index e28dfb17..859b0116 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IPostService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IPostService.cs @@ -1,5 +1,5 @@ using Yi.Framework.Infrastructure.Ddd.Services.Abstract; -using Yi.Furion.Application.Rbac.Dtos.Post; +using Yi.Furion.Core.Rbac.Dtos.Post; namespace Yi.Furion.Application.Rbac.Services { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IRoleService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IRoleService.cs index 2bae6837..033dfb4b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IRoleService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IRoleService.cs @@ -1,5 +1,5 @@ using Yi.Framework.Infrastructure.Ddd.Services.Abstract; -using Yi.Furion.Application.Rbac.Dtos.Role; +using Yi.Furion.Core.Rbac.Dtos.Role; namespace Yi.Furion.Application.Rbac.Services { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IUserService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IUserService.cs index 90577e5a..fe91473d 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IUserService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/IUserService.cs @@ -1,5 +1,5 @@ using Yi.Framework.Infrastructure.Ddd.Services.Abstract; -using Yi.Furion.Application.Rbac.Dtos.User; +using Yi.Furion.Core.Rbac.Dtos.User; namespace Yi.Furion.Application.Rbac.Services { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/AccountService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/AccountService.cs index d3666190..689f6cb0 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/AccountService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/AccountService.cs @@ -10,9 +10,9 @@ using Yi.Framework.Infrastructure.Exceptions; using Yi.Framework.Module.ImageSharp.HeiCaptcha; using Yi.Framework.Module.Sms.Aliyun; using Yi.Furion.Application.Rbac.Domain; -using Yi.Furion.Application.Rbac.Dtos.Account; -using Yi.Furion.Core.Rbac.ConstClasses; +using Yi.Furion.Core.Rbac.Consts; using Yi.Furion.Core.Rbac.Dtos; +using Yi.Furion.Core.Rbac.Dtos.Account; using Yi.Furion.Core.Rbac.Entities; using Yi.Furion.Core.Rbac.Etos; using Yi.Furion.Sqlsugar.Core.Repositories; @@ -22,9 +22,9 @@ namespace Yi.Furion.Application.Rbac.Services.Impl public class AccountService : ApplicationService, ITransient, IDynamicApiController { - public AccountService(IUserRepository userRepository, ICurrentUser currentUser, AccountManager accountManager, IRepository menuRepository, SmsAliyunManager smsAliyunManager, IOptions smsAliyunManagerOptions, SecurityCodeHelper securityCode, IMemoryCache memoryCache, IEventPublisher eventPublisher) => - (_userRepository, _currentUser, _accountManager, _menuRepository, _smsAliyunManager, _smsAliyunManagerOptions, _securityCode, _memoryCache, _eventPublisher) = - (userRepository, currentUser, accountManager, menuRepository, smsAliyunManager, smsAliyunManagerOptions, securityCode, memoryCache, eventPublisher); + public AccountService(IUserRepository userRepository, ICurrentUser currentUser, AccountManager accountManager, IRepository menuRepository, SmsAliyunManager smsAliyunManager, IOptions smsAliyunManagerOptions, SecurityCodeHelper securityCode, IMemoryCache memoryCache, IEventPublisher eventPublisher,IHttpContextAccessor httpContextAccessor) => + (_userRepository, _currentUser, _accountManager, _menuRepository, _smsAliyunManager, _smsAliyunManagerOptions, _securityCode, _memoryCache, _eventPublisher, _httpContextAccessor) = + (userRepository, currentUser, accountManager, menuRepository, smsAliyunManager, smsAliyunManagerOptions, securityCode, memoryCache, eventPublisher, httpContextAccessor); private IUserRepository _userRepository { get; set; } @@ -62,6 +62,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl private SmsAliyunManager _smsAliyunManager { get; set; } + private IHttpContextAccessor _httpContextAccessor { get; set; } private IOptions _smsAliyunManagerOptions { get; set; } @@ -124,17 +125,18 @@ namespace Yi.Furion.Application.Rbac.Services.Impl //这里抛出一个登录的事件 //不阻碍执行,无需等待 -#pragma warning disable CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法 - _eventPublisher.PublishAsync(new LoginEventSource(new LoginEventArgs + + await _eventPublisher.PublishAsync(new LoginEventSource(new LoginEventArgs { UserId = userInfo.User.Id, - UserName = user.UserName + UserName = user.UserName, + httpContext= _httpContextAccessor.HttpContext + + }) + );; - }) - ); -#pragma warning restore CS4014 // 由于此调用不会等待,因此在调用完成前将继续执行当前方法 //创建token var accessToken = JWTEncryption.Encrypt(_accountManager.UserInfoToClaim(userInfo)); @@ -295,6 +297,7 @@ namespace Yi.Furion.Application.Rbac.Services.Impl /// /// [Authorize] + [Route("Vue3Router")] public async Task> GetVue3Router() { var userId = _currentUser.Id; diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/ConfigService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/ConfigService.cs new file mode 100644 index 00000000..07b91575 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/ConfigService.cs @@ -0,0 +1,34 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Furion.Core.Rbac.Dtos.Config; +using Yi.Furion.Core.Rbac.Entities; + +namespace Yi.Furion.Application.Rbac.Services.Impl +{ + /// + /// Config服务实现 + /// + + public class ConfigService : CrudAppService, + IConfigService,IDynamicApiController,ITransient + { + /// + /// 多查 + /// + /// + /// + public override async Task> GetListAsync(ConfigGetListInputVo input) + { + var entity = await MapToEntityAsync(input); + + RefAsync total = 0; + + var entities = await _DbQueryable.WhereIF(!string.IsNullOrEmpty(input.ConfigKey), x => x.ConfigKey.Contains(input.ConfigKey!)) + .WhereIF(!string.IsNullOrEmpty(input.ConfigName), x => x.ConfigName!.Contains(input.ConfigName!)) + .WhereIF(input.StartTime is not null && input.EndTime is not null, x => x.CreationTime >= input.StartTime && x.CreationTime <= input.EndTime) + .ToPageListAsync(input.PageNum, input.PageSize, total); + return new PagedResultDto(total, await MapToGetListOutputDtosAsync(entities)); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs index 79149062..e772218c 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/DeptService.cs @@ -1,7 +1,7 @@ using SqlSugar; using Yi.Framework.Infrastructure.Ddd.Dtos; using Yi.Framework.Infrastructure.Ddd.Services; -using Yi.Furion.Application.Rbac.Dtos.Dept; +using Yi.Furion.Core.Rbac.Dtos.Dept; using Yi.Furion.Core.Rbac.Entities; namespace Yi.Furion.Application.Rbac.Services.Impl diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/LoginLogService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/LoginLogService.cs new file mode 100644 index 00000000..451dfddb --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/LoginLogService.cs @@ -0,0 +1,30 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Furion.Core.Rbac.Dtos.LoginLog; +using Yi.Furion.Core.Rbac.Entities; + +namespace Yi.Furion.Application.Rbac.Services.Impl +{ + public class LoginLogService : CrudAppService,IDynamicApiController,ITransient + { + public override async Task> GetListAsync(LoginLogGetListInputVo input) + { + var entity = await MapToEntityAsync(input); + + RefAsync total = 0; + + var entities = await _DbQueryable.WhereIF(!string.IsNullOrEmpty(input.LoginIp), x => x.LoginIp.Contains(input.LoginIp!)) + .WhereIF(!string.IsNullOrEmpty(input.LoginUser), x => x.LoginUser!.Contains(input.LoginUser!)) + .WhereIF(input.StartTime is not null && input.EndTime is not null, x => x.CreationTime >= input.StartTime && x.CreationTime <= input.EndTime) + .ToPageListAsync(input.PageNum, input.PageSize, total); + return new PagedResultDto(total, await MapToGetListOutputDtosAsync(entities)); + } + + [NonAction] + public override Task UpdateAsync(long id, LoginLogGetListOutputDto input) + { + return base.UpdateAsync(id, input); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MenuService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MenuService.cs index f7fda4f1..a406c617 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MenuService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MenuService.cs @@ -1,8 +1,8 @@ using SqlSugar; using Yi.Framework.Infrastructure.Ddd.Dtos; using Yi.Framework.Infrastructure.Ddd.Services; -using Yi.Furion.Application.Rbac.Dtos.Menu; using Yi.Furion.Application.Rbac.Services; +using Yi.Furion.Core.Rbac.Dtos.Menu; using Yi.Furion.Core.Rbac.Entities; namespace Yi.Furion.Application.Rbac.Services.Impl diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/PostService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/PostService.cs index d1e164f3..86a068aa 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/PostService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/PostService.cs @@ -1,7 +1,7 @@ using SqlSugar; using Yi.Framework.Infrastructure.Ddd.Dtos; using Yi.Framework.Infrastructure.Ddd.Services; -using Yi.Furion.Application.Rbac.Dtos.Post; +using Yi.Furion.Core.Rbac.Dtos.Post; using Yi.Furion.Core.Rbac.Entities; namespace Yi.Furion.Application.Rbac.Services.Impl diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/RoleService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/RoleService.cs index 93e2800d..0b6353ba 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/RoleService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/RoleService.cs @@ -2,7 +2,7 @@ using SqlSugar; using Yi.Framework.Infrastructure.Ddd.Dtos; using Yi.Framework.Infrastructure.Ddd.Services; using Yi.Furion.Application.Rbac.Domain; -using Yi.Furion.Application.Rbac.Dtos.Role; +using Yi.Furion.Core.Rbac.Dtos.Role; using Yi.Furion.Core.Rbac.Entities; namespace Yi.Furion.Application.Rbac.Services.Impl diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs index 5c08f00e..58dfde6c 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/UserService.cs @@ -5,8 +5,8 @@ using Yi.Framework.Infrastructure.Ddd.Services; using Yi.Framework.Infrastructure.Exceptions; using Yi.Framework.Module.OperLogManager; using Yi.Furion.Application.Rbac.Domain; -using Yi.Furion.Application.Rbac.Dtos.User; -using Yi.Furion.Core.Rbac.ConstClasses; +using Yi.Furion.Core.Rbac.Consts; +using Yi.Furion.Core.Rbac.Dtos.User; using Yi.Furion.Core.Rbac.Entities; using Yi.Furion.Sqlsugar.Core.Repositories; diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.csproj b/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.csproj index 1c25e675..b1645551 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.csproj +++ b/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.csproj @@ -27,8 +27,4 @@ - - - - diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.xml b/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.xml index 6dea7636..8257201d 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.xml +++ b/Yi.Furion.Net6/Yi.Furion.Application/Yi.Furion.Application.xml @@ -4,6 +4,195 @@ Yi.Furion.Application + + + 论坛模块的领域服务 + + + + + Article服务抽象 + + + + + Banner抽象 + + + + + Comment服务抽象 + + + + + Discuss服务抽象 + + + + + Label服务抽象 + + + + + 点赞功能 + + + + + 点赞,返回true为点赞+1,返回false为点赞-1 + + + + + + Article服务实现 + + + + + 获取文章全部平铺信息 + + + + + + + + 查询文章 + + + + + + + + 发表文章 + + + + + + + + 效验创建权限 + + + + + + + Banner服务实现 + + + + + 评论 + + + + + 获取改主题下的评论,结构为二维列表,该查询无分页 + + + + + + + + 发表评论 + + + + + + + + Discuss应用服务实现,用于参数效验、领域服务业务组合、日志记录、事务处理、账户信息 + + + + + 单查 + + + + + + + 查询 + + + + + + + 创建主题 + + + + + + + 效验主题查询权限 + + + + + + + + Label服务实现 + + + + + 获取当前用户的主题类型 + + + + + + + 创建 + + + + + + + Plate服务实现 + + + + + Setting服务实现 + + + + + 获取配置标题 + + + + + + + Plate服务抽象 + + + + + Setting应用抽象 + + + + + 获取配置标题 + + + 用户领域服务 @@ -75,56 +264,6 @@ - - - 账号 - - - - - 密码 - - - - - 唯一标识码 - - - - - 电话 - - - - - 验证码 - - - - - Dept输入创建对象 - - - - - Menu输入创建对象 - - - - - Post输入创建对象 - - - - - Role输入创建对象 - - - - - User输入创建对象 - - 获取客户端信息 @@ -139,6 +278,11 @@ + + + Config服务抽象 + + Dept服务抽象 @@ -149,17 +293,17 @@ Menu服务抽象 - + 效验图片登录验证码,无需和账号绑定 - + 效验电话验证码,需要与电话号码绑定 - + 登录 @@ -178,13 +322,13 @@ - + 注册 手机验证码 - + 注册,需要验证码通过 @@ -210,14 +354,14 @@ - + 更新密码 - + 重置密码 @@ -225,13 +369,25 @@ - + 更新头像 + + + Config服务实现 + + + + + 多查 + + + + Dept服务实现 @@ -243,7 +399,7 @@ - + 多查 @@ -272,14 +428,14 @@ Role服务实现 - + 添加角色 - + 修改角色 @@ -300,14 +456,14 @@ User服务实现 - + 查询用户 - + 添加用户 @@ -322,7 +478,7 @@ - + 更新用户 @@ -330,7 +486,7 @@ - + 更新个人中心 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/ArticleConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/ArticleConst.cs new file mode 100644 index 00000000..f1136cde --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/ArticleConst.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Consts +{ + /// + /// 常量定义 + /// + + public class ArticleConst + { + public const string 文章不存在 = "传入的文章id不存在"; + + public const string 文章无权限 = "该文章无权限"; + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/CommentConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/CommentConst.cs new file mode 100644 index 00000000..392b6d25 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/CommentConst.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Consts +{ + /// + /// 常量定义 + /// + + public class CommentConst + { + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/DiscussConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/DiscussConst.cs new file mode 100644 index 00000000..c878daa7 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/DiscussConst.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Consts +{ + /// + /// 常量定义 + /// + + public class DiscussConst + { + public const string 主题不存在 = "传入的主题id不存在"; + + public const string 私密 = "【私密】您无该主题权限,可联系作者申请开放"; + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/LabelConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/LabelConst.cs new file mode 100644 index 00000000..e69dee95 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/LabelConst.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Consts +{ + /// + /// 常量定义 + /// + + public class LabelConst + { + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/PlateConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/PlateConst.cs new file mode 100644 index 00000000..de710c03 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Consts/PlateConst.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Consts +{ + /// + /// 常量定义 + /// + + public class PlateConst + { + public const string 板块不存在 = "传入的板块id不存在"; + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Argee/AgreeDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Argee/AgreeDto.cs new file mode 100644 index 00000000..d3d85119 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Argee/AgreeDto.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.Argee +{ + public class AgreeDto + { + public AgreeDto(bool isAgree) + { + IsAgree = isAgree; + if (isAgree) + { + + Message = "点赞成功,点赞+1"; + } + else + { + + Message = "取消点赞,点赞-1"; + } + + } + + public bool IsAgree { get; set; } + public string Message { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleAllOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleAllOutputDto.cs new file mode 100644 index 00000000..748bd7c3 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleAllOutputDto.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Article +{ + public class ArticleAllOutputDto : IEntityDto + { + public long Id { get; set; } + + //批量查询,不给内容,性能考虑 + //public string Content { get; set; } + public string Name { get; set; } + public long DiscussId { get; set; } + public long ParentId { get; set; } + + public List Children { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleCreateInputVo.cs new file mode 100644 index 00000000..3307aa7b --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleCreateInputVo.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.Article +{ + /// + /// Article输入创建对象 + /// + public class ArticleCreateInputVo + { + public string Content { get; set; } + public string Name { get; set; } + public long DiscussId { get; set; } + public long ParentId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListInputVo.cs new file mode 100644 index 00000000..09b10309 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListInputVo.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Bbs.Dtos.Article +{ + public class ArticleGetListInputVo : PagedAndSortedResultRequestDto + { + public long Id { get; set; } + public string Content { get; set; } + public string Name { get; set; } + public long DiscussId { get; set; } + public long ParentId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListOutputDto.cs new file mode 100644 index 00000000..b20a4a29 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetListOutputDto.cs @@ -0,0 +1,16 @@ +using System.Collections.Generic; +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Article +{ + public class ArticleGetListOutputDto : IEntityDto + { + public long Id { get; set; } + //ѯݣܿ + //public string Content { get; set; } + public string Name { get; set; } + public long DiscussId { get; set; } + + public List Children { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetOutputDto.cs new file mode 100644 index 00000000..e5126ece --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleGetOutputDto.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Article +{ + public class ArticleGetOutputDto : IEntityDto + { + public long Id { get; set; } + public string Content { get; set; } + public string Name { get; set; } + public long DiscussId { get; set; } + public long ParentId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleUpdateInputVo.cs new file mode 100644 index 00000000..61cea53d --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Article/ArticleUpdateInputVo.cs @@ -0,0 +1,10 @@ +namespace Yi.Furion.Core.Bbs.Dtos.Article +{ + public class ArticleUpdateInputVo + { + public string Content { get; set; } + public string Name { get; set; } + public long DiscussId { get; set; } + public long ParentId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerCreateInputVo.cs new file mode 100644 index 00000000..2852f68d --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerCreateInputVo.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.Banner +{ + /// + /// Banner输入创建对象 + /// + public class BannerCreateInputVo + { + public string Name { get; set; } + public string Logo { get; set; } + public string Color { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListInputVo.cs new file mode 100644 index 00000000..a36ac8e4 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListInputVo.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Bbs.Dtos.Banner +{ + public class BannerGetListInputVo : PagedAndSortedResultRequestDto + { + public string Name { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListOutputDto.cs new file mode 100644 index 00000000..bdbb2354 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetListOutputDto.cs @@ -0,0 +1,15 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Banner +{ + public class BannerGetListOutputDto : IEntityDto + { + + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Color { get; set; } + + public DateTime CreationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetOutputDto.cs new file mode 100644 index 00000000..3a42b7b9 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerGetOutputDto.cs @@ -0,0 +1,15 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Banner +{ + public class BannerGetOutputDto : IEntityDto + { + + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Color { get; set; } + + public DateTime CreationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerUpdateInputVo.cs new file mode 100644 index 00000000..8a4c7123 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Banner/BannerUpdateInputVo.cs @@ -0,0 +1,9 @@ +namespace Yi.Furion.Core.Bbs.Dtos.Banner +{ + public class BannerUpdateInputVo + { + public string Name { get; set; } + public string Logo { get; set; } + public string Color { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentCreateInputVo.cs new file mode 100644 index 00000000..0e6f81c4 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentCreateInputVo.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; + +namespace Yi.Furion.Core.Bbs.Dtos.Comment +{ + /// + /// Comment输入创建对象 + /// + public class CommentCreateInputVo + { + + /// + /// 评论id + /// + public string Content { get; set; } + + /// + /// 主题id + /// + public long DiscussId { get; set; } + + /// + /// 第一层评论id,第一层为0 + /// + public long RootId { get; set; } + + /// + /// 被回复的CommentId,第一层为0 + /// + public long ParentId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListInputVo.cs new file mode 100644 index 00000000..1d1f01b5 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListInputVo.cs @@ -0,0 +1,13 @@ +using System; + +namespace Yi.Furion.Core.Bbs.Dtos.Comment +{ + public class CommentGetListInputVo + { + public DateTime? creationTime { get; set; } + public string Content { get; set; } + + //ӦѡĪѯ + public long? DiscussId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListOutputDto.cs new file mode 100644 index 00000000..8431aaca --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetListOutputDto.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; +using Yi.Furion.Core.Rbac.Dtos.User; + +namespace Yi.Furion.Core.Bbs.Dtos.Comment +{ + /// + /// ۶෴ + /// + public class CommentGetListOutputDto : IEntityDto + { + public long Id { get; set; } + + + public DateTime? CreationTime { get; set; } + + + + + public string Content { get; set; } + + + /// + /// id + /// + public long DiscussId { get; set; } + + public long ParentId { get; set; } + + public long RootId { get; set; } + + /// + /// û,ûϢ + /// + public UserGetOutputDto CreateUser { get; set; } + + /// + /// ۵ûϢ + /// + public UserGetOutputDto CommentedUser { get; set; } + + + /// + /// һΣǴһά飬Childrenֻڶʱֻһ + /// + public List Children { get; set; } = new List(); + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetOutputDto.cs new file mode 100644 index 00000000..aa658a05 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentGetOutputDto.cs @@ -0,0 +1,36 @@ +using System; +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; +using Yi.Furion.Core.Rbac.Dtos.User; + +namespace Yi.Furion.Core.Bbs.Dtos.Comment +{ + /// + /// أصۼ + /// + public class CommentGetOutputDto : IEntityDto + { + public long Id { get; set; } + + public DateTime? CreateTime { get; set; } + public string Content { get; set; } + + public long DiscussId { get; set; } + + + /// + /// ûidΪû + /// + + public UserGetOutputDto User { get; set; } + /// + /// ڵid + /// + public long RootId { get; set; } + + /// + /// ظCommentId + /// + public long ParentId { get; set; } + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentUpdateInputVo.cs new file mode 100644 index 00000000..b2240db5 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Comment/CommentUpdateInputVo.cs @@ -0,0 +1,10 @@ +namespace Yi.Furion.Core.Bbs.Dtos.Comment +{ + public class CommentUpdateInputVo + { + + public string Content { get; set; } + + //²ܽת + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussCreateInputVo.cs new file mode 100644 index 00000000..0c1e7ba2 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussCreateInputVo.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Furion.Core.Bbs.Enums; + +namespace Yi.Furion.Core.Bbs.Dtos.Discuss +{ + /// + /// Discuss输入创建对象 + /// + public class DiscussCreateInputVo + { + public string Title { get; set; } + public string Types { get; set; } + public string Introduction { get; set; } + public DateTime? CreateTime { get; set; } = DateTime.Now; + public string Content { get; set; } + public string Color { get; set; } + + public long PlateId { get; set; } + + /// + /// 默认公开 + /// + public DiscussPermissionTypeEnum PermissionType { get; set; } = DiscussPermissionTypeEnum.Public; + /// + /// 封面 + /// + public string Cover { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListInputVo.cs new file mode 100644 index 00000000..de6693d1 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListInputVo.cs @@ -0,0 +1,19 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Furion.Core.Bbs.Enums; + +namespace Yi.Furion.Core.Bbs.Dtos.Discuss +{ + public class DiscussGetListInputVo : PagedAndSortedResultRequestDto + { + public string Title { get; set; } + + public long? PlateId { get; set; } + + //Ĭϲѯö + public bool IsTop { get; set; } = false; + + + //ѯʽ + public QueryDiscussTypeEnum Type { get; set; } = QueryDiscussTypeEnum.New; + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListOutputDto.cs new file mode 100644 index 00000000..4c62f369 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetListOutputDto.cs @@ -0,0 +1,95 @@ +using System; +using System.Collections.Generic; +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; +using Yi.Furion.Core.Bbs.Consts; +using Yi.Furion.Core.Bbs.Enums; +using Yi.Furion.Core.Rbac.Dtos.User; + +namespace Yi.Furion.Core.Bbs.Dtos.Discuss +{ + public class DiscussGetListOutputDto : IEntityDto + { + /// + /// Ƿѵ + /// + public bool IsAgree { get; set; } + public long Id { get; set; } + public string Title { get; set; } + public string Types { get; set; } + public string Introduction { get; set; } + + public int AgreeNum { get; set; } + public int SeeNum { get; set; } + + //ѯݣܿ + //public string Content { get; set; } + public string Color { get; set; } + + public long PlateId { get; set; } + + //ǷöĬfalse + public bool IsTop { get; set; } + + public DiscussPermissionTypeEnum PermissionType { get; set; } + //ǷֹĬfalse + public bool IsBan { get; set; } + + + /// + /// + /// + public string Cover { get; set; } + + //˽ҪжcodeȨ + public string PrivateCode { get; set; } + public DateTime CreationTime { get; set; } + + public List PermissionUserIds { get; set; } + + public UserGetListOutputDto User { get; set; } + + public void SetBan() + { + Title = DiscussConst.˽; + Introduction = ""; + Cover = null; + //ֹ + IsBan = true; + } + } + + + public static class DiscussGetListOutputDtoExtension + { + + public static void ApplyPermissionTypeFilter(this List dtos, long userId) + { + dtos?.ForEach(dto => + { + switch (dto.PermissionType) + { + case DiscussPermissionTypeEnum.Public: + break; + case DiscussPermissionTypeEnum.Oneself: + //ǰǽԼɼͬʱǵǰ¼û + if (dto.User.Id != userId) + { + dto.SetBan(); + } + break; + case DiscussPermissionTypeEnum.User: + //ǰΪֿɼͬʱǵǰ¼û Ҳ ڿɼûб + if (dto.User.Id != userId && !dto.PermissionUserIds.Contains(userId)) + { + dto.SetBan(); + } + break; + default: + break; + } + }); + } + + } + +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetOutputDto.cs new file mode 100644 index 00000000..1e07da58 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussGetOutputDto.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections.Generic; +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; +using Yi.Furion.Core.Bbs.Enums; +using Yi.Furion.Core.Rbac.Dtos.User; + +namespace Yi.Furion.Core.Bbs.Dtos.Discuss +{ + public class DiscussGetOutputDto : IEntityDto + { + + public long Id { get; set; } + public string Title { get; set; } + public string Types { get; set; } + public string Introduction { get; set; } + public int AgreeNum { get; set; } + public int SeeNum { get; set; } + public string Content { get; set; } + public string Color { get; set; } + + public long PlateId { get; set; } + //ǷöĬfalse + public bool IsTop { get; set; } + + /// + /// + /// + public string Cover { get; set; } + //Ƿ˽УĬfalse + public bool IsPrivate { get; set; } + + //˽ҪжcodeȨ + public string PrivateCode { get; set; } + public DateTime CreationTime { get; set; } + public DiscussPermissionTypeEnum PermissionType { get; set; } + + public List PermissionUserIds { get; set; } + public UserGetListOutputDto User { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussUpdateInputVo.cs new file mode 100644 index 00000000..e05d69bf --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Discuss/DiscussUpdateInputVo.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using Yi.Furion.Core.Bbs.Enums; + +namespace Yi.Furion.Core.Bbs.Dtos.Discuss +{ + public class DiscussUpdateInputVo + { + public string Title { get; set; } + public string Types { get; set; } + public string Introduction { get; set; } + public int AgreeNum { get; set; } + public int SeeNum { get; set; } + public string Content { get; set; } + public string Color { get; set; } + + public List PermissionUserIds { get; set; } + + public DiscussPermissionTypeEnum PermissionType { get; set; } + + /// + /// + /// + public string Cover { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeCreateInputVo.cs new file mode 100644 index 00000000..ccb60f43 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeCreateInputVo.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.MyType +{ + /// + /// Label输入创建对象 + /// + public class MyTypeCreateInputVo + { + public string Name { get; set; } + public string Color { get; set; } + public string BackgroundColor { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListInputVo.cs new file mode 100644 index 00000000..30b1b0f7 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListInputVo.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Bbs.Dtos.MyType +{ + public class MyTypeGetListInputVo : PagedAndSortedResultRequestDto + { + public long Id { get; set; } + public string Name { get; set; } + public string Color { get; set; } + public string BackgroundColor { get; set; } + public long UserId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListOutputDto.cs new file mode 100644 index 00000000..510614ea --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeGetListOutputDto.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.MyType +{ + public class MyTypeGetListOutputDto : IEntityDto + { + public long Id { get; set; } + public string Name { get; set; } + public string Color { get; set; } + public string BackgroundColor { get; set; } + public long UserId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeOutputDto.cs new file mode 100644 index 00000000..2fb68817 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeOutputDto.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.MyType +{ + public class MyTypeOutputDto : IEntityDto + { + public long Id { get; set; } + public string Name { get; set; } + public string Color { get; set; } + public string BackgroundColor { get; set; } + public long UserId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeUpdateInputVo.cs new file mode 100644 index 00000000..beadb345 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/MyType/MyTypeUpdateInputVo.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.MyType +{ + public class MyTypeUpdateInputVo + { + public long Id { get; set; } + public string Name { get; set; } + public string Color { get; set; } + public string BackgroundColor { get; set; } + public long UserId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateCreateInputVo.cs new file mode 100644 index 00000000..4bee84ef --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateCreateInputVo.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.Plate +{ + /// + /// Plate输入创建对象 + /// + public class PlateCreateInputVo + { + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Introduction { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListInputVo.cs new file mode 100644 index 00000000..098bf305 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListInputVo.cs @@ -0,0 +1,12 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Bbs.Dtos.Plate +{ + public class PlateGetListInputVo : PagedAndSortedResultRequestDto + { + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Introduction { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListOutputDto.cs new file mode 100644 index 00000000..ff545a13 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetListOutputDto.cs @@ -0,0 +1,20 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Plate +{ + public class PlateGetListOutputDto : IEntityDto + { + + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Introduction { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetOutputDto.cs new file mode 100644 index 00000000..502c75ef --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateGetOutputDto.cs @@ -0,0 +1,12 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Bbs.Dtos.Plate +{ + public class PlateGetOutputDto : IEntityDto + { + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Introduction { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateUpdateInputVo.cs new file mode 100644 index 00000000..cb9cb7dd --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Dtos/Plate/PlateUpdateInputVo.cs @@ -0,0 +1,18 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Dtos.Plate +{ + public class PlateUpdateInputVo + { + + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Introduction { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/AgreeEntity .cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/AgreeEntity .cs new file mode 100644 index 00000000..eebc3c01 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/AgreeEntity .cs @@ -0,0 +1,35 @@ +using System; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Ddd.Entities; +using Yi.Framework.Infrastructure.Helper; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("Agree")] + public class AgreeEntity : IEntity, ICreationAuditedObject + { + public AgreeEntity() + { + } + + public AgreeEntity(long discussId) + { + DiscussId = discussId; + } + + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } = SnowflakeHelper.NextId; + public DateTime CreationTime { get; set; } + + /// + /// 主题id + /// + public long DiscussId { get; set; } + + /// + /// 创建者 + /// + public long? CreatorId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/ArticleEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/ArticleEntity.cs new file mode 100644 index 00000000..880fdb56 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/ArticleEntity.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; +using System.Linq; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("Article")] + public class ArticleEntity : IEntity, ISoftDelete + { + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public bool IsDeleted { get; set; } + + [SugarColumn(Length = 999999)] + public string Content { get; set; } + public string Name { get; set; } + + + public long DiscussId { get; set; } + + public long ParentId { get; set; } + + [SugarColumn(IsIgnore = true)] + + public List Children { get; set; } + } + + public static class ArticleEntityExtensions + { + /// + /// 平铺自己 + /// + /// + /// + public static List Tile(this List entities) + { + if (entities is null) return new List(); + var result = new List(); + return StartRecursion(entities, result); + } + + private static List StartRecursion(List entities, List result) + { + foreach (var entity in entities) + { + result.Add(entity); + if (entity.Children is not null && entity.Children.Where(x => x.IsDeleted == false).Count() > 0) + { + StartRecursion(entity.Children, result); + } + } + return result; + } + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/BannerEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/BannerEntity.cs new file mode 100644 index 00000000..823ca1de --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/BannerEntity.cs @@ -0,0 +1,26 @@ +using System; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("Banner")] + public class BannerEntity : IEntity, ISoftDelete, IAuditedObject + { + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Color { get; set; } + public bool IsDeleted { get; set; } + public DateTime CreationTime { get; set; } + + public long? CreatorId { get; set; } + + public long? LastModifierId { get; set; } + + public DateTime? LastModificationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/CommentEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/CommentEntity.cs new file mode 100644 index 00000000..293fb0d7 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/CommentEntity.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; +using Yi.Furion.Core.Rbac.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + + /// + /// 评论表 + /// + [SugarTable("Comment")] + public class CommentEntity : IEntity, ISoftDelete, IAuditedObject + { + /// + /// 采用二维数组方式,不使用树形方式 + /// + public CommentEntity() + { + } + + public CommentEntity(long discussId) + { + DiscussId = discussId; + } + + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public bool IsDeleted { get; set; } + public string Content { get; set; } + + public long DiscussId { get; set; } + + /// + /// 被回复的CommentId + /// + public long ParentId { get; set; } + public DateTime CreationTime { get; set; } + + public long RootId { get; set; } + + [SugarColumn(IsIgnore = true)] + public List Children { get; set; } = new(); + + + /// + /// 用户,评论人用户信息 + /// + [Navigate(NavigateType.OneToOne, nameof(CreatorId))] + public UserEntity CreateUser { get; set; } + + /// + /// 被评论的用户信息 + /// + [SugarColumn(IsIgnore = true)] + public UserEntity CommentedUser { get; set; } + + public long? CreatorId { get; set; } + + public long? LastModifierId { get; set; } + + public DateTime? LastModificationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussEntity.cs new file mode 100644 index 00000000..f5f47c3a --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussEntity.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; +using Yi.Furion.Core.Bbs.Enums; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("Discuss")] + public class DiscussEntity : IEntity, ISoftDelete, IAuditedObject + { + public DiscussEntity() + { + } + public DiscussEntity(long plateId) + { + PlateId = plateId; + } + + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public string Title { get; set; } + public string Types { get; set; } + public string Introduction { get; set; } + public int AgreeNum { get; set; } + public int SeeNum { get; set; } + /// + /// 封面 + /// + public string Cover { get; set; } + + [SugarColumn(Length = 999999)] + public string Content { get; set; } + + public string Color { get; set; } + + public bool IsDeleted { get; set; } + + //是否置顶,默认false + public bool IsTop { get; set; } + + + public DiscussPermissionTypeEnum PermissionType { get; set; } + + public long PlateId { get; set; } + public DateTime CreationTime { get; set; } + + public long? CreatorId { get; set; } + + public long? LastModifierId { get; set; } + + public DateTime? LastModificationTime { get; set; } + + + /// + /// 当PermissionType为部分用户时候,以下列表中的用户+创建者 代表拥有权限 + /// + [SugarColumn(IsJson = true)]//使用json处理 + public List PermissionUserIds { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussMyTypeEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussMyTypeEntity.cs new file mode 100644 index 00000000..a7557d76 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/DiscussMyTypeEntity.cs @@ -0,0 +1,21 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("DiscussMyType")] + public class DiscussMyTypeEntity : IEntity + { + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + + public long DiscussId { get; set; } + + public long MyTypeId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/MyTypeEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/MyTypeEntity.cs new file mode 100644 index 00000000..42d01639 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/MyTypeEntity.cs @@ -0,0 +1,20 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("MyType")] + public class MyTypeEntity : IEntity, ISoftDelete + { + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public bool IsDeleted { get; set; } + + public string Name { get; set; } + public string Color { get; set; } + public string BackgroundColor { get; set; } + + public long UserId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/PlateEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/PlateEntity.cs new file mode 100644 index 00000000..b0e160e3 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/PlateEntity.cs @@ -0,0 +1,18 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("Plate")] + public class PlateEntity : IEntity, ISoftDelete + { + + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public string Name { get; set; } + public string Logo { get; set; } + public string Introduction { get; set; } + public bool IsDeleted { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/SettingEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/SettingEntity.cs new file mode 100644 index 00000000..f345a1b8 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Entities/SettingEntity.cs @@ -0,0 +1,18 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Bbs.Entities +{ + [SugarTable("Setting")] + public class SettingEntity : IEntity + { + + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + public int CommentPage { get; set; } + public int DiscussPage { get; set; } + public int CommentExperience { get; set; } + public int DiscussExperience { get; set; } + public string Title { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/DiscussPermissionTypeEnum.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/DiscussPermissionTypeEnum.cs new file mode 100644 index 00000000..73063a0c --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/DiscussPermissionTypeEnum.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Enums +{ + public enum DiscussPermissionTypeEnum + { + /// + /// 默认:公开 + /// + Public = 0, + + /// + /// 仅自己可见 + /// + Oneself, + + /// + /// 部分用户可见 + /// + User + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/QueryDiscussTypeEnum.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/QueryDiscussTypeEnum.cs new file mode 100644 index 00000000..4a2f3c91 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Enums/QueryDiscussTypeEnum.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Furion.Core.Bbs.Enums +{ + public enum QueryDiscussTypeEnum + { + New, + Suggest, + Host + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Etos/SeeDiscussEventSource.cs b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Etos/SeeDiscussEventSource.cs new file mode 100644 index 00000000..5c227d13 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Bbs/Etos/SeeDiscussEventSource.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Furion.EventBus; +using Yi.Furion.Core.Rbac.Etos; + +namespace Yi.Furion.Core.Bbs.Etos +{ + public class SeeDiscussEventSource : IEventSource + { + public SeeDiscussEventSource(SeeDiscussEventArgs payload) + { Payload = payload; } + public string EventId => nameof(SeeDiscussEventSource); + public DateTime CreatedTime { get; set; } = DateTime.UtcNow; + + [Newtonsoft.Json.JsonIgnore] + [System.Text.Json.Serialization.JsonIgnore] + public CancellationToken CancellationToken { get; set; } + + + public object Payload { get; set; } + } + + public class SeeDiscussEventArgs + { + public long DiscussId { get; set; } + public int OldSeeNum { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/GlobalUsings.cs b/Yi.Furion.Net6/Yi.Furion.Core/GlobalUsings.cs new file mode 100644 index 00000000..0e5cb78b --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/GlobalUsings.cs @@ -0,0 +1,17 @@ +global using Furion; +global using Furion.DatabaseAccessor; +global using Furion.DataEncryption; +global using Furion.DataValidation; +global using Furion.DependencyInjection; +global using Furion.DynamicApiController; +global using Furion.Extensions; +global using Furion.FriendlyException; +global using Furion.Logging; +global using Mapster; +global using Microsoft.AspNetCore.Authorization; +global using Microsoft.AspNetCore.Http; +global using Microsoft.AspNetCore.Mvc; +global using Microsoft.CodeAnalysis; +global using System.ComponentModel.DataAnnotations; +global using System; +global using System.Collections.Generic; \ No newline at end of file diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/DeptConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/DeptConst.cs similarity index 83% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/DeptConst.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/DeptConst.cs index 6572561a..f1d5fc9d 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/DeptConst.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/DeptConst.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.ConstClasses +namespace Yi.Furion.Core.Rbac.Consts { /// /// 常量定义 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/MenuConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/MenuConst.cs similarity index 83% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/MenuConst.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/MenuConst.cs index 01a79614..a38f6d1d 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/MenuConst.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/MenuConst.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.ConstClasses +namespace Yi.Furion.Core.Rbac.Consts { /// /// 常量定义 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/PostConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/PostConst.cs similarity index 83% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/PostConst.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/PostConst.cs index 4faa9f0c..c281443f 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/PostConst.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/PostConst.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.ConstClasses +namespace Yi.Furion.Core.Rbac.Consts { /// /// 常量定义 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/RoleConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/RoleConst.cs similarity index 83% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/RoleConst.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/RoleConst.cs index 59743899..3b2a1e6b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/RoleConst.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/RoleConst.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.ConstClasses +namespace Yi.Furion.Core.Rbac.Consts { /// /// 常量定义 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/UserConst.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/UserConst.cs similarity index 96% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/UserConst.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/UserConst.cs index ac8909d8..ff38a443 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/ConstClasses/UserConst.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Consts/UserConst.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.ConstClasses +namespace Yi.Furion.Core.Rbac.Consts { /// /// 常量定义 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/CaptchaImageDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/CaptchaImageDto.cs similarity index 86% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/CaptchaImageDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/CaptchaImageDto.cs index c3f7bedb..98a8c702 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/CaptchaImageDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/CaptchaImageDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class CaptchaImageDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/LoginInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/LoginInputVo.cs similarity index 88% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/LoginInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/LoginInputVo.cs index e2cea0ce..bd5c3d99 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/LoginInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/LoginInputVo.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class LoginInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs similarity index 81% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs index 677476d3..eb3001ac 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/PhoneCaptchaImageDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class PhoneCaptchaImageDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/RegisterDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/RegisterDto.cs similarity index 94% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/RegisterDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/RegisterDto.cs index 65119146..1fb71f1f 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/RegisterDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/RegisterDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class RegisterDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/RestPasswordDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/RestPasswordDto.cs similarity index 81% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/RestPasswordDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/RestPasswordDto.cs index 3a806e86..e4a6d5be 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/RestPasswordDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/RestPasswordDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class RestPasswordDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/UpdateIconDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/UpdateIconDto.cs similarity index 80% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/UpdateIconDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/UpdateIconDto.cs index abaed5f4..d3bccb76 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/UpdateIconDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/UpdateIconDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class UpdateIconDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/UpdatePasswordDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/UpdatePasswordDto.cs similarity index 85% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/UpdatePasswordDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/UpdatePasswordDto.cs index cf3404e8..46e03bb4 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Account/UpdatePasswordDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Account/UpdatePasswordDto.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Account +namespace Yi.Furion.Core.Rbac.Dtos.Account { public class UpdatePasswordDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigCreateInputVo.cs new file mode 100644 index 00000000..b0fb7589 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigCreateInputVo.cs @@ -0,0 +1,17 @@ +namespace Yi.Furion.Core.Rbac.Dtos.Config +{ + /// + /// Config输入创建对象 + /// + public class ConfigCreateInputVo + { + public long Id { get; set; } + public string ConfigName { get; set; } = string.Empty; + public string ConfigKey { get; set; } = string.Empty; + public string ConfigValue { get; set; } = string.Empty; + public string ConfigType { get; set; } + public int OrderNum { get; set; } + public string Remark { get; set; } + public DateTime CreationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListInputVo.cs new file mode 100644 index 00000000..b3ac2e84 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListInputVo.cs @@ -0,0 +1,21 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Rbac.Dtos.Config +{ + /// + /// òѯ + /// + public class ConfigGetListInputVo : PagedAllResultRequestDto + { + /// + /// + /// + public string ConfigName { get; set; } + + /// + /// ü + /// + public string ConfigKey { get; set; } + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListOutputDto.cs new file mode 100644 index 00000000..451ab2a9 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetListOutputDto.cs @@ -0,0 +1,40 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Rbac.Dtos.Config +{ + public class ConfigGetListOutputDto : IEntityDto + { + public long Id { get; set; } + /// + /// + /// + public string ConfigName { get; set; } = string.Empty; + + /// + /// + /// + public string ConfigKey { get; set; } = string.Empty; + /// + /// ֵ + /// + public string ConfigValue { get; set; } = string.Empty; + /// + /// + /// + public string ConfigType { get; set; } + /// + /// ֶ + /// + public int OrderNum { get; set; } + + /// + /// ע + /// + public string Remark { get; set; } + + /// + /// ʱ + /// + public DateTime CreationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetOutputDto.cs new file mode 100644 index 00000000..fa6988c2 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigGetOutputDto.cs @@ -0,0 +1,16 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.Rbac.Dtos.Config +{ + public class ConfigGetOutputDto : IEntityDto + { + public long Id { get; set; } + public string ConfigName { get; set; } = string.Empty; + public string ConfigKey { get; set; } = string.Empty; + public string ConfigValue { get; set; } = string.Empty; + public string ConfigType { get; set; } + public int OrderNum { get; set; } + public string Remark { get; set; } + public DateTime CreationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigUpdateInputVo.cs new file mode 100644 index 00000000..36cf3d6e --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Config/ConfigUpdateInputVo.cs @@ -0,0 +1,14 @@ +namespace Yi.Furion.Core.Rbac.Dtos.Config +{ + public class ConfigUpdateInputVo + { + public long Id { get; set; } + public string ConfigName { get; set; } = string.Empty; + public string ConfigKey { get; set; } = string.Empty; + public string ConfigValue { get; set; } = string.Empty; + public string ConfigType { get; set; } + public int OrderNum { get; set; } + public string Remark { get; set; } + public DateTime CreationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptCreateInputVo.cs similarity index 93% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptCreateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptCreateInputVo.cs index 896f8fd5..a1fc8af8 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptCreateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptCreateInputVo.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Dept +namespace Yi.Furion.Core.Rbac.Dtos.Dept { /// /// Dept输入创建对象 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetListInputVo.cs similarity index 87% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetListInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetListInputVo.cs index f367104f..f21a1b55 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetListInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetListInputVo.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos; -namespace Yi.Furion.Application.Rbac.Dtos.Dept +namespace Yi.Furion.Core.Rbac.Dtos.Dept { public class DeptGetListInputVo : PagedAllResultRequestDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetListOutputDto.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetListOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetListOutputDto.cs index 2d6800a5..ea199409 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetListOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetListOutputDto.cs @@ -1,6 +1,7 @@ +using System; using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -namespace Yi.Furion.Application.Rbac.Dtos.Dept +namespace Yi.Furion.Core.Rbac.Dtos.Dept { public class DeptGetListOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetOutputDto.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetOutputDto.cs index a2a8306a..9041cc6c 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptGetOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptGetOutputDto.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -namespace Yi.Furion.Application.Rbac.Dtos.Dept +namespace Yi.Furion.Core.Rbac.Dtos.Dept { public class DeptGetOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptUpdateInputVo.cs similarity index 92% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptUpdateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptUpdateInputVo.cs index 76c247fa..bec54b5a 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Dept/DeptUpdateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Dept/DeptUpdateInputVo.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Dept +namespace Yi.Furion.Core.Rbac.Dtos.Dept { public class DeptUpdateInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListInputVo.cs new file mode 100644 index 00000000..927d935e --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListInputVo.cs @@ -0,0 +1,11 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Rbac.Dtos.LoginLog +{ + public class LoginLogGetListInputVo : PagedAllResultRequestDto + { + public string LoginUser { get; set; } + + public string LoginIp { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListOutputDto.cs new file mode 100644 index 00000000..035c2dd6 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/LoginLog/LoginLogGetListOutputDto.cs @@ -0,0 +1,32 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.Rbac.Dtos.LoginLog +{ + public class LoginLogGetListOutputDto : EntityDto + { + public DateTime CreationTime { get; } + + + public string LoginUser { get; set; } + + public string LoginLocation { get; set; } + /// + /// 登录Ip + /// + public string LoginIp { get; set; } + /// + /// 浏览器 + /// + public string Browser { get; set; } + /// + /// 操作系统 + /// + public string Os { get; set; } + /// + /// 登录信息 + /// + public string LogMsg { get; set; } + + public long? CreatorId { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuCreateInputVo.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuCreateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuCreateInputVo.cs index a23fe324..1a8c6824 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuCreateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuCreateInputVo.cs @@ -1,6 +1,7 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using System; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Menu +namespace Yi.Furion.Core.Rbac.Dtos.Menu { /// /// Menu输入创建对象 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetListInputVo.cs similarity index 82% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetListInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetListInputVo.cs index 0b0af8b2..af12af59 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetListInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetListInputVo.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos; -namespace Yi.Furion.Application.Rbac.Dtos.Menu +namespace Yi.Furion.Core.Rbac.Dtos.Menu { public class MenuGetListInputVo : PagedAndSortedResultRequestDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetListOutputDto.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetListOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetListOutputDto.cs index 93094d19..4bcb24f4 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetListOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetListOutputDto.cs @@ -1,7 +1,8 @@ +using System; using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Menu +namespace Yi.Furion.Core.Rbac.Dtos.Menu { public class MenuGetListOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetOutputDto.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetOutputDto.cs index a5fc5fc6..c7351809 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuGetOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuGetOutputDto.cs @@ -1,7 +1,8 @@ +using System; using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Menu +namespace Yi.Furion.Core.Rbac.Dtos.Menu { public class MenuGetOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuUpdateInputVo.cs similarity index 90% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuUpdateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuUpdateInputVo.cs index b8bd7ec0..ba1bb5c0 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Menu/MenuUpdateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Menu/MenuUpdateInputVo.cs @@ -1,6 +1,7 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using System; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Menu +namespace Yi.Furion.Core.Rbac.Dtos.Menu { public class MenuUpdateInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostCreateInputVo.cs similarity index 92% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostCreateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostCreateInputVo.cs index 3007a5db..24520a85 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostCreateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostCreateInputVo.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Application.Rbac.Dtos.Post +namespace Yi.Furion.Core.Rbac.Dtos.Post { /// /// Post输入创建对象 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetListInputVo.cs similarity index 86% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetListInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetListInputVo.cs index 8a058a84..7501824e 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetListInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetListInputVo.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos; -namespace Yi.Furion.Application.Rbac.Dtos.Post +namespace Yi.Furion.Core.Rbac.Dtos.Post { public class PostGetListInputVo : PagedAndSortedResultRequestDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetListOutputDto.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetListOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetListOutputDto.cs index f230c7ff..26d0e1cc 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetListOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetListOutputDto.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -namespace Yi.Furion.Application.Rbac.Dtos.Post +namespace Yi.Furion.Core.Rbac.Dtos.Post { public class PostGetListOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetOutputDto.cs similarity index 90% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetOutputDto.cs index 84ebd8ae..e2ffdd98 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostGetOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostGetOutputDto.cs @@ -1,6 +1,7 @@ +using System; using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -namespace Yi.Furion.Application.Rbac.Dtos.Post +namespace Yi.Furion.Core.Rbac.Dtos.Post { public class PostGetOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostUpdateInputVo.cs similarity index 88% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostUpdateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostUpdateInputVo.cs index 281c4269..dff3377b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Post/PostUpdateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Post/PostUpdateInputVo.cs @@ -1,4 +1,6 @@ -namespace Yi.Furion.Application.Rbac.Dtos.Post +using System; + +namespace Yi.Furion.Core.Rbac.Dtos.Post { public class PostUpdateInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleCreateInputVo.cs similarity index 82% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleCreateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleCreateInputVo.cs index a1c5ce50..cdbc4d84 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleCreateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleCreateInputVo.cs @@ -1,6 +1,7 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using System.Collections.Generic; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Role +namespace Yi.Furion.Core.Rbac.Dtos.Role { /// /// Role输入创建对象 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetListInputVo.cs similarity index 84% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetListInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetListInputVo.cs index 5c2024f2..c00de310 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetListInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetListInputVo.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos; -namespace Yi.Furion.Application.Rbac.Dtos.Role +namespace Yi.Furion.Core.Rbac.Dtos.Role { public class RoleGetListInputVo : PagedAllResultRequestDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetListOutputDto.cs similarity index 86% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetListOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetListOutputDto.cs index 83400198..3ac71988 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetListOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetListOutputDto.cs @@ -1,7 +1,7 @@ using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Role +namespace Yi.Furion.Core.Rbac.Dtos.Role { public class RoleGetListOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetOutputDto.cs similarity index 86% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetOutputDto.cs index f2a1a324..8bd84765 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleGetOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleGetOutputDto.cs @@ -1,7 +1,7 @@ using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Role +namespace Yi.Furion.Core.Rbac.Dtos.Role { public class RoleGetOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleUpdateInputVo.cs similarity index 83% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleUpdateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleUpdateInputVo.cs index 2128d3c9..2391123e 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/Role/RoleUpdateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/Role/RoleUpdateInputVo.cs @@ -1,6 +1,6 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.Role +namespace Yi.Furion.Core.Rbac.Dtos.Role { public class RoleUpdateInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/ProfileUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/ProfileUpdateInputVo.cs similarity index 83% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/ProfileUpdateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/ProfileUpdateInputVo.cs index 51b5dae2..4ccc9d5b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/ProfileUpdateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/ProfileUpdateInputVo.cs @@ -1,6 +1,6 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.User +namespace Yi.Furion.Core.Rbac.Dtos.User { public class ProfileUpdateInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserCreateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserCreateInputVo.cs similarity index 89% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserCreateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserCreateInputVo.cs index f5b44ac7..e8225889 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserCreateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserCreateInputVo.cs @@ -1,6 +1,7 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using System.Collections.Generic; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.User +namespace Yi.Furion.Core.Rbac.Dtos.User { /// /// User输入创建对象 diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetListInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetListInputVo.cs similarity index 88% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetListInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetListInputVo.cs index db6ff6d3..4ee05e56 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetListInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetListInputVo.cs @@ -1,6 +1,6 @@ using Yi.Framework.Infrastructure.Ddd.Dtos; -namespace Yi.Furion.Application.Rbac.Dtos.User +namespace Yi.Furion.Core.Rbac.Dtos.User { public class UserGetListInputVo : PagedAllResultRequestDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetListOutputDto.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetListOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetListOutputDto.cs index f4d31db8..bdbfcd59 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetListOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetListOutputDto.cs @@ -1,7 +1,7 @@ using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.User +namespace Yi.Furion.Core.Rbac.Dtos.User { public class UserGetListOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetOutputDto.cs similarity index 82% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetOutputDto.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetOutputDto.cs index ace03d42..996316b2 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserGetOutputDto.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserGetOutputDto.cs @@ -1,10 +1,10 @@ using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; -using Yi.Furion.Application.Rbac.Dtos.Dept; -using Yi.Furion.Application.Rbac.Dtos.Post; -using Yi.Furion.Application.Rbac.Dtos.Role; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Dtos.Dept; +using Yi.Furion.Core.Rbac.Dtos.Post; +using Yi.Furion.Core.Rbac.Dtos.Role; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.User +namespace Yi.Furion.Core.Rbac.Dtos.User { public class UserGetOutputDto : IEntityDto { diff --git a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserUpdateInputVo.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserUpdateInputVo.cs similarity index 90% rename from Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserUpdateInputVo.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserUpdateInputVo.cs index 7f06cff1..33eaa2e3 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Dtos/User/UserUpdateInputVo.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Dtos/User/UserUpdateInputVo.cs @@ -1,6 +1,6 @@ -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; -namespace Yi.Furion.Application.Rbac.Dtos.User +namespace Yi.Furion.Core.Rbac.Dtos.User { public class UserUpdateInputVo { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/ConfigEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/ConfigEntity.cs new file mode 100644 index 00000000..b4b3ba27 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/ConfigEntity.cs @@ -0,0 +1,58 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; + +namespace Yi.Furion.Core.Rbac.Entities +{ + /// + /// 配置表 + /// + [SugarTable("Config")] + public class ConfigEntity : IEntity, IAuditedObject, IOrderNum, ISoftDelete + { + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] + public long Id { get; set; } + /// + /// 配置名称 + /// + [SugarColumn(ColumnName = "ConfigName")] + public string ConfigName { get; set; } = string.Empty; + /// + /// 配置键 + /// + [SugarColumn(ColumnName = "ConfigKey")] + public string ConfigKey { get; set; } = string.Empty; + /// + /// 配置值 + /// + [SugarColumn(ColumnName = "ConfigValue")] + public string ConfigValue { get; set; } = string.Empty; + /// + /// 配置类别 + /// + [SugarColumn(ColumnName = "ConfigType")] + public string ConfigType { get; set; } + + + /// + /// 排序字段 + /// + [SugarColumn(ColumnName = "OrderNum")] + public int OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName = "Remark")] + public string Remark { get; set; } + public bool IsDeleted { get; set; } + + public DateTime CreationTime { get; set; } + + public long? CreatorId { get; set; } + + public long? LastModifierId { get; set; } + + public DateTime? LastModificationTime { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/MenuEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/MenuEntity.cs index ab3c4b94..de726a14 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/MenuEntity.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/MenuEntity.cs @@ -7,7 +7,7 @@ using Yi.Framework.Infrastructure.Data.Entities; using Yi.Framework.Infrastructure.Ddd.Entities; using Yi.Framework.Infrastructure.Helper; using Yi.Furion.Core.Rbac.Dtos; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; namespace Yi.Furion.Core.Rbac.Entities { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/RoleEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/RoleEntity.cs index c25c3338..6097ab81 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/RoleEntity.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/RoleEntity.cs @@ -4,7 +4,7 @@ using SqlSugar; using Yi.Framework.Infrastructure.Data.Auditing; using Yi.Framework.Infrastructure.Data.Entities; using Yi.Framework.Infrastructure.Ddd.Entities; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; namespace Yi.Furion.Core.Rbac.Entities { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/UserEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/UserEntity.cs index 4d236978..c7c7675a 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/UserEntity.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Entities/UserEntity.cs @@ -5,7 +5,7 @@ using Yi.Framework.Infrastructure.Data.Auditing; using Yi.Framework.Infrastructure.Data.Entities; using Yi.Framework.Infrastructure.Ddd.Entities; using Yi.Framework.Infrastructure.Helper; -using Yi.Furion.Core.Rbac.EnumClasses; +using Yi.Furion.Core.Rbac.Enums; namespace Yi.Furion.Core.Rbac.Entities { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/DataScopeEnum.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/DataScopeEnum.cs similarity index 86% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/DataScopeEnum.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/DataScopeEnum.cs index e94fe330..346cb3c5 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/DataScopeEnum.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/DataScopeEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.EnumClasses +namespace Yi.Furion.Core.Rbac.Enums { public enum DataScopeEnum { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/MenuTypeEnum.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/MenuTypeEnum.cs similarity index 85% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/MenuTypeEnum.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/MenuTypeEnum.cs index 01bfc36a..a7c4619b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/MenuTypeEnum.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/MenuTypeEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.EnumClasses +namespace Yi.Furion.Core.Rbac.Enums { public enum MenuTypeEnum { diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/SexEnum.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/SexEnum.cs similarity index 91% rename from Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/SexEnum.cs rename to Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/SexEnum.cs index 3d26968b..a47f8dd0 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/EnumClasses/SexEnum.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Enums/SexEnum.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace Yi.Furion.Core.Rbac.EnumClasses +namespace Yi.Furion.Core.Rbac.Enums { /// /// 性别 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Etos/LoginEventSource.cs b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Etos/LoginEventSource.cs index cf683e5d..817d676b 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Etos/LoginEventSource.cs +++ b/Yi.Furion.Net6/Yi.Furion.Core/Rbac/Etos/LoginEventSource.cs @@ -27,5 +27,7 @@ namespace Yi.Furion.Core.Rbac.Etos { public long UserId { get; set; } public string UserName { get; set; } + + public HttpContext httpContext { get; set; } } } diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.csproj b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.csproj index 37355df0..ed8f8970 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.csproj +++ b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.csproj @@ -1,6 +1,5 @@  - net6.0 1701;1702;1591 @@ -28,7 +27,7 @@ - + diff --git a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml index 1e6878bb..6916a8c4 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml +++ b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml @@ -4,31 +4,408 @@ Yi.Furion.Core - + 常量定义 - + 常量定义 - + 常量定义 - + 常量定义 - + 常量定义 + + + Article输入创建对象 + + + + + Banner输入创建对象 + + + + + Comment输入创建对象 + + + + + 评论id + + + + + 主题id + + + + + 第一层评论id,第一层为0 + + + + + 被回复的CommentId,第一层为0 + + + + + 评论多反 + + + + + 主题id + + + + + 用户,评论人用户信息 + + + + + 被评论的用户信息 + + + + + 这个不是一个树形,而是存在一个二维数组,该Children只有在顶级时候,只有一层 + + + + + 单返回,返回单条评论即可 + + + + + 用户id联表为用户对象 + + + + + 根节点的评论id + + + + + 被回复的CommentId + + + + + Discuss输入创建对象 + + + + + 默认公开 + + + + + 封面 + + + + + 是否已点赞 + + + + + 封面 + + + + + 封面 + + + + + 封面 + + + + + Label输入创建对象 + + + + + Plate输入创建对象 + + + + + 主题id + + + + + 创建者 + + + + + 平铺自己 + + + + + + + 评论表 + + + + + 采用二维数组方式,不使用树形方式 + + + + + 被回复的CommentId + + + + + 用户,评论人用户信息 + + + + + 被评论的用户信息 + + + + + 封面 + + + + + 当PermissionType为部分用户时候,以下列表中的用户+创建者 代表拥有权限 + + + + + 默认:公开 + + + + + 仅自己可见 + + + + + 部分用户可见 + + + + + 常量定义 + + + + + 常量定义 + + + + + 常量定义 + + + + + 常量定义 + + + + + 常量定义 + + + + + 账号 + + + + + 密码 + + + + + 唯一标识码 + + + + + 电话 + + + + + 验证码 + + + + + Config输入创建对象 + + + + + 配置查询参数 + + + + + 配置名称 + + + + + 配置键 + + + + + 配置名称 + + + + + 配置主键 + + + + + 配置值 + + + + + 配置类型 + + + + + 排序字段 + + + + + 备注 + + + + + 创建时间 + + + + + Dept输入创建对象 + + + + + 登录Ip + + + + + 浏览器 + + + + + 操作系统 + + + + + 登录信息 + + + + + Menu输入创建对象 + + + + + Post输入创建对象 + + + + + Role输入创建对象 + + + + + User输入创建对象 + + + + + 配置表 + + + + + 配置名称 + + + + + 配置键 + + + + + 配置值 + + + + + 配置类别 + + + + + 排序字段 + + + + + 描述 + + 部门表 @@ -598,22 +975,22 @@ 用户id - + 性别 - + 男性 - + 女性 - + 未知 diff --git a/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/IArticleRepository.cs b/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/IArticleRepository.cs new file mode 100644 index 00000000..ac7da4fb --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/IArticleRepository.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Yi.Framework.Infrastructure.Ddd.Repositories; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Sqlsugar.Core.Repositories +{ + public interface IArticleRepository : IRepository + { + Task> GetTreeAsync(Expression> where); + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/ArticleRepository.cs b/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/ArticleRepository.cs new file mode 100644 index 00000000..ec55f11d --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/ArticleRepository.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Threading.Tasks; +using Furion.DependencyInjection; +using SqlSugar; +using Yi.Framework.Infrastructure.Sqlsugar.Repositories; +using Yi.Furion.Core.Bbs.Entities; + +namespace Yi.Furion.Sqlsugar.Core.Repositories.Impl +{ + public class ArticleRepository : SqlsugarRepository, IArticleRepository,ITransient + { + public ArticleRepository(ISqlSugarClient context) : base(context) + { + } + + public async Task> GetTreeAsync(Expression> where) + { + return await _DbQueryable.Where(where).ToTreeAsync(x => x.Children, x => x.ParentId, 0); + } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/UserRepository.cs b/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/UserRepository.cs index 371d317f..25c496d8 100644 --- a/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/UserRepository.cs +++ b/Yi.Furion.Net6/Yi.Furion.Sqlsugar.Core/Repositories/Impl/UserRepository.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Furion.DependencyInjection; using SqlSugar; using Yi.Framework.Infrastructure.Sqlsugar.Repositories; -using Yi.Furion.Core.Rbac.ConstClasses; +using Yi.Furion.Core.Rbac.Consts; using Yi.Furion.Core.Rbac.Dtos; using Yi.Furion.Core.Rbac.Entities; diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs index b051f7d5..95eb03b2 100644 --- a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs +++ b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs @@ -19,6 +19,8 @@ public class Startup : AppStartup services.AddControllers().AddInjectWithUnifyResult(); services.AddEventBus(); + + services.AddHttpContextAccessor(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) diff --git a/Yi.RuoYi.Vue3/src/utils/request.js b/Yi.RuoYi.Vue3/src/utils/request.js index 6a8ed856..4a5c308a 100644 --- a/Yi.RuoYi.Vue3/src/utils/request.js +++ b/Yi.RuoYi.Vue3/src/utils/request.js @@ -127,7 +127,7 @@ service.interceptors.response.use(res => { return Promise.reject('error') } else { - return Promise.resolve(res) + return Promise.resolve(res.data) } },