syntax = "v1"

info(
    title: "素-企业平台.系统后台服务"
    desc: "系统后台管理服务"
    author: "ttt"
    email: "tiptok02@163.com"
    version: "v1"
)

// 后台接口-无验证
@server(
    prefix: v1
    group: auth
    middleware: LogRequest
)
service Core {
    @doc "公司注册"
    @handler systemAuthRegister
    post /auth/company_sign_up(CompanyRegisterRequest) returns (CompanyRegisterResponse)
    @doc "系统用户登录"
    @handler systemAuthLogin
    post /auth/login(AuthLoginRequest) returns (AuthLoginResponse)
}

// 后台接口-验证
@server(
    prefix: v1
    group: auth
    middleware: LogRequest
    jwt: SystemAuth
)
service Core {
    @doc "系统用户信息"
    @handler systemAuthUserInfo
    post /auth/user_info(UserInfoRequest) returns (UserInfoResponse)
}

type(
    User{
        Id    int64  `json:"id"`   // 用户ID
        Name  string `json:"name"` // 用户名称
        Phone string `json:"phone,optional,omitempty"` // 用户手机号
    }
)

// 系统公司注册
type(
    CompanyRegisterRequest{
        Name string  `json:"name"` // 公司名称
        Logo string  `json:"logo"` // 公司LOGO
        Phone string `json:"phone"`// 注册人手机号
        Code  string `json:"code"` // 短信验证码
    }
    CompanyRegisterResponse{
        Token string `json:"token"`
    }
)

// 系统用户登录
type(
    AuthLoginRequest{
        Phone           string  `json:"phone,optionale"`      // 手机
        Password        string  `json:"password,optional"`   // 密码
        Code            string  `json:"code,optional"`       // 验证码
        LoginType       string  `json:"loginType"`  // 登录类型 wechat-login whchat-phone-login  phone-password-login phone-smscode-login
    }
    AuthLoginResponse{
        Token string `json:"token"`
    }
)

// 系统用户信息
type(
    UserInfoRequest{
        UserId     int64    `json:"userId,optional"`
        CompanyId  int64    `json:"companyId,optional"`
        EmployeeId int64    `json:"employeeId,optional"`
    }
    UserInfoResponse{
        Id    int64  `json:"id"`    // 用户ID
        Name  string `json:"name"`  // 用户名称
        Phone string `json:"phone"` // 用户手机号
        EmployeeInfo *Employee     `json:"employeeInfo"` // 职员信息
        Company      *Company      `json:"company"`      // 当前公司信息
        CompanyList  []*Company    `json:"companies"`    // 拥有的公司
    }
)