From d723d5c1413bb38ceb7d7404f4817e6540c3c2a0 Mon Sep 17 00:00:00 2001 From: yanjinhui <3306209981@qq.com> Date: 星期四, 12 六月 2025 16:18:33 +0800 Subject: [PATCH] 人脸识别 --- project/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs | 289 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 230 insertions(+), 59 deletions(-) diff --git a/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs b/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs index cce280e..8f4080e 100644 --- a/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs +++ b/project/WCS/WIDESEAWCS_Server/WIDESEAWCS_SystemServices/Sys_UserService.cs @@ -16,6 +16,8 @@ using WIDESEAWCS_Common; using FaceAI; using System.Runtime.InteropServices; +using System.IO; +using WIDESEAWCS_DTO.Telescopic; namespace WIDESEAWCS_SystemServices { @@ -26,14 +28,20 @@ private readonly ISys_MenuService _menuService; private readonly IRepository<Dt_FaceRecognition> _faceServer; private readonly IRepository<Dt_Loginhsy> _LoginhsyServer; - public Sys_UserService(IRepository<Dt_Loginhsy> LoginhsyServer,IRepository<Dt_FaceRecognition> faceServer, IRepository<Sys_User> repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService) : base(repository) + private readonly IRepository<Dt_Maintenance> _MainServer; + private readonly IRepository<Sys_Role> _RoleServer; + private readonly IRepository<Dt_AuthorizationRecord> _AuthorizatRecServer; + + public Sys_UserService(IRepository<Dt_AuthorizationRecord> AuthorizatRecServer,IRepository<Sys_Role> RoleServer,IRepository<Dt_Loginhsy> LoginhsyServer,IRepository<Dt_FaceRecognition> faceServer, IRepository<Sys_User> repository, IUnitOfWorkManage unitOfWorkManage, ICacheService cacheService, ISys_MenuService menuService, IRepository<Dt_Maintenance> MainServer) : base(repository) { _faceServer = faceServer; _LoginhsyServer = LoginhsyServer; _unitOfWorkManage = unitOfWorkManage; _cacheService = cacheService; _menuService = menuService; - + _MainServer = MainServer; + _RoleServer = RoleServer; + _AuthorizatRecServer = AuthorizatRecServer; } @@ -218,7 +226,8 @@ img = user.HeadImageUrl, ID = user.UserId, RoleId = user.RoleId, - + depid = disbled.Dept_Id, + IsLeader = disbled.IsLeader, }); } else @@ -252,10 +261,10 @@ //result = FaceCompare.FaceIdentifyByBuffer(image, groupIdList, userId); break; case "url": - result = FaceCompare.FaceIdentify(image, groupIdList, userId); + //result = FaceCompare.FaceIdentify(image, groupIdList, userId); break; case "token": - result = FaceCompare.FaceIdentifyByFeature(image, groupIdList, userId); + //result = FaceCompare.FaceIdentifyByFeature(image, groupIdList, userId); break; default: break; @@ -273,9 +282,11 @@ { try { - var result = FaceCompare.match(file1, file2); - string buf = Marshal.PtrToStringAnsi(result); - return buf; + //var result = FaceCompare.match(file1, file2); + //string buf = Marshal.PtrToStringAnsi(result); + //return buf; + + return string.Empty; // 杩欓噷闇�瑕佹浛鎹负瀹為檯鐨勪汉鑴告瘮瀵归�昏緫 } catch (Exception e) { @@ -521,23 +532,25 @@ { return new WebResponseContent { Status = false, Message = "璐﹀彿閲嶅锛岃閲嶆柊褰曞叆" }; } - var face = _faceServer.QueryData().Select(x => x.GroupID).FirstOrDefault(); - var baiduResult = BaiDuFaceHelper.AddUser(new BDUserInfo - { - ImgPath = addUserDTO.path, - user_id = addUserDTO.username, - group_id = face // 杩欓噷搴旇濉櫨搴︿汉鑴稿簱鍒嗙粍 - // group_id = baiduResult.result.log_id - }); + + //浜鸿劯璇嗗埆鍏堟敞閲婃帀鍚庢湡寮�鍚� + //var face = _faceServer.QueryData().Select(x => x.GroupID).FirstOrDefault(); + //var baiduResult = BaiDuFaceHelper.AddUser(new BDUserInfo + //{ + // ImgPath = addUserDTO.path, + // user_id = addUserDTO.username, + // group_id = face // 杩欓噷搴旇濉櫨搴︿汉鑴稿簱鍒嗙粍 + // // group_id = baiduResult.result.log_id + //}); - // 鍒ゆ柇鐧惧害杩斿洖鏄惁鎴愬姛 - if (baiduResult == null || baiduResult.error_code != 0) - { - return new WebResponseContent { Status = false, Data = "浜鸿劯娉ㄥ唽澶辫触锛�" + baiduResult.error_msg }; + //// 鍒ゆ柇鐧惧害杩斿洖鏄惁鎴愬姛 + //if (baiduResult == null || baiduResult.error_code != 0) + //{ + // return new WebResponseContent { Status = false, Data = "浜鸿劯娉ㄥ唽澶辫触锛�" + baiduResult.error_msg }; - } + //} // 鍒涘缓鐢ㄦ埛鏁版嵁 var sys = new Sys_User @@ -545,16 +558,31 @@ UserName = addUserDTO.username, UserTrueName = addUserDTO.usertruename, HeadImageUrl = addUserDTO.path, - Log_id = baiduResult.log_id, - Face_token = baiduResult.result.face_token, + //Log_id = baiduResult.log_id, + //Face_token = baiduResult.result.face_token, PhoneNo = addUserDTO.phoneno, Role_Id = addUserDTO.roleid, + IsLeader=addUserDTO.IsLeader, RoleName = addUserDTO.rolename, Enable = addUserDTO.enable, + Unit=addUserDTO.userunit, UserPwd = "j79rYYvCz4vdhcboB1Ausg==", + Userteam=addUserDTO.userteam, + Dept_Id=addUserDTO.dept_Id, + //CardNumber=addUserDTO.carnuber, CreateDate = DateTime.Now }; BaseDal.AddData(sys); + + //鍒涘缓Dt_Maintenance琛ㄤ腑鐨勬暟鎹� + var Main = new Dt_Maintenance + { + UserAccount = addUserDTO.username, + Roleid = addUserDTO.roleid, + IsLeader =addUserDTO.IsLeader,//鏄惁鏄粍闀� + }; + _MainServer.AddData(Main); + return new WebResponseContent { Status = true, Data = sys }; } catch (Exception ex) @@ -582,6 +610,13 @@ { return new WebResponseContent { Status = false, Message = "娌℃壘鍒拌鐢ㄦ埛" }; } + + //鏌ユ壘Dt_MaintenanceTeam涓殑鏁版嵁 + var team = _MainServer.QueryData(x => x.UserAccount == sys.UserName).FirstOrDefault(); + if (team == null) + { + return new WebResponseContent { Status = false, Message = "娌℃壘鍒拌鐢ㄦ埛鐨勭淮鎶ょ粍淇℃伅" }; + } // 2. 妫�鏌ヨ处鍙锋槸鍚︿慨鏀癸紝骞跺垽鏂槸鍚﹂噸澶�//StringComparison.OrdinalIgnoreCase锛氳〃绀哄拷鐣ュぇ灏忓啓杩涜姣旇緝锛屾瘮濡� "admin" 鍜� "ADMIN" 涔熻涓烘槸鐩哥瓑鐨� if (!string.Equals(sys.UserName ,addUserDTO.username)) @@ -599,35 +634,75 @@ sys.PhoneNo = addUserDTO.phoneno; sys.Role_Id = addUserDTO.roleid; sys.RoleName = addUserDTO.rolename; - sys.Enable = addUserDTO.enable; + //sys.CardNumber = addUserDTO.carnuber; + sys.Userteam = addUserDTO.userteam; + sys.Unit = addUserDTO.userunit; + sys.Dept_Id = addUserDTO.dept_Id; + //sys.Enable = addUserDTO.enable; + sys.IsLeader = addUserDTO.IsLeader;//鏇存柊鐢ㄦ埛琛ㄧ殑鏄惁鏄粍闀� + //濡傛灉浜鸿劯璇嗗埆娣诲姞浜嗚繖閲屽氨娉ㄩ噴鎺� + sys.HeadImageUrl = addUserDTO.path; // 4. 鏌ヨ浜鸿劯搴撳垎缁� ID var faceGroupID = _faceServer.QueryData().Select(x => x.GroupID).FirstOrDefault(); // 5. 鍒ゆ柇鏄惁闇�瑕佹洿鏂颁汉鑴镐俊鎭� - if (!string.Equals(sys.HeadImageUrl,addUserDTO.path)) // 鏈夋柊鍥剧墖鎵嶅鐞嗕汉鑴告敞鍐� - { - var baiduResult = BaiDuFaceHelper.AddUser(new BDUserInfo - { - ImgPath = addUserDTO.path, - user_id = sys.UserName, - group_id = faceGroupID - }); + //if (!string.Equals(sys.HeadImageUrl,addUserDTO.path)) // 鏈夋柊鍥剧墖鎵嶅鐞嗕汉鑴告敞鍐� + //{ + // var baiduResult = BaiDuFaceHelper.AddUser(new BDUserInfo + // { + // ImgPath = addUserDTO.path, + // user_id = sys.UserName, + // group_id = faceGroupID + // }); - // 6. 鍒ゆ柇鐧惧害 API 鏄惁鎴愬姛 - if (baiduResult == null || baiduResult.error_code != 0) - { - return new WebResponseContent { Status = false, Message = "浜鸿劯鏇存柊澶辫触锛�" + baiduResult.error_msg }; - } + // // 6. 鍒ゆ柇鐧惧害 API 鏄惁鎴愬姛 + // if (baiduResult == null || baiduResult.error_code != 0) + // { + // return new WebResponseContent { Status = false, Message = "浜鸿劯鏇存柊澶辫触锛�" + baiduResult.error_msg }; + // } - // 7. 鏇存柊浜鸿劯鐩稿叧瀛楁 - sys.Log_id = baiduResult.log_id; - sys.HeadImageUrl = addUserDTO.path; - sys.Face_token = baiduResult.result.face_token; - } + // // 7. 鏇存柊浜鸿劯鐩稿叧瀛楁 + // sys.Log_id = baiduResult.log_id; + // sys.HeadImageUrl = addUserDTO.path; + // sys.Face_token = baiduResult.result.face_token; + //} // 8. 鏇存柊鏁版嵁搴� + + //鏇存柊Dt_Maintenance琛ㄤ腑鐨勬暟鎹拰user琛ㄤ腑淇敼鐨勪竴鏍� + team.UserAccount = addUserDTO.username;//璐﹀彿 + team.Roleid = addUserDTO.roleid;//鏇存柊鏉冮檺 + team.IsLeader = addUserDTO.IsLeader; + + var existAuthority = userList.FirstOrDefault(a => a.UserName == addUserDTO.username); + // 鍏堢紦瀛樻棫鐨� enable 鍊� + var oldEnable = sys.Enable; + + // 淇敼 enable + sys.Enable = addUserDTO.enable; + + // 鐒跺悗姣旇緝鏃у�煎拰鏂板�� + if (oldEnable != addUserDTO.enable) + { + var authority = new Dt_AuthorizationRecord + { + Account = addUserDTO.username, + UserName = addUserDTO.usertruename, + UerUnit = addUserDTO.userunit, + UserTeam = addUserDTO.userteam, + EnableTime = addUserDTO.enable == 1 ? DateTime.Now : (DateTime?)null, //鍚敤 + DisableTime = addUserDTO.enable == 0 ? DateTime.Now : (DateTime?)null,//涓嶅惎鐢� + + }; + + + _AuthorizatRecServer.AddData(authority); + } + + BaseDal.UpdateData(sys); + _MainServer.UpdateData(team); return new WebResponseContent { Status = true, Data = sys }; } @@ -652,30 +727,32 @@ { // 2. 鏌ヨ浜鸿劯搴撳垎缁� ID - var faceGroupID = _faceServer.QueryData().Select(x => x.GroupID).FirstOrDefault(); + //var faceGroupID = _faceServer.QueryData().Select(x => x.GroupID).FirstOrDefault(); - WIDESEAWCS_Common.DeleteUserImg deleteUserImg = new WIDESEAWCS_Common.DeleteUserImg(); - deleteUserImg.group_id = faceGroupID; - deleteUserImg.user_id = account; + //WIDESEAWCS_Common.DeleteUserImg deleteUserImg = new WIDESEAWCS_Common.DeleteUserImg(); + //deleteUserImg.group_id = faceGroupID; + //deleteUserImg.user_id = account; - string apiResult = BaiDuFaceHelper.DeleteUser(deleteUserImg);//鍙缁檛oken鍜宭og_id + //string apiResult = BaiDuFaceHelper.DeleteUser(deleteUserImg);//鍙缁檛oken鍜宭og_id - // 2. 瑙f瀽杩斿洖缁撴灉锛屽垽鏂垹闄ゆ槸鍚︽垚鍔� - dynamic resultObj = JsonConvert.DeserializeObject(apiResult); - if (resultObj.error_code == 0) - { + //// 2. 瑙f瀽杩斿洖缁撴灉锛屽垽鏂垹闄ゆ槸鍚︽垚鍔� + //dynamic resultObj = JsonConvert.DeserializeObject(apiResult); + //if (resultObj.error_code == 0) + //{ // 鐧惧害鍒犻櫎鎴愬姛鍚庯紝鍒犻櫎鏁版嵁搴撲腑鐨勭敤鎴� - var user = BaseDal.QueryData(x => x.UserName == account); - if (user != null) + var user = BaseDal.QueryData(x => x.UserName == account).FirstOrDefault(); + var main = _MainServer.QueryData(x => x.UserAccount == account).FirstOrDefault(); + if (user != null&&main!=null) { BaseDal.DeleteData(user); - } + _MainServer.DeleteData(main); + } return WebResponseContent.Instance.OK("鐢ㄦ埛鍒犻櫎鎴愬姛"); - } - else - { - return WebResponseContent.Instance.Error("鐧惧害 API 鍒犻櫎澶辫触锛�" + resultObj.error_msg); - } + //} + //else + //{ + // return WebResponseContent.Instance.Error("鐧惧害 API 鍒犻櫎澶辫触锛�" + resultObj.error_msg); + //} } catch (Exception ex) { @@ -848,5 +925,99 @@ return new WebResponseContent { Status = false, Message="澶辫触"}; } } + + + /// <summary> + /// 琛ㄨ繛鎺ヨ鑹茶〃锛屽睍绀烘暟鎹� + /// </summary> + /// <returns></returns> + public WebResponseContent YShowUserList(PaginationDTO pagination) + { + try + { + int totalCount = 0; + var Role = _RoleServer.Db.Queryable<Sys_Role>(); + var query = Role.InnerJoin<Sys_User>((a, b) => a.RoleId == b.Role_Id); + + //鎼滅储鍏抽敭瀛� + if (!string.IsNullOrEmpty(pagination.searchKeyword)) + { + query = query.Where((a, b) => + b.UserName.Contains(pagination.searchKeyword) || + b.UserTrueName.Contains(pagination.searchKeyword) || + b.PhoneNo.Contains(pagination.searchKeyword) || + a.RoleName.Contains(pagination.searchKeyword)); + } + //鏃堕棿鏌ヨ + if (pagination.startDate.HasValue && pagination.endDate.HasValue) + { + query = query.Where((a, b) => b.CreateDate >= pagination.startDate.Value && b.CreateDate <= pagination.endDate.Value); + } + //鎺掑簭 + if (!string.IsNullOrEmpty(pagination.sortField)) + { + var isAcs = pagination.sortOrder?.ToLower() == "asc"; + query = pagination.sortField.ToLower() switch + { + + + "CreateDate" => isAcs ? query.OrderBy((a, b) => b.CreateDate) : query.OrderByDescending((a, b) => b.CreateDate), + + _ => query.OrderByDescending((a, b) => b.Creater) // 榛樿鎸夊垱寤烘椂闂撮檷搴� + }; + + } + else + { + query = query.OrderByDescending((a, b) => b.Creater); + } + var reslut = query.Select((a, b) => new + { + b.User_Id, + b.UserName, + b.UserTrueName, + b.Unit, + b.Userteam, + b.Role_Id, + b.IsLeader, + //b.RoleName, + b.CardNumber, + b.PhoneNo, + b.UserPwd, + b.DeptName, + b.Dept_Id, + b.Email, + b.Enable, + b.Gender, + b.HeadImageUrl, + b.Address, + b.CreateDate, + b.Creater, + a.RoleName, + + }).ToPageList(pagination.pageIndex, pagination.pageSize, ref totalCount); + + + return new WebResponseContent + { + Status = true, + Data = new + { + totalCount = totalCount, + PageIndex = pagination.pageIndex, + PageSize = pagination.pageSize, + Items = reslut + } + }; + + } + catch (Exception ex) + { + + return new WebResponseContent { Status = false, Message = ex.Message }; + } + } + + } } -- Gitblit v1.9.3