FileUpdateInfoService.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using Attribute;
  2. using Dto;
  3. using Vo;
  4. using Model;
  5. using Model.Base;
  6. using Repository;
  7. using Service;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Aliyun.OSS;
  10. using Infrastructure.Model;
  11. using Base;
  12. using Common;
  13. namespace Services
  14. {
  15. /// <summary>
  16. /// 资源文件更新信息Service业务层处理
  17. /// </summary>
  18. [AppService(ServiceType = typeof(IFileUpdateInfoService), ServiceLifetime = LifeTime.Transient)]
  19. public class FileUpdateInfoService : BaseService<FileUpdateInfo>, IFileUpdateInfoService
  20. {
  21. /// <summary>
  22. /// 资源文件更新信息-列表
  23. /// </summary>
  24. /// <param name="parm">请求参数</param>
  25. /// <returns>资源文件更新信息列表</returns>
  26. public PagedInfo<FileUpdateInfoListVo> List([FromQuery] FileUpdateInfoListDto parm, [FromQuery] PagerInfo page)
  27. {
  28. //开始拼装查询条件
  29. var predicate = Expressionable.Create<FileUpdateInfo>();
  30. predicate = predicate.And(m => m.appVersion == parm.appVersion);
  31. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.kind), m => m.kind.Contains(parm.kind));
  32. var response = Queryable()
  33. .Where(predicate.ToExpression())
  34. .OrderByDescending(m => m.id)
  35. .ToPage<FileUpdateInfo, FileUpdateInfoListVo>(page);
  36. return response;
  37. }
  38. /// <summary>
  39. /// 资源文件更新信息-更新文件
  40. /// </summary>
  41. /// <param name="parm">请求参数</param>
  42. /// <returns>资源文件更新信息更新文件</returns>
  43. public void UpdateFile([FromQuery] FileUpdateInfoUpdateFileDto parm)
  44. {
  45. OssConfigs ossConfigs = new();
  46. AppSettings.Bind("OssConfigs", ossConfigs);
  47. string kind = parm.kind;
  48. if(!string.IsNullOrEmpty(parm.appVersion))
  49. {
  50. kind += "/" + parm.appVersion;
  51. }
  52. GetSystemFiles(ossConfigs, kind);
  53. foreach (string filename in SystemFiles)
  54. {
  55. string Path = filename.Substring(0, filename.LastIndexOf("/") + 1);
  56. string template = filename.Substring(filename.LastIndexOf("/") + 1);
  57. if (!template.EndsWith(".html") && !template.EndsWith(".DS_Store") && !template.EndsWith("LICENSE") && !template.EndsWith("Thumbs.db"))
  58. {
  59. FileUpdateInfo check = GetFirst(m => m.path == Path && m.fileName == template && m.kind == parm.kind && m.appVersion == parm.appVersion);
  60. if (check == null)
  61. {
  62. Add(new FileUpdateInfo()
  63. {
  64. createDate = DateTime.Now,
  65. updateDate = DateTime.Now,
  66. fileName = template,
  67. path = Path,
  68. versionNum = 0,
  69. kind = parm.kind,
  70. appVersion = Function.CheckNull(parm.appVersion),
  71. });
  72. }
  73. }
  74. }
  75. }
  76. List<string> SystemFiles;
  77. private void GetSystemFiles(OssConfigs ossConfigs, string Kind = "default")
  78. {
  79. SystemFiles = new List<string>();
  80. var client = new OssClient(ossConfigs.Endpoint, ossConfigs.Key, ossConfigs.Secret);
  81. var listObjectsRequest = new ListObjectsRequest(ossConfigs.BucketName);
  82. listObjectsRequest.MaxKeys = 1000;
  83. listObjectsRequest.Prefix = "skin/app/" + Kind + "/";
  84. var result = client.ListObjects(listObjectsRequest);
  85. foreach (var summary in result.ObjectSummaries.Where(m => m.Size > 0).ToList())
  86. {
  87. string path = summary.Key.Substring(summary.Key.IndexOf(listObjectsRequest.Prefix) + listObjectsRequest.Prefix.Length).Replace("\\", "/");
  88. SystemFiles.Add(path);
  89. }
  90. }
  91. /// <summary>
  92. /// 生成APP配置文件
  93. /// </summary>
  94. /// <param name="parm">请求参数</param>
  95. /// <returns>生成APP配置文件</returns>
  96. public string makeAppInitData(string kind, string appVersion = "")
  97. {
  98. FileUpdateInfoListDto parm = new FileUpdateInfoListDto();
  99. parm.kind = kind;
  100. parm.appVersion = appVersion;
  101. PagerInfo page = new PagerInfo();
  102. page.pageSize = 100000;
  103. var obj = List(parm, page);
  104. string str = Newtonsoft.Json.JsonConvert.SerializeObject(obj.Records);
  105. return Dbconn.Encrypt3DES(str, "*ga34|^7");
  106. }
  107. }
  108. }