refactor: reorganize modules and add Linux build tooling

This commit is contained in:
2026-08-09 12:41:08 +08:00
parent 86024fa81d
commit 5cc5fd92ed
1461 changed files with 4054 additions and 4724 deletions

View File

@@ -0,0 +1,31 @@
// Code generated by protoc-gen-slc. DO NOT EDIT.
package server
import (
"context"
"bsm/full/module/base/initial/internal/logic/check"
pb "bsm/full/module/base/initial/pb"
)
type CheckServer struct {
pb.UnimplementedCheckServer
}
func NewCheckServer() *CheckServer {
return &CheckServer{}
}
// HELLO
func (s *CheckServer) Hello(ctx context.Context, in *pb.Crc) (*pb.StatusReply, error) {
return check.Hello(ctx, in)
}
// 获取应用的相关配置信息
func (s *CheckServer) Config(ctx context.Context, in *pb.ConfigRequest) (*pb.ConfigReply, error) {
return check.Config(ctx, in)
}
// 检查更新
func (s *CheckServer) Updates(ctx context.Context, in *pb.CheckForUpdatesRequest) (*pb.CheckForUpdatesReply, error) {
return check.Updates(ctx, in)
}

View File

@@ -0,0 +1,30 @@
// Code generated by protoc-gen-slc. DO NOT EDIT.
package server
import (
"context"
"bsm/full/module/base/initial/internal/logic/data"
pb "bsm/full/module/base/initial/pb"
)
type DataServer struct {
pb.UnimplementedDataServer
}
func NewDataServer() *DataServer {
return &DataServer{}
}
func (s *DataServer) Country(ctx context.Context, in *pb.Empty) (*pb.CountryReply, error) {
return data.Country(ctx, in)
}
// 系统区域数据,默认级别:市
func (s *DataServer) Areas(ctx context.Context, in *pb.AreasRequest) (*pb.AreasReply, error) {
return data.Areas(ctx, in)
}
// 系统数据
func (s *DataServer) Datas(ctx context.Context, in *pb.Empty) (*pb.DatasReply, error) {
return data.Datas(ctx, in)
}

View File

@@ -0,0 +1,96 @@
// Code generated by protoc-gen-slc. DO NOT EDIT.
package server
import (
"context"
pb "bsm/full/module/base/initial/pb"
"git.apinb.com/bsm-sdk/core/vars"
gwRuntime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"google.golang.org/grpc/reflection"
"google.golang.org/protobuf/proto"
"net/http"
"os"
"strings"
"time"
)
type Server struct {
Grpc *grpc.Server
Ctx context.Context
Mux *gwRuntime.ServeMux
grpcConns map[string]*grpc.ClientConn // 连接池
}
func New(addr string) *Server {
srv := &Server{
Ctx: context.Background(),
Grpc: grpc.NewServer(),
Mux: gwRuntime.NewServeMux(gwRuntime.WithForwardResponseRewriter(responseEnvelope)),
grpcConns: make(map[string]*grpc.ClientConn),
}
// register service to grpc.Server
pb.RegisterCheckServer(srv.Grpc, NewCheckServer())
pb.RegisterDataServer(srv.Grpc, NewDataServer())
reflection.Register(srv.Grpc)
// 连接池: 只创建一次连接并复用
conn, ok := srv.grpcConns[addr]
if !ok {
var err error
conn, err = grpc.NewClient(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
panic("failed to dial grpc server: " + err.Error())
}
srv.grpcConns[addr] = conn
}
// 将服务注册到Gateway
if err := pb.RegisterCheckHandler(srv.Ctx, srv.Mux, conn); err != nil {
panic("Failed to register Check handler: " + err.Error())
}
if err := pb.RegisterDataHandler(srv.Ctx, srv.Mux, conn); err != nil {
panic("Failed to register Data handler: " + err.Error())
}
// Register services swagger
srv.RegisterSwagger()
return srv
}
// RegisterSwagger 注册swagger
func (s *Server) RegisterSwagger() {
srvKey := strings.ToLower(vars.ServiceKey)
s.Mux.HandlePath("GET", "/"+srvKey+".swagger.json", func(w http.ResponseWriter, r *http.Request, pathParams map[string]string) {
w.Header().Set("Content-Type", "application/json")
bytes, err := os.ReadFile("./swagger/" + srvKey + ".swagger.json")
if err != nil {
w.WriteHeader(http.StatusNotFound)
w.Write([]byte(err.Error()))
return
}
w.Write(bytes)
return
})
}
// response envelope
func responseEnvelope(_ context.Context, response proto.Message) (interface{}, error) {
name := string(response.ProtoReflect().Descriptor().Name())
if name == "Status" || name == "Error" || name == "StatusReply" {
return response, nil
}
return map[string]any{
"code": 0,
"message": vars.OK,
"details": response,
"timeseq": time.Now().Unix(),
}, nil
}