wfz 2 years ago
parent
commit
5e385db4ca

+ 85 - 94
api/account/account.pb.go

@@ -1542,7 +1542,7 @@ var file_account_proto_rawDesc = []byte{
 	0x6f, 0x64, 0x65, 0x22, 0x32, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x54, 0x6f, 0x6b, 0x65,
 	0x6e, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
 	0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x32, 0xd5, 0x0c, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f,
+	0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x32, 0xdf, 0x0b, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f,
 	0x75, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x0a, 0x44, 0x65, 0x62, 0x75, 0x67, 0x4c, 0x6f, 0x67, 0x69,
 	0x6e, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e,
 	0x44, 0x65, 0x62, 0x75, 0x67, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
@@ -1580,75 +1580,68 @@ var file_account_proto_rawDesc = []byte{
 	0x47, 0x65, 0x74, 0x47, 0x65, 0x74, 0x47, 0x7a, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52,
 	0x65, 0x70, 0x6c, 0x79, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61,
 	0x70, 0x69, 0x2f, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x2f, 0x67, 0x7a, 0x68, 0x2f, 0x63, 0x6f, 0x6e,
-	0x66, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x13, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61,
-	0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x61, 0x70,
-	0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49,
-	0x44, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e,
-	0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x2c, 0x82, 0xd3,
-	0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
-	0x6e, 0x2f, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61,
-	0x64, 0x2f, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x5c, 0x0a, 0x1b, 0x47, 0x65,
-	0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x79, 0x4f, 0x70, 0x65, 0x6e, 0x49,
-	0x44, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e,
-	0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e,
-	0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x65, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x49,
-	0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x42, 0x79, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41,
-	0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4f,
-	0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12,
-	0x70, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79,
-	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74,
-	0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42,
-	0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
-	0x00, 0x12, 0x7e, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79,
-	0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73,
-	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74,
-	0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f,
-	0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42,
-	0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22,
-	0x00, 0x12, 0x8b, 0x01, 0x0a, 0x31, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
-	0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49,
-	0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x42, 0x79, 0x4d, 0x69, 0x6e, 0x69,
-	0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63,
-	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66,
-	0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x66, 0x3a, 0x01, 0x2a, 0x12, 0x5c, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74,
+	0x69, 0x74, 0x79, 0x42, 0x79, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x41, 0x70,
+	0x70, 0x49, 0x44, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63,
+	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e,
+	0x66, 0x6f, 0x12, 0x65, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74,
+	0x79, 0x42, 0x79, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49,
+	0x44, 0x41, 0x6e, 0x64, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69,
+	0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41,
+	0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x49, 0x64, 0x65,
+	0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x70, 0x0a, 0x16, 0x47, 0x65, 0x74,
+	0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x49, 0x44, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
 	0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41,
-	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12,
-	0x9d, 0x01, 0x0a, 0x25, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79,
-	0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73,
-	0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e,
-	0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41,
-	0x6e, 0x64, 0x49, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75,
-	0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42,
-	0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73, 0x53,
-	0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12,
-	0x4d, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
-	0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4f,
-	0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4f,
-	0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62,
-	0x65, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e,
-	0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42,
-	0x46, 0x0a, 0x0b, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x01,
-	0x5a, 0x35, 0x67, 0x69, 0x74, 0x2e, 0x69, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x77, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3b,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65,
+	0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x24, 0x47,
+	0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41,
+	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x28, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65,
+	0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x31,
+	0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63,
+	0x72, 0x69, 0x62, 0x65, 0x42, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61,
+	0x6d, 0x12, 0x2a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e,
+	0x47, 0x65, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63,
+	0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e,
+	0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x49,
+	0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74,
+	0x49, 0x44, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x9d, 0x01, 0x0a, 0x25, 0x46, 0x69,
+	0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72,
+	0x69, 0x62, 0x65, 0x12, 0x39, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79,
+	0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73, 0x53, 0x75,
+	0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x6e,
+	0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x79, 0x42, 0x79, 0x41, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x49, 0x44, 0x41, 0x6e, 0x64, 0x49, 0x73, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
+	0x62, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x0d, 0x55, 0x73, 0x65,
+	0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x70, 0x69,
+	0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44, 0x41,
+	0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16,
+	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
+	0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4f, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72,
+	0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x70,
+	0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x49, 0x44,
+	0x41, 0x6e, 0x64, 0x41, 0x70, 0x70, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x46, 0x0a, 0x0b, 0x61, 0x70, 0x69,
+	0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50, 0x01, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x2e,
+	0x69, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65,
+	0x72, 0x2f, 0x70, 0x77, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x70,
+	0x69, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -1697,31 +1690,29 @@ var file_account_proto_depIdxs = []int32{
 	16, // 3: api.account.Account.AuthorizationMiniProgram:input_type -> api.account.AuthorizationMiniProgramRequest
 	22, // 4: api.account.Account.GetUserLoginConfig:input_type -> google.protobuf.Empty
 	22, // 5: api.account.Account.GetGetGzhConfig:input_type -> google.protobuf.Empty
-	10, // 6: api.account.Account.UploadMaterialVoice:input_type -> api.account.MediaID
-	12, // 7: api.account.Account.GetIdentityByOpenIDAndAppID:input_type -> api.account.OpenIDAndAppIDRequest
-	12, // 8: api.account.Account.GetIdentityByOpenIDAndAppIDAndCreate:input_type -> api.account.OpenIDAndAppIDRequest
-	6,  // 9: api.account.Account.GetIdentifyByAccountID:input_type -> api.account.GetIdentifyByAccountIDRequest
-	6,  // 10: api.account.Account.GetIdentifyByAccountIDAndIsSubscribe:input_type -> api.account.GetIdentifyByAccountIDRequest
-	6,  // 11: api.account.Account.GetIdentifyByAccountIDAndIsSubscribeByMiniProgram:input_type -> api.account.GetIdentifyByAccountIDRequest
-	2,  // 12: api.account.Account.FindIdentifyByAccountIDAndIsSubscribe:input_type -> api.account.FindIdentifyByAccountIDAndIsSubscribeRequest
-	12, // 13: api.account.Account.UserSubscribe:input_type -> api.account.OpenIDAndAppIDRequest
-	12, // 14: api.account.Account.UserUnsubscribe:input_type -> api.account.OpenIDAndAppIDRequest
-	18, // 15: api.account.Account.DebugLogin:output_type -> api.account.TokenReply
-	18, // 16: api.account.Account.Authorization:output_type -> api.account.TokenReply
-	19, // 17: api.account.Account.AuthorizationMiniProgram:output_type -> api.account.MiniProgramTokenReply
-	23, // 18: api.account.Account.GetUserLoginConfig:output_type -> api.common.GetLoginConfigReply
-	5,  // 19: api.account.Account.GetGetGzhConfig:output_type -> api.account.GetGetGzhConfigReply
-	11, // 20: api.account.Account.UploadMaterialVoice:output_type -> api.account.MaterialLink
-	13, // 21: api.account.Account.GetIdentityByOpenIDAndAppID:output_type -> api.account.IdentityInfo
-	13, // 22: api.account.Account.GetIdentityByOpenIDAndAppIDAndCreate:output_type -> api.account.IdentityInfo
-	7,  // 23: api.account.Account.GetIdentifyByAccountID:output_type -> api.account.GetIdentifyByAccountIDReply
-	7,  // 24: api.account.Account.GetIdentifyByAccountIDAndIsSubscribe:output_type -> api.account.GetIdentifyByAccountIDReply
-	7,  // 25: api.account.Account.GetIdentifyByAccountIDAndIsSubscribeByMiniProgram:output_type -> api.account.GetIdentifyByAccountIDReply
-	3,  // 26: api.account.Account.FindIdentifyByAccountIDAndIsSubscribe:output_type -> api.account.FindIdentifyByAccountIDAndIsSubscribeReply
-	22, // 27: api.account.Account.UserSubscribe:output_type -> google.protobuf.Empty
-	22, // 28: api.account.Account.UserUnsubscribe:output_type -> google.protobuf.Empty
-	15, // [15:29] is the sub-list for method output_type
-	1,  // [1:15] is the sub-list for method input_type
+	12, // 6: api.account.Account.GetIdentityByOpenIDAndAppID:input_type -> api.account.OpenIDAndAppIDRequest
+	12, // 7: api.account.Account.GetIdentityByOpenIDAndAppIDAndCreate:input_type -> api.account.OpenIDAndAppIDRequest
+	6,  // 8: api.account.Account.GetIdentifyByAccountID:input_type -> api.account.GetIdentifyByAccountIDRequest
+	6,  // 9: api.account.Account.GetIdentifyByAccountIDAndIsSubscribe:input_type -> api.account.GetIdentifyByAccountIDRequest
+	6,  // 10: api.account.Account.GetIdentifyByAccountIDAndIsSubscribeByMiniProgram:input_type -> api.account.GetIdentifyByAccountIDRequest
+	2,  // 11: api.account.Account.FindIdentifyByAccountIDAndIsSubscribe:input_type -> api.account.FindIdentifyByAccountIDAndIsSubscribeRequest
+	12, // 12: api.account.Account.UserSubscribe:input_type -> api.account.OpenIDAndAppIDRequest
+	12, // 13: api.account.Account.UserUnsubscribe:input_type -> api.account.OpenIDAndAppIDRequest
+	18, // 14: api.account.Account.DebugLogin:output_type -> api.account.TokenReply
+	18, // 15: api.account.Account.Authorization:output_type -> api.account.TokenReply
+	19, // 16: api.account.Account.AuthorizationMiniProgram:output_type -> api.account.MiniProgramTokenReply
+	23, // 17: api.account.Account.GetUserLoginConfig:output_type -> api.common.GetLoginConfigReply
+	5,  // 18: api.account.Account.GetGetGzhConfig:output_type -> api.account.GetGetGzhConfigReply
+	13, // 19: api.account.Account.GetIdentityByOpenIDAndAppID:output_type -> api.account.IdentityInfo
+	13, // 20: api.account.Account.GetIdentityByOpenIDAndAppIDAndCreate:output_type -> api.account.IdentityInfo
+	7,  // 21: api.account.Account.GetIdentifyByAccountID:output_type -> api.account.GetIdentifyByAccountIDReply
+	7,  // 22: api.account.Account.GetIdentifyByAccountIDAndIsSubscribe:output_type -> api.account.GetIdentifyByAccountIDReply
+	7,  // 23: api.account.Account.GetIdentifyByAccountIDAndIsSubscribeByMiniProgram:output_type -> api.account.GetIdentifyByAccountIDReply
+	3,  // 24: api.account.Account.FindIdentifyByAccountIDAndIsSubscribe:output_type -> api.account.FindIdentifyByAccountIDAndIsSubscribeReply
+	22, // 25: api.account.Account.UserSubscribe:output_type -> google.protobuf.Empty
+	22, // 26: api.account.Account.UserUnsubscribe:output_type -> google.protobuf.Empty
+	14, // [14:27] is the sub-list for method output_type
+	1,  // [1:14] is the sub-list for method input_type
 	1,  // [1:1] is the sub-list for extension type_name
 	1,  // [1:1] is the sub-list for extension extendee
 	0,  // [0:1] is the sub-list for field type_name

+ 0 - 7
api/account/account.proto

@@ -45,13 +45,6 @@ service Account {
       body:"*"
     };
   };
-  // 通过微信下载语音并上传到七牛
-  rpc UploadMaterialVoice (MediaID) returns (MaterialLink){
-    option (google.api.http) = {
-      post: "/api/common/material/upload/voice",
-      body:"*"
-    };
-  };
 
   // 通过openID和appID查询
   rpc GetIdentityByOpenIDAndAppID (OpenIDAndAppIDRequest) returns (IdentityInfo);

+ 0 - 38
api/account/account_grpc.pb.go

@@ -27,8 +27,6 @@ type AccountClient interface {
 	GetUserLoginConfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*common.GetLoginConfigReply, error)
 	// 获取公众号配置
 	GetGetGzhConfig(ctx context.Context, in *emptypb.Empty, opts ...grpc.CallOption) (*GetGetGzhConfigReply, error)
-	// 通过微信下载语音并上传到七牛
-	UploadMaterialVoice(ctx context.Context, in *MediaID, opts ...grpc.CallOption) (*MaterialLink, error)
 	// 通过openID和appID查询
 	GetIdentityByOpenIDAndAppID(ctx context.Context, in *OpenIDAndAppIDRequest, opts ...grpc.CallOption) (*IdentityInfo, error)
 	// 通过openID和appID查询 未查到就创建
@@ -100,15 +98,6 @@ func (c *accountClient) GetGetGzhConfig(ctx context.Context, in *emptypb.Empty,
 	return out, nil
 }
 
-func (c *accountClient) UploadMaterialVoice(ctx context.Context, in *MediaID, opts ...grpc.CallOption) (*MaterialLink, error) {
-	out := new(MaterialLink)
-	err := c.cc.Invoke(ctx, "/api.account.Account/UploadMaterialVoice", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 func (c *accountClient) GetIdentityByOpenIDAndAppID(ctx context.Context, in *OpenIDAndAppIDRequest, opts ...grpc.CallOption) (*IdentityInfo, error) {
 	out := new(IdentityInfo)
 	err := c.cc.Invoke(ctx, "/api.account.Account/GetIdentityByOpenIDAndAppID", in, out, opts...)
@@ -192,8 +181,6 @@ type AccountServer interface {
 	GetUserLoginConfig(context.Context, *emptypb.Empty) (*common.GetLoginConfigReply, error)
 	// 获取公众号配置
 	GetGetGzhConfig(context.Context, *emptypb.Empty) (*GetGetGzhConfigReply, error)
-	// 通过微信下载语音并上传到七牛
-	UploadMaterialVoice(context.Context, *MediaID) (*MaterialLink, error)
 	// 通过openID和appID查询
 	GetIdentityByOpenIDAndAppID(context.Context, *OpenIDAndAppIDRequest) (*IdentityInfo, error)
 	// 通过openID和appID查询 未查到就创建
@@ -232,9 +219,6 @@ func (UnimplementedAccountServer) GetUserLoginConfig(context.Context, *emptypb.E
 func (UnimplementedAccountServer) GetGetGzhConfig(context.Context, *emptypb.Empty) (*GetGetGzhConfigReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetGetGzhConfig not implemented")
 }
-func (UnimplementedAccountServer) UploadMaterialVoice(context.Context, *MediaID) (*MaterialLink, error) {
-	return nil, status.Errorf(codes.Unimplemented, "method UploadMaterialVoice not implemented")
-}
 func (UnimplementedAccountServer) GetIdentityByOpenIDAndAppID(context.Context, *OpenIDAndAppIDRequest) (*IdentityInfo, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetIdentityByOpenIDAndAppID not implemented")
 }
@@ -362,24 +346,6 @@ func _Account_GetGetGzhConfig_Handler(srv interface{}, ctx context.Context, dec
 	return interceptor(ctx, in, info, handler)
 }
 
-func _Account_UploadMaterialVoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(MediaID)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(AccountServer).UploadMaterialVoice(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/api.account.Account/UploadMaterialVoice",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(AccountServer).UploadMaterialVoice(ctx, req.(*MediaID))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 func _Account_GetIdentityByOpenIDAndAppID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(OpenIDAndAppIDRequest)
 	if err := dec(in); err != nil {
@@ -551,10 +517,6 @@ var Account_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "GetGetGzhConfig",
 			Handler:    _Account_GetGetGzhConfig_Handler,
 		},
-		{
-			MethodName: "UploadMaterialVoice",
-			Handler:    _Account_UploadMaterialVoice_Handler,
-		},
 		{
 			MethodName: "GetIdentityByOpenIDAndAppID",
 			Handler:    _Account_GetIdentityByOpenIDAndAppID_Handler,

+ 0 - 43
api/account/account_http.pb.go

@@ -33,7 +33,6 @@ type AccountHTTPServer interface {
 	DebugLogin(context.Context, *DebugLoginRequest) (*TokenReply, error)
 	GetGetGzhConfig(context.Context, *emptypb.Empty) (*GetGetGzhConfigReply, error)
 	GetUserLoginConfig(context.Context, *emptypb.Empty) (*common.GetLoginConfigReply, error)
-	UploadMaterialVoice(context.Context, *MediaID) (*MaterialLink, error)
 }
 
 func RegisterAccountHTTPServer(s *http.Server, srv AccountHTTPServer) {
@@ -43,7 +42,6 @@ func RegisterAccountHTTPServer(s *http.Server, srv AccountHTTPServer) {
 	r.POST("/api/login/authorization/miniprogram", _Account_AuthorizationMiniProgram0_HTTP_Handler(srv))
 	r.POST("/api/login/config", _Account_GetUserLoginConfig0_HTTP_Handler(srv))
 	r.POST("/api/login/gzh/conf", _Account_GetGetGzhConfig0_HTTP_Handler(srv))
-	r.POST("/api/common/material/upload/voice", _Account_UploadMaterialVoice0_HTTP_Handler(srv))
 }
 
 func _Account_DebugLogin0_HTTP_Handler(srv AccountHTTPServer) func(ctx http.Context) error {
@@ -181,40 +179,12 @@ func _Account_GetGetGzhConfig0_HTTP_Handler(srv AccountHTTPServer) func(ctx http
 	}
 }
 
-func _Account_UploadMaterialVoice0_HTTP_Handler(srv AccountHTTPServer) func(ctx http.Context) error {
-	return func(ctx http.Context) error {
-		var in MediaID
-		if err := ctx.Bind(&in); err != nil {
-			return err
-		}
-		if err := ctx.BindQuery(&in); err != nil {
-			return err
-		}
-		http.SetOperation(ctx, "/api.account.Account/UploadMaterialVoice")
-		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
-			return srv.UploadMaterialVoice(ctx, req.(*MediaID))
-		})
-		out, err := h(ctx, &in)
-		if err != nil {
-			return err
-		}
-		success := &reply.SuccessReply{
-			Code: 0,
-		}
-		if out != nil {
-			success.Data = out
-		}
-		return ctx.Result(200, success)
-	}
-}
-
 type AccountHTTPClient interface {
 	Authorization(ctx context.Context, req *AuthorizationRequest, opts ...http.CallOption) (rsp *TokenReply, err error)
 	AuthorizationMiniProgram(ctx context.Context, req *AuthorizationMiniProgramRequest, opts ...http.CallOption) (rsp *MiniProgramTokenReply, err error)
 	DebugLogin(ctx context.Context, req *DebugLoginRequest, opts ...http.CallOption) (rsp *TokenReply, err error)
 	GetGetGzhConfig(ctx context.Context, req *emptypb.Empty, opts ...http.CallOption) (rsp *GetGetGzhConfigReply, err error)
 	GetUserLoginConfig(ctx context.Context, req *emptypb.Empty, opts ...http.CallOption) (rsp *common.GetLoginConfigReply, err error)
-	UploadMaterialVoice(ctx context.Context, req *MediaID, opts ...http.CallOption) (rsp *MaterialLink, err error)
 }
 
 type AccountHTTPClientImpl struct {
@@ -289,16 +259,3 @@ func (c *AccountHTTPClientImpl) GetUserLoginConfig(ctx context.Context, in *empt
 	}
 	return &out, err
 }
-
-func (c *AccountHTTPClientImpl) UploadMaterialVoice(ctx context.Context, in *MediaID, opts ...http.CallOption) (*MaterialLink, error) {
-	var out MaterialLink
-	pattern := "/api/common/material/upload/voice"
-	path := binding.EncodeURL(pattern, in, false)
-	opts = append(opts, http.Operation("/api.account.Account/UploadMaterialVoice"))
-	opts = append(opts, http.PathTemplate(pattern))
-	err := c.cc.Invoke(ctx, "POST", path, in, &out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return &out, err
-}

+ 88 - 74
api/wx/wx.pb.go

@@ -7,6 +7,7 @@
 package wx
 
 import (
+	account "git.ikuban.com/server/pw-protobuf/api/account"
 	common "git.ikuban.com/server/pw-protobuf/api/common"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
@@ -260,71 +261,80 @@ var file_wx_proto_rawDesc = []byte{
 	0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
 	0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x61,
 	0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65,
-	0x72, 0x4d, 0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
-	0x65, 0x79, 0x22, 0x7c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67,
-	0x42, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61,
-	0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
-	0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e,
-	0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64,
-	0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x61, 0x70, 0x70, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d,
-	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65,
-	0x22, 0x53, 0x0a, 0x17, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e,
-	0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61,
-	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x72,
-	0x73, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x65, 0x72,
-	0x73, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x23, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6d,
-	0x69, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08,
-	0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x64,
-	0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
-	0x73, 0x65, 0x6e, 0x64, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64, 0x32, 0xd2, 0x04, 0x0a,
-	0x02, 0x57, 0x78, 0x12, 0x42, 0x0a, 0x0e, 0x43, 0x72, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x49,
-	0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4a, 0x0a, 0x16, 0x43, 0x72, 0x6f, 0x6e, 0x53,
-	0x65, 0x6e, 0x64, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74,
-	0x65, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x22, 0x00, 0x12, 0x65, 0x0a, 0x1c, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6d, 0x69, 0x6e,
-	0x64, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x53, 0x65, 0x6e,
-	0x64, 0x4e, 0x65, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61,
-	0x64, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x1e, 0x53, 0x65,
-	0x6e, 0x64, 0x4e, 0x65, 0x77, 0x56, 0x69, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x6d, 0x70,
-	0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61,
-	0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e,
-	0x49, 0x44, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
-	0x00, 0x12, 0x4d, 0x0a, 0x10, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x55,
-	0x6e, 0x72, 0x65, 0x61, 0x64, 0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x52,
+	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x63, 0x63, 0x6f,
+	0x75, 0x6e, 0x74, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x22, 0x2a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x42,
+	0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b,
+	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x7c, 0x0a,
+	0x14, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79,
+	0x52, 0x65, 0x70, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72,
+	0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65,
+	0x72, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x70, 0x65, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x61,
+	0x70, 0x70, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x70, 0x70, 0x49,
+	0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x07, 0x61, 0x70, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x17, 0x52,
 	0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00,
-	0x12, 0x51, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x42, 0x79,
-	0x4b, 0x65, 0x79, 0x12, 0x1e, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x47, 0x65, 0x74,
-	0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x47, 0x65, 0x74,
-	0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x70, 0x6c,
-	0x79, 0x22, 0x00, 0x12, 0x5c, 0x0a, 0x06, 0x57, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x15, 0x2e,
-	0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x57, 0x78, 0x43, 0x6f, 0x6e,
-	0x66, 0x52, 0x65, 0x71, 0x1a, 0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
-	0x6e, 0x2e, 0x57, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x77,
-	0x78, 0x2f, 0x6a, 0x73, 0x73, 0x64, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x01,
-	0x2a, 0x42, 0x37, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x50, 0x01, 0x5a, 0x2b, 0x67,
-	0x69, 0x74, 0x2e, 0x69, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x65,
-	0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x77, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x77, 0x78, 0x3b, 0x77, 0x78, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
+	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75,
+	0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64,
+	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64,
+	0x22, 0x65, 0x0a, 0x23, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61,
+	0x67, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72,
+	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x50, 0x65, 0x72, 0x73, 0x6f,
+	0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x6e, 0x64, 0x50,
+	0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x64, 0x32, 0xc8, 0x05, 0x0a, 0x02, 0x57, 0x78, 0x12, 0x42,
+	0x0a, 0x0e, 0x43, 0x72, 0x6f, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x55, 0x73, 0x65, 0x72,
+	0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
+	0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
+	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
+	0x22, 0x00, 0x12, 0x4a, 0x0a, 0x16, 0x43, 0x72, 0x6f, 0x6e, 0x53, 0x65, 0x6e, 0x64, 0x55, 0x6e,
+	0x72, 0x65, 0x61, 0x64, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x12, 0x16, 0x2e, 0x67,
+	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
+	0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x65,
+	0x0a, 0x1c, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
+	0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x2b,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77, 0x4d,
+	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x6d, 0x69,
+	0x6e, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
+	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
+	0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x1e, 0x53, 0x65, 0x6e, 0x64, 0x4e, 0x65, 0x77,
+	0x56, 0x69, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52,
+	0x65, 0x6d, 0x69, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f,
+	0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x44, 0x50, 0x61, 0x72,
+	0x61, 0x6d, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4d, 0x0a, 0x10,
+	0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64,
+	0x12, 0x1f, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65,
+	0x55, 0x73, 0x65, 0x72, 0x55, 0x6e, 0x72, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
+	0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0f, 0x47,
+	0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x1e,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d,
+	0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c,
+	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d,
+	0x73, 0x67, 0x42, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x79, 0x22, 0x00, 0x12, 0x5c,
+	0x0a, 0x06, 0x57, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x12, 0x15, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63,
+	0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x57, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x52, 0x65, 0x71, 0x1a,
+	0x1a, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x57, 0x78, 0x43,
+	0x6f, 0x6e, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4,
+	0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x77, 0x78, 0x2f, 0x6a, 0x73, 0x73,
+	0x64, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x13,
+	0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x56, 0x6f,
+	0x69, 0x63, 0x65, 0x12, 0x14, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
+	0x74, 0x2e, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x49, 0x44, 0x1a, 0x19, 0x2e, 0x61, 0x70, 0x69, 0x2e,
+	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x4d, 0x61, 0x74, 0x65, 0x72, 0x69, 0x61, 0x6c,
+	0x4c, 0x69, 0x6e, 0x6b, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, 0x61,
+	0x70, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6d, 0x61, 0x74, 0x65, 0x72, 0x69,
+	0x61, 0x6c, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x2f, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x3a,
+	0x01, 0x2a, 0x42, 0x37, 0x0a, 0x06, 0x61, 0x70, 0x69, 0x2e, 0x77, 0x78, 0x50, 0x01, 0x5a, 0x2b,
+	0x67, 0x69, 0x74, 0x2e, 0x69, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73,
+	0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x70, 0x77, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
+	0x66, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x77, 0x78, 0x3b, 0x77, 0x78, 0x62, 0x06, 0x70, 0x72, 0x6f,
+	0x74, 0x6f, 0x33,
 }
 
 var (
@@ -348,7 +358,9 @@ var file_wx_proto_goTypes = []interface{}{
 	(*emptypb.Empty)(nil),                       // 4: google.protobuf.Empty
 	(*common.PersonIDParam)(nil),                // 5: api.common.PersonIDParam
 	(*common.WxConfReq)(nil),                    // 6: api.common.WxConfReq
-	(*common.WxConfResponse)(nil),               // 7: api.common.WxConfResponse
+	(*account.MediaID)(nil),                     // 7: api.account.MediaID
+	(*common.WxConfResponse)(nil),               // 8: api.common.WxConfResponse
+	(*account.MaterialLink)(nil),                // 9: api.account.MaterialLink
 }
 var file_wx_proto_depIdxs = []int32{
 	4, // 0: api.wx.Wx.CronSignInUser:input_type -> google.protobuf.Empty
@@ -358,15 +370,17 @@ var file_wx_proto_depIdxs = []int32{
 	2, // 4: api.wx.Wx.ReduceUserUnread:input_type -> api.wx.ReduceUserUnreadRequest
 	0, // 5: api.wx.Wx.GetUserMsgByKey:input_type -> api.wx.GetUserMsgByKeyRequest
 	6, // 6: api.wx.Wx.WxConf:input_type -> api.common.WxConfReq
-	4, // 7: api.wx.Wx.CronSignInUser:output_type -> google.protobuf.Empty
-	4, // 8: api.wx.Wx.CronSendUnreadTemplate:output_type -> google.protobuf.Empty
-	4, // 9: api.wx.Wx.SendNewMessageUnreadReminder:output_type -> google.protobuf.Empty
-	4, // 10: api.wx.Wx.SendNewVisitorTemplateReminder:output_type -> google.protobuf.Empty
-	4, // 11: api.wx.Wx.ReduceUserUnread:output_type -> google.protobuf.Empty
-	1, // 12: api.wx.Wx.GetUserMsgByKey:output_type -> api.wx.GetUserMsgByKeyReply
-	7, // 13: api.wx.Wx.WxConf:output_type -> api.common.WxConfResponse
-	7, // [7:14] is the sub-list for method output_type
-	0, // [0:7] is the sub-list for method input_type
+	7, // 7: api.wx.Wx.UploadMaterialVoice:input_type -> api.account.MediaID
+	4, // 8: api.wx.Wx.CronSignInUser:output_type -> google.protobuf.Empty
+	4, // 9: api.wx.Wx.CronSendUnreadTemplate:output_type -> google.protobuf.Empty
+	4, // 10: api.wx.Wx.SendNewMessageUnreadReminder:output_type -> google.protobuf.Empty
+	4, // 11: api.wx.Wx.SendNewVisitorTemplateReminder:output_type -> google.protobuf.Empty
+	4, // 12: api.wx.Wx.ReduceUserUnread:output_type -> google.protobuf.Empty
+	1, // 13: api.wx.Wx.GetUserMsgByKey:output_type -> api.wx.GetUserMsgByKeyReply
+	8, // 14: api.wx.Wx.WxConf:output_type -> api.common.WxConfResponse
+	9, // 15: api.wx.Wx.UploadMaterialVoice:output_type -> api.account.MaterialLink
+	8, // [8:16] is the sub-list for method output_type
+	0, // [0:8] 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

+ 8 - 0
api/wx/wx.proto

@@ -6,6 +6,7 @@ import "google/api/annotations.proto";
 //import "google/protobuf/struct.proto";
 import "google/protobuf/empty.proto";
 import "api/common/common.proto";
+import "api/account/account.proto";
 
 option go_package = "git.ikuban.com/server/pw-protobuf/api/wx;wx";
 option java_multiple_files = true;
@@ -31,6 +32,13 @@ service Wx {
       body:"*"
     };
   };
+  // 通过微信下载语音并上传到七牛
+  rpc UploadMaterialVoice (account.MediaID) returns (account.MaterialLink){
+    option (google.api.http) = {
+      post: "/api/common/material/upload/voice",
+      body:"*"
+    };
+  };
 }
 
 message GetUserMsgByKeyRequest{

+ 39 - 0
api/wx/wx_grpc.pb.go

@@ -4,6 +4,7 @@ package wx
 
 import (
 	context "context"
+	account "git.ikuban.com/server/pw-protobuf/api/account"
 	common "git.ikuban.com/server/pw-protobuf/api/common"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -34,6 +35,8 @@ type WxClient interface {
 	GetUserMsgByKey(ctx context.Context, in *GetUserMsgByKeyRequest, opts ...grpc.CallOption) (*GetUserMsgByKeyReply, error)
 	// 微信SDK初始化
 	WxConf(ctx context.Context, in *common.WxConfReq, opts ...grpc.CallOption) (*common.WxConfResponse, error)
+	// 通过微信下载语音并上传到七牛
+	UploadMaterialVoice(ctx context.Context, in *account.MediaID, opts ...grpc.CallOption) (*account.MaterialLink, error)
 }
 
 type wxClient struct {
@@ -107,6 +110,15 @@ func (c *wxClient) WxConf(ctx context.Context, in *common.WxConfReq, opts ...grp
 	return out, nil
 }
 
+func (c *wxClient) UploadMaterialVoice(ctx context.Context, in *account.MediaID, opts ...grpc.CallOption) (*account.MaterialLink, error) {
+	out := new(account.MaterialLink)
+	err := c.cc.Invoke(ctx, "/api.wx.Wx/UploadMaterialVoice", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // WxServer is the server API for Wx service.
 // All implementations must embed UnimplementedWxServer
 // for forward compatibility
@@ -125,6 +137,8 @@ type WxServer interface {
 	GetUserMsgByKey(context.Context, *GetUserMsgByKeyRequest) (*GetUserMsgByKeyReply, error)
 	// 微信SDK初始化
 	WxConf(context.Context, *common.WxConfReq) (*common.WxConfResponse, error)
+	// 通过微信下载语音并上传到七牛
+	UploadMaterialVoice(context.Context, *account.MediaID) (*account.MaterialLink, error)
 	mustEmbedUnimplementedWxServer()
 }
 
@@ -153,6 +167,9 @@ func (UnimplementedWxServer) GetUserMsgByKey(context.Context, *GetUserMsgByKeyRe
 func (UnimplementedWxServer) WxConf(context.Context, *common.WxConfReq) (*common.WxConfResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method WxConf not implemented")
 }
+func (UnimplementedWxServer) UploadMaterialVoice(context.Context, *account.MediaID) (*account.MaterialLink, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UploadMaterialVoice not implemented")
+}
 func (UnimplementedWxServer) mustEmbedUnimplementedWxServer() {}
 
 // UnsafeWxServer may be embedded to opt out of forward compatibility for this service.
@@ -292,6 +309,24 @@ func _Wx_WxConf_Handler(srv interface{}, ctx context.Context, dec func(interface
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Wx_UploadMaterialVoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(account.MediaID)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(WxServer).UploadMaterialVoice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/api.wx.Wx/UploadMaterialVoice",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(WxServer).UploadMaterialVoice(ctx, req.(*account.MediaID))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 // Wx_ServiceDesc is the grpc.ServiceDesc for Wx service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -327,6 +362,10 @@ var Wx_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "WxConf",
 			Handler:    _Wx_WxConf_Handler,
 		},
+		{
+			MethodName: "UploadMaterialVoice",
+			Handler:    _Wx_UploadMaterialVoice_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "wx.proto",

+ 44 - 0
api/wx/wx_http.pb.go

@@ -8,6 +8,7 @@ import (
 	context "context"
 	base "git.ikuban.com/server/base-protobuf/kuban/api/base"
 	reply "git.ikuban.com/server/kratos-utils/http/reply"
+	account "git.ikuban.com/server/pw-protobuf/api/account"
 	common "git.ikuban.com/server/pw-protobuf/api/common"
 	http "github.com/go-kratos/kratos/v2/transport/http"
 	binding "github.com/go-kratos/kratos/v2/transport/http/binding"
@@ -27,12 +28,14 @@ var _ = new(base.Html)
 const _ = http.SupportPackageIsVersion1
 
 type WxHTTPServer interface {
+	UploadMaterialVoice(context.Context, *account.MediaID) (*account.MaterialLink, error)
 	WxConf(context.Context, *common.WxConfReq) (*common.WxConfResponse, error)
 }
 
 func RegisterWxHTTPServer(s *http.Server, srv WxHTTPServer) {
 	r := s.Route("/")
 	r.POST("/api/wx/jssdk/config", _Wx_WxConf0_HTTP_Handler(srv))
+	r.POST("/api/common/material/upload/voice", _Wx_UploadMaterialVoice0_HTTP_Handler(srv))
 }
 
 func _Wx_WxConf0_HTTP_Handler(srv WxHTTPServer) func(ctx http.Context) error {
@@ -62,7 +65,35 @@ func _Wx_WxConf0_HTTP_Handler(srv WxHTTPServer) func(ctx http.Context) error {
 	}
 }
 
+func _Wx_UploadMaterialVoice0_HTTP_Handler(srv WxHTTPServer) func(ctx http.Context) error {
+	return func(ctx http.Context) error {
+		var in account.MediaID
+		if err := ctx.Bind(&in); err != nil {
+			return err
+		}
+		if err := ctx.BindQuery(&in); err != nil {
+			return err
+		}
+		http.SetOperation(ctx, "/api.wx.Wx/UploadMaterialVoice")
+		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
+			return srv.UploadMaterialVoice(ctx, req.(*account.MediaID))
+		})
+		out, err := h(ctx, &in)
+		if err != nil {
+			return err
+		}
+		success := &reply.SuccessReply{
+			Code: 0,
+		}
+		if out != nil {
+			success.Data = out
+		}
+		return ctx.Result(200, success)
+	}
+}
+
 type WxHTTPClient interface {
+	UploadMaterialVoice(ctx context.Context, req *account.MediaID, opts ...http.CallOption) (rsp *account.MaterialLink, err error)
 	WxConf(ctx context.Context, req *common.WxConfReq, opts ...http.CallOption) (rsp *common.WxConfResponse, err error)
 }
 
@@ -74,6 +105,19 @@ func NewWxHTTPClient(client *http.Client) WxHTTPClient {
 	return &WxHTTPClientImpl{client}
 }
 
+func (c *WxHTTPClientImpl) UploadMaterialVoice(ctx context.Context, in *account.MediaID, opts ...http.CallOption) (*account.MaterialLink, error) {
+	var out account.MaterialLink
+	pattern := "/api/common/material/upload/voice"
+	path := binding.EncodeURL(pattern, in, false)
+	opts = append(opts, http.Operation("/api.wx.Wx/UploadMaterialVoice"))
+	opts = append(opts, http.PathTemplate(pattern))
+	err := c.cc.Invoke(ctx, "POST", path, in, &out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return &out, err
+}
+
 func (c *WxHTTPClientImpl) WxConf(ctx context.Context, in *common.WxConfReq, opts ...http.CallOption) (*common.WxConfResponse, error) {
 	var out common.WxConfResponse
 	pattern := "/api/wx/jssdk/config"

+ 1 - 6
js/api/account/account_http_pb.ts

@@ -1,6 +1,6 @@
 // @ts-ignore
 import request from '@/libs/request';
-import {DebugLoginRequest,TokenReply,AuthorizationRequest,AuthorizationMiniProgramRequest,MiniProgramTokenReply,GetGetGzhConfigReply,MediaID,MaterialLink,OpenIDAndAppIDRequest,IdentityInfo,GetIdentifyByAccountIDRequest,GetIdentifyByAccountIDReply,FindIdentifyByAccountIDAndIsSubscribeRequest,FindIdentifyByAccountIDAndIsSubscribeReply} from "./account_pb";
+import {DebugLoginRequest,TokenReply,AuthorizationRequest,AuthorizationMiniProgramRequest,MiniProgramTokenReply,GetGetGzhConfigReply,OpenIDAndAppIDRequest,IdentityInfo,GetIdentifyByAccountIDRequest,GetIdentifyByAccountIDReply,FindIdentifyByAccountIDAndIsSubscribeRequest,FindIdentifyByAccountIDAndIsSubscribeReply} from "./account_pb";
 import {GetLoginConfigReply} from "../common/common_pb";
 
 const AccountService = {
@@ -26,11 +26,6 @@ const AccountService = {
 	const res = await request.post<{ data: GetGetGzhConfigReply, code: string, message: string }>('/api/login/gzh/conf', req);
     return res.data.data;
   },
-  /**  通过微信下载语音并上传到七牛 */
-  UploadMaterialVoice: async (req?: MediaID) => {
-	const res = await request.post<{ data: MaterialLink, code: string, message: string }>('/api/common/material/upload/voice', req);
-    return res.data.data;
-  },
 
 };
 

+ 6 - 0
js/api/wx/wx_http_pb.ts

@@ -2,6 +2,7 @@
 import request from '@/libs/request';
 import {SendNewMessageUnreadReminderRequest,ReduceUserUnreadRequest,GetUserMsgByKeyRequest,GetUserMsgByKeyReply} from "./wx_pb";
 import {PersonIDParam,WxConfReq,WxConfResponse} from "../common/common_pb";
+import {MediaID,MaterialLink} from "../account/account_pb";
 
 const WxService = {
   /**  微信SDK初始化 */
@@ -9,6 +10,11 @@ const WxService = {
 	const res = await request.post<{ data: WxConfResponse, code: string, message: string }>('/api/wx/jssdk/config', req);
     return res.data.data;
   },
+  /**  通过微信下载语音并上传到七牛 */
+  UploadMaterialVoice: async (req?: MediaID) => {
+	const res = await request.post<{ data: MaterialLink, code: string, message: string }>('/api/common/material/upload/voice', req);
+    return res.data.data;
+  },
 
 };