syntax = "proto3";
option go_package = ".;pb";
import "comm.proto";
import "sociaty_db.proto";
import "battle_db.proto";
import "battle_msg.proto";

// 创建公会
message SociatyCreateReq {
  string name = 1;       //公会名称
  string icon = 2;       //公会图标
  string notice = 3;     //公告
  bool isApplyCheck = 4; //审批
  int32 applyLv = 5;     //限制等级
}

message SociatyCreateResp {
  string id = 1;  //公会ID
  string uid = 2; //创建公会的玩家ID
}

// 筛选条件
enum SociatyListFilter {
  ALL = 0;      //全部
  CONDI = 1;    //满足条件
  NOAPPLY = 2;  //无审批
  APPLYING = 3; //申请中
}

message SociatyInfo {
  DBSociaty dbSociaty = 1;
  SociatyMemberInfo master = 2;
}

// 公会列表
message SociatyListReq { SociatyListFilter filter = 1; }
message SociatyListResp { repeated SociatyInfo list = 1; }

// 搜索公会
message SociatySearchReq {
  string name = 1; //公会名称
}
message SociatySearchResp { repeated DBSociaty list = 1; }

// 设置公会
message SociatySettingReq {
  string icon = 1;       //公会图标
  string notice = 2;     //公告
  bool isApplyCheck = 3; //审批
  int32 applyLv = 4;     //限制等级
}

message SociatySettingResp {
  string sociatyId = 1; //公会ID
}

// 我的公会
message SociatyMineReq {}
message SociatyMineResp {
  DBSociaty sociaty = 1;        //公会信息
  SociatyMemberInfo master = 2; // 会长
}

//成员信息
message SociatyMemberInfo {
  string uid = 1;
  string name = 2;       //昵称
  string avatar = 3;     //头像
  int32 lv = 4;          //等级
  SociatyJob job = 5;    //职位
  int64 offlineTime = 6; //离线时间
}

// 申请列表
message SociatyApplyListReq { string sociatyId = 1; }
message SociatyApplyListResp { repeated SociatyMemberInfo list = 1; }

// 申请
message SociatyApplyReq {
  string sociatyId = 1; //公会ID
}
message SociatyApplyResp {
  string uid = 1;
  string scoiatyId = 2;
}

// 申请撤销
message SociatyApplyCancelReq { string sociatyId = 1; }
message SociatyApplyCancelResp {
  string uid = 1;
  string sociatyId = 2;
}

// 同意
message SociatyAgreeReq { string uid = 1; }
message SociatyAgreeResp {
  string uid = 1;
  string sociatyId = 2;
}

// 拒绝
message SociatyRefuseReq { string uid = 1; }
message SociatyRefuseResp {
  string uid = 1;
  string sociatyId = 2;
}

// 撤销申请
message SociatyCancelReq {}
message SociatyCancelResp {}

// 退出公会
message SociatyQuitReq {}
message SociatyQuitResp {
  string uid = 1;
  string sociatyId = 2;
}

// 解散公会
message SociatyDismissReq {
  int32 dismiss = 1; // 1取消解散
}

message SociatyDismissResp {
  string uid = 1;
  string sociatyId = 2;
}

// 员工列表
message SociatyMembersReq {}
message SociatyMembersResp { repeated SociatyMemberInfo list = 1; }

// 转让公会
message SociatyAssignReq {
  string targetId = 1; //转让目标玩家ID
}
message SociatyAssignResp {
  string sociatyId = 1;
  string targetId = 2; //转让目标玩家ID
}

// 踢出公会
message SociatyDischargeReq {
  string targetId = 1; //踢出目标玩家ID
}
message SociatyDischargeResp {
  string sociatyId = 1;
  string targetId = 2; //转让目标玩家ID
}

// 设置职位
message SociatySettingJobReq {
  string targetId = 1; //目标玩家ID
  SociatyJob job = 2;  //职位
}
message SociatySettingJobResp {
  string sociatyId = 1;
  string targetId = 2; //目标玩家ID
  SociatyJob job = 3;  //职位
}

// 弹劾
message SociatyAccuseReq {}
message SociatyAccuseResp { string sociatyId = 1; }

// 签到
message SociatySignReq {}
message SociatySignResp {
  string uid = 1;
  string sociatyId = 2;
}

//日志列表
message SociatyLogReq {}
message SociatyLogResp { DBSociatyLog log = 1; }

// 任务列表
message SociatyTaskListReq {}
message SociatyTaskListResp { repeated SociatyTask list = 1; }

// 任务奖励领取
message SociatyReceiveReq {
  int32 taskId = 1; //任务ID
}
message SociatyReceiveResp {
  int32 taskId = 1;
  string sociatyId = 2;
}

// 活跃度列表
message SociatyActivityListReq {}
message SociatyActivityListResp { repeated SociatyActivity list = 1; }

//活跃度奖励领取
message SociatyActivityReceiveReq {
  int32 id = 1; //配置ID
}
message SociatyActivityReceiveResp {
  int32 id = 1;
  string sociatyId = 2;
}

// 公会排行榜
message SociatyRankReq {
  int32 rankType = 1; // 1个人2公会成员3全服
}
message SociatyRankResp { repeated DBSociatyRank rank = 1; }

// 公会解散推送
message SociatyPDismissPush { string sociatyId = 1; }

// 审核通过推送
message SociatyPAgreePush {
  string uid = 1;
  string sociatyId = 2;
}

// 公会BOSS入口
message SociatyBMainReq {}

message SociatyBMainResp {
  map<int32, ChallengeTeam> teams = 1; //公会BOSS 队伍
  int32 ticket = 2;                    // 挑战券数量
  int64 endTime = 3;                   //赛季结束时间
  int64 settlementTime = 4;            //赛季结算时间
  int64 total = 5;                     //总积分
  repeated int64 highIntegrals = 6;    //最高的积分
  int64 personalRanking = 7;           //个人排名
  int64 sociatyRanking = 8;            //公会排名
}

// 公会BOSS 布阵
message SociatyBFormationReq {
  string sociatyId = 1;
  map<int32, ChallengeTeam> teams = 2; //队伍信息，队伍编号1 2 3，从1开始
}

message SociatyBFormationResp {
  string sociatyId = 1;
  string uid = 2;
}

// 公会BOSS挑战
message SociatyBChallengeStartReq { string sociatyId = 1; }
message SociatyBChallengeStartResp {
  string sociatyId = 1;
  string uid = 2;
}

message SociatyBChallengeFinishReq {
  PlayType ptype = 1;
  BattleReport report = 2;
}

message SociatyBChallengeFinishResp {
  int64 integral = 1; //积分
}

// 公会BOSS 阵容推荐
message SociatyRecommendReq {
  int32 cate = 1; // 1全服排行 2好友排行
}

message SociatyRecommendResp { map<int32, ChallengeTeam> teams = 1; }

// 公会BOSS 领取奖励
message SociatyBReceiveReq { int32 taskId = 1; }

message SociatyBReceiveResp {
  string sociatyId = 1;
  int32 taskId = 2;
}

//公会BOSS 排名
message SociatyBRankReq {
  int32 rankType = 1; //排名分类 1个人排名2公会成员3全服排名
}

message SociatyRankInfo {
  string name = 1;        //昵称
  string head = 2;        //头像
  int32 lv = 3;           //等级
  string sociatyName = 4; //公会名称
  int64 ranking = 5;      //名次
  int64 integral = 6;     //积分
}
message SociatyBRankResp { repeated SociatyRankInfo rank = 1; }

//挑战券购买
message SociatyBuyReq {
  UserAssets atn = 1; //挑战券消耗资源及价格
  int32 buyNum = 2;   //购买数量
}

message SociatyBuyResp { string uid = 1; }
