更新依赖和调整目录结构,未修改模块
This commit is contained in:
20
pkgs/ecmall/internal/service/address.go
Normal file
20
pkgs/ecmall/internal/service/address.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/ec/address/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/ads.go
Normal file
20
pkgs/ecmall/internal/service/ads.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/ads/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/cms.go
Normal file
20
pkgs/ecmall/internal/service/cms.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/cms/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/feedback.go
Normal file
20
pkgs/ecmall/internal/service/feedback.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/feedback/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
16
pkgs/ecmall/internal/service/fts.go
Normal file
16
pkgs/ecmall/internal/service/fts.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/fts/service"
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
func exposeFTS(srv *server.Server) error {
|
||||
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,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/initial.go
Normal file
20
pkgs/ecmall/internal/service/initial.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/initial/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
14
pkgs/ecmall/internal/service/logs.go
Normal file
14
pkgs/ecmall/internal/service/logs.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/logs/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
func exposeLogs(srv *server.Server) error {
|
||||
return moduleService.Expose(moduleService.ExposeOptions{
|
||||
Dependencies: moduleService.Dependencies{Redis: impl.RedisService, Etcd: impl.EtcdService, DB: impl.DBService, Cache: impl.MemoryService},
|
||||
Engine: srv.HTTP,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/mall.go
Normal file
20
pkgs/ecmall/internal/service/mall.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/ec/mall/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/market.go
Normal file
20
pkgs/ecmall/internal/service/market.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/ec/market/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
16
pkgs/ecmall/internal/service/mgt.go
Normal file
16
pkgs/ecmall/internal/service/mgt.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/mgt/service"
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
func exposeMgt(srv *server.Server) error {
|
||||
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,
|
||||
})
|
||||
}
|
||||
20
pkgs/ecmall/internal/service/order.go
Normal file
20
pkgs/ecmall/internal/service/order.go
Normal file
@@ -0,0 +1,20 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/ec/order/service"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
22
pkgs/ecmall/internal/service/passport.go
Normal file
22
pkgs/ecmall/internal/service/passport.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/passport/service"
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
22
pkgs/ecmall/internal/service/sender.go
Normal file
22
pkgs/ecmall/internal/service/sender.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/base/sender/service"
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
45
pkgs/ecmall/internal/service/service.go
Normal file
45
pkgs/ecmall/internal/service/service.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
"github.com/gin-contrib/sessions"
|
||||
"github.com/gin-contrib/sessions/cookie"
|
||||
)
|
||||
|
||||
type exposeFunc func(*server.Server) error
|
||||
|
||||
var services = []struct {
|
||||
name string
|
||||
expose exposeFunc
|
||||
}{
|
||||
{"ads", exposeAds},
|
||||
{"cms", exposeCMS},
|
||||
{"feedback", exposeFeedback},
|
||||
{"fts", exposeFTS},
|
||||
{"initial", exposeInitial},
|
||||
{"logs", exposeLogs},
|
||||
{"mgt", exposeMgt},
|
||||
{"passport", exposePassport},
|
||||
{"sender", exposeSender},
|
||||
{"address", exposeAddress},
|
||||
{"mall", exposeMall},
|
||||
{"market", exposeMarket},
|
||||
{"order", exposeOrder},
|
||||
{"wallet", exposeWallet},
|
||||
}
|
||||
|
||||
func Expose(srv *server.Server) error {
|
||||
srv.HTTP.Use(sessions.Sessions("mysession", cookie.NewStore([]byte(config.Spec.SecretKey+"-session"))))
|
||||
for _, item := range services {
|
||||
if !config.Enabled(item.name) {
|
||||
continue
|
||||
}
|
||||
if err := item.expose(srv); err != nil {
|
||||
return fmt.Errorf("expose %s: %w", item.name, err)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
62
pkgs/ecmall/internal/service/service_test.go
Normal file
62
pkgs/ecmall/internal/service/service_test.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
ecmallserver "bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
// TestExposeRegistersPlatformModules guards the aggregate registry: the
|
||||
// platform modules (ads, cms, feedback, fts, logs, mgt) must contribute their
|
||||
// gRPC services and their native REST routes through service.Expose, and the
|
||||
// gRPC-only modules must keep contributing theirs.
|
||||
func TestExposeRegistersPlatformModules(t *testing.T) {
|
||||
t.Setenv("BSM_SERVICES", "")
|
||||
config.Spec.Services = []string{"all"}
|
||||
|
||||
srv, err := ecmallserver.New("0123456789abcdef0123456789abcdef", 3600, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("new server: %v", err)
|
||||
}
|
||||
if err := Expose(srv); err != nil {
|
||||
t.Fatalf("expose: %v", err)
|
||||
}
|
||||
|
||||
services := make(map[string]bool)
|
||||
for name := range srv.GRPC.GetServiceInfo() {
|
||||
services[name] = true
|
||||
}
|
||||
for _, prefix := range []string{"ads.", "cms.", "feedback.", "address.", "mall.", "market.", "order.", "passport.", "sender.", "wallet.", "initial."} {
|
||||
if !hasPrefix(services, prefix) {
|
||||
t.Errorf("gRPC service with prefix %q is not registered", prefix)
|
||||
}
|
||||
}
|
||||
|
||||
routes := make(map[string]bool)
|
||||
for _, route := range srv.HTTP.Routes() {
|
||||
routes[route.Method+" "+route.Path] = true
|
||||
}
|
||||
for _, path := range []string{
|
||||
"GET /rest/fts/ping",
|
||||
"GET /rest/fts/config",
|
||||
"POST /rest/fts/uploader",
|
||||
"GET /rest/logs/ping",
|
||||
"GET /rest/mgt/ping",
|
||||
"POST /rest/mgt/login",
|
||||
} {
|
||||
if !routes[path] {
|
||||
t.Errorf("native REST route %q is not registered", path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func hasPrefix(names map[string]bool, prefix string) bool {
|
||||
for name := range names {
|
||||
if strings.HasPrefix(name, prefix) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
22
pkgs/ecmall/internal/service/wallet.go
Normal file
22
pkgs/ecmall/internal/service/wallet.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
moduleService "bsm/full/module/finance/wallet/service"
|
||||
"bsm/full/pkgs/ecmall/internal/config"
|
||||
"bsm/full/pkgs/ecmall/internal/impl"
|
||||
"bsm/full/pkgs/ecmall/internal/server"
|
||||
)
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user