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);*@
                                 &nbsp;&nbsp;
 
                                 <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