using Attribute; using Model; using Model.Base; using Repository; using Service; using Microsoft.AspNetCore.Mvc; using Vo.Admin; using Aliyun.OSS; namespace Services { /// /// 资源配置Service业务层处理 /// [AppService(ServiceType = typeof(IAppSourceSetService), ServiceLifetime = LifeTime.Transient)] public class AppSourceSetService : BaseService, IAppSourceSetService { /// /// 资源配置-列表 /// /// 分类 /// 分页参数 /// 列表 public PagedInfo getAppSourceSetList([FromQuery] PagerInfo page, [FromQuery] AppSourceSet param) { //拼装查询条件 var predicate = Expressionable.Create(); predicate = predicate.AndIF(param.projectId > 0, m => m.projectId == param.projectId); predicate = predicate.AndIF(!string.IsNullOrEmpty(param.kind), m => m.kind == param.kind); var response = Queryable() .Where(predicate.ToExpression()) .OrderByDescending(m => m.id) .ToPage(page); return response; } /// /// 资源配置-同步oss文件 /// /// 参数 /// public int sycnOssFile([FromQuery] AppSourceSet param, [FromQuery] string version) { var client = new OssClient(param.sourceEndPoint, param.sourceAccessKeyId, param.sourceAccessKeySecret); var listObjectsRequest = new ListObjectsRequest(param.sourceBucketName); listObjectsRequest.MaxKeys = 1000; string sourcePrefix = param.sourcePath + version + "/"; string prefix = param.path + version + "/"; listObjectsRequest.Prefix = sourcePrefix; var result = client.ListObjects(listObjectsRequest); foreach (var summary in result.ObjectSummaries) { var req = new CopyObjectRequest(param.sourceBucketName, summary.Key, param.bucketName, summary.Key.Replace(sourcePrefix, prefix)); client.CopyObject(req); } return 1; } } }