123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- using log4net;
- using Microsoft.AspNetCore.Authorization;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Mvc;
- using Ropin.Inspection.Api.Common;
- using Ropin.Inspection.Model.SearchModel.LGS;
- using Ropin.Inspection.Model.ViewModel.LGS;
- using Ropin.Inspection.Model;
- using Ropin.Inspection.Service.LGS.Interface;
- using System.Threading.Tasks;
- using System;
- using System.IO;
- using System.Security.Claims;
- using Ropin.Inspection.Common.Accessor.Interface;
- namespace Ropin.Inspection.Api.Controllers.LGS
- {
- public class LargeScreenController : BaseController
- {
- private readonly ILGSLargeScreenService _repository;
- private readonly IClaimsAccessor _claims;
- private static readonly ILog log = LogManager.GetLogger(typeof(LargeScreenController));
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="repository"></param>
- public LargeScreenController(ILGSLargeScreenService repository, IClaimsAccessor claims)
- {
- _repository = repository;
- _claims = claims;
- }
- /// <summary>
- /// 创建大屏
- /// </summary>
- /// <param name="content"></param>
- /// <returns></returns>
- [HttpPost("CreateLargeScreenAsync")]
- public async Task<ApiResult> CreateLargeScreenAsync(LargeScreenViewModel content)
- {
- if (content == null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- await _repository.CreateOneAsync(content);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 删除大屏
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- [HttpDelete("DeleteLargeScreenAsync/{id}")]
- public async Task<ApiResult> DeleteLargeScreenAsync(string id)
- {
- if (string.IsNullOrEmpty(id))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- await _repository.DeleteAsync(id);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 更新大屏
- /// </summary>
- /// <param name="id"></param>
- /// <param name="updateModel"></param>
- /// <returns></returns>
- [HttpPut("UpdateLargeScreenAsync/{id}")]
- [AllowAnonymous]
- public async Task<ApiResult> UpdateLargeScreenAsync(string id, LargeScreenViewModel updateModel)
- {
- if (string.IsNullOrEmpty(id))
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- try
- {
- await _repository.UpdateAsync(updateModel, id);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- return new ApiResult(ReturnCode.Success);
- }
- /// <summary>
- /// 获取大屏列表
- /// </summary>
- /// <returns></returns>
- [HttpPost("GetLargeScreenAsync")]
- [AllowAnonymous]
- public async Task<ApiResult> GetLargeScreenAsync(LargeScreenSearch searchModel)
- {
- if (searchModel == null)
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- var contentList = await _repository.GetConditionAsync(searchModel);
- return new ApiResult<PagesModel<LargeScreenViewModel>>(new PagesModel<LargeScreenViewModel>(contentList, searchModel));
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 通过id获取大屏详情
- /// </summary>
- /// <returns></returns>
- [HttpGet("GetLargeScreenByIDAsync")]
- [AllowAnonymous]
- public async Task<ApiResult> GetLargeScreenByIDAsync(string Id)
- {
- if (string.IsNullOrEmpty(Id))
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- LargeScreenViewModel data = await _repository.GetByIdAsync(Id);
- return new ApiResult<LargeScreenViewModel>(data);
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError, ex.Message);
- }
- }
- /// <summary>
- /// 保存大屏缩略图
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- [HttpPost("SaveLargeScreenImage")]
- public async Task<ApiResult> SaveLargeScreenImage(LargeScreenImageModel model)
- {
- if (model==null||string.IsNullOrEmpty(model.Id))
- {
- return new ApiResult(ReturnCode.ArgsError);
- }
- try
- {
- LargeScreenViewModel data = await _repository.GetByIdAsync(model.Id);
- if (data == null)
- {
- return new ApiResult(ReturnCode.DataError,"获取数据失败");
- }
- string fileName = model.Id + ".png";
- var dateDirectory = DateTime.Now.ToString("yyyyMM");
- var relativePath = Path.Combine("wwwroot/uploads/images/", _claims.Linsence + "/" + dateDirectory);
- var directoryPath = Path.Combine(Directory.GetCurrentDirectory(), relativePath);
- var fileRelativePath = Path.Combine(relativePath + "/", fileName);
- if (!Directory.Exists(directoryPath))
- {
- Directory.CreateDirectory(directoryPath);
- }
- var filePath = Path.Combine(directoryPath + "/", fileName);
- // 移除可能存在的 Base64 数据前缀
- if (model.base64Image.StartsWith("data:image", StringComparison.OrdinalIgnoreCase))
- {
- int commaIndex = model.base64Image.IndexOf(',');
- if (commaIndex > 0)
- {
- model.base64Image = model.base64Image.Substring(commaIndex + 1);
- }
- }
- // 将 Base64 字符串解码为字节数组
- byte[] imageBytes = Convert.FromBase64String(model.base64Image);
- // 将字节数组写入文件
- System.IO.File.WriteAllBytes(filePath, imageBytes);
- bool result = await _repository.UpdateImageAsync("/"+ fileRelativePath,model.Id);
- if (result)
- {
- return new ApiResult(ReturnCode.Success);
- }
- else
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- }
- catch (Exception ex)
- {
- return new ApiResult(ReturnCode.GeneralError);
- }
- }
- }
- }
|