From 6f34ab1ed6f8cb79a012a30a7b687e362c6f16c2 Mon Sep 17 00:00:00 2001 From: LR-20210131IOQH\Administrator <jackcold@163.com> Date: 星期四, 10 六月 2021 19:08:41 +0800 Subject: [PATCH] 打卡判断,增加前端浏览器mac获取,当mac获取为空时不判断 --- zhengcaioa/zhengcaioa/Views/Signin/Index.cshtml | 27 +++++++- zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs | 84 +++++++++++++++++++++++++++- zhengcaioa/zhengcaioa/Startup.cs | 1 zhengcaioa/Services/AdmSigninService.cs | 1 zhengcaioa/zhengcaioa/Views/Signin/Signin.cshtml | 11 +++ 5 files changed, 114 insertions(+), 10 deletions(-) diff --git a/zhengcaioa/Services/AdmSigninService.cs b/zhengcaioa/Services/AdmSigninService.cs index bb0bf22..a9fe6b0 100644 --- a/zhengcaioa/Services/AdmSigninService.cs +++ b/zhengcaioa/Services/AdmSigninService.cs @@ -20,6 +20,7 @@ } #region 鑰冨嫟鎵撳崱 + public ResultEntity save(string id, int signinType) { ResultEntity resultEntity = new ResultEntity(); diff --git a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs index ee4d050..1fffe87 100644 --- a/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs +++ b/zhengcaioa/zhengcaioa/Controllers/AdmManagement/SigninController.cs @@ -11,6 +11,7 @@ using Microsoft.AspNetCore.Http; using Newtonsoft.Json.Linq; using System.Transactions; +using System.Runtime.InteropServices; namespace zhengcaioa.Controllers.AdmManagement { @@ -83,13 +84,90 @@ /// <param name="signinType">10鏃╀笂涓婄彮 11鏃╀笂涓嬬彮 20涓嬪崍涓婄彮 21涓嬪崍涓嬬彮 30鍔犵彮涓婄彮 31鍔犵彮涓嬬彮</param> /// <returns></returns> [CheckLogin] - public string Save(string id,int signinType) - { - ResultEntity resultEntity = _signinService.save(id, signinType); + public string Save(string id,int signinType,string mac) + { + ResultEntity resultEntity = new ResultEntity(); + resultEntity.Result = false; + try + { + if (string.IsNullOrEmpty(mac)) + { + resultEntity = _signinService.save(id, signinType); + } + else + { + var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); + if(curentuser.IpMac == mac) + { + //var mac = GetClientMAC(GetClientIP()); + + } + else + { + resultEntity.Message = "鎵撳崱鐢佃剳妫�鏌ヤ笉鍖归厤銆�"; + } + } + } + catch(Exception er) + { } return JsonConvert.SerializeObject(resultEntity); } + + [DllImport("Iphlpapi.dll")] + private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); + + [DllImport("Ws2_32.dll")] + private static extern Int32 inet_addr(string ip); + + private string GetClientIP() + { + HttpContextAccessor context = new HttpContextAccessor(); + var ip = context.HttpContext?.Connection.RemoteIpAddress.ToString(); + var mac = GetClientMAC(ip); + var str = "IP:" + ip + " 锛孧AC:" + mac; + return str; + } + + private string GetClientMAC(string ip) + { + string mac_dest = string.Empty; + try + { + Int32 ldest = inet_addr(ip); //鐩殑鍦扮殑ip + Int32 lhost = inet_addr(""); //鏈嶅姟鍣ㄧ殑ip + Int64 macinfo = new Int64(); + Int32 len = 6; + int res = SendARP(ldest, 0, ref macinfo, ref len); + string mac_src = macinfo.ToString("X"); + while (mac_src.Length < 12) + { + mac_src = mac_src.Insert(0, "0"); + } + for (int i = 0; i < 11; i++) + { + if (0 == (i % 2)) + { + if (i == 10) + { + mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2)); + } + else + { + mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2)); + } + + } + } + } + catch (Exception ex) + { + throw ex; + } + return mac_dest; + } + /// <summary> /// 鍙栧緱浠婂ぉ绛惧埌淇℃伅 /// </summary> diff --git a/zhengcaioa/zhengcaioa/Startup.cs b/zhengcaioa/zhengcaioa/Startup.cs index 444a18f..f25bbbb 100644 --- a/zhengcaioa/zhengcaioa/Startup.cs +++ b/zhengcaioa/zhengcaioa/Startup.cs @@ -62,6 +62,7 @@ options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); + services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); var connectionString = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<zhengcaioaContext>(options => diff --git a/zhengcaioa/zhengcaioa/Views/Signin/Index.cshtml b/zhengcaioa/zhengcaioa/Views/Signin/Index.cshtml index b2367a6..8d77903 100644 --- a/zhengcaioa/zhengcaioa/Views/Signin/Index.cshtml +++ b/zhengcaioa/zhengcaioa/Views/Signin/Index.cshtml @@ -125,10 +125,10 @@ <div class="clearfix layer-area" style="padding-bottom:15px;"> <label class="text-right col-sm-1 col-md-1 control-label">涓婂崍</label> - <a class="btn btn-success" href="javascript:void(0)" onclick="saveSignin(10);" style="margin-left:4px; border-radius:4px;"> + <a class="btn btn-success" href="javascript:void(0)" onclick="networkInfo()" style="margin-left:4px; border-radius:4px;"> <span class="bold">涓婄彮鎵撳崱</span> </a> - + @*saveSignin(10);*@ <a class="btn btn-success" href="javascript:void(0)" onclick="saveSignin(11);" style="margin-left:4px; border-radius:4px;"> @@ -192,6 +192,7 @@ var record; + var mac; $(function () { $.ajax({ type: "GET", @@ -208,7 +209,7 @@ } }) - + mac = networkInfo(); }); var _SigninList = function () { @@ -217,7 +218,6 @@ // 淇濆瓨鎵撳崱淇℃伅 function saveSignin(signinType ) { - $.ajax({ type: "POST", url: "/Signin/Save", @@ -225,7 +225,12 @@ global: false, data: {id: record.Id ,signinType: signinType},// $('form').serializeArray(), success: function (data) { - toastr.success("鎵撳崱鎴愬姛"); + if (data.Result) { + toastr.success("鎵撳崱鎴愬姛"); + } + else { + toastr.success("鎵撳崱澶辫触"); + } }, error: function () { toastr.error("鎵撳崱澶辫触"); @@ -242,6 +247,18 @@ return false; } + function networkInfo() { + + var wmi = new ActiveXObject("WbemScripting.SWbemLocator"); + var service = wmi.ConnectServer("."); + e = new Enumerator(service.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")); + for (; !e.atEnd(); e.moveNext()) { + var s = e.item(); + var macAddress = unescape(s.MACAddress); + } + return macAddress; + } + </script> </body> </html> \ No newline at end of file diff --git a/zhengcaioa/zhengcaioa/Views/Signin/Signin.cshtml b/zhengcaioa/zhengcaioa/Views/Signin/Signin.cshtml index 80d8bb4..15eb135 100644 --- a/zhengcaioa/zhengcaioa/Views/Signin/Signin.cshtml +++ b/zhengcaioa/zhengcaioa/Views/Signin/Signin.cshtml @@ -10,6 +10,13 @@ <script type="text/javascript"> var year = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.year))'; var month = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.month))'; + + var myDate = new Date(); + //鑾峰彇褰撳墠骞� + var searchyear = myDate.getFullYear(); + //鑾峰彇褰撳墠鏈� + var searchmonth = myDate.getMonth() + 1; + dataCol = [ { label: 'id', name: 'Id', labtype: 'txt', hidden: true }, { @@ -42,8 +49,8 @@ //?userId=" + "@ViewBag.userId"; searchCol = [ - { label: '鏌ヨ鏃堕棿:骞�', name: 'Year', labtype: 'combox', hidden: false, defultvalue: JSON.parse(year)[1].code , data: JSON.parse(year), cwidth: '5%', cccwidth: '9%' }, - { label: '鏈�', name: 'Month', labtype: 'combox', hidden: false, data: JSON.parse(month), cwidth: '1%', cccwidth: '7%' } + { label: '鏌ヨ鏃堕棿锛氬勾', name: 'Year', labtype: 'combox', hidden: false, defultvalue: searchyear , data: JSON.parse(year), cwidth: '5%', cccwidth: '9%' }, + { label: '鏈�', name: 'Month', labtype: 'combox', hidden: false, defultvalue: searchmonth ,data: JSON.parse(month), cwidth: '1%', cccwidth: '7%' } ]; -- Gitblit v1.9.1