Compare commits

...

7 Commits
v0.0.2 ... main

Author SHA1 Message Date
yanweidong 9943ed0e6e fix server name caml 2025-05-01 18:47:38 +08:00
yanweidong fa9ceaddc6 fix logic name caml 2025-05-01 18:42:50 +08:00
yanweidong 87734c972f 更新 tpl/logic.go 2025-04-18 12:14:38 +08:00
yanweidong 3b283780ab 更新 tpl/server.go 2025-04-17 23:24:09 +08:00
yanweidong cf7e34c61d 更新 tpl/server.go 2025-04-17 23:16:13 +08:00
yanweidong 9c3ac59467 更新 tpl/logic.go 2025-04-17 22:02:56 +08:00
yanweidong 689afaff97 更新 tpl/logic.go 2025-04-17 16:35:07 +08:00
3 changed files with 42 additions and 7 deletions

25
main.go
View File

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

View File

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

View File

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