SysAppVersionService.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目必须遵守相关法律法规和许可证的要求。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
  2. //
  3. // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
  4. namespace Admin.NET.Core.Service;
  5. /// <summary>
  6. /// APP 版本检查服务 🧩
  7. /// </summary>
  8. [ApiDescriptionSettings(Order = 505)]
  9. public class SysAppVersionService : IDynamicApiController, ITransient
  10. {
  11. private readonly SysConfigService _sysConfigService;
  12. public SysAppVersionService(SysConfigService sysConfigService)
  13. {
  14. _sysConfigService = sysConfigService;
  15. }
  16. /// <summary>
  17. /// 获取 APP 最新版本 🔖
  18. /// </summary>
  19. /// <param name="platform">平台:android / ios</param>
  20. /// <remarks>版本信息在【系统管理-参数配置】维护,键名规则:app_{platform}_version_code / app_{platform}_version_name / app_{platform}_apk_url / app_{platform}_force_update / app_{platform}_release_notes。未配置时 VersionCode=0,APP 视为无更新。</remarks>
  21. [AllowAnonymous]
  22. [DisplayName("获取APP最新版本")]
  23. public async Task<AppVersionOutput> GetLatest([FromQuery] string platform = "android")
  24. {
  25. platform = string.IsNullOrWhiteSpace(platform) ? "android" : platform.Trim().ToLowerInvariant();
  26. var prefix = $"app_{platform}_";
  27. return new AppVersionOutput
  28. {
  29. Platform = platform,
  30. VersionCode = await _sysConfigService.GetConfigValue<int>(prefix + "version_code"),
  31. VersionName = await _sysConfigService.GetConfigValue<string>(prefix + "version_name"),
  32. ApkUrl = await _sysConfigService.GetConfigValue<string>(prefix + "apk_url"),
  33. ForceUpdate = await _sysConfigService.GetConfigValue<bool>(prefix + "force_update"),
  34. ReleaseNotes = await _sysConfigService.GetConfigValue<string>(prefix + "release_notes"),
  35. };
  36. }
  37. }
  38. /// <summary>
  39. /// APP 版本信息输出
  40. /// </summary>
  41. public class AppVersionOutput
  42. {
  43. /// <summary>
  44. /// 平台(android / ios)
  45. /// </summary>
  46. public string Platform { get; set; }
  47. /// <summary>
  48. /// 版本号(递增整数,对应 manifest.json versionCode)
  49. /// </summary>
  50. public int VersionCode { get; set; }
  51. /// <summary>
  52. /// 版本名(对应 manifest.json versionName)
  53. /// </summary>
  54. public string VersionName { get; set; }
  55. /// <summary>
  56. /// 安装包下载地址
  57. /// </summary>
  58. public string ApkUrl { get; set; }
  59. /// <summary>
  60. /// 是否强制更新
  61. /// </summary>
  62. public bool ForceUpdate { get; set; }
  63. /// <summary>
  64. /// 更新说明
  65. /// </summary>
  66. public string ReleaseNotes { get; set; }
  67. }