AppHomePageService.Search.cs 4.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading.Tasks;
  4. using Dapper;
  5. using Datory;
  6. using GxPress.Request.Navigation;
  7. using GxPress.Result.Navigation;
  8. namespace GxPress.Service.Implement.AppHomePage
  9. {
  10. public partial class AppHomePageService
  11. {
  12. /// <summary>
  13. /// 获取搜索作者
  14. /// </summary>
  15. /// <returns></returns>
  16. public async Task<IEnumerable<NavigationSearchTeacherResult>> GetNavigationSearchResultAysnc(int categoryId)
  17. {
  18. var result = new List<NavigationSearchTeacherResult>();
  19. var database = new Database(DatabaseType.MySql, Common.Tools.ConfigHelper.GetValue("Database:ConnectionString"));
  20. var connection = database.GetConnection();
  21. var sql = $"SELECT TeacherId,Author,count(1) as Count FROM tede_media where id in(select MediaId from tede_system_lable_media where TypeValue=1) and Author is not null group by Author,TeacherId";
  22. if (categoryId > 0)
  23. sql = $"SELECT TeacherId,Author,count(1) as Count FROM tede_media where id in(select MediaId from tede_system_lable_media where TypeValue=1 and lableId={categoryId}) and Author is not null group by Author,TeacherId";
  24. return await connection.QueryAsync<NavigationSearchTeacherResult>(sql);
  25. }
  26. /// <summary>
  27. /// 获取出版社
  28. /// </summary>
  29. /// <param name="categoryId"></param>
  30. /// <returns></returns>
  31. public async Task<IEnumerable<string>> GetNavigationPressAsync(int categoryId)
  32. {
  33. var sql = "SELECT Press FROM tede_media where id in(select MediaId from tede_system_lable_media where TypeValue=1) and Press is not null group by Press";
  34. if (categoryId > 0)
  35. sql = "SELECT Press FROM tede_media where id in(select MediaId from tede_system_lable_media where TypeValue=1 and lableId={categoryId}) and Press is not null group by Press";
  36. var result = new List<NavigationSearchTeacherResult>();
  37. var database = new Database(DatabaseType.MySql, Common.Tools.ConfigHelper.GetValue("Database:ConnectionString"));
  38. var connection = database.GetConnection();
  39. return await connection.QueryAsync<string>(sql);
  40. }
  41. /// <summary>
  42. /// 获取年份数据
  43. /// </summary>
  44. /// <param name="request"></param>
  45. /// <returns></returns>
  46. public async Task<IEnumerable<NavigationYearResult>> GetNavigationYearResult(NavigationYearRequest request)
  47. {
  48. var result = new List<NavigationYearResult>();
  49. var database = new Database(DatabaseType.MySql, Common.Tools.ConfigHelper.GetValue("Database:ConnectionString"));
  50. var connection = database.GetConnection();
  51. var str = "";
  52. if (request.CategoryId > 0)
  53. str = $" and LableId={request.CategoryId} ";
  54. var maxYearSql = $"select max(AddDate) from tede_media where id in( SELECT MediaId FROM ccpph_tede.tede_system_lable_media where typevalue=1 {str})";
  55. var maxYear = await connection.ExecuteScalarAsync<string>(maxYearSql);
  56. var minYearSql = $"select min(AddDate) from tede_media where id in( SELECT MediaId FROM ccpph_tede.tede_system_lable_media where typevalue=1 {str})";
  57. var minYear = await connection.ExecuteScalarAsync<string>(minYearSql);
  58. //
  59. if (DateTime.TryParse(maxYear, out var maxYearDate) && DateTime.TryParse(minYear, out var minYearDate))
  60. {
  61. var count = (maxYearDate.Year - minYearDate.Year);
  62. if (count > 0)
  63. {
  64. for (int i = 0; i < count; i++)
  65. {
  66. var sql = $"select count(1) from tede_media where AddDate>'{minYearDate.Year + i}' and AddDate<'{minYearDate.Year + (i + 1)}' and id in( SELECT MediaId FROM ccpph_tede.tede_system_lable_media where typevalue=1)";
  67. var number = await connection.ExecuteScalarAsync<int>(sql);
  68. result.Add(new NavigationYearResult() { Year = (minYearDate.Year + i) + "年", Count = number });
  69. }
  70. }
  71. else
  72. {
  73. var sql = $"select count(1) from tede_media where AddDate>'{minYearDate.Year}' and AddDate<'{minYearDate.Year + 1}' and id in( SELECT MediaId FROM ccpph_tede.tede_system_lable_media where typevalue=1)";
  74. var number = await connection.ExecuteScalarAsync<int>(sql);
  75. result.Add(new NavigationYearResult() { Year = (minYearDate.Year) + "年", Count = number });
  76. }
  77. }
  78. return result;
  79. }
  80. }
  81. }