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