syntax = "v1"

info(
    title: "天联鹰蜓"
    desc: "天联鹰蜓"
    author: "email"
    email: "email"
    version: "v1"
)

// 小程序接口
@server(
    prefix: v1
    group: user
)
service Core {
    @doc "用户申请加入公司"
    @handler miniUserApplyJoinCompany
    post /mini/user/apply-join-company(MiniUserApplyJoinCompanyRequest) returns (MiniUserApplyJoinCompanyResponse)
    @doc "用户登录"
    @handler miniUserLogin
    post /mini/user/login (MiniUserLoginRequest) returns (MiniUserLoginResponse)
}
@server(
    prefix: v1
    group: user
    jwt: MiniAuth
)
service Core {
    @doc "用户信息"
    @handler miniUserInfo
    post /mini/user/info (MiniUserInfoRequest) returns (MiniUserInfoResponse)
    @doc "用户审核列表"
    @handler miniUserAuditList
    post /mini/user/audit-list (UserSearchRequest)returns(UserSearchResponse)
    @doc "用户审核"
    @handler miniUserAudit
    post /mini/user/audit (MiniUserAuditRequest)
    @doc "部门用户列表"
    @handler miniUserDepartmentUsers
    post /mini/user/department-users (MiniUserDepartmentUsersRequest)returns (MiniUserInfoResponse)
    @doc "关注我的人"
    @handler miniUserFollower
    post /mini/user/follower (UserSearchRequest)returns(UserSearchResponse)
    @doc "我关注的人"
    @handler miniUserFollowing
    post /mini/user/following (UserSearchRequest)returns(UserSearchResponse)
    @doc "关注"
    @handler miniUserFollow
    post /mini/user/follow (FollowRequest)
    @doc "取消关注"
    @handler miniUserUnFollow
    post /mini/user/unfollow (FollowRequest)
}

type(
    MiniUserLoginRequest {
        LoginType           string `json:"loginType"`                    // 登录类型 wechat-login whchat-phone-login  phone-password-login phone-smscode-login
        WechatAuthCode      string `json:"wechatAuthcode,optional"`      // 微信登录 授权码
        WechatEncryptedData string `json:"wechatEncryptedData,optional"` // 微信登录 加密数据
        WechatIV            string `json:"wechatIV,optional"`            // 微信登录 加密算法初始向量
        Phone               string `json:"phone,optional"`               // 手机号
        Password            string `json:"password,optional"`            // 密码
        SmsCode             string `json:"smsCode,optional"`             // 短信验证码
    }
    MiniUserLoginResponse {
        Token string `json:"token"` // x-token
        Phone string `json:"phone"` // 手机号
        Message string `json:"message"` // 失败消息(审核中,注册成功等待审核)
        Success bool `json:"success"`  //  成功标识
    }

    MiniUserInfoRequest {
        //MyStatisticsFlag bool `json:"myStatisticsFlag"` // true:返回统计信息 false;统计信息不返回
    }
    MiniUserInfoResponse {
        User         *UserItem  `json:"user,omitempty"` // 用户信息
        TotalArticle int64  `json:"totalArticle"`   // 累计信息发布
        TotalLoved   int64  `json:"totalLoved"`     // 累计收到的赞
        TotalAccepted int64 `json:"totalAccepted"`  // 累计被采纳
    }
    MiniUserApplyJoinCompanyRequest{
        Phone string `json:"phone"` 
        Code  string `json:"code"`
    }
    MiniUserApplyJoinCompanyResponse{

    }
    MiniUserAuditRequest{
        UserId int64 `json:"userId"` // 用户ID
    }
    MiniUserDepartmentUsersRequest{

    }
    MiniUserDepartmentUsersResponse{
        Departments []*Department `json:"departments"`
        Users       []*UserItem       `json:"users"`
    }
    UserItem {
        CompanyId    int64   `json:"companyId,omitempty"`    // 公司ID
        DepartmentId int64   `json:"departmentId,omitempty"` // 部门ID
        Roles        []int64 `json:"roleId,omitempty"`       // 角色
        Flag         int     `json:"flag,omitempty"`         // 标识 1:管理员 2:普通用户 (有绑定角色是管理员)
        Name         string  `json:"name,omitempty"`         // 名称
        Avatar       string  `json:"avatar,omitempty"`       // 头像
        Phone        string  `json:"phone,omitempty"`        // 手机号 唯一
        Position     string  `json:"position,omitempty"`     // 职位
        Enable       int     `json:"enable,omitempty"`       // 启用状态 1:启用 2:禁用
        AuditStatus  int     `json:"auditStatus,omitempty"`  // 审核状态 0:待审核 1:审核通过 2:拒绝
        Follower     []int64 `json:"followers,omitempty"`    // 关注我的人 (冗余)
        Following    []int64 `json:"following,omitempty"`    // 我关注的人 (冗余)
    }
    Department struct {
        Id int64 `json:"id,omitempty"`               // 部门ID
        CompanyId int64 `json:"companyId,omitempty"` // 公司ID
        ParentId int64 `json:"parentId,omitempty"`   // 父级ID
        Name string `json:"name,omitempty"`          // 部门名称
    }
    UserSearchRequest{
        Page int  `json:"page,optional"`
        Size int  `json:"size,optional"`
        AuditFlag *int `json:"auditFlag,optional"` // 按审核状态 0:待审核 1:审核通过 2:拒绝
    }
    UserSearchResponse{
        List []*UserItem `json:"list"`
        Total int64 `json:"total"`
    }
    FollowRequest{
        UserId int64 `json:"userId"`
    }
)


// 后台接口
//@server(
//    prefix: v1
//    group: user
//    jwt: SystemAuth
//)
//service Core {
//    @doc "系统评论"
//    @handler systemUser
//    get /system/user () returns ()
//}