using Attribute; using Model; using Model.Base; using Repository; using Service; using Microsoft.AspNetCore.Mvc; using Vo.Admin; using Common; namespace Services { /// /// APP静态资源Service业务层处理 /// [AppService(ServiceType = typeof(IAppProjectStaticService), ServiceLifetime = LifeTime.Transient)] public class AppProjectStaticService : BaseService, IAppProjectStaticService { /// /// APP静态资源-列表 /// /// 参数请求体 /// 分页参数 /// 列表 public PagedInfo getAppProjectStaticList([FromQuery] PagerInfo page, [FromQuery] AppProjectStatic param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(param.versionId > 0, m => m.versionId == param.versionId); predicate = predicate.AndIF(param.appId > 0, m => m.appId == param.appId); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.fileType), m => m.fileType.Contains(param.fileType)); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 获取目录下所有文件 /// /// 目录路径 public void getStaticFileList(string directoryPath, int appId, int versionId) { var files = FileHelper.GetSystemFiles(directoryPath, true); foreach (var file in files) { var exists = GetFirst(m => m.fileName == file && m.appId == appId && m.versionId == versionId); if (exists == null) { string[] parts = file.Split('|'); string fileName = parts[0]; int fileSize = int.Parse(parts[1]); if (!fileName.EndsWith(".html")) { string fileFullPath = fileName.Substring(fileName.IndexOf("/static/") + 1); string filePath = fileFullPath.Substring(0, fileFullPath.LastIndexOf(value: "/") + 1); string[] filePathList = filePath.Split('/'); Add(new AppProjectStatic { fileSize = fileSize, fileType = filePathList.Length > 1 ? filePathList[1] : "", filePath = filePath, fileName = fileFullPath.Substring(fileFullPath.LastIndexOf("/") + 1), appId = appId, versionId = versionId, createTime = DateTime.Now, updateTime = DateTime.Now }); } } } } } }