refactor all service dependency injection

This commit is contained in:
2026-08-10 11:35:48 +08:00
parent 007a7ba38a
commit c883cc52a2
152 changed files with 1030 additions and 223 deletions

View File

@@ -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
}

View File

@@ -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())

View File

@@ -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

View File

@@ -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

View File

@@ -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) {

View File

@@ -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

View File

@@ -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
}
}

View File

@@ -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()