package dto

import "time"

// WeComMemberListRequest 查询企业微信应用可见成员请求。
type WeComMemberListRequest struct {
	Page     int    `json:"page" query:"page" validate:"omitempty,min=1" minimum:"1" default:"1" description:"页码，默认 1"`
	PageSize int    `json:"page_size" query:"page_size" validate:"omitempty,min=1,max=100" minimum:"1" maximum:"100" default:"20" description:"每页数量，默认 20，最大 100"`
	Keyword  string `json:"keyword" query:"keyword" validate:"omitempty,max=100" maxLength:"100" description:"按姓名或 userid 模糊搜索"`
}

// WeComMemberListParams 企业微信应用可见成员分页路径与查询参数。
type WeComMemberListParams struct {
	IDReq
	WeComMemberListRequest
}

// WeComMemberResponse 企业微信应用可见成员响应。
type WeComMemberResponse struct {
	ApplicationID uint      `json:"application_id" description:"企业微信应用配置 ID"`
	CorpID        string    `json:"corp_id" description:"企业微信企业 ID"`
	UserID        string    `json:"userid" description:"企业微信成员 userid"`
	Name          string    `json:"name" description:"企业微信成员姓名"`
	DepartmentIDs []int64   `json:"department_ids" description:"成员所属部门 ID 列表，仅作为选择辅助快照"`
	SyncedAt      time.Time `json:"synced_at" description:"最近同步时间"`
}

// WeComMemberListResponse 企业微信应用可见成员分页响应。
type WeComMemberListResponse struct {
	Items    []WeComMemberResponse `json:"items" description:"可见成员列表"`
	Total    int64                 `json:"total" description:"总数量"`
	Page     int                   `json:"page" description:"当前页码"`
	PageSize int                   `json:"page_size" description:"每页数量"`
}

// WeComMemberSyncResponse 企业微信可见成员同步响应。
type WeComMemberSyncResponse struct {
	ApplicationID uint      `json:"application_id" description:"企业微信应用配置 ID"`
	SyncedCount   int       `json:"synced_count" description:"本次同步的可见成员数量"`
	SyncedAt      time.Time `json:"synced_at" description:"同步完成时间"`
}
