158 lines
5.8 KiB
C#
158 lines
5.8 KiB
C#
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<string>();
|
|
List<AccessModel> al = new List<AccessModel>();
|
|
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<OpeningrecordModel> al = new BLL.OpeningrecordBll().getId(doorid);
|
|
List <AccessModel> 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<string>();
|
|
List<AccessModel> al = new List<AccessModel>();
|
|
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 = "开门成功!" });
|
|
}
|
|
}
|
|
|
|
} |