From c271f3005aa364fbb7fe99c9ab1ff2fb2a2cfcc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sat, 7 Oct 2023 17:51:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.env.development | 0 .../.env.production | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/.env.staging | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/.gitignore | 0 .../.vscode/extensions.json | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/README.md | 0 .../components.d.ts | 14 ------- {Yi.Vue3.x.Vant => Yi.App.Vue3}/index.html | 0 .../package-lock.json | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/package.json | 0 .../public/vite.svg | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/App.vue | 0 .../src/api/agreeApi.ts | 0 .../src/api/articleApi.ts | 0 .../src/api/commentApi.ts | 0 .../src/api/fileApi.ts | 0 .../src/api/login.ts | 0 .../src/api/skuApi.ts | 0 .../src/api/spuApi.ts | 0 .../src/assets/vue.svg | 0 .../src/components/AppCard.vue | 0 .../src/components/AppCreateTime.vue | 0 .../src/components/AppGrid.vue | 0 .../src/components/AppUserIcon.vue | 0 .../src/components/HelloWorld.vue | 0 .../src/layout/bottom/index.vue | 0 .../src/layout/head/index.vue | 0 .../src/layout/index.vue | 0 .../src/layout/main/index.vue | 0 .../src/layout/tab/index.vue | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/main.ts | 0 .../src/permission.ts | 0 .../src/router/index.ts | 0 .../src/store/index.ts | 0 .../src/store/modules/user.ts | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/style.css | 0 .../src/type/class/AppGridData.ts | 0 .../src/type/interface/ArticleEntity.ts | 0 .../src/utils/auth.ts | 0 .../src/utils/myaxios.ts | 0 .../src/view/login.vue | 0 .../src/view/main/follow.vue | 0 .../src/view/main/recommend.vue | 0 .../src/view/main/square.vue | 0 .../src/view/my.vue | 0 .../src/view/send/imageText.vue | 0 .../src/view/shop/shopDetails.vue | 0 .../src/view/shop/shopIndex.vue | 0 .../src/view/shop/shopSearch.vue | 0 .../src/vite-env.d.ts | 0 {Yi.Vue3.x.Vant => Yi.App.Vue3}/tsconfig.json | 0 .../tsconfig.node.json | 0 .../vite.config.ts | 0 ...vite.config.ts.timestamp-1665906237992.mjs | 0 .../Yi.Framework.Module.xml | 11 +++++ .../App/Services/ITrendsService.cs | 13 ++++++ .../App/Services/Impl/TrendsService.cs | 34 ++++++++++++++++ .../Services/Impl/MonitorServerService.cs | 6 +-- .../Yi.Furion.Application.xml | 17 ++++++++ .../App/Dtos/Trends/TrendsCreateInput.cs | 14 +++++++ .../App/Dtos/Trends/TrendsGetListInput.cs | 12 ++++++ .../App/Dtos/Trends/TrendsGetListOutputDto.cs | 20 +++++++++ .../App/Dtos/Trends/TrendsGetOutputDto.cs | 21 ++++++++++ .../App/Dtos/Trends/TrendsUpdateInput.cs | 10 +++++ .../App/Entities/TrendsEntity.cs | 38 ++++++++++++++++++ .../Yi.Furion.Core/Yi.Furion.Core.xml | 15 +++++++ Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs | 15 ++++++- .../Yi.Furion.Web.Entry/yi-sqlsugar-dev.db | Bin 229376 -> 0 bytes 68 files changed, 222 insertions(+), 18 deletions(-) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/.env.development (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/.env.production (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/.env.staging (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/.gitignore (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/.vscode/extensions.json (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/README.md (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/components.d.ts (63%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/index.html (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/package-lock.json (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/package.json (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/public/vite.svg (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/App.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/agreeApi.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/articleApi.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/commentApi.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/fileApi.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/login.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/skuApi.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/api/spuApi.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/assets/vue.svg (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/components/AppCard.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/components/AppCreateTime.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/components/AppGrid.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/components/AppUserIcon.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/components/HelloWorld.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/layout/bottom/index.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/layout/head/index.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/layout/index.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/layout/main/index.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/layout/tab/index.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/main.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/permission.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/router/index.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/store/index.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/store/modules/user.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/style.css (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/type/class/AppGridData.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/type/interface/ArticleEntity.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/utils/auth.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/utils/myaxios.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/login.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/main/follow.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/main/recommend.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/main/square.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/my.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/send/imageText.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/shop/shopDetails.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/shop/shopIndex.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/view/shop/shopSearch.vue (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/src/vite-env.d.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/tsconfig.json (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/tsconfig.node.json (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/vite.config.ts (100%) rename {Yi.Vue3.x.Vant => Yi.App.Vue3}/vite.config.ts.timestamp-1665906237992.mjs (100%) create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/App/Services/ITrendsService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Application/App/Services/Impl/TrendsService.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsCreateInput.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListInput.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetOutputDto.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsUpdateInput.cs create mode 100644 Yi.Furion.Net6/Yi.Furion.Core/App/Entities/TrendsEntity.cs delete mode 100644 Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db diff --git a/Yi.Vue3.x.Vant/.env.development b/Yi.App.Vue3/.env.development similarity index 100% rename from Yi.Vue3.x.Vant/.env.development rename to Yi.App.Vue3/.env.development diff --git a/Yi.Vue3.x.Vant/.env.production b/Yi.App.Vue3/.env.production similarity index 100% rename from Yi.Vue3.x.Vant/.env.production rename to Yi.App.Vue3/.env.production diff --git a/Yi.Vue3.x.Vant/.env.staging b/Yi.App.Vue3/.env.staging similarity index 100% rename from Yi.Vue3.x.Vant/.env.staging rename to Yi.App.Vue3/.env.staging diff --git a/Yi.Vue3.x.Vant/.gitignore b/Yi.App.Vue3/.gitignore similarity index 100% rename from Yi.Vue3.x.Vant/.gitignore rename to Yi.App.Vue3/.gitignore diff --git a/Yi.Vue3.x.Vant/.vscode/extensions.json b/Yi.App.Vue3/.vscode/extensions.json similarity index 100% rename from Yi.Vue3.x.Vant/.vscode/extensions.json rename to Yi.App.Vue3/.vscode/extensions.json diff --git a/Yi.Vue3.x.Vant/README.md b/Yi.App.Vue3/README.md similarity index 100% rename from Yi.Vue3.x.Vant/README.md rename to Yi.App.Vue3/README.md diff --git a/Yi.Vue3.x.Vant/components.d.ts b/Yi.App.Vue3/components.d.ts similarity index 63% rename from Yi.Vue3.x.Vant/components.d.ts rename to Yi.App.Vue3/components.d.ts index b2477968..d4bc2f34 100644 --- a/Yi.Vue3.x.Vant/components.d.ts +++ b/Yi.App.Vue3/components.d.ts @@ -16,26 +16,12 @@ declare module '@vue/runtime-core' { RouterView: typeof import('vue-router')['RouterView'] VanActionSheet: typeof import('vant/es')['ActionSheet'] VanButton: typeof import('vant/es')['Button'] - VanCell: typeof import('vant/es')['Cell'] - VanCellGroup: typeof import('vant/es')['CellGroup'] VanCol: typeof import('vant/es')['Col'] VanField: typeof import('vant/es')['Field'] - VanGrid: typeof import('vant/es')['Grid'] - VanGridItem: typeof import('vant/es')['GridItem'] VanIcon: typeof import('vant/es')['Icon'] - VanImage: typeof import('vant/es')['Image'] - VanList: typeof import('vant/es')['List'] - VanLoading: typeof import('vant/es')['Loading'] VanNavBar: typeof import('vant/es')['NavBar'] - VanPopup: typeof import('vant/es')['Popup'] - VanPullRefresh: typeof import('vant/es')['PullRefresh'] VanRow: typeof import('vant/es')['Row'] - VanSticky: typeof import('vant/es')['Sticky'] - VanSwipe: typeof import('vant/es')['Swipe'] - VanSwipeItem: typeof import('vant/es')['SwipeItem'] - VanTab: typeof import('vant/es')['Tab'] VanTabbar: typeof import('vant/es')['Tabbar'] VanTabbarItem: typeof import('vant/es')['TabbarItem'] - VanTabs: typeof import('vant/es')['Tabs'] } } diff --git a/Yi.Vue3.x.Vant/index.html b/Yi.App.Vue3/index.html similarity index 100% rename from Yi.Vue3.x.Vant/index.html rename to Yi.App.Vue3/index.html diff --git a/Yi.Vue3.x.Vant/package-lock.json b/Yi.App.Vue3/package-lock.json similarity index 100% rename from Yi.Vue3.x.Vant/package-lock.json rename to Yi.App.Vue3/package-lock.json diff --git a/Yi.Vue3.x.Vant/package.json b/Yi.App.Vue3/package.json similarity index 100% rename from Yi.Vue3.x.Vant/package.json rename to Yi.App.Vue3/package.json diff --git a/Yi.Vue3.x.Vant/public/vite.svg b/Yi.App.Vue3/public/vite.svg similarity index 100% rename from Yi.Vue3.x.Vant/public/vite.svg rename to Yi.App.Vue3/public/vite.svg diff --git a/Yi.Vue3.x.Vant/src/App.vue b/Yi.App.Vue3/src/App.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/App.vue rename to Yi.App.Vue3/src/App.vue diff --git a/Yi.Vue3.x.Vant/src/api/agreeApi.ts b/Yi.App.Vue3/src/api/agreeApi.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/agreeApi.ts rename to Yi.App.Vue3/src/api/agreeApi.ts diff --git a/Yi.Vue3.x.Vant/src/api/articleApi.ts b/Yi.App.Vue3/src/api/articleApi.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/articleApi.ts rename to Yi.App.Vue3/src/api/articleApi.ts diff --git a/Yi.Vue3.x.Vant/src/api/commentApi.ts b/Yi.App.Vue3/src/api/commentApi.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/commentApi.ts rename to Yi.App.Vue3/src/api/commentApi.ts diff --git a/Yi.Vue3.x.Vant/src/api/fileApi.ts b/Yi.App.Vue3/src/api/fileApi.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/fileApi.ts rename to Yi.App.Vue3/src/api/fileApi.ts diff --git a/Yi.Vue3.x.Vant/src/api/login.ts b/Yi.App.Vue3/src/api/login.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/login.ts rename to Yi.App.Vue3/src/api/login.ts diff --git a/Yi.Vue3.x.Vant/src/api/skuApi.ts b/Yi.App.Vue3/src/api/skuApi.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/skuApi.ts rename to Yi.App.Vue3/src/api/skuApi.ts diff --git a/Yi.Vue3.x.Vant/src/api/spuApi.ts b/Yi.App.Vue3/src/api/spuApi.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/api/spuApi.ts rename to Yi.App.Vue3/src/api/spuApi.ts diff --git a/Yi.Vue3.x.Vant/src/assets/vue.svg b/Yi.App.Vue3/src/assets/vue.svg similarity index 100% rename from Yi.Vue3.x.Vant/src/assets/vue.svg rename to Yi.App.Vue3/src/assets/vue.svg diff --git a/Yi.Vue3.x.Vant/src/components/AppCard.vue b/Yi.App.Vue3/src/components/AppCard.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/components/AppCard.vue rename to Yi.App.Vue3/src/components/AppCard.vue diff --git a/Yi.Vue3.x.Vant/src/components/AppCreateTime.vue b/Yi.App.Vue3/src/components/AppCreateTime.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/components/AppCreateTime.vue rename to Yi.App.Vue3/src/components/AppCreateTime.vue diff --git a/Yi.Vue3.x.Vant/src/components/AppGrid.vue b/Yi.App.Vue3/src/components/AppGrid.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/components/AppGrid.vue rename to Yi.App.Vue3/src/components/AppGrid.vue diff --git a/Yi.Vue3.x.Vant/src/components/AppUserIcon.vue b/Yi.App.Vue3/src/components/AppUserIcon.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/components/AppUserIcon.vue rename to Yi.App.Vue3/src/components/AppUserIcon.vue diff --git a/Yi.Vue3.x.Vant/src/components/HelloWorld.vue b/Yi.App.Vue3/src/components/HelloWorld.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/components/HelloWorld.vue rename to Yi.App.Vue3/src/components/HelloWorld.vue diff --git a/Yi.Vue3.x.Vant/src/layout/bottom/index.vue b/Yi.App.Vue3/src/layout/bottom/index.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/layout/bottom/index.vue rename to Yi.App.Vue3/src/layout/bottom/index.vue diff --git a/Yi.Vue3.x.Vant/src/layout/head/index.vue b/Yi.App.Vue3/src/layout/head/index.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/layout/head/index.vue rename to Yi.App.Vue3/src/layout/head/index.vue diff --git a/Yi.Vue3.x.Vant/src/layout/index.vue b/Yi.App.Vue3/src/layout/index.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/layout/index.vue rename to Yi.App.Vue3/src/layout/index.vue diff --git a/Yi.Vue3.x.Vant/src/layout/main/index.vue b/Yi.App.Vue3/src/layout/main/index.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/layout/main/index.vue rename to Yi.App.Vue3/src/layout/main/index.vue diff --git a/Yi.Vue3.x.Vant/src/layout/tab/index.vue b/Yi.App.Vue3/src/layout/tab/index.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/layout/tab/index.vue rename to Yi.App.Vue3/src/layout/tab/index.vue diff --git a/Yi.Vue3.x.Vant/src/main.ts b/Yi.App.Vue3/src/main.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/main.ts rename to Yi.App.Vue3/src/main.ts diff --git a/Yi.Vue3.x.Vant/src/permission.ts b/Yi.App.Vue3/src/permission.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/permission.ts rename to Yi.App.Vue3/src/permission.ts diff --git a/Yi.Vue3.x.Vant/src/router/index.ts b/Yi.App.Vue3/src/router/index.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/router/index.ts rename to Yi.App.Vue3/src/router/index.ts diff --git a/Yi.Vue3.x.Vant/src/store/index.ts b/Yi.App.Vue3/src/store/index.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/store/index.ts rename to Yi.App.Vue3/src/store/index.ts diff --git a/Yi.Vue3.x.Vant/src/store/modules/user.ts b/Yi.App.Vue3/src/store/modules/user.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/store/modules/user.ts rename to Yi.App.Vue3/src/store/modules/user.ts diff --git a/Yi.Vue3.x.Vant/src/style.css b/Yi.App.Vue3/src/style.css similarity index 100% rename from Yi.Vue3.x.Vant/src/style.css rename to Yi.App.Vue3/src/style.css diff --git a/Yi.Vue3.x.Vant/src/type/class/AppGridData.ts b/Yi.App.Vue3/src/type/class/AppGridData.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/type/class/AppGridData.ts rename to Yi.App.Vue3/src/type/class/AppGridData.ts diff --git a/Yi.Vue3.x.Vant/src/type/interface/ArticleEntity.ts b/Yi.App.Vue3/src/type/interface/ArticleEntity.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/type/interface/ArticleEntity.ts rename to Yi.App.Vue3/src/type/interface/ArticleEntity.ts diff --git a/Yi.Vue3.x.Vant/src/utils/auth.ts b/Yi.App.Vue3/src/utils/auth.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/utils/auth.ts rename to Yi.App.Vue3/src/utils/auth.ts diff --git a/Yi.Vue3.x.Vant/src/utils/myaxios.ts b/Yi.App.Vue3/src/utils/myaxios.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/utils/myaxios.ts rename to Yi.App.Vue3/src/utils/myaxios.ts diff --git a/Yi.Vue3.x.Vant/src/view/login.vue b/Yi.App.Vue3/src/view/login.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/login.vue rename to Yi.App.Vue3/src/view/login.vue diff --git a/Yi.Vue3.x.Vant/src/view/main/follow.vue b/Yi.App.Vue3/src/view/main/follow.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/main/follow.vue rename to Yi.App.Vue3/src/view/main/follow.vue diff --git a/Yi.Vue3.x.Vant/src/view/main/recommend.vue b/Yi.App.Vue3/src/view/main/recommend.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/main/recommend.vue rename to Yi.App.Vue3/src/view/main/recommend.vue diff --git a/Yi.Vue3.x.Vant/src/view/main/square.vue b/Yi.App.Vue3/src/view/main/square.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/main/square.vue rename to Yi.App.Vue3/src/view/main/square.vue diff --git a/Yi.Vue3.x.Vant/src/view/my.vue b/Yi.App.Vue3/src/view/my.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/my.vue rename to Yi.App.Vue3/src/view/my.vue diff --git a/Yi.Vue3.x.Vant/src/view/send/imageText.vue b/Yi.App.Vue3/src/view/send/imageText.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/send/imageText.vue rename to Yi.App.Vue3/src/view/send/imageText.vue diff --git a/Yi.Vue3.x.Vant/src/view/shop/shopDetails.vue b/Yi.App.Vue3/src/view/shop/shopDetails.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/shop/shopDetails.vue rename to Yi.App.Vue3/src/view/shop/shopDetails.vue diff --git a/Yi.Vue3.x.Vant/src/view/shop/shopIndex.vue b/Yi.App.Vue3/src/view/shop/shopIndex.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/shop/shopIndex.vue rename to Yi.App.Vue3/src/view/shop/shopIndex.vue diff --git a/Yi.Vue3.x.Vant/src/view/shop/shopSearch.vue b/Yi.App.Vue3/src/view/shop/shopSearch.vue similarity index 100% rename from Yi.Vue3.x.Vant/src/view/shop/shopSearch.vue rename to Yi.App.Vue3/src/view/shop/shopSearch.vue diff --git a/Yi.Vue3.x.Vant/src/vite-env.d.ts b/Yi.App.Vue3/src/vite-env.d.ts similarity index 100% rename from Yi.Vue3.x.Vant/src/vite-env.d.ts rename to Yi.App.Vue3/src/vite-env.d.ts diff --git a/Yi.Vue3.x.Vant/tsconfig.json b/Yi.App.Vue3/tsconfig.json similarity index 100% rename from Yi.Vue3.x.Vant/tsconfig.json rename to Yi.App.Vue3/tsconfig.json diff --git a/Yi.Vue3.x.Vant/tsconfig.node.json b/Yi.App.Vue3/tsconfig.node.json similarity index 100% rename from Yi.Vue3.x.Vant/tsconfig.node.json rename to Yi.App.Vue3/tsconfig.node.json diff --git a/Yi.Vue3.x.Vant/vite.config.ts b/Yi.App.Vue3/vite.config.ts similarity index 100% rename from Yi.Vue3.x.Vant/vite.config.ts rename to Yi.App.Vue3/vite.config.ts diff --git a/Yi.Vue3.x.Vant/vite.config.ts.timestamp-1665906237992.mjs b/Yi.App.Vue3/vite.config.ts.timestamp-1665906237992.mjs similarity index 100% rename from Yi.Vue3.x.Vant/vite.config.ts.timestamp-1665906237992.mjs rename to Yi.App.Vue3/vite.config.ts.timestamp-1665906237992.mjs diff --git a/Yi.Furion.Net6/Yi.Framework.Module/Yi.Framework.Module.xml b/Yi.Furion.Net6/Yi.Framework.Module/Yi.Framework.Module.xml index 2c394b0c..5964d07e 100644 --- a/Yi.Furion.Net6/Yi.Framework.Module/Yi.Framework.Module.xml +++ b/Yi.Furion.Net6/Yi.Framework.Module/Yi.Framework.Module.xml @@ -554,6 +554,17 @@ + + + WebFirst + + + + + 测试 + + + Web To Code diff --git a/Yi.Furion.Net6/Yi.Furion.Application/App/Services/ITrendsService.cs b/Yi.Furion.Net6/Yi.Furion.Application/App/Services/ITrendsService.cs new file mode 100644 index 00000000..b3634c97 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/App/Services/ITrendsService.cs @@ -0,0 +1,13 @@ +using Yi.Framework.Infrastructure.Ddd.Services.Abstract; +using Yi.Furion.Core.App.Dtos.Trends; + +namespace Yi.Furion.Application.App.Services +{ + /// + /// Trends服务抽象 + /// + public interface ITrendsService : ICrudAppService + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Application/App/Services/Impl/TrendsService.cs b/Yi.Furion.Net6/Yi.Furion.Application/App/Services/Impl/TrendsService.cs new file mode 100644 index 00000000..ee78f699 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Application/App/Services/Impl/TrendsService.cs @@ -0,0 +1,34 @@ +using SqlSugar; +using Yi.Framework.Infrastructure.Ddd.Dtos; +using Yi.Framework.Infrastructure.Ddd.Services; +using Yi.Furion.Application.App.Services; +using Yi.Furion.Core.App.Dtos.Trends; +using Yi.Furion.Core.App.Entities; + +namespace Yi.Furion.Application.App.Services.Impl +{ + /// + /// Trends服务实现 + /// + [ApiDescriptionSettings("App")] + public class TrendsService : CrudAppService, + ITrendsService, IDynamicApiController, ITransient + { + /// + /// 多查 + /// + /// + /// + public override async Task> GetListAsync(TrendsGetListInput input) + { + var entity = await MapToEntityAsync(input); + + RefAsync total = 0; + + var entities = await _DbQueryable + .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/MonitorServerService.cs b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MonitorServerService.cs index 5d296305..18184f25 100644 --- a/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MonitorServerService.cs +++ b/Yi.Furion.Net6/Yi.Furion.Application/Rbac/Services/Impl/MonitorServerService.cs @@ -12,16 +12,16 @@ using Microsoft.Extensions.Options; using Yi.Framework.Infrastructure.Extensions; using Yi.Framework.Infrastructure.Helper; -namespace Yi.Furion.Application.Rbac.Services +namespace Yi.Furion.Application.Rbac.Services.Impl { [ApiDescriptionSettings("RBAC")] - public class MonitorServerService: IMonitorServerService,IDynamicApiController, ITransient + public class MonitorServerService : IMonitorServerService, IDynamicApiController, ITransient { private IWebHostEnvironment _hostEnvironment; private IHttpContextAccessor _httpContextAccessor; public MonitorServerService(IWebHostEnvironment hostEnvironment, IHttpContextAccessor httpContextAccessor) { - this._hostEnvironment = hostEnvironment; + _hostEnvironment = hostEnvironment; _httpContextAccessor = httpContextAccessor; } [HttpGet("info")] 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 0444753b..ffba5655 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,23 @@ Yi.Furion.Application + + + Trends服务实现 + + + + + 多查 + + + + + + + Trends服务抽象 + + 论坛模块的领域服务 diff --git a/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsCreateInput.cs b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsCreateInput.cs new file mode 100644 index 00000000..d96891af --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsCreateInput.cs @@ -0,0 +1,14 @@ +namespace Yi.Furion.Core.App.Dtos.Trends +{ + /// + /// Trends输入创建对象 + /// + public class TrendsCreateInput + { + public string Title { get; set; } + public string Content { get; set; } + public string? Remark { get; set; } + public List? Images { get; set; } + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListInput.cs b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListInput.cs new file mode 100644 index 00000000..47f9db3c --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListInput.cs @@ -0,0 +1,12 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos; + +namespace Yi.Furion.Core.App.Dtos.Trends +{ + /// + /// 查询参数 + /// + public class TrendsGetListInput : PagedAllResultRequestDto + { + + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListOutputDto.cs new file mode 100644 index 00000000..c0a5567b --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetListOutputDto.cs @@ -0,0 +1,20 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.App.Dtos.Trends +{ + public class TrendsGetListOutputDto : IEntityDto + { + public long Id { get; set; } + public string Title { get; set; } + public string Content { get; set; } + public long UserId { get; set; } + public bool IsDeleted { get; set; } + public string? Remark { get; set; } + public List? Images { 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/App/Dtos/Trends/TrendsGetOutputDto.cs b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetOutputDto.cs new file mode 100644 index 00000000..79e4e2b0 --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsGetOutputDto.cs @@ -0,0 +1,21 @@ +using Yi.Framework.Infrastructure.Ddd.Dtos.Abstract; + +namespace Yi.Furion.Core.App.Dtos.Trends +{ + public class TrendsGetOutputDto : IEntityDto + { + public long Id { get; set; } + public string Title { get; set; } + public string Content { get; set; } + public long UserId { get; set; } + public bool IsDeleted { get; set; } + public string? Remark { get; set; } + public List? Images { 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/App/Dtos/Trends/TrendsUpdateInput.cs b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsUpdateInput.cs new file mode 100644 index 00000000..ff42e11c --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/App/Dtos/Trends/TrendsUpdateInput.cs @@ -0,0 +1,10 @@ +namespace Yi.Furion.Core.App.Dtos.Trends +{ + public class TrendsUpdateInputVo + { + public string? Title { get; set; } + public string? Content { get; set; } + public string? Remark { get; set; } + public List? Images { get; set; } + } +} diff --git a/Yi.Furion.Net6/Yi.Furion.Core/App/Entities/TrendsEntity.cs b/Yi.Furion.Net6/Yi.Furion.Core/App/Entities/TrendsEntity.cs new file mode 100644 index 00000000..623a9c2b --- /dev/null +++ b/Yi.Furion.Net6/Yi.Furion.Core/App/Entities/TrendsEntity.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using SqlSugar; +using Yi.Framework.Infrastructure.Data.Auditing; +using Yi.Framework.Infrastructure.Data.Entities; +using Yi.Framework.Infrastructure.Ddd.Entities; +using Yi.Framework.Infrastructure.Helper; + +namespace Yi.Furion.Core.App.Entities +{ + /// + /// 动态 + /// + [SugarTable("Trends")] + public class TrendsEntity : AuditedObject, IEntity, ISoftDelete + { + [SugarColumn(IsPrimaryKey = true)] + public long Id { get; set; } + + public string Title { get; set; } + + + [SugarColumn(Length = 99999)] + public string Content { get; set; } + + public bool IsDeleted { get; set; } + + public string? Remark { get; set; } + + [SugarColumn(IsJson = true, Length = 99999)] + public List Images { get; set; } + } + + +} 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 7c05e273..c9d86f36 100644 --- a/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml +++ b/Yi.Furion.Net6/Yi.Furion.Core/Yi.Furion.Core.xml @@ -4,6 +4,21 @@ Yi.Furion.Core + + + Trends输入创建对象 + + + + + 查询参数 + + + + + 动态 + + 常量定义 diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs index 95a4913a..66ea8066 100644 --- a/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs +++ b/Yi.Furion.Net6/Yi.Furion.Web.Core/Startup.cs @@ -1,4 +1,5 @@ using System; +using System.Text; using Furion; using Furion.Schedule; using Furion.TimeCrontab; @@ -38,7 +39,7 @@ public class Startup : AppStartup { // 注册作业,并配置作业触发器 //options.AddJob(Triggers.Period(10000)); - //options.AddJob(Triggers.Period(10000)); + //options.AddJob(Triggers.Period(10000)); options.AddJob(Triggers.Cron("0 0 0,12 ? * ?", CronStringFormat.WithSeconds)); // 表示每天凌晨与12点 }); services.AddFileLogging("log/application-{0:yyyy}-{0:MM}-{0:dd}.log", options => @@ -72,7 +73,19 @@ public class Startup : AppStartup app.UseAuthorization(); app.UseInject(string.Empty); + } + private string ConverStr(string utf8mb3String) + { + // 将 utf8mb3String 转换为 UTF-8mb3 编码的字节数组 + byte[] utf8mb3Bytes = Encoding.UTF8.GetBytes(utf8mb3String); + + // 将 UTF-8mb3 编码的字节数组转换为 UTF-8mb4 编码的字节数组 + byte[] utf8mb4Bytes = Encoding.Convert(Encoding.UTF8, new UTF8Encoding(true), utf8mb3Bytes); + + // 将 UTF-8mb4 编码的字节数组转换为字符串 + string utf8mb4String = Encoding.UTF8.GetString(utf8mb4Bytes); + return utf8mb4String; } } diff --git a/Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db b/Yi.Furion.Net6/Yi.Furion.Web.Entry/yi-sqlsugar-dev.db deleted file mode 100644 index 8f7450951be88ee600afdac0808256bd12e32cdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229376 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