syntax = "proto3";

package base_sender_blocks;

option go_package = "bsm/full/module/base/sender/pb;sender";

// Shared request and response messages.
message Empty {}

message FetchRequest {
  int64 page_no = 1 [json_name = "page_no"];
  int64 page_size = 2 [json_name = "page_size"];
  map<string, string> params = 3;
}

message IdentRequest {
  int64 id = 1;
  string identity = 2;
}

message VersionRequest {
  int64 version = 1;
}

message SearchRequest {
  string keyword = 1;
}

message StatusReply {
  int32 code = 1;
  string message = 2;
  string details = 3;
  int64 timeseq = 4;
}

// Service-specific variants whose wire formats differ from the shared types.
message CmsSearchRequest {
  string keyword = 1;
  int64 page_no = 2 [json_name = "page_no"];
  int64 page_size = 3 [json_name = "page_size"];
}

message MallFetchRequest {
  int64 page_no = 1 [json_name = "page_no"];
  int64 page_size = 2 [json_name = "page_size"];
  map<string, string> params = 3;
  string store_identity = 4 [json_name = "store_identity"];
  string keyword = 5;
  repeated int64 category_id = 6;
  string sort = 7;
  int64 min_price = 8 [json_name = "min_price"];
  int64 max_price = 9 [json_name = "max_price"];
}

message MarketFetchRequest {
  int64 page_no = 1 [json_name = "page_no"];
  int64 page_size = 2 [json_name = "page_size"];
  map<string, string> params = 3;
  string identity = 4;
  string keyword = 5;
  int32 status = 6;
  int32 approve = 7;
}

message OrderIdentRequest {
  int64 id = 1;
  string identity = 2;
  string reason = 3;
  int32 approve = 4;
  string agency = 5;
  string store_identity = 6;
}

message DeliveryStatusReply {
  int64 status = 1;
  string identity = 2;
  string message = 3;
  int64 timeseq = 4;
}

message IdentityStatusReply {
  int32 code = 1;
  string identity = 2;
  string message = 3;
  int64 timeseq = 4;
}

message OrderStatusReply {
  int32 code = 1;
  string identity = 2;
  string message = 3;
  int64 timeseq = 4;
  string reason = 5;
}

message DataStatusReply {
  string data = 1;
  int64 timeseq = 2;
}

message StoreSerialRequest {
  string store_identity = 1 [json_name = "store_identity"];
  repeated string serial_id = 2 [json_name = "serial_id"];
}

// Cloud messages.
message IDRequest {
  uint64 id = 1;
}

message IDListRequest {
  repeated uint64 ids = 1;
}

message StdIicuds {
  uint64 id = 1;
  string created_at = 2;
  string updated_at = 3;
  string deleted_at = 4;
}

message StdPassport {
  uint64 passport_id = 1;
  string passport_identity = 2;
}

message CloudBase {
  uint64 cloud_id = 1;
  string cloud_identity = 2;
}

// CMS messages.
message CmsCategoryItem {
  string site_identity = 1 [json_name = "site_identity"];
  int64 id = 2;
  string identity = 3;
  int64 parent_id = 4 [json_name = "parent_id"];
  string title = 5;
  string cover_path = 6 [json_name = "cover_path"];
  string intro = 7;
  string created_at = 8 [json_name = "created_at"];
  string updated_at = 9 [json_name = "updated_at"];
  repeated CmsCategoryItem child = 10;
  string category_key = 11 [json_name = "category_key"];
}

message CmsTagsItem {
  int64 id = 1;
  string identity = 2;
  string title = 3;
  string cover_path = 4 [json_name = "cover_path"];
  string intro = 5;
  string created_at = 6 [json_name = "created_at"];
}

message CmsAccessoryItem {
  string identity = 1;
  string title = 2;
  string file_path = 3 [json_name = "file_path"];
  string created_at = 4 [json_name = "created_at"];
}

// Passport messages.
message VerifyStatus {
  int32 email_verify = 1;
  int32 phone_verify = 2;
  int32 face_verify = 3;
  int32 document_verify = 4;
  int32 kyc_verify = 5;
}

// Market messages.
message MarketLoginReply {
  string token = 1;
  string identity = 2;
  string market_identity = 3 [json_name = "market_identity"];
  string name = 4;
  string account = 5;
  string role = 6;
  int32 status = 7;
  string created_at = 8 [json_name = "created_at"];
  string market_name = 9 [json_name = "market_name"];
}

// Order messages.
message OrderSummaryItem {
  int64 id = 1;
  string order_no = 2 [json_name = "order_no"];
  int64 partner_id = 3 [json_name = "partner_id"];
  string identity = 4;
  int64 total_price = 7 [json_name = "total_price"];
  int64 trans_price = 8 [json_name = "trans_price"];
  int64 refund_price = 9 [json_name = "refund_price"];
  int64 logistics_fee = 11 [json_name = "logistics_fee"];
  int64 coupon_amount = 12 [json_name = "coupon_amount"];
  string remark = 13;
  int32 status = 14;
  string logistics_number = 15 [json_name = "logistics_number"];
  string address_identity = 16 [json_name = "address_identity"];
  string county = 17;
  string province = 18;
  string city = 19;
  string area = 20;
  string address = 21;
  string contact = 22;
  string phone = 23;
  string delivery_time = 24 [json_name = "delivery_time"];
  string delivery_identity = 25 [json_name = "delivery_identity"];
  int32 pay_type = 26 [json_name = "pay_type"];
  int64 pay_amount = 27 [json_name = "pay_amount"];
  string pay_trade_no = 28 [json_name = "pay_trade_no"];
  string pay_time = 29 [json_name = "pay_time"];
  string pay_remark = 30 [json_name = "pay_remark"];
  string created = 31;
  string updated = 32;
  repeated OrderDetails details = 33;
  string addr = 34;
  string car_identity = 35 [json_name = "car_identity"];
  string delivery_address = 36 [json_name = "delivery_address"];
  string brand = 37;
  string version = 38;
  string license_number = 39 [json_name = "license_number"];
  string member_name = 40 [json_name = "member_name"];
  string member_phone = 41 [json_name = "member_phone"];
  int32 approve = 42;
}

message OrderDetails {
  int64 id = 1;
  int64 product_id = 2 [json_name = "product_id"];
  string spec_no = 3 [json_name = "spec_no"];
  string spec = 4;
  int64 type = 5;
  string title = 6;
  string cover_image = 7 [json_name = "cover_image"];
  int64 sales_price = 8 [json_name = "sales_price"];
  string product_args = 9 [json_name = "product_args"];
  int64 number = 10;
  int64 unit_price = 11 [json_name = "unit_price"];
  int64 spec_id = 12 [json_name = "spec_id"];
  string product_identity = 13 [json_name = "product_identity"];
  int64 gas_types = 14 [json_name = "gas_types"];
  int64 total_price = 15 [json_name = "total_price"];
}

// Social feed messages.
message FeedPostListReply {
  repeated FeedPostItem list = 1;
  int64 cnt = 2;
}

message FeedPostItem {
  string identity = 1;
  string content = 2;
  int64 feed_id = 3;
  string feed_identity = 4;
  bool is_open = 5;
  int64 cnt_unlike = 6;
  int64 cnt_comment = 7;
  int64 cnt_like = 8;
  repeated FeedAttachItem attachs = 9;
  repeated FeedTagItem tags = 10;
}

message FeedAttachItem {
  string identity = 1;
  string attach_type = 2;
  string url = 3;
}

message FeedTagItem {
  string key = 1;
  string content = 2;
}

// Social group messages.
message GroupPostListReply {
  repeated GroupPostItem list = 1;
  int64 cnt = 2;
}

message GroupPostItem {
  string identity = 1;
  string content = 2;
  int64 passport_id = 3;
  string passport_identity = 4;
  bool is_open = 5;
  int64 cnt_unlike = 6;
  int64 cnt_comment = 7;
  int64 cnt_like = 8;
  repeated GroupAttachItem attachs = 9;
  repeated GroupTagItem tags = 10;
}

message GroupAttachItem {
  string identity = 1;
  string attach_type = 2;
  string url = 3;
}

message GroupTagItem {
  string key = 1;
  string content = 2;
}

// Social relation messages.
message RelationItem {
  string identity = 1;
  string nickname = 2;
  string remark_name = 3;
  int32 popular = 4;
  string avatar = 5;
  string birthday = 6;
  int32 sex = 7;
  int32 province = 8;
  int32 city = 9;
  int32 area = 10;
  string sign = 11;
  repeated string tags = 12;
  int32 foreign_status = 13;
}

message FetchRelationItemReply {
  int64 total = 1;
  repeated RelationItem data = 2;
}
