From 0a27cd740313acd01d4313edb5d207e208235c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Tue, 18 Oct 2022 19:27:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=9F=8E=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebFirst/database/sqlite.db | Bin 647168 -> 651264 bytes .../Config/SwaggerDoc.xml | 240 +++++++++--------- .../{ => Article}/ArticleController.cs | 0 .../Controllers/Shop/CategoryController.cs | 28 ++ .../Controllers/Shop/SkuController.cs | 28 ++ .../Controllers/Shop/SpecsController.cs | 28 ++ .../Controllers/Shop/SpecsGroupController.cs | 28 ++ .../Controllers/Shop/SpuController.cs | 28 ++ .../{ => System}/AccountController.cs | 0 .../{ => System}/ConfigController.cs | 0 .../{ => System}/DeptController.cs | 0 .../{ => System}/DictionaryController.cs | 0 .../{ => System}/DictionaryInfoController.cs | 0 .../{ => System}/FileController.cs | 0 .../Controllers/{ => System}/LogController.cs | 0 .../{ => System}/LoginLogController.cs | 0 .../{ => System}/MenuController.cs | 0 .../{ => System}/OnlineController.cs | 0 .../{ => System}/OperationLogController.cs | 0 .../{ => System}/PostController.cs | 0 .../{ => System}/RoleController.cs | 0 .../{ => System}/UserController.cs | 0 .../appsettings.json | 4 +- .../yi-sqlsugar-dev.db | Bin 180224 -> 221184 bytes .../IServiceTemplate/ICategoryService.cs | 9 + .../IServiceTemplate/ISkuService.cs | 9 + .../IServiceTemplate/ISpecsGroupService.cs | 9 + .../IServiceTemplate/ISpecsService.cs | 9 + .../IServiceTemplate/ISpuService.cs | 9 + .../Yi.Framework.Model/CategoryEntity.cs | 20 ++ .../ModelsTemplate/CategoryEntity.cs | 72 ++++++ .../ModelsTemplate/SkuEntity.cs | 78 ++++++ .../ModelsTemplate/SpecsEntity.cs | 72 ++++++ .../ModelsTemplate/SpecsGroupEntity.cs | 72 ++++++ .../ModelsTemplate/SpuEntity.cs | 83 ++++++ .../Yi.Framework.Model/SkuEntity.cs | 35 +++ .../Yi.Framework.Model/SpecsGroupEntity.cs | 16 ++ .../Yi.Framework.Model/SpuEntity.cs | 36 +++ .../ServiceTemplate/CategoryService.cs | 14 + .../ServiceTemplate/SkuService.cs | 14 + .../ServiceTemplate/SpecsGroupService.cs | 14 + .../ServiceTemplate/SpecsService.cs | 14 + .../ServiceTemplate/SpuService.cs | 14 + 43 files changed, 861 insertions(+), 122 deletions(-) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => Article}/ArticleController.cs (100%) create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/CategoryController.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SkuController.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsController.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsGroupController.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpuController.cs rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/AccountController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/ConfigController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/DeptController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/DictionaryController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/DictionaryInfoController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/FileController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/LogController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/LoginLogController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/MenuController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/OnlineController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/OperationLogController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/PostController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/RoleController.cs (100%) rename Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/{ => System}/UserController.cs (100%) create mode 100644 Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICategoryService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISkuService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsGroupService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpuService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/CategoryEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CategoryEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SkuEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsGroupEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpuEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/SkuEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/SpecsGroupEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Model/SpuEntity.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CategoryService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SkuService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsGroupService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsService.cs create mode 100644 Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpuService.cs diff --git a/WebFirst/database/sqlite.db b/WebFirst/database/sqlite.db index 07b8ee1267e555782ba0e1a0c04923399f8b1f0c..df70988a1e8f5a132f8a1432d7a40a20fdd5f300 100644 GIT binary patch delta 2183 zcmZ{leQXnD7{KqY*RAcfJ!Us2A$2QkTu0ZBYrA%v=vFph1%bAA@*$!uw2->8&TWlZ z{9{|3Jp94OaL&VjL_#9Os6fyx2xbyL62m``7=%BjCeRJhNMbNC@gJYw+pjUb+sQ5B^q>J*N`_1=kQA0558_enP`PrdH8(m!3AcBgOD8~MvQ zl~epb{9pV-{#X7kKga*b-{i0J-}1Bk<{GOo>}J+3=PyWy-e}% z@P6|T=DnsrO%tYi<4490?hZG?ar*OyGlm|$d?~c7S?}K^a};f{EbsF9bUIe*%aHs2 z>2qF>*XtBLPO-IKY;E`Z+P$L7Bl=prq7w2l!j_>ZTH0)4-f|$ZZ)oFSIx`>@rR?;f z?9}-EvlH_lTwS;_v4n|OvDMWYKvDpv%NQ!NvK3s%1-Z+7Wq4n zk<@z$+wX7pwYYp@OTZJDI`KdV?T?{hZLOosU6otz&gQF%SMIm*$f)9HeBG^M5-OBPC{!u|Wx>d(AP_6dH=etKkn z`m=kpr{~Ad4-F3{`wz5uJW>w?kmFdy>089Xox2D%)R)PQ{ufJL3oRVgnDfa|^r&wP?QFLQ|2!g8}3|l>$IQA)_Vl z5&4++k{g^HwPJ;erK#@3aBng-lz-(9!}$;A-+Zf-dN(weSx5t;nXSDC@l>j>{Fa|Q zx^VUaF%hv^UT|=f&4!CKVRVJ#5ssIn@}m-t=K_|xU^PcIHKCDMD2v)r$ZCcDvbA^g zU?T5mp|xZuj~3UCI>43BY$IYyV#~&q?JTlrJBv0YMqBVyZ`DSim;0=XaW0t#ToVT(L`XISU(QQcXv!85;9BwEkZX z)kZ_qqczY_2n5x`aphPQQ`r%1g;jYE8m*;DVy|aN5naqbVQt!N~e#-4HhG)m>r@76>~v^pkjX5Mo=*)Y$Yh1+d@z{ z_k0;D=77xvg~{GTP!Sh|2`b`;9)gNEVIx7|+y;Wex%Fiz46vJ^Bs+8wl;nbS1cmKA Iq@rl)U+8_t2><{9 delta 249 zcmZp8px$smeS);06$1mqJRpXF=@WH~8Lc)Zi0L!>PcGM&Wn8d%s($_j1#bTRASLto zfAfFkf6xDt|1tkv{_Fe~`A_p7<=@XIwpE33DnA=HgRn3MNBe$$#_jw0nVbw{fm*n^ zD;fBw@SE^m;Y;BC#M{EFz_W_Sp8F@!zh0lk*}Q0PDm=$^ZZW diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml index 92d0af2b..d92fa4c9 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Config/SwaggerDoc.xml @@ -4,62 +4,6 @@ Yi.Framework.ApiMicroservice - - - 账户管理 - - - - - 重置管理员CC的密码 - - - - - - 没啥说,登录 - - - - - - - 没啥说,注册 - - - - - - - 没啥说,登出 - - - - - - 通过已登录的用户获取用户信息 - - - - - - 获取当前登录用户的前端路由 - - - - - - 自己更新密码 - - - - - - - 验证码 - - - 动态条件分页查询 @@ -206,6 +150,62 @@ + + + 账户管理 + + + + + 重置管理员CC的密码 + + + + + + 没啥说,登录 + + + + + + + 没啥说,注册 + + + + + + + 没啥说,登出 + + + + + + 通过已登录的用户获取用户信息 + + + + + + 获取当前登录用户的前端路由 + + + + + + 自己更新密码 + + + + + + + 验证码 + + + 动态条件分页查询 @@ -441,6 +441,70 @@ + + + 用户管理 + + + + + 动态条件分页查询 + + + + + + + + + 更改用户状态 + + + + + + + + 给多用户设置多角色 + + + + + + + 通过用户id得到用户信息关联部门、岗位、角色 + + + + + + + 更新用户信息 + + + + + + + 更新个人中心信息 + + + + + + + 添加用户 + + + + + + + 重置密码 + + + + 测试控制器 @@ -562,69 +626,5 @@ - - - 用户管理 - - - - - 动态条件分页查询 - - - - - - - - - 更改用户状态 - - - - - - - - 给多用户设置多角色 - - - - - - - 通过用户id得到用户信息关联部门、岗位、角色 - - - - - - - 更新用户信息 - - - - - - - 更新个人中心信息 - - - - - - - 添加用户 - - - - - - - 重置密码 - - - - diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ArticleController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Article/ArticleController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ArticleController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Article/ArticleController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/CategoryController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/CategoryController.cs new file mode 100644 index 00000000..cc47f38f --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/CategoryController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Yi.Framework.Common.Models; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; +using Yi.Framework.WebCore; +using Yi.Framework.WebCore.AttributeExtend; +using Yi.Framework.WebCore.AuthorizationPolicy; + +namespace Yi.Framework.ApiMicroservice.Controllers +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class CategoryController : BaseCrudController + { + private ICategoryService _iCategoryService; + public CategoryController(ILogger logger, ICategoryService iCategoryService) : base(logger, iCategoryService) + { + _iCategoryService = iCategoryService; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SkuController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SkuController.cs new file mode 100644 index 00000000..22a37906 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SkuController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Yi.Framework.Common.Models; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; +using Yi.Framework.WebCore; +using Yi.Framework.WebCore.AttributeExtend; +using Yi.Framework.WebCore.AuthorizationPolicy; + +namespace Yi.Framework.ApiMicroservice.Controllers +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class SkuController : BaseCrudController + { + private ISkuService _iSkuService; + public SkuController(ILogger logger, ISkuService iSkuService) : base(logger, iSkuService) + { + _iSkuService = iSkuService; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsController.cs new file mode 100644 index 00000000..c31c4c91 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Yi.Framework.Common.Models; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; +using Yi.Framework.WebCore; +using Yi.Framework.WebCore.AttributeExtend; +using Yi.Framework.WebCore.AuthorizationPolicy; + +namespace Yi.Framework.ApiMicroservice.Controllers +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class SpecsController : BaseCrudController + { + private ISpecsService _iSpecsService; + public SpecsController(ILogger logger, ISpecsService iSpecsService) : base(logger, iSpecsService) + { + _iSpecsService = iSpecsService; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsGroupController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsGroupController.cs new file mode 100644 index 00000000..8e65d62e --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpecsGroupController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Yi.Framework.Common.Models; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; +using Yi.Framework.WebCore; +using Yi.Framework.WebCore.AttributeExtend; +using Yi.Framework.WebCore.AuthorizationPolicy; + +namespace Yi.Framework.ApiMicroservice.Controllers +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class SpecsGroupController : BaseCrudController + { + private ISpecsGroupService _iSpecsGroupService; + public SpecsGroupController(ILogger logger, ISpecsGroupService iSpecsGroupService) : base(logger, iSpecsGroupService) + { + _iSpecsGroupService = iSpecsGroupService; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpuController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpuController.cs new file mode 100644 index 00000000..e16727d2 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/Shop/SpuController.cs @@ -0,0 +1,28 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Yi.Framework.Common.Models; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; +using Yi.Framework.WebCore; +using Yi.Framework.WebCore.AttributeExtend; +using Yi.Framework.WebCore.AuthorizationPolicy; + +namespace Yi.Framework.ApiMicroservice.Controllers +{ + [ApiController] + [Route("api/[controller]/[action]")] + public class SpuController : BaseCrudController + { + private ISpuService _iSpuService; + public SpuController(ILogger logger, ISpuService iSpuService) : base(logger, iSpuService) + { + _iSpuService = iSpuService; + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/AccountController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/AccountController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/AccountController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ConfigController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/ConfigController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/ConfigController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/ConfigController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/DeptController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/DeptController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/DeptController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/DeptController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/DictionaryController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/DictionaryController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/DictionaryController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/DictionaryController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/DictionaryInfoController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/DictionaryInfoController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/DictionaryInfoController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/DictionaryInfoController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/FileController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/FileController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/FileController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/FileController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/LogController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/LogController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/LogController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/LogController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/LoginLogController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/LoginLogController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/LoginLogController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/LoginLogController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/MenuController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/MenuController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/MenuController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/MenuController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/OnlineController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/OnlineController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/OnlineController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/OnlineController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/OperationLogController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/OperationLogController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/OperationLogController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/OperationLogController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/PostController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/PostController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/PostController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/PostController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/RoleController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/RoleController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/RoleController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/RoleController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/UserController.cs similarity index 100% rename from Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/UserController.cs rename to Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/System/UserController.cs diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json index 07cf237d..0278d8e5 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json @@ -12,8 +12,8 @@ "SqlLog_Enable": false, "Consul_Enabled": false, - "DbCodeFirst_Enabled": false, - "DbSeed_Enabled": false, + "DbCodeFirst_Enabled": true, + "DbSeed_Enabled": true, "Apollo_Enabled": false, "HealthCheck_Enabled": false, "RabbitMQ_Enabled": false, diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db index ce7018e8a79388231b137bfc10def269de7c46f5..326eb9ab35c5c9682b78a1f1e908f533fd4542f7 100644 GIT binary patch literal 221184 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 F{QpCM`MLlA literal 180224 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 G$^Q>*K4_Kz diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICategoryService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICategoryService.cs new file mode 100644 index 00000000..88833ca8 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ICategoryService.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Interface +{ + public partial interface ICategoryService:IBaseService + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISkuService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISkuService.cs new file mode 100644 index 00000000..5adf4d8f --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISkuService.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Interface +{ + public partial interface ISkuService:IBaseService + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsGroupService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsGroupService.cs new file mode 100644 index 00000000..f7bb04e6 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsGroupService.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Interface +{ + public partial interface ISpecsGroupService:IBaseService + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsService.cs new file mode 100644 index 00000000..174689d2 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpecsService.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Interface +{ + public partial interface ISpecsService:IBaseService + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpuService.cs b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpuService.cs new file mode 100644 index 00000000..774a4cab --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Interface/IServiceTemplate/ISpuService.cs @@ -0,0 +1,9 @@ +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Interface +{ + public partial interface ISpuService:IBaseService + { + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/CategoryEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/CategoryEntity.cs new file mode 100644 index 00000000..b5f24ae3 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/CategoryEntity.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// 商品分类表 + /// + public partial class CategoryEntity:IBaseModelEntity + { + [SugarColumn(IsIgnore = true)] + public List Children { get; set; } + + + [Navigate(NavigateType.OneToMany,nameof(SpecsGroupEntity.CategoryId))] + public List SpecsGroups { get; set; } + } +} \ No newline at end of file diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CategoryEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CategoryEntity.cs new file mode 100644 index 00000000..16131d5e --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/CategoryEntity.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// 商品分类表 + /// + [SugarTable("Category")] + public partial class CategoryEntity:IBaseModelEntity + { + public CategoryEntity() + { + this.CreateTime = DateTime.Now; + } + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] + public long Id { get; set; } + /// + /// 父级id + /// + [SugarColumn(ColumnName="ParentId" )] + public long? ParentId { get; set; } + /// + /// 分类名称 + /// + [SugarColumn(ColumnName="CategoryName" )] + public string CategoryName { get; set; } + /// + /// 创建者 + /// + [SugarColumn(ColumnName="CreateUser" )] + public long? CreateUser { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName="CreateTime" )] + public DateTime? CreateTime { get; set; } + /// + /// 修改者 + /// + [SugarColumn(ColumnName="ModifyUser" )] + public long? ModifyUser { get; set; } + /// + /// 修改时间 + /// + [SugarColumn(ColumnName="ModifyTime" )] + public DateTime? ModifyTime { get; set; } + /// + /// 是否删除 + /// + [SugarColumn(ColumnName="IsDeleted" )] + public bool? IsDeleted { get; set; } + /// + /// 租户Id + /// + [SugarColumn(ColumnName="TenantId" )] + public long? TenantId { get; set; } + /// + /// 排序字段 + /// + [SugarColumn(ColumnName="OrderNum" )] + public int? OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName="Remark" )] + public string? Remark { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SkuEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SkuEntity.cs new file mode 100644 index 00000000..76e374eb --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SkuEntity.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// Sku表 + /// + [SugarTable("Sku")] + public partial class SkuEntity:IBaseModelEntity + { + public SkuEntity() + { + this.CreateTime = DateTime.Now; + } + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] + public long Id { get; set; } + /// + /// SpuId + /// + [SugarColumn(ColumnName="SpuId" )] + public long? SpuId { get; set; } + /// + /// 库存 + /// + [SugarColumn(ColumnName="Stock" )] + public int? Stock { get; set; } + /// + /// 价格 + /// + [SugarColumn(ColumnName="Price" )] + public int? Price { get; set; } + + /// + /// 创建者 + /// + [SugarColumn(ColumnName="CreateUser" )] + public long? CreateUser { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName="CreateTime" )] + public DateTime? CreateTime { get; set; } + /// + /// 修改者 + /// + [SugarColumn(ColumnName="ModifyUser" )] + public long? ModifyUser { get; set; } + /// + /// 修改时间 + /// + [SugarColumn(ColumnName="ModifyTime" )] + public DateTime? ModifyTime { get; set; } + /// + /// 是否删除 + /// + [SugarColumn(ColumnName="IsDeleted" )] + public bool? IsDeleted { get; set; } + /// + /// 租户Id + /// + [SugarColumn(ColumnName="TenantId" )] + public long? TenantId { get; set; } + /// + /// 排序字段 + /// + [SugarColumn(ColumnName="OrderNum" )] + public int? OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName="Remark" )] + public string? Remark { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsEntity.cs new file mode 100644 index 00000000..a5b0c161 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsEntity.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// 商品规格表 + /// + [SugarTable("Specs")] + public partial class SpecsEntity:IBaseModelEntity + { + public SpecsEntity() + { + this.CreateTime = DateTime.Now; + } + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] + public long Id { get; set; } + /// + /// 商品规格组id + /// + [SugarColumn(ColumnName="SpecsGroupId" )] + public long? SpecsGroupId { get; set; } + /// + /// 商品规格名 + /// + [SugarColumn(ColumnName="SpecsName" )] + public string SpecsName { get; set; } + /// + /// 创建者 + /// + [SugarColumn(ColumnName="CreateUser" )] + public long? CreateUser { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName="CreateTime" )] + public DateTime? CreateTime { get; set; } + /// + /// 修改者 + /// + [SugarColumn(ColumnName="ModifyUser" )] + public long? ModifyUser { get; set; } + /// + /// 修改时间 + /// + [SugarColumn(ColumnName="ModifyTime" )] + public DateTime? ModifyTime { get; set; } + /// + /// 是否删除 + /// + [SugarColumn(ColumnName="IsDeleted" )] + public bool? IsDeleted { get; set; } + /// + /// 租户Id + /// + [SugarColumn(ColumnName="TenantId" )] + public long? TenantId { get; set; } + /// + /// 排序字段 + /// + [SugarColumn(ColumnName="OrderNum" )] + public int? OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName="Remark" )] + public string? Remark { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsGroupEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsGroupEntity.cs new file mode 100644 index 00000000..8dd9c248 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpecsGroupEntity.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// 商品规格组表 + /// + [SugarTable("SpecsGroup")] + public partial class SpecsGroupEntity:IBaseModelEntity + { + public SpecsGroupEntity() + { + this.CreateTime = DateTime.Now; + } + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] + public long Id { get; set; } + /// + /// 分类id + /// + [SugarColumn(ColumnName="CategoryId" )] + public long? CategoryId { get; set; } + /// + /// 商品规格组名 + /// + [SugarColumn(ColumnName="SpecsGroupName" )] + public string SpecsGroupName { get; set; } + /// + /// 创建者 + /// + [SugarColumn(ColumnName="CreateUser" )] + public long? CreateUser { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName="CreateTime" )] + public DateTime? CreateTime { get; set; } + /// + /// 修改者 + /// + [SugarColumn(ColumnName="ModifyUser" )] + public long? ModifyUser { get; set; } + /// + /// 修改时间 + /// + [SugarColumn(ColumnName="ModifyTime" )] + public DateTime? ModifyTime { get; set; } + /// + /// 是否删除 + /// + [SugarColumn(ColumnName="IsDeleted" )] + public bool? IsDeleted { get; set; } + /// + /// 租户Id + /// + [SugarColumn(ColumnName="TenantId" )] + public long? TenantId { get; set; } + /// + /// 排序字段 + /// + [SugarColumn(ColumnName="OrderNum" )] + public int? OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName="Remark" )] + public string? Remark { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpuEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpuEntity.cs new file mode 100644 index 00000000..f1b2453d --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/SpuEntity.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// Spu表 + /// + [SugarTable("Spu")] + public partial class SpuEntity:IBaseModelEntity + { + public SpuEntity() + { + this.CreateTime = DateTime.Now; + } + [JsonConverter(typeof(ValueToStringConverter))] + [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] + public long Id { get; set; } + /// + /// 商品分类Id + /// + [SugarColumn(ColumnName="CategoryId" )] + public long? CategoryId { get; set; } + /// + /// 商品名称 + /// + [SugarColumn(ColumnName="SpuName" )] + public string SpuName { get; set; } + /// + /// 商品详情 + /// + [SugarColumn(ColumnName="Details" )] + public string Details { get; set; } + /// + /// 商品价格 + /// + [SugarColumn(ColumnName="Price" )] + public string Price { get; set; } + + /// + /// 创建者 + /// + [SugarColumn(ColumnName="CreateUser" )] + public long? CreateUser { get; set; } + /// + /// 创建时间 + /// + [SugarColumn(ColumnName="CreateTime" )] + public DateTime? CreateTime { get; set; } + /// + /// 修改者 + /// + [SugarColumn(ColumnName="ModifyUser" )] + public long? ModifyUser { get; set; } + /// + /// 修改时间 + /// + [SugarColumn(ColumnName="ModifyTime" )] + public DateTime? ModifyTime { get; set; } + /// + /// 是否删除 + /// + [SugarColumn(ColumnName="IsDeleted" )] + public bool? IsDeleted { get; set; } + /// + /// 租户Id + /// + [SugarColumn(ColumnName="TenantId" )] + public long? TenantId { get; set; } + /// + /// 排序字段 + /// + [SugarColumn(ColumnName="OrderNum" )] + public int? OrderNum { get; set; } + /// + /// 描述 + /// + [SugarColumn(ColumnName="Remark" )] + public string? Remark { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/SkuEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/SkuEntity.cs new file mode 100644 index 00000000..b07a6bcf --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/SkuEntity.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// Sku表 + /// + public partial class SkuEntity:IBaseModelEntity + { + /// + /// 规格sku信息 + /// + [SugarColumn(ColumnName = "SpecsSkuInfo", IsJson = true)] + public List SpecsSkuInfo { get; set; } + /// + /// 规格sku完整信息 + /// + [SugarColumn(ColumnName = "SpecsSkuAllInfo", IsJson = true)] + public List SpecsSkuAllInfo { get; set; } + } + + public class SpecsSkuAllInfoModel + { + public string? SpecsGroupName { get; set; } + public string? SpecsName { get; set; } + } + public class SpecsSkuInfoModel + { + public long? SpecsGroupId { get; set; } + public long? SpecsId { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/SpecsGroupEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/SpecsGroupEntity.cs new file mode 100644 index 00000000..96793422 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/SpecsGroupEntity.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + /// + /// 商品规格组表 + /// + public partial class SpecsGroupEntity:IBaseModelEntity + { + [Navigate(NavigateType.OneToMany, nameof(SpecsEntity.SpecsGroupId))] + public List Specses { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Model/SpuEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/SpuEntity.cs new file mode 100644 index 00000000..6f253f55 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Model/SpuEntity.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json.Serialization; +using SqlSugar; +namespace Yi.Framework.Model.Models +{ + + public partial class SpuEntity:IBaseModelEntity + { + /// + /// 规格Spu完整信息 + /// + [SugarColumn(ColumnName = "SpecsAllInfo", IsJson = true)] + public List SpecsSpuAllInfo { get; set; } + /// + /// 规格Spu信息 + /// + [SugarColumn(ColumnName = "SpecsInfo", IsJson = true)] + public List SpecsSpuInfo { get; set; } + + [Navigate(NavigateType.OneToMany, nameof(SkuEntity.SpuId))] + public List Spus { get; set; } + } + + public class SpecsSpuAllInfoModel + { + public string? SpecsGroupName { get; set; } + public List? SpecsNames{ get;set;} + } + public class SpecsSpuInfoModel + { + public long? SpecsGroupId{ get; set; } + public List? SpecsIds { get; set; } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CategoryService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CategoryService.cs new file mode 100644 index 00000000..ea55419a --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/CategoryService.cs @@ -0,0 +1,14 @@ +using SqlSugar; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Service +{ + public partial class CategoryService : BaseService, ICategoryService + { + public CategoryService(IRepository repository) : base(repository) + { + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SkuService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SkuService.cs new file mode 100644 index 00000000..6d86af4c --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SkuService.cs @@ -0,0 +1,14 @@ +using SqlSugar; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Service +{ + public partial class SkuService : BaseService, ISkuService + { + public SkuService(IRepository repository) : base(repository) + { + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsGroupService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsGroupService.cs new file mode 100644 index 00000000..fc7edbe2 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsGroupService.cs @@ -0,0 +1,14 @@ +using SqlSugar; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Service +{ + public partial class SpecsGroupService : BaseService, ISpecsGroupService + { + public SpecsGroupService(IRepository repository) : base(repository) + { + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsService.cs new file mode 100644 index 00000000..0374e217 --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpecsService.cs @@ -0,0 +1,14 @@ +using SqlSugar; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Service +{ + public partial class SpecsService : BaseService, ISpecsService + { + public SpecsService(IRepository repository) : base(repository) + { + } + } +} diff --git a/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpuService.cs b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpuService.cs new file mode 100644 index 00000000..a91bc78d --- /dev/null +++ b/Yi.Framework.Net6/Yi.Framework.Service/ServiceTemplate/SpuService.cs @@ -0,0 +1,14 @@ +using SqlSugar; +using Yi.Framework.Interface; +using Yi.Framework.Model.Models; +using Yi.Framework.Repository; + +namespace Yi.Framework.Service +{ + public partial class SpuService : BaseService, ISpuService + { + public SpuService(IRepository repository) : base(repository) + { + } + } +}