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 miniUserSwitchAccount
    post /mini/user/switch-account (MiniUserSwitchAccountRequest) returns (MiniUserLoginResponse)
    @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 (MiniUserFollowedSearchRequest)returns(MiniUserFollowedSearchResponse)
    @doc "我关注的人"
    @handler miniUserFollowing
    post /mini/user/following (MiniUserFollowedSearchRequest)returns(MiniUserFollowedSearchResponse)
    @doc "关注"
    @handler miniUserFollow
    post /mini/user/follow (FollowRequest)
    @doc "取消关注"
    @handler miniUserUnFollow
    post /mini/user/unfollow (FollowRequest)
    @doc "我点赞的文章或评论"
    @handler miniMyLike
    post /user/mylike (MiniMyLikeRequest)returns (MiniMyLikeResponse)
}

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"`  //  成功标识
    }
    MiniUserSwitchAccountRequest{
        CompanyId int64 `json:"companyId"`
    }

    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"`  // 累计被采纳
        Accounts  []Account `json:"accounts"`       // 公司账号
        Auths     []Auth `json:"auths"` // 权限列表
    }
    MiniUserApplyJoinCompanyRequest{
        Phone string `json:"phone"` 
        Code  string `json:"code"`
    }
    MiniUserApplyJoinCompanyResponse{

    }
    MiniUserAuditRequest{
        UserId int64 `json:"userId"` // 用户ID
        Status int `json:"status"`   // 审核状态 1:审核通过 2:拒绝
    }
    MiniUserDepartmentUsersRequest{

    }
    MiniUserDepartmentUsersResponse{
        Departments []*Department `json:"departments"`
        Users       []*UserItem       `json:"users"`
    }
    MiniUserFollowedSearchRequest{
        Page int  `json:"page,optional"`
        Size int  `json:"size,optional"`
    }
    MiniUserFollowedSearchResponse{
        List   []*UserFollowItem    `json:"users"`
        Total  int64          `json:"total"`
    }
    UserItem {
        Id           int64   `json:"id,omitempty"`           // 用户ID
        CompanyId    int64   `json:"companyId,omitempty"`    // 公司ID
        CompanyName  string `json:"companyName,omitempty"`   // 公司名称
        //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"`    // 我关注的人 (冗余)
        Departments  []int64 `json:"departments,omitempty"`  // 所属部门
        AccountFrom  string  `json:"accountFrom,omitempty"`  // 账号来源 后台新增、扫码注册
    }
    Account {
        CompanyId    int64   `json:"companyId"`    // 公司ID
        CompanyName  string  `json:"companyName"`   // 公司名称
        Logo         string  `json:"logo"`    // 公司图标
        UserId       int64   `json:"userId"`  // 用户ID
        Name         string  `json:"name"`    // 名称
        Position     string  `json:"position"`// 职位
    }
    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"`
    }
    UserFollowItem struct {
        Id             int64  `json:"id"`             // 用户ID
        Name           string `json:"name"`           // 名称
        CompanyName    string `json:"companyName"`    // 公司名称
        Avatar         string `json:"avatar"`         // 头像
        Position       string `json:"position"`       // 职位
        Followed       bool   `json:"followed"`       // 关注
        MutualFollowed bool   `json:"mutualFollowed"` // 互相关注标识
    }
)



// 我点赞的文章或评论
type (
    MiniMyLikeRequest{
        Page int  `json:"page"`
        Size int  `json:"size"`
    }

    MiniMyLikeResponse {
        List  []MyLikeItem     `json:"list"`
        Total int64            `json:"total"`
    }

    MyLikeItem {
        UserId              int64                 `json:"userId"`       // 发布人id
        ArticleId           int64                 `json:"articleId"`    // 文章id
        CommentId           int64                 `json:"commentId"`    // 评论id
        CreatedAt           int64                 `json:"createdAt"`    // 创建时间
        User                *SimpleUser           `json:"user"`         // 发布人
        Article             *SimpleArticle        `json:"article"`      // 文章
        Comment             *SimpleComment        `json:"comment"`      // 评论
    }

    SimpleComment {
        Id           int64  `json:"id"`
        Content      string `json:"content"`      // 评论内容
        CountLove    int    `json:"countLove"`    // 点赞数量
        CountComment int    `json:"countComment"` // 评论数量
        Show         int    `json:"show"`         // 评论的展示状态(0显示、1不显示)
    }
)


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