You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
// ============================================================================
// 【文件说明】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 ;
/// <summary>
/// 分析排行项。
/// <para>
/// 【业务场景】
/// 用于表示排行榜中的单个条目:
/// - Name: 条目名称( 如页面路径、关键词)
/// - Value: 条目值( 如访问次数、浏览量)
/// </para>
/// <para>
/// 【设计说明】
/// 这是一个通用的排行项结构,可用于:
/// - 入口页面排行: Name = 页面路径, Value = 进入次数
/// - 热门页面排行: Name = 页面路径, Value = PV
/// - 搜索关键词排行: Name = 关键词, Value = 搜索次数
/// </para>
/// </summary>
public class AnalyticsRankItemDTO
{
/// <summary>
/// 条目名称。
/// <para>
/// 【业务含义】
/// 根据排行类型不同,含义不同:
/// - 入口页面排行:页面路径(如 /product/detail)
/// - 热门页面排行:页面路径(如 /search)
/// - 搜索关键词排行:搜索关键词(如 "产品介绍")
/// </para>
/// </summary>
public string Name { get ; set ; }
/// <summary>
/// 条目值。
/// <para>
/// 【业务含义】
/// 根据排行类型不同,含义不同:
/// - 入口页面排行:进入次数
/// - 热门页面排行: 页面浏览量( PV)
/// - 搜索关键词排行:搜索次数
/// </para>
/// <para>
/// 【C# 语法知识点 - 可空值类型】
/// long? 是可空的长整型:
/// - 可以是 null( 表示无数据)
/// - 可以是 long 值
///
/// 为什么用可空类型?
/// - 数据库查询可能返回 null
/// - 前端需要区分"0 次"和"无数据"
/// </para>
/// </summary>
public long? Value { get ; set ; }
}