using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using MadRunFabric.Common; using MadRunFabric.Model.PLCAutomationApi; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using MongoDB.Driver; using PLCAutomationApi.IRepositories; namespace PLCAutomationApi.Controllers { /// /// 访问接口ip管理 /// [Authorize] [ApiVersion("6.0")] [Produces("application/json")] [Route("api/[controller]")] public class PLCIPManageController : BaseController { private readonly ILogger _logger; private readonly IPLC_IPManageRepository _ipmanageRepository; public PLCIPManageController(ILogger logger, IPLC_IPManageRepository ipmanageRepository) { _logger = logger; _ipmanageRepository = ipmanageRepository; } public IActionResult Index() { return View(); } //[Authorize] [HttpGet("getlistbypage")] public async Task GetListsByPageAsync (string ipaddress, string stime, string etime, string macaddress, int pageindex = 1, int pagesize = 10) { try { //排序字段 var sort = Builders.Sort.Descending("createtime"); //根据条件查询集合 var flist = new List>(); flist.Add(Builders.Filter.Eq("deleteflag", 0)); if (!string.IsNullOrWhiteSpace(ipaddress)) flist.Add(Builders.Filter.Where(s => s.ipaddress .Equals(ipaddress))); if (!string.IsNullOrWhiteSpace(macaddress)) flist.Add(Builders.Filter.Where(s => s.macaddress .Equals(macaddress))); if (!string.IsNullOrWhiteSpace(stime)) { DateTime dt2 = new DateTime(); if (DateTime.TryParse(stime.Trim(), out dt2)) flist.Add(Builders.Filter.Gt("createtime", stime + " 00:00:00")); } if (!string.IsNullOrWhiteSpace(etime)) { DateTime dt2 = new DateTime(); if (DateTime.TryParse(etime.Trim(), out dt2)) flist.Add(Builders.Filter.Lt("createtime", etime + " 23:59:59")); } var filter = Builders.Filter.And(flist); var list = await _ipmanageRepository.GetByPage(filter, pageindex, pagesize, sort); var count = await _ipmanageRepository.CountAsync(filter); var obj = new { state = "success", message = "根据条件获取分页数据成功", rows = list, total = count, }; return Content(obj.ToJson()); } catch (Exception ex) { _logger.LogError(ex, "根据条件获取分页数据异常"); return Error("根据条件获取分页数据异常"); } } /// /// 添加信息 /// /// /// [HttpPost("add")] public async Task AddAsync(string ipaddress,string macaddress) { if (string.IsNullOrEmpty(ipaddress)) return Error("ip地址不能为空"); if (string.IsNullOrEmpty(macaddress)) return Error("mac地址不能为空"); long n = await _ipmanageRepository.Count(x => x.ipaddress == ipaddress && x.macaddress == macaddress&&x.deleteflag ==0); if (n > 0) return Error("此ip信息已存在"); var model = new PLC_IPManage(); model.ipaddress = ipaddress; model.macaddress = macaddress; model.createtime = DateTime .Now; model.forbidread = 0; model.forbidwrite = 0; model.deleteflag = 0; bool b = await _ipmanageRepository.Add(model); if (b) return Success("添加成功"); return Error("添加失败"); } [HttpPost("delete")] public async Task Remove(string[] ids) { //使用逻辑删除 //物理删除的数据无法恢复 var res = 0; if (ids != null && ids.Length > 0) { foreach (var item in ids) { var ml = await _ipmanageRepository.GetSingle(item); ml.deleteflag = 1; if (await _ipmanageRepository.Update(ml)) res += 1; } if (res == ids.Length) return Success("删除成功"); else if (res > 0 && res < ids.Length) return Error("部分删除失败,请查看后重新操作"); else return Error("删除失败,请查看后重新操作"); } else return Error("请选择要删除的记录"); } [HttpPost("update")] public async Task UpdateData(string id, int? forbidread, int? forbidwrite,int? deleteflag)//(string dataname, string datavalue,string inputdate) { try { PLC_IPManage comodel = new PLC_IPManage(); var list = new List>(); var filterBuilder = Builders.Filter; list.Add(filterBuilder.Eq("id", id)); var filter = Builders.Filter.And(list); var count = await _ipmanageRepository.CountAsync(filter); if (count > 0) { var dModel = await _ipmanageRepository.GetSingle(s => s.id.Equals(id) & s.deleteflag == 0, null); if (forbidread != null) { dModel.forbidread = (int)forbidread; } if (forbidwrite != null) { dModel.forbidwrite = (int)forbidwrite; } if (deleteflag != null) { dModel.deleteflag = (int)deleteflag; } var tt = await _ipmanageRepository.Update(dModel); if (tt) return Success("修改数据成功"); } return Error("修改数据失败"); } catch (Exception ex) { _logger.LogError(ex, "修改数据异常"); return Error("修改数据失败"); } } [HttpGet("getsingle")] public async Task GetSingleAsync(string id) { if (id != null && id.Trim() != "") { try { var dModel = await _ipmanageRepository.GetSingle(id.Trim()); if (dModel != null) { return Success("获取参数成功", dModel); } else { return Error("获取参数失败"); } } catch (Exception ex) { _logger.LogError(ex, "获取参数实体异常"); return Error("获取参数失败"); } } else { return Error("获取参数失败"); } } [HttpPost("getauthority")] public async Task GetAuthority(string ipaddress, string macaddress) { try { PLC_IPManage comodel = new PLC_IPManage(); var list = new List>(); var filterBuilder = Builders.Filter; list.Add(filterBuilder.Eq("ipaddress", ipaddress)); list.Add(filterBuilder.Eq("macaddress", macaddress)); var filter = Builders.Filter.And(list); var count = await _ipmanageRepository.CountAsync(filter); if (count > 0) { var dModel = await _ipmanageRepository.GetSingle(s => s.ipaddress.Equals(ipaddress) & s.macaddress == macaddress & s.deleteflag == 0, null); var forbidread = dModel.forbidread; var forbidwrite = dModel.forbidwrite; //var tt = await _ipmanageRepository.Update(dModel); var obj = new { state = "success", message = "根据条件获取权限成功", forbidread, forbidwrite }; return Content(obj.ToJson()); } return Error("获取失败"); } catch (Exception ex) { _logger.LogError(ex, "获取权限数据异常"); return Error("获取权限数据失败"); } } } }