syntax = "v1"


// 后台接口
@server(
    prefix: v1
    group: app
    middleware: LogRequest
    jwt: SystemAuth
)
service Core {
    @doc  "应用-详情"
    @handler systemAppGet
    get /system/app/:id (SystemAppGetRequest) returns (SystemAppGetResponse)
    @doc  "应用-搜索"
    @handler systemAppSearch
    post /system/app/search (SystemAppSearchRequest) returns (SystemAppSearchResponse)
    @doc  "应用-设置配置"
    @handler systemAppSetConfig
    post /system/app/set_config (SystemAppSetConfigRequest) returns (SystemAppSetConfigResponse)
    @doc  "应用-列表"
    @handler systemAppList
    post /system/app/list (SystemAppSearchRequest) returns (SystemAppSearchResponse)
}

type (
    SystemAppGetRequest {
        Id int64 `path:"id"`
    }
    SystemAppGetResponse {
        SystemApp SystemAppItem `json:"app"`
    }

    SystemAppUpdateResponse {}

    SystemAppSearchRequest {
        Page int  `json:"page,optional"`
        Size int  `json:"size,optional"`
        Name string  `json:"name,optional"`
        VisibleFlag   int       `json:"visibleFlag,optional"` //0:所有 1:全员可见 2:部分可见 3:已停用
    }
    SystemAppSearchResponse{
        List []SystemAppItem  `json:"list"`
        Total int64 `json:"total"`
    }
    SystemAppItem {
        Id            int64  `json:"id,omitempty"` // 唯一标识
        Code          string `json:"code,omitempty"` // 应用编码
        Name          string `json:"name,omitempty"` // 应用名称
        Logo          string `json:"logo,omitempty"` // 图标
        Description   string `json:"description,omitempty"` // 描述
        Type          string `json:"type,omitempty"` // 分类 default
        VersionNumber string `json:"versionNumber,omitempty"` // 应用版本号
        Status        int    `json:"status,omitempty"` // 1:启用、2:停用
        VisibleFlag   int       `json:"visibleFlag,omitempty"` // 1:全员可见 2:部分可见
        VisibleUsers  []int64   `json:"visibleUsers,omitempty"` // 可见的用户 所有用户:空 部分用户:用户ID列表
        Sort          int       `json:"sort,omitempty"` // 排序
        HasAuth       bool     `json:"hasAuth"` // true:用户有权限 false:用户无权限
        Url           string   `json:"url,omitempty"`     // 应用地址
    }
)

// 应用-设置配置
type(
    SystemAppSetConfigRequest{
        AppId         int64     `json:"id"`                     // 公司应用ID
        VisibleFlag   int       `json:"visibleFlag"`            // 1:全员可见 2:部分可见
        VisibleUsers  []int64   `json:"visibleUsers"`           // 可见的用户 所有用户:空 部分用户:用户ID列表
        VisibleDepartments []int64 `json:"visibleDepartments,optional"`  // 可见的部门 部门ID列表
    }
    SystemAppSetConfigResponse{
        SystemApp SystemAppItem `json:"app"`
    }
)