From c883cc52a21eee8c184a757f9564801d42e0b995 Mon Sep 17 00:00:00 2001 From: yanweidong Date: Mon, 10 Aug 2026 11:35:48 +0800 Subject: [PATCH] refactor all service dependency injection --- all/cmd/main/main.go | 12 ++++++- all/etc/{all_dev.yaml => default_dev.yaml} | 2 +- all/internal/config/config.go | 6 ++-- all/internal/config/config_test.go | 2 +- all/internal/service/address.go | 7 ++++ all/internal/service/ads.go | 7 ++++ all/internal/service/cloud.go | 7 ++++ all/internal/service/cms.go | 7 ++++ all/internal/service/feedback.go | 7 ++++ all/internal/service/fts.go | 7 +++- all/internal/service/initial.go | 7 ++++ all/internal/service/logs.go | 6 +++- all/internal/service/mall.go | 7 ++++ all/internal/service/market.go | 7 ++++ all/internal/service/mgt.go | 7 +++- all/internal/service/order.go | 7 ++++ all/internal/service/passport.go | 7 ++++ all/internal/service/sender.go | 7 ++++ all/internal/service/wallet.go | 7 ++++ module/base/ads/service/dependencies.go | 32 +++++++++++++++++++ module/base/ads/service/expose.go | 2 ++ module/base/cloud/service/dependencies.go | 32 +++++++++++++++++++ module/base/cloud/service/expose.go | 2 ++ module/base/cms/service/dependencies.go | 32 +++++++++++++++++++ module/base/cms/service/expose.go | 2 ++ module/base/feedback/service/dependencies.go | 32 +++++++++++++++++++ module/base/feedback/service/expose.go | 2 ++ module/base/fts/service/dependencies.go | 32 +++++++++++++++++++ module/base/fts/service/expose.go | 15 ++++++--- module/base/initial/service/dependencies.go | 32 +++++++++++++++++++ module/base/initial/service/expose.go | 2 ++ module/base/logs/service/dependencies.go | 29 +++++++++++++++++ module/base/logs/service/expose.go | 10 ++++-- module/base/mgt/internal/impl/impl.go | 15 ++++----- module/base/mgt/internal/impl/with.go | 2 ++ .../mgt/internal/logic/application/create.go | 14 ++++---- .../mgt/internal/logic/application/del.go | 4 ++- .../mgt/internal/logic/application/detail.go | 4 ++- .../mgt/internal/logic/application/fetch.go | 4 ++- .../internal/logic/application/fetch_other.go | 8 +++-- .../mgt/internal/logic/application/modify.go | 6 ++-- .../mgt/internal/logic/department/create.go | 8 +++-- .../base/mgt/internal/logic/department/del.go | 8 +++-- .../mgt/internal/logic/department/detail.go | 4 ++- .../mgt/internal/logic/department/fetch.go | 4 ++- .../internal/logic/department/fetch_pmn.go | 8 +++-- .../logic/department/fetch_pmn_tree.go | 8 +++-- .../internal/logic/department/fetch_tree.go | 4 ++- .../mgt/internal/logic/department/list.go | 4 ++- .../mgt/internal/logic/department/modify.go | 12 ++++--- .../mgt/internal/logic/department/set_pmn.go | 14 ++++---- .../mgt/internal/logic/department/user.go | 10 +++--- .../mgt/internal/logic/permission/create.go | 10 +++--- .../base/mgt/internal/logic/permission/del.go | 4 ++- .../mgt/internal/logic/permission/detail.go | 4 ++- .../mgt/internal/logic/permission/fetch.go | 4 ++- .../internal/logic/permission/fetch_other.go | 6 ++-- .../mgt/internal/logic/permission/modify.go | 12 ++++--- .../mgt/internal/logic/permission/sort.go | 4 ++- module/base/mgt/internal/logic/pub/forget.go | 5 +-- module/base/mgt/internal/logic/pub/login.go | 3 +- module/base/mgt/internal/logic/role/create.go | 10 +++--- module/base/mgt/internal/logic/role/del.go | 8 +++-- module/base/mgt/internal/logic/role/detail.go | 4 ++- module/base/mgt/internal/logic/role/fetch.go | 4 ++- .../mgt/internal/logic/role/fetch_other.go | 10 +++--- module/base/mgt/internal/logic/role/modify.go | 6 ++-- module/base/mgt/internal/logic/role/set.go | 8 +++-- module/base/mgt/internal/logic/user/create.go | 16 ++++++---- module/base/mgt/internal/logic/user/del.go | 4 ++- module/base/mgt/internal/logic/user/detail.go | 4 ++- module/base/mgt/internal/logic/user/fetch.go | 4 ++- .../base/mgt/internal/logic/user/fetch_app.go | 4 ++- .../base/mgt/internal/logic/user/fetch_pmn.go | 10 +++--- .../mgt/internal/logic/user/fetch_role.go | 4 ++- module/base/mgt/internal/logic/user/list.go | 4 ++- module/base/mgt/internal/logic/user/modify.go | 6 ++-- .../base/mgt/internal/logic/user/set_pmn.go | 8 +++-- .../base/mgt/internal/logic/user/set_role.go | 10 +++--- module/base/mgt/internal/middleware/rbac.go | 6 ++-- module/base/mgt/internal/models/impl.go | 1 + module/base/mgt/internal/routers/register.go | 1 + module/base/mgt/service/dependencies.go | 32 +++++++++++++++++++ module/base/mgt/service/expose.go | 15 ++++++--- module/base/passport/service/dependencies.go | 32 +++++++++++++++++++ module/base/passport/service/expose.go | 2 ++ module/base/sender/service/dependencies.go | 32 +++++++++++++++++++ module/base/sender/service/expose.go | 2 ++ module/ec/address/internal/impl/with.go | 4 +++ .../address/internal/logic/library/create.go | 6 ++-- .../address/internal/logic/library/delete.go | 4 ++- .../address/internal/logic/library/fetch.go | 4 ++- .../ec/address/internal/logic/library/get.go | 4 ++- .../address/internal/logic/library/modify.go | 6 ++-- module/ec/address/service/dependencies.go | 29 +++++++++++++++++ module/ec/address/service/expose.go | 2 ++ module/ec/mall/service/dependencies.go | 32 +++++++++++++++++++ module/ec/mall/service/expose.go | 2 ++ module/ec/market/internal/impl/with.go | 4 +++ .../market/internal/logic/agency/approve.go | 8 +++-- .../ec/market/internal/logic/agency/create.go | 4 ++- .../ec/market/internal/logic/agency/delete.go | 4 ++- .../ec/market/internal/logic/agency/fetch.go | 4 ++- module/ec/market/internal/logic/agency/get.go | 4 ++- .../ec/market/internal/logic/agency/login.go | 6 ++-- .../ec/market/internal/logic/agency/modify.go | 4 ++- .../market/internal/logic/agency/pending.go | 4 ++- .../internal/logic/agency/set_password.go | 6 ++-- .../internal/logic/data/member_details.go | 3 +- .../internal/logic/data/member_fetch.go | 3 +- .../internal/logic/data/order_details.go | 3 +- .../market/internal/logic/data/order_fetch.go | 3 +- .../ec/market/internal/logic/data/overview.go | 3 +- .../ec/market/internal/logic/supply/create.go | 4 ++- .../ec/market/internal/logic/supply/delete.go | 4 ++- .../ec/market/internal/logic/supply/fetch.go | 4 ++- module/ec/market/internal/logic/supply/get.go | 4 ++- .../ec/market/internal/logic/supply/modify.go | 4 ++- module/ec/market/service/dependencies.go | 29 +++++++++++++++++ module/ec/market/service/expose.go | 2 ++ module/ec/order/internal/impl/with.go | 4 +++ module/ec/order/internal/logic/cart/create.go | 8 +++-- module/ec/order/internal/logic/cart/delete.go | 4 ++- module/ec/order/internal/logic/cart/fetch.go | 6 ++-- module/ec/order/internal/logic/cart/modify.go | 7 ++-- module/ec/order/internal/logic/common/get.go | 5 +-- .../ec/order/internal/logic/common/reflect.go | 1 + .../order/internal/logic/coupon/by_status.go | 4 ++- .../order/internal/logic/mgt/order_approve.go | 12 ++++--- .../order/internal/logic/mgt/order_cancel.go | 4 ++- .../order/internal/logic/mgt/order_create.go | 10 +++--- .../ec/order/internal/logic/mgt/order_get.go | 4 ++- .../internal/logic/mgt/order_list_by_store.go | 4 ++- .../order/internal/logic/mgt/order_modify.go | 1 + .../internal/logic/mgt/order_returnable.go | 6 ++-- .../ec/order/internal/logic/summary/cancel.go | 8 +++-- .../ec/order/internal/logic/summary/check.go | 4 ++- .../order/internal/logic/summary/confirm.go | 12 ++++--- module/ec/order/internal/logic/summary/get.go | 1 + .../ec/order/internal/logic/summary/list.go | 4 ++- .../logic/summary/quick_create_by_product.go | 18 ++++++----- .../internal/logic/summary/simulate_pay.go | 4 ++- .../logic/summary/simulate_receiving.go | 4 ++- .../logic/summary/simulate_shipments.go | 4 ++- .../ec/order/internal/logic/summary/submit.go | 14 ++++---- module/ec/order/service/dependencies.go | 29 +++++++++++++++++ module/ec/order/service/expose.go | 2 ++ module/finance/wallet/service/dependencies.go | 32 +++++++++++++++++++ module/finance/wallet/service/expose.go | 2 ++ module/social/feed/internal/impl/impl.go | 2 +- module/social/group/internal/impl/impl.go | 2 +- module/social/relation/internal/impl/impl.go | 2 +- 152 files changed, 1030 insertions(+), 223 deletions(-) rename all/etc/{all_dev.yaml => default_dev.yaml} (99%) create mode 100644 module/base/ads/service/dependencies.go create mode 100644 module/base/cloud/service/dependencies.go create mode 100644 module/base/cms/service/dependencies.go create mode 100644 module/base/feedback/service/dependencies.go create mode 100644 module/base/fts/service/dependencies.go create mode 100644 module/base/initial/service/dependencies.go create mode 100644 module/base/logs/service/dependencies.go create mode 100644 module/base/mgt/service/dependencies.go create mode 100644 module/base/passport/service/dependencies.go create mode 100644 module/base/sender/service/dependencies.go create mode 100644 module/ec/address/service/dependencies.go create mode 100644 module/ec/mall/service/dependencies.go create mode 100644 module/ec/market/service/dependencies.go create mode 100644 module/ec/order/service/dependencies.go create mode 100644 module/finance/wallet/service/dependencies.go diff --git a/all/cmd/main/main.go b/all/cmd/main/main.go index 952d017..30f9102 100644 --- a/all/cmd/main/main.go +++ b/all/cmd/main/main.go @@ -2,9 +2,11 @@ package main import ( "context" + "flag" "net/http" "os" "os/signal" + "strings" "syscall" "time" @@ -14,8 +16,16 @@ import ( "bsm/full/all/internal/service" ) +var ServiceKey = "default" + func main() { - config.New() + workspace := flag.String("workspace", ServiceKey, "workspace used to select etc/{workspace}_{runtime}.yaml") + flag.Parse() + if value := strings.TrimSpace(*workspace); value != "" { + ServiceKey = value + } + + config.New(ServiceKey) impl.NewImpl() srv := allserver.New() diff --git a/all/etc/all_dev.yaml b/all/etc/default_dev.yaml similarity index 99% rename from all/etc/all_dev.yaml rename to all/etc/default_dev.yaml index 5384cfa..9489b32 100644 --- a/all/etc/all_dev.yaml +++ b/all/etc/default_dev.yaml @@ -1,4 +1,4 @@ -Service: all +Service: default BindIP: 0.0.0.0 Port: 12000 diff --git a/all/internal/config/config.go b/all/internal/config/config.go index 46e7799..d61cf8e 100644 --- a/all/internal/config/config.go +++ b/all/internal/config/config.go @@ -13,8 +13,6 @@ import ( "git.apinb.com/bsm-sdk/core/conf" ) -const ServiceKey = "all" - type SrvConfig struct { conf.Base `yaml:",inline"` Databases *conf.DBConf `yaml:"Databases"` @@ -32,8 +30,8 @@ type SrvConfig struct { var Spec SrvConfig -func New() { - conf.New(ServiceKey, &Spec) +func New(serviceKey string) { + conf.New(serviceKey, &Spec) Spec.Port = conf.CheckPort(Spec.Port) Spec.BindIP = conf.CheckIP(Spec.BindIP) Spec.Addr = net.JoinHostPort(Spec.BindIP, Spec.Port) diff --git a/all/internal/config/config_test.go b/all/internal/config/config_test.go index a5a3bad..3cbc7f9 100644 --- a/all/internal/config/config_test.go +++ b/all/internal/config/config_test.go @@ -9,7 +9,7 @@ import ( ) func TestAllDevConfig(t *testing.T) { - data, err := os.ReadFile(filepath.Join("..", "..", "etc", "all_dev.yaml")) + data, err := os.ReadFile(filepath.Join("..", "..", "etc", "default_dev.yaml")) if err != nil { t.Fatal(err) } diff --git a/all/internal/service/address.go b/all/internal/service/address.go index 4b65005..41dae40 100644 --- a/all/internal/service/address.go +++ b/all/internal/service/address.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/ec/address/service" ) func exposeAddress(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/ads.go b/all/internal/service/ads.go index de6fe98..1b0772b 100644 --- a/all/internal/service/ads.go +++ b/all/internal/service/ads.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/ads/service" ) func exposeAds(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/cloud.go b/all/internal/service/cloud.go index 7f55853..b569202 100644 --- a/all/internal/service/cloud.go +++ b/all/internal/service/cloud.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/cloud/service" ) func exposeCloud(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/cms.go b/all/internal/service/cms.go index 00b7937..39d6814 100644 --- a/all/internal/service/cms.go +++ b/all/internal/service/cms.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/cms/service" ) func exposeCMS(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/feedback.go b/all/internal/service/feedback.go index 8898249..b17a560 100644 --- a/all/internal/service/feedback.go +++ b/all/internal/service/feedback.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/feedback/service" ) func exposeFeedback(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/fts.go b/all/internal/service/fts.go index 3b78479..bf753cb 100644 --- a/all/internal/service/fts.go +++ b/all/internal/service/fts.go @@ -2,10 +2,15 @@ package service import ( "bsm/full/all/internal/config" + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/fts/service" ) func exposeFTS(srv *server.Server) error { - return moduleService.Expose(srv.HTTP, config.Spec.Fts) + return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{Redis: impl.RedisService, Etcd: impl.EtcdService, DB: impl.DBService, Cache: impl.MemoryService}, + Engine: srv.HTTP, + Config: config.Spec.Fts, + }) } diff --git a/all/internal/service/initial.go b/all/internal/service/initial.go index 86a2302..cc2ea0d 100644 --- a/all/internal/service/initial.go +++ b/all/internal/service/initial.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/initial/service" ) func exposeInitial(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/logs.go b/all/internal/service/logs.go index 1a7a2d7..b143681 100644 --- a/all/internal/service/logs.go +++ b/all/internal/service/logs.go @@ -1,10 +1,14 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/logs/service" ) func exposeLogs(srv *server.Server) error { - return moduleService.Expose(srv.HTTP) + return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{Redis: impl.RedisService, Etcd: impl.EtcdService, DB: impl.DBService, Cache: impl.MemoryService}, + Engine: srv.HTTP, + }) } diff --git a/all/internal/service/mall.go b/all/internal/service/mall.go index f2b2569..52be5ec 100644 --- a/all/internal/service/mall.go +++ b/all/internal/service/mall.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/ec/mall/service" ) func exposeMall(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/market.go b/all/internal/service/market.go index bfa77bf..1435a73 100644 --- a/all/internal/service/market.go +++ b/all/internal/service/market.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/ec/market/service" ) func exposeMarket(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/mgt.go b/all/internal/service/mgt.go index 0550fa2..92564cd 100644 --- a/all/internal/service/mgt.go +++ b/all/internal/service/mgt.go @@ -2,10 +2,15 @@ package service import ( "bsm/full/all/internal/config" + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/mgt/service" ) func exposeMgt(srv *server.Server) error { - return moduleService.Expose(srv.HTTP, config.Spec.Mgt) + return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{Redis: impl.RedisService, Etcd: impl.EtcdService, DB: impl.DBService, Cache: impl.MemoryService}, + Engine: srv.HTTP, + Config: config.Spec.Mgt, + }) } diff --git a/all/internal/service/order.go b/all/internal/service/order.go index 5c3a133..41adcf5 100644 --- a/all/internal/service/order.go +++ b/all/internal/service/order.go @@ -1,12 +1,19 @@ package service import ( + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/ec/order/service" ) func exposeOrder(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, }) diff --git a/all/internal/service/passport.go b/all/internal/service/passport.go index 085cdb2..8690812 100644 --- a/all/internal/service/passport.go +++ b/all/internal/service/passport.go @@ -2,12 +2,19 @@ package service import ( "bsm/full/all/internal/config" + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/passport/service" ) func exposePassport(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, Config: config.Spec.Passport, diff --git a/all/internal/service/sender.go b/all/internal/service/sender.go index fe4e961..b592867 100644 --- a/all/internal/service/sender.go +++ b/all/internal/service/sender.go @@ -2,12 +2,19 @@ package service import ( "bsm/full/all/internal/config" + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/base/sender/service" ) func exposeSender(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, Config: config.Spec.Sender, diff --git a/all/internal/service/wallet.go b/all/internal/service/wallet.go index 885907a..e18d8c4 100644 --- a/all/internal/service/wallet.go +++ b/all/internal/service/wallet.go @@ -2,12 +2,19 @@ package service import ( "bsm/full/all/internal/config" + "bsm/full/all/internal/impl" "bsm/full/all/internal/server" moduleService "bsm/full/module/finance/wallet/service" ) func exposeWallet(srv *server.Server) error { return moduleService.Expose(moduleService.ExposeOptions{ + Dependencies: moduleService.Dependencies{ + Redis: impl.RedisService, + Etcd: impl.EtcdService, + DB: impl.DBService, + Cache: impl.MemoryService, + }, GRPC: srv.GRPC, Gateway: srv.Gateway, Config: config.Spec.Wallet, diff --git a/module/base/ads/service/dependencies.go b/module/base/ads/service/dependencies.go new file mode 100644 index 0000000..e1f02f3 --- /dev/null +++ b/module/base/ads/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/ads/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/ads/service/expose.go b/module/base/ads/service/expose.go index 5ae5935..e98bcec 100644 --- a/module/base/ads/service/expose.go +++ b/module/base/ads/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/base/cloud/service/dependencies.go b/module/base/cloud/service/dependencies.go new file mode 100644 index 0000000..3ba39be --- /dev/null +++ b/module/base/cloud/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/cloud/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/cloud/service/expose.go b/module/base/cloud/service/expose.go index effe3ab..78acfaf 100644 --- a/module/base/cloud/service/expose.go +++ b/module/base/cloud/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/base/cms/service/dependencies.go b/module/base/cms/service/dependencies.go new file mode 100644 index 0000000..0def641 --- /dev/null +++ b/module/base/cms/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/cms/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemoryService = deps.Cache + } +} diff --git a/module/base/cms/service/expose.go b/module/base/cms/service/expose.go index 62df517..f965e31 100644 --- a/module/base/cms/service/expose.go +++ b/module/base/cms/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/base/feedback/service/dependencies.go b/module/base/feedback/service/dependencies.go new file mode 100644 index 0000000..288590c --- /dev/null +++ b/module/base/feedback/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/feedback/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/feedback/service/expose.go b/module/base/feedback/service/expose.go index d13b09a..96e92a1 100644 --- a/module/base/feedback/service/expose.go +++ b/module/base/feedback/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/base/fts/service/dependencies.go b/module/base/fts/service/dependencies.go new file mode 100644 index 0000000..20d93d6 --- /dev/null +++ b/module/base/fts/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/fts/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/fts/service/expose.go b/module/base/fts/service/expose.go index 6d86551..96ec504 100644 --- a/module/base/fts/service/expose.go +++ b/module/base/fts/service/expose.go @@ -8,10 +8,17 @@ import ( type Config = config.SrvConfig -func Expose(engine *gin.Engine, cfg *Config) error { - if cfg != nil { - config.Spec = *cfg +type ExposeOptions struct { + Dependencies + Engine *gin.Engine + Config *Config +} + +func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) + if options.Config != nil { + config.Spec = *options.Config } - routers.Register("fts", engine) + routers.Register("fts", options.Engine) return nil } diff --git a/module/base/initial/service/dependencies.go b/module/base/initial/service/dependencies.go new file mode 100644 index 0000000..69da6cf --- /dev/null +++ b/module/base/initial/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/initial/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/initial/service/expose.go b/module/base/initial/service/expose.go index 07e63c6..a6ac6b0 100644 --- a/module/base/initial/service/expose.go +++ b/module/base/initial/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/base/logs/service/dependencies.go b/module/base/logs/service/dependencies.go new file mode 100644 index 0000000..de3cd7f --- /dev/null +++ b/module/base/logs/service/dependencies.go @@ -0,0 +1,29 @@ +package service + +import ( + "bsm/full/module/base/logs/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } +} diff --git a/module/base/logs/service/expose.go b/module/base/logs/service/expose.go index 560d989..3450553 100644 --- a/module/base/logs/service/expose.go +++ b/module/base/logs/service/expose.go @@ -5,7 +5,13 @@ import ( "github.com/gin-gonic/gin" ) -func Expose(engine *gin.Engine) error { - routers.Register("logs", engine) +type ExposeOptions struct { + Dependencies + Engine *gin.Engine +} + +func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) + routers.Register("logs", options.Engine) return nil } diff --git a/module/base/mgt/internal/impl/impl.go b/module/base/mgt/internal/impl/impl.go index fd61a17..028a70d 100644 --- a/module/base/mgt/internal/impl/impl.go +++ b/module/base/mgt/internal/impl/impl.go @@ -2,26 +2,25 @@ package impl import ( "bsm/full/module/base/mgt/internal/config" + "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/with" cache "github.com/patrickmn/go-cache" clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" ) var ( - RedisService *redis.RedisClient // Redis 客户端服务 - EtcdService *clientv3.Client // Etcd 客户端服务 - MemorySerice *cache.Cache // 内存缓存服务 + RedisService *redis.RedisClient + EtcdService *clientv3.Client + MemorySerice *cache.Cache + DBService *gorm.DB ) -// NewImpl 初始化各类服务实例 +// NewImpl initializes infrastructure for standalone execution. func NewImpl() { - // 初始化内存缓存 MemorySerice = with.Memory(nil) - // 初始化 Redis 缓存 RedisService = with.RedisCache(config.Spec.Cache) - // 初始化数据库服务 WithDatabases(config.Spec.Databases, nil) - // 初始化 Etcd 服务 EtcdService = with.Etcd(config.Spec.Etcd) } diff --git a/module/base/mgt/internal/impl/with.go b/module/base/mgt/internal/impl/with.go index 93b5ba4..211d044 100644 --- a/module/base/mgt/internal/impl/with.go +++ b/module/base/mgt/internal/impl/with.go @@ -2,6 +2,7 @@ package impl import ( "bsm/full/module/base/mgt/internal/models" + "git.apinb.com/bsm-sdk/core/conf" "git.apinb.com/bsm-sdk/core/printer" coreTypes "git.apinb.com/bsm-sdk/core/types" @@ -21,5 +22,6 @@ func WithDatabases(cfg *conf.DBConf, opts *coreTypes.SqlOptions) { printer.Error("Database Init Failed !") panic(err) } + DBService = models.DBService return } diff --git a/module/base/mgt/internal/logic/application/create.go b/module/base/mgt/internal/logic/application/create.go index 2f64f2d..efafe86 100644 --- a/module/base/mgt/internal/logic/application/create.go +++ b/module/base/mgt/internal/logic/application/create.go @@ -3,9 +3,11 @@ package application import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -35,7 +37,7 @@ func Create(c *gin.Context) { } // 判断应用是否已经存在(包括软删除的记录) - db := models.DBService.Model(&models.MgtApplication{}) + db := impl.DBService.Model(&models.MgtApplication{}) if err = db.Where("title = ? or workspace = ?", request.Title, request.Workspace).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) @@ -45,9 +47,9 @@ func Create(c *gin.Context) { var deletedData models.MgtApplication // 检查 workspace 是否被软删除(workspace 有唯一索引) if request.Workspace != "" { - if err = models.DBService.Unscoped().Where("workspace = ?", request.Workspace).First(&deletedData).Error; err == nil { + if err = impl.DBService.Unscoped().Where("workspace = ?", request.Workspace).First(&deletedData).Error; err == nil { // 存在软删除的记录,先物理删除它,以便可以重新创建 - if err = models.DBService.Unscoped().Delete(&deletedData).Error; err != nil { + if err = impl.DBService.Unscoped().Delete(&deletedData).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -56,9 +58,9 @@ func Create(c *gin.Context) { } // 检查 title 是否被软删除(如果 title 和 workspace 不同) if request.Title != "" && request.Title != request.Workspace { - if err = models.DBService.Unscoped().Where("title = ?", request.Title).First(&deletedData).Error; err == nil { + if err = impl.DBService.Unscoped().Where("title = ?", request.Title).First(&deletedData).Error; err == nil { // 存在软删除的记录,先物理删除它 - if err = models.DBService.Unscoped().Delete(&deletedData).Error; err != nil { + if err = impl.DBService.Unscoped().Delete(&deletedData).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -79,7 +81,7 @@ func Create(c *gin.Context) { Workspace: request.Workspace, Description: request.Description, } - if err = models.DBService.Model(&models.MgtApplication{}).Create(&dataModel).Error; err != nil { + if err = impl.DBService.Model(&models.MgtApplication{}).Create(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/application/del.go b/module/base/mgt/internal/logic/application/del.go index aac890f..acaf56a 100644 --- a/module/base/mgt/internal/logic/application/del.go +++ b/module/base/mgt/internal/logic/application/del.go @@ -1,9 +1,11 @@ package application import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -36,7 +38,7 @@ func Del(c *gin.Context) { appId := request.ID var dptIds []uint - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Model(&models.MgtDepartment{}).Where("app_id = ?", appId).Pluck("id", &dptIds).Error; err != nil { printer.Error("查询应用部门异常: %v", err) return err diff --git a/module/base/mgt/internal/logic/application/detail.go b/module/base/mgt/internal/logic/application/detail.go index 2ea419b..088ae2a 100644 --- a/module/base/mgt/internal/logic/application/detail.go +++ b/module/base/mgt/internal/logic/application/detail.go @@ -3,9 +3,11 @@ package application import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func Detail(c *gin.Context) { return } - if err = models.DBService.Model(&models.MgtApplication{}).Where("id = ?", request.ID).First(&data).Error; err != nil { + if err = impl.DBService.Model(&models.MgtApplication{}).Where("id = ?", request.ID).First(&data).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return diff --git a/module/base/mgt/internal/logic/application/fetch.go b/module/base/mgt/internal/logic/application/fetch.go index e664531..8b4e39b 100644 --- a/module/base/mgt/internal/logic/application/fetch.go +++ b/module/base/mgt/internal/logic/application/fetch.go @@ -1,10 +1,12 @@ package application import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "github.com/gin-gonic/gin" @@ -15,7 +17,7 @@ func Fetch(c *gin.Context) { request = types.ApplicationRequest{} count int64 = 0 data = make([]types.ApplicationRsp, 0) - db = models.DBService.Model(&models.MgtApplication{}) + db = impl.DBService.Model(&models.MgtApplication{}) ) // 解析JSON请求 diff --git a/module/base/mgt/internal/logic/application/fetch_other.go b/module/base/mgt/internal/logic/application/fetch_other.go index 37a4094..4f1ee12 100644 --- a/module/base/mgt/internal/logic/application/fetch_other.go +++ b/module/base/mgt/internal/logic/application/fetch_other.go @@ -1,10 +1,12 @@ package application import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -17,7 +19,7 @@ func UserFetch(c *gin.Context) { var ( request = types.FetchBase{} data = models.MgtApplication{} - db = models.DBService.Model(&models.MgtApplication{}).Select("id", "identity", "title") + db = impl.DBService.Model(&models.MgtApplication{}).Select("id", "identity", "title") count int64 = 0 ) err := c.ShouldBindJSON(&request) @@ -56,7 +58,7 @@ func RoleFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtApplication, 0) - db = models.DBService.Model(&models.MgtApplication{}).Select("id", "identity", "title") + db = impl.DBService.Model(&models.MgtApplication{}).Select("id", "identity", "title") count int64 = 0 ) err := c.ShouldBindJSON(&request) @@ -97,7 +99,7 @@ func PermissionFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtApplication, 0) - db = models.DBService.Model(&models.MgtApplication{}).Select("id", "identity", "title") + db = impl.DBService.Model(&models.MgtApplication{}).Select("id", "identity", "title") count int64 = 0 ) err := c.ShouldBindJSON(&request) diff --git a/module/base/mgt/internal/logic/application/modify.go b/module/base/mgt/internal/logic/application/modify.go index e985c97..f797053 100644 --- a/module/base/mgt/internal/logic/application/modify.go +++ b/module/base/mgt/internal/logic/application/modify.go @@ -3,9 +3,11 @@ package application import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -40,7 +42,7 @@ func Midify(c *gin.Context) { // 检查workspace是否已被其他应用使用 if request.Workspace != "" { - if err := models.DBService.Model(&models.MgtApplication{}).Where("workspace=? and id<>?", request.Workspace, request.ID).First(&data).Error; err != nil { + if err := impl.DBService.Model(&models.MgtApplication{}).Where("workspace=? and id<>?", request.Workspace, request.ID).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) return @@ -61,7 +63,7 @@ func Midify(c *gin.Context) { if request.Status != 0 { dataModel.Status = request.Status } - if err := models.DBService.Model(&models.MgtApplication{}).Where("id = ?", request.ID).Updates(&dataModel).Error; err != nil { + if err := impl.DBService.Model(&models.MgtApplication{}).Where("id = ?", request.ID).Updates(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/department/create.go b/module/base/mgt/internal/logic/department/create.go index d518c37..9956daf 100644 --- a/module/base/mgt/internal/logic/department/create.go +++ b/module/base/mgt/internal/logic/department/create.go @@ -3,9 +3,11 @@ package department import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -55,7 +57,7 @@ func Create(c *gin.Context) { } // 同一应用下部门名称唯一 - if err = models.DBService.Model(&models.MgtDepartment{}). + if err = impl.DBService.Model(&models.MgtDepartment{}). Where("app_id = ? and name = ?", appId, request.Name).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) @@ -70,7 +72,7 @@ func Create(c *gin.Context) { // 若有父部门,校验父部门属于同一应用 if request.ParentID > 0 { var parent models.MgtDepartment - if err = models.DBService.Select("id", "app_id").Where("id = ?", request.ParentID).First(&parent).Error; err != nil { + if err = impl.DBService.Select("id", "app_id").Where("id = ?", request.ParentID).First(&parent).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -93,7 +95,7 @@ func Create(c *gin.Context) { LeaderID: request.LeaderID, Name: request.Name, } - if err = models.DBService.Create(&dataModel).Error; err != nil { + if err = impl.DBService.Create(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/department/del.go b/module/base/mgt/internal/logic/department/del.go index 0636823..a6468bd 100644 --- a/module/base/mgt/internal/logic/department/del.go +++ b/module/base/mgt/internal/logic/department/del.go @@ -3,9 +3,11 @@ package department import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "github.com/gin-gonic/gin" @@ -58,7 +60,7 @@ func Del(c *gin.Context) { } var dept models.MgtDepartment - if err := models.DBService.Select("id", "app_id").Where("id = ?", request.ID).First(&dept).Error; err != nil { + if err := impl.DBService.Select("id", "app_id").Where("id = ?", request.ID).First(&dept).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -67,13 +69,13 @@ func Del(c *gin.Context) { return } - allDeptIds, err := getDepartmentIdsRecursive(models.DBService, dept.AppID, request.ID) + allDeptIds, err := getDepartmentIdsRecursive(impl.DBService, dept.AppID, request.ID) if err != nil { infra.Response.Error(c, errcode.ErrDB) return } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Where("dpt_id in ?", allDeptIds).Delete(&models.MgtLinkUserDpt{}).Error; err != nil { return err } diff --git a/module/base/mgt/internal/logic/department/detail.go b/module/base/mgt/internal/logic/department/detail.go index c4b6d3a..ba4d922 100644 --- a/module/base/mgt/internal/logic/department/detail.go +++ b/module/base/mgt/internal/logic/department/detail.go @@ -3,9 +3,11 @@ package department import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func Detail(c *gin.Context) { return } - if err = models.DBService.Model(&models.MgtDepartment{}). + if err = impl.DBService.Model(&models.MgtDepartment{}). Select("id", "identity", "name", "app_id", "parent_id", "leader_id").Preload("Leader", func(db *gorm.DB) *gorm.DB { return db.Select("id", "identity", "name") }).Where("id = ?", request.ID).First(&data).Error; err != nil { diff --git a/module/base/mgt/internal/logic/department/fetch.go b/module/base/mgt/internal/logic/department/fetch.go index e59b179..9a0075c 100644 --- a/module/base/mgt/internal/logic/department/fetch.go +++ b/module/base/mgt/internal/logic/department/fetch.go @@ -1,10 +1,12 @@ package department import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -16,7 +18,7 @@ func Fetch(c *gin.Context) { request = types.DptReq{} count int64 = 0 data = make([]models.MgtDepartment, 0) - db = models.DBService.Model(&models.MgtDepartment{}).Select("id", "identity", "name", "app_id", "parent_id") + db = impl.DBService.Model(&models.MgtDepartment{}).Select("id", "identity", "name", "app_id", "parent_id") ) err := c.ShouldBindJSON(&request) diff --git a/module/base/mgt/internal/logic/department/fetch_pmn.go b/module/base/mgt/internal/logic/department/fetch_pmn.go index d76f0ff..cdb8aac 100644 --- a/module/base/mgt/internal/logic/department/fetch_pmn.go +++ b/module/base/mgt/internal/logic/department/fetch_pmn.go @@ -1,9 +1,11 @@ package department import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -15,7 +17,7 @@ func PermissionsFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtDepartment, 0) - db = models.DBService.Model(&models.MgtDepartment{}) + db = impl.DBService.Model(&models.MgtDepartment{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) @@ -55,7 +57,7 @@ func PermissionsFetch(c *gin.Context) { deptIds = append(deptIds, d.ID) } var links []models.MgtLinkDptPmn - if err := models.DBService.Where("app_id = ? and dpt_id in ?", appId, deptIds).Find(&links).Error; err != nil { + if err := impl.DBService.Where("app_id = ? and dpt_id in ?", appId, deptIds).Find(&links).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -71,7 +73,7 @@ func PermissionsFetch(c *gin.Context) { } var perms []models.MgtPermission if len(pmnIds) > 0 { - if err := models.DBService.Select("id", "identity", "title", "title_en", "sort_key", "parent_id"). + if err := impl.DBService.Select("id", "identity", "title", "title_en", "sort_key", "parent_id"). Where("id in ?", pmnIds).Find(&perms).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return diff --git a/module/base/mgt/internal/logic/department/fetch_pmn_tree.go b/module/base/mgt/internal/logic/department/fetch_pmn_tree.go index 5067d69..5f6fb29 100644 --- a/module/base/mgt/internal/logic/department/fetch_pmn_tree.go +++ b/module/base/mgt/internal/logic/department/fetch_pmn_tree.go @@ -1,9 +1,11 @@ package department import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -15,7 +17,7 @@ func PermissionsFetchTree(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtDepartment, 0) - db = models.DBService.Model(&models.MgtDepartment{}) + db = impl.DBService.Model(&models.MgtDepartment{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) @@ -55,7 +57,7 @@ func PermissionsFetchTree(c *gin.Context) { deptIds = append(deptIds, d.ID) } var links []models.MgtLinkDptPmn - if err := models.DBService.Where("app_id = ? and dpt_id in ?", appId, deptIds).Find(&links).Error; err != nil { + if err := impl.DBService.Where("app_id = ? and dpt_id in ?", appId, deptIds).Find(&links).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -71,7 +73,7 @@ func PermissionsFetchTree(c *gin.Context) { } var perms []models.MgtPermission if len(pmnIds) > 0 { - if err := models.DBService.Select("id", "identity", "title", "title_en", "sort_key", "parent_id", "menu_path", "code", "component", "is_web_page", "is_new_tab", "web_url"). + if err := impl.DBService.Select("id", "identity", "title", "title_en", "sort_key", "parent_id", "menu_path", "code", "component", "is_web_page", "is_new_tab", "web_url"). Where("id in ?", pmnIds).Order("sort_key").Find(&perms).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return diff --git a/module/base/mgt/internal/logic/department/fetch_tree.go b/module/base/mgt/internal/logic/department/fetch_tree.go index 75043f8..0662114 100644 --- a/module/base/mgt/internal/logic/department/fetch_tree.go +++ b/module/base/mgt/internal/logic/department/fetch_tree.go @@ -1,9 +1,11 @@ package department import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -37,7 +39,7 @@ func FetchTree(c *gin.Context) { return } - if err := models.DBService.Model(&models.MgtDepartment{}). + if err := impl.DBService.Model(&models.MgtDepartment{}). Where("app_id = ?", appId). Select("id", "identity", "name", "app_id", "parent_id"). Order("parent_id asc").Find(&data).Error; err != nil { diff --git a/module/base/mgt/internal/logic/department/list.go b/module/base/mgt/internal/logic/department/list.go index 09e7d42..0e4d502 100644 --- a/module/base/mgt/internal/logic/department/list.go +++ b/module/base/mgt/internal/logic/department/list.go @@ -1,9 +1,11 @@ package department import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func List(c *gin.Context) { return } - db := models.DBService.Model(&models.MgtDepartment{}). + db := impl.DBService.Model(&models.MgtDepartment{}). Where("app_id = ?", appId). Select("id", "identity", "name", "app_id", "parent_id") if request.Keyword != "" { diff --git a/module/base/mgt/internal/logic/department/modify.go b/module/base/mgt/internal/logic/department/modify.go index 357c2a3..f305fb5 100644 --- a/module/base/mgt/internal/logic/department/modify.go +++ b/module/base/mgt/internal/logic/department/modify.go @@ -3,9 +3,11 @@ package department import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -36,7 +38,7 @@ func Modify(c *gin.Context) { return } - if err = models.DBService.Select("id", "app_id", "identity").Where("id = ?", request.ID).First(&data).Error; err != nil { + if err = impl.DBService.Select("id", "app_id", "identity").Where("id = ?", request.ID).First(&data).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -52,7 +54,7 @@ func Modify(c *gin.Context) { infra.Response.Error(c, errcode.ErrInvalidArgument) return } - descendantIds, err := getDepartmentIdsRecursive(models.DBService, appId, request.ID) + descendantIds, err := getDepartmentIdsRecursive(impl.DBService, appId, request.ID) if err != nil { infra.Response.Error(c, errcode.ErrDB) return @@ -68,7 +70,7 @@ func Modify(c *gin.Context) { if request.Name != "" { var exist models.MgtDepartment - if err = models.DBService.Model(&models.MgtDepartment{}). + if err = impl.DBService.Model(&models.MgtDepartment{}). Where("app_id = ? and name = ? and id <> ?", appId, request.Name, request.ID).First(&exist).Error; err == nil { infra.Response.Error(c, errcode.ErrAlreadyExists) return @@ -81,7 +83,7 @@ func Modify(c *gin.Context) { if request.ParentID > 0 { var parent models.MgtDepartment - if err = models.DBService.Select("id", "app_id").Where("id = ?", request.ParentID).First(&parent).Error; err != nil { + if err = impl.DBService.Select("id", "app_id").Where("id = ?", request.ParentID).First(&parent).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrInvalidArgument) return @@ -102,7 +104,7 @@ func Modify(c *gin.Context) { LeaderID: request.LeaderID, Std_IICUDS: coreTypes.Std_IICUDS{Status: request.Status}, } - if err := models.DBService.Model(&models.MgtDepartment{}).Where("id = ?", request.ID).Updates(&dataModel).Error; err != nil { + if err := impl.DBService.Model(&models.MgtDepartment{}).Where("id = ?", request.ID).Updates(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/department/set_pmn.go b/module/base/mgt/internal/logic/department/set_pmn.go index e79a38a..a35162d 100644 --- a/module/base/mgt/internal/logic/department/set_pmn.go +++ b/module/base/mgt/internal/logic/department/set_pmn.go @@ -3,9 +3,11 @@ package department import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func SetPmn(c *gin.Context) { } var dpt models.MgtDepartment - if err := models.DBService.Select("id", "app_id").Where("id = ?", request.Id).First(&dpt).Error; err != nil { + if err := impl.DBService.Select("id", "app_id").Where("id = ?", request.Id).First(&dpt).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -61,7 +63,7 @@ func SetPmn(c *gin.Context) { pmnData = append(pmnData, models.MgtLinkDptPmn{AppId: appId, PmnId: v, DptId: request.Id}) } - if err := models.DBService.Clauses(clause.OnConflict{ + if err := impl.DBService.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "dpt_id"}, {Name: "app_id"}, {Name: "pmn_id"}}, DoUpdates: clause.AssignmentColumns([]string{"dpt_id", "app_id", "pmn_id"}), }).Create(&pmnData).Error; err != nil { @@ -97,7 +99,7 @@ func ModifyPmn(c *gin.Context) { } var dpt models.MgtDepartment - if err := models.DBService.Select("id", "app_id").Where("id = ?", request.Id).First(&dpt).Error; err != nil { + if err := impl.DBService.Select("id", "app_id").Where("id = ?", request.Id).First(&dpt).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -120,7 +122,7 @@ func ModifyPmn(c *gin.Context) { pmnData = append(pmnData, models.MgtLinkDptPmn{AppId: appId, PmnId: v, DptId: request.Id}) } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Where("dpt_id = ? and app_id = ?", request.Id, appId).Delete(&models.MgtLinkDptPmn{}).Error; err != nil { return err } @@ -165,7 +167,7 @@ func DelPmn(c *gin.Context) { } var dpt models.MgtDepartment - if err := models.DBService.Select("id", "app_id").Where("id = ?", request.Id).First(&dpt).Error; err != nil { + if err := impl.DBService.Select("id", "app_id").Where("id = ?", request.Id).First(&dpt).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -188,7 +190,7 @@ func DelPmn(c *gin.Context) { } pmnIds = append(pmnIds, v) } - if err := models.DBService.Where("dpt_id = ? AND app_id = ? AND pmn_id in ?", request.Id, appId, pmnIds). + if err := impl.DBService.Where("dpt_id = ? AND app_id = ? AND pmn_id in ?", request.Id, appId, pmnIds). Delete(&models.MgtLinkDptPmn{}).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return diff --git a/module/base/mgt/internal/logic/department/user.go b/module/base/mgt/internal/logic/department/user.go index 2f21d23..0823b40 100644 --- a/module/base/mgt/internal/logic/department/user.go +++ b/module/base/mgt/internal/logic/department/user.go @@ -3,9 +3,11 @@ package department import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -27,7 +29,7 @@ func SetUser(c *gin.Context) { } var dpt models.MgtDepartment - if err := models.DBService.Select("id").Where("id = ?", request.DptId).First(&dpt).Error; err != nil { + if err := impl.DBService.Select("id").Where("id = ?", request.DptId).First(&dpt).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -40,7 +42,7 @@ func SetUser(c *gin.Context) { for _, uid := range request.UserIds { list = append(list, models.MgtLinkUserDpt{UserId: uid, DptId: request.DptId}) } - if err := models.DBService.Clauses(clause.OnConflict{ + if err := impl.DBService.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "user_id"}, {Name: "dpt_id"}}, DoNothing: true, }).Create(&list).Error; err != nil { @@ -64,7 +66,7 @@ func DelUser(c *gin.Context) { return } - result := models.DBService.Where("dpt_id = ? and user_id in ?", request.DptId, request.UserIds). + result := impl.DBService.Where("dpt_id = ? and user_id in ?", request.DptId, request.UserIds). Delete(&models.MgtLinkUserDpt{}) if result.Error != nil { infra.Response.Error(c, errcode.ErrDB) @@ -80,7 +82,7 @@ func UserFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtDepartment, 0) - db = models.DBService.Model(&models.MgtDepartment{}) + db = impl.DBService.Model(&models.MgtDepartment{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) diff --git a/module/base/mgt/internal/logic/permission/create.go b/module/base/mgt/internal/logic/permission/create.go index bbd4983..fa52a4e 100644 --- a/module/base/mgt/internal/logic/permission/create.go +++ b/module/base/mgt/internal/logic/permission/create.go @@ -3,9 +3,11 @@ package permission import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -41,15 +43,15 @@ func Create(c *gin.Context) { return } - db := models.DBService.Model(&models.MgtPermission{}) + db := impl.DBService.Model(&models.MgtPermission{}) if err = db.Where("code = ? AND app_id = ?", request.Code, appId).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) return } var deletedData models.MgtPermission - if err = models.DBService.Unscoped().Where("code = ? AND app_id = ?", request.Code, appId).First(&deletedData).Error; err == nil { - if err = models.DBService.Unscoped().Delete(&deletedData).Error; err != nil { + if err = impl.DBService.Unscoped().Where("code = ? AND app_id = ?", request.Code, appId).First(&deletedData).Error; err == nil { + if err = impl.DBService.Unscoped().Delete(&deletedData).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -77,7 +79,7 @@ func Create(c *gin.Context) { HideMenu: request.HideMenu, WebUrl: request.WebUrl, } - if err = models.DBService.Model(&models.MgtPermission{}).Create(&dataModel).Error; err != nil { + if err = impl.DBService.Model(&models.MgtPermission{}).Create(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/permission/del.go b/module/base/mgt/internal/logic/permission/del.go index c160ff0..de6a964 100644 --- a/module/base/mgt/internal/logic/permission/del.go +++ b/module/base/mgt/internal/logic/permission/del.go @@ -1,9 +1,11 @@ package permission import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -34,7 +36,7 @@ func Del(c *gin.Context) { } // 删除权限时,同时删除关联数据 - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { // 删除权限 if err = tx.Delete(&models.MgtPermission{}, request.ID).Error; err != nil { printer.Error("删除权限异常: %v", err) diff --git a/module/base/mgt/internal/logic/permission/detail.go b/module/base/mgt/internal/logic/permission/detail.go index d186ee0..a1a90cc 100644 --- a/module/base/mgt/internal/logic/permission/detail.go +++ b/module/base/mgt/internal/logic/permission/detail.go @@ -3,9 +3,11 @@ package permission import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func Detail(c *gin.Context) { return } - if err = models.DBService.Model(&models.MgtPermission{}).Where("id = ?", request.ID).First(&data).Error; err != nil { + if err = impl.DBService.Model(&models.MgtPermission{}).Where("id = ?", request.ID).First(&data).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return diff --git a/module/base/mgt/internal/logic/permission/fetch.go b/module/base/mgt/internal/logic/permission/fetch.go index c2f49fb..ef28df6 100644 --- a/module/base/mgt/internal/logic/permission/fetch.go +++ b/module/base/mgt/internal/logic/permission/fetch.go @@ -1,10 +1,12 @@ package permission import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -16,7 +18,7 @@ func Fetch(c *gin.Context) { request = types.PermissionRequest{} count int64 = 0 data = make([]types.PermissionRsp, 0) - db = models.DBService.Model(&models.MgtPermission{}) + db = impl.DBService.Model(&models.MgtPermission{}) ) // 解析JSON请求 diff --git a/module/base/mgt/internal/logic/permission/fetch_other.go b/module/base/mgt/internal/logic/permission/fetch_other.go index 826c8cc..8d52d67 100644 --- a/module/base/mgt/internal/logic/permission/fetch_other.go +++ b/module/base/mgt/internal/logic/permission/fetch_other.go @@ -1,10 +1,12 @@ package permission import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -17,7 +19,7 @@ func UserFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtPermission, 0) - db = models.DBService.Model(&models.MgtPermission{}).Select("id", "identity", "title") + db = impl.DBService.Model(&models.MgtPermission{}).Select("id", "identity", "title") count int64 = 0 ) err := c.ShouldBindJSON(&request) @@ -58,7 +60,7 @@ func RoleFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtPermission, 0) - db = models.DBService.Model(&models.MgtPermission{}).Select("id", "identity", "title") + db = impl.DBService.Model(&models.MgtPermission{}).Select("id", "identity", "title") count int64 = 0 ) err := c.ShouldBindJSON(&request) diff --git a/module/base/mgt/internal/logic/permission/modify.go b/module/base/mgt/internal/logic/permission/modify.go index 748def0..2e33cb1 100644 --- a/module/base/mgt/internal/logic/permission/modify.go +++ b/module/base/mgt/internal/logic/permission/modify.go @@ -3,9 +3,11 @@ package permission import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -49,7 +51,7 @@ func Midify(c *gin.Context) { if request.Code != "" { data = models.MgtPermission{} - if err := models.DBService.Model(&models.MgtPermission{}).Where("code = ? AND app_id = ? AND id <> ?", request.Code, appId, request.ID).First(&data).Error; err != nil { + if err := impl.DBService.Model(&models.MgtPermission{}).Where("code = ? AND app_id = ? AND id <> ?", request.Code, appId, request.ID).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) return @@ -81,7 +83,7 @@ func Midify(c *gin.Context) { } updateFields := []string{"status", "code", "title", "app_id", "parent_id", "menu_path", "menu_icon", "type", "component", "description", "is_web_page", "is_new_tab", "is_full", "hide_menu", "web_url"} - if err := models.DBService.Model(&models.MgtPermission{}).Where("id = ?", request.ID).Select(updateFields).Updates(&dataModel).Error; err != nil { + if err := impl.DBService.Model(&models.MgtPermission{}).Where("id = ?", request.ID).Select(updateFields).Updates(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -92,7 +94,7 @@ func Midify(c *gin.Context) { } var existing models.MgtPermission - if err := models.DBService.Select("app_id").Where("id = ?", request.ID).First(&existing).Error; err != nil { + if err := impl.DBService.Select("app_id").Where("id = ?", request.ID).First(&existing).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -103,7 +105,7 @@ func Midify(c *gin.Context) { if request.Code != "" { data = models.MgtPermission{} - if err := models.DBService.Model(&models.MgtPermission{}). + if err := impl.DBService.Model(&models.MgtPermission{}). Where("code = ? AND app_id = ? AND id <> ?", request.Code, existing.Appid, request.ID). First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { @@ -136,7 +138,7 @@ func Midify(c *gin.Context) { } updateFields := []string{"status", "code", "title", "parent_id", "menu_path", "menu_icon", "type", "component", "description", "is_web_page", "is_new_tab", "is_full", "hide_menu", "web_url"} - if err := models.DBService.Model(&models.MgtPermission{}).Where("id = ?", request.ID).Select(updateFields).Updates(&dataModel).Error; err != nil { + if err := impl.DBService.Model(&models.MgtPermission{}).Where("id = ?", request.ID).Select(updateFields).Updates(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/permission/sort.go b/module/base/mgt/internal/logic/permission/sort.go index a9651ca..df99469 100644 --- a/module/base/mgt/internal/logic/permission/sort.go +++ b/module/base/mgt/internal/logic/permission/sort.go @@ -1,9 +1,11 @@ package permission import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -42,7 +44,7 @@ func Sort(c *gin.Context) { SortKey: int8(v.SortKey), }) } - if err := models.DBService.Clauses(clause.OnConflict{ + if err := impl.DBService.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "id"}}, DoUpdates: clause.AssignmentColumns([]string{"sort_key"}), }).Create(&data).Error; err != nil { diff --git a/module/base/mgt/internal/logic/pub/forget.go b/module/base/mgt/internal/logic/pub/forget.go index c43bc5f..4102ea8 100644 --- a/module/base/mgt/internal/logic/pub/forget.go +++ b/module/base/mgt/internal/logic/pub/forget.go @@ -7,6 +7,7 @@ import ( "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +39,7 @@ func ForgetPwdBySms(c *gin.Context) { } var data models.MgtUser - if err := models.DBService.Model(&models.MgtUser{}).Where("account = ?", request.Account).First(&data).Error; err != nil { + if err := impl.DBService.Model(&models.MgtUser{}).Where("account = ?", request.Account).First(&data).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -82,7 +83,7 @@ func ForgetPwdBySms(c *gin.Context) { return } - if err := models.DBService.Model(&models.MgtUser{}).Where("id = ?", data.ID).Updates(map[string]interface{}{ + if err := impl.DBService.Model(&models.MgtUser{}).Where("id = ?", data.ID).Updates(map[string]interface{}{ "password": string(hashedPassword), "salt": data.Salt, }).Error; err != nil { diff --git a/module/base/mgt/internal/logic/pub/login.go b/module/base/mgt/internal/logic/pub/login.go index ca7ede4..cc15b2f 100644 --- a/module/base/mgt/internal/logic/pub/login.go +++ b/module/base/mgt/internal/logic/pub/login.go @@ -10,6 +10,7 @@ import ( "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/crypto/token" "git.apinb.com/bsm-sdk/core/env" "git.apinb.com/bsm-sdk/core/errcode" @@ -60,7 +61,7 @@ func Login(c *gin.Context) { } // 获取用户信息 - if err = models.DBService.Model(&models.MgtUser{}).Where("account=?", account).First(&user).Error; err != nil { + if err = impl.DBService.Model(&models.MgtUser{}).Where("account=?", account).First(&user).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return diff --git a/module/base/mgt/internal/logic/role/create.go b/module/base/mgt/internal/logic/role/create.go index ce50717..ea6678c 100644 --- a/module/base/mgt/internal/logic/role/create.go +++ b/module/base/mgt/internal/logic/role/create.go @@ -3,9 +3,11 @@ package role import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,15 +40,15 @@ func Create(c *gin.Context) { return } - db := models.DBService.Model(&models.MgtRole{}) + db := impl.DBService.Model(&models.MgtRole{}) if err = db.Where("name = ? ", request.Name).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) return } var deletedData models.MgtRole - if err = models.DBService.Unscoped().Where("name = ?", request.Name).First(&deletedData).Error; err == nil { - if err = models.DBService.Unscoped().Delete(&deletedData).Error; err != nil { + if err = impl.DBService.Unscoped().Where("name = ?", request.Name).First(&deletedData).Error; err == nil { + if err = impl.DBService.Unscoped().Delete(&deletedData).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -62,7 +64,7 @@ func Create(c *gin.Context) { Name: request.Name, Std_IICUDS: coreTypes.Std_IICUDS{Identity: coreutils.UUID(), Status: 1}, } - if err = models.DBService.Model(&models.MgtRole{}).Create(&dataModel).Error; err != nil { + if err = impl.DBService.Model(&models.MgtRole{}).Create(&dataModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/role/del.go b/module/base/mgt/internal/logic/role/del.go index 01a8dce..bb39eee 100644 --- a/module/base/mgt/internal/logic/role/del.go +++ b/module/base/mgt/internal/logic/role/del.go @@ -1,9 +1,11 @@ package role import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -35,13 +37,13 @@ func Del(c *gin.Context) { return } - if err := models.DBService.Model(&models.MgtLinkRolePmn{}).Where("role_id=?", request.ID).Pluck("pmn_id", &pmnId).Error; err != nil { + if err := impl.DBService.Model(&models.MgtLinkRolePmn{}).Where("role_id=?", request.ID).Pluck("pmn_id", &pmnId).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } if len(pmnId) > 0 { - if err := models.DBService.Model(&models.MgtLinkUserRole{}). + if err := impl.DBService.Model(&models.MgtLinkUserRole{}). Where("role_id = ?", request.ID). Pluck("user_id", &userIds).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) @@ -49,7 +51,7 @@ func Del(c *gin.Context) { } } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if len(pmnId) > 0 && len(userIds) > 0 { if err := tx.Where("user_id in ? and pmn_id in ?", userIds, pmnId). Delete(&models.MgtLinkUserPmn{}).Error; err != nil { diff --git a/module/base/mgt/internal/logic/role/detail.go b/module/base/mgt/internal/logic/role/detail.go index fe0814c..3d42740 100644 --- a/module/base/mgt/internal/logic/role/detail.go +++ b/module/base/mgt/internal/logic/role/detail.go @@ -3,9 +3,11 @@ package role import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func Detail(c *gin.Context) { return } - if err = models.DBService.Model(&models.MgtRole{}).Select("id", "identity", "name", "description").Where("id = ?", request.ID).First(&data).Error; err != nil { + if err = impl.DBService.Model(&models.MgtRole{}).Select("id", "identity", "name", "description").Where("id = ?", request.ID).First(&data).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return diff --git a/module/base/mgt/internal/logic/role/fetch.go b/module/base/mgt/internal/logic/role/fetch.go index 23fad34..ce858c8 100644 --- a/module/base/mgt/internal/logic/role/fetch.go +++ b/module/base/mgt/internal/logic/role/fetch.go @@ -1,10 +1,12 @@ package role import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "github.com/gin-gonic/gin" @@ -15,7 +17,7 @@ func Fetch(c *gin.Context) { request = types.RoleReq{} count int64 = 0 data = make([]models.MgtRole, 0) - db = models.DBService.Model(&models.MgtRole{}).Select("id", "identity", "name", "description") + db = impl.DBService.Model(&models.MgtRole{}).Select("id", "identity", "name", "description") ) // 解析JSON请求 diff --git a/module/base/mgt/internal/logic/role/fetch_other.go b/module/base/mgt/internal/logic/role/fetch_other.go index d49dada..9b5e73e 100644 --- a/module/base/mgt/internal/logic/role/fetch_other.go +++ b/module/base/mgt/internal/logic/role/fetch_other.go @@ -1,9 +1,11 @@ package role import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "github.com/gin-gonic/gin" @@ -14,7 +16,7 @@ func PermissionsFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtRole, 0) - db = models.DBService.Model(&models.MgtRole{}) + db = impl.DBService.Model(&models.MgtRole{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) @@ -42,7 +44,7 @@ func PermissionsFetchTree(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtRole, 0) - db = models.DBService.Model(&models.MgtRole{}) + db = impl.DBService.Model(&models.MgtRole{}) ) if err := c.ShouldBindJSON(&request); err != nil { @@ -83,7 +85,7 @@ func ApplicationsFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtRole, 0) - db = models.DBService.Model(&models.MgtRole{}) + db = impl.DBService.Model(&models.MgtRole{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) @@ -109,7 +111,7 @@ func UserFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtRole, 0) - db = models.DBService.Model(&models.MgtRole{}) + db = impl.DBService.Model(&models.MgtRole{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) diff --git a/module/base/mgt/internal/logic/role/modify.go b/module/base/mgt/internal/logic/role/modify.go index c989012..53ad78a 100644 --- a/module/base/mgt/internal/logic/role/modify.go +++ b/module/base/mgt/internal/logic/role/modify.go @@ -3,9 +3,11 @@ package role import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func Midify(c *gin.Context) { } if request.Name != "" { - db := models.DBService.Model(&models.MgtRole{}) + db := impl.DBService.Model(&models.MgtRole{}) if err = db.Where("name = ? and id<> ?", request.Name, request.ID).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) @@ -57,7 +59,7 @@ func Midify(c *gin.Context) { Description: request.Description, Std_IICUDS: coreTypes.Std_IICUDS{Status: request.Status}, } - if err := models.DBService.Model(&models.MgtRole{}).Where("id = ?", request.ID).Updates(&roleModel).Error; err != nil { + if err := impl.DBService.Model(&models.MgtRole{}).Where("id = ?", request.ID).Updates(&roleModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/role/set.go b/module/base/mgt/internal/logic/role/set.go index 9c1c9a4..eab3e5b 100644 --- a/module/base/mgt/internal/logic/role/set.go +++ b/module/base/mgt/internal/logic/role/set.go @@ -1,9 +1,11 @@ package role import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -45,7 +47,7 @@ func SetPmn(c *gin.Context) { Appdta = models.MgtLinkRoleApp{AppId: appId, RoleId: request.Id} } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "app_id"}, {Name: "pmn_id"}, {Name: "role_id"}}, DoUpdates: clause.AssignmentColumns([]string{"app_id", "pmn_id", "role_id"}), @@ -104,7 +106,7 @@ func ModifyPmn(c *gin.Context) { Appdta = models.MgtLinkRoleApp{AppId: appId, RoleId: request.Id} } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Where("app_id = ? and role_id = ?", appId, request.Id).Delete(&models.MgtLinkRolePmn{}).Error; err != nil { printer.Error("删除角色权限关联失败: %v", err) return err @@ -159,7 +161,7 @@ func DelPmn(c *gin.Context) { } pmnIds = append(pmnIds, v) } - if err := models.DBService.Where("app_id = ? AND role_id = ? AND pmn_id in ?", appId, request.Id, pmnIds). + if err := impl.DBService.Where("app_id = ? AND role_id = ? AND pmn_id in ?", appId, request.Id, pmnIds). Delete(&models.MgtLinkRolePmn{}).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return diff --git a/module/base/mgt/internal/logic/user/create.go b/module/base/mgt/internal/logic/user/create.go index 90f60bd..7454901 100644 --- a/module/base/mgt/internal/logic/user/create.go +++ b/module/base/mgt/internal/logic/user/create.go @@ -3,9 +3,11 @@ package user import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/middleware" @@ -46,23 +48,23 @@ func Create(c *gin.Context) { return } - db := models.DBService.Model(&models.MgtUser{}) + db := impl.DBService.Model(&models.MgtUser{}) if err = db.Where("phone = ? or account = ?", request.Phone, request.Account).First(&data).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) return } var deletedData models.MgtUser - if err = models.DBService.Unscoped().Where("phone = ?", request.Phone).First(&deletedData).Error; err == nil { - if err = models.DBService.Unscoped().Delete(&deletedData).Error; err != nil { + if err = impl.DBService.Unscoped().Where("phone = ?", request.Phone).First(&deletedData).Error; err == nil { + if err = impl.DBService.Unscoped().Delete(&deletedData).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } printer.Info("user deleted: id=%d, phone=%s", deletedData.ID, deletedData.Phone) } if request.Phone != request.Account { - if err = models.DBService.Unscoped().Where("account = ?", request.Account).First(&deletedData).Error; err == nil { - if err = models.DBService.Unscoped().Delete(&deletedData).Error; err != nil { + if err = impl.DBService.Unscoped().Where("account = ?", request.Account).First(&deletedData).Error; err == nil { + if err = impl.DBService.Unscoped().Delete(&deletedData).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -76,7 +78,7 @@ func Create(c *gin.Context) { if request.Workspace == "" { request.Workspace = "def" } - if err = models.DBService.Model(&models.MgtApplication{}).Where("workspace = ?", request.Workspace).First(&linkData).Error; err != nil { + if err = impl.DBService.Model(&models.MgtApplication{}).Where("workspace = ?", request.Workspace).First(&linkData).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return @@ -103,7 +105,7 @@ func Create(c *gin.Context) { Std_IICUDS: coreTypes.Std_IICUDS{Identity: coreutils.UUID(), Status: 1}, } - if err = models.DBService.Transaction(func(tx *gorm.DB) error { + if err = impl.DBService.Transaction(func(tx *gorm.DB) error { if err = tx.Model(&models.MgtUser{}).Create(&userModel).Error; err != nil { return err } diff --git a/module/base/mgt/internal/logic/user/del.go b/module/base/mgt/internal/logic/user/del.go index 4e40c97..a820b98 100644 --- a/module/base/mgt/internal/logic/user/del.go +++ b/module/base/mgt/internal/logic/user/del.go @@ -1,9 +1,11 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -34,7 +36,7 @@ func Del(c *gin.Context) { } // 删除用户时,同时删除关联数据 - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { // 删除用户 if err = tx.Delete(&models.MgtUser{}, request.ID).Error; err != nil { printer.Error("删除用户异常: %v", err) diff --git a/module/base/mgt/internal/logic/user/detail.go b/module/base/mgt/internal/logic/user/detail.go index 256518b..ad249f8 100644 --- a/module/base/mgt/internal/logic/user/detail.go +++ b/module/base/mgt/internal/logic/user/detail.go @@ -3,9 +3,11 @@ package user import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -38,7 +40,7 @@ func Detail(c *gin.Context) { return } - if err = models.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID).First(&userData).Error; err != nil { + if err = impl.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID).First(&userData).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrRecordNotFound) return diff --git a/module/base/mgt/internal/logic/user/fetch.go b/module/base/mgt/internal/logic/user/fetch.go index 5c7976a..6dadbbe 100644 --- a/module/base/mgt/internal/logic/user/fetch.go +++ b/module/base/mgt/internal/logic/user/fetch.go @@ -1,10 +1,12 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/logic/tool" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "github.com/gin-gonic/gin" @@ -15,7 +17,7 @@ func Fetch(c *gin.Context) { request = types.UserRequest{} count int64 = 0 data = make([]types.UserResp, 0) - db = models.DBService.Model(&models.MgtUser{}) + db = impl.DBService.Model(&models.MgtUser{}) ) // 解析JSON请求 diff --git a/module/base/mgt/internal/logic/user/fetch_app.go b/module/base/mgt/internal/logic/user/fetch_app.go index ae90f32..99c394e 100644 --- a/module/base/mgt/internal/logic/user/fetch_app.go +++ b/module/base/mgt/internal/logic/user/fetch_app.go @@ -1,10 +1,12 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" mgtmw "bsm/full/module/base/mgt/internal/middleware" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/middleware" @@ -15,7 +17,7 @@ func ApplicationsFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtUser, 0) - db = models.DBService.Model(&models.MgtUser{}) + db = impl.DBService.Model(&models.MgtUser{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) diff --git a/module/base/mgt/internal/logic/user/fetch_pmn.go b/module/base/mgt/internal/logic/user/fetch_pmn.go index 422dc6b..73374ab 100644 --- a/module/base/mgt/internal/logic/user/fetch_pmn.go +++ b/module/base/mgt/internal/logic/user/fetch_pmn.go @@ -1,10 +1,12 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" mgtmw "bsm/full/module/base/mgt/internal/middleware" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/middleware" @@ -60,7 +62,7 @@ func PermissionsFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtUser, 0) - db = models.DBService.Model(&models.MgtUser{}) + db = impl.DBService.Model(&models.MgtUser{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) @@ -135,7 +137,7 @@ func PermissionsFetchTree(c *gin.Context) { return } - db := models.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID). + db := impl.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID). Select("id", "identity", "name"). Preload("Permissions", func(db *gorm.DB) *gorm.DB { return db.Select(permissionPreloadSelect).Order("sort_key asc") @@ -174,7 +176,7 @@ func PermissionsFetchTree(c *gin.Context) { pmnIdsByApp[p.Appid] = append(pmnIdsByApp[p.Appid], p.ID) } - appDb := models.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID). + appDb := impl.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID). Select("id", "identity", "name") appDb = appDb.Preload("Application", func(db *gorm.DB) *gorm.DB { db = db.Select("id", "identity", "title", "workspace") @@ -205,7 +207,7 @@ func PermissionsFetchTree(c *gin.Context) { continue } var tree []models.MgtPermission - err := models.DBService.Model(&models.MgtPermission{}). + err := impl.DBService.Model(&models.MgtPermission{}). Select(treeSelect). Where("app_id = ? AND parent_id = 0 AND id IN ?", apps[i].ID, ids). Order("sort_key asc"). diff --git a/module/base/mgt/internal/logic/user/fetch_role.go b/module/base/mgt/internal/logic/user/fetch_role.go index bc256b0..5d95ff4 100644 --- a/module/base/mgt/internal/logic/user/fetch_role.go +++ b/module/base/mgt/internal/logic/user/fetch_role.go @@ -1,10 +1,12 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" mgtmw "bsm/full/module/base/mgt/internal/middleware" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/middleware" @@ -16,7 +18,7 @@ func RoleFetch(c *gin.Context) { var ( request = types.FetchBase{} data = make([]models.MgtUser, 0) - db = models.DBService.Model(&models.MgtUser{}) + db = impl.DBService.Model(&models.MgtUser{}) ) if err := c.ShouldBindJSON(&request); err != nil { infra.Response.Error(c, errcode.ErrJsonUnmarshal) diff --git a/module/base/mgt/internal/logic/user/list.go b/module/base/mgt/internal/logic/user/list.go index ee2a45c..5ca1a41 100644 --- a/module/base/mgt/internal/logic/user/list.go +++ b/module/base/mgt/internal/logic/user/list.go @@ -1,8 +1,10 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "github.com/gin-gonic/gin" @@ -23,7 +25,7 @@ func UserList(c *gin.Context) { return } - db := models.DBService.Model(&models.MgtUser{}). + db := impl.DBService.Model(&models.MgtUser{}). Where("id IN (SELECT user_id FROM mgt_link_user_app WHERE app_id = (SELECT id FROM mgt_application WHERE workspace = ? LIMIT 1))", request.Workspace) if request.Keyword != "" { likeStr := "%" + request.Keyword + "%" diff --git a/module/base/mgt/internal/logic/user/modify.go b/module/base/mgt/internal/logic/user/modify.go index d6eafd4..dcf8479 100644 --- a/module/base/mgt/internal/logic/user/modify.go +++ b/module/base/mgt/internal/logic/user/modify.go @@ -3,9 +3,11 @@ package user import ( "errors" + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -39,7 +41,7 @@ func Midify(c *gin.Context) { } if request.Account != "" { - if err := models.DBService.Model(&models.MgtUser{}).Where("account = ? and id <>?", request.Account, request.ID).First(&user).Error; err != nil { + if err := impl.DBService.Model(&models.MgtUser{}).Where("account = ? and id <>?", request.Account, request.ID).First(&user).Error; err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { infra.Response.Error(c, errcode.ErrDB) return @@ -64,7 +66,7 @@ func Midify(c *gin.Context) { userModel.Account = request.Account updateFields = append(updateFields, "account") } - if err := models.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID).Select(updateFields).Updates(&userModel).Error; err != nil { + if err := impl.DBService.Model(&models.MgtUser{}).Where("id = ?", request.ID).Select(updateFields).Updates(&userModel).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } diff --git a/module/base/mgt/internal/logic/user/set_pmn.go b/module/base/mgt/internal/logic/user/set_pmn.go index 72cf1d3..5ff75ff 100644 --- a/module/base/mgt/internal/logic/user/set_pmn.go +++ b/module/base/mgt/internal/logic/user/set_pmn.go @@ -1,9 +1,11 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -45,7 +47,7 @@ func SetPmn(c *gin.Context) { Appdta = models.MgtLinkUserApp{AppId: appId, UserId: request.Id} } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "app_id"}, {Name: "pmn_id"}, {Name: "user_id"}}, DoUpdates: clause.AssignmentColumns([]string{"app_id", "pmn_id", "user_id"}), @@ -102,7 +104,7 @@ func ModifyPmn(c *gin.Context) { Appdta = models.MgtLinkUserApp{AppId: appId, UserId: request.Id} } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Where("app_id = ? and user_id = ?", appId, request.Id).Delete(&models.MgtLinkUserPmn{}).Error; err != nil { printer.Error("删除用户权限关联失败: %v", err) return err @@ -160,7 +162,7 @@ func DelPmn(c *gin.Context) { } pmnIds = append(pmnIds, v) } - if err := models.DBService.Where("app_id = ? AND user_id = ? AND pmn_id in ?", appId, request.Id, pmnIds). + if err := impl.DBService.Where("app_id = ? AND user_id = ? AND pmn_id in ?", appId, request.Id, pmnIds). Delete(&models.MgtLinkUserPmn{}).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return diff --git a/module/base/mgt/internal/logic/user/set_role.go b/module/base/mgt/internal/logic/user/set_role.go index eb9f29d..aaed5b3 100644 --- a/module/base/mgt/internal/logic/user/set_role.go +++ b/module/base/mgt/internal/logic/user/set_role.go @@ -1,9 +1,11 @@ package user import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/libs" "bsm/full/module/base/mgt/internal/models" "bsm/full/module/base/mgt/internal/types" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" "git.apinb.com/bsm-sdk/core/printer" @@ -32,7 +34,7 @@ func SetRole(c *gin.Context) { return } - if err := models.DBService.Model(&models.MgtRole{}).Where("id in ?", request.RoleId).Preload("Permissions").Find(&role).Error; err != nil { + if err := impl.DBService.Model(&models.MgtRole{}).Where("id in ?", request.RoleId).Preload("Permissions").Find(&role).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -48,7 +50,7 @@ func SetRole(c *gin.Context) { roleData = append(roleData, models.MgtLinkUserRole{UserId: request.UserId, RoleId: v.ID}) } - if err := models.DBService.Model(&models.MgtLinkRoleApp{}).Select("app_id").Where("role_id in ?", request.RoleId).Find(&appId).Error; err != nil { + if err := impl.DBService.Model(&models.MgtLinkRoleApp{}).Select("app_id").Where("role_id in ?", request.RoleId).Find(&appId).Error; err != nil { infra.Response.Error(c, errcode.ErrDB) return } @@ -61,7 +63,7 @@ func SetRole(c *gin.Context) { userApp = append(userApp, models.MgtLinkUserApp{UserId: request.UserId, AppId: v}) } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { if err := tx.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "app_id"}, {Name: "pmn_id"}, {Name: "user_id"}}, DoUpdates: clause.AssignmentColumns([]string{"app_id", "pmn_id", "user_id"}), @@ -107,7 +109,7 @@ func DelRole(c *gin.Context) { return } - if err := models.DBService.Transaction(func(tx *gorm.DB) error { + if err := impl.DBService.Transaction(func(tx *gorm.DB) error { var ( removedRolePmns []uint userOtherRoles []uint diff --git a/module/base/mgt/internal/middleware/rbac.go b/module/base/mgt/internal/middleware/rbac.go index 99ac6da..a3cf1c2 100644 --- a/module/base/mgt/internal/middleware/rbac.go +++ b/module/base/mgt/internal/middleware/rbac.go @@ -1,7 +1,9 @@ package middleware import ( + "bsm/full/module/base/mgt/internal/impl" "bsm/full/module/base/mgt/internal/models" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/infra" coremw "git.apinb.com/bsm-sdk/core/middleware" @@ -16,13 +18,13 @@ const ( // IsSuperAdmin 判断用户是否为 root 账号或拥有超级管理员角色 func IsSuperAdmin(userID uint) bool { var user models.MgtUser - if err := models.DBService.Select("id", "account").Where("id = ?", userID).First(&user).Error; err != nil { + if err := impl.DBService.Select("id", "account").Where("id = ?", userID).First(&user).Error; err != nil { return false } if user.Account == rootAccount { return true } - if err := models.DBService.Preload("Roles").Where("id = ?", userID).First(&user).Error; err != nil { + if err := impl.DBService.Preload("Roles").Where("id = ?", userID).First(&user).Error; err != nil { return false } for _, role := range user.Roles { diff --git a/module/base/mgt/internal/models/impl.go b/module/base/mgt/internal/models/impl.go index 9a7fd65..7250de3 100644 --- a/module/base/mgt/internal/models/impl.go +++ b/module/base/mgt/internal/models/impl.go @@ -6,6 +6,7 @@ import ( "strings" "bsm/full/module/base/mgt/internal/config" + "git.apinb.com/bsm-sdk/core/database/sql" "git.apinb.com/bsm-sdk/core/types" "git.apinb.com/bsm-sdk/core/vars" diff --git a/module/base/mgt/internal/routers/register.go b/module/base/mgt/internal/routers/register.go index e3457c5..50fa723 100644 --- a/module/base/mgt/internal/routers/register.go +++ b/module/base/mgt/internal/routers/register.go @@ -9,6 +9,7 @@ import ( "bsm/full/module/base/mgt/internal/logic/role" "bsm/full/module/base/mgt/internal/logic/user" mgtmw "bsm/full/module/base/mgt/internal/middleware" + "git.apinb.com/bsm-sdk/core/middleware" "github.com/gin-gonic/gin" ) diff --git a/module/base/mgt/service/dependencies.go b/module/base/mgt/service/dependencies.go new file mode 100644 index 0000000..22969b9 --- /dev/null +++ b/module/base/mgt/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/mgt/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/mgt/service/expose.go b/module/base/mgt/service/expose.go index 15200ae..a124f45 100644 --- a/module/base/mgt/service/expose.go +++ b/module/base/mgt/service/expose.go @@ -8,10 +8,17 @@ import ( type Config = config.SrvConfig -func Expose(engine *gin.Engine, cfg *Config) error { - if cfg != nil { - config.Spec = *cfg +type ExposeOptions struct { + Dependencies + Engine *gin.Engine + Config *Config +} + +func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) + if options.Config != nil { + config.Spec = *options.Config } - routers.Register("mgt", engine) + routers.Register("mgt", options.Engine) return nil } diff --git a/module/base/passport/service/dependencies.go b/module/base/passport/service/dependencies.go new file mode 100644 index 0000000..c251d80 --- /dev/null +++ b/module/base/passport/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/passport/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemoryService = deps.Cache + } +} diff --git a/module/base/passport/service/expose.go b/module/base/passport/service/expose.go index a1967d0..ebc2e93 100644 --- a/module/base/passport/service/expose.go +++ b/module/base/passport/service/expose.go @@ -11,6 +11,7 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux Config *Config @@ -19,6 +20,7 @@ type ExposeOptions struct { type Config = config.SrvConfig func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) if options.Config != nil { config.Spec = *options.Config } diff --git a/module/base/sender/service/dependencies.go b/module/base/sender/service/dependencies.go new file mode 100644 index 0000000..35b0416 --- /dev/null +++ b/module/base/sender/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/base/sender/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/base/sender/service/expose.go b/module/base/sender/service/expose.go index dc5eba5..f31702e 100644 --- a/module/base/sender/service/expose.go +++ b/module/base/sender/service/expose.go @@ -11,6 +11,7 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux Config *Config @@ -19,6 +20,7 @@ type ExposeOptions struct { type Config = config.SrvConfig func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) if options.Config != nil { config.Spec = *options.Config } diff --git a/module/ec/address/internal/impl/with.go b/module/ec/address/internal/impl/with.go index 4b3f0ce..211a883 100644 --- a/module/ec/address/internal/impl/with.go +++ b/module/ec/address/internal/impl/with.go @@ -5,17 +5,20 @@ import ( "bsm/full/module/ec/address/internal/config" "bsm/full/module/ec/address/internal/models" + "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/vars" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" ) var ( RedisCache *redis.RedisClient Etcd *clientv3.Client + DBService *gorm.DB ) func withRedisCache(srvKey string) { @@ -40,6 +43,7 @@ func withDatabases() { printer.Error("Database Init Failed !") panic(err) } + DBService = models.DBService } diff --git a/module/ec/address/internal/logic/library/create.go b/module/ec/address/internal/logic/library/create.go index dec3f7c..0ee846e 100644 --- a/module/ec/address/internal/logic/library/create.go +++ b/module/ec/address/internal/logic/library/create.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/address/internal/impl" "bsm/full/module/ec/address/internal/models" pb "bsm/full/module/ec/address/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -37,10 +39,10 @@ func Create(ctx context.Context, in *pb.AddressCreateRequest) (reply *pb.StatusR address.Status = int8(in.Status) if address.Status == 2 { - models.DBService.Model(&models.AddressLibrary{}).Where("owner_id = ? and status=2", auth.ID).UpdateColumn("status", "1") + impl.DBService.Model(&models.AddressLibrary{}).Where("owner_id = ? and status=2", auth.ID).UpdateColumn("status", "1") } - err = models.DBService.Create(address).Error + err = impl.DBService.Create(address).Error if err != nil { printer.Error(err.Error()) diff --git a/module/ec/address/internal/logic/library/delete.go b/module/ec/address/internal/logic/library/delete.go index 0ef50d5..ee0614a 100644 --- a/module/ec/address/internal/logic/library/delete.go +++ b/module/ec/address/internal/logic/library/delete.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/address/internal/impl" "bsm/full/module/ec/address/internal/models" pb "bsm/full/module/ec/address/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -19,7 +21,7 @@ func Delete(ctx context.Context, in *pb.AddressDeleteRequest) (reply *pb.StatusR return nil, err } - err = models.DBService.Delete(&models.AddressLibrary{}, "id in ?", in.Id).Error + err = impl.DBService.Delete(&models.AddressLibrary{}, "id in ?", in.Id).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/address/internal/logic/library/fetch.go b/module/ec/address/internal/logic/library/fetch.go index b0f514c..82e5b66 100644 --- a/module/ec/address/internal/logic/library/fetch.go +++ b/module/ec/address/internal/logic/library/fetch.go @@ -3,8 +3,10 @@ package library import ( "context" + "bsm/full/module/ec/address/internal/impl" "bsm/full/module/ec/address/internal/models" pb "bsm/full/module/ec/address/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -23,7 +25,7 @@ func Fetch(ctx context.Context, in *pb.IdentRequest) (reply *pb.AddressListReply result = make([]*pb.AddressItem, 0) ) - err = models.DBService.Where("owner_identity=?", auth.Identity).Find(&address).Error + err = impl.DBService.Where("owner_identity=?", auth.Identity).Find(&address).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/address/internal/logic/library/get.go b/module/ec/address/internal/logic/library/get.go index bc3d3e7..63011c1 100644 --- a/module/ec/address/internal/logic/library/get.go +++ b/module/ec/address/internal/logic/library/get.go @@ -4,8 +4,10 @@ import ( "context" "errors" + "bsm/full/module/ec/address/internal/impl" "bsm/full/module/ec/address/internal/models" pb "bsm/full/module/ec/address/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -24,7 +26,7 @@ func Get(ctx context.Context, in *pb.IdentRequest) (reply *pb.AddressItem, err e } address := new(models.AddressLibrary) - err = models.DBService.Where("id=?", in.Id).First(&address).Error + err = impl.DBService.Where("id=?", in.Id).First(&address).Error if err != nil { if errors.Is(err, models.ErrNotFound) { diff --git a/module/ec/address/internal/logic/library/modify.go b/module/ec/address/internal/logic/library/modify.go index fba5480..7c61f6f 100644 --- a/module/ec/address/internal/logic/library/modify.go +++ b/module/ec/address/internal/logic/library/modify.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/address/internal/impl" "bsm/full/module/ec/address/internal/models" pb "bsm/full/module/ec/address/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -31,10 +33,10 @@ func Modify(ctx context.Context, in *pb.AddressItem) (reply *pb.StatusReply, err address.Status = int8(in.Status) if address.Status == 2 { - models.DBService.Model(&models.AddressLibrary{}).Where("owner_id = ? and status=2", auth.ID).UpdateColumn("status", "1") + impl.DBService.Model(&models.AddressLibrary{}).Where("owner_id = ? and status=2", auth.ID).UpdateColumn("status", "1") } - err = models.DBService.Where("id=?", in.Id).Updates(&address).Error + err = impl.DBService.Where("id=?", in.Id).Updates(&address).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/address/service/dependencies.go b/module/ec/address/service/dependencies.go new file mode 100644 index 0000000..4f0227a --- /dev/null +++ b/module/ec/address/service/dependencies.go @@ -0,0 +1,29 @@ +package service + +import ( + "bsm/full/module/ec/address/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisCache = deps.Redis + } + if deps.Etcd != nil { + impl.Etcd = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } +} diff --git a/module/ec/address/service/expose.go b/module/ec/address/service/expose.go index 00d2d5e..13f59e1 100644 --- a/module/ec/address/service/expose.go +++ b/module/ec/address/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/ec/mall/service/dependencies.go b/module/ec/mall/service/dependencies.go new file mode 100644 index 0000000..094dc5a --- /dev/null +++ b/module/ec/mall/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/ec/mall/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/ec/mall/service/expose.go b/module/ec/mall/service/expose.go index 0c76d76..a11b181 100644 --- a/module/ec/mall/service/expose.go +++ b/module/ec/mall/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/ec/market/internal/impl/with.go b/module/ec/market/internal/impl/with.go index 96d1053..9becacd 100644 --- a/module/ec/market/internal/impl/with.go +++ b/module/ec/market/internal/impl/with.go @@ -5,17 +5,20 @@ import ( "bsm/full/module/ec/market/internal/config" "bsm/full/module/ec/market/internal/models" + "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/vars" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" ) var ( RedisCache *redis.RedisClient Etcd *clientv3.Client + DBService *gorm.DB ) func withRedisCache(srvKey string) { @@ -40,6 +43,7 @@ func withDatabases() { printer.Error("Database Init Failed !") panic(err) } + DBService = models.DBService } diff --git a/module/ec/market/internal/logic/agency/approve.go b/module/ec/market/internal/logic/agency/approve.go index 6a71e0f..4db5f0e 100644 --- a/module/ec/market/internal/logic/agency/approve.go +++ b/module/ec/market/internal/logic/agency/approve.go @@ -4,8 +4,10 @@ import ( "context" "log" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" ) @@ -16,7 +18,7 @@ func Approve(ctx context.Context, in *pb.ApproveRequest) (reply *pb.IdentityStat return nil, errcode.ErrInvalidArgument } - if err := models.DBService.Where("identity = ?", in.GetIdentity()).First(&data).Error; err != nil { + if err := impl.DBService.Where("identity = ?", in.GetIdentity()).First(&data).Error; err != nil { return nil, err } if data.Status != 1 { @@ -24,12 +26,12 @@ func Approve(ctx context.Context, in *pb.ApproveRequest) (reply *pb.IdentityStat } switch in.GetApprove() { case 1: - if err := models.DBService.Model(&data).Update("approve", 2).Error; err != nil { + if err := impl.DBService.Model(&data).Update("approve", 2).Error; err != nil { log.Println("更新代理商数据失败:", err) return nil, errcode.ErrDB } case 2: - if err := models.DBService.Model(&data).Update("approve", -2).Error; err != nil { + if err := impl.DBService.Model(&data).Update("approve", -2).Error; err != nil { log.Println("更新代理商数据失败:", err) return nil, errcode.ErrDB } diff --git a/module/ec/market/internal/logic/agency/create.go b/module/ec/market/internal/logic/agency/create.go index 2686dc3..af0afd6 100644 --- a/module/ec/market/internal/logic/agency/create.go +++ b/module/ec/market/internal/logic/agency/create.go @@ -5,8 +5,10 @@ import ( "fmt" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/types" "git.apinb.com/bsm-sdk/core/utils" @@ -43,7 +45,7 @@ func Create(ctx context.Context, in *pb.MarketAgenctyItem) (reply *pb.IdentitySt Area: in.GetArea(), } fmt.Println("mktModel = ", mktModel) - if err := models.DBService.Create(&mktModel).Error; err != nil { + if err := impl.DBService.Create(&mktModel).Error; err != nil { fmt.Println("err = ", err) return nil, err diff --git a/module/ec/market/internal/logic/agency/delete.go b/module/ec/market/internal/logic/agency/delete.go index 7caa67f..2d67bc3 100644 --- a/module/ec/market/internal/logic/agency/delete.go +++ b/module/ec/market/internal/logic/agency/delete.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" ) @@ -21,7 +23,7 @@ func Delete(ctx context.Context, in *pb.IdentRequest) (reply *pb.IdentityStatusR if in.Id == 0 && in.Identity == "" { return nil, errcode.ErrInvalidArgument } - if err := models.DBService.Where("id = ? or identity = ?", in.GetId(), in.GetIdentity()).Delete(&models.MarketAgency{}).Error; err != nil { + if err := impl.DBService.Where("id = ? or identity = ?", in.GetId(), in.GetIdentity()).Delete(&models.MarketAgency{}).Error; err != nil { printer.Error(err.Error()) return nil, err } diff --git a/module/ec/market/internal/logic/agency/fetch.go b/module/ec/market/internal/logic/agency/fetch.go index 5b7549f..53e04a9 100644 --- a/module/ec/market/internal/logic/agency/fetch.go +++ b/module/ec/market/internal/logic/agency/fetch.go @@ -3,8 +3,10 @@ package agency import ( "context" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -28,7 +30,7 @@ func Fetch(ctx context.Context, in *pb.MarketFetchRequest) (reply *pb.AgencyRepl if in.GetPageSize() < 10 { in.PageSize = 50 } - tx := models.DBService.Model(&models.MarketAgency{}) + tx := impl.DBService.Model(&models.MarketAgency{}) if in.GetIdentity() != "" { tx.Where("identity = ?", in.GetIdentity()) } diff --git a/module/ec/market/internal/logic/agency/get.go b/module/ec/market/internal/logic/agency/get.go index c082c46..8385f70 100644 --- a/module/ec/market/internal/logic/agency/get.go +++ b/module/ec/market/internal/logic/agency/get.go @@ -5,8 +5,10 @@ import ( "log" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/service" ) @@ -24,7 +26,7 @@ func Get(ctx context.Context, in *pb.IdentRequest) (reply *pb.MarketAgenctyItem, identity = in.GetIdentity() } mktModel := models.MarketAgency{} - if err := models.DBService.Where("identity=?", identity).First(&mktModel).Error; err != nil { + if err := impl.DBService.Where("identity=?", identity).First(&mktModel).Error; err != nil { log.Println("获取代理商数据失败:", err) return nil, err } diff --git a/module/ec/market/internal/logic/agency/login.go b/module/ec/market/internal/logic/agency/login.go index a95fdeb..b08f97b 100644 --- a/module/ec/market/internal/logic/agency/login.go +++ b/module/ec/market/internal/logic/agency/login.go @@ -5,8 +5,10 @@ import ( "errors" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/crypto/encipher" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/utils" @@ -21,7 +23,7 @@ func Login(ctx context.Context, in *pb.LoginRequest) (reply *pb.LoginReply, err return nil, errcode.ErrInvalidArgument } - err = models.DBService.Where("account=? and id<>0", in.Account).First(&marketData).Error + err = impl.DBService.Where("account=? and id<>0", in.Account).First(&marketData).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, errcode.ErrAccountNotFound @@ -55,7 +57,7 @@ func Login(ctx context.Context, in *pb.LoginRequest) (reply *pb.LoginReply, err // 更新登录时间 marketData.LastLoginAt = time.Now() - err = models.DBService.Debug().Where("id = ?", marketData.ID).Select("last_login_at").Updates(marketData).Error + err = impl.DBService.Debug().Where("id = ?", marketData.ID).Select("last_login_at").Updates(marketData).Error if err != nil { return nil, err } diff --git a/module/ec/market/internal/logic/agency/modify.go b/module/ec/market/internal/logic/agency/modify.go index 7215fe7..34eb987 100644 --- a/module/ec/market/internal/logic/agency/modify.go +++ b/module/ec/market/internal/logic/agency/modify.go @@ -5,8 +5,10 @@ import ( "log" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/service" ) @@ -40,7 +42,7 @@ func Modify(ctx context.Context, in *pb.MarketAgenctyItem) (reply *pb.IdentitySt Country: in.GetCountry(), Area: in.GetArea(), } - if err := models.DBService.Where("identity=?", identity).Updates(&mktModel).Error; err != nil { + if err := impl.DBService.Where("identity=?", identity).Updates(&mktModel).Error; err != nil { log.Println("更新代理商数据失败:", err) return nil, err } diff --git a/module/ec/market/internal/logic/agency/pending.go b/module/ec/market/internal/logic/agency/pending.go index 4166533..33ffcfd 100644 --- a/module/ec/market/internal/logic/agency/pending.go +++ b/module/ec/market/internal/logic/agency/pending.go @@ -3,8 +3,10 @@ package agency import ( "context" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -29,7 +31,7 @@ func Pending(ctx context.Context, in *pb.MarketFetchRequest) (reply *pb.AgencyRe if in.GetPageSize() < 0 { in.PageSize = 50 } - tx := models.DBService.Model(&models.MarketAgency{}).Where("approve = 0").Order("created_at desc") + tx := impl.DBService.Model(&models.MarketAgency{}).Where("approve = 0").Order("created_at desc") if in.GetIdentity() != "" { tx.Where("identity = ?", in.GetIdentity()) } diff --git a/module/ec/market/internal/logic/agency/set_password.go b/module/ec/market/internal/logic/agency/set_password.go index 48b0cb6..a76bcd3 100644 --- a/module/ec/market/internal/logic/agency/set_password.go +++ b/module/ec/market/internal/logic/agency/set_password.go @@ -7,8 +7,10 @@ import ( "log" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/service" "git.apinb.com/bsm-sdk/core/utils" @@ -33,7 +35,7 @@ func SetPassword(ctx context.Context, in *pb.SetPasswordRequest) (reply *pb.Iden } // 获取当前角色数据 mktModel := models.MarketAgency{} - if err := models.DBService.Where("identity = ?", identity).First(&mktModel).Error; err != nil { + if err := impl.DBService.Where("identity = ?", identity).First(&mktModel).Error; err != nil { log.Println("获取代理商数据失败:", err) return nil, err } @@ -45,7 +47,7 @@ func SetPassword(ctx context.Context, in *pb.SetPasswordRequest) (reply *pb.Iden // 设置新密码 newPwd := utils.Md5(in.GetNewPassword() + mktModel.Salt) - if err := models.DBService.Model(&mktModel).Update("password", newPwd).Error; err != nil { + if err := impl.DBService.Model(&mktModel).Update("password", newPwd).Error; err != nil { log.Println("更新密码失败:", err) return nil, err } diff --git a/module/ec/market/internal/logic/data/member_details.go b/module/ec/market/internal/logic/data/member_details.go index 5d44f6a..681c2b2 100644 --- a/module/ec/market/internal/logic/data/member_details.go +++ b/module/ec/market/internal/logic/data/member_details.go @@ -1,8 +1,9 @@ package data import ( - "context" pb "bsm/full/module/ec/market/pb" + "context" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/service" ) diff --git a/module/ec/market/internal/logic/data/member_fetch.go b/module/ec/market/internal/logic/data/member_fetch.go index 6603e5d..13df5de 100644 --- a/module/ec/market/internal/logic/data/member_fetch.go +++ b/module/ec/market/internal/logic/data/member_fetch.go @@ -1,8 +1,9 @@ package data import ( - "context" pb "bsm/full/module/ec/market/pb" + "context" + "git.apinb.com/bsm-sdk/core/service" ) diff --git a/module/ec/market/internal/logic/data/order_details.go b/module/ec/market/internal/logic/data/order_details.go index 2d6ae5f..9741152 100644 --- a/module/ec/market/internal/logic/data/order_details.go +++ b/module/ec/market/internal/logic/data/order_details.go @@ -1,8 +1,9 @@ package data import ( - "context" pb "bsm/full/module/ec/market/pb" + "context" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/service" ) diff --git a/module/ec/market/internal/logic/data/order_fetch.go b/module/ec/market/internal/logic/data/order_fetch.go index 5d1b280..25aa4b1 100644 --- a/module/ec/market/internal/logic/data/order_fetch.go +++ b/module/ec/market/internal/logic/data/order_fetch.go @@ -1,8 +1,9 @@ package data import ( - "context" pb "bsm/full/module/ec/market/pb" + "context" + "git.apinb.com/bsm-sdk/core/service" ) diff --git a/module/ec/market/internal/logic/data/overview.go b/module/ec/market/internal/logic/data/overview.go index 1573588..1bab6e1 100644 --- a/module/ec/market/internal/logic/data/overview.go +++ b/module/ec/market/internal/logic/data/overview.go @@ -1,8 +1,9 @@ package data import ( - "context" pb "bsm/full/module/ec/market/pb" + "context" + "git.apinb.com/bsm-sdk/core/service" ) diff --git a/module/ec/market/internal/logic/supply/create.go b/module/ec/market/internal/logic/supply/create.go index f708415..e40e16f 100644 --- a/module/ec/market/internal/logic/supply/create.go +++ b/module/ec/market/internal/logic/supply/create.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/types" "git.apinb.com/bsm-sdk/core/utils" @@ -34,7 +36,7 @@ func Create(ctx context.Context, in *pb.MarketSupplyItem) (reply *pb.IdentitySta Remark: in.GetRemark(), CommissionRate: in.GetCommissionRate(), } - if err := models.DBService.Create(&mktModel).Error; err != nil { + if err := impl.DBService.Create(&mktModel).Error; err != nil { return nil, err } diff --git a/module/ec/market/internal/logic/supply/delete.go b/module/ec/market/internal/logic/supply/delete.go index 685d2fa..f4ea297 100644 --- a/module/ec/market/internal/logic/supply/delete.go +++ b/module/ec/market/internal/logic/supply/delete.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -24,7 +26,7 @@ func Delete(ctx context.Context, in *pb.IdentRequest) (reply *pb.IdentityStatusR return nil, errcode.ErrInvalidArgument } - if err := models.DBService.Where("id = ? or identity = ?", in.GetId(), in.GetIdentity()).Delete(&models.MarketSupply{}).Error; err != nil { + if err := impl.DBService.Where("id = ? or identity = ?", in.GetId(), in.GetIdentity()).Delete(&models.MarketSupply{}).Error; err != nil { printer.Error(err.Error()) return nil, err } diff --git a/module/ec/market/internal/logic/supply/fetch.go b/module/ec/market/internal/logic/supply/fetch.go index 45ce6b9..363c054 100644 --- a/module/ec/market/internal/logic/supply/fetch.go +++ b/module/ec/market/internal/logic/supply/fetch.go @@ -3,8 +3,10 @@ package supply import ( "context" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -28,7 +30,7 @@ func Fetch(ctx context.Context, in *pb.MarketFetchRequest) (reply *pb.SupplyRepl if in.GetPageSize() < 10 { in.PageSize = 50 } - tx := models.DBService.Model(&models.MarketSupply{}).Where("status = ?", 1) + tx := impl.DBService.Model(&models.MarketSupply{}).Where("status = ?", 1) if in.GetIdentity() != "" { tx.Where("identity = ?", in.GetIdentity()) } diff --git a/module/ec/market/internal/logic/supply/get.go b/module/ec/market/internal/logic/supply/get.go index a7de831..0c5741e 100644 --- a/module/ec/market/internal/logic/supply/get.go +++ b/module/ec/market/internal/logic/supply/get.go @@ -4,8 +4,10 @@ import ( "context" "log" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/service" ) @@ -18,7 +20,7 @@ func Get(ctx context.Context, in *pb.IdentRequest) (reply *pb.MarketSupplyItem, } mktModel := models.MarketSupply{} - if err := models.DBService.Where("identity=?", in.GetIdentity()).First(&mktModel).Error; err != nil { + if err := impl.DBService.Where("identity=?", in.GetIdentity()).First(&mktModel).Error; err != nil { log.Println("获取供应商数据失败:", err) return nil, err } diff --git a/module/ec/market/internal/logic/supply/modify.go b/module/ec/market/internal/logic/supply/modify.go index ac8772b..33fb8c9 100644 --- a/module/ec/market/internal/logic/supply/modify.go +++ b/module/ec/market/internal/logic/supply/modify.go @@ -5,8 +5,10 @@ import ( "log" "time" + "bsm/full/module/ec/market/internal/impl" "bsm/full/module/ec/market/internal/models" pb "bsm/full/module/ec/market/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/service" ) @@ -33,7 +35,7 @@ func Modify(ctx context.Context, in *pb.MarketSupplyItem) (reply *pb.IdentitySta Remark: in.GetRemark(), CommissionRate: in.GetCommissionRate(), } - if err := models.DBService.Where("identity=?", in.GetIdentity()).Updates(&mktModel).Error; err != nil { + if err := impl.DBService.Where("identity=?", in.GetIdentity()).Updates(&mktModel).Error; err != nil { log.Println("更新供应商数据失败:", err) return nil, err } diff --git a/module/ec/market/service/dependencies.go b/module/ec/market/service/dependencies.go new file mode 100644 index 0000000..6e8e167 --- /dev/null +++ b/module/ec/market/service/dependencies.go @@ -0,0 +1,29 @@ +package service + +import ( + "bsm/full/module/ec/market/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisCache = deps.Redis + } + if deps.Etcd != nil { + impl.Etcd = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } +} diff --git a/module/ec/market/service/expose.go b/module/ec/market/service/expose.go index d50760c..df28594 100644 --- a/module/ec/market/service/expose.go +++ b/module/ec/market/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/ec/order/internal/impl/with.go b/module/ec/order/internal/impl/with.go index 693b0e1..3d71c14 100644 --- a/module/ec/order/internal/impl/with.go +++ b/module/ec/order/internal/impl/with.go @@ -5,17 +5,20 @@ import ( "bsm/full/module/ec/order/internal/config" "bsm/full/module/ec/order/internal/models" + "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/vars" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" ) var ( RedisCache *redis.RedisClient Etcd *clientv3.Client + DBService *gorm.DB ) func withRedisCache(srvKey string) { @@ -40,6 +43,7 @@ func withDatabases() { printer.Error("Database Init Failed !") panic(err) } + DBService = models.DBService } diff --git a/module/ec/order/internal/logic/cart/create.go b/module/ec/order/internal/logic/cart/create.go index 31e8205..22b4b3d 100644 --- a/module/ec/order/internal/logic/cart/create.go +++ b/module/ec/order/internal/logic/cart/create.go @@ -5,8 +5,10 @@ import ( "errors" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -22,7 +24,7 @@ func Create(ctx context.Context, in *pb.CartAddRequest) (reply *pb.OrderStatusRe } var cart *models.OrderCart - err = models.DBService.Where("cart_identity=? and product_identity=? and spec_id = ? ", in.CartIdentity, in.ProductIdentity, in.SpecId).First(&cart).Error + err = impl.DBService.Where("cart_identity=? and product_identity=? and spec_id = ? ", in.CartIdentity, in.ProductIdentity, in.SpecId).First(&cart).Error if err != nil { if !errors.Is(err, gorm.ErrRecordNotFound) { printer.Error(err.Error()) @@ -41,10 +43,10 @@ func Create(ctx context.Context, in *pb.CartAddRequest) (reply *pb.OrderStatusRe data.PassportIdentity = auth.Identity data.Identity = utils.UUID() if cart.ID == 0 { - err = models.DBService.Create(&data).Error + err = impl.DBService.Create(&data).Error } else { data.Number += cart.Number - err = models.DBService.Where("cart_identity=? and product_identity=? and spec_id = ? ", in.CartIdentity, in.ProductIdentity, in.SpecId).Updates(&data).Error + err = impl.DBService.Where("cart_identity=? and product_identity=? and spec_id = ? ", in.CartIdentity, in.ProductIdentity, in.SpecId).Updates(&data).Error } if err != nil { diff --git a/module/ec/order/internal/logic/cart/delete.go b/module/ec/order/internal/logic/cart/delete.go index b8ff955..71a33c6 100644 --- a/module/ec/order/internal/logic/cart/delete.go +++ b/module/ec/order/internal/logic/cart/delete.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/service" ) @@ -17,7 +19,7 @@ func Delete(ctx context.Context, in *pb.CartDelRequest) (reply *pb.OrderStatusRe return nil, err } - err = models.DBService.Where("id in ?", in.Id).Delete(&models.OrderCart{}).Error + err = impl.DBService.Where("id in ?", in.Id).Delete(&models.OrderCart{}).Error if err != nil { return nil, err } diff --git a/module/ec/order/internal/logic/cart/fetch.go b/module/ec/order/internal/logic/cart/fetch.go index e9f43b7..b205825 100644 --- a/module/ec/order/internal/logic/cart/fetch.go +++ b/module/ec/order/internal/logic/cart/fetch.go @@ -3,8 +3,10 @@ package cart import ( "context" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -26,7 +28,7 @@ func Fetch(ctx context.Context, in *pb.CartGetRequest) (reply *pb.CartGetReply, } } // 查询购物车数据 - err = models.DBService.Where("cart_identity=? or passport_identity=?", in.GetCarIdentity(), auth.Identity).Find(&cart).Error + err = impl.DBService.Where("cart_identity=? or passport_identity=?", in.GetCarIdentity(), auth.Identity).Find(&cart).Error if err != nil { printer.Error(err.Error()) @@ -35,7 +37,7 @@ func Fetch(ctx context.Context, in *pb.CartGetRequest) (reply *pb.CartGetReply, for _, item := range cart { product := models.Product{} - err := models.DBService.Raw(` + err := impl.DBService.Raw(` SELECT p.id, p.identity, p.title, p.cover_image, p.args, p.cost_price, ( SELECT MIN(mps.price) diff --git a/module/ec/order/internal/logic/cart/modify.go b/module/ec/order/internal/logic/cart/modify.go index 7c74d26..952f7a5 100644 --- a/module/ec/order/internal/logic/cart/modify.go +++ b/module/ec/order/internal/logic/cart/modify.go @@ -4,8 +4,9 @@ import ( "context" "time" - "bsm/full/module/ec/order/internal/models" + "bsm/full/module/ec/order/internal/impl" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -20,7 +21,7 @@ func Modify(ctx context.Context, in *pb.CartSetRequest) (reply *pb.OrderStatusRe return nil, err } if len(in.GetUpdates()) > 0 { - err = models.DBService.Transaction(func(tx *gorm.DB) error { + err = impl.DBService.Transaction(func(tx *gorm.DB) error { for _, update := range in.Updates { err := tx.Table("order_cart").Where("id = ?", update.Id).Update("number", update.Number).Error if err != nil { @@ -36,7 +37,7 @@ func Modify(ctx context.Context, in *pb.CartSetRequest) (reply *pb.OrderStatusRe return nil, errcode.ErrInvalidArgument } - err = models.DBService.Table("order_cart").Where("id = ?", in.Id).Update("number", in.Number).Error + err = impl.DBService.Table("order_cart").Where("id = ?", in.Id).Update("number", in.Number).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/common/get.go b/module/ec/order/internal/logic/common/get.go index 130c4be..b36a2f1 100644 --- a/module/ec/order/internal/logic/common/get.go +++ b/module/ec/order/internal/logic/common/get.go @@ -1,6 +1,7 @@ package common import ( + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" ) @@ -11,7 +12,7 @@ func GetOrderSummaryByIdentity(identity string) (*pb.OrderSummaryItem, error) { err error summary = new(models.OrderSummary) ) - err = models.DBService.Preload("OrderDetails").Where("identity = ?", identity).First(&summary).Error + err = impl.DBService.Preload("OrderDetails").Where("identity = ?", identity).First(&summary).Error if err != nil { return nil, err } @@ -24,7 +25,7 @@ func GetOrderSummaryByNo(no string) (*pb.OrderSummaryItem, error) { err error summary = new(models.OrderSummary) ) - err = models.DBService.Preload("OrderDetails").Where("order_no = ?", no).First(&summary).Error + err = impl.DBService.Preload("OrderDetails").Where("order_no = ?", no).First(&summary).Error if err != nil { return nil, err } diff --git a/module/ec/order/internal/logic/common/reflect.go b/module/ec/order/internal/logic/common/reflect.go index f36386a..abc2a67 100644 --- a/module/ec/order/internal/logic/common/reflect.go +++ b/module/ec/order/internal/logic/common/reflect.go @@ -4,6 +4,7 @@ import ( "bsm/full/module/ec/order/internal/models" order "bsm/full/module/ec/order/pb" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/vars" ) diff --git a/module/ec/order/internal/logic/coupon/by_status.go b/module/ec/order/internal/logic/coupon/by_status.go index 9ca4223..4873670 100644 --- a/module/ec/order/internal/logic/coupon/by_status.go +++ b/module/ec/order/internal/logic/coupon/by_status.go @@ -3,8 +3,10 @@ package coupon import ( "context" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -23,7 +25,7 @@ func ByStatus(ctx context.Context, in *pb.Status) (reply *pb.CouponListReply, er result = make([]*pb.CouponItem, 0) ) - err = models.DBService.Where("passport_id=?", auth.ID).Find(&coupon).Error + err = impl.DBService.Where("passport_id=?", auth.ID).Find(&coupon).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/mgt/order_approve.go b/module/ec/order/internal/logic/mgt/order_approve.go index b6b3f0b..dd85e35 100644 --- a/module/ec/order/internal/logic/mgt/order_approve.go +++ b/module/ec/order/internal/logic/mgt/order_approve.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "gorm.io/gorm" @@ -19,7 +21,7 @@ func OrderApprove(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.Orde } // 获取当前订单信息。 var order models.OrderSummary - if err := models.DBService.Preload("OrderDetails").Where("identity=?", in.Identity).First(&order).Error; err != nil { + if err := impl.DBService.Preload("OrderDetails").Where("identity=?", in.Identity).First(&order).Error; err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB } @@ -29,7 +31,7 @@ func OrderApprove(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.Orde // 申请退款 case 1: if in.GetApprove() == 4 { - err = models.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). + err = impl.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). Updates(map[string]any{ "approve": in.GetApprove(), "status": 7, @@ -42,7 +44,7 @@ func OrderApprove(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.Orde // 申请退货 case 2: if in.GetApprove() == 4 { - models.DBService.Transaction(func(tx *gorm.DB) error { + impl.DBService.Transaction(func(tx *gorm.DB) error { err = tx.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). Updates(map[string]any{ "approve": in.GetApprove(), @@ -68,7 +70,7 @@ func OrderApprove(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.Orde case 3: if in.GetApprove() == 4 { - err = models.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). + err = impl.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). Updates(map[string]any{ "approve": in.GetApprove(), "status": 6, @@ -81,7 +83,7 @@ func OrderApprove(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.Orde } // 审批未通过 if in.GetApprove() == -2 { - if err := models.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). + if err := impl.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity). Update("approve", in.GetApprove()).Error; err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/mgt/order_cancel.go b/module/ec/order/internal/logic/mgt/order_cancel.go index 720cf89..085f99b 100644 --- a/module/ec/order/internal/logic/mgt/order_cancel.go +++ b/module/ec/order/internal/logic/mgt/order_cancel.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -32,7 +34,7 @@ func OrderCancel(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.Order if in.GetIdentity() == "" { return nil, errcode.ErrInvalidArgument } - err = models.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity).Update("status", -1).Error + err = impl.DBService.Model(&models.OrderSummary{}).Where("identity=?", in.Identity).Update("status", -1).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/mgt/order_create.go b/module/ec/order/internal/logic/mgt/order_create.go index c474910..7298192 100644 --- a/module/ec/order/internal/logic/mgt/order_create.go +++ b/module/ec/order/internal/logic/mgt/order_create.go @@ -5,9 +5,11 @@ import ( "errors" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/logic/common" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -52,7 +54,7 @@ func OrderCreate(ctx context.Context, in *pb.CreateOrderRequest) (reply *pb.Orde // 查询产品信息以确保其存在且状态为启用。 for _, specs := range in.Spec { product := map[string]any{} - err = models.DBService.Table("mall_product").Take(&product, "identity=?", specs.ProductIdentity).Error + err = impl.DBService.Table("mall_product").Take(&product, "identity=?", specs.ProductIdentity).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB @@ -62,7 +64,7 @@ func OrderCreate(ctx context.Context, in *pb.CreateOrderRequest) (reply *pb.Orde } // 查询产品规格信息。 spec := map[string]any{} - err = models.DBService.Table("mall_product_spec").Take(&spec, "product_identity=? ", specs.ProductIdentity).Error + err = impl.DBService.Table("mall_product_spec").Take(&spec, "product_identity=? ", specs.ProductIdentity).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB @@ -96,7 +98,7 @@ func OrderCreate(ctx context.Context, in *pb.CreateOrderRequest) (reply *pb.Orde // 查询地址信息以确保其存在。 address := map[string]any{} - err = models.DBService.Table("address_library").Take(&address, "identity=?", in.AddressIdentity).Error + err = impl.DBService.Table("address_library").Take(&address, "identity=?", in.AddressIdentity).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB @@ -126,7 +128,7 @@ func OrderCreate(ctx context.Context, in *pb.CreateOrderRequest) (reply *pb.Orde summary.Status = 1 // 将订单摘要和订单详情记录到数据库。 - err = models.DBService.Transaction(func(tx *gorm.DB) error { + err = impl.DBService.Transaction(func(tx *gorm.DB) error { // 创建订单摘要。 if err := tx.Create(summary).Error; err != nil { printer.Error(err.Error()) diff --git a/module/ec/order/internal/logic/mgt/order_get.go b/module/ec/order/internal/logic/mgt/order_get.go index 0700921..15635ba 100644 --- a/module/ec/order/internal/logic/mgt/order_get.go +++ b/module/ec/order/internal/logic/mgt/order_get.go @@ -4,9 +4,11 @@ import ( "context" "errors" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/logic/common" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -41,7 +43,7 @@ func OrderGet(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.OrderGet storeIdentity = ownerStore["store_identity"].(string) } order := &models.OrderSummary{} - err = models.DBService.Model(&models.OrderSummary{}).Where("store_identity = ? and identity=?", storeIdentity, in.Identity).Preload("OrderDetails").Find(&order).Error + err = impl.DBService.Model(&models.OrderSummary{}).Where("store_identity = ? and identity=?", storeIdentity, in.Identity).Preload("OrderDetails").Find(&order).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, errcode.ErrRecordNotFound diff --git a/module/ec/order/internal/logic/mgt/order_list_by_store.go b/module/ec/order/internal/logic/mgt/order_list_by_store.go index 17b0ccb..49db4ef 100644 --- a/module/ec/order/internal/logic/mgt/order_list_by_store.go +++ b/module/ec/order/internal/logic/mgt/order_list_by_store.go @@ -4,9 +4,11 @@ import ( "context" "errors" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/logic/common" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -55,7 +57,7 @@ func OrderListByStore(ctx context.Context, in *pb.OrderListByStoreRequest) (repl } orderList := make([]*models.OrderSummary, 0) - tx := models.DBService.Model(&models.OrderSummary{}).Where("store_identity = ?", storeIdentity).Where("partner_id = ?", auth.ID).Preload("OrderDetails") + tx := impl.DBService.Model(&models.OrderSummary{}).Where("store_identity = ?", storeIdentity).Where("partner_id = ?", auth.ID).Preload("OrderDetails") // 根据状态查询订单 if in.GetStatus() != 0 { tx = tx.Where("status = ?", in.GetStatus()) diff --git a/module/ec/order/internal/logic/mgt/order_modify.go b/module/ec/order/internal/logic/mgt/order_modify.go index 870bfcf..e35ba22 100644 --- a/module/ec/order/internal/logic/mgt/order_modify.go +++ b/module/ec/order/internal/logic/mgt/order_modify.go @@ -5,6 +5,7 @@ import ( "time" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/service" ) diff --git a/module/ec/order/internal/logic/mgt/order_returnable.go b/module/ec/order/internal/logic/mgt/order_returnable.go index 23023f4..bf1d4bf 100644 --- a/module/ec/order/internal/logic/mgt/order_returnable.go +++ b/module/ec/order/internal/logic/mgt/order_returnable.go @@ -5,8 +5,10 @@ import ( "errors" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -29,7 +31,7 @@ func OrderReturnable(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.O // 获取当前订单信息 order := models.OrderSummary{} - if err := models.DBService.Preload("OrderDetails").Where("identity=?", in.Identity).First(&order).Error; err != nil { + if err := impl.DBService.Preload("OrderDetails").Where("identity=?", in.Identity).First(&order).Error; err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB } @@ -44,7 +46,7 @@ func OrderReturnable(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb.O Approve: int8(in.GetApprove()), Reason: in.GetReason(), } - err = models.DBService.Model(&models.OrderSummary{}).Where("identity = ?", in.Identity).Updates(&summaryModel).Error + err = impl.DBService.Model(&models.OrderSummary{}).Where("identity = ?", in.Identity).Updates(&summaryModel).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/summary/cancel.go b/module/ec/order/internal/logic/summary/cancel.go index 7712b57..24a8687 100644 --- a/module/ec/order/internal/logic/summary/cancel.go +++ b/module/ec/order/internal/logic/summary/cancel.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -23,7 +25,7 @@ func Cancel(ctx context.Context, in *pb.CancelRequest) (reply *pb.OrderStatusRep summary = new(models.OrderSummary) ) - err = models.DBService.Where("order_no = ?", in.OrderNo).First(&summary).Error + err = impl.DBService.Where("order_no = ?", in.OrderNo).First(&summary).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB @@ -36,14 +38,14 @@ func Cancel(ctx context.Context, in *pb.CancelRequest) (reply *pb.OrderStatusRep } values.Status = -1 - err := models.DBService.Where("order_no = ?", in.OrderNo).Updates(values).Error + err := impl.DBService.Where("order_no = ?", in.OrderNo).Updates(values).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB } - err = models.DBService.Model(&models.OrderCoupon{}).Where("identity=?", summary.CouponIdentity).Update("status", 2).Error + err = impl.DBService.Model(&models.OrderCoupon{}).Where("identity=?", summary.CouponIdentity).Update("status", 2).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/summary/check.go b/module/ec/order/internal/logic/summary/check.go index 1d8d8eb..0666738 100644 --- a/module/ec/order/internal/logic/summary/check.go +++ b/module/ec/order/internal/logic/summary/check.go @@ -4,8 +4,10 @@ import ( "context" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -21,7 +23,7 @@ func Check(ctx context.Context, in *pb.Empty) (reply *pb.OrderStatusReply, err e var ( summary = new(models.OrderSummary) ) - err = models.DBService.Where("passport_id = ?", auth.ID).First(&summary).Error + err = impl.DBService.Where("passport_id = ?", auth.ID).First(&summary).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/summary/confirm.go b/module/ec/order/internal/logic/summary/confirm.go index b02a873..4aa1d52 100644 --- a/module/ec/order/internal/logic/summary/confirm.go +++ b/module/ec/order/internal/logic/summary/confirm.go @@ -3,8 +3,10 @@ package summary import ( "context" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -25,7 +27,7 @@ func Confirm(ctx context.Context, in *pb.ConfirmRequest) (reply *pb.ConfirmReply coupon = new(models.OrderCoupon) ) - err = models.DBService.Where("order_no = ?", in.OrderNo).First(&summary).Error + err = impl.DBService.Where("order_no = ?", in.OrderNo).First(&summary).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB @@ -33,7 +35,7 @@ func Confirm(ctx context.Context, in *pb.ConfirmRequest) (reply *pb.ConfirmReply if in.AddressIdentity != "" { /* - err = models.DBService.Where("id=?", in.AddressId).First(&address).Error + err = impl.DBService.Where("id=?", in.AddressId).First(&address).Error if err == nil { summary.Address = address.Detail summary.County = address.Country @@ -51,10 +53,10 @@ func Confirm(ctx context.Context, in *pb.ConfirmRequest) (reply *pb.ConfirmReply } if in.CouponIdentity != "" { - err = models.DBService.Where("identity=?", in.CouponIdentity).First(&coupon).Error + err = impl.DBService.Where("identity=?", in.CouponIdentity).First(&coupon).Error if err == nil { if coupon.Status == 2 { - models.DBService.Model(&models.OrderCoupon{}).Where("identity=?", in.CouponIdentity).Update("status", 3) + impl.DBService.Model(&models.OrderCoupon{}).Where("identity=?", in.CouponIdentity).Update("status", 3) couponAmount = coupon.Amount } else { printer.Error(err.Error()) @@ -72,7 +74,7 @@ func Confirm(ctx context.Context, in *pb.ConfirmRequest) (reply *pb.ConfirmReply summary.Status = 1 - err = models.DBService.Where("order_no = ?", in.OrderNo).Updates(summary).Error + err = impl.DBService.Where("order_no = ?", in.OrderNo).Updates(summary).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/summary/get.go b/module/ec/order/internal/logic/summary/get.go index 8b1726a..c4ccc97 100644 --- a/module/ec/order/internal/logic/summary/get.go +++ b/module/ec/order/internal/logic/summary/get.go @@ -5,6 +5,7 @@ import ( "bsm/full/module/ec/order/internal/logic/common" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" diff --git a/module/ec/order/internal/logic/summary/list.go b/module/ec/order/internal/logic/summary/list.go index e662600..1a92609 100644 --- a/module/ec/order/internal/logic/summary/list.go +++ b/module/ec/order/internal/logic/summary/list.go @@ -4,9 +4,11 @@ import ( "context" "errors" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/logic/common" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -43,7 +45,7 @@ func List(ctx context.Context, in *pb.SummaryListRequest) (reply *pb.SummaryList } orderList := make([]*models.OrderSummary, 0) - tx := models.DBService.Model(&models.OrderSummary{}).Preload("OrderDetails").Where("passport_identity = ?", auth.Identity) + tx := impl.DBService.Model(&models.OrderSummary{}).Preload("OrderDetails").Where("passport_identity = ?", auth.Identity) if payType != 0 { tx = tx.Where("pay_type = ?", payType) diff --git a/module/ec/order/internal/logic/summary/quick_create_by_product.go b/module/ec/order/internal/logic/summary/quick_create_by_product.go index bdfa8c3..ec63eb2 100644 --- a/module/ec/order/internal/logic/summary/quick_create_by_product.go +++ b/module/ec/order/internal/logic/summary/quick_create_by_product.go @@ -6,9 +6,11 @@ import ( "strings" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/logic/common" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -30,7 +32,7 @@ func QuickCreateByProduct(ctx context.Context, in *pb.QuickCreateByProductReques // 查询商店信息以确保其存在且状态为启用。 store := map[string]any{} - err = models.DBService.Table("mall_store").Take(&store, "identity=?", in.StoreIdentity).Error + err = impl.DBService.Table("mall_store").Take(&store, "identity=?", in.StoreIdentity).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { @@ -46,9 +48,9 @@ func QuickCreateByProduct(ctx context.Context, in *pb.QuickCreateByProductReques product := map[string]any{} var pi string = strings.ToLower(in.ProductIdentity) if pi == "gas_by_kg" || pi == "gas_by_bottle" { - err = models.DBService.Table("mall_product").Take(&product, "store_identity=? and serial_id=?", in.StoreIdentity, pi).Error + err = impl.DBService.Table("mall_product").Take(&product, "store_identity=? and serial_id=?", in.StoreIdentity, pi).Error } else { - err = models.DBService.Table("mall_product").Take(&product, "identity=?", in.ProductIdentity).Error + err = impl.DBService.Table("mall_product").Take(&product, "identity=?", in.ProductIdentity).Error } if err != nil { printer.Error(err.Error()) @@ -63,7 +65,7 @@ func QuickCreateByProduct(ctx context.Context, in *pb.QuickCreateByProductReques // 查询产品规格信息 spec := map[string]any{} - err = models.DBService.Table("mall_product_spec").Take(&spec, "product_identity=?", in.ProductIdentity).Error + err = impl.DBService.Table("mall_product_spec").Take(&spec, "product_identity=?", in.ProductIdentity).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { @@ -74,7 +76,7 @@ func QuickCreateByProduct(ctx context.Context, in *pb.QuickCreateByProductReques // 查询地址信息以确保其存在。 address := map[string]any{} - err = models.DBService.Table("address_library").Take(&address, "identity=?", in.AddressIdentity).Error + err = impl.DBService.Table("address_library").Take(&address, "identity=?", in.AddressIdentity).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { @@ -85,7 +87,7 @@ func QuickCreateByProduct(ctx context.Context, in *pb.QuickCreateByProductReques // // 查询配送员信息 // member := map[string]any{} - // err = models.DBService.Table("delivery_member").Take(&member, "identity=?", in.MemberIdentity).Error + // err = impl.DBService.Table("delivery_member").Take(&member, "identity=?", in.MemberIdentity).Error // if err != nil { // printer.Error(err.Error()) // if errors.Is(err, models.ErrNotFound) { @@ -144,13 +146,13 @@ func QuickCreateByProduct(ctx context.Context, in *pb.QuickCreateByProductReques } // 将订单摘要和订单详情记录到数据库。 - err = models.DBService.Create(summary).Error + err = impl.DBService.Create(summary).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB } - err = models.DBService.Create(details).Error + err = impl.DBService.Create(details).Error if err != nil { printer.Error(err.Error()) return nil, errcode.ErrDB diff --git a/module/ec/order/internal/logic/summary/simulate_pay.go b/module/ec/order/internal/logic/summary/simulate_pay.go index f2fceb6..bd1d243 100644 --- a/module/ec/order/internal/logic/summary/simulate_pay.go +++ b/module/ec/order/internal/logic/summary/simulate_pay.go @@ -5,8 +5,10 @@ import ( "errors" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -20,7 +22,7 @@ func SimulatePay(ctx context.Context, in *pb.SimulatePayRequest) (reply *pb.Orde return nil, err } - err = models.DBService.Model(&models.OrderSummary{}).Where("identity in ?", in.Identity).Updates(models.OrderSummary{Status: 2, PayTime: time.Now(), PayType: 4, PayRemark: "支付备注", PayTradeNo: "Pay12371937812897", PayAmount: 10000000}).Error + err = impl.DBService.Model(&models.OrderSummary{}).Where("identity in ?", in.Identity).Updates(models.OrderSummary{Status: 2, PayTime: time.Now(), PayType: 4, PayRemark: "支付备注", PayTradeNo: "Pay12371937812897", PayAmount: 10000000}).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { diff --git a/module/ec/order/internal/logic/summary/simulate_receiving.go b/module/ec/order/internal/logic/summary/simulate_receiving.go index 5ae7c5e..5a4e7ad 100644 --- a/module/ec/order/internal/logic/summary/simulate_receiving.go +++ b/module/ec/order/internal/logic/summary/simulate_receiving.go @@ -5,8 +5,10 @@ import ( "errors" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -24,7 +26,7 @@ func SimulateReceiving(ctx context.Context, in *pb.OrderIdentRequest) (reply *pb return nil, errcode.ErrInvalidArgument } - err = models.DBService.Model(&models.OrderSummary{}).Where("identity = ?", in.Identity).Update("status", 4).Error + err = impl.DBService.Model(&models.OrderSummary{}).Where("identity = ?", in.Identity).Update("status", 4).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { diff --git a/module/ec/order/internal/logic/summary/simulate_shipments.go b/module/ec/order/internal/logic/summary/simulate_shipments.go index 7ad2914..edad32d 100644 --- a/module/ec/order/internal/logic/summary/simulate_shipments.go +++ b/module/ec/order/internal/logic/summary/simulate_shipments.go @@ -5,8 +5,10 @@ import ( "errors" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -24,7 +26,7 @@ func SimulateShipments(ctx context.Context, in *pb.SimulateShipmentsRequest) (re return nil, errcode.ErrInvalidArgument } - err = models.DBService.Where("identity = ?", in.Identity).Updates(&models.OrderSummary{Status: 3, DeliveryIdentity: in.MemberIdentity}).Error + err = impl.DBService.Where("identity = ?", in.Identity).Updates(&models.OrderSummary{Status: 3, DeliveryIdentity: in.MemberIdentity}).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { diff --git a/module/ec/order/internal/logic/summary/submit.go b/module/ec/order/internal/logic/summary/submit.go index 3e0d598..91184f1 100644 --- a/module/ec/order/internal/logic/summary/submit.go +++ b/module/ec/order/internal/logic/summary/submit.go @@ -7,9 +7,11 @@ import ( "strings" "time" + "bsm/full/module/ec/order/internal/impl" "bsm/full/module/ec/order/internal/logic/common" "bsm/full/module/ec/order/internal/models" pb "bsm/full/module/ec/order/pb" + "git.apinb.com/bsm-sdk/core/errcode" "git.apinb.com/bsm-sdk/core/printer" "git.apinb.com/bsm-sdk/core/service" @@ -40,7 +42,7 @@ func Submit(ctx context.Context, in *pb.SubmitRequest) (reply *pb.OrderStatusRep ) // 获取购物车内数据信息 - err = models.DBService.Where("passport_identity = ?", auth.Identity).Find(&cart).Error + err = impl.DBService.Where("passport_identity = ?", auth.Identity).Find(&cart).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { @@ -63,7 +65,7 @@ func Submit(ctx context.Context, in *pb.SubmitRequest) (reply *pb.OrderStatusRep ZipCode: in.Address.ZipCode, } } else { - err = models.DBService.Table("address_library").Where("identity = ?", in.AddressIdentity).Find(&address).Error + err = impl.DBService.Table("address_library").Where("identity = ?", in.AddressIdentity).Find(&address).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { @@ -77,7 +79,7 @@ func Submit(ctx context.Context, in *pb.SubmitRequest) (reply *pb.OrderStatusRep storeGroups := make(map[string][]*models.OrderCart) for k, item := range cart { product := models.Product{} - err = models.DBService.Select("store_identity").Table("mall_product").Where("id = ?", item.ProductID).First(&product).Error + err = impl.DBService.Select("store_identity").Table("mall_product").Where("id = ?", item.ProductID).First(&product).Error if err != nil { printer.Error(err.Error()) if errors.Is(err, models.ErrNotFound) { @@ -107,7 +109,7 @@ func Submit(ctx context.Context, in *pb.SubmitRequest) (reply *pb.OrderStatusRep spec := models.Spec{} // 获取产品信息 - err = models.DBService.Select("title,cover_image,cost_price,supply_id,args,gas_types").Table("mall_product"). + err = impl.DBService.Select("title,cover_image,cost_price,supply_id,args,gas_types").Table("mall_product"). Where("id = ?", item.ProductID).First(&product).Error if err != nil { printer.Error(err.Error()) @@ -118,7 +120,7 @@ func Submit(ctx context.Context, in *pb.SubmitRequest) (reply *pb.OrderStatusRep } // 获取规格信息 - err := models.DBService.Select("title,serial_number,price").Table("mall_product_spec"). + err := impl.DBService.Select("title,serial_number,price").Table("mall_product_spec"). Where("id = ?", item.SpecID).First(&spec).Error if err != nil { printer.Error(err.Error()) @@ -182,7 +184,7 @@ func Submit(ctx context.Context, in *pb.SubmitRequest) (reply *pb.OrderStatusRep keys = append(keys, StoreIdentity) } - err = models.DBService.Transaction(func(tx *gorm.DB) error { + err = impl.DBService.Transaction(func(tx *gorm.DB) error { // 1. 创建订单摘要 if err := tx.Create(summary).Error; err != nil { printer.Error(err.Error()) diff --git a/module/ec/order/service/dependencies.go b/module/ec/order/service/dependencies.go new file mode 100644 index 0000000..878bb21 --- /dev/null +++ b/module/ec/order/service/dependencies.go @@ -0,0 +1,29 @@ +package service + +import ( + "bsm/full/module/ec/order/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisCache = deps.Redis + } + if deps.Etcd != nil { + impl.Etcd = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } +} diff --git a/module/ec/order/service/expose.go b/module/ec/order/service/expose.go index 71353be..e6e5c5d 100644 --- a/module/ec/order/service/expose.go +++ b/module/ec/order/service/expose.go @@ -10,11 +10,13 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux } func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) server.New(options.GRPC) ctx := context.Background() diff --git a/module/finance/wallet/service/dependencies.go b/module/finance/wallet/service/dependencies.go new file mode 100644 index 0000000..4339315 --- /dev/null +++ b/module/finance/wallet/service/dependencies.go @@ -0,0 +1,32 @@ +package service + +import ( + "bsm/full/module/finance/wallet/internal/impl" + "git.apinb.com/bsm-sdk/core/cache/redis" + cache "github.com/patrickmn/go-cache" + clientv3 "go.etcd.io/etcd/client/v3" + "gorm.io/gorm" +) + +// Dependencies contains shared infrastructure supplied by the all module. +type Dependencies struct { + Redis *redis.RedisClient + Etcd *clientv3.Client + DB *gorm.DB + Cache *cache.Cache +} + +func applyDependencies(deps Dependencies) { + if deps.Redis != nil { + impl.RedisService = deps.Redis + } + if deps.Etcd != nil { + impl.EtcdService = deps.Etcd + } + if deps.DB != nil { + impl.DBService = deps.DB + } + if deps.Cache != nil { + impl.MemorySerice = deps.Cache + } +} diff --git a/module/finance/wallet/service/expose.go b/module/finance/wallet/service/expose.go index 623ea5f..b572263 100644 --- a/module/finance/wallet/service/expose.go +++ b/module/finance/wallet/service/expose.go @@ -11,6 +11,7 @@ import ( ) type ExposeOptions struct { + Dependencies GRPC *grpc.Server Gateway *gwRuntime.ServeMux Config *Config @@ -19,6 +20,7 @@ type ExposeOptions struct { type Config = config.SrvConfig func Expose(options ExposeOptions) error { + applyDependencies(options.Dependencies) if options.Config != nil { config.Spec = *options.Config } diff --git a/module/social/feed/internal/impl/impl.go b/module/social/feed/internal/impl/impl.go index 21b88aa..cd969d4 100644 --- a/module/social/feed/internal/impl/impl.go +++ b/module/social/feed/internal/impl/impl.go @@ -1,9 +1,9 @@ package impl import ( + "bsm/full/module/social/feed/internal/config" "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/with" - "bsm/full/module/social/feed/internal/config" cache "github.com/patrickmn/go-cache" clientv3 "go.etcd.io/etcd/client/v3" "gorm.io/gorm" diff --git a/module/social/group/internal/impl/impl.go b/module/social/group/internal/impl/impl.go index b4d52e1..4eedcf7 100644 --- a/module/social/group/internal/impl/impl.go +++ b/module/social/group/internal/impl/impl.go @@ -1,9 +1,9 @@ package impl import ( + "bsm/full/module/social/group/internal/config" "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/with" - "bsm/full/module/social/group/internal/config" cache "github.com/patrickmn/go-cache" clientv3 "go.etcd.io/etcd/client/v3" "gorm.io/gorm" diff --git a/module/social/relation/internal/impl/impl.go b/module/social/relation/internal/impl/impl.go index 1846df5..fc895ed 100644 --- a/module/social/relation/internal/impl/impl.go +++ b/module/social/relation/internal/impl/impl.go @@ -1,9 +1,9 @@ package impl import ( + "bsm/full/module/social/relation/internal/config" "git.apinb.com/bsm-sdk/core/cache/redis" "git.apinb.com/bsm-sdk/core/with" - "bsm/full/module/social/relation/internal/config" cache "github.com/patrickmn/go-cache" clientv3 "go.etcd.io/etcd/client/v3" "gorm.io/gorm"