| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using Newtonsoft.Json.Linq; |
| | | using System.Transactions; |
| | | using System.Runtime.InteropServices; |
| | | |
| | | namespace zhengcaioa.Controllers.AdmManagement |
| | | { |
| | |
| | | /// <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 + " ,MAC:" + 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> |