init
This commit is contained in:
commit
e923d85241
|
@ -0,0 +1,134 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package passport;
|
||||||
|
option go_package = "./passport";
|
||||||
|
|
||||||
|
// D:\work\bsm\bsm-tools\merge\proto\a.proto START
|
||||||
|
|
||||||
|
|
||||||
|
// Passport-通行证模块-登录
|
||||||
|
service Login{
|
||||||
|
// 通过密码登录
|
||||||
|
rpc Pwd(LoginByPwdRequest) returns (LoginReply) {}
|
||||||
|
|
||||||
|
// 通过验证码登录
|
||||||
|
rpc Code(LoginByCodeRequest) returns (LoginReply) {}
|
||||||
|
|
||||||
|
// 通过Wechat登录
|
||||||
|
rpc WeChatByCode(WeChatByCodeRequest) returns (WeChatByCodeReply) {}
|
||||||
|
rpc WeChatByPhone(WeChatByPhoneRequest) returns (WeChatByPhoneReply) {}
|
||||||
|
rpc WeChatGetUserinfo(WeChatByPhoneRequest) returns (WeChatGetUserinfoReply) {}
|
||||||
|
|
||||||
|
// 通过AppleID登录
|
||||||
|
rpc AppleID(LoginByAppleIDRequest) returns (LoginReply) {}
|
||||||
|
|
||||||
|
// 通过验证码登录并注册
|
||||||
|
rpc CodeAndRegister(LoginByCodeRequest) returns (LoginReply) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message LoginByPwdRequest {
|
||||||
|
string account = 1; // 账号 必填
|
||||||
|
string password = 2; // 密码 必填
|
||||||
|
string device = 3; // 设备 必填
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message LoginByCodeRequest {
|
||||||
|
string country = 1; // 国家
|
||||||
|
string phone = 2; // 手机号码
|
||||||
|
string code = 3; // 验证码
|
||||||
|
string device = 4;// 设备
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByCodeRequest {
|
||||||
|
string code = 1; // WeChat code
|
||||||
|
int64 agency_id=2; // 代理ID
|
||||||
|
int64 staff_id=3; // 工作人员ID
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByPhoneReply {
|
||||||
|
string account = 1; // WeChat code
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByCodeReply {
|
||||||
|
string session_key = 1; // WeChat session key
|
||||||
|
string open_id = 2; // WeChat open id
|
||||||
|
string identity = 3; // identity
|
||||||
|
string account = 4; // account
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByPhoneRequest {
|
||||||
|
string session_key = 1; // WeChat session key
|
||||||
|
string open_id = 2; // open_id
|
||||||
|
string data = 3; // data
|
||||||
|
string iv = 4; // iv
|
||||||
|
string identity = 5; // identiy
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatGetUserinfoReply {
|
||||||
|
int64 id=1;
|
||||||
|
string account=2;
|
||||||
|
string identity=3;
|
||||||
|
string nickname=4;
|
||||||
|
string avatar=5;
|
||||||
|
string rights=6;
|
||||||
|
string token=7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LoginByAppleIDRequest {
|
||||||
|
string apple_id = 1; // apple id
|
||||||
|
string desc = 2; // 描述
|
||||||
|
string device = 3;// 设备
|
||||||
|
}
|
||||||
|
|
||||||
|
message LoginReply {
|
||||||
|
string identity = 1; //用户唯一码
|
||||||
|
string data_bind = 2; // 数据绑定的相关说明,PASS通过,NOPHONE没有绑定手机号,NOPWD没有设置密码,NOBIND没有手机号同时没有密码
|
||||||
|
string token = 3; //用户凭证
|
||||||
|
map<string, string> extend = 4; //扩展字段
|
||||||
|
}
|
||||||
|
|
||||||
|
// END
|
||||||
|
|
||||||
|
|
||||||
|
// D:\work\bsm\bsm-tools\merge\proto\b.proto START
|
||||||
|
|
||||||
|
// Passport-通行证模块-注册
|
||||||
|
service Register{
|
||||||
|
// 帐号密码注册
|
||||||
|
rpc Pwd(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
|
||||||
|
// 手机验证码注册
|
||||||
|
rpc Code(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
|
||||||
|
// Wechat注册
|
||||||
|
rpc WeChat(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
|
||||||
|
// AppleID注册
|
||||||
|
rpc AppleID(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message RegisterRequest {
|
||||||
|
string origin = 1; //来源,归属
|
||||||
|
string account = 2; //帐号
|
||||||
|
string phone = 3; //手机号
|
||||||
|
string password = 4; //密码
|
||||||
|
string code = 5; //验证码
|
||||||
|
string wechat_union_id = 6; //微信UnionID
|
||||||
|
string wechat_open_id = 7; //微信OpenID
|
||||||
|
string apple_id = 8; //Apple ID
|
||||||
|
string nickname = 9; //昵称
|
||||||
|
string type = 10; //类型
|
||||||
|
string device = 11; //设备
|
||||||
|
int64 agency_id=12; // 代理ID
|
||||||
|
int64 staff_id=13; // 工作人员ID
|
||||||
|
}
|
||||||
|
|
||||||
|
message RegisterReply {
|
||||||
|
string identity = 1; //用户唯一码
|
||||||
|
string data_bind = 2; // 数据绑定的相关说明,PASS通过,NOPHONE没有绑定手机号,NOPWD没有设置密码,NOBIND没有手机号同时没有密码
|
||||||
|
string token = 3; //用户Header所需Token
|
||||||
|
map<string, string> extend = 4; //扩展字段
|
||||||
|
}
|
||||||
|
// END
|
|
@ -0,0 +1,185 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bufio"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// merge ./*.proto auto_gen.proto
|
||||||
|
func main() {
|
||||||
|
if len(os.Args) < 2 {
|
||||||
|
fmt.Println("Args error, eg: proto-merge ./*.proto auto_gen.proto")
|
||||||
|
os.Exit(0)
|
||||||
|
} else {
|
||||||
|
in := os.Args[1]
|
||||||
|
out := os.Args[2]
|
||||||
|
fmt.Println("Merge In:", in, "Out:", out)
|
||||||
|
|
||||||
|
files, err := FindFilesByPattern(in)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
files = IsPorotFile(files)
|
||||||
|
|
||||||
|
// 合并
|
||||||
|
var mergeLins []string
|
||||||
|
genHeader := make(map[string]string)
|
||||||
|
|
||||||
|
var protoHeader []string
|
||||||
|
protoHeader = append(protoHeader, "syntax = \"proto3\";")
|
||||||
|
|
||||||
|
for _, file := range files {
|
||||||
|
mergeLins = append(mergeLins, "")
|
||||||
|
mergeLins = append(mergeLins, "// "+file+" START")
|
||||||
|
|
||||||
|
header, lines := scanProtoFile(file)
|
||||||
|
mergeLins = append(mergeLins, lines...)
|
||||||
|
|
||||||
|
mergeLins = append(mergeLins, "// END")
|
||||||
|
mergeLins = append(mergeLins, "")
|
||||||
|
|
||||||
|
for key, val := range header {
|
||||||
|
genHeader[key] = val
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range genHeader {
|
||||||
|
|
||||||
|
if k == "package" {
|
||||||
|
protoHeader = append(protoHeader, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range genHeader {
|
||||||
|
if k == "option" {
|
||||||
|
protoHeader = append(protoHeader, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var body []string
|
||||||
|
body = append(body, protoHeader...)
|
||||||
|
body = append(body, mergeLins...)
|
||||||
|
|
||||||
|
// 输出
|
||||||
|
err = StringToFile(out, strings.Join(body, "\n"))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
} else {
|
||||||
|
fmt.Println("Merge OK!")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindFilesByPattern takes a combined string of directory and pattern and returns a slice of matching file names.
|
||||||
|
func FindFilesByPattern(pathWithPattern string) ([]string, error) {
|
||||||
|
// 使用Glob函数查找匹配的文件
|
||||||
|
files, err := filepath.Glob(pathWithPattern)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err // 如果发生错误,返回错误信息
|
||||||
|
}
|
||||||
|
|
||||||
|
// 返回文件名切片
|
||||||
|
baseFileName := filepath.Base(pathWithPattern)
|
||||||
|
|
||||||
|
absPath, err := filepath.Abs(pathWithPattern)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
dirPath := strings.ReplaceAll(absPath, baseFileName, "")
|
||||||
|
|
||||||
|
for idx, v := range files {
|
||||||
|
bfn := filepath.Base(v)
|
||||||
|
files[idx] = dirPath + bfn
|
||||||
|
}
|
||||||
|
|
||||||
|
return files, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func IsPorotFile(in []string) []string {
|
||||||
|
var ok []string
|
||||||
|
|
||||||
|
for _, v := range in {
|
||||||
|
body, err := os.ReadFile(v)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err.Error())
|
||||||
|
}
|
||||||
|
if strings.Contains(string(body), "proto3") {
|
||||||
|
ok = append(ok, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return ok
|
||||||
|
}
|
||||||
|
|
||||||
|
func scanProtoFile(filePath string) (map[string]string, []string) {
|
||||||
|
file, err := os.Open(filePath)
|
||||||
|
if err != nil {
|
||||||
|
panic("无法打开文件")
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(file)
|
||||||
|
var bodys []string
|
||||||
|
var header map[string]string = make(map[string]string)
|
||||||
|
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
|
||||||
|
/*
|
||||||
|
line = strings.Trim(line, "")
|
||||||
|
line = strings.ReplaceAll(line, "\r\n", "")
|
||||||
|
line = strings.ReplaceAll(line, "\n", "")
|
||||||
|
*/
|
||||||
|
|
||||||
|
//if line != "" {
|
||||||
|
key, isSysTag := containsSysTag(line)
|
||||||
|
if isSysTag {
|
||||||
|
header[key] = line
|
||||||
|
} else {
|
||||||
|
bodys = append(bodys, line)
|
||||||
|
}
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
return header, bodys
|
||||||
|
}
|
||||||
|
|
||||||
|
func containsSysTag(line string) (string, bool) {
|
||||||
|
var tags []string = []string{"syntax", "package", "option", "import"}
|
||||||
|
|
||||||
|
for _, v := range tags {
|
||||||
|
if len(line) >= len(v) {
|
||||||
|
if line[0:len(v)] == v {
|
||||||
|
|
||||||
|
return v, true
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return "", false
|
||||||
|
}
|
||||||
|
|
||||||
|
func StringToFile(path, content string) error {
|
||||||
|
startF, err := os.Create(path)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("os.Create create file " + path + " error:" + err.Error())
|
||||||
|
}
|
||||||
|
defer startF.Close()
|
||||||
|
_, err = io.WriteString(startF, content)
|
||||||
|
if err != nil {
|
||||||
|
return errors.New("io.WriteString to " + path + " error:" + err.Error())
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package passport;
|
||||||
|
option go_package = "./passport";
|
||||||
|
|
||||||
|
|
||||||
|
// Passport-通行证模块-登录
|
||||||
|
service Login{
|
||||||
|
// 通过密码登录
|
||||||
|
rpc Pwd(LoginByPwdRequest) returns (LoginReply) {}
|
||||||
|
|
||||||
|
// 通过验证码登录
|
||||||
|
rpc Code(LoginByCodeRequest) returns (LoginReply) {}
|
||||||
|
|
||||||
|
// 通过Wechat登录
|
||||||
|
rpc WeChatByCode(WeChatByCodeRequest) returns (WeChatByCodeReply) {}
|
||||||
|
rpc WeChatByPhone(WeChatByPhoneRequest) returns (WeChatByPhoneReply) {}
|
||||||
|
rpc WeChatGetUserinfo(WeChatByPhoneRequest) returns (WeChatGetUserinfoReply) {}
|
||||||
|
|
||||||
|
// 通过AppleID登录
|
||||||
|
rpc AppleID(LoginByAppleIDRequest) returns (LoginReply) {}
|
||||||
|
|
||||||
|
// 通过验证码登录并注册
|
||||||
|
rpc CodeAndRegister(LoginByCodeRequest) returns (LoginReply) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message LoginByPwdRequest {
|
||||||
|
string account = 1; // 账号 必填
|
||||||
|
string password = 2; // 密码 必填
|
||||||
|
string device = 3; // 设备 必填
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message LoginByCodeRequest {
|
||||||
|
string country = 1; // 国家
|
||||||
|
string phone = 2; // 手机号码
|
||||||
|
string code = 3; // 验证码
|
||||||
|
string device = 4;// 设备
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByCodeRequest {
|
||||||
|
string code = 1; // WeChat code
|
||||||
|
int64 agency_id=2; // 代理ID
|
||||||
|
int64 staff_id=3; // 工作人员ID
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByPhoneReply {
|
||||||
|
string account = 1; // WeChat code
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByCodeReply {
|
||||||
|
string session_key = 1; // WeChat session key
|
||||||
|
string open_id = 2; // WeChat open id
|
||||||
|
string identity = 3; // identity
|
||||||
|
string account = 4; // account
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatByPhoneRequest {
|
||||||
|
string session_key = 1; // WeChat session key
|
||||||
|
string open_id = 2; // open_id
|
||||||
|
string data = 3; // data
|
||||||
|
string iv = 4; // iv
|
||||||
|
string identity = 5; // identiy
|
||||||
|
}
|
||||||
|
|
||||||
|
message WeChatGetUserinfoReply {
|
||||||
|
int64 id=1;
|
||||||
|
string account=2;
|
||||||
|
string identity=3;
|
||||||
|
string nickname=4;
|
||||||
|
string avatar=5;
|
||||||
|
string rights=6;
|
||||||
|
string token=7;
|
||||||
|
}
|
||||||
|
|
||||||
|
message LoginByAppleIDRequest {
|
||||||
|
string apple_id = 1; // apple id
|
||||||
|
string desc = 2; // 描述
|
||||||
|
string device = 3;// 设备
|
||||||
|
}
|
||||||
|
|
||||||
|
message LoginReply {
|
||||||
|
string identity = 1; //用户唯一码
|
||||||
|
string data_bind = 2; // 数据绑定的相关说明,PASS通过,NOPHONE没有绑定手机号,NOPWD没有设置密码,NOBIND没有手机号同时没有密码
|
||||||
|
string token = 3; //用户凭证
|
||||||
|
map<string, string> extend = 4; //扩展字段
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package passport;
|
||||||
|
option go_package = "./passport";
|
||||||
|
|
||||||
|
// Passport-通行证模块-注册
|
||||||
|
service Register{
|
||||||
|
// 帐号密码注册
|
||||||
|
rpc Pwd(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
|
||||||
|
// 手机验证码注册
|
||||||
|
rpc Code(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
|
||||||
|
// Wechat注册
|
||||||
|
rpc WeChat(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
|
||||||
|
// AppleID注册
|
||||||
|
rpc AppleID(RegisterRequest) returns (RegisterReply) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message RegisterRequest {
|
||||||
|
string origin = 1; //来源,归属
|
||||||
|
string account = 2; //帐号
|
||||||
|
string phone = 3; //手机号
|
||||||
|
string password = 4; //密码
|
||||||
|
string code = 5; //验证码
|
||||||
|
string wechat_union_id = 6; //微信UnionID
|
||||||
|
string wechat_open_id = 7; //微信OpenID
|
||||||
|
string apple_id = 8; //Apple ID
|
||||||
|
string nickname = 9; //昵称
|
||||||
|
string type = 10; //类型
|
||||||
|
string device = 11; //设备
|
||||||
|
int64 agency_id=12; // 代理ID
|
||||||
|
int64 staff_id=13; // 工作人员ID
|
||||||
|
}
|
||||||
|
|
||||||
|
message RegisterReply {
|
||||||
|
string identity = 1; //用户唯一码
|
||||||
|
string data_bind = 2; // 数据绑定的相关说明,PASS通过,NOPHONE没有绑定手机号,NOPWD没有设置密码,NOBIND没有手机号同时没有密码
|
||||||
|
string token = 3; //用户Header所需Token
|
||||||
|
map<string, string> extend = 4; //扩展字段
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
this is test file
|
Loading…
Reference in New Issue