package cn.iocoder.yudao.module.wxcp.controller.admin.activity.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Schema(description = "管理后台 - 活动报名统计 Response VO") @Data public class WxCpActivityStatsRespVO { @Schema(description = "活动编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") private Long activityId; @Schema(description = "活动标题", example = "2026 年春季团建") private String activityTitle; @Schema(description = "报名上限,0 表示不限", example = "50") private Integer signupLimit; @Schema(description = "有效报名数(不含已取消)", example = "12") private Integer totalSignup; @Schema(description = "已报名(未签到)", example = "8") private Integer signedUpCount; @Schema(description = "已签到", example = "3") private Integer checkedInCount; @Schema(description = "已取消", example = "1") private Integer canceledCount; @Schema(description = "剩余名额;不限名额时为 null", example = "38") private Integer remaining; @Schema(description = "报名进度百分比(0-100);不限名额时为 null", example = "24") private Integer signupPercent; @Schema(description = "签到率百分比(0-100),按有效报名数计算", example = "25") private Integer checkInPercent; @Schema(description = "按部门分布") private List deptStats; @Schema(description = "按报名日期趋势") private List dateStats; @Schema(description = "按成员账号来源分布(企业微信身份 / 普通填写)") private List sourceStats; @Schema(description = "名称-数量统计项") @Data @NoArgsConstructor @AllArgsConstructor public static class NameCount { @Schema(description = "名称", example = "技术部") private String name; @Schema(description = "数量", example = "5") private Integer count; } }