| | |
| | | using zhengcaioa.Models; |
| | | using Microsoft.AspNetCore.Http; |
| | | using Newtonsoft.Json.Linq; |
| | | using System.Transactions; |
| | | using System.Runtime.InteropServices; |
| | | |
| | | namespace zhengcaioa.Controllers.AdmManagement |
| | | { |
| | |
| | | private readonly ILogger<SigninController> _logger; |
| | | private readonly IAdmSigninService _signinService; |
| | | private readonly ISysAttachmentService _sysAttachmentService; |
| | | private readonly IAdmAttendanceRuleService _attendanceRuleService; |
| | | [CheckLogin] |
| | | public SigninController(ILogger<SigninController> logger, IAdmSigninService signinService, ISysAttachmentService sysAttachmentService) |
| | | public SigninController(ILogger<SigninController> logger, IAdmSigninService signinService, ISysAttachmentService sysAttachmentService |
| | | , IAdmAttendanceRuleService attendanceRuleService) |
| | | { |
| | | _logger = logger; |
| | | _signinService = signinService; |
| | | _sysAttachmentService = sysAttachmentService; |
| | | _attendanceRuleService = attendanceRuleService; |
| | | } |
| | | |
| | | #region 考勤签到打卡 |
| | |
| | | /// <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> |
| | | /// 取得今天签到信息 |
| | |
| | | #region 考勤规则 |
| | | public IActionResult AttendanceRule() |
| | | { |
| | | AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get(""); |
| | | admAttendanceRuleDTO.admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList(""); |
| | | |
| | | ViewData.Model = admAttendanceRuleDTO; |
| | | return View(); |
| | | } |
| | | |
| | | public string SaveAttendanceRule(object leaveOff) |
| | | public string SaveAttendanceRule(AdmAttendanceRuleDTO dto) |
| | | { |
| | | ResultEntity resultEntity = new ResultEntity(); |
| | | dto.Holiday = "1"; |
| | | dto.Rest = "1"; |
| | | resultEntity.Result = false; |
| | | var curentuser = JsonConvert.DeserializeObject<PltUser>(HttpContext.Session.GetString("User")); |
| | | ViewData["curentuser"] = curentuser; |
| | | //leaveOff.RecStatus = "A"; |
| | | //if (String.IsNullOrEmpty(leaveOff.Id)) |
| | | //{ |
| | | // leaveOff.Creater = curentuser.Id; |
| | | // leaveOff.Createtime = DateTime.Now; |
| | | //} |
| | | //leaveOff.Modifier = curentuser.Id; |
| | | //leaveOff.Modifytime = DateTime.Now; |
| | | using (TransactionScope scope = new TransactionScope()) |
| | | { |
| | | dto.RecStatus = "A"; |
| | | if (String.IsNullOrEmpty(dto.Id)) |
| | | { |
| | | dto.Creater = curentuser.Id; |
| | | dto.Createtime = DateTime.Now; |
| | | } |
| | | dto.Modifier = curentuser.Id; |
| | | dto.Modifytime = DateTime.Now; |
| | | |
| | | //ResultEntity resultEntity = _signinService.SaveAskLeaveOff(leaveOff); |
| | | var ss = leaveOff; |
| | | return JsonConvert.SerializeObject(null); |
| | | resultEntity = _attendanceRuleService.save(dto); |
| | | |
| | | |
| | | _attendanceRuleService.RemoveDtlList(dto.Id); |
| | | |
| | | for (int i = 0; i < dto.holiday_s.Length; i++) |
| | | { |
| | | if(!String.IsNullOrEmpty(dto.holiday_s[i]) && !String.IsNullOrEmpty(dto.holiday_e[i])) |
| | | { |
| | | AdmAttendanceRulesDtlDTO admAttendanceRulesDtlDTO = new AdmAttendanceRulesDtlDTO(); |
| | | admAttendanceRulesDtlDTO.Pid = dto.Id; |
| | | admAttendanceRulesDtlDTO.ValueStart = dto.holiday_s[i]; |
| | | admAttendanceRulesDtlDTO.ValueEnd = dto.holiday_e[i]; |
| | | admAttendanceRulesDtlDTO.Name = "jiejiari"; |
| | | admAttendanceRulesDtlDTO.RecStatus = "A"; |
| | | admAttendanceRulesDtlDTO.Creater = curentuser.Id; |
| | | admAttendanceRulesDtlDTO.Createtime = DateTime.Now; |
| | | admAttendanceRulesDtlDTO.Modifier = admAttendanceRulesDtlDTO.Creater; |
| | | admAttendanceRulesDtlDTO.Modifytime = admAttendanceRulesDtlDTO.Createtime; |
| | | resultEntity = _attendanceRuleService.saveDtl(admAttendanceRulesDtlDTO); |
| | | } |
| | | |
| | | } |
| | | for (int i = 0; i < dto.rest_s.Length; i++) |
| | | { |
| | | if (!String.IsNullOrEmpty(dto.rest_s[i]) && !String.IsNullOrEmpty(dto.rest_e[i])) |
| | | { |
| | | AdmAttendanceRulesDtlDTO admAttendanceRulesDtlDTO = new AdmAttendanceRulesDtlDTO(); |
| | | admAttendanceRulesDtlDTO.Pid = dto.Id; |
| | | admAttendanceRulesDtlDTO.ValueStart = dto.rest_s[i]; |
| | | admAttendanceRulesDtlDTO.ValueEnd = dto.rest_e[i]; |
| | | admAttendanceRulesDtlDTO.Name = "tiaoxiuri"; |
| | | admAttendanceRulesDtlDTO.RecStatus = "A"; |
| | | admAttendanceRulesDtlDTO.Creater = curentuser.Id; |
| | | admAttendanceRulesDtlDTO.Createtime = DateTime.Now; |
| | | admAttendanceRulesDtlDTO.Modifier = admAttendanceRulesDtlDTO.Creater; |
| | | admAttendanceRulesDtlDTO.Modifytime = admAttendanceRulesDtlDTO.Createtime; |
| | | resultEntity = _attendanceRuleService.saveDtl(admAttendanceRulesDtlDTO); |
| | | } |
| | | |
| | | |
| | | } |
| | | scope.Complete(); |
| | | } |
| | | |
| | | |
| | | // var ss = leaveOff; |
| | | return JsonConvert.SerializeObject(resultEntity); |
| | | } |
| | | #endregion |
| | | } |