syntax = "proto3";
// import "Open_IM/pkg/proto/sdk_ws/ws.proto";
option go_package = "./statistics;statistics";
package statistics;

message StatisticsReq {
    string from = 1;
    string to = 2;
}

message GetActiveUserReq{
    StatisticsReq StatisticsReq = 1;
    string OperationID = 2;
}

message UserResp{
    string NickName = 1;
    string UserId = 2;
    int32 MessageNum = 3;
}

message GetActiveUserResp {
    repeated UserResp Users = 1;
}

message GetActiveGroupReq{
    StatisticsReq StatisticsReq = 1;
    string OperationID = 2;
}

message GroupResp {
    string GroupName = 1;
    string GroupId = 2;
    int32 MessageNum = 3;
}

message GetActiveGroupResp {
    repeated GroupResp Groups = 1;
}

message DateNumList {
    string Date = 1;
    int32 Num = 2;
}


message GetMessageStatisticsReq {
    StatisticsReq StatisticsReq = 1;
    string OperationID = 2;
}


message GetMessageStatisticsResp {
    int32 PrivateMessageNum = 1;
    int32 GroupMessageNum = 2;
    repeated DateNumList PrivateMessageNumList = 3;
    repeated DateNumList GroupMessageNumList = 4;
}

message GetGroupStatisticsReq {
    StatisticsReq StatisticsReq = 1;
    string OperationID = 2;
}


message GetGroupStatisticsResp {
    int32 IncreaseGroupNum = 1;
    int32 TotalGroupNum = 2;
    repeated DateNumList IncreaseGroupNumList = 3;
    repeated DateNumList TotalGroupNumList = 4;
}

message GetUserStatisticsReq {
    StatisticsReq StatisticsReq = 1;
    string OperationID = 2;
}

message GetUserStatisticsResp {
    int32 IncreaseUserNum = 1;
    int32 ActiveUserNum = 2;
    int32 TotalUserNum = 3;
    repeated DateNumList IncreaseUserNumList = 4;
    repeated DateNumList ActiveUserNumList = 5;
    repeated DateNumList TotalUserNumList = 6;
}

service user {
    rpc GetActiveUser(GetActiveUserReq) returns(GetActiveUserResp);
    rpc GetActiveGroup(GetActiveGroupReq) returns(GetActiveGroupResp);
    rpc GetMessageStatistics(GetMessageStatisticsReq) returns(GetMessageStatisticsResp);
    rpc GetGroupStatistics(GetGroupStatisticsReq) returns(GetGroupStatisticsResp);
    rpc GetUserStatistics(GetUserStatisticsReq) returns(GetUserStatisticsResp);
}