AppVersionRepository.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using AutoMapper;
  4. using GxPress.Common.AppOptions;
  5. using GxPress.Common.Exceptions;
  6. using GxPress.Common.Tools;
  7. using GxPress.Entity;
  8. using GxPress.Repository.Interface;
  9. using GxPress.Request.AppVersion;
  10. using Microsoft.Extensions.Options;
  11. using Datory;
  12. using Dapper;
  13. namespace GxPress.Repository.Implement
  14. {
  15. public class AppVersionRepository : IAppVersionRepository
  16. {
  17. private readonly Repository<AppVersion> _repository;
  18. private readonly IMapper _mapper;
  19. private readonly string _connectionString;
  20. private readonly string _databaseTypeStr;
  21. public AppVersionRepository(IOptionsMonitor<DatabaseOptions> dbOptionsAccessor, IMapper mapper)
  22. {
  23. _databaseTypeStr = dbOptionsAccessor.CurrentValue.DatabaseType;
  24. _connectionString = dbOptionsAccessor.CurrentValue.ConnectionString;
  25. var databaseType = StringUtils.ToEnum<DatabaseType>(dbOptionsAccessor.CurrentValue.DatabaseType, DatabaseType.MySql);
  26. var database = new Database(databaseType, dbOptionsAccessor.CurrentValue.ConnectionString);
  27. _repository = new Repository<AppVersion>(database);
  28. _mapper = mapper;
  29. }
  30. public IDatabase Database => _repository.Database;
  31. public string TableName => _repository.TableName;
  32. public List<TableColumn> TableColumns => _repository.TableColumns;
  33. /// <summary>
  34. /// 根据ID和类型获取版本号
  35. /// </summary>
  36. /// <param name="id"></param>
  37. /// <returns></returns>
  38. public async Task<AppVersion> GetAsync(int id)
  39. {
  40. return await _repository.GetAsync(id);
  41. }
  42. /// <summary>
  43. /// 根据APP类型获取最新版本号
  44. /// </summary>
  45. /// <param name="request"></param>
  46. /// <returns></returns>
  47. public async Task<AppVersion> GetAppVersionAsync(AppVersionSearchRequest request)
  48. {
  49. var appVersion = await _repository.GetAsync(Q.Where(nameof(AppVersion.VersionType), request.VersionType)
  50. .OrderByDesc(nameof(AppVersion.CreatedDate)));
  51. if (appVersion == null)
  52. throw new BusinessException("暂无数据");
  53. return appVersion;
  54. }
  55. public async Task<int> InsertAsync(AppVersion appVersion)
  56. {
  57. return await _repository.InsertAsync(appVersion);
  58. }
  59. /// <summary>
  60. /// 修改版本数据
  61. /// </summary>
  62. /// <param name="appVersion"></param>
  63. /// <returns></returns>
  64. public async Task<bool> UpdateAsync(AppVersion appVersion)
  65. {
  66. var appVersionEntity = _repository.GetAsync(appVersion.Id);
  67. if (appVersionEntity == null)
  68. throw new BusinessException("版本数据不存在");
  69. return await _repository.UpdateAsync(appVersion);
  70. }
  71. public async Task<bool> DeleteAsync(int id)
  72. {
  73. return await _repository.DeleteAsync(id);
  74. }
  75. /// <summary>
  76. /// 获取版本号
  77. /// </summary>
  78. /// <returns></returns>
  79. public async Task<IEnumerable<AppVersion>> GetAppVersionAsync()
  80. {
  81. return await _repository.GetAllAsync();
  82. }
  83. /// <summary>
  84. /// 获取最新的移动端信息
  85. /// </summary>
  86. /// <returns></returns>
  87. public async Task<IEnumerable<AppVersion>> GetAppVersionsAsync()
  88. {
  89. string sql = "SELECT * FROM ccpph.tede_app_version where Id in(select max(id) from tede_app_version group by VersionType)";
  90. var databaseType = StringUtils.ToEnum<DatabaseType>(_databaseTypeStr, DatabaseType.MySql);
  91. var database = new Database(databaseType, _connectionString);
  92. var connection = database.GetConnection();
  93. var result = await connection.QueryAsync<AppVersion>(sql);
  94. return result;
  95. }
  96. }
  97. }