using dccdc.BLL; using dccdc.Models; using NetSDKCS; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Web; using System.Web.Mvc; using System.Web.Security; namespace dccdc.Controllers { public class AccessController : Controller { // GET: Access public ActionResult AccessContrlResult() { ViewBag.list = new List(); List al = new List(); var AccessBll = new BLL.AccessBll(); al = AccessBll.GetAllList(); return View(al); } public ActionResult OpeningRecordResult(string doorid) { ViewBag.doorid = doorid; return View(); } public string Openingrecord(int doorid) { List al = new BLL.OpeningrecordBll().getId(doorid); List sb = new BLL.AccessBll().GetId(doorid.ToString()); string sbmc=" "; string ygid; foreach (var k in sb) { sbmc= k.sbmc; } foreach (var a in al) { a.sbmc = sbmc; ygid = a.ygid.ToString(); a.ygmc = new ERPUserBll().GetUsername(ygid); } return Newtonsoft.Json.JsonConvert.SerializeObject(new { code = 0, msg = "success", al.Count, data = al }); } public ActionResult AccessForm(String id) { ViewBag.list = new List(); List al = new List(); var AccessBll = new BLL.AccessBll(); if (id == "undefined" || id == null) { //al = AccessBll.GetId(id); AccessModel accessModel = new AccessModel(); accessModel.kmlx = 1; accessModel.ewmkf = 0; al.Add(accessModel); return View(al); } al = AccessBll.GetId(id); return View(al); } public ActionResult UpdateAccess(AccessModel model) { AccessBll accessBll = new AccessBll(); var f = false; if (model.id == 0) { model.tjsj = DateTime.Now; f = accessBll.save(model); } else { f = accessBll.Update(model); } return Json(f ? new { State = 1, Message = "操作成功!" } : new { State = 0, Message = "操作失败!" }); } public object DeleteAccess(string id) { var AccessBll = new BLL.AccessBll(); return AccessBll.DeleteAccess(id); } public string lskm(string doorid) { var AccessBll = new BLL.AccessBll(); var acc = AccessBll.GetId(doorid); if (acc.Count <= 0) { return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "查找门禁设备失败!" }); } NETClient.Init(null, IntPtr.Zero, null); IntPtr loginID = IntPtr.Zero; ushort port = 0; try { port = Convert.ToUInt16(acc[0].dkh); } catch { //MessageBox.Show("Port error(端口错误)"); return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "门禁设备端口号错误,请联系管理员设置!" }); //return ""; } NET_DEVICEINFO_Ex deviceInfo = new NET_DEVICEINFO_Ex(); loginID = NETClient.Login(acc[0].sbip, port, acc[0].yhm, acc[0].mm, EM_LOGIN_SPAC_CAP_TYPE.TCP, IntPtr.Zero, ref deviceInfo); if (loginID == IntPtr.Zero) { //MessageBox.Show(NETClient.GetLastError()); return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = NETClient.GetLastError() }); } NET_CTRL_ACCESS_OPEN openInfo = new NET_CTRL_ACCESS_OPEN(); openInfo.dwSize = (uint)Marshal.SizeOf(typeof(NET_CTRL_ACCESS_OPEN)); openInfo.nChannelID = 0; openInfo.szTargetID = IntPtr.Zero; openInfo.emOpenDoorType = EM_OPEN_DOOR_TYPE.REMOTE; IntPtr inPtr = IntPtr.Zero; try { inPtr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(NET_CTRL_ACCESS_OPEN))); Marshal.StructureToPtr(openInfo, inPtr, true); bool ret = NETClient.ControlDevice(loginID, EM_CtrlType.ACCESS_OPEN, inPtr, 10000); if (!ret) { //MessageBox.Show("Open door failed(开门失败)"); return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 0, Message = "开门失败" }); } } finally { Marshal.FreeHGlobal(inPtr); } NETClient.Logout(loginID); loginID = IntPtr.Zero; try { OpeningrecordBll openingrecordBll = new BLL.OpeningrecordBll(); OpeningrecordModel openModel = new OpeningrecordModel(); openModel.sbid = Convert.ToInt32(doorid); openModel.kmlx = 1; var user = Session["loginUser"] as Models.ERPUser; openModel.ygid = user.ID; openingrecordBll.save(openModel); } catch(Exception ex) { return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 1, Message = "开门成功!保存开门记录失败:"+ex.Message }); } return Newtonsoft.Json.JsonConvert.SerializeObject(new { State = 1, Message = "开门成功!" }); } } }