Compare commits
7 Commits
Author | SHA1 | Date |
---|---|---|
|
9943ed0e6e | |
|
fa9ceaddc6 | |
|
87734c972f | |
|
3b283780ab | |
|
cf7e34c61d | |
|
9c3ac59467 | |
|
689afaff97 |
25
main.go
25
main.go
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/format"
|
"go/format"
|
||||||
|
@ -9,6 +10,7 @@ import (
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
"unicode"
|
||||||
|
|
||||||
"git.apinb.com/bsm-tools/protoc-gen-slc/tpl"
|
"git.apinb.com/bsm-tools/protoc-gen-slc/tpl"
|
||||||
|
|
||||||
|
@ -108,13 +110,13 @@ func generateNewServerFile(services []string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateServerFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service) error {
|
func generateServerFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service) error {
|
||||||
filename := fmt.Sprintf("./internal/server/%s_server.go", strings.ToLower(service.GoName))
|
filename := fmt.Sprintf("./internal/server/%s_server.go", toSnakeCase(service.GoName))
|
||||||
moduleName := getModuleName()
|
moduleName := getModuleName()
|
||||||
|
|
||||||
//create servers.
|
//create servers.
|
||||||
code := tpl.Server
|
code := tpl.Server
|
||||||
imports := []string{
|
imports := []string{
|
||||||
"\"" + moduleName + "/internal/logic/" + strings.ToLower(service.GoName) + "\"",
|
"\"" + moduleName + "/internal/logic/" + toSnakeCase(service.GoName) + "\"",
|
||||||
"pb \"" + moduleName + "/pb\"",
|
"pb \"" + moduleName + "/pb\"",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +149,7 @@ func generateServerFile(gen *protogen.Plugin, file *protogen.File, service *prot
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateLogicFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service) error {
|
func generateLogicFile(gen *protogen.Plugin, file *protogen.File, service *protogen.Service) error {
|
||||||
logicPath := "./internal/logic/" + strings.ToLower(service.GoName)
|
logicPath := "./internal/logic/" + toSnakeCase(service.GoName)
|
||||||
if !utils.PathExists(logicPath) {
|
if !utils.PathExists(logicPath) {
|
||||||
os.MkdirAll(logicPath, os.ModePerm)
|
os.MkdirAll(logicPath, os.ModePerm)
|
||||||
}
|
}
|
||||||
|
@ -285,3 +287,20 @@ func parseOptions(comment string) map[string]string {
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CamelToSnake 将驼峰命名转换为下划线命名
|
||||||
|
func CamelToSnake(s string) string {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
for i, r := range s {
|
||||||
|
if unicode.IsUpper(r) {
|
||||||
|
// 如果不是第一个字符,添加下划线
|
||||||
|
if i > 0 {
|
||||||
|
buf.WriteRune('_')
|
||||||
|
}
|
||||||
|
buf.WriteRune(unicode.ToLower(r))
|
||||||
|
} else {
|
||||||
|
buf.WriteRune(r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
|
@ -45,8 +45,8 @@ var FetchValidCode = `
|
||||||
|
|
||||||
var StatusReplyCode = `
|
var StatusReplyCode = `
|
||||||
return &pb.StatusReply{
|
return &pb.StatusReply{
|
||||||
Status: 200,
|
Code: 0,
|
||||||
Message: "ok",
|
Message: "OK",
|
||||||
Timeseq: time.Now().UnixNano(),
|
Timeseq: time.Now().UnixMilli(),
|
||||||
}, nil
|
}, nil
|
||||||
`
|
`
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"git.apinb.com/bsm-sdk/core/vars"
|
"git.apinb.com/bsm-sdk/core/vars"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/reflection"
|
"google.golang.org/grpc/reflection"
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
gwRuntime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
|
gwRuntime "github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -23,7 +24,9 @@ type Server struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(addr string) *Server {
|
func New(addr string) *Server {
|
||||||
srv := &Server{Ctx: context.Background(), Grpc: grpc.NewServer(), Mux: gwRuntime.NewServeMux()}
|
srv := &Server{Ctx: context.Background(), Grpc: grpc.NewServer(), Mux: gwRuntime.NewServeMux(
|
||||||
|
gwRuntime.WithForwardResponseRewriter(responseEnvelope),
|
||||||
|
)}
|
||||||
|
|
||||||
// register service to grpc.Server
|
// register service to grpc.Server
|
||||||
{register}
|
{register}
|
||||||
|
@ -58,6 +61,19 @@ func (s *Server) RegisterSwagger() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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": "OK",
|
||||||
|
"result": response,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|
||||||
var Server = `
|
var Server = `
|
||||||
|
|
Loading…
Reference in New Issue