/// <summary> /// 保存信息 /// </summary> /// <param name="saveModel"></param> public void SaveModel(InusekeyinfoModel saveModel) { if (saveModel == null) { return; } using (var conn = SqlConnectionHelper.GetOpenConnection()) { saveModel.UseYear = saveModel.UseDate.Year; saveModel.UseMonth = saveModel.UseDate.Month; saveModel.UseDay = saveModel.UseDate.Day; if (saveModel.Id < 1) { //新增 var newId = conn.Insert(saveModel); if (newId != null) { saveModel.Id = newId.Value; } } //修改 conn.Update(saveModel); } }
/// <summary> /// 处理新上传的图片资源 /// </summary> /// <param name="idList"></param> public async Task DealNewResourceAsync(List <long> idList) { if (idList.Count < 1) { return; } var resourceList = _dataAccess.GetDailyStoryResourceModelsById(idList); if (resourceList.Count < 1) { return; } var dictServer = new SysDicService(); var inUserService = new InuseKeyInfoService(); var dictList = dictServer.GetAllDict("FtpConfig"); if (dictList == null || dictList.Count < 1) { return; } var ftpUrl = dictList.FirstOrDefault(f => f.Lable == "FtpUrl")?.Value; var ftpUserName = dictList.FirstOrDefault(f => f.Lable == "FtpUserName")?.Value; var ftpPassword = dictList.FirstOrDefault(f => f.Lable == "FtpPassword")?.Value; var ftpViewPre = dictList.FirstOrDefault(f => f.Lable == "FtpViewPre")?.Value; var tinifyCodeList = dictServer.GetAllDict("TinifyKey")?.OrderBy(f => f.Sort).ToList(); if (tinifyCodeList == null || tinifyCodeList.Count < 1) { return; } var newTime = DateTime.Now; var tiniCodeUseLimit = 500; var inUseModel = inUserService.GetModels("TinifyKey", null, newTime.Year, newTime.Month)?.FirstOrDefault(f => f.UseCount < tiniCodeUseLimit); if (inUseModel == null || tinifyCodeList.All(f => f.Value != inUseModel.KeyInfo)) { inUseModel = new InusekeyinfoModel { CreateTime = newTime, IsDel = FlagEnum.HadZore, KeyInfo = tinifyCodeList[0].Value, KeyType = "TinifyKey", UseCount = 0, UseDate = newTime }; inUserService.SaveModel(inUseModel); if (inUseModel.Id < 1) { Console.WriteLine("保存失败"); return; } } foreach (var model in tinifyCodeList) { if (model.Value == inUseModel.KeyInfo) { model.IsDel = FlagEnum.HadOne.GetHashCode(); } } Tinify.Key = inUseModel.KeyInfo; var ftpServer = new FtpUpLoadFiles(ftpUrl, ftpUserName, ftpPassword); var allowExtensions = new List <string> { ".jpeg", ".png", ".jpg" }; foreach (var f in resourceList) { //压缩图片 if (string.IsNullOrEmpty(f.Url)) { continue; } var tempPath = HostingEnvironment.MapPath(f.Url); if (string.IsNullOrEmpty(tempPath)) { continue; } var fileExtension = Path.GetExtension(tempPath)?.ToLower(); if (fileExtension == null) { continue; } var sourceData = File.ReadAllBytes(tempPath); byte[] resultData = null; //判断文件扩展名是否能够进行压缩 var couldCompress = allowExtensions.Select(x => x.ToLower()).Contains(fileExtension); if (couldCompress) { try { resultData = await Tinify.FromBuffer(sourceData).ToBuffer(); } catch (Exception e) { Console.WriteLine(e); continue; } //该code已经用完了 if (Tinify.CompressionCount >= tiniCodeUseLimit) { //变更原有的状态 inUseModel.IsDel = FlagEnum.HadOne; inUseModel.UseCount = (int)Tinify.CompressionCount; inUserService.SaveModel(inUseModel); //重新生成 var tempKey = tinifyCodeList.FirstOrDefault(r => r.IsDel == FlagEnum.HadZore.GetHashCode()); if (tempKey == null) { continue; } tempKey.IsDel = FlagEnum.HadOne.GetHashCode(); inUseModel = new InusekeyinfoModel { CreateTime = newTime, IsDel = FlagEnum.HadZore, KeyInfo = tempKey.Value, KeyType = "TinifyKey", UseCount = 0, UseDate = newTime }; inUserService.SaveModel(inUseModel); } else { inUseModel.UseCount = (int)(Tinify.CompressionCount ?? 0); inUserService.SaveModel(inUseModel); } } //上传 var indexOfName = f.Url.LastIndexOf("/", StringComparison.Ordinal); if (indexOfName < 0) { continue; } var fileName = f.Url.Substring(indexOfName); var transferFinish = ftpServer.UploadFile("", couldCompress ? resultData : sourceData, fileName); if (transferFinish) { //上传完成 f.FullUrl = ftpViewPre + fileName; SaveModel(f); } } }
/// <summary> /// 保存信息 /// </summary> /// <param name="saveModel"></param> public void SaveModel(InusekeyinfoModel saveModel) { _dataAccess.SaveModel(saveModel); }