From 30ba2e89942b879247860c42aed2aebf255c3d1c Mon Sep 17 00:00:00 2001 From: "DESKTOP-V763RJ7\\Administrator" <835606593@qq.com> Date: Sat, 24 Jan 2026 11:15:41 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Proto/RpcServer/gen/api.swagger.json | 324 ++++- .../proto/rs/grpc_pb/service_qgdzs.pb.go | 1219 +++++++++++++++++ .../proto/rs/grpc_pb/service_qgdzs.pb.gw.go | 469 +++++++ .../proto/rs/grpc_pb/service_qgdzs_grpc.pb.go | 297 ++++ .../proto/rs/grpc_pb/service_user.pb.go | 662 +++------ .../proto/rs/grpc_pb/service_user.pb.gw.go | 197 +-- .../proto/rs/grpc_pb/service_user_grpc.pb.go | 178 +-- Proto/RpcServer/sources/service_qgdzs.proto | 124 ++ Proto/RpcServer/sources/service_user.proto | 74 +- Publish/doc.txt | 49 +- Publish/docker-compose-clash.yml | 11 + Publish/docker-compose-jaeger.yml | 9 + Publish/docker-compose-kafka.yml | 33 + Publish/docker-compose-metric.yml | 1 + Publish/docker-compose-vpn.yml | 46 + Publish/prometheus-service.json | 34 + Publish/tunnel.ps1 | 12 + .../qgdzs_db/model/categories.gen.go | 37 + .../model/questions.gen.go | 6 +- .../mysql_model/qgdzs_db/model/records.gen.go | 40 + .../qgdzs_db/query/categories.gen.go | 347 +++++ Tools/mysql_model/qgdzs_db/query/gen.go | 105 ++ .../query/questions.gen.go | 10 +- .../mysql_model/qgdzs_db/query/records.gen.go | 359 +++++ Tools/mysql_model/user_db/model/users.gen.go | 20 +- Tools/mysql_model/user_db/query/gen.go | 24 +- Tools/mysql_model/user_db/query/users.gen.go | 26 +- 27 files changed, 3783 insertions(+), 930 deletions(-) create mode 100644 Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.go create mode 100644 Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.gw.go create mode 100644 Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs_grpc.pb.go create mode 100644 Proto/RpcServer/sources/service_qgdzs.proto create mode 100644 Publish/docker-compose-clash.yml create mode 100644 Publish/docker-compose-jaeger.yml create mode 100644 Publish/docker-compose-kafka.yml create mode 100644 Publish/docker-compose-vpn.yml create mode 100644 Publish/prometheus-service.json create mode 100644 Publish/tunnel.ps1 create mode 100644 Tools/mysql_model/qgdzs_db/model/categories.gen.go rename Tools/mysql_model/{user_db => qgdzs_db}/model/questions.gen.go (89%) create mode 100644 Tools/mysql_model/qgdzs_db/model/records.gen.go create mode 100644 Tools/mysql_model/qgdzs_db/query/categories.gen.go create mode 100644 Tools/mysql_model/qgdzs_db/query/gen.go rename Tools/mysql_model/{user_db => qgdzs_db}/query/questions.gen.go (97%) create mode 100644 Tools/mysql_model/qgdzs_db/query/records.gen.go diff --git a/Proto/RpcServer/gen/api.swagger.json b/Proto/RpcServer/gen/api.swagger.json index 3fb2d67..4409c0a 100644 --- a/Proto/RpcServer/gen/api.swagger.json +++ b/Proto/RpcServer/gen/api.swagger.json @@ -8,6 +8,9 @@ { "name": "Gateway" }, + { + "name": "Qgdzs" + }, { "name": "Scene" }, @@ -22,37 +25,10 @@ "application/json" ], "paths": { - "/user/answer_question": { - "post": { - "summary": "回答题目", - "operationId": "User_AnswerQuestion", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/AnswerQuestionResp" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/AnswerQuestionReq" - } - } - ], - "tags": [ - "User" - ] - } - }, - "/user/generate_question": { + "/qgdzs/auth/generate_question": { "post": { "summary": "生成题目", - "operationId": "User_GenerateQuestion", + "operationId": "Qgdzs_GenerateQuestion", "responses": { "200": { "description": "A successful response.", @@ -72,14 +48,95 @@ } ], "tags": [ - "User" + "Qgdzs" ] } }, - "/user/get_question": { + "/qgdzs/auth/get_record": { + "post": { + "summary": "获取答题记录", + "operationId": "Qgdzs_GetRecord", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetRecordResp" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/GetRecordReq" + } + } + ], + "tags": [ + "Qgdzs" + ] + } + }, + "/qgdzs/open/answer_question": { + "post": { + "summary": "回答题目", + "operationId": "Qgdzs_AnswerQuestion", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/AnswerQuestionResp" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/AnswerQuestionReq" + } + } + ], + "tags": [ + "Qgdzs" + ] + } + }, + "/qgdzs/open/get_all_category": { + "post": { + "summary": "获取所有类目", + "operationId": "Qgdzs_GetAllCategory", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetAllCategoryResp" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/GetAllCategoryReq" + } + } + ], + "tags": [ + "Qgdzs" + ] + } + }, + "/qgdzs/open/get_question": { "post": { "summary": "获取题目", - "operationId": "User_GetQuestion", + "operationId": "Qgdzs_GetQuestion", "responses": { "200": { "description": "A successful response.", @@ -99,11 +156,38 @@ } ], "tags": [ - "User" + "Qgdzs" ] } }, - "/user/info": { + "/qgdzs/open/get_question_info": { + "post": { + "summary": "获取具体的题目", + "operationId": "Qgdzs_GetQuestionInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/GetQuestionInfoResp" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/GetQuestionInfoReq" + } + } + ], + "tags": [ + "Qgdzs" + ] + } + }, + "/user/auth/info": { "post": { "summary": "获取用户信息", "operationId": "User_GetUserInfo", @@ -138,6 +222,9 @@ "AnswerQuestionReq": { "type": "object", "properties": { + "usn": { + "type": "string" + }, "sn": { "type": "string", "title": "题目唯一标识" @@ -203,8 +290,83 @@ "GenerateQuestionResp": { "type": "object" }, + "GetAllCategoryItem": { + "type": "object", + "properties": { + "sn": { + "type": "string", + "title": "唯一标识" + }, + "category": { + "type": "string", + "title": "类目" + } + } + }, + "GetAllCategoryReq": { + "type": "object", + "title": "---------- GetAllCategory ----------" + }, + "GetAllCategoryResp": { + "type": "object", + "properties": { + "categories": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/GetAllCategoryItem" + }, + "title": "类目" + } + } + }, + "GetQuestionInfoReq": { + "type": "object", + "properties": { + "question_sn": { + "type": "string", + "title": "题目唯一标识" + } + }, + "title": "---------- GetQuestionInfo ----------" + }, + "GetQuestionInfoResp": { + "type": "object", + "properties": { + "question": { + "type": "string", + "title": "题干" + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "title": "选项" + }, + "category": { + "type": "string", + "title": "类目" + }, + "difficulty": { + "type": "integer", + "format": "int32", + "title": "难度" + }, + "explanation": { + "type": "string", + "title": "解析" + } + } + }, "GetQuestionReq": { "type": "object", + "properties": { + "category_sn": { + "type": "string", + "title": "类目唯一标识" + } + }, "title": "---------- GetQuestion ----------" }, "GetQuestionResp": { @@ -224,6 +386,85 @@ "type": "string" }, "title": "选项" + }, + "category": { + "type": "string", + "title": "题目类型" + }, + "difficulty": { + "type": "integer", + "format": "int32", + "title": "难度" + } + } + }, + "GetRecordItem": { + "type": "object", + "properties": { + "question_sn": { + "type": "string", + "title": "题目唯一标识" + }, + "question": { + "type": "string", + "title": "题干" + }, + "difficulty": { + "type": "integer", + "format": "int32", + "title": "难度" + }, + "category": { + "type": "string", + "title": "题目类型" + }, + "question_answer": { + "type": "string", + "title": "题目答案" + }, + "answer": { + "type": "string", + "title": "用户答案" + }, + "create_time": { + "type": "string", + "format": "int64", + "title": "创建时间" + } + } + }, + "GetRecordReq": { + "type": "object", + "properties": { + "usn": { + "type": "string" + }, + "page": { + "type": "integer", + "format": "int32" + }, + "page_size": { + "type": "integer", + "format": "int32" + } + }, + "title": "---------- GetRecord ----------" + }, + "GetRecordResp": { + "type": "object", + "properties": { + "count": { + "type": "integer", + "format": "int32", + "title": "总数" + }, + "records": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/GetRecordItem" + }, + "title": "记录" } } }, @@ -253,7 +494,7 @@ "LeaveResp": { "type": "object" }, - "LoginResp": { + "PhoneLoginResp": { "type": "object", "properties": { "usn": { @@ -268,6 +509,19 @@ }, "ToClientResp": { "type": "object" + }, + "WxMiniLoginResp": { + "type": "object", + "properties": { + "usn": { + "type": "string", + "title": "用户ID" + }, + "name": { + "type": "string", + "title": "用户名" + } + } } } } diff --git a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.go b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.go new file mode 100644 index 0000000..5f7c876 --- /dev/null +++ b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.go @@ -0,0 +1,1219 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.32.0 +// protoc v4.25.1 +// source: service_qgdzs.proto + +package grpc_pb + +import ( + _ "git.hlsq.asia/mmorpg/service-common/proto/rs/rs_common" + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// ---------- GenerateQuestion ---------- +type GenerateQuestionReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Num int32 `protobuf:"varint,1,opt,name=Num,json=num,proto3" json:"Num,omitempty"` // 生成数量 + Category string `protobuf:"bytes,2,opt,name=Category,json=category,proto3" json:"Category,omitempty"` // 题目类型 +} + +func (x *GenerateQuestionReq) Reset() { + *x = GenerateQuestionReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateQuestionReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateQuestionReq) ProtoMessage() {} + +func (x *GenerateQuestionReq) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateQuestionReq.ProtoReflect.Descriptor instead. +func (*GenerateQuestionReq) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{0} +} + +func (x *GenerateQuestionReq) GetNum() int32 { + if x != nil { + return x.Num + } + return 0 +} + +func (x *GenerateQuestionReq) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +type GenerateQuestionResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GenerateQuestionResp) Reset() { + *x = GenerateQuestionResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateQuestionResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateQuestionResp) ProtoMessage() {} + +func (x *GenerateQuestionResp) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateQuestionResp.ProtoReflect.Descriptor instead. +func (*GenerateQuestionResp) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{1} +} + +// ---------- GetQuestion ---------- +type GetQuestionReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CategorySn string `protobuf:"bytes,1,opt,name=CategorySn,json=category_sn,proto3" json:"CategorySn,omitempty"` // 类目唯一标识 +} + +func (x *GetQuestionReq) Reset() { + *x = GetQuestionReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetQuestionReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQuestionReq) ProtoMessage() {} + +func (x *GetQuestionReq) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQuestionReq.ProtoReflect.Descriptor instead. +func (*GetQuestionReq) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{2} +} + +func (x *GetQuestionReq) GetCategorySn() string { + if x != nil { + return x.CategorySn + } + return "" +} + +type GetQuestionResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sn string `protobuf:"bytes,1,opt,name=Sn,json=sn,proto3" json:"Sn,omitempty"` // 题目唯一标识 + Question string `protobuf:"bytes,2,opt,name=Question,json=question,proto3" json:"Question,omitempty"` // 题干 + Options []string `protobuf:"bytes,3,rep,name=Options,json=options,proto3" json:"Options,omitempty"` // 选项 + Category string `protobuf:"bytes,4,opt,name=Category,json=category,proto3" json:"Category,omitempty"` // 题目类型 + Difficulty int32 `protobuf:"varint,5,opt,name=Difficulty,json=difficulty,proto3" json:"Difficulty,omitempty"` // 难度 +} + +func (x *GetQuestionResp) Reset() { + *x = GetQuestionResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetQuestionResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQuestionResp) ProtoMessage() {} + +func (x *GetQuestionResp) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQuestionResp.ProtoReflect.Descriptor instead. +func (*GetQuestionResp) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{3} +} + +func (x *GetQuestionResp) GetSn() string { + if x != nil { + return x.Sn + } + return "" +} + +func (x *GetQuestionResp) GetQuestion() string { + if x != nil { + return x.Question + } + return "" +} + +func (x *GetQuestionResp) GetOptions() []string { + if x != nil { + return x.Options + } + return nil +} + +func (x *GetQuestionResp) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *GetQuestionResp) GetDifficulty() int32 { + if x != nil { + return x.Difficulty + } + return 0 +} + +// ---------- GetQuestionInfo ---------- +type GetQuestionInfoReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + QuestionSn string `protobuf:"bytes,1,opt,name=QuestionSn,json=question_sn,proto3" json:"QuestionSn,omitempty"` // 题目唯一标识 +} + +func (x *GetQuestionInfoReq) Reset() { + *x = GetQuestionInfoReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetQuestionInfoReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQuestionInfoReq) ProtoMessage() {} + +func (x *GetQuestionInfoReq) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQuestionInfoReq.ProtoReflect.Descriptor instead. +func (*GetQuestionInfoReq) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{4} +} + +func (x *GetQuestionInfoReq) GetQuestionSn() string { + if x != nil { + return x.QuestionSn + } + return "" +} + +type GetQuestionInfoResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Question string `protobuf:"bytes,1,opt,name=Question,json=question,proto3" json:"Question,omitempty"` // 题干 + Options []string `protobuf:"bytes,2,rep,name=Options,json=options,proto3" json:"Options,omitempty"` // 选项 + Category string `protobuf:"bytes,3,opt,name=Category,json=category,proto3" json:"Category,omitempty"` // 类目 + Difficulty int32 `protobuf:"varint,4,opt,name=Difficulty,json=difficulty,proto3" json:"Difficulty,omitempty"` // 难度 + Explanation string `protobuf:"bytes,5,opt,name=Explanation,json=explanation,proto3" json:"Explanation,omitempty"` // 解析 +} + +func (x *GetQuestionInfoResp) Reset() { + *x = GetQuestionInfoResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetQuestionInfoResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetQuestionInfoResp) ProtoMessage() {} + +func (x *GetQuestionInfoResp) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetQuestionInfoResp.ProtoReflect.Descriptor instead. +func (*GetQuestionInfoResp) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{5} +} + +func (x *GetQuestionInfoResp) GetQuestion() string { + if x != nil { + return x.Question + } + return "" +} + +func (x *GetQuestionInfoResp) GetOptions() []string { + if x != nil { + return x.Options + } + return nil +} + +func (x *GetQuestionInfoResp) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *GetQuestionInfoResp) GetDifficulty() int32 { + if x != nil { + return x.Difficulty + } + return 0 +} + +func (x *GetQuestionInfoResp) GetExplanation() string { + if x != nil { + return x.Explanation + } + return "" +} + +// ---------- AnswerQuestion ---------- +type AnswerQuestionReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + USN string `protobuf:"bytes,1,opt,name=USN,json=usn,proto3" json:"USN,omitempty"` + Sn string `protobuf:"bytes,2,opt,name=Sn,json=sn,proto3" json:"Sn,omitempty"` // 题目唯一标识 + Answer string `protobuf:"bytes,3,opt,name=Answer,json=answer,proto3" json:"Answer,omitempty"` // 答案 +} + +func (x *AnswerQuestionReq) Reset() { + *x = AnswerQuestionReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnswerQuestionReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnswerQuestionReq) ProtoMessage() {} + +func (x *AnswerQuestionReq) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnswerQuestionReq.ProtoReflect.Descriptor instead. +func (*AnswerQuestionReq) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{6} +} + +func (x *AnswerQuestionReq) GetUSN() string { + if x != nil { + return x.USN + } + return "" +} + +func (x *AnswerQuestionReq) GetSn() string { + if x != nil { + return x.Sn + } + return "" +} + +func (x *AnswerQuestionReq) GetAnswer() string { + if x != nil { + return x.Answer + } + return "" +} + +type AnswerQuestionResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Answer string `protobuf:"bytes,1,opt,name=Answer,json=answer,proto3" json:"Answer,omitempty"` // 答案 + Explanation string `protobuf:"bytes,2,opt,name=Explanation,json=explanation,proto3" json:"Explanation,omitempty"` // 解析 +} + +func (x *AnswerQuestionResp) Reset() { + *x = AnswerQuestionResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnswerQuestionResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnswerQuestionResp) ProtoMessage() {} + +func (x *AnswerQuestionResp) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AnswerQuestionResp.ProtoReflect.Descriptor instead. +func (*AnswerQuestionResp) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{7} +} + +func (x *AnswerQuestionResp) GetAnswer() string { + if x != nil { + return x.Answer + } + return "" +} + +func (x *AnswerQuestionResp) GetExplanation() string { + if x != nil { + return x.Explanation + } + return "" +} + +// ---------- GetAllCategory ---------- +type GetAllCategoryReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetAllCategoryReq) Reset() { + *x = GetAllCategoryReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllCategoryReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllCategoryReq) ProtoMessage() {} + +func (x *GetAllCategoryReq) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAllCategoryReq.ProtoReflect.Descriptor instead. +func (*GetAllCategoryReq) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{8} +} + +type GetAllCategoryResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Categories []*GetAllCategoryItem `protobuf:"bytes,1,rep,name=Categories,json=categories,proto3" json:"Categories,omitempty"` // 类目 +} + +func (x *GetAllCategoryResp) Reset() { + *x = GetAllCategoryResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllCategoryResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllCategoryResp) ProtoMessage() {} + +func (x *GetAllCategoryResp) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAllCategoryResp.ProtoReflect.Descriptor instead. +func (*GetAllCategoryResp) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{9} +} + +func (x *GetAllCategoryResp) GetCategories() []*GetAllCategoryItem { + if x != nil { + return x.Categories + } + return nil +} + +type GetAllCategoryItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sn string `protobuf:"bytes,1,opt,name=Sn,json=sn,proto3" json:"Sn,omitempty"` // 唯一标识 + Category string `protobuf:"bytes,2,opt,name=Category,json=category,proto3" json:"Category,omitempty"` // 类目 +} + +func (x *GetAllCategoryItem) Reset() { + *x = GetAllCategoryItem{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAllCategoryItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAllCategoryItem) ProtoMessage() {} + +func (x *GetAllCategoryItem) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAllCategoryItem.ProtoReflect.Descriptor instead. +func (*GetAllCategoryItem) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{10} +} + +func (x *GetAllCategoryItem) GetSn() string { + if x != nil { + return x.Sn + } + return "" +} + +func (x *GetAllCategoryItem) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +// ---------- GetRecord ---------- +type GetRecordReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + USN string `protobuf:"bytes,1,opt,name=USN,json=usn,proto3" json:"USN,omitempty"` + Page int32 `protobuf:"varint,2,opt,name=Page,json=page,proto3" json:"Page,omitempty"` + PageSize int32 `protobuf:"varint,3,opt,name=PageSize,json=page_size,proto3" json:"PageSize,omitempty"` +} + +func (x *GetRecordReq) Reset() { + *x = GetRecordReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRecordReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRecordReq) ProtoMessage() {} + +func (x *GetRecordReq) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRecordReq.ProtoReflect.Descriptor instead. +func (*GetRecordReq) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{11} +} + +func (x *GetRecordReq) GetUSN() string { + if x != nil { + return x.USN + } + return "" +} + +func (x *GetRecordReq) GetPage() int32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *GetRecordReq) GetPageSize() int32 { + if x != nil { + return x.PageSize + } + return 0 +} + +type GetRecordResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Count int32 `protobuf:"varint,1,opt,name=Count,json=count,proto3" json:"Count,omitempty"` // 总数 + Records []*GetRecordItem `protobuf:"bytes,2,rep,name=Records,json=records,proto3" json:"Records,omitempty"` // 记录 +} + +func (x *GetRecordResp) Reset() { + *x = GetRecordResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRecordResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRecordResp) ProtoMessage() {} + +func (x *GetRecordResp) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRecordResp.ProtoReflect.Descriptor instead. +func (*GetRecordResp) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{12} +} + +func (x *GetRecordResp) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *GetRecordResp) GetRecords() []*GetRecordItem { + if x != nil { + return x.Records + } + return nil +} + +type GetRecordItem struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + QuestionSn string `protobuf:"bytes,1,opt,name=QuestionSn,json=question_sn,proto3" json:"QuestionSn,omitempty"` // 题目唯一标识 + Question string `protobuf:"bytes,2,opt,name=Question,json=question,proto3" json:"Question,omitempty"` // 题干 + Difficulty int32 `protobuf:"varint,3,opt,name=Difficulty,json=difficulty,proto3" json:"Difficulty,omitempty"` // 难度 + Category string `protobuf:"bytes,4,opt,name=Category,json=category,proto3" json:"Category,omitempty"` // 题目类型 + QuestionAnswer string `protobuf:"bytes,5,opt,name=QuestionAnswer,json=question_answer,proto3" json:"QuestionAnswer,omitempty"` // 题目答案 + Answer string `protobuf:"bytes,6,opt,name=Answer,json=answer,proto3" json:"Answer,omitempty"` // 用户答案 + CreateTime int64 `protobuf:"varint,7,opt,name=CreateTime,json=create_time,proto3" json:"CreateTime,omitempty"` // 创建时间 +} + +func (x *GetRecordItem) Reset() { + *x = GetRecordItem{} + if protoimpl.UnsafeEnabled { + mi := &file_service_qgdzs_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRecordItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRecordItem) ProtoMessage() {} + +func (x *GetRecordItem) ProtoReflect() protoreflect.Message { + mi := &file_service_qgdzs_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRecordItem.ProtoReflect.Descriptor instead. +func (*GetRecordItem) Descriptor() ([]byte, []int) { + return file_service_qgdzs_proto_rawDescGZIP(), []int{13} +} + +func (x *GetRecordItem) GetQuestionSn() string { + if x != nil { + return x.QuestionSn + } + return "" +} + +func (x *GetRecordItem) GetQuestion() string { + if x != nil { + return x.Question + } + return "" +} + +func (x *GetRecordItem) GetDifficulty() int32 { + if x != nil { + return x.Difficulty + } + return 0 +} + +func (x *GetRecordItem) GetCategory() string { + if x != nil { + return x.Category + } + return "" +} + +func (x *GetRecordItem) GetQuestionAnswer() string { + if x != nil { + return x.QuestionAnswer + } + return "" +} + +func (x *GetRecordItem) GetAnswer() string { + if x != nil { + return x.Answer + } + return "" +} + +func (x *GetRecordItem) GetCreateTime() int64 { + if x != nil { + return x.CreateTime + } + return 0 +} + +var File_service_qgdzs_proto protoreflect.FileDescriptor + +var file_service_qgdzs_proto_rawDesc = []byte{ + 0x0a, 0x13, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x71, 0x67, 0x64, 0x7a, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x4e, + 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, 0x75, 0x6d, 0x12, 0x1a, 0x0a, + 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x31, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x12, 0x1f, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x53, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x5f, 0x73, 0x6e, 0x22, 0x93, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x53, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x73, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, + 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x12, 0x1f, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x6e, 0x22, 0xa9, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x44, + 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x45, + 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, + 0x11, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x73, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x53, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x73, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x12, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x45, 0x78, + 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x13, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x22, 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12, 0x33, 0x0a, 0x0a, 0x43, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x40, 0x0a, 0x12, + 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x49, 0x74, + 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x73, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x51, + 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x12, 0x10, + 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x73, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x70, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x07, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x63, 0x6f, 0x72, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, + 0x64, 0x73, 0x22, 0xea, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x73, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x44, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, + 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x0a, + 0x0e, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x1f, + 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x32, + 0xc7, 0x04, 0x0a, 0x05, 0x51, 0x67, 0x64, 0x7a, 0x73, 0x12, 0x69, 0x0a, 0x10, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x71, 0x67, 0x64, 0x7a, 0x73, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, + 0x2a, 0x22, 0x18, 0x2f, 0x71, 0x67, 0x64, 0x7a, 0x73, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x2f, 0x67, + 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x66, 0x0a, 0x0f, 0x47, + 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, + 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x22, 0x3a, 0x01, 0x2a, 0x22, 0x1d, 0x2f, 0x71, 0x67, 0x64, 0x7a, 0x73, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x2f, 0x67, 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x61, 0x0a, 0x0e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x41, 0x6e, 0x73, 0x77, + 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x26, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x71, 0x67, 0x64, 0x7a, + 0x73, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x2f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x12, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, + 0x6c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, 0x1c, 0x2f, 0x71, + 0x67, 0x64, 0x7a, 0x73, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x2f, 0x67, 0x65, 0x74, 0x5f, 0x61, 0x6c, + 0x6c, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x09, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0d, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, + 0x2a, 0x22, 0x16, 0x2f, 0x71, 0x67, 0x64, 0x7a, 0x73, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x67, + 0x65, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, + 0x2e, 0x68, 0x6c, 0x73, 0x71, 0x2e, 0x61, 0x73, 0x69, 0x61, 0x2f, 0x6d, 0x6d, 0x6f, 0x72, 0x70, + 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, + 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_service_qgdzs_proto_rawDescOnce sync.Once + file_service_qgdzs_proto_rawDescData = file_service_qgdzs_proto_rawDesc +) + +func file_service_qgdzs_proto_rawDescGZIP() []byte { + file_service_qgdzs_proto_rawDescOnce.Do(func() { + file_service_qgdzs_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_qgdzs_proto_rawDescData) + }) + return file_service_qgdzs_proto_rawDescData +} + +var file_service_qgdzs_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_service_qgdzs_proto_goTypes = []interface{}{ + (*GenerateQuestionReq)(nil), // 0: GenerateQuestionReq + (*GenerateQuestionResp)(nil), // 1: GenerateQuestionResp + (*GetQuestionReq)(nil), // 2: GetQuestionReq + (*GetQuestionResp)(nil), // 3: GetQuestionResp + (*GetQuestionInfoReq)(nil), // 4: GetQuestionInfoReq + (*GetQuestionInfoResp)(nil), // 5: GetQuestionInfoResp + (*AnswerQuestionReq)(nil), // 6: AnswerQuestionReq + (*AnswerQuestionResp)(nil), // 7: AnswerQuestionResp + (*GetAllCategoryReq)(nil), // 8: GetAllCategoryReq + (*GetAllCategoryResp)(nil), // 9: GetAllCategoryResp + (*GetAllCategoryItem)(nil), // 10: GetAllCategoryItem + (*GetRecordReq)(nil), // 11: GetRecordReq + (*GetRecordResp)(nil), // 12: GetRecordResp + (*GetRecordItem)(nil), // 13: GetRecordItem +} +var file_service_qgdzs_proto_depIdxs = []int32{ + 10, // 0: GetAllCategoryResp.Categories:type_name -> GetAllCategoryItem + 13, // 1: GetRecordResp.Records:type_name -> GetRecordItem + 0, // 2: Qgdzs.GenerateQuestion:input_type -> GenerateQuestionReq + 2, // 3: Qgdzs.GetQuestion:input_type -> GetQuestionReq + 4, // 4: Qgdzs.GetQuestionInfo:input_type -> GetQuestionInfoReq + 6, // 5: Qgdzs.AnswerQuestion:input_type -> AnswerQuestionReq + 8, // 6: Qgdzs.GetAllCategory:input_type -> GetAllCategoryReq + 11, // 7: Qgdzs.GetRecord:input_type -> GetRecordReq + 1, // 8: Qgdzs.GenerateQuestion:output_type -> GenerateQuestionResp + 3, // 9: Qgdzs.GetQuestion:output_type -> GetQuestionResp + 5, // 10: Qgdzs.GetQuestionInfo:output_type -> GetQuestionInfoResp + 7, // 11: Qgdzs.AnswerQuestion:output_type -> AnswerQuestionResp + 9, // 12: Qgdzs.GetAllCategory:output_type -> GetAllCategoryResp + 12, // 13: Qgdzs.GetRecord:output_type -> GetRecordResp + 8, // [8:14] is the sub-list for method output_type + 2, // [2:8] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_service_qgdzs_proto_init() } +func file_service_qgdzs_proto_init() { + if File_service_qgdzs_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_service_qgdzs_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateQuestionReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenerateQuestionResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetQuestionReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetQuestionResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetQuestionInfoReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetQuestionInfoResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnswerQuestionReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AnswerQuestionResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllCategoryReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllCategoryResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAllCategoryItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRecordReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRecordResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_service_qgdzs_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRecordItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_service_qgdzs_proto_rawDesc, + NumEnums: 0, + NumMessages: 14, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_service_qgdzs_proto_goTypes, + DependencyIndexes: file_service_qgdzs_proto_depIdxs, + MessageInfos: file_service_qgdzs_proto_msgTypes, + }.Build() + File_service_qgdzs_proto = out.File + file_service_qgdzs_proto_rawDesc = nil + file_service_qgdzs_proto_goTypes = nil + file_service_qgdzs_proto_depIdxs = nil +} diff --git a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.gw.go b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.gw.go new file mode 100644 index 0000000..870d313 --- /dev/null +++ b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs.pb.gw.go @@ -0,0 +1,469 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: service_qgdzs.proto + +/* +Package grpc_pb is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package grpc_pb + +import ( + "context" + "errors" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var ( + _ codes.Code + _ io.Reader + _ status.Status + _ = errors.New + _ = runtime.String + _ = utilities.NewDoubleArray + _ = metadata.Join +) + +func request_Qgdzs_GenerateQuestion_0(ctx context.Context, marshaler runtime.Marshaler, client QgdzsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GenerateQuestionReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.GenerateQuestion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Qgdzs_GenerateQuestion_0(ctx context.Context, marshaler runtime.Marshaler, server QgdzsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GenerateQuestionReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.GenerateQuestion(ctx, &protoReq) + return msg, metadata, err +} + +func request_Qgdzs_GetQuestion_0(ctx context.Context, marshaler runtime.Marshaler, client QgdzsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetQuestionReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.GetQuestion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Qgdzs_GetQuestion_0(ctx context.Context, marshaler runtime.Marshaler, server QgdzsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetQuestionReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.GetQuestion(ctx, &protoReq) + return msg, metadata, err +} + +func request_Qgdzs_GetQuestionInfo_0(ctx context.Context, marshaler runtime.Marshaler, client QgdzsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetQuestionInfoReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.GetQuestionInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Qgdzs_GetQuestionInfo_0(ctx context.Context, marshaler runtime.Marshaler, server QgdzsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetQuestionInfoReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.GetQuestionInfo(ctx, &protoReq) + return msg, metadata, err +} + +func request_Qgdzs_AnswerQuestion_0(ctx context.Context, marshaler runtime.Marshaler, client QgdzsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq AnswerQuestionReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.AnswerQuestion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Qgdzs_AnswerQuestion_0(ctx context.Context, marshaler runtime.Marshaler, server QgdzsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq AnswerQuestionReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.AnswerQuestion(ctx, &protoReq) + return msg, metadata, err +} + +func request_Qgdzs_GetAllCategory_0(ctx context.Context, marshaler runtime.Marshaler, client QgdzsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetAllCategoryReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.GetAllCategory(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Qgdzs_GetAllCategory_0(ctx context.Context, marshaler runtime.Marshaler, server QgdzsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetAllCategoryReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.GetAllCategory(ctx, &protoReq) + return msg, metadata, err +} + +func request_Qgdzs_GetRecord_0(ctx context.Context, marshaler runtime.Marshaler, client QgdzsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetRecordReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.GetRecord(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_Qgdzs_GetRecord_0(ctx context.Context, marshaler runtime.Marshaler, server QgdzsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq GetRecordReq + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.GetRecord(ctx, &protoReq) + return msg, metadata, err +} + +// RegisterQgdzsHandlerServer registers the http handlers for service Qgdzs to "mux". +// UnaryRPC :call QgdzsServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQgdzsHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. +func RegisterQgdzsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QgdzsServer) error { + mux.Handle(http.MethodPost, pattern_Qgdzs_GenerateQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.Qgdzs/GenerateQuestion", runtime.WithHTTPPathPattern("/qgdzs/auth/generate_question")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Qgdzs_GenerateQuestion_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GenerateQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.Qgdzs/GetQuestion", runtime.WithHTTPPathPattern("/qgdzs/open/get_question")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Qgdzs_GetQuestion_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetQuestionInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.Qgdzs/GetQuestionInfo", runtime.WithHTTPPathPattern("/qgdzs/open/get_question_info")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Qgdzs_GetQuestionInfo_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetQuestionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_AnswerQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.Qgdzs/AnswerQuestion", runtime.WithHTTPPathPattern("/qgdzs/open/answer_question")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Qgdzs_AnswerQuestion_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_AnswerQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetAllCategory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.Qgdzs/GetAllCategory", runtime.WithHTTPPathPattern("/qgdzs/open/get_all_category")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Qgdzs_GetAllCategory_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetAllCategory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetRecord_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.Qgdzs/GetRecord", runtime.WithHTTPPathPattern("/qgdzs/auth/get_record")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Qgdzs_GetRecord_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetRecord_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + + return nil +} + +// RegisterQgdzsHandlerFromEndpoint is same as RegisterQgdzsHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterQgdzsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.NewClient(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + return RegisterQgdzsHandler(ctx, mux, conn) +} + +// RegisterQgdzsHandler registers the http handlers for service Qgdzs to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterQgdzsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterQgdzsHandlerClient(ctx, mux, NewQgdzsClient(conn)) +} + +// RegisterQgdzsHandlerClient registers the http handlers for service Qgdzs +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QgdzsClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QgdzsClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "QgdzsClient" to call the correct interceptors. This client ignores the HTTP middlewares. +func RegisterQgdzsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QgdzsClient) error { + mux.Handle(http.MethodPost, pattern_Qgdzs_GenerateQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.Qgdzs/GenerateQuestion", runtime.WithHTTPPathPattern("/qgdzs/auth/generate_question")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Qgdzs_GenerateQuestion_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GenerateQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.Qgdzs/GetQuestion", runtime.WithHTTPPathPattern("/qgdzs/open/get_question")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Qgdzs_GetQuestion_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetQuestionInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.Qgdzs/GetQuestionInfo", runtime.WithHTTPPathPattern("/qgdzs/open/get_question_info")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Qgdzs_GetQuestionInfo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetQuestionInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_AnswerQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.Qgdzs/AnswerQuestion", runtime.WithHTTPPathPattern("/qgdzs/open/answer_question")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Qgdzs_AnswerQuestion_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_AnswerQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetAllCategory_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.Qgdzs/GetAllCategory", runtime.WithHTTPPathPattern("/qgdzs/open/get_all_category")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Qgdzs_GetAllCategory_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetAllCategory_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_Qgdzs_GetRecord_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.Qgdzs/GetRecord", runtime.WithHTTPPathPattern("/qgdzs/auth/get_record")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Qgdzs_GetRecord_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_Qgdzs_GetRecord_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + return nil +} + +var ( + pattern_Qgdzs_GenerateQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qgdzs", "auth", "generate_question"}, "")) + pattern_Qgdzs_GetQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qgdzs", "open", "get_question"}, "")) + pattern_Qgdzs_GetQuestionInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qgdzs", "open", "get_question_info"}, "")) + pattern_Qgdzs_AnswerQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qgdzs", "open", "answer_question"}, "")) + pattern_Qgdzs_GetAllCategory_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qgdzs", "open", "get_all_category"}, "")) + pattern_Qgdzs_GetRecord_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"qgdzs", "auth", "get_record"}, "")) +) + +var ( + forward_Qgdzs_GenerateQuestion_0 = runtime.ForwardResponseMessage + forward_Qgdzs_GetQuestion_0 = runtime.ForwardResponseMessage + forward_Qgdzs_GetQuestionInfo_0 = runtime.ForwardResponseMessage + forward_Qgdzs_AnswerQuestion_0 = runtime.ForwardResponseMessage + forward_Qgdzs_GetAllCategory_0 = runtime.ForwardResponseMessage + forward_Qgdzs_GetRecord_0 = runtime.ForwardResponseMessage +) diff --git a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs_grpc.pb.go b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs_grpc.pb.go new file mode 100644 index 0000000..9f8d386 --- /dev/null +++ b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_qgdzs_grpc.pb.go @@ -0,0 +1,297 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v4.25.1 +// source: service_qgdzs.proto + +package grpc_pb + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// QgdzsClient is the client API for Qgdzs service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type QgdzsClient interface { + // 生成题目 + GenerateQuestion(ctx context.Context, in *GenerateQuestionReq, opts ...grpc.CallOption) (*GenerateQuestionResp, error) + // 获取题目 + GetQuestion(ctx context.Context, in *GetQuestionReq, opts ...grpc.CallOption) (*GetQuestionResp, error) + // 获取具体的题目 + GetQuestionInfo(ctx context.Context, in *GetQuestionInfoReq, opts ...grpc.CallOption) (*GetQuestionInfoResp, error) + // 回答题目 + AnswerQuestion(ctx context.Context, in *AnswerQuestionReq, opts ...grpc.CallOption) (*AnswerQuestionResp, error) + // 获取所有类目 + GetAllCategory(ctx context.Context, in *GetAllCategoryReq, opts ...grpc.CallOption) (*GetAllCategoryResp, error) + // 获取答题记录 + GetRecord(ctx context.Context, in *GetRecordReq, opts ...grpc.CallOption) (*GetRecordResp, error) +} + +type qgdzsClient struct { + cc grpc.ClientConnInterface +} + +func NewQgdzsClient(cc grpc.ClientConnInterface) QgdzsClient { + return &qgdzsClient{cc} +} + +func (c *qgdzsClient) GenerateQuestion(ctx context.Context, in *GenerateQuestionReq, opts ...grpc.CallOption) (*GenerateQuestionResp, error) { + out := new(GenerateQuestionResp) + err := c.cc.Invoke(ctx, "/Qgdzs/GenerateQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *qgdzsClient) GetQuestion(ctx context.Context, in *GetQuestionReq, opts ...grpc.CallOption) (*GetQuestionResp, error) { + out := new(GetQuestionResp) + err := c.cc.Invoke(ctx, "/Qgdzs/GetQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *qgdzsClient) GetQuestionInfo(ctx context.Context, in *GetQuestionInfoReq, opts ...grpc.CallOption) (*GetQuestionInfoResp, error) { + out := new(GetQuestionInfoResp) + err := c.cc.Invoke(ctx, "/Qgdzs/GetQuestionInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *qgdzsClient) AnswerQuestion(ctx context.Context, in *AnswerQuestionReq, opts ...grpc.CallOption) (*AnswerQuestionResp, error) { + out := new(AnswerQuestionResp) + err := c.cc.Invoke(ctx, "/Qgdzs/AnswerQuestion", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *qgdzsClient) GetAllCategory(ctx context.Context, in *GetAllCategoryReq, opts ...grpc.CallOption) (*GetAllCategoryResp, error) { + out := new(GetAllCategoryResp) + err := c.cc.Invoke(ctx, "/Qgdzs/GetAllCategory", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *qgdzsClient) GetRecord(ctx context.Context, in *GetRecordReq, opts ...grpc.CallOption) (*GetRecordResp, error) { + out := new(GetRecordResp) + err := c.cc.Invoke(ctx, "/Qgdzs/GetRecord", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QgdzsServer is the server API for Qgdzs service. +// All implementations must embed UnimplementedQgdzsServer +// for forward compatibility +type QgdzsServer interface { + // 生成题目 + GenerateQuestion(context.Context, *GenerateQuestionReq) (*GenerateQuestionResp, error) + // 获取题目 + GetQuestion(context.Context, *GetQuestionReq) (*GetQuestionResp, error) + // 获取具体的题目 + GetQuestionInfo(context.Context, *GetQuestionInfoReq) (*GetQuestionInfoResp, error) + // 回答题目 + AnswerQuestion(context.Context, *AnswerQuestionReq) (*AnswerQuestionResp, error) + // 获取所有类目 + GetAllCategory(context.Context, *GetAllCategoryReq) (*GetAllCategoryResp, error) + // 获取答题记录 + GetRecord(context.Context, *GetRecordReq) (*GetRecordResp, error) + mustEmbedUnimplementedQgdzsServer() +} + +// UnimplementedQgdzsServer must be embedded to have forward compatible implementations. +type UnimplementedQgdzsServer struct { +} + +func (UnimplementedQgdzsServer) GenerateQuestion(context.Context, *GenerateQuestionReq) (*GenerateQuestionResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateQuestion not implemented") +} +func (UnimplementedQgdzsServer) GetQuestion(context.Context, *GetQuestionReq) (*GetQuestionResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetQuestion not implemented") +} +func (UnimplementedQgdzsServer) GetQuestionInfo(context.Context, *GetQuestionInfoReq) (*GetQuestionInfoResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetQuestionInfo not implemented") +} +func (UnimplementedQgdzsServer) AnswerQuestion(context.Context, *AnswerQuestionReq) (*AnswerQuestionResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method AnswerQuestion not implemented") +} +func (UnimplementedQgdzsServer) GetAllCategory(context.Context, *GetAllCategoryReq) (*GetAllCategoryResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAllCategory not implemented") +} +func (UnimplementedQgdzsServer) GetRecord(context.Context, *GetRecordReq) (*GetRecordResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRecord not implemented") +} +func (UnimplementedQgdzsServer) mustEmbedUnimplementedQgdzsServer() {} + +// UnsafeQgdzsServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to QgdzsServer will +// result in compilation errors. +type UnsafeQgdzsServer interface { + mustEmbedUnimplementedQgdzsServer() +} + +func RegisterQgdzsServer(s grpc.ServiceRegistrar, srv QgdzsServer) { + s.RegisterService(&Qgdzs_ServiceDesc, srv) +} + +func _Qgdzs_GenerateQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateQuestionReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QgdzsServer).GenerateQuestion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Qgdzs/GenerateQuestion", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QgdzsServer).GenerateQuestion(ctx, req.(*GenerateQuestionReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Qgdzs_GetQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQuestionReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QgdzsServer).GetQuestion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Qgdzs/GetQuestion", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QgdzsServer).GetQuestion(ctx, req.(*GetQuestionReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Qgdzs_GetQuestionInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetQuestionInfoReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QgdzsServer).GetQuestionInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Qgdzs/GetQuestionInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QgdzsServer).GetQuestionInfo(ctx, req.(*GetQuestionInfoReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Qgdzs_AnswerQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AnswerQuestionReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QgdzsServer).AnswerQuestion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Qgdzs/AnswerQuestion", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QgdzsServer).AnswerQuestion(ctx, req.(*AnswerQuestionReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Qgdzs_GetAllCategory_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetAllCategoryReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QgdzsServer).GetAllCategory(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Qgdzs/GetAllCategory", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QgdzsServer).GetAllCategory(ctx, req.(*GetAllCategoryReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _Qgdzs_GetRecord_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRecordReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QgdzsServer).GetRecord(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Qgdzs/GetRecord", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QgdzsServer).GetRecord(ctx, req.(*GetRecordReq)) + } + return interceptor(ctx, in, info, handler) +} + +// Qgdzs_ServiceDesc is the grpc.ServiceDesc for Qgdzs service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Qgdzs_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "Qgdzs", + HandlerType: (*QgdzsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GenerateQuestion", + Handler: _Qgdzs_GenerateQuestion_Handler, + }, + { + MethodName: "GetQuestion", + Handler: _Qgdzs_GetQuestion_Handler, + }, + { + MethodName: "GetQuestionInfo", + Handler: _Qgdzs_GetQuestionInfo_Handler, + }, + { + MethodName: "AnswerQuestion", + Handler: _Qgdzs_AnswerQuestion_Handler, + }, + { + MethodName: "GetAllCategory", + Handler: _Qgdzs_GetAllCategory_Handler, + }, + { + MethodName: "GetRecord", + Handler: _Qgdzs_GetRecord_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "service_qgdzs.proto", +} diff --git a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.go b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.go index 7155f03..ff435f2 100644 --- a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.go +++ b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.go @@ -22,8 +22,8 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// ---------- Login ---------- -type LoginReq struct { +// ---------- PhoneLogin ---------- +type PhoneLoginReq struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -32,8 +32,8 @@ type LoginReq struct { Code string `protobuf:"bytes,2,opt,name=Code,json=code,proto3" json:"Code,omitempty"` // 验证码 } -func (x *LoginReq) Reset() { - *x = LoginReq{} +func (x *PhoneLoginReq) Reset() { + *x = PhoneLoginReq{} if protoimpl.UnsafeEnabled { mi := &file_service_user_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -41,13 +41,13 @@ func (x *LoginReq) Reset() { } } -func (x *LoginReq) String() string { +func (x *PhoneLoginReq) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LoginReq) ProtoMessage() {} +func (*PhoneLoginReq) ProtoMessage() {} -func (x *LoginReq) ProtoReflect() protoreflect.Message { +func (x *PhoneLoginReq) ProtoReflect() protoreflect.Message { mi := &file_service_user_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -59,26 +59,26 @@ func (x *LoginReq) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LoginReq.ProtoReflect.Descriptor instead. -func (*LoginReq) Descriptor() ([]byte, []int) { +// Deprecated: Use PhoneLoginReq.ProtoReflect.Descriptor instead. +func (*PhoneLoginReq) Descriptor() ([]byte, []int) { return file_service_user_proto_rawDescGZIP(), []int{0} } -func (x *LoginReq) GetPhone() string { +func (x *PhoneLoginReq) GetPhone() string { if x != nil { return x.Phone } return "" } -func (x *LoginReq) GetCode() string { +func (x *PhoneLoginReq) GetCode() string { if x != nil { return x.Code } return "" } -type LoginResp struct { +type PhoneLoginResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -87,8 +87,8 @@ type LoginResp struct { Name string `protobuf:"bytes,2,opt,name=Name,json=name,proto3" json:"Name,omitempty"` // 用户名 } -func (x *LoginResp) Reset() { - *x = LoginResp{} +func (x *PhoneLoginResp) Reset() { + *x = PhoneLoginResp{} if protoimpl.UnsafeEnabled { mi := &file_service_user_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -96,13 +96,13 @@ func (x *LoginResp) Reset() { } } -func (x *LoginResp) String() string { +func (x *PhoneLoginResp) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LoginResp) ProtoMessage() {} +func (*PhoneLoginResp) ProtoMessage() {} -func (x *LoginResp) ProtoReflect() protoreflect.Message { +func (x *PhoneLoginResp) ProtoReflect() protoreflect.Message { mi := &file_service_user_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -114,19 +114,122 @@ func (x *LoginResp) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LoginResp.ProtoReflect.Descriptor instead. -func (*LoginResp) Descriptor() ([]byte, []int) { +// Deprecated: Use PhoneLoginResp.ProtoReflect.Descriptor instead. +func (*PhoneLoginResp) Descriptor() ([]byte, []int) { return file_service_user_proto_rawDescGZIP(), []int{1} } -func (x *LoginResp) GetUSN() string { +func (x *PhoneLoginResp) GetUSN() string { if x != nil { return x.USN } return "" } -func (x *LoginResp) GetName() string { +func (x *PhoneLoginResp) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// ---------- WxMiniLogin ---------- +type WxMiniLoginReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Code string `protobuf:"bytes,1,opt,name=Code,json=code,proto3" json:"Code,omitempty"` // 微信小程序登录凭证 +} + +func (x *WxMiniLoginReq) Reset() { + *x = WxMiniLoginReq{} + if protoimpl.UnsafeEnabled { + mi := &file_service_user_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WxMiniLoginReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WxMiniLoginReq) ProtoMessage() {} + +func (x *WxMiniLoginReq) ProtoReflect() protoreflect.Message { + mi := &file_service_user_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WxMiniLoginReq.ProtoReflect.Descriptor instead. +func (*WxMiniLoginReq) Descriptor() ([]byte, []int) { + return file_service_user_proto_rawDescGZIP(), []int{2} +} + +func (x *WxMiniLoginReq) GetCode() string { + if x != nil { + return x.Code + } + return "" +} + +type WxMiniLoginResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + USN string `protobuf:"bytes,1,opt,name=USN,json=usn,proto3" json:"USN,omitempty"` // 用户ID + Name string `protobuf:"bytes,2,opt,name=Name,json=name,proto3" json:"Name,omitempty"` // 用户名 +} + +func (x *WxMiniLoginResp) Reset() { + *x = WxMiniLoginResp{} + if protoimpl.UnsafeEnabled { + mi := &file_service_user_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WxMiniLoginResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WxMiniLoginResp) ProtoMessage() {} + +func (x *WxMiniLoginResp) ProtoReflect() protoreflect.Message { + mi := &file_service_user_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WxMiniLoginResp.ProtoReflect.Descriptor instead. +func (*WxMiniLoginResp) Descriptor() ([]byte, []int) { + return file_service_user_proto_rawDescGZIP(), []int{3} +} + +func (x *WxMiniLoginResp) GetUSN() string { + if x != nil { + return x.USN + } + return "" +} + +func (x *WxMiniLoginResp) GetName() string { if x != nil { return x.Name } @@ -145,7 +248,7 @@ type GetUserInfoReq struct { func (x *GetUserInfoReq) Reset() { *x = GetUserInfoReq{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[2] + mi := &file_service_user_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -158,7 +261,7 @@ func (x *GetUserInfoReq) String() string { func (*GetUserInfoReq) ProtoMessage() {} func (x *GetUserInfoReq) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[2] + mi := &file_service_user_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -171,7 +274,7 @@ func (x *GetUserInfoReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserInfoReq.ProtoReflect.Descriptor instead. func (*GetUserInfoReq) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{2} + return file_service_user_proto_rawDescGZIP(), []int{4} } func (x *GetUserInfoReq) GetUSN() string { @@ -193,7 +296,7 @@ type GetUserInfoResp struct { func (x *GetUserInfoResp) Reset() { *x = GetUserInfoResp{} if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[3] + mi := &file_service_user_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -206,7 +309,7 @@ func (x *GetUserInfoResp) String() string { func (*GetUserInfoResp) ProtoMessage() {} func (x *GetUserInfoResp) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[3] + mi := &file_service_user_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -219,7 +322,7 @@ func (x *GetUserInfoResp) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserInfoResp.ProtoReflect.Descriptor instead. func (*GetUserInfoResp) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{3} + return file_service_user_proto_rawDescGZIP(), []int{5} } func (x *GetUserInfoResp) GetUSN() string { @@ -236,313 +339,6 @@ func (x *GetUserInfoResp) GetName() string { return "" } -// ---------- GenerateQuestion ---------- -type GenerateQuestionReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Num int32 `protobuf:"varint,1,opt,name=Num,json=num,proto3" json:"Num,omitempty"` // 生成数量 - Category string `protobuf:"bytes,2,opt,name=Category,json=category,proto3" json:"Category,omitempty"` // 题目类型 -} - -func (x *GenerateQuestionReq) Reset() { - *x = GenerateQuestionReq{} - if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GenerateQuestionReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GenerateQuestionReq) ProtoMessage() {} - -func (x *GenerateQuestionReq) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GenerateQuestionReq.ProtoReflect.Descriptor instead. -func (*GenerateQuestionReq) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{4} -} - -func (x *GenerateQuestionReq) GetNum() int32 { - if x != nil { - return x.Num - } - return 0 -} - -func (x *GenerateQuestionReq) GetCategory() string { - if x != nil { - return x.Category - } - return "" -} - -type GenerateQuestionResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *GenerateQuestionResp) Reset() { - *x = GenerateQuestionResp{} - if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GenerateQuestionResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GenerateQuestionResp) ProtoMessage() {} - -func (x *GenerateQuestionResp) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GenerateQuestionResp.ProtoReflect.Descriptor instead. -func (*GenerateQuestionResp) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{5} -} - -// ---------- GetQuestion ---------- -type GetQuestionReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *GetQuestionReq) Reset() { - *x = GetQuestionReq{} - if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetQuestionReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetQuestionReq) ProtoMessage() {} - -func (x *GetQuestionReq) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetQuestionReq.ProtoReflect.Descriptor instead. -func (*GetQuestionReq) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{6} -} - -type GetQuestionResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sn string `protobuf:"bytes,1,opt,name=Sn,json=sn,proto3" json:"Sn,omitempty"` // 题目唯一标识 - Question string `protobuf:"bytes,2,opt,name=Question,json=question,proto3" json:"Question,omitempty"` // 题干 - Options []string `protobuf:"bytes,3,rep,name=Options,json=options,proto3" json:"Options,omitempty"` // 选项 -} - -func (x *GetQuestionResp) Reset() { - *x = GetQuestionResp{} - if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetQuestionResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetQuestionResp) ProtoMessage() {} - -func (x *GetQuestionResp) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetQuestionResp.ProtoReflect.Descriptor instead. -func (*GetQuestionResp) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{7} -} - -func (x *GetQuestionResp) GetSn() string { - if x != nil { - return x.Sn - } - return "" -} - -func (x *GetQuestionResp) GetQuestion() string { - if x != nil { - return x.Question - } - return "" -} - -func (x *GetQuestionResp) GetOptions() []string { - if x != nil { - return x.Options - } - return nil -} - -// ---------- AnswerQuestion ---------- -type AnswerQuestionReq struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sn string `protobuf:"bytes,1,opt,name=Sn,json=sn,proto3" json:"Sn,omitempty"` // 题目唯一标识 - Answer string `protobuf:"bytes,2,opt,name=Answer,json=answer,proto3" json:"Answer,omitempty"` // 答案 -} - -func (x *AnswerQuestionReq) Reset() { - *x = AnswerQuestionReq{} - if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AnswerQuestionReq) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AnswerQuestionReq) ProtoMessage() {} - -func (x *AnswerQuestionReq) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AnswerQuestionReq.ProtoReflect.Descriptor instead. -func (*AnswerQuestionReq) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{8} -} - -func (x *AnswerQuestionReq) GetSn() string { - if x != nil { - return x.Sn - } - return "" -} - -func (x *AnswerQuestionReq) GetAnswer() string { - if x != nil { - return x.Answer - } - return "" -} - -type AnswerQuestionResp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Answer string `protobuf:"bytes,1,opt,name=Answer,json=answer,proto3" json:"Answer,omitempty"` // 答案 - Explanation string `protobuf:"bytes,2,opt,name=Explanation,json=explanation,proto3" json:"Explanation,omitempty"` // 解析 -} - -func (x *AnswerQuestionResp) Reset() { - *x = AnswerQuestionResp{} - if protoimpl.UnsafeEnabled { - mi := &file_service_user_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AnswerQuestionResp) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AnswerQuestionResp) ProtoMessage() {} - -func (x *AnswerQuestionResp) ProtoReflect() protoreflect.Message { - mi := &file_service_user_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AnswerQuestionResp.ProtoReflect.Descriptor instead. -func (*AnswerQuestionResp) Descriptor() ([]byte, []int) { - return file_service_user_proto_rawDescGZIP(), []int{9} -} - -func (x *AnswerQuestionResp) GetAnswer() string { - if x != nil { - return x.Answer - } - return "" -} - -func (x *AnswerQuestionResp) GetExplanation() string { - if x != nil { - return x.Explanation - } - return "" -} - var File_service_user_proto protoreflect.FileDescriptor var file_service_user_proto_rawDesc = []byte{ @@ -550,69 +346,41 @@ var file_service_user_proto_rawDesc = []byte{ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0f, 0x72, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x34, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, - 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x09, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x73, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x10, - 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x73, 0x6e, - 0x22, 0x37, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x75, 0x73, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x43, 0x0a, 0x13, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6e, - 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x22, 0x16, - 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x10, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x22, 0x57, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x51, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x53, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x73, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x51, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x3b, 0x0a, 0x11, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x53, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x73, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x22, 0x4e, - 0x0a, 0x12, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, - 0x45, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0x84, - 0x03, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, - 0x12, 0x09, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0a, 0x2e, 0x4c, 0x6f, - 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0f, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x22, 0x15, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0f, 0x3a, 0x01, 0x2a, 0x22, 0x0a, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x69, 0x6e, - 0x66, 0x6f, 0x12, 0x63, 0x0a, 0x10, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x51, 0x75, - 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x67, 0x65, 0x74, 0x5f, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x0e, 0x41, 0x6e, 0x73, 0x77, - 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x2e, 0x41, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x13, - 0x2e, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x3a, 0x01, 0x2a, 0x22, 0x15, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x2e, 0x68, 0x6c, 0x73, - 0x71, 0x2e, 0x61, 0x73, 0x69, 0x61, 0x2f, 0x6d, 0x6d, 0x6f, 0x72, 0x70, 0x67, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x72, 0x73, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x74, 0x6f, 0x22, 0x39, 0x0a, 0x0d, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x68, 0x6f, 0x6e, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x36, + 0x0a, 0x0e, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x10, 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x73, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x0e, 0x57, 0x78, 0x4d, 0x69, 0x6e, 0x69, + 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x37, 0x0a, 0x0f, + 0x57, 0x78, 0x4d, 0x69, 0x6e, 0x69, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x10, 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x73, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x22, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x53, 0x4e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x73, 0x6e, 0x22, 0x37, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, + 0x55, 0x53, 0x4e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x73, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x32, 0xb9, 0x01, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x0a, 0x50, + 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0e, 0x2e, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x50, 0x68, 0x6f, 0x6e, + 0x65, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, 0x12, 0x32, 0x0a, 0x0b, + 0x57, 0x78, 0x4d, 0x69, 0x6e, 0x69, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x0f, 0x2e, 0x57, 0x78, + 0x4d, 0x69, 0x6e, 0x69, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x57, + 0x78, 0x4d, 0x69, 0x6e, 0x69, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x22, 0x00, + 0x12, 0x4c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x0f, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x1a, 0x10, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, + 0x75, 0x73, 0x65, 0x72, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x36, + 0x5a, 0x34, 0x67, 0x69, 0x74, 0x2e, 0x68, 0x6c, 0x73, 0x71, 0x2e, 0x61, 0x73, 0x69, 0x61, 0x2f, + 0x6d, 0x6d, 0x6f, 0x72, 0x70, 0x67, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x73, 0x2f, 0x67, + 0x72, 0x70, 0x63, 0x5f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -627,32 +395,24 @@ func file_service_user_proto_rawDescGZIP() []byte { return file_service_user_proto_rawDescData } -var file_service_user_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_service_user_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_service_user_proto_goTypes = []interface{}{ - (*LoginReq)(nil), // 0: LoginReq - (*LoginResp)(nil), // 1: LoginResp - (*GetUserInfoReq)(nil), // 2: GetUserInfoReq - (*GetUserInfoResp)(nil), // 3: GetUserInfoResp - (*GenerateQuestionReq)(nil), // 4: GenerateQuestionReq - (*GenerateQuestionResp)(nil), // 5: GenerateQuestionResp - (*GetQuestionReq)(nil), // 6: GetQuestionReq - (*GetQuestionResp)(nil), // 7: GetQuestionResp - (*AnswerQuestionReq)(nil), // 8: AnswerQuestionReq - (*AnswerQuestionResp)(nil), // 9: AnswerQuestionResp + (*PhoneLoginReq)(nil), // 0: PhoneLoginReq + (*PhoneLoginResp)(nil), // 1: PhoneLoginResp + (*WxMiniLoginReq)(nil), // 2: WxMiniLoginReq + (*WxMiniLoginResp)(nil), // 3: WxMiniLoginResp + (*GetUserInfoReq)(nil), // 4: GetUserInfoReq + (*GetUserInfoResp)(nil), // 5: GetUserInfoResp } var file_service_user_proto_depIdxs = []int32{ - 0, // 0: User.Login:input_type -> LoginReq - 2, // 1: User.GetUserInfo:input_type -> GetUserInfoReq - 4, // 2: User.GenerateQuestion:input_type -> GenerateQuestionReq - 6, // 3: User.GetQuestion:input_type -> GetQuestionReq - 8, // 4: User.AnswerQuestion:input_type -> AnswerQuestionReq - 1, // 5: User.Login:output_type -> LoginResp - 3, // 6: User.GetUserInfo:output_type -> GetUserInfoResp - 5, // 7: User.GenerateQuestion:output_type -> GenerateQuestionResp - 7, // 8: User.GetQuestion:output_type -> GetQuestionResp - 9, // 9: User.AnswerQuestion:output_type -> AnswerQuestionResp - 5, // [5:10] is the sub-list for method output_type - 0, // [0:5] is the sub-list for method input_type + 0, // 0: User.PhoneLogin:input_type -> PhoneLoginReq + 2, // 1: User.WxMiniLogin:input_type -> WxMiniLoginReq + 4, // 2: User.GetUserInfo:input_type -> GetUserInfoReq + 1, // 3: User.PhoneLogin:output_type -> PhoneLoginResp + 3, // 4: User.WxMiniLogin:output_type -> WxMiniLoginResp + 5, // 5: User.GetUserInfo:output_type -> GetUserInfoResp + 3, // [3:6] is the sub-list for method output_type + 0, // [0:3] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -665,7 +425,7 @@ func file_service_user_proto_init() { } if !protoimpl.UnsafeEnabled { file_service_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginReq); i { + switch v := v.(*PhoneLoginReq); i { case 0: return &v.state case 1: @@ -677,7 +437,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResp); i { + switch v := v.(*PhoneLoginResp); i { case 0: return &v.state case 1: @@ -689,7 +449,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserInfoReq); i { + switch v := v.(*WxMiniLoginReq); i { case 0: return &v.state case 1: @@ -701,7 +461,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUserInfoResp); i { + switch v := v.(*WxMiniLoginResp); i { case 0: return &v.state case 1: @@ -713,7 +473,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateQuestionReq); i { + switch v := v.(*GetUserInfoReq); i { case 0: return &v.state case 1: @@ -725,55 +485,7 @@ func file_service_user_proto_init() { } } file_service_user_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateQuestionResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_service_user_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetQuestionReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_service_user_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetQuestionResp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_service_user_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnswerQuestionReq); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_service_user_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnswerQuestionResp); i { + switch v := v.(*GetUserInfoResp); i { case 0: return &v.state case 1: @@ -791,7 +503,7 @@ func file_service_user_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_service_user_proto_rawDesc, NumEnums: 0, - NumMessages: 10, + NumMessages: 6, NumExtensions: 0, NumServices: 1, }, diff --git a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.gw.go b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.gw.go index 417d42a..9750494 100644 --- a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.gw.go +++ b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user.pb.gw.go @@ -59,78 +59,6 @@ func local_request_User_GetUserInfo_0(ctx context.Context, marshaler runtime.Mar return msg, metadata, err } -func request_User_GenerateQuestion_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GenerateQuestionReq - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.GenerateQuestion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_User_GenerateQuestion_0(ctx context.Context, marshaler runtime.Marshaler, server UserServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GenerateQuestionReq - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.GenerateQuestion(ctx, &protoReq) - return msg, metadata, err -} - -func request_User_GetQuestion_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GetQuestionReq - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.GetQuestion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_User_GetQuestion_0(ctx context.Context, marshaler runtime.Marshaler, server UserServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq GetQuestionReq - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.GetQuestion(ctx, &protoReq) - return msg, metadata, err -} - -func request_User_AnswerQuestion_0(ctx context.Context, marshaler runtime.Marshaler, client UserClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AnswerQuestionReq - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.AnswerQuestion(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_User_AnswerQuestion_0(ctx context.Context, marshaler runtime.Marshaler, server UserServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq AnswerQuestionReq - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.AnswerQuestion(ctx, &protoReq) - return msg, metadata, err -} - // RegisterUserHandlerServer registers the http handlers for service User to "mux". // UnaryRPC :call UserServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -143,7 +71,7 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve var stream runtime.ServerTransportStream ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.User/GetUserInfo", runtime.WithHTTPPathPattern("/user/info")) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.User/GetUserInfo", runtime.WithHTTPPathPattern("/user/auth/info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -157,66 +85,6 @@ func RegisterUserHandlerServer(ctx context.Context, mux *runtime.ServeMux, serve } forward_User_GetUserInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle(http.MethodPost, pattern_User_GenerateQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.User/GenerateQuestion", runtime.WithHTTPPathPattern("/user/generate_question")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_User_GenerateQuestion_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_User_GenerateQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_User_GetQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.User/GetQuestion", runtime.WithHTTPPathPattern("/user/get_question")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_User_GetQuestion_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_User_GetQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_User_AnswerQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/.User/AnswerQuestion", runtime.WithHTTPPathPattern("/user/answer_question")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_User_AnswerQuestion_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_User_AnswerQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) return nil } @@ -261,7 +129,7 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.User/GetUserInfo", runtime.WithHTTPPathPattern("/user/info")) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.User/GetUserInfo", runtime.WithHTTPPathPattern("/user/auth/info")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -274,70 +142,13 @@ func RegisterUserHandlerClient(ctx context.Context, mux *runtime.ServeMux, clien } forward_User_GetUserInfo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle(http.MethodPost, pattern_User_GenerateQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.User/GenerateQuestion", runtime.WithHTTPPathPattern("/user/generate_question")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_User_GenerateQuestion_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_User_GenerateQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_User_GetQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.User/GetQuestion", runtime.WithHTTPPathPattern("/user/get_question")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_User_GetQuestion_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_User_GetQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_User_AnswerQuestion_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/.User/AnswerQuestion", runtime.WithHTTPPathPattern("/user/answer_question")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_User_AnswerQuestion_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_User_AnswerQuestion_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) return nil } var ( - pattern_User_GetUserInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"user", "info"}, "")) - pattern_User_GenerateQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"user", "generate_question"}, "")) - pattern_User_GetQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"user", "get_question"}, "")) - pattern_User_AnswerQuestion_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"user", "answer_question"}, "")) + pattern_User_GetUserInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"user", "auth", "info"}, "")) ) var ( - forward_User_GetUserInfo_0 = runtime.ForwardResponseMessage - forward_User_GenerateQuestion_0 = runtime.ForwardResponseMessage - forward_User_GetQuestion_0 = runtime.ForwardResponseMessage - forward_User_AnswerQuestion_0 = runtime.ForwardResponseMessage + forward_User_GetUserInfo_0 = runtime.ForwardResponseMessage ) diff --git a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user_grpc.pb.go b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user_grpc.pb.go index a6ed85d..6f50570 100644 --- a/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user_grpc.pb.go +++ b/Proto/RpcServer/gen/git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/service_user_grpc.pb.go @@ -22,15 +22,10 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type UserClient interface { - Login(ctx context.Context, in *LoginReq, opts ...grpc.CallOption) (*LoginResp, error) + PhoneLogin(ctx context.Context, in *PhoneLoginReq, opts ...grpc.CallOption) (*PhoneLoginResp, error) + WxMiniLogin(ctx context.Context, in *WxMiniLoginReq, opts ...grpc.CallOption) (*WxMiniLoginResp, error) // 获取用户信息 GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts ...grpc.CallOption) (*GetUserInfoResp, error) - // 生成题目 - GenerateQuestion(ctx context.Context, in *GenerateQuestionReq, opts ...grpc.CallOption) (*GenerateQuestionResp, error) - // 获取题目 - GetQuestion(ctx context.Context, in *GetQuestionReq, opts ...grpc.CallOption) (*GetQuestionResp, error) - // 回答题目 - AnswerQuestion(ctx context.Context, in *AnswerQuestionReq, opts ...grpc.CallOption) (*AnswerQuestionResp, error) } type userClient struct { @@ -41,9 +36,18 @@ func NewUserClient(cc grpc.ClientConnInterface) UserClient { return &userClient{cc} } -func (c *userClient) Login(ctx context.Context, in *LoginReq, opts ...grpc.CallOption) (*LoginResp, error) { - out := new(LoginResp) - err := c.cc.Invoke(ctx, "/User/Login", in, out, opts...) +func (c *userClient) PhoneLogin(ctx context.Context, in *PhoneLoginReq, opts ...grpc.CallOption) (*PhoneLoginResp, error) { + out := new(PhoneLoginResp) + err := c.cc.Invoke(ctx, "/User/PhoneLogin", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *userClient) WxMiniLogin(ctx context.Context, in *WxMiniLoginReq, opts ...grpc.CallOption) (*WxMiniLoginResp, error) { + out := new(WxMiniLoginResp) + err := c.cc.Invoke(ctx, "/User/WxMiniLogin", in, out, opts...) if err != nil { return nil, err } @@ -59,46 +63,14 @@ func (c *userClient) GetUserInfo(ctx context.Context, in *GetUserInfoReq, opts . return out, nil } -func (c *userClient) GenerateQuestion(ctx context.Context, in *GenerateQuestionReq, opts ...grpc.CallOption) (*GenerateQuestionResp, error) { - out := new(GenerateQuestionResp) - err := c.cc.Invoke(ctx, "/User/GenerateQuestion", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userClient) GetQuestion(ctx context.Context, in *GetQuestionReq, opts ...grpc.CallOption) (*GetQuestionResp, error) { - out := new(GetQuestionResp) - err := c.cc.Invoke(ctx, "/User/GetQuestion", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *userClient) AnswerQuestion(ctx context.Context, in *AnswerQuestionReq, opts ...grpc.CallOption) (*AnswerQuestionResp, error) { - out := new(AnswerQuestionResp) - err := c.cc.Invoke(ctx, "/User/AnswerQuestion", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // UserServer is the server API for User service. // All implementations must embed UnimplementedUserServer // for forward compatibility type UserServer interface { - Login(context.Context, *LoginReq) (*LoginResp, error) + PhoneLogin(context.Context, *PhoneLoginReq) (*PhoneLoginResp, error) + WxMiniLogin(context.Context, *WxMiniLoginReq) (*WxMiniLoginResp, error) // 获取用户信息 GetUserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResp, error) - // 生成题目 - GenerateQuestion(context.Context, *GenerateQuestionReq) (*GenerateQuestionResp, error) - // 获取题目 - GetQuestion(context.Context, *GetQuestionReq) (*GetQuestionResp, error) - // 回答题目 - AnswerQuestion(context.Context, *AnswerQuestionReq) (*AnswerQuestionResp, error) mustEmbedUnimplementedUserServer() } @@ -106,21 +78,15 @@ type UserServer interface { type UnimplementedUserServer struct { } -func (UnimplementedUserServer) Login(context.Context, *LoginReq) (*LoginResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method Login not implemented") +func (UnimplementedUserServer) PhoneLogin(context.Context, *PhoneLoginReq) (*PhoneLoginResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method PhoneLogin not implemented") +} +func (UnimplementedUserServer) WxMiniLogin(context.Context, *WxMiniLoginReq) (*WxMiniLoginResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method WxMiniLogin not implemented") } func (UnimplementedUserServer) GetUserInfo(context.Context, *GetUserInfoReq) (*GetUserInfoResp, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUserInfo not implemented") } -func (UnimplementedUserServer) GenerateQuestion(context.Context, *GenerateQuestionReq) (*GenerateQuestionResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GenerateQuestion not implemented") -} -func (UnimplementedUserServer) GetQuestion(context.Context, *GetQuestionReq) (*GetQuestionResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetQuestion not implemented") -} -func (UnimplementedUserServer) AnswerQuestion(context.Context, *AnswerQuestionReq) (*AnswerQuestionResp, error) { - return nil, status.Errorf(codes.Unimplemented, "method AnswerQuestion not implemented") -} func (UnimplementedUserServer) mustEmbedUnimplementedUserServer() {} // UnsafeUserServer may be embedded to opt out of forward compatibility for this service. @@ -134,20 +100,38 @@ func RegisterUserServer(s grpc.ServiceRegistrar, srv UserServer) { s.RegisterService(&User_ServiceDesc, srv) } -func _User_Login_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LoginReq) +func _User_PhoneLogin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PhoneLoginReq) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(UserServer).Login(ctx, in) + return srv.(UserServer).PhoneLogin(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/User/Login", + FullMethod: "/User/PhoneLogin", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserServer).Login(ctx, req.(*LoginReq)) + return srv.(UserServer).PhoneLogin(ctx, req.(*PhoneLoginReq)) + } + return interceptor(ctx, in, info, handler) +} + +func _User_WxMiniLogin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(WxMiniLoginReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserServer).WxMiniLogin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/User/WxMiniLogin", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserServer).WxMiniLogin(ctx, req.(*WxMiniLoginReq)) } return interceptor(ctx, in, info, handler) } @@ -170,60 +154,6 @@ func _User_GetUserInfo_Handler(srv interface{}, ctx context.Context, dec func(in return interceptor(ctx, in, info, handler) } -func _User_GenerateQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GenerateQuestionReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserServer).GenerateQuestion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/User/GenerateQuestion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserServer).GenerateQuestion(ctx, req.(*GenerateQuestionReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _User_GetQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetQuestionReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserServer).GetQuestion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/User/GetQuestion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserServer).GetQuestion(ctx, req.(*GetQuestionReq)) - } - return interceptor(ctx, in, info, handler) -} - -func _User_AnswerQuestion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AnswerQuestionReq) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(UserServer).AnswerQuestion(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/User/AnswerQuestion", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(UserServer).AnswerQuestion(ctx, req.(*AnswerQuestionReq)) - } - return interceptor(ctx, in, info, handler) -} - // User_ServiceDesc is the grpc.ServiceDesc for User service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -232,25 +162,17 @@ var User_ServiceDesc = grpc.ServiceDesc{ HandlerType: (*UserServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "Login", - Handler: _User_Login_Handler, + MethodName: "PhoneLogin", + Handler: _User_PhoneLogin_Handler, + }, + { + MethodName: "WxMiniLogin", + Handler: _User_WxMiniLogin_Handler, }, { MethodName: "GetUserInfo", Handler: _User_GetUserInfo_Handler, }, - { - MethodName: "GenerateQuestion", - Handler: _User_GenerateQuestion_Handler, - }, - { - MethodName: "GetQuestion", - Handler: _User_GetQuestion_Handler, - }, - { - MethodName: "AnswerQuestion", - Handler: _User_AnswerQuestion_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "service_user.proto", diff --git a/Proto/RpcServer/sources/service_qgdzs.proto b/Proto/RpcServer/sources/service_qgdzs.proto new file mode 100644 index 0000000..c354b8c --- /dev/null +++ b/Proto/RpcServer/sources/service_qgdzs.proto @@ -0,0 +1,124 @@ +syntax = "proto3"; + +option go_package = "git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb"; +import "rs_common.proto"; +import "google/api/annotations.proto"; + +service Qgdzs { + // 生成题目 + rpc GenerateQuestion(GenerateQuestionReq) returns (GenerateQuestionResp) { + option (google.api.http) = { + post: "/qgdzs/auth/generate_question" + body: "*" + }; + } + // 获取题目 + rpc GetQuestion(GetQuestionReq) returns (GetQuestionResp) { + option (google.api.http) = { + post: "/qgdzs/open/get_question" + body: "*" + }; + } + // 获取具体的题目 + rpc GetQuestionInfo(GetQuestionInfoReq) returns (GetQuestionInfoResp) { + option (google.api.http) = { + post: "/qgdzs/open/get_question_info" + body: "*" + }; + } + // 回答题目 + rpc AnswerQuestion(AnswerQuestionReq) returns (AnswerQuestionResp) { + option (google.api.http) = { + post: "/qgdzs/open/answer_question" + body: "*" + }; + } + // 获取所有类目 + rpc GetAllCategory(GetAllCategoryReq) returns (GetAllCategoryResp) { + option (google.api.http) = { + post: "/qgdzs/open/get_all_category" + body: "*" + }; + } + // 获取答题记录 + rpc GetRecord(GetRecordReq) returns (GetRecordResp) { + option (google.api.http) = { + post: "/qgdzs/auth/get_record" + body: "*" + }; + } +} + +// ---------- GenerateQuestion ---------- +message GenerateQuestionReq { + int32 Num = 1 [json_name = "num"]; // 生成数量 + string Category = 2 [json_name = "category"]; // 题目类型 +} +message GenerateQuestionResp { +} + +// ---------- GetQuestion ---------- +message GetQuestionReq { + string CategorySn = 1 [json_name = "category_sn"]; // 类目唯一标识 +} +message GetQuestionResp { + string Sn = 1 [json_name = "sn"]; // 题目唯一标识 + string Question = 2 [json_name = "question"]; // 题干 + repeated string Options = 3 [json_name = "options"]; // 选项 + string Category = 4 [json_name = "category"]; // 题目类型 + int32 Difficulty = 5 [json_name = "difficulty"]; // 难度 +} + +// ---------- GetQuestionInfo ---------- +message GetQuestionInfoReq { + string QuestionSn = 1 [json_name = "question_sn"]; // 题目唯一标识 +} +message GetQuestionInfoResp { + string Question = 1 [json_name = "question"]; // 题干 + repeated string Options = 2 [json_name = "options"]; // 选项 + string Category = 3 [json_name = "category"]; // 类目 + int32 Difficulty = 4 [json_name = "difficulty"]; // 难度 + string Explanation = 5 [json_name = "explanation"]; // 解析 +} + +// ---------- AnswerQuestion ---------- +message AnswerQuestionReq { + string USN = 1 [json_name = "usn"]; + string Sn = 2 [json_name = "sn"]; // 题目唯一标识 + string Answer = 3 [json_name = "answer"]; // 答案 +} +message AnswerQuestionResp { + string Answer = 1 [json_name = "answer"]; // 答案 + string Explanation = 2 [json_name = "explanation"]; // 解析 +} + +// ---------- GetAllCategory ---------- +message GetAllCategoryReq { +} +message GetAllCategoryResp { + repeated GetAllCategoryItem Categories = 1 [json_name = "categories"]; // 类目 +} +message GetAllCategoryItem { + string Sn = 1 [json_name = "sn"]; // 唯一标识 + string Category = 2 [json_name = "category"]; // 类目 +} + +// ---------- GetRecord ---------- +message GetRecordReq { + string USN = 1 [json_name = "usn"]; + int32 Page = 2 [json_name = "page"]; + int32 PageSize = 3 [json_name = "page_size"]; +} +message GetRecordResp { + int32 Count = 1 [json_name = "count"]; // 总数 + repeated GetRecordItem Records = 2 [json_name = "records"]; // 记录 +} +message GetRecordItem { + string QuestionSn = 1 [json_name = "question_sn"]; // 题目唯一标识 + string Question = 2 [json_name = "question"]; // 题干 + int32 Difficulty = 3 [json_name = "difficulty"]; // 难度 + string Category = 4 [json_name = "category"]; // 题目类型 + string QuestionAnswer = 5 [json_name = "question_answer"]; // 题目答案 + string Answer = 6 [json_name = "answer"]; // 用户答案 + int64 CreateTime = 7 [json_name = "create_time"]; // 创建时间 +} \ No newline at end of file diff --git a/Proto/RpcServer/sources/service_user.proto b/Proto/RpcServer/sources/service_user.proto index bb7247a..a250b7b 100644 --- a/Proto/RpcServer/sources/service_user.proto +++ b/Proto/RpcServer/sources/service_user.proto @@ -5,79 +5,41 @@ import "rs_common.proto"; import "google/api/annotations.proto"; service User { - rpc Login(LoginReq) returns (LoginResp) {} + rpc PhoneLogin(PhoneLoginReq) returns (PhoneLoginResp) {} + rpc WxMiniLogin(WxMiniLoginReq) returns (WxMiniLoginResp) {} // 获取用户信息 rpc GetUserInfo(GetUserInfoReq) returns (GetUserInfoResp) { option (google.api.http) = { - post: "/user/info" - body: "*" - }; - } - // 生成题目 - rpc GenerateQuestion(GenerateQuestionReq) returns (GenerateQuestionResp) { - option (google.api.http) = { - post: "/user/generate_question" - body: "*" - }; - } - // 获取题目 - rpc GetQuestion(GetQuestionReq) returns (GetQuestionResp) { - option (google.api.http) = { - post: "/user/get_question" - body: "*" - }; - } - // 回答题目 - rpc AnswerQuestion(AnswerQuestionReq) returns (AnswerQuestionResp) { - option (google.api.http) = { - post: "/user/answer_question" + post: "/user/auth/info" body: "*" }; } } -// ---------- Login ---------- -message LoginReq { +// ---------- PhoneLogin ---------- +message PhoneLoginReq { string Phone = 1 [json_name = "phone"]; // 手机号 string Code = 2 [json_name = "code"]; // 验证码 } -message LoginResp { +message PhoneLoginResp { + string USN = 1 [json_name = "usn"]; // 用户ID + string Name = 2 [json_name = "name"]; // 用户名 +} + +// ---------- WxMiniLogin ---------- +message WxMiniLoginReq { + string Code = 1 [json_name = "code"]; // 微信小程序登录凭证 +} +message WxMiniLoginResp { string USN = 1 [json_name = "usn"]; // 用户ID string Name = 2 [json_name = "name"]; // 用户名 } // ---------- GetUserInfo ---------- message GetUserInfoReq { - string USN = 1 [json_name = "usn"]; + string USN = 1 [json_name = "usn"]; } message GetUserInfoResp { - string USN = 1 [json_name = "usn"]; - string Name = 2 [json_name = "name"]; -} - -// ---------- GenerateQuestion ---------- -message GenerateQuestionReq { - int32 Num = 1 [json_name = "num"]; // 生成数量 - string Category = 2 [json_name = "category"]; // 题目类型 -} -message GenerateQuestionResp { -} - -// ---------- GetQuestion ---------- -message GetQuestionReq { -} -message GetQuestionResp { - string Sn = 1 [json_name = "sn"]; // 题目唯一标识 - string Question = 2 [json_name = "question"]; // 题干 - repeated string Options = 3 [json_name = "options"]; // 选项 -} - -// ---------- AnswerQuestion ---------- -message AnswerQuestionReq { - string Sn = 1 [json_name = "sn"]; // 题目唯一标识 - string Answer = 2 [json_name = "answer"]; // 答案 -} -message AnswerQuestionResp { - string Answer = 1 [json_name = "answer"]; // 答案 - string Explanation = 2 [json_name = "explanation"]; // 解析 + string USN = 1 [json_name = "usn"]; + string Name = 2 [json_name = "name"]; } \ No newline at end of file diff --git a/Publish/doc.txt b/Publish/doc.txt index 544f1c3..4a91c4f 100644 --- a/Publish/doc.txt +++ b/Publish/doc.txt @@ -43,6 +43,7 @@ sudo chown -R 1000:1000 jenkins/ sudo chown -R 472:472 grafana/ sudo chown -R 65534:65534 prometheus/ sudo chown -R 1000:1000 gitea/ +sudo chown -R 1000:1000 kafka/ nginx auth: nginx验证:printf "admin:$(openssl passwd -crypt uF8uY4eM0nS9dA4iZ1bV4hE6)\n" >>./prometheus_passwd @@ -58,11 +59,55 @@ ssh -L 2379:localhost:2379 root@47.108.184.184 yT1vU8fH5mP0rQ6h 生成ssh ssh-keygen -t rsa -b 4096 -C "jenkins-to-aliyun" -f ~/.ssh/jenkins -N "" +ssh-copy-id root@47.108.184.184 生成mock代码 -mockgen -source ./proto/ss/grpc_pb/service_user_grpc.pb.go -destination ./proto/ss/grpc_pb/mocks/service_user_grpc.pb.go -package mocks +mockgen -source ./proto/rs/grpc_pb/service_user_grpc.pb.go -destination ./proto/rs/grpc_pb/mocks/service_user_grpc.pb.go -package mocks 交叉编译: sudo docker run --rm --privileged tonistiigi/binfmt --install all sudo docker buildx create --name multi-arch-builder --use --bootstrap -sudo docker buildx inspect +查看构建器列表:sudo docker buildx ls +让构建器重新扫描QUEM文件:sudo docker buildx inspect --bootstrap + + +客户端VPN设置 +iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -o eth0 -j MASQUERADE +iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -o peer1 -j MASQUERADE +iptables -A FORWARD -i eth0 -o peer1 -j ACCEPT +iptables -A FORWARD -i peer1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT + +docker exec wireguard-client /bin/bash -c ' +echo 1 > /proc/sys/net/ipv4/ip_forward +HOST_IP=$(ip route | awk "/default/ {print \$3}") +iptables -t nat -A PREROUTING -d 192.168.30.2 -j DNAT --to-destination $HOST_IP +iptables -t nat -A POSTROUTING -s $HOST_IP -j SNAT --to-source 192.168.30.2 +iptables -P FORWARD ACCEPT +' + +PostUp = sysctl -w net.ipv4.ip_forward=1 +PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT +PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT +PostUp = iptables -A INPUT -i wg0 -j ACCEPT + +PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE +PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT +PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT +PostDown = iptables -D INPUT -i wg0 -j ACCEPT + +服务端VPN设置 +iptables -t nat -A POSTROUTING -s 10.255.12.0/24 -o eth0 -j MASQUERADE +iptables -t nat -A POSTROUTING -s 10.255.12.0/24 -o wg0 -j MASQUERADE +iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT +iptables -A FORWARD -i wg0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT + +docker exec wireguard-service /bin/bash -c ' +echo 1 > /proc/sys/net/ipv4/ip_forward +HOST_IP=$(ip route | awk "/default/ {print \$3}") +iptables -t nat -A PREROUTING -d 192.168.30.1 -j DNAT --to-destination $HOST_IP +iptables -t nat -A POSTROUTING -s $HOST_IP -j SNAT --to-source 192.168.30.1 +iptables -P FORWARD ACCEPT +' + +sudo ip route add 192.168.30.0/24 via 10.255.12.6 \ No newline at end of file diff --git a/Publish/docker-compose-clash.yml b/Publish/docker-compose-clash.yml new file mode 100644 index 0000000..4c44a2e --- /dev/null +++ b/Publish/docker-compose-clash.yml @@ -0,0 +1,11 @@ +services: + # yacd.haishan.me + mihomo: + image: metacubex/mihomo:v1.19.19 + container_name: mihomo + restart: unless-stopped + ports: + - "7890:7890" + - "9094:9090" + volumes: + - ./clash:/root/.config/mihomo \ No newline at end of file diff --git a/Publish/docker-compose-jaeger.yml b/Publish/docker-compose-jaeger.yml new file mode 100644 index 0000000..fe72e24 --- /dev/null +++ b/Publish/docker-compose-jaeger.yml @@ -0,0 +1,9 @@ +services: + jaeger: + image: jaegertracing/all-in-one:1.76.0 + container_name: jaeger + restart: unless-stopped + ports: + - "16686:16686" + - "4317:4317" + - "5778:5778" \ No newline at end of file diff --git a/Publish/docker-compose-kafka.yml b/Publish/docker-compose-kafka.yml new file mode 100644 index 0000000..91846a0 --- /dev/null +++ b/Publish/docker-compose-kafka.yml @@ -0,0 +1,33 @@ +services: + kafka: + image: confluentinc/cp-kafka:7.7.7 + container_name: kafka + restart: unless-stopped + ports: + - '9092:9092' + - '9095:9095' + environment: + CLUSTER_ID: "NB2XQ2LBN5UGK2I=" + KAFKA_NODE_ID: 1 + KAFKA_PROCESS_ROLES: "controller,broker" + KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093" + KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER" + KAFKA_LISTENERS: "PLAINTEXT://:9092,CONTROLLER://:9093,LOCAL://:9095" + KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092,LOCAL://192.168.31.10:9095" + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,LOCAL:PLAINTEXT" + KAFKA_CONTROLLER_LOG_DIRS: "/var/lib/kafka/data/controller-logs" + KAFKA_LOG_DIRS: "/var/lib/kafka/data/logs" + KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 + volumes: + - './kafka:/var/lib/kafka/data' + + kafka-ui: + image: provectuslabs/kafka-ui:v0.7.2 + container_name: kafka-ui + restart: unless-stopped + ports: + - '8082:8080' + environment: + DYNAMIC_CONFIG_ENABLED: 'true' \ No newline at end of file diff --git a/Publish/docker-compose-metric.yml b/Publish/docker-compose-metric.yml index e59b05b..681d0f7 100644 --- a/Publish/docker-compose-metric.yml +++ b/Publish/docker-compose-metric.yml @@ -16,6 +16,7 @@ services: container_name: node_exporter command: - '--path.rootfs=/host' + - '--web.listen-address=:9101' network_mode: host pid: host restart: unless-stopped diff --git a/Publish/docker-compose-vpn.yml b/Publish/docker-compose-vpn.yml new file mode 100644 index 0000000..4c1ca07 --- /dev/null +++ b/Publish/docker-compose-vpn.yml @@ -0,0 +1,46 @@ +services: + wireguard-service: + image: linuxserver/wireguard:1.0.20250521 + container_name: wireguard-service + restart: unless-stopped + cap_add: + - NET_ADMIN + - SYS_MODULE + environment: + PUID: 1000 + PGID: 1000 + TZ: "Etc/UTC" + SERVERURL: "www.hlsq.asia" + SERVERPORT: "51820" + PEERS: 2 + PEERDNS: "auto" + INTERNAL_SUBNET: "192.168.30.0" + ALLOWEDIPS: "0.0.0.0/0" + volumes: + - ./wireguard-service:/config + - /lib/modules:/lib/modules:ro + ports: + - "51820:51820/udp" + sysctls: + - net.ipv4.ip_forward=1 + - net.ipv4.conf.all.src_valid_mark=1 + + wireguard-client: + image: linuxserver/wireguard:1.0.20250521 + container_name: wireguard-client + restart: unless-stopped + cap_add: + - NET_ADMIN + - SYS_MODULE + environment: + PUID: 1000 + PGID: 1000 + TZ: "Etc/UTC" + CLIENT: 1 + CONFIG_FILE: "/config/wg_confs/peer1.conf" + volumes: + - ./wireguard-client:/config + - /lib/modules:/lib/modules:ro + sysctls: + - net.ipv4.ip_forward=1 + - net.ipv4.conf.all.src_valid_mark=1 \ No newline at end of file diff --git a/Publish/prometheus-service.json b/Publish/prometheus-service.json new file mode 100644 index 0000000..f0d9947 --- /dev/null +++ b/Publish/prometheus-service.json @@ -0,0 +1,34 @@ +[ + { + "targets": [ + "192.168.31.10:18504" + ], + "labels": { + "job": "server-gateway" + } + }, + { + "targets": [ + "192.168.31.10:18801" + ], + "labels": { + "job": "server-user" + } + }, + { + "targets": [ + "192.168.31.10:18701" + ], + "labels": { + "job": "server-scene" + } + }, + { + "targets": [ + "192.168.31.10:18601" + ], + "labels": { + "job": "server-qgdzs" + } + } +] \ No newline at end of file diff --git a/Publish/tunnel.ps1 b/Publish/tunnel.ps1 new file mode 100644 index 0000000..8134c2c --- /dev/null +++ b/Publish/tunnel.ps1 @@ -0,0 +1,12 @@ +Write-Host "tunnel success..." +ssh -N ` +-L 3001:localhost:3001 ` +-L 4317:localhost:4317 ` +-L 6379:localhost:6379 ` +-L 2379:localhost:2379 ` +-L 3306:localhost:3306 ` +-L 9093:localhost:9093 ` +-L 9094:localhost:9094 ` +-L 9092:localhost:9092 ` +-L 8082:localhost:8082 ` +root@47.108.184.184 \ No newline at end of file diff --git a/Tools/mysql_model/qgdzs_db/model/categories.gen.go b/Tools/mysql_model/qgdzs_db/model/categories.gen.go new file mode 100644 index 0000000..826de21 --- /dev/null +++ b/Tools/mysql_model/qgdzs_db/model/categories.gen.go @@ -0,0 +1,37 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" + + "git.hlsq.asia/mmorpg/service-common/utils" + "gorm.io/gorm" +) + +const TableNameCategory = "categories" + +// Category mapped from table +type Category struct { + ID uint64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` + Sn string `gorm:"column:sn;not null;comment:业务唯一编号" json:"sn"` // 业务唯一编号 + Category string `gorm:"column:category;not null;comment:分类" json:"category"` // 分类 + CreatedAt time.Time `gorm:"column:created_at;not null" json:"created_at"` + UpdatedAt time.Time `gorm:"column:updated_at;not null" json:"updated_at"` + DeletedAt gorm.DeletedAt `gorm:"column:deleted_at" json:"deleted_at"` +} + +// TableName Category's table name +func (*Category) TableName() string { + return TableNameCategory +} + +// Auto sn +func (m *Category) BeforeCreate(_ *gorm.DB) error { + if m.Sn == "" { + m.Sn = utils.SnowflakeInstance().Generate().String() + } + return nil +} diff --git a/Tools/mysql_model/user_db/model/questions.gen.go b/Tools/mysql_model/qgdzs_db/model/questions.gen.go similarity index 89% rename from Tools/mysql_model/user_db/model/questions.gen.go rename to Tools/mysql_model/qgdzs_db/model/questions.gen.go index 1ca8c73..41da87f 100644 --- a/Tools/mysql_model/user_db/model/questions.gen.go +++ b/Tools/mysql_model/qgdzs_db/model/questions.gen.go @@ -1,4 +1,4 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. // Code generated by gorm.io/gen. DO NOT EDIT. // Code generated by gorm.io/gen. DO NOT EDIT. @@ -7,8 +7,8 @@ package model import ( "time" - "gorm.io/gorm" "git.hlsq.asia/mmorpg/service-common/utils" + "gorm.io/gorm" ) const TableNameQuestion = "questions" @@ -22,7 +22,7 @@ type Question struct { Answer string `gorm:"column:answer;not null;comment:答案" json:"answer"` // 答案 Explanation string `gorm:"column:explanation;not null;comment:解析" json:"explanation"` // 解析 Difficulty int32 `gorm:"column:difficulty;not null;comment:难度分 0 - 100" json:"difficulty"` // 难度分 0 - 100 - Category string `gorm:"column:category;not null;comment:分类" json:"category"` // 分类 + CategorySn string `gorm:"column:category_sn;not null;comment:分类-唯一编号" json:"category_sn"` // 分类-唯一编号 CreatedAt time.Time `gorm:"column:created_at;not null" json:"created_at"` UpdatedAt time.Time `gorm:"column:updated_at;not null" json:"updated_at"` DeletedAt gorm.DeletedAt `gorm:"column:deleted_at" json:"deleted_at"` diff --git a/Tools/mysql_model/qgdzs_db/model/records.gen.go b/Tools/mysql_model/qgdzs_db/model/records.gen.go new file mode 100644 index 0000000..f928139 --- /dev/null +++ b/Tools/mysql_model/qgdzs_db/model/records.gen.go @@ -0,0 +1,40 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package model + +import ( + "time" + + "git.hlsq.asia/mmorpg/service-common/utils" + "gorm.io/gorm" +) + +const TableNameRecord = "records" + +// Record mapped from table +type Record struct { + ID uint64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` + Sn string `gorm:"column:sn;not null;comment:业务唯一编号" json:"sn"` // 业务唯一编号 + UserSn string `gorm:"column:user_sn;not null;comment:用户-唯一编号" json:"user_sn"` // 用户-唯一编号 + QuestionSn string `gorm:"column:question_sn;not null;comment:题目-唯一编号" json:"question_sn"` // 题目-唯一编号 + Answer string `gorm:"column:answer;not null;comment:答案" json:"answer"` // 答案 + IsCorrect int32 `gorm:"column:is_correct;not null;comment:是否正确 0 否 1 是" json:"is_correct"` // 是否正确 0 否 1 是 + CreatedAt time.Time `gorm:"column:created_at;not null" json:"created_at"` + UpdatedAt time.Time `gorm:"column:updated_at;not null" json:"updated_at"` + DeletedAt gorm.DeletedAt `gorm:"column:deleted_at" json:"deleted_at"` +} + +// TableName Record's table name +func (*Record) TableName() string { + return TableNameRecord +} + +// Auto sn +func (m *Record) BeforeCreate(_ *gorm.DB) error { + if m.Sn == "" { + m.Sn = utils.SnowflakeInstance().Generate().String() + } + return nil +} diff --git a/Tools/mysql_model/qgdzs_db/query/categories.gen.go b/Tools/mysql_model/qgdzs_db/query/categories.gen.go new file mode 100644 index 0000000..78622d3 --- /dev/null +++ b/Tools/mysql_model/qgdzs_db/query/categories.gen.go @@ -0,0 +1,347 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "git.hlsq.asia/mmorpg/qgdzs_db/model" +) + +func newCategory(db *gorm.DB, opts ...gen.DOOption) category { + _category := category{} + + _category.categoryDo.UseDB(db, opts...) + _category.categoryDo.UseModel(&model.Category{}) + + tableName := _category.categoryDo.TableName() + _category.ALL = field.NewAsterisk(tableName) + _category.ID = field.NewUint64(tableName, "id") + _category.Sn = field.NewString(tableName, "sn") + _category.Category = field.NewString(tableName, "category") + _category.CreatedAt = field.NewTime(tableName, "created_at") + _category.UpdatedAt = field.NewTime(tableName, "updated_at") + _category.DeletedAt = field.NewField(tableName, "deleted_at") + + _category.fillFieldMap() + + return _category +} + +type category struct { + categoryDo categoryDo + + ALL field.Asterisk + ID field.Uint64 + Sn field.String // 业务唯一编号 + Category field.String // 分类 + CreatedAt field.Time + UpdatedAt field.Time + DeletedAt field.Field + + fieldMap map[string]field.Expr +} + +func (c category) Table(newTableName string) *category { + c.categoryDo.UseTable(newTableName) + return c.updateTableName(newTableName) +} + +func (c category) As(alias string) *category { + c.categoryDo.DO = *(c.categoryDo.As(alias).(*gen.DO)) + return c.updateTableName(alias) +} + +func (c *category) updateTableName(table string) *category { + c.ALL = field.NewAsterisk(table) + c.ID = field.NewUint64(table, "id") + c.Sn = field.NewString(table, "sn") + c.Category = field.NewString(table, "category") + c.CreatedAt = field.NewTime(table, "created_at") + c.UpdatedAt = field.NewTime(table, "updated_at") + c.DeletedAt = field.NewField(table, "deleted_at") + + c.fillFieldMap() + + return c +} + +func (c *category) WithContext(ctx context.Context) *categoryDo { return c.categoryDo.WithContext(ctx) } + +func (c category) TableName() string { return c.categoryDo.TableName() } + +func (c category) Alias() string { return c.categoryDo.Alias() } + +func (c category) Columns(cols ...field.Expr) gen.Columns { return c.categoryDo.Columns(cols...) } + +func (c *category) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := c.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (c *category) fillFieldMap() { + c.fieldMap = make(map[string]field.Expr, 6) + c.fieldMap["id"] = c.ID + c.fieldMap["sn"] = c.Sn + c.fieldMap["category"] = c.Category + c.fieldMap["created_at"] = c.CreatedAt + c.fieldMap["updated_at"] = c.UpdatedAt + c.fieldMap["deleted_at"] = c.DeletedAt +} + +func (c category) clone(db *gorm.DB) category { + c.categoryDo.ReplaceConnPool(db.Statement.ConnPool) + return c +} + +func (c category) replaceDB(db *gorm.DB) category { + c.categoryDo.ReplaceDB(db) + return c +} + +type categoryDo struct{ gen.DO } + +func (c categoryDo) Debug() *categoryDo { + return c.withDO(c.DO.Debug()) +} + +func (c categoryDo) WithContext(ctx context.Context) *categoryDo { + return c.withDO(c.DO.WithContext(ctx)) +} + +func (c categoryDo) ReadDB() *categoryDo { + return c.Clauses(dbresolver.Read) +} + +func (c categoryDo) WriteDB() *categoryDo { + return c.Clauses(dbresolver.Write) +} + +func (c categoryDo) Session(config *gorm.Session) *categoryDo { + return c.withDO(c.DO.Session(config)) +} + +func (c categoryDo) Clauses(conds ...clause.Expression) *categoryDo { + return c.withDO(c.DO.Clauses(conds...)) +} + +func (c categoryDo) Returning(value interface{}, columns ...string) *categoryDo { + return c.withDO(c.DO.Returning(value, columns...)) +} + +func (c categoryDo) Not(conds ...gen.Condition) *categoryDo { + return c.withDO(c.DO.Not(conds...)) +} + +func (c categoryDo) Or(conds ...gen.Condition) *categoryDo { + return c.withDO(c.DO.Or(conds...)) +} + +func (c categoryDo) Select(conds ...field.Expr) *categoryDo { + return c.withDO(c.DO.Select(conds...)) +} + +func (c categoryDo) Where(conds ...gen.Condition) *categoryDo { + return c.withDO(c.DO.Where(conds...)) +} + +func (c categoryDo) Order(conds ...field.Expr) *categoryDo { + return c.withDO(c.DO.Order(conds...)) +} + +func (c categoryDo) Distinct(cols ...field.Expr) *categoryDo { + return c.withDO(c.DO.Distinct(cols...)) +} + +func (c categoryDo) Omit(cols ...field.Expr) *categoryDo { + return c.withDO(c.DO.Omit(cols...)) +} + +func (c categoryDo) Join(table schema.Tabler, on ...field.Expr) *categoryDo { + return c.withDO(c.DO.Join(table, on...)) +} + +func (c categoryDo) LeftJoin(table schema.Tabler, on ...field.Expr) *categoryDo { + return c.withDO(c.DO.LeftJoin(table, on...)) +} + +func (c categoryDo) RightJoin(table schema.Tabler, on ...field.Expr) *categoryDo { + return c.withDO(c.DO.RightJoin(table, on...)) +} + +func (c categoryDo) Group(cols ...field.Expr) *categoryDo { + return c.withDO(c.DO.Group(cols...)) +} + +func (c categoryDo) Having(conds ...gen.Condition) *categoryDo { + return c.withDO(c.DO.Having(conds...)) +} + +func (c categoryDo) Limit(limit int) *categoryDo { + return c.withDO(c.DO.Limit(limit)) +} + +func (c categoryDo) Offset(offset int) *categoryDo { + return c.withDO(c.DO.Offset(offset)) +} + +func (c categoryDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *categoryDo { + return c.withDO(c.DO.Scopes(funcs...)) +} + +func (c categoryDo) Unscoped() *categoryDo { + return c.withDO(c.DO.Unscoped()) +} + +func (c categoryDo) Create(values ...*model.Category) error { + if len(values) == 0 { + return nil + } + return c.DO.Create(values) +} + +func (c categoryDo) CreateInBatches(values []*model.Category, batchSize int) error { + return c.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (c categoryDo) Save(values ...*model.Category) error { + if len(values) == 0 { + return nil + } + return c.DO.Save(values) +} + +func (c categoryDo) First() (*model.Category, error) { + if result, err := c.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) Take() (*model.Category, error) { + if result, err := c.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) Last() (*model.Category, error) { + if result, err := c.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) Find() ([]*model.Category, error) { + result, err := c.DO.Find() + return result.([]*model.Category), err +} + +func (c categoryDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Category, err error) { + buf := make([]*model.Category, 0, batchSize) + err = c.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (c categoryDo) FindInBatches(result *[]*model.Category, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return c.DO.FindInBatches(result, batchSize, fc) +} + +func (c categoryDo) Attrs(attrs ...field.AssignExpr) *categoryDo { + return c.withDO(c.DO.Attrs(attrs...)) +} + +func (c categoryDo) Assign(attrs ...field.AssignExpr) *categoryDo { + return c.withDO(c.DO.Assign(attrs...)) +} + +func (c categoryDo) Joins(fields ...field.RelationField) *categoryDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Joins(_f)) + } + return &c +} + +func (c categoryDo) Preload(fields ...field.RelationField) *categoryDo { + for _, _f := range fields { + c = *c.withDO(c.DO.Preload(_f)) + } + return &c +} + +func (c categoryDo) FirstOrInit() (*model.Category, error) { + if result, err := c.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) FirstOrCreate() (*model.Category, error) { + if result, err := c.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Category), nil + } +} + +func (c categoryDo) FindByPage(offset int, limit int) (result []*model.Category, count int64, err error) { + result, err = c.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = c.Offset(-1).Limit(-1).Count() + return +} + +func (c categoryDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = c.Count() + if err != nil { + return + } + + err = c.Offset(offset).Limit(limit).Scan(result) + return +} + +func (c categoryDo) Scan(result interface{}) (err error) { + return c.DO.Scan(result) +} + +func (c categoryDo) Delete(models ...*model.Category) (result gen.ResultInfo, err error) { + return c.DO.Delete(models) +} + +func (c *categoryDo) withDO(do gen.Dao) *categoryDo { + c.DO = *do.(*gen.DO) + return c +} diff --git a/Tools/mysql_model/qgdzs_db/query/gen.go b/Tools/mysql_model/qgdzs_db/query/gen.go new file mode 100644 index 0000000..f5d18a1 --- /dev/null +++ b/Tools/mysql_model/qgdzs_db/query/gen.go @@ -0,0 +1,105 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + "database/sql" + + "gorm.io/gorm" + + "gorm.io/gen" + + "gorm.io/plugin/dbresolver" +) + +func Use(db *gorm.DB, opts ...gen.DOOption) *Query { + return &Query{ + db: db, + Category: newCategory(db, opts...), + Question: newQuestion(db, opts...), + Record: newRecord(db, opts...), + } +} + +type Query struct { + db *gorm.DB + + Category category + Question question + Record record +} + +func (q *Query) Available() bool { return q.db != nil } + +func (q *Query) clone(db *gorm.DB) *Query { + return &Query{ + db: db, + Category: q.Category.clone(db), + Question: q.Question.clone(db), + Record: q.Record.clone(db), + } +} + +func (q *Query) ReadDB() *Query { + return q.ReplaceDB(q.db.Clauses(dbresolver.Read)) +} + +func (q *Query) WriteDB() *Query { + return q.ReplaceDB(q.db.Clauses(dbresolver.Write)) +} + +func (q *Query) ReplaceDB(db *gorm.DB) *Query { + return &Query{ + db: db, + Category: q.Category.replaceDB(db), + Question: q.Question.replaceDB(db), + Record: q.Record.replaceDB(db), + } +} + +type queryCtx struct { + Category *categoryDo + Question *questionDo + Record *recordDo +} + +func (q *Query) WithContext(ctx context.Context) *queryCtx { + return &queryCtx{ + Category: q.Category.WithContext(ctx), + Question: q.Question.WithContext(ctx), + Record: q.Record.WithContext(ctx), + } +} + +func (q *Query) Transaction(fc func(tx *Query) error, opts ...*sql.TxOptions) error { + return q.db.Transaction(func(tx *gorm.DB) error { return fc(q.clone(tx)) }, opts...) +} + +func (q *Query) Begin(opts ...*sql.TxOptions) *QueryTx { + tx := q.db.Begin(opts...) + return &QueryTx{Query: q.clone(tx), Error: tx.Error} +} + +type QueryTx struct { + *Query + Error error +} + +func (q *QueryTx) Commit() error { + return q.db.Commit().Error +} + +func (q *QueryTx) Rollback() error { + return q.db.Rollback().Error +} + +func (q *QueryTx) SavePoint(name string) error { + return q.db.SavePoint(name).Error +} + +func (q *QueryTx) RollbackTo(name string) error { + return q.db.RollbackTo(name).Error +} diff --git a/Tools/mysql_model/user_db/query/questions.gen.go b/Tools/mysql_model/qgdzs_db/query/questions.gen.go similarity index 97% rename from Tools/mysql_model/user_db/query/questions.gen.go rename to Tools/mysql_model/qgdzs_db/query/questions.gen.go index e21f87f..2080390 100644 --- a/Tools/mysql_model/user_db/query/questions.gen.go +++ b/Tools/mysql_model/qgdzs_db/query/questions.gen.go @@ -16,7 +16,7 @@ import ( "gorm.io/plugin/dbresolver" - "git.hlsq.asia/mmorpg/user_db/model" + "git.hlsq.asia/mmorpg/qgdzs_db/model" ) func newQuestion(db *gorm.DB, opts ...gen.DOOption) question { @@ -34,7 +34,7 @@ func newQuestion(db *gorm.DB, opts ...gen.DOOption) question { _question.Answer = field.NewString(tableName, "answer") _question.Explanation = field.NewString(tableName, "explanation") _question.Difficulty = field.NewInt32(tableName, "difficulty") - _question.Category = field.NewString(tableName, "category") + _question.CategorySn = field.NewString(tableName, "category_sn") _question.CreatedAt = field.NewTime(tableName, "created_at") _question.UpdatedAt = field.NewTime(tableName, "updated_at") _question.DeletedAt = field.NewField(tableName, "deleted_at") @@ -55,7 +55,7 @@ type question struct { Answer field.String // 答案 Explanation field.String // 解析 Difficulty field.Int32 // 难度分 0 - 100 - Category field.String // 分类 + CategorySn field.String // 分类-唯一编号 CreatedAt field.Time UpdatedAt field.Time DeletedAt field.Field @@ -82,7 +82,7 @@ func (q *question) updateTableName(table string) *question { q.Answer = field.NewString(table, "answer") q.Explanation = field.NewString(table, "explanation") q.Difficulty = field.NewInt32(table, "difficulty") - q.Category = field.NewString(table, "category") + q.CategorySn = field.NewString(table, "category_sn") q.CreatedAt = field.NewTime(table, "created_at") q.UpdatedAt = field.NewTime(table, "updated_at") q.DeletedAt = field.NewField(table, "deleted_at") @@ -118,7 +118,7 @@ func (q *question) fillFieldMap() { q.fieldMap["answer"] = q.Answer q.fieldMap["explanation"] = q.Explanation q.fieldMap["difficulty"] = q.Difficulty - q.fieldMap["category"] = q.Category + q.fieldMap["category_sn"] = q.CategorySn q.fieldMap["created_at"] = q.CreatedAt q.fieldMap["updated_at"] = q.UpdatedAt q.fieldMap["deleted_at"] = q.DeletedAt diff --git a/Tools/mysql_model/qgdzs_db/query/records.gen.go b/Tools/mysql_model/qgdzs_db/query/records.gen.go new file mode 100644 index 0000000..a85934c --- /dev/null +++ b/Tools/mysql_model/qgdzs_db/query/records.gen.go @@ -0,0 +1,359 @@ +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. + +package query + +import ( + "context" + + "gorm.io/gorm" + "gorm.io/gorm/clause" + "gorm.io/gorm/schema" + + "gorm.io/gen" + "gorm.io/gen/field" + + "gorm.io/plugin/dbresolver" + + "git.hlsq.asia/mmorpg/qgdzs_db/model" +) + +func newRecord(db *gorm.DB, opts ...gen.DOOption) record { + _record := record{} + + _record.recordDo.UseDB(db, opts...) + _record.recordDo.UseModel(&model.Record{}) + + tableName := _record.recordDo.TableName() + _record.ALL = field.NewAsterisk(tableName) + _record.ID = field.NewUint64(tableName, "id") + _record.Sn = field.NewString(tableName, "sn") + _record.UserSn = field.NewString(tableName, "user_sn") + _record.QuestionSn = field.NewString(tableName, "question_sn") + _record.Answer = field.NewString(tableName, "answer") + _record.IsCorrect = field.NewInt32(tableName, "is_correct") + _record.CreatedAt = field.NewTime(tableName, "created_at") + _record.UpdatedAt = field.NewTime(tableName, "updated_at") + _record.DeletedAt = field.NewField(tableName, "deleted_at") + + _record.fillFieldMap() + + return _record +} + +type record struct { + recordDo recordDo + + ALL field.Asterisk + ID field.Uint64 + Sn field.String // 业务唯一编号 + UserSn field.String // 用户-唯一编号 + QuestionSn field.String // 题目-唯一编号 + Answer field.String // 答案 + IsCorrect field.Int32 // 是否正确 0 否 1 是 + CreatedAt field.Time + UpdatedAt field.Time + DeletedAt field.Field + + fieldMap map[string]field.Expr +} + +func (r record) Table(newTableName string) *record { + r.recordDo.UseTable(newTableName) + return r.updateTableName(newTableName) +} + +func (r record) As(alias string) *record { + r.recordDo.DO = *(r.recordDo.As(alias).(*gen.DO)) + return r.updateTableName(alias) +} + +func (r *record) updateTableName(table string) *record { + r.ALL = field.NewAsterisk(table) + r.ID = field.NewUint64(table, "id") + r.Sn = field.NewString(table, "sn") + r.UserSn = field.NewString(table, "user_sn") + r.QuestionSn = field.NewString(table, "question_sn") + r.Answer = field.NewString(table, "answer") + r.IsCorrect = field.NewInt32(table, "is_correct") + r.CreatedAt = field.NewTime(table, "created_at") + r.UpdatedAt = field.NewTime(table, "updated_at") + r.DeletedAt = field.NewField(table, "deleted_at") + + r.fillFieldMap() + + return r +} + +func (r *record) WithContext(ctx context.Context) *recordDo { return r.recordDo.WithContext(ctx) } + +func (r record) TableName() string { return r.recordDo.TableName() } + +func (r record) Alias() string { return r.recordDo.Alias() } + +func (r record) Columns(cols ...field.Expr) gen.Columns { return r.recordDo.Columns(cols...) } + +func (r *record) GetFieldByName(fieldName string) (field.OrderExpr, bool) { + _f, ok := r.fieldMap[fieldName] + if !ok || _f == nil { + return nil, false + } + _oe, ok := _f.(field.OrderExpr) + return _oe, ok +} + +func (r *record) fillFieldMap() { + r.fieldMap = make(map[string]field.Expr, 9) + r.fieldMap["id"] = r.ID + r.fieldMap["sn"] = r.Sn + r.fieldMap["user_sn"] = r.UserSn + r.fieldMap["question_sn"] = r.QuestionSn + r.fieldMap["answer"] = r.Answer + r.fieldMap["is_correct"] = r.IsCorrect + r.fieldMap["created_at"] = r.CreatedAt + r.fieldMap["updated_at"] = r.UpdatedAt + r.fieldMap["deleted_at"] = r.DeletedAt +} + +func (r record) clone(db *gorm.DB) record { + r.recordDo.ReplaceConnPool(db.Statement.ConnPool) + return r +} + +func (r record) replaceDB(db *gorm.DB) record { + r.recordDo.ReplaceDB(db) + return r +} + +type recordDo struct{ gen.DO } + +func (r recordDo) Debug() *recordDo { + return r.withDO(r.DO.Debug()) +} + +func (r recordDo) WithContext(ctx context.Context) *recordDo { + return r.withDO(r.DO.WithContext(ctx)) +} + +func (r recordDo) ReadDB() *recordDo { + return r.Clauses(dbresolver.Read) +} + +func (r recordDo) WriteDB() *recordDo { + return r.Clauses(dbresolver.Write) +} + +func (r recordDo) Session(config *gorm.Session) *recordDo { + return r.withDO(r.DO.Session(config)) +} + +func (r recordDo) Clauses(conds ...clause.Expression) *recordDo { + return r.withDO(r.DO.Clauses(conds...)) +} + +func (r recordDo) Returning(value interface{}, columns ...string) *recordDo { + return r.withDO(r.DO.Returning(value, columns...)) +} + +func (r recordDo) Not(conds ...gen.Condition) *recordDo { + return r.withDO(r.DO.Not(conds...)) +} + +func (r recordDo) Or(conds ...gen.Condition) *recordDo { + return r.withDO(r.DO.Or(conds...)) +} + +func (r recordDo) Select(conds ...field.Expr) *recordDo { + return r.withDO(r.DO.Select(conds...)) +} + +func (r recordDo) Where(conds ...gen.Condition) *recordDo { + return r.withDO(r.DO.Where(conds...)) +} + +func (r recordDo) Order(conds ...field.Expr) *recordDo { + return r.withDO(r.DO.Order(conds...)) +} + +func (r recordDo) Distinct(cols ...field.Expr) *recordDo { + return r.withDO(r.DO.Distinct(cols...)) +} + +func (r recordDo) Omit(cols ...field.Expr) *recordDo { + return r.withDO(r.DO.Omit(cols...)) +} + +func (r recordDo) Join(table schema.Tabler, on ...field.Expr) *recordDo { + return r.withDO(r.DO.Join(table, on...)) +} + +func (r recordDo) LeftJoin(table schema.Tabler, on ...field.Expr) *recordDo { + return r.withDO(r.DO.LeftJoin(table, on...)) +} + +func (r recordDo) RightJoin(table schema.Tabler, on ...field.Expr) *recordDo { + return r.withDO(r.DO.RightJoin(table, on...)) +} + +func (r recordDo) Group(cols ...field.Expr) *recordDo { + return r.withDO(r.DO.Group(cols...)) +} + +func (r recordDo) Having(conds ...gen.Condition) *recordDo { + return r.withDO(r.DO.Having(conds...)) +} + +func (r recordDo) Limit(limit int) *recordDo { + return r.withDO(r.DO.Limit(limit)) +} + +func (r recordDo) Offset(offset int) *recordDo { + return r.withDO(r.DO.Offset(offset)) +} + +func (r recordDo) Scopes(funcs ...func(gen.Dao) gen.Dao) *recordDo { + return r.withDO(r.DO.Scopes(funcs...)) +} + +func (r recordDo) Unscoped() *recordDo { + return r.withDO(r.DO.Unscoped()) +} + +func (r recordDo) Create(values ...*model.Record) error { + if len(values) == 0 { + return nil + } + return r.DO.Create(values) +} + +func (r recordDo) CreateInBatches(values []*model.Record, batchSize int) error { + return r.DO.CreateInBatches(values, batchSize) +} + +// Save : !!! underlying implementation is different with GORM +// The method is equivalent to executing the statement: db.Clauses(clause.OnConflict{UpdateAll: true}).Create(values) +func (r recordDo) Save(values ...*model.Record) error { + if len(values) == 0 { + return nil + } + return r.DO.Save(values) +} + +func (r recordDo) First() (*model.Record, error) { + if result, err := r.DO.First(); err != nil { + return nil, err + } else { + return result.(*model.Record), nil + } +} + +func (r recordDo) Take() (*model.Record, error) { + if result, err := r.DO.Take(); err != nil { + return nil, err + } else { + return result.(*model.Record), nil + } +} + +func (r recordDo) Last() (*model.Record, error) { + if result, err := r.DO.Last(); err != nil { + return nil, err + } else { + return result.(*model.Record), nil + } +} + +func (r recordDo) Find() ([]*model.Record, error) { + result, err := r.DO.Find() + return result.([]*model.Record), err +} + +func (r recordDo) FindInBatch(batchSize int, fc func(tx gen.Dao, batch int) error) (results []*model.Record, err error) { + buf := make([]*model.Record, 0, batchSize) + err = r.DO.FindInBatches(&buf, batchSize, func(tx gen.Dao, batch int) error { + defer func() { results = append(results, buf...) }() + return fc(tx, batch) + }) + return results, err +} + +func (r recordDo) FindInBatches(result *[]*model.Record, batchSize int, fc func(tx gen.Dao, batch int) error) error { + return r.DO.FindInBatches(result, batchSize, fc) +} + +func (r recordDo) Attrs(attrs ...field.AssignExpr) *recordDo { + return r.withDO(r.DO.Attrs(attrs...)) +} + +func (r recordDo) Assign(attrs ...field.AssignExpr) *recordDo { + return r.withDO(r.DO.Assign(attrs...)) +} + +func (r recordDo) Joins(fields ...field.RelationField) *recordDo { + for _, _f := range fields { + r = *r.withDO(r.DO.Joins(_f)) + } + return &r +} + +func (r recordDo) Preload(fields ...field.RelationField) *recordDo { + for _, _f := range fields { + r = *r.withDO(r.DO.Preload(_f)) + } + return &r +} + +func (r recordDo) FirstOrInit() (*model.Record, error) { + if result, err := r.DO.FirstOrInit(); err != nil { + return nil, err + } else { + return result.(*model.Record), nil + } +} + +func (r recordDo) FirstOrCreate() (*model.Record, error) { + if result, err := r.DO.FirstOrCreate(); err != nil { + return nil, err + } else { + return result.(*model.Record), nil + } +} + +func (r recordDo) FindByPage(offset int, limit int) (result []*model.Record, count int64, err error) { + result, err = r.Offset(offset).Limit(limit).Find() + if err != nil { + return + } + + if size := len(result); 0 < limit && 0 < size && size < limit { + count = int64(size + offset) + return + } + + count, err = r.Offset(-1).Limit(-1).Count() + return +} + +func (r recordDo) ScanByPage(result interface{}, offset int, limit int) (count int64, err error) { + count, err = r.Count() + if err != nil { + return + } + + err = r.Offset(offset).Limit(limit).Scan(result) + return +} + +func (r recordDo) Scan(result interface{}) (err error) { + return r.DO.Scan(result) +} + +func (r recordDo) Delete(models ...*model.Record) (result gen.ResultInfo, err error) { + return r.DO.Delete(models) +} + +func (r *recordDo) withDO(do gen.Dao) *recordDo { + r.DO = *do.(*gen.DO) + return r +} diff --git a/Tools/mysql_model/user_db/model/users.gen.go b/Tools/mysql_model/user_db/model/users.gen.go index db3c7fa..e5905db 100644 --- a/Tools/mysql_model/user_db/model/users.gen.go +++ b/Tools/mysql_model/user_db/model/users.gen.go @@ -1,4 +1,4 @@ -// Code generated by gorm.io/gen. DO NOT EDIT. +// Code generated by gorm.io/gen. DO NOT EDIT. // Code generated by gorm.io/gen. DO NOT EDIT. // Code generated by gorm.io/gen. DO NOT EDIT. @@ -7,21 +7,23 @@ package model import ( "time" - "gorm.io/gorm" "git.hlsq.asia/mmorpg/service-common/utils" + "gorm.io/gorm" ) const TableNameUser = "users" // User mapped from table type User struct { - ID uint64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` - Sn string `gorm:"column:sn;not null;comment:业务唯一编号" json:"sn"` // 业务唯一编号 - Name string `gorm:"column:name;not null" json:"name"` - Phone string `gorm:"column:phone;not null" json:"phone"` - CreatedAt time.Time `gorm:"column:created_at;not null" json:"created_at"` - UpdatedAt time.Time `gorm:"column:updated_at;not null" json:"updated_at"` - DeletedAt gorm.DeletedAt `gorm:"column:deleted_at" json:"deleted_at"` + ID uint64 `gorm:"column:id;primaryKey;autoIncrement:true" json:"id"` + Sn string `gorm:"column:sn;not null;comment:业务唯一编号" json:"sn"` // 业务唯一编号 + Name string `gorm:"column:name;not null" json:"name"` + Phone string `gorm:"column:phone" json:"phone"` + WxUnionID string `gorm:"column:wx_union_id;comment:微信用户唯一标识" json:"wx_union_id"` // 微信用户唯一标识 + WxMiniOpenID string `gorm:"column:wx_mini_open_id;comment:微信小程序的openID" json:"wx_mini_open_id"` // 微信小程序的openID + CreatedAt time.Time `gorm:"column:created_at;not null" json:"created_at"` + UpdatedAt time.Time `gorm:"column:updated_at;not null" json:"updated_at"` + DeletedAt gorm.DeletedAt `gorm:"column:deleted_at" json:"deleted_at"` } // TableName User's table name diff --git a/Tools/mysql_model/user_db/query/gen.go b/Tools/mysql_model/user_db/query/gen.go index 4adcef8..d067772 100644 --- a/Tools/mysql_model/user_db/query/gen.go +++ b/Tools/mysql_model/user_db/query/gen.go @@ -17,26 +17,23 @@ import ( func Use(db *gorm.DB, opts ...gen.DOOption) *Query { return &Query{ - db: db, - Question: newQuestion(db, opts...), - User: newUser(db, opts...), + db: db, + User: newUser(db, opts...), } } type Query struct { db *gorm.DB - Question question - User user + User user } func (q *Query) Available() bool { return q.db != nil } func (q *Query) clone(db *gorm.DB) *Query { return &Query{ - db: db, - Question: q.Question.clone(db), - User: q.User.clone(db), + db: db, + User: q.User.clone(db), } } @@ -50,21 +47,18 @@ func (q *Query) WriteDB() *Query { func (q *Query) ReplaceDB(db *gorm.DB) *Query { return &Query{ - db: db, - Question: q.Question.replaceDB(db), - User: q.User.replaceDB(db), + db: db, + User: q.User.replaceDB(db), } } type queryCtx struct { - Question *questionDo - User *userDo + User *userDo } func (q *Query) WithContext(ctx context.Context) *queryCtx { return &queryCtx{ - Question: q.Question.WithContext(ctx), - User: q.User.WithContext(ctx), + User: q.User.WithContext(ctx), } } diff --git a/Tools/mysql_model/user_db/query/users.gen.go b/Tools/mysql_model/user_db/query/users.gen.go index 370850c..3b0c61b 100644 --- a/Tools/mysql_model/user_db/query/users.gen.go +++ b/Tools/mysql_model/user_db/query/users.gen.go @@ -31,6 +31,8 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user { _user.Sn = field.NewString(tableName, "sn") _user.Name = field.NewString(tableName, "name") _user.Phone = field.NewString(tableName, "phone") + _user.WxUnionID = field.NewString(tableName, "wx_union_id") + _user.WxMiniOpenID = field.NewString(tableName, "wx_mini_open_id") _user.CreatedAt = field.NewTime(tableName, "created_at") _user.UpdatedAt = field.NewTime(tableName, "updated_at") _user.DeletedAt = field.NewField(tableName, "deleted_at") @@ -43,14 +45,16 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user { type user struct { userDo userDo - ALL field.Asterisk - ID field.Uint64 - Sn field.String // 业务唯一编号 - Name field.String - Phone field.String - CreatedAt field.Time - UpdatedAt field.Time - DeletedAt field.Field + ALL field.Asterisk + ID field.Uint64 + Sn field.String // 业务唯一编号 + Name field.String + Phone field.String + WxUnionID field.String // 微信用户唯一标识 + WxMiniOpenID field.String // 微信小程序的openID + CreatedAt field.Time + UpdatedAt field.Time + DeletedAt field.Field fieldMap map[string]field.Expr } @@ -71,6 +75,8 @@ func (u *user) updateTableName(table string) *user { u.Sn = field.NewString(table, "sn") u.Name = field.NewString(table, "name") u.Phone = field.NewString(table, "phone") + u.WxUnionID = field.NewString(table, "wx_union_id") + u.WxMiniOpenID = field.NewString(table, "wx_mini_open_id") u.CreatedAt = field.NewTime(table, "created_at") u.UpdatedAt = field.NewTime(table, "updated_at") u.DeletedAt = field.NewField(table, "deleted_at") @@ -98,11 +104,13 @@ func (u *user) GetFieldByName(fieldName string) (field.OrderExpr, bool) { } func (u *user) fillFieldMap() { - u.fieldMap = make(map[string]field.Expr, 7) + u.fieldMap = make(map[string]field.Expr, 9) u.fieldMap["id"] = u.ID u.fieldMap["sn"] = u.Sn u.fieldMap["name"] = u.Name u.fieldMap["phone"] = u.Phone + u.fieldMap["wx_union_id"] = u.WxUnionID + u.fieldMap["wx_mini_open_id"] = u.WxMiniOpenID u.fieldMap["created_at"] = u.CreatedAt u.fieldMap["updated_at"] = u.UpdatedAt u.fieldMap["deleted_at"] = u.DeletedAt