StableVersion4.3/APPUpgradeAPI/Controllers/UpgradePackageController.cs

266 lines
10 KiB
C#

using APPUpgradeAPI.Models;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace APPUpgradeAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class UpgradePackageController : Controller
{
public SqlSugarClient db = BaseDB.GetClient();
/// <summary>
/// 新增
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPost]
public JsonResult Add(UpgradePackage info = null)
{
if (info == null)
{
return Json("参数为空");
}
var result = db.Insertable(info).IgnoreColumns(it => new { it.ID }).IgnoreColumns(ignoreNullColumn: true).ExecuteCommand() == 1 ? true : false;
return Json(result);
}
/// <summary>
/// 修改
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPost]
[Route("Update")]
public JsonResult Update(UpgradePackage info = null)
{
if (info == null)
{
return Json("参数为空");
}
var result = db.Updateable(info).IgnoreColumns(it => new { it.ID }).IgnoreColumns(ignoreAllNullColumns: true).Where(it => it.ID == info.ID).ExecuteCommand() == 1 ? true : false;
return Json(result);
}
/// <summary>
/// 查询
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpGet]
[Route("GET")]
public JsonResult Get(string ID = null)
{
if (ID == null)
{
return Json("参数为空");
}
var result = db.Queryable<UpgradePackage>().Where(it => it.ID == ID).ToList();
return Json(result);
}
/// <summary>
/// 查询列表
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("GetPageList")]
public JsonResult GetPageList(int pageIndex, int pageSize, string APPID)
{
int total = 0;
List<UpgradePackage> data = db.Queryable<UpgradePackage>().Where(it => it.DeleteFlag == "0" && it.APPID == APPID).OrderBy(u => u.ID, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref total);
TableModel<UpgradePackage> t = new TableModel<UpgradePackage>();
t.Code = 0;
t.PageCount = data.Count;
t.TotalNumber = total;
t.Data = data;
t.Msg = "成功";
return Json(t);
}
/// <summary>
/// 查询更新日志
/// </summary>
/// <param name="APPID"></param>
/// <returns></returns>
[HttpGet]
[Route("GetUpdateLog")]
public JsonResult GetUpdateLog(string BaseUrl)
{
if (BaseUrl == null)
{
return Json("参数为空");
}
var result = db.Queryable<APPInfo, UpgradePackage>((a, u) => new JoinQueryInfos(JoinType.Right, a.APPID == u.APPID)).Where((a, u) => a.BaseURL == BaseUrl && u.DeleteFlag == "0" && a.DeleteFlag == "0").Select((a, u) => new UpgradePackage
{
ID = u.ID,
APPID = u.APPID,
UpdateTitle = u.UpdateTitle,
UpdateLog = u.UpdateLog,
UpgradePackageURL = u.UpgradePackageURL,
UploadTime = Convert.ToDateTime(u.UploadTime).ToString("yyyy-MM-dd HH:mm:ss"),
APPType = u.APPType,
Platform = u.Platform,
VersionNumber = u.VersionNumber,
APPState = u.APPState,
Delivery = u.Delivery,
DeleteFlag = u.DeleteFlag
}).MergeTable().OrderBy(u => u.ID, OrderByType.Desc).ToList();
return Json(result);
}
[HttpGet]
[Route("CheckUpdate")]
public JsonResult CheckUpdate(string VersionNumber, string BaseURL)
{
if (string.IsNullOrEmpty(VersionNumber) && string.IsNullOrEmpty(BaseURL))
{
return Json("参数为空");
}
var result = db.Queryable<APPInfo, UpgradePackage>((a, p) => new JoinQueryInfos(
JoinType.Inner, a.APPID == p.APPID))
.Where((a, p) => a.BaseURL == BaseURL && p.DeleteFlag == "0")
.OrderBy((a, p) => p.ID, OrderByType.Desc)
.Select((a, p) => new APPInfoAndUpgradePackage
{
APPID = a.APPID,
BaseURL = a.BaseURL,
APPName = a.APPName,
APPDescribe = a.APPDescribe,
CreationTime = a.CreationTime,
ID = p.ID,
UpdateTitle = p.UpdateTitle,
UpdateLog = p.UpdateLog,
APPType = p.APPType,
Platform = p.Platform,
VersionNumber = p.VersionNumber,
APPState = p.APPState,
UploadTime = p.UploadTime,
UpgradePackageURL = p.UpgradePackageURL,
DeleteFlag = p.DeleteFlag,
Delivery = p.Delivery,
}).First();
if (result == null)
{
return Json(true);
}
Version v1 = new Version(VersionNumber);
Version v2 = new Version(result.VersionNumber);
if (v1 == v2)
{
return Json(true);
}
else
{
return Json(result);
}
//return Json(result);
}
/// <summary>
/// 删除
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
[HttpPost]
[Route("Delete")]
public JsonResult Delete(UpgradePackage info = null)
{
if (info == null)
{
return Json("参数为空");
}
var result = db.Updateable<UpgradePackage>().SetColumns(it => new UpgradePackage() { DeleteFlag = "1" }).Where(it => it.ID == info.ID).ExecuteCommand(); ;
return Json(result);
}
/// <summary>
/// 多文件上传
/// </summary>
/// <param name="formCollection">表单集合值</param>
/// <param name="env"></param>
/// <returns></returns>
[HttpPost]
[Route("MultiFileUpload")]
public JsonResult MultiFileUpload(IFormCollection formCollection, [FromServices] IWebHostEnvironment env)
{
//var uploadFileRequestList = new List<UpgradePackage>();
string completeFilePath = "";
try
{
//FormCollection转化为FormFileCollection
var files = (FormFileCollection)formCollection.Files;
if (files.Any())
{
foreach (var file in files)
{
var filePath = $"\\UpgradeFile\\";
var webRootPath = AppDomain.CurrentDomain.BaseDirectory + filePath;//运行目录
//var webRootPath = env.WebRootPath + filePath;//文件根目录
//创建每日存储文件夹
if (!Directory.Exists(webRootPath))
{
Directory.CreateDirectory(webRootPath);
}
//文件后缀
var fileExtension = Path.GetExtension(file.FileName);//获取文件格式,拓展名
//判断文件大小
var fileSize = file.Length;
if (fileSize > 1024 * 1024 * 300) //10M TODO:(1mb=1024X1024b)
{
return new JsonResult(new { isSuccess = false, returnMsg = "文件大小超过限制", res = completeFilePath });
}
//保存的文件名称(以名称和保存时间命名)
var saveName = file.FileName.Substring(0, file.FileName.LastIndexOf('.')) + fileExtension;
//文件保存
using (var fs = System.IO.File.Create(webRootPath + saveName))
{
file.CopyTo(fs);
fs.Flush();
//完整的文件路径
completeFilePath = Path.Combine(webRootPath, saveName);
}
//uploadFileRequestList.Add(new UpgradePackage
//{
// APPID = upgradePackage.APPID,
// UpdateTitle = upgradePackage.UpdateTitle,
// UpdateLog = upgradePackage.UpdateLog,
// APPType = upgradePackage.APPType,
// Platform = upgradePackage.Platform,
// VersionNumber = upgradePackage.VersionNumber,
// APPState = upgradePackage.APPState,
// UploadTime = upgradePackage.UploadTime,
// UpgradePackageURL = completeFilePath,
// DeleteFlag = upgradePackage.DeleteFlag
//});
//db.Insertable<UpgradePackage>(uploadFileRequestList).ExecuteCommand();
}
return new JsonResult(new { isSuccess = true, returnMsg = "上传成功", res = completeFilePath });
}
else
{
return new JsonResult(new { isSuccess = false, resultMsg = "上传失败,未检测上传的文件信息~" });
}
}
catch (System.Exception ex)
{
return new JsonResult(new { isSuccess = false, resultMsg = "文件保存失败,异常信息为:" + ex.Message });
}
}
}
}