syntax = "v1"

info (
	title:   "后台用户中心服务"
	desc:    "后台用户中心服务"
	version: "v1"
)

@server (
	prefix: api/v1/admin/user
	group:  admin_user
	middleware: AdminAuthInterceptor
)
service main {
	@doc "获取用户列表"
	@handler AdminGetUserList
	get /list (AdminGetUserListReq) returns (AdminGetUserListResp)

	@doc "获取用户详情"
	@handler AdminGetUserDetail
	get /detail/:id (AdminGetUserDetailReq) returns (AdminGetUserDetailResp)

	@doc "创建用户"
	@handler AdminCreateUser
	post /create (AdminCreateUserReq) returns (AdminCreateUserResp)

	@doc "更新用户"
	@handler AdminUpdateUser
	put /update/:id (AdminUpdateUserReq) returns (AdminUpdateUserResp)

	@doc "删除用户"
	@handler AdminDeleteUser
	delete /delete/:id (AdminDeleteUserReq) returns (AdminDeleteUserResp)

	@doc "用户信息"
	@handler AdminUserInfo
	get /info (AdminUserInfoReq) returns (AdminUserInfoResp)

	@doc "重置管理员密码"
	@handler AdminResetPassword
	put /reset-password/:id (AdminResetPasswordReq) returns (AdminResetPasswordResp)
}

type (
	// 列表请求
	AdminGetUserListReq {
		Page     int64  `form:"page,default=1"`             // 页码
		PageSize int64  `form:"pageSize,default=20"`        // 每页数量
		Username string `form:"username,optional"`          // 用户名
		RealName string `form:"real_name,optional"`         // 真实姓名
		Status   int64  `form:"status,optional,default=-1"` // 状态：0-禁用，1-启用
	}

	// 列表响应
	AdminGetUserListResp {
		Total int64               `json:"total"` // 总数
		Items []AdminUserListItem `json:"items"` // 列表
	}

	// 列表项
    AdminUserListItem {
        Id         string  `json:"id"`          // 用户ID
        Username   string  `json:"username"`    // 用户名
        RealName   string  `json:"real_name"`   // 真实姓名
        Status     int64   `json:"status"`      // 状态：0-禁用，1-启用
        CreateTime string  `json:"create_time"` // 创建时间
        RoleIds    []string `json:"role_ids"`    // 关联的角色ID列表
    }

	// 详情请求
    AdminGetUserDetailReq {
        Id string `path:"id"` // 用户ID
    }

	// 详情响应
    AdminGetUserDetailResp {
        Id         string  `json:"id"`          // 用户ID
        Username   string  `json:"username"`    // 用户名
        RealName   string  `json:"real_name"`   // 真实姓名
        Status     int64   `json:"status"`      // 状态：0-禁用，1-启用
        CreateTime string  `json:"create_time"` // 创建时间
        UpdateTime string  `json:"update_time"` // 更新时间
        RoleIds    []string `json:"role_ids"`    // 关联的角色ID列表
    }

	// 创建请求
    AdminCreateUserReq {
        Username string  `json:"username"`         // 用户名
        RealName string  `json:"real_name"`        // 真实姓名
        Status   int64   `json:"status,default=1"` // 状态：0-禁用，1-启用
        RoleIds  []string `json:"role_ids"`         // 关联的角色ID列表
    }

	// 创建响应
    AdminCreateUserResp {
        Id string `json:"id"` // 用户ID
    }

	// 更新请求
    AdminUpdateUserReq {
        Id       string  `path:"id"`                 // 用户ID
        Username *string `json:"username,optional"`  // 用户名
        RealName *string `json:"real_name,optional"` // 真实姓名
        Status   *int64  `json:"status,optional"`    // 状态：0-禁用，1-启用
        RoleIds  []string `json:"role_ids,optional"`  // 关联的角色ID列表
    }

	// 更新响应
	AdminUpdateUserResp {
		Success bool `json:"success"` // 是否成功
	}

	// 删除请求
    AdminDeleteUserReq {
        Id string `path:"id"` // 用户ID
    }

	// 删除响应
	AdminDeleteUserResp {
		Success bool `json:"success"` // 是否成功
	}

	// 用户信息请求
	AdminUserInfoReq {
	}

	// 用户信息响应
	AdminUserInfoResp {
		Username string   `json:"username"`  // 用户名
		RealName string   `json:"real_name"` // 真实姓名
		Roles    []string `json:"roles"`     // 角色编码列表
	}

	// 重置密码请求
    AdminResetPasswordReq {
        Id       string `path:"id"`         // 用户ID
        Password string `json:"password"`   // 新密码
    }

	// 重置密码响应
	AdminResetPasswordResp {
		Success bool `json:"success"` // 是否成功
	}
)
