CaseDataDto.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. using Hotline.Share.Dtos.Hotspots;
  2. using Hotline.Share.Dtos.Users;
  3. using Hotline.Share.Enums.Article;
  4. using Hotline.Share.Enums.Caselibrary;
  5. using XF.Utility.EnumExtensions;
  6. namespace Hotline.Share.Dtos.Caselibrary
  7. {
  8. public record CaseDataDto
  9. {
  10. /// <summary>
  11. /// 案例ID
  12. /// </summary>
  13. public string Id { get; set; }
  14. /// <summary>
  15. /// 标题
  16. /// </summary>
  17. public string Title { get; set; }
  18. /// <summary>
  19. /// 创建人
  20. /// </summary>
  21. public string CreatorName { get; set; }
  22. /// <summary>
  23. /// 浏览量
  24. /// </summary>
  25. public int PageView { get; set; }
  26. /// <summary>
  27. /// 是否热门
  28. /// </summary>
  29. public bool IsPopular { get; set; }
  30. /// <summary>
  31. /// 申请部门ID
  32. /// </summary>
  33. public string CreatorOrgId { get; set; }
  34. /// <summary>
  35. /// 申请部门
  36. /// </summary>
  37. public string CreatorOrgName { get; set; }
  38. /// <summary>
  39. /// 申请时间
  40. /// </summary>
  41. public DateTime CreationTime { get; set; }
  42. /// <summary>
  43. /// 上架时间
  44. /// </summary>
  45. public DateTime? OnShelfTime { get; set; }
  46. /// <summary>
  47. /// 更新时间
  48. /// </summary>
  49. public DateTime? UpdateTime { get; set; }
  50. /// <summary>
  51. /// 审核时间
  52. /// </summary>
  53. public DateTime? ExaminTime { get; set; }
  54. /// <summary>
  55. /// 下架时间
  56. /// </summary>
  57. public DateTime? OffShelfTime { get; set; }
  58. /// <summary>
  59. /// 过期时间
  60. /// </summary>
  61. public DateTime? ExpiredTime { get; set; }
  62. /// <summary>
  63. /// 审核意见
  64. /// </summary>
  65. public string? ExaminOpinion { get; set; }
  66. /// <summary>
  67. /// 审核人ID
  68. /// </summary>
  69. public string? ExaminManId { get; set; }
  70. /// <summary>
  71. /// 审核人
  72. /// </summary>
  73. public UserDto? ExaminMan { get; set; }
  74. /// <summary>
  75. /// 文档状态
  76. /// </summary>
  77. public ECaseStatus Status { get; set; }
  78. public ECaseStatus NewStatus => Status != ECaseStatus.Drafts && DateTime.Now > ExpiredTime ? ECaseStatus.Overdue : Status;
  79. /// <summary>
  80. /// 文档状态名称
  81. /// </summary>
  82. public string StatusName => NewStatus.GetDescription();
  83. /// <summary>
  84. /// 案例状态申请
  85. /// </summary>
  86. public ECaseApplyStatus? ApplyStatus { get; set; }
  87. /// <summary>
  88. /// 案例分类
  89. /// </summary>
  90. public List<CaseRelationTypeDto> CaseTypes { get; set; }
  91. /// <summary>
  92. /// 案例分类名称
  93. /// </summary>
  94. public string CaseTypeText => GetCaseTypeText(CaseTypes);
  95. /// <summary>
  96. /// 获取案例分类名称
  97. /// </summary>
  98. /// <returns></returns>
  99. public string GetCaseTypeText(List<CaseRelationTypeDto> items)
  100. {
  101. if (CaseTypes != null && CaseTypes.Any())
  102. {
  103. var names = CaseTypes.Select(x => x.CaseTypeName).ToList();
  104. return string.Join(",", names);
  105. }
  106. return "";
  107. }
  108. public HotspotDto HotspotType { get; set; }
  109. /// <summary>
  110. /// 热点
  111. /// </summary>
  112. public string HotspotName => HotspotType != null ? HotspotType.HotSpotFullName : string.Empty;
  113. }
  114. public record CaseRelationTypeDto
  115. {
  116. /// <summary>
  117. /// 案例库类型ID
  118. /// </summary>
  119. public string CaseTypeId { get; set; }
  120. /// <summary>
  121. /// 案例库类型名称
  122. /// </summary>
  123. public string CaseTypeName { get; set; }
  124. /// <summary>
  125. /// 案例库类型名称
  126. /// </summary>
  127. public string CaseTypeSpliceName { get; set; }
  128. }
  129. }
  130. public class CaseExistDto
  131. {
  132. /// <summary>
  133. /// 标题
  134. /// </summary>
  135. public string Title { get; set; }
  136. /// <summary>
  137. /// 摘要
  138. /// </summary>
  139. public string Abstract { get; set; }
  140. /// <summary>
  141. /// 案例描述
  142. /// </summary>
  143. public string Describe { get; set; }
  144. /// <summary>
  145. /// 案例结果
  146. /// </summary>
  147. public string Result { get; set; }
  148. /// <summary>
  149. /// 推荐理由
  150. /// </summary>
  151. public string Reason { get; set; }
  152. /// <summary>
  153. /// ID
  154. /// </summary>
  155. public string? Id { get; set; }
  156. }
  157. public class CaseInfoExportDto
  158. {
  159. /// <summary>
  160. /// 导出的案例Id集合
  161. /// </summary>
  162. public string[] Ids { get; set; }
  163. /// <summary>
  164. /// 导出格式
  165. /// </summary>
  166. public EFileType FileType { get; set; }
  167. }
  168. public class CasePageViewDto
  169. {
  170. public string Id { get; set; }
  171. public string Title { get; set; }
  172. public int PageView { get; set; }
  173. }