Merge branch 'main' of https://git.apinb.com/bsm-tools/protoc-gen-slc
This commit is contained in:
		
						commit
						0227a0c384
					
				
							
								
								
									
										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