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_DTO.Inbound;
|
using WIDESEA_IInboundService;
|
using WIDESEA_IOutboundService;
|
using WIDESEA_ITaskInfoService;
|
using WIDESEA_Model.Models;
|
|
namespace WIDESEA_WMSServer.Controllers
|
{
|
/// <summary>
|
/// PDA 控制器 - 提供PDA应用下载、上传和版本检查功能
|
/// </summary>
|
[Route("api/PDA")]
|
[Authorize, ApiController]
|
public class PDAController : Controller
|
{
|
private readonly IInboundService _inboundService;
|
private readonly IOutboundService _outboundService;
|
private readonly ITaskService _taskService;
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public PDAController(ITaskService taskService, IInboundService inboundService, IOutboundService outboundService)
|
{
|
_inboundService = inboundService;
|
_outboundService = outboundService;
|
_taskService = taskService;
|
}
|
|
/// <summary>
|
/// 下载PDA应用安装包
|
/// </summary>
|
/// <returns>APK文件或错误信息</returns>
|
[HttpPost, HttpGet, Route("DownLoadApp"), AllowAnonymous]
|
public virtual ActionResult DownLoadApp()
|
{
|
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))
|
{
|
return Json(WebResponseContent.Instance.Error("未找到安装包"));
|
}
|
|
byte[] fileBytes = System.IO.File.ReadAllBytes(path);
|
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, appFileName);
|
}
|
|
/// <summary>
|
/// 上传PDA应用安装包
|
/// </summary>
|
/// <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 = false, Message = "请选择上传的文件" };
|
}
|
|
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}");
|
}
|
}
|
|
/// <summary>
|
/// 获取PDA版本号并检查是否需要更新
|
/// </summary>
|
/// <param name="version">当前PDA版本号</param>
|
/// <returns>是否需要更新的标志</returns>
|
[HttpPost, HttpGet, Route("GetPDAVersion"), AllowAnonymous]
|
public WebResponseContent GetPDAVersion(string version)
|
{
|
try
|
{
|
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}");
|
}
|
}
|
}
|
}
|