mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-03 20:40:25 +08:00
增加修改消息任务状态API
This commit is contained in:
@@ -124,6 +124,58 @@ func (ListMessageTasksWithStatusRequest_Status) EnumDescriptor() ([]byte, []int)
|
||||
return file_service_message_task_proto_rawDescGZIP(), []int{6, 0}
|
||||
}
|
||||
|
||||
type UpdateMessageTaskStatusRequest_Status int32
|
||||
|
||||
const (
|
||||
UpdateMessageTaskStatusRequest_MessageTaskStatusNone UpdateMessageTaskStatusRequest_Status = 0
|
||||
UpdateMessageTaskStatusRequest_MessageTaskStatusSending UpdateMessageTaskStatusRequest_Status = 1
|
||||
UpdateMessageTaskStatusRequest_MessageTaskStatusSuccess UpdateMessageTaskStatusRequest_Status = 2
|
||||
UpdateMessageTaskStatusRequest_MessageTaskStatusFailed UpdateMessageTaskStatusRequest_Status = 3
|
||||
)
|
||||
|
||||
// Enum value maps for UpdateMessageTaskStatusRequest_Status.
|
||||
var (
|
||||
UpdateMessageTaskStatusRequest_Status_name = map[int32]string{
|
||||
0: "MessageTaskStatusNone",
|
||||
1: "MessageTaskStatusSending",
|
||||
2: "MessageTaskStatusSuccess",
|
||||
3: "MessageTaskStatusFailed",
|
||||
}
|
||||
UpdateMessageTaskStatusRequest_Status_value = map[string]int32{
|
||||
"MessageTaskStatusNone": 0,
|
||||
"MessageTaskStatusSending": 1,
|
||||
"MessageTaskStatusSuccess": 2,
|
||||
"MessageTaskStatusFailed": 3,
|
||||
}
|
||||
)
|
||||
|
||||
func (x UpdateMessageTaskStatusRequest_Status) Enum() *UpdateMessageTaskStatusRequest_Status {
|
||||
p := new(UpdateMessageTaskStatusRequest_Status)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
|
||||
func (x UpdateMessageTaskStatusRequest_Status) String() string {
|
||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||
}
|
||||
|
||||
func (UpdateMessageTaskStatusRequest_Status) Descriptor() protoreflect.EnumDescriptor {
|
||||
return file_service_message_task_proto_enumTypes[2].Descriptor()
|
||||
}
|
||||
|
||||
func (UpdateMessageTaskStatusRequest_Status) Type() protoreflect.EnumType {
|
||||
return &file_service_message_task_proto_enumTypes[2]
|
||||
}
|
||||
|
||||
func (x UpdateMessageTaskStatusRequest_Status) Number() protoreflect.EnumNumber {
|
||||
return protoreflect.EnumNumber(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use UpdateMessageTaskStatusRequest_Status.Descriptor instead.
|
||||
func (UpdateMessageTaskStatusRequest_Status) EnumDescriptor() ([]byte, []int) {
|
||||
return file_service_message_task_proto_rawDescGZIP(), []int{10, 0}
|
||||
}
|
||||
|
||||
// 创建消息任务
|
||||
type CreateMessageTaskRequest struct {
|
||||
state protoimpl.MessageState
|
||||
@@ -265,7 +317,7 @@ type DeleteMessageTaskRequest struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
MessageTaskId int64 `protobuf:"varint,1,opt,name=messageTaskId,proto3" json:"messageTaskId,omitempty"`
|
||||
MessageTaskId int64 `protobuf:"varint,1,opt,name=messageTaskId,proto3" json:"messageTaskId,omitempty"` // 消息任务ID
|
||||
}
|
||||
|
||||
func (x *DeleteMessageTaskRequest) Reset() {
|
||||
@@ -313,7 +365,7 @@ type FindEnabledMessageTaskRequest struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
MessageTaskId int64 `protobuf:"varint,1,opt,name=messageTaskId,proto3" json:"messageTaskId,omitempty"`
|
||||
MessageTaskId int64 `protobuf:"varint,1,opt,name=messageTaskId,proto3" json:"messageTaskId,omitempty"` // 消息任务ID
|
||||
}
|
||||
|
||||
func (x *FindEnabledMessageTaskRequest) Reset() {
|
||||
@@ -360,7 +412,7 @@ type FindEnabledMessageTaskResponse struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
MessageTask *MessageTask `protobuf:"bytes,1,opt,name=messageTask,proto3" json:"messageTask,omitempty"`
|
||||
MessageTask *MessageTask `protobuf:"bytes,1,opt,name=messageTask,proto3" json:"messageTask,omitempty"` // 消息任务信息
|
||||
}
|
||||
|
||||
func (x *FindEnabledMessageTaskResponse) Reset() {
|
||||
@@ -408,7 +460,7 @@ type CountMessageTasksWithStatusRequest struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Status CountMessageTasksWithStatusRequest_Status `protobuf:"varint,1,opt,name=status,proto3,enum=pb.CountMessageTasksWithStatusRequest_Status" json:"status,omitempty"`
|
||||
Status CountMessageTasksWithStatusRequest_Status `protobuf:"varint,1,opt,name=status,proto3,enum=pb.CountMessageTasksWithStatusRequest_Status" json:"status,omitempty"` // 任务状态
|
||||
}
|
||||
|
||||
func (x *CountMessageTasksWithStatusRequest) Reset() {
|
||||
@@ -456,7 +508,7 @@ type ListMessageTasksWithStatusRequest struct {
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Status ListMessageTasksWithStatusRequest_Status `protobuf:"varint,1,opt,name=status,proto3,enum=pb.ListMessageTasksWithStatusRequest_Status" json:"status,omitempty"`
|
||||
Status ListMessageTasksWithStatusRequest_Status `protobuf:"varint,1,opt,name=status,proto3,enum=pb.ListMessageTasksWithStatusRequest_Status" json:"status,omitempty"` // 任务状态
|
||||
Offset int64 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"`
|
||||
Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
|
||||
}
|
||||
@@ -697,6 +749,62 @@ func (x *SendMessageTaskResponse) GetResponse() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
// 修改消息任务状态
|
||||
type UpdateMessageTaskStatusRequest struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
MessageTaskId int64 `protobuf:"varint,1,opt,name=messageTaskId,proto3" json:"messageTaskId,omitempty"` // 消息任务ID
|
||||
Status UpdateMessageTaskStatusRequest_Status `protobuf:"varint,2,opt,name=status,proto3,enum=pb.UpdateMessageTaskStatusRequest_Status" json:"status,omitempty"` // 新的状态
|
||||
}
|
||||
|
||||
func (x *UpdateMessageTaskStatusRequest) Reset() {
|
||||
*x = UpdateMessageTaskStatusRequest{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_service_message_task_proto_msgTypes[10]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *UpdateMessageTaskStatusRequest) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*UpdateMessageTaskStatusRequest) ProtoMessage() {}
|
||||
|
||||
func (x *UpdateMessageTaskStatusRequest) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_service_message_task_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 UpdateMessageTaskStatusRequest.ProtoReflect.Descriptor instead.
|
||||
func (*UpdateMessageTaskStatusRequest) Descriptor() ([]byte, []int) {
|
||||
return file_service_message_task_proto_rawDescGZIP(), []int{10}
|
||||
}
|
||||
|
||||
func (x *UpdateMessageTaskStatusRequest) GetMessageTaskId() int64 {
|
||||
if x != nil {
|
||||
return x.MessageTaskId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *UpdateMessageTaskStatusRequest) GetStatus() UpdateMessageTaskStatusRequest_Status {
|
||||
if x != nil {
|
||||
return x.Status
|
||||
}
|
||||
return UpdateMessageTaskStatusRequest_MessageTaskStatusNone
|
||||
}
|
||||
|
||||
var File_service_message_task_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_service_message_task_proto_rawDesc = []byte{
|
||||
@@ -791,42 +899,64 @@ var file_service_message_task_proto_rawDesc = []byte{
|
||||
0x73, 0x4f, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01,
|
||||
0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xa0, 0x04, 0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x11,
|
||||
0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73,
|
||||
0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
|
||||
0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||
0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41,
|
||||
0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d,
|
||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73,
|
||||
0x73, 0x12, 0x5f, 0x0a, 0x16, 0x66, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64,
|
||||
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
|
||||
0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
|
||||
0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d,
|
||||
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75,
|
||||
0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73,
|
||||
0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
|
||||
0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x41,
|
||||
0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29,
|
||||
0x2e, 0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
|
||||
0x73, 0x22, 0x7c, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x4d,
|
||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||
0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x65, 0x6e, 0x64, 0x69,
|
||||
0x6e, 0x67, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73,
|
||||
0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x03, 0x32,
|
||||
0xef, 0x04, 0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53,
|
||||
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
|
||||
0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1c, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x62, 0x2e, 0x43,
|
||||
0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65,
|
||||
0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1c, 0x2e,
|
||||
0x70, 0x62, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x5f, 0x0a, 0x16, 0x66,
|
||||
0x69, 0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
|
||||
0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x45,
|
||||
0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x46, 0x69,
|
||||
0x6e, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x1b,
|
||||
0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73,
|
||||
0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75,
|
||||
0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e,
|
||||
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6b, 0x0a, 0x1a, 0x6c, 0x69, 0x73,
|
||||
0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x57, 0x69, 0x74,
|
||||
0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73,
|
||||
0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x57, 0x69, 0x74,
|
||||
0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
|
||||
0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54,
|
||||
0x61, 0x73, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65,
|
||||
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x64, 0x4d, 0x65,
|
||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53,
|
||||
0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d,
|
||||
0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
|
||||
0x73, 0x65, 0x12, 0x5b, 0x0a, 0x1b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||
0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75,
|
||||
0x73, 0x12, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73,
|
||||
0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52,
|
||||
0x50, 0x43, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
|
||||
0x6b, 0x0a, 0x1a, 0x6c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x2e,
|
||||
0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61,
|
||||
0x73, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x70, 0x62, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65,
|
||||
0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x0f,
|
||||
0x73, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12,
|
||||
0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x70, 0x62,
|
||||
0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b,
|
||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62,
|
||||
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
0x73, 0x65, 0x12, 0x4d, 0x0a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73,
|
||||
0x61, 0x67, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e,
|
||||
0x70, 0x62, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
|
||||
0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x50, 0x43, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73,
|
||||
0x73, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -841,47 +971,52 @@ func file_service_message_task_proto_rawDescGZIP() []byte {
|
||||
return file_service_message_task_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_service_message_task_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
||||
var file_service_message_task_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
|
||||
var file_service_message_task_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
|
||||
var file_service_message_task_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
|
||||
var file_service_message_task_proto_goTypes = []interface{}{
|
||||
(CountMessageTasksWithStatusRequest_Status)(0), // 0: pb.CountMessageTasksWithStatusRequest.Status
|
||||
(ListMessageTasksWithStatusRequest_Status)(0), // 1: pb.ListMessageTasksWithStatusRequest.Status
|
||||
(*CreateMessageTaskRequest)(nil), // 2: pb.CreateMessageTaskRequest
|
||||
(*CreateMessageTaskResponse)(nil), // 3: pb.CreateMessageTaskResponse
|
||||
(*DeleteMessageTaskRequest)(nil), // 4: pb.DeleteMessageTaskRequest
|
||||
(*FindEnabledMessageTaskRequest)(nil), // 5: pb.FindEnabledMessageTaskRequest
|
||||
(*FindEnabledMessageTaskResponse)(nil), // 6: pb.FindEnabledMessageTaskResponse
|
||||
(*CountMessageTasksWithStatusRequest)(nil), // 7: pb.CountMessageTasksWithStatusRequest
|
||||
(*ListMessageTasksWithStatusRequest)(nil), // 8: pb.ListMessageTasksWithStatusRequest
|
||||
(*ListMessageTasksWithStatusResponse)(nil), // 9: pb.ListMessageTasksWithStatusResponse
|
||||
(*SendMessageTaskRequest)(nil), // 10: pb.SendMessageTaskRequest
|
||||
(*SendMessageTaskResponse)(nil), // 11: pb.SendMessageTaskResponse
|
||||
(*MessageTask)(nil), // 12: pb.MessageTask
|
||||
(*RPCSuccess)(nil), // 13: pb.RPCSuccess
|
||||
(*RPCCountResponse)(nil), // 14: pb.RPCCountResponse
|
||||
(UpdateMessageTaskStatusRequest_Status)(0), // 2: pb.UpdateMessageTaskStatusRequest.Status
|
||||
(*CreateMessageTaskRequest)(nil), // 3: pb.CreateMessageTaskRequest
|
||||
(*CreateMessageTaskResponse)(nil), // 4: pb.CreateMessageTaskResponse
|
||||
(*DeleteMessageTaskRequest)(nil), // 5: pb.DeleteMessageTaskRequest
|
||||
(*FindEnabledMessageTaskRequest)(nil), // 6: pb.FindEnabledMessageTaskRequest
|
||||
(*FindEnabledMessageTaskResponse)(nil), // 7: pb.FindEnabledMessageTaskResponse
|
||||
(*CountMessageTasksWithStatusRequest)(nil), // 8: pb.CountMessageTasksWithStatusRequest
|
||||
(*ListMessageTasksWithStatusRequest)(nil), // 9: pb.ListMessageTasksWithStatusRequest
|
||||
(*ListMessageTasksWithStatusResponse)(nil), // 10: pb.ListMessageTasksWithStatusResponse
|
||||
(*SendMessageTaskRequest)(nil), // 11: pb.SendMessageTaskRequest
|
||||
(*SendMessageTaskResponse)(nil), // 12: pb.SendMessageTaskResponse
|
||||
(*UpdateMessageTaskStatusRequest)(nil), // 13: pb.UpdateMessageTaskStatusRequest
|
||||
(*MessageTask)(nil), // 14: pb.MessageTask
|
||||
(*RPCSuccess)(nil), // 15: pb.RPCSuccess
|
||||
(*RPCCountResponse)(nil), // 16: pb.RPCCountResponse
|
||||
}
|
||||
var file_service_message_task_proto_depIdxs = []int32{
|
||||
12, // 0: pb.FindEnabledMessageTaskResponse.messageTask:type_name -> pb.MessageTask
|
||||
14, // 0: pb.FindEnabledMessageTaskResponse.messageTask:type_name -> pb.MessageTask
|
||||
0, // 1: pb.CountMessageTasksWithStatusRequest.status:type_name -> pb.CountMessageTasksWithStatusRequest.Status
|
||||
1, // 2: pb.ListMessageTasksWithStatusRequest.status:type_name -> pb.ListMessageTasksWithStatusRequest.Status
|
||||
12, // 3: pb.ListMessageTasksWithStatusResponse.messageTasks:type_name -> pb.MessageTask
|
||||
2, // 4: pb.MessageTaskService.createMessageTask:input_type -> pb.CreateMessageTaskRequest
|
||||
4, // 5: pb.MessageTaskService.deleteMessageTask:input_type -> pb.DeleteMessageTaskRequest
|
||||
5, // 6: pb.MessageTaskService.findEnabledMessageTask:input_type -> pb.FindEnabledMessageTaskRequest
|
||||
7, // 7: pb.MessageTaskService.countMessageTasksWithStatus:input_type -> pb.CountMessageTasksWithStatusRequest
|
||||
8, // 8: pb.MessageTaskService.listMessageTasksWithStatus:input_type -> pb.ListMessageTasksWithStatusRequest
|
||||
10, // 9: pb.MessageTaskService.sendMessageTask:input_type -> pb.SendMessageTaskRequest
|
||||
3, // 10: pb.MessageTaskService.createMessageTask:output_type -> pb.CreateMessageTaskResponse
|
||||
13, // 11: pb.MessageTaskService.deleteMessageTask:output_type -> pb.RPCSuccess
|
||||
6, // 12: pb.MessageTaskService.findEnabledMessageTask:output_type -> pb.FindEnabledMessageTaskResponse
|
||||
14, // 13: pb.MessageTaskService.countMessageTasksWithStatus:output_type -> pb.RPCCountResponse
|
||||
9, // 14: pb.MessageTaskService.listMessageTasksWithStatus:output_type -> pb.ListMessageTasksWithStatusResponse
|
||||
11, // 15: pb.MessageTaskService.sendMessageTask:output_type -> pb.SendMessageTaskResponse
|
||||
10, // [10:16] is the sub-list for method output_type
|
||||
4, // [4:10] is the sub-list for method input_type
|
||||
4, // [4:4] is the sub-list for extension type_name
|
||||
4, // [4:4] is the sub-list for extension extendee
|
||||
0, // [0:4] is the sub-list for field type_name
|
||||
14, // 3: pb.ListMessageTasksWithStatusResponse.messageTasks:type_name -> pb.MessageTask
|
||||
2, // 4: pb.UpdateMessageTaskStatusRequest.status:type_name -> pb.UpdateMessageTaskStatusRequest.Status
|
||||
3, // 5: pb.MessageTaskService.createMessageTask:input_type -> pb.CreateMessageTaskRequest
|
||||
5, // 6: pb.MessageTaskService.deleteMessageTask:input_type -> pb.DeleteMessageTaskRequest
|
||||
6, // 7: pb.MessageTaskService.findEnabledMessageTask:input_type -> pb.FindEnabledMessageTaskRequest
|
||||
8, // 8: pb.MessageTaskService.countMessageTasksWithStatus:input_type -> pb.CountMessageTasksWithStatusRequest
|
||||
9, // 9: pb.MessageTaskService.listMessageTasksWithStatus:input_type -> pb.ListMessageTasksWithStatusRequest
|
||||
11, // 10: pb.MessageTaskService.sendMessageTask:input_type -> pb.SendMessageTaskRequest
|
||||
13, // 11: pb.MessageTaskService.updateMessageTaskStatus:input_type -> pb.UpdateMessageTaskStatusRequest
|
||||
4, // 12: pb.MessageTaskService.createMessageTask:output_type -> pb.CreateMessageTaskResponse
|
||||
15, // 13: pb.MessageTaskService.deleteMessageTask:output_type -> pb.RPCSuccess
|
||||
7, // 14: pb.MessageTaskService.findEnabledMessageTask:output_type -> pb.FindEnabledMessageTaskResponse
|
||||
16, // 15: pb.MessageTaskService.countMessageTasksWithStatus:output_type -> pb.RPCCountResponse
|
||||
10, // 16: pb.MessageTaskService.listMessageTasksWithStatus:output_type -> pb.ListMessageTasksWithStatusResponse
|
||||
12, // 17: pb.MessageTaskService.sendMessageTask:output_type -> pb.SendMessageTaskResponse
|
||||
15, // 18: pb.MessageTaskService.updateMessageTaskStatus:output_type -> pb.RPCSuccess
|
||||
12, // [12:19] is the sub-list for method output_type
|
||||
5, // [5:12] is the sub-list for method input_type
|
||||
5, // [5:5] is the sub-list for extension type_name
|
||||
5, // [5:5] is the sub-list for extension extendee
|
||||
0, // [0:5] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_service_message_task_proto_init() }
|
||||
@@ -1012,14 +1147,26 @@ func file_service_message_task_proto_init() {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_service_message_task_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*UpdateMessageTaskStatusRequest); 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_message_task_proto_rawDesc,
|
||||
NumEnums: 2,
|
||||
NumMessages: 10,
|
||||
NumEnums: 3,
|
||||
NumMessages: 11,
|
||||
NumExtensions: 0,
|
||||
NumServices: 1,
|
||||
},
|
||||
|
||||
@@ -25,6 +25,7 @@ const (
|
||||
MessageTaskService_CountMessageTasksWithStatus_FullMethodName = "/pb.MessageTaskService/countMessageTasksWithStatus"
|
||||
MessageTaskService_ListMessageTasksWithStatus_FullMethodName = "/pb.MessageTaskService/listMessageTasksWithStatus"
|
||||
MessageTaskService_SendMessageTask_FullMethodName = "/pb.MessageTaskService/sendMessageTask"
|
||||
MessageTaskService_UpdateMessageTaskStatus_FullMethodName = "/pb.MessageTaskService/updateMessageTaskStatus"
|
||||
)
|
||||
|
||||
// MessageTaskServiceClient is the client API for MessageTaskService service.
|
||||
@@ -43,6 +44,8 @@ type MessageTaskServiceClient interface {
|
||||
ListMessageTasksWithStatus(ctx context.Context, in *ListMessageTasksWithStatusRequest, opts ...grpc.CallOption) (*ListMessageTasksWithStatusResponse, error)
|
||||
// 发送某个消息任务
|
||||
SendMessageTask(ctx context.Context, in *SendMessageTaskRequest, opts ...grpc.CallOption) (*SendMessageTaskResponse, error)
|
||||
// 修改消息任务状态
|
||||
UpdateMessageTaskStatus(ctx context.Context, in *UpdateMessageTaskStatusRequest, opts ...grpc.CallOption) (*RPCSuccess, error)
|
||||
}
|
||||
|
||||
type messageTaskServiceClient struct {
|
||||
@@ -107,6 +110,15 @@ func (c *messageTaskServiceClient) SendMessageTask(ctx context.Context, in *Send
|
||||
return out, nil
|
||||
}
|
||||
|
||||
func (c *messageTaskServiceClient) UpdateMessageTaskStatus(ctx context.Context, in *UpdateMessageTaskStatusRequest, opts ...grpc.CallOption) (*RPCSuccess, error) {
|
||||
out := new(RPCSuccess)
|
||||
err := c.cc.Invoke(ctx, MessageTaskService_UpdateMessageTaskStatus_FullMethodName, in, out, opts...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// MessageTaskServiceServer is the server API for MessageTaskService service.
|
||||
// All implementations should embed UnimplementedMessageTaskServiceServer
|
||||
// for forward compatibility
|
||||
@@ -123,6 +135,8 @@ type MessageTaskServiceServer interface {
|
||||
ListMessageTasksWithStatus(context.Context, *ListMessageTasksWithStatusRequest) (*ListMessageTasksWithStatusResponse, error)
|
||||
// 发送某个消息任务
|
||||
SendMessageTask(context.Context, *SendMessageTaskRequest) (*SendMessageTaskResponse, error)
|
||||
// 修改消息任务状态
|
||||
UpdateMessageTaskStatus(context.Context, *UpdateMessageTaskStatusRequest) (*RPCSuccess, error)
|
||||
}
|
||||
|
||||
// UnimplementedMessageTaskServiceServer should be embedded to have forward compatible implementations.
|
||||
@@ -147,6 +161,9 @@ func (UnimplementedMessageTaskServiceServer) ListMessageTasksWithStatus(context.
|
||||
func (UnimplementedMessageTaskServiceServer) SendMessageTask(context.Context, *SendMessageTaskRequest) (*SendMessageTaskResponse, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method SendMessageTask not implemented")
|
||||
}
|
||||
func (UnimplementedMessageTaskServiceServer) UpdateMessageTaskStatus(context.Context, *UpdateMessageTaskStatusRequest) (*RPCSuccess, error) {
|
||||
return nil, status.Errorf(codes.Unimplemented, "method UpdateMessageTaskStatus not implemented")
|
||||
}
|
||||
|
||||
// UnsafeMessageTaskServiceServer may be embedded to opt out of forward compatibility for this service.
|
||||
// Use of this interface is not recommended, as added methods to MessageTaskServiceServer will
|
||||
@@ -267,6 +284,24 @@ func _MessageTaskService_SendMessageTask_Handler(srv interface{}, ctx context.Co
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
func _MessageTaskService_UpdateMessageTaskStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
|
||||
in := new(UpdateMessageTaskStatusRequest)
|
||||
if err := dec(in); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if interceptor == nil {
|
||||
return srv.(MessageTaskServiceServer).UpdateMessageTaskStatus(ctx, in)
|
||||
}
|
||||
info := &grpc.UnaryServerInfo{
|
||||
Server: srv,
|
||||
FullMethod: MessageTaskService_UpdateMessageTaskStatus_FullMethodName,
|
||||
}
|
||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||
return srv.(MessageTaskServiceServer).UpdateMessageTaskStatus(ctx, req.(*UpdateMessageTaskStatusRequest))
|
||||
}
|
||||
return interceptor(ctx, in, info, handler)
|
||||
}
|
||||
|
||||
// MessageTaskService_ServiceDesc is the grpc.ServiceDesc for MessageTaskService service.
|
||||
// It's only intended for direct use with grpc.RegisterService,
|
||||
// and not to be introspected or modified (even as a copy)
|
||||
@@ -298,6 +333,10 @@ var MessageTaskService_ServiceDesc = grpc.ServiceDesc{
|
||||
MethodName: "sendMessageTask",
|
||||
Handler: _MessageTaskService_SendMessageTask_Handler,
|
||||
},
|
||||
{
|
||||
MethodName: "updateMessageTaskStatus",
|
||||
Handler: _MessageTaskService_UpdateMessageTaskStatus_Handler,
|
||||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "service_message_task.proto",
|
||||
|
||||
@@ -25,6 +25,9 @@ service MessageTaskService {
|
||||
|
||||
// 发送某个消息任务
|
||||
rpc sendMessageTask(SendMessageTaskRequest) returns (SendMessageTaskResponse);
|
||||
|
||||
// 修改消息任务状态
|
||||
rpc updateMessageTaskStatus(UpdateMessageTaskStatusRequest) returns (RPCSuccess);
|
||||
}
|
||||
|
||||
// 创建消息任务
|
||||
@@ -43,21 +46,21 @@ message CreateMessageTaskResponse {
|
||||
|
||||
// 删除消息任务
|
||||
message DeleteMessageTaskRequest {
|
||||
int64 messageTaskId = 1;
|
||||
int64 messageTaskId = 1; // 消息任务ID
|
||||
}
|
||||
|
||||
// 读取消息任务状态
|
||||
message FindEnabledMessageTaskRequest {
|
||||
int64 messageTaskId = 1;
|
||||
int64 messageTaskId = 1; // 消息任务ID
|
||||
}
|
||||
|
||||
message FindEnabledMessageTaskResponse {
|
||||
MessageTask messageTask = 1;
|
||||
MessageTask messageTask = 1; // 消息任务信息
|
||||
}
|
||||
|
||||
// 计算某个状态的消息任务数量
|
||||
message CountMessageTasksWithStatusRequest {
|
||||
Status status = 1;
|
||||
Status status = 1; // 任务状态
|
||||
|
||||
enum Status {
|
||||
MessageTaskStatusNone = 0;
|
||||
@@ -69,7 +72,7 @@ message CountMessageTasksWithStatusRequest {
|
||||
|
||||
// 根据状态列出某页任务
|
||||
message ListMessageTasksWithStatusRequest {
|
||||
Status status = 1;
|
||||
Status status = 1; // 任务状态
|
||||
int64 offset = 2;
|
||||
int64 size = 3;
|
||||
|
||||
@@ -98,4 +101,17 @@ message SendMessageTaskResponse {
|
||||
bool isOk = 1; // 是否成功
|
||||
string error = 2; // 失败时的提示信息
|
||||
string response = 3; // 发送成功后响应内容
|
||||
}
|
||||
|
||||
// 修改消息任务状态
|
||||
message UpdateMessageTaskStatusRequest {
|
||||
int64 messageTaskId = 1; // 消息任务ID
|
||||
Status status = 2; // 新的状态
|
||||
|
||||
enum Status {
|
||||
MessageTaskStatusNone = 0;
|
||||
MessageTaskStatusSending = 1;
|
||||
MessageTaskStatusSuccess = 2;
|
||||
MessageTaskStatusFailed = 3;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user