ArticleUserCirclesService.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using Infrastructure;
  2. using Infrastructure.Attribute;
  3. using ZR.Model.Content;
  4. using ZR.Model.Content.Dto;
  5. using ZR.Repository;
  6. using ZR.Service.Content.IService;
  7. namespace ZR.Service.Content
  8. {
  9. /// <summary>
  10. /// 用户加入圈子Service业务层处理
  11. /// </summary>
  12. [AppService(ServiceType = typeof(IArticleUserCirclesService), ServiceLifetime = LifeTime.Transient)]
  13. public class ArticleUserCirclesService : BaseService<ArticleUserCircles>, IArticleUserCirclesService
  14. {
  15. private readonly IArticleCategoryService _articleCategoryService;
  16. public ArticleUserCirclesService(IArticleCategoryService articleCategoryService)
  17. {
  18. _articleCategoryService = articleCategoryService;
  19. }
  20. /// <summary>
  21. /// 查询用户加入圈子列表
  22. /// </summary>
  23. /// <param name="parm"></param>
  24. /// <returns></returns>
  25. public PagedInfo<ArticleUserCirclesDto> GetList(ArticleUserCirclesQueryDto parm)
  26. {
  27. var predicate = QueryExp(parm);
  28. var response = Queryable()
  29. .Where(predicate.ToExpression())
  30. .ToPage<ArticleUserCircles, ArticleUserCirclesDto>(parm);
  31. return response;
  32. }
  33. /// <summary>
  34. /// 获取详情
  35. /// </summary>
  36. /// <param name="Id"></param>
  37. /// <returns></returns>
  38. public ArticleUserCircles GetInfo(int Id)
  39. {
  40. var response = Queryable()
  41. .Where(x => x.Id == Id)
  42. .First();
  43. return response;
  44. }
  45. /// <summary>
  46. /// 查询表达式
  47. /// </summary>
  48. /// <param name="parm"></param>
  49. /// <returns></returns>
  50. private static Expressionable<ArticleUserCircles> QueryExp(ArticleUserCirclesQueryDto parm)
  51. {
  52. var predicate = Expressionable.Create<ArticleUserCircles>();
  53. return predicate;
  54. }
  55. #region 前端接口
  56. /// <summary>
  57. /// 用户加入圈子
  58. /// </summary>
  59. /// <param name="userId"></param>
  60. /// <param name="categoryId"></param>
  61. /// <returns></returns>
  62. public int JoinCircle(int userId, int categoryId)
  63. {
  64. var join = IsJoin(userId, categoryId);
  65. if (join == 1)
  66. {
  67. throw new CustomException("您已加入");
  68. }
  69. var entity = new ArticleUserCircles
  70. {
  71. UserId = userId,
  72. CategoryId = categoryId,
  73. JoinTime = DateTime.Now,
  74. Status = 1
  75. };
  76. var result = UseTran2(() =>
  77. {
  78. // 插入用户圈子
  79. Insert(entity);
  80. // 更新圈子加入人数
  81. _articleCategoryService.PlusJoinNum(categoryId);
  82. });
  83. return result ? 1 : 0;
  84. }
  85. /// <summary>
  86. /// 删除用户加入圈子
  87. /// </summary>
  88. /// <param name="userId"></param>
  89. /// <param name="categoryId"></param>
  90. /// <returns></returns>
  91. public int RemoveCircle(int userId, int categoryId)
  92. {
  93. var result = UseTran2(() =>
  94. {
  95. Delete(x => x.CategoryId == categoryId && x.UserId == userId);
  96. // 更新圈子加入人数
  97. _articleCategoryService.ReduceJoinNum(categoryId);
  98. });
  99. return result ? 1 : 0;
  100. }
  101. /// <summary>
  102. /// 是否加入
  103. /// </summary>
  104. /// <param name="userId"></param>
  105. /// <param name="categoryId"></param>
  106. /// <returns></returns>
  107. public int IsJoin(int userId, int categoryId)
  108. {
  109. var query = Queryable()
  110. .Where(x => x.UserId == userId && x.CategoryId == categoryId)
  111. .First();
  112. return query == null ? 0 : 1;
  113. }
  114. /// <summary>
  115. /// 查询我的圈子
  116. /// </summary>
  117. /// <param name="userId"></param>
  118. /// <returns></returns>
  119. public List<ArticleCategoryDto> GetMyJoinCircles(int userId)
  120. {
  121. var response = Queryable()
  122. .LeftJoin<ArticleCategory>((it, c) => it.CategoryId == c.CategoryId)
  123. .Where((it,c) => it.UserId == userId)
  124. .Select((it, c) => new ArticleCategoryDto()
  125. {
  126. }, true)
  127. .ToList();
  128. return response;
  129. }
  130. #endregion
  131. }
  132. }