syntax = "proto3";
package pb;
option go_package = "gim/pkg/pb/";

import "im.common.ext.proto";

service BusinessExt {
  // 登录
  rpc SignIn (SignInReq) returns (SignInResp);
  // 获取用户信息
  rpc GetUser (GetUserReq) returns (GetUserResp);
  // 更新用户信息
  rpc UpdateUser (UpdateUserReq) returns (Empty);
  // 搜索用户(这里简单数据库实现，生产环境建议使用ES)
  rpc SearchUser (SearchUserReq) returns (SearchUserResp);
  // 上传文件至云端
  rpc CloudUploadFile (CloudUploadFileReq) returns (CloudUploadFileResp);
  // 获取表情
  rpc EmoticonList (Empty) returns (EmoticonListResp);
  // 判断是否为好友关系
  rpc IsFriends (IsFriendsReq) returns (IsFriendsResp);
  // 投诉群
  rpc ComplainGroup (ComplainGroupReq) returns (Empty);
}


message ComplainGroupReq {
  int64 group_id = 1;
  ComplainType complain_type = 2; // 投诉类型
  string text = 3; // 投诉内容
  repeated string image_list = 4; // 图片
}

// 消息类型
enum ComplainType {
  CT_UNKNOWN = 0; // 未知
  CT_GAMBLE = 1; // 存在赌博行为
  MT_DEFRAUD = 2; // 存在骗钱行为
  MT_HARASS = 3; // 不当信息骚扰
  MT_RUMOUR = 4; // 传播谣言
  MT_COUNTERFEIT_GOODS_INFO = 5; // 发布假冒商品信息
  MT_VIOLATION_OF_MINORS = 6; // 侵犯未成年人权益
  MT_OTHER = 7; // 其他
}


message IsFriendsReq {
  string user_phone = 1;
  string friend_phone = 2;
}

message IsFriendsResp {
  int64 is_friend = 1;
  User user = 2; // 用户信息
}

message Emoticon {
  string name = 1; // 名称
  string img_url = 2; // 图片地址
  string memo = 3; // 备注
  int32 sort = 4; // 排序
}
message EmoticonListResp {
  repeated Emoticon emoticons = 1;
}
message SignInReq {
  string phone_number = 1; // 手机号
  string code = 2; // 验证码
  int64 device_id = 3; // 设备id
  int64 master_id = 4; // 站长id
  string push_alia = 5; // 极光推送-别名
  string nickname = 6; // 昵称
  string avatar_url = 7; // 头像地址
}
message SignInResp {
  bool is_new = 1; // 是否是新用户
  int64 user_id = 2; // 用户id
  string token = 3; // token
  int64 master_id = 4; // 站长id
}
message CloudUploadFileReq {
  string dir = 1; // 目录名
  string file_name = 2; // 上传原文件名称
  string file_size = 3; // 文件大小
}
message CloudUploadFileResp {
  string method = 1; // 请求方式
  string host = 2; // 域名
  string key = 3; // key
  string token = 4; // token
}

message User {
  int64 user_id = 1; // 用户id
  string nickname = 2; // 昵称
  int32 sex = 3; // 性别
  string avatar_url = 4; // 头像地址
  string extra = 5; // 附加字段
  int64 create_time = 6; // 创建时间
  int64 update_time = 7; // 更新时间
  int64 master_id = 8; // 站长id
  int64 is_auto_added_friends = 9; // 是否自动被添加好友
  string phone_number = 10; // 手机号
}

message GetUserReq {
  int64 user_id = 1; // 用户id
  string phone = 2;  // 用户手机号
}
message GetUserResp {
  User user = 1; // 用户信息
}

message UpdateUserReq {
  string nickname = 1; // 昵称
  int32 sex = 2; // 性别
  string avatar_url = 3; // 头像地址
  string extra = 4; // 附加字段
}

message SearchUserReq{
  string key = 1;
  int64 master_id = 2;
}
message SearchUserResp{
  repeated User users = 1;
}

