// ============================================================================
// 【文件说明】AnalyticsRankItemDTO.cs - 分析排行项 DTO
// ============================================================================
// 这是排行榜中的单项数据结构,用于表示排行中的一个条目。
//
// 【使用场景】
// - 入口页面排行:Name = 页面路径,Value = 访问次数
// - 热门页面排行:Name = 页面路径,Value = 浏览量
// - 搜索关键词排行:Name = 关键词,Value = 搜索次数
//
// 【设计模式 - 通用 DTO】
// 这个 DTO 设计得很通用,可以用于多种排行场景:
// - 不限定具体的业务含义
// - Name 和 Value 可以代表不同的事物
// - 减少 DTO 类的数量
//
// 【与 Java Spring Boot 的对比】
// Java 通常也用类似的通用类:
// public class RankItem {
// private String name;
// private Long value;
// // getter/setter...
// }
// ============================================================================
namespace Admin.NET.Plugin.HwPortal;
///
/// 分析排行项。
///
/// 【业务场景】
/// 用于表示排行榜中的单个条目:
/// - Name:条目名称(如页面路径、关键词)
/// - Value:条目值(如访问次数、浏览量)
///
///
/// 【设计说明】
/// 这是一个通用的排行项结构,可用于:
/// - 入口页面排行:Name = 页面路径,Value = 进入次数
/// - 热门页面排行:Name = 页面路径,Value = PV
/// - 搜索关键词排行:Name = 关键词,Value = 搜索次数
///
///
public class AnalyticsRankItemDTO
{
///
/// 条目名称。
///
/// 【业务含义】
/// 根据排行类型不同,含义不同:
/// - 入口页面排行:页面路径(如 /product/detail)
/// - 热门页面排行:页面路径(如 /search)
/// - 搜索关键词排行:搜索关键词(如 "产品介绍")
///
///
public string Name { get; set; }
///
/// 条目值。
///
/// 【业务含义】
/// 根据排行类型不同,含义不同:
/// - 入口页面排行:进入次数
/// - 热门页面排行:页面浏览量(PV)
/// - 搜索关键词排行:搜索次数
///
///
/// 【C# 语法知识点 - 可空值类型】
/// long? 是可空的长整型:
/// - 可以是 null(表示无数据)
/// - 可以是 long 值
///
/// 为什么用可空类型?
/// - 数据库查询可能返回 null
/// - 前端需要区分"0 次"和"无数据"
///
///
public long? Value { get; set; }
}