| | |
| | | using Microsoft.AspNetCore.Authorization; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.IO; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseController; |
| | | using WIDESEA_Core.Helper; |
| | |
| | | using WIDESEA_IInboundService; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_ITaskInfoService; |
| | | using System.IO; |
| | | using WIDESEA_Model.Models; |
| | | using System; |
| | | |
| | | namespace WIDESEA_WMSServer.Controllers |
| | | { |
| | | /// <summary> |
| | | /// PDA |
| | | /// PDA 控制器 - 提供PDA应用下载、上传和版本检查功能 |
| | | /// </summary> |
| | | [Route("api/PDA")] |
| | | [Authorize, ApiController] |
| | |
| | | private readonly IOutboundService _outboundService; |
| | | private readonly ITaskService _taskService; |
| | | |
| | | /// <summary> |
| | | /// 构造函数 |
| | | /// </summary> |
| | | public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService) |
| | | { |
| | | _inboundService = inboundService; |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 下载PDA |
| | | /// 下载PDA应用安装包 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | /// <returns>APK文件或错误信息</returns> |
| | | [HttpPost, HttpGet, Route("DownLoadApp"), AllowAnonymous] |
| | | public virtual ActionResult DownLoadApp() |
| | | { |
| | | string path = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/"; |
| | | if (!Directory.Exists(path)) Directory.CreateDirectory(path); |
| | | path += "WMS-PDA.apk"; |
| | | const string appDirectory = "Upload/App/"; |
| | | const string appFileName = "WMS-PDA.apk"; |
| | | string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appDirectory, appFileName); |
| | | |
| | | if (System.IO.File.Exists(path)) |
| | | if (!System.IO.File.Exists(path)) |
| | | { |
| | | byte[] fileBytes = System.IO.File.ReadAllBytes(path); |
| | | return File( |
| | | fileBytes, |
| | | System.Net.Mime.MediaTypeNames.Application.Octet, |
| | | System.IO.Path.GetFileName(path) |
| | | ); |
| | | } |
| | | else |
| | | { |
| | | return Json(WebResponseContent.Instance.Error($"未找到安装包")); |
| | | return Json(WebResponseContent.Instance.Error("未找到安装包")); |
| | | } |
| | | |
| | | byte[] fileBytes = System.IO.File.ReadAllBytes(path); |
| | | return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, appFileName); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 上传PDA |
| | | /// 上传PDA应用安装包 |
| | | /// </summary> |
| | | /// <param name="fileInput"></param> |
| | | /// <returns></returns> |
| | | /// <param name="fileInput">上传的文件</param> |
| | | /// <returns>上传结果</returns> |
| | | [HttpPost, HttpGet, Route("UploadApp"), AllowAnonymous] |
| | | [Consumes("multipart/form-data")] |
| | | public WebResponseContent UploadApp(IEnumerable<IFormFile> fileInput) |
| | |
| | | try |
| | | { |
| | | List<IFormFile> files = fileInput.ToList(); |
| | | if (files == null || files.Count() == 0) |
| | | return new WebResponseContent { Status = true, Message = "请选择上传的文件" }; |
| | | IFormFile formFile = files[0]; |
| | | string dicPath = $"{AppDomain.CurrentDomain.BaseDirectory}Upload/App/"; |
| | | if (!Directory.Exists(dicPath)) Directory.CreateDirectory(dicPath); |
| | | string path = $"{dicPath}WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk"; |
| | | dicPath = $"{dicPath}WMS-PDA.apk"; |
| | | if (System.IO.File.Exists(dicPath)) |
| | | System.IO.File.Move(dicPath, path); |
| | | if (files == null || files.Count == 0) |
| | | { |
| | | return new WebResponseContent { Status = false, Message = "请选择上传的文件" }; |
| | | } |
| | | |
| | | using (var stream = new FileStream(dicPath, FileMode.Create)) |
| | | IFormFile formFile = files[0]; |
| | | const string appDirectory = "Upload/App/"; |
| | | const string appFileName = "WMS-PDA.apk"; |
| | | string directoryPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, appDirectory); |
| | | |
| | | if (!Directory.Exists(directoryPath)) |
| | | { |
| | | Directory.CreateDirectory(directoryPath); |
| | | } |
| | | |
| | | string backupPath = Path.Combine(directoryPath, $"WMS-PDA{DateTime.Now:yyyyMMddhhmmss}.apk"); |
| | | string targetPath = Path.Combine(directoryPath, appFileName); |
| | | |
| | | // 备份现有文件 |
| | | if (System.IO.File.Exists(targetPath)) |
| | | { |
| | | System.IO.File.Move(targetPath, backupPath); |
| | | } |
| | | |
| | | // 保存新文件 |
| | | using (var stream = new FileStream(targetPath, FileMode.Create)) |
| | | { |
| | | formFile.CopyTo(stream); |
| | | } |
| | | |
| | | return new WebResponseContent { Status = true, Message = "文件上传成功" }; |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | return WebResponseContent.Instance.Error($"文件上传失败:{ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取PDA版本号并检查是否需要更新 |
| | | /// </summary> |
| | | /// <param name="version">当前PDA版本号</param> |
| | | /// <returns>是否需要更新的标志</returns> |
| | | [HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous] |
| | | public WebResponseContent GetPDAVersion(string version) |
| | | { |
| | | try |
| | | { |
| | | string versionP = AppSettings.Get("PDAVersion"); |
| | | if (Convert.ToInt32(versionP) > Convert.ToInt32(version)) |
| | | return WebResponseContent.Instance.OK(data: true); |
| | | else return WebResponseContent.Instance.OK(data: false); |
| | | if (string.IsNullOrEmpty(version)) |
| | | { |
| | | return WebResponseContent.Instance.Error("版本号不能为空"); |
| | | } |
| | | |
| | | string serverVersion = AppSettings.Get("PDAVersion"); |
| | | if (int.TryParse(serverVersion, out int serverVersionNum) && int.TryParse(version, out int clientVersionNum)) |
| | | { |
| | | bool needUpdate = serverVersionNum > clientVersionNum; |
| | | return WebResponseContent.Instance.OK(data: needUpdate); |
| | | } |
| | | |
| | | return WebResponseContent.Instance.Error("版本号格式错误"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | return WebResponseContent.Instance.Error($"版本检查失败:{ex.Message}"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |