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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,9 @@
package data
import (
"context"
pb "bsm/full/module/ec/market/pb"
"context"
"git.apinb.com/bsm-sdk/core/service"
)

View File

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

View File

@@ -1,8 +1,9 @@
package data
import (
"context"
pb "bsm/full/module/ec/market/pb"
"context"
"git.apinb.com/bsm-sdk/core/service"
)

View File

@@ -1,8 +1,9 @@
package data
import (
"context"
pb "bsm/full/module/ec/market/pb"
"context"
"git.apinb.com/bsm-sdk/core/service"
)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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