From 8f143507d4f1e38a5cc63348ea23a1aeb9182006 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期二, 01 四月 2025 17:02:51 +0800
Subject: [PATCH] Merge branch 'qy0227' of http://115.159.85.185:8098/r/MeiXinLaiRui/NiuJuKongZhi into qy0227
---
项目代码/WIDESEAWCS_Server 正式/WIDESEAWCS_SystemServices/Sys_UserService.cs | 463 ++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 374 insertions(+), 89 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs"
index 7c4034d..88ddcee 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WIDESEAWCS_Server \346\255\243\345\274\217/WIDESEAWCS_SystemServices/Sys_UserService.cs"
@@ -16,6 +16,10 @@
using SqlSugar;
using ICacheService = WIDESEAWCS_Core.Caches.ICacheService;
using Microsoft.AspNetCore.Builder;
+using WIDESEAWCS_DTO.SerialPort;
+using WIDESEAWCS_DTO.Telescopic;
+using WIDESEAWCS_Common;
+using Newtonsoft.Json;
namespace WIDESEAWCS_SystemServices
{
@@ -27,17 +31,22 @@
private readonly ISys_RoleRepository _RoleRepository;
private readonly ILoginHistoryRepository _loginHistoryRepository;
private readonly IPutakeRepository _putakeRepository;
+ private readonly IFaceRecognitionRepository _faceRecognitionRepository;
- public Sys_UserService(ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage,
- ICacheService cacheService, ISys_MenuService menuService , ISys_RoleRepository roleRepository, ILoginHistoryRepository loginHistoryRepository, IPutakeRepository putakeRepository) : base(repository)
+
+
+ public Sys_UserService(IFaceRecognitionRepository faceRecognitionRepository, ISys_UserRepository repository, IUnitOfWorkManage unitOfWorkManage,
+ ICacheService cacheService, ISys_MenuService menuService, ISys_RoleRepository roleRepository, ILoginHistoryRepository loginHistoryRepository, IPutakeRepository putakeRepository) : base(repository)
{
_unitOfWorkManage = unitOfWorkManage;
_cacheService = cacheService;
_menuService = menuService;
_RoleRepository = roleRepository;
- _RoleRepository= roleRepository;
+ _RoleRepository = roleRepository;
_loginHistoryRepository = loginHistoryRepository;
_putakeRepository = putakeRepository;
+ _faceRecognitionRepository = faceRecognitionRepository;
+
}
public WebResponseContent Login(LoginInfo loginInfo)
@@ -45,7 +54,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- //BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);
+ // BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);
string msg = string.Empty;
@@ -59,53 +68,71 @@
}
#endregion
-
- UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password);
- var disbled = BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);//鏍规嵁杩欎釜鐢ㄦ埛鍚嶆潵鏌ョ湅鐢ㄦ埛
- if (user != null)
+ if (!string.IsNullOrEmpty(loginInfo.path))
{
- object obj = _menuService.GetMenuActionList(user.RoleId);
- if (obj is not IEnumerable<object> list)
+ var faceResult = BaiDuFaceHelper.FaceSearch(loginInfo.path);
+
+ if (faceResult != null && faceResult.error_code == 0)
{
- return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
- }
- if (!list.Any())
- {
- return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
- }
- if (disbled.Enable!=1)
- {
- return WebResponseContent.Instance.Error("浣犵殑璐﹀彿宸茶绂佺敤锛岃鑱旂郴绠$悊鍛�");
+ // 鑾峰彇鏈�楂樺尮閰嶅害鐨勭敤鎴�
+ var bestMatch = faceResult.result.user_list.OrderByDescending(u => u.score).FirstOrDefault();//鎷跨涓�涓渶楂樼殑
+
+ if (bestMatch != null && double.TryParse(bestMatch.score, out double score) && score > 80) // 璁惧畾80鍒嗕负鍙俊搴﹂槇鍊�
+ {
+ return new WebResponseContent { Data = true };
+ }
}
- string token = JwtHelper.IssueJwt(new TokenModelJwt()
- {
- UserId = user.UserId,
- RoleId = user.RoleId,
- UserName = user.UserName,
- TenantId = user.TenantId,
- });
- var loghis = new Dt_LoginHistory
- {
- Account = user.UserName,
- TrurName=user.UserTrueName,
- CreateDate=DateTime.Now
-
-
-
- };
-
-
- _cacheService.AddOrUpdate(user.UserId.ToString(), token);
- _loginHistoryRepository.AddData(loghis);
-
- content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl,ID=user.UserId });
+ return WebResponseContent.Instance.Error("浜鸿劯璇嗗埆澶辫触锛岃閲嶈瘯");
}
else
{
- content = WebResponseContent.Instance.Error("璐﹀彿鎴栧瘑鐮侀敊璇�");
+ UserInfo user = BaseDal.GetUserInfo(loginInfo.UserName, loginInfo.Password);
+ var disbled = BaseDal.QueryFirst(x => x.UserName == loginInfo.UserName);//鏍规嵁杩欎釜鐢ㄦ埛鍚嶆潵鏌ョ湅鐢ㄦ埛
+ if (user != null)
+ {
+ object obj = _menuService.GetMenuActionList(user.RoleId);
+ if (obj is not IEnumerable<object> list)
+ {
+ return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+ }
+ if (!list.Any())
+ {
+ return WebResponseContent.Instance.Error("鏃犵櫥褰曟潈闄�");
+ }
+ if (disbled.Enable != 1)
+ {
+ return WebResponseContent.Instance.Error("浣犵殑璐﹀彿宸茶绂佺敤锛岃鑱旂郴绠$悊鍛�");
+ }
+
+ string token = JwtHelper.IssueJwt(new TokenModelJwt()
+ {
+ UserId = user.UserId,
+ RoleId = user.RoleId,
+ UserName = user.UserName,
+ TenantId = user.TenantId,
+ });
+ var loghis = new Dt_LoginHistory
+ {
+ Account = user.UserName,
+ TrurName = user.UserTrueName,
+ CreateDate = DateTime.Now
+
+ };
+
+
+ _cacheService.AddOrUpdate(user.UserId.ToString(), token);
+ _loginHistoryRepository.AddData(loghis);
+
+ content = WebResponseContent.Instance.OK(data: new { token, userName = user.UserTrueName, img = user.HeadImageUrl, ID = user.UserId, RoleId = user.RoleId });
+ }
+ else
+ {
+ content = WebResponseContent.Instance.Error("璐﹀彿鎴栧瘑鐮侀敊璇�");
+ }
}
}
+
catch (Exception ex)
{
content = WebResponseContent.Instance.Error(ex.Message);
@@ -184,6 +211,7 @@
if (newPwd.Length < 6) return WebResponseContent.Instance.Error("瀵嗙爜涓嶈兘灏戜簬6浣�");
int userId = App.User.UserId;
+
string userCurrentPwd = BaseDal.QueryFirst(x => x.User_Id == userId, s => s.UserPwd);
string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
@@ -203,8 +231,8 @@
nameof(Sys_User.LastModifyPwdDate),
nameof(Sys_User.UserPwd)
});
- content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛");
- //content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛",userId);
+ //content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛");
+ content = WebResponseContent.Instance.OK("瀵嗙爜淇敼鎴愬姛", userId);
}
catch (Exception ex)
{
@@ -212,7 +240,7 @@
content = WebResponseContent.Instance.Error("鏈嶅姟鍣ㄤ簡鐐归棶棰�,璇风◢鍚庡啀璇�");
}
return content;
-
+
}
public WebResponseContent GetUerType()
@@ -241,12 +269,12 @@
{
- return new WebResponseContent { Status = false, Message="澶辫触"+ex };
+ return new WebResponseContent { Status = false, Message = "澶辫触" + ex };
}
}
- public WebResponseContent PermissionView(int userId, string group)
+ public WebResponseContent PermissionView(int userId, string group)
{
try
{
@@ -298,62 +326,319 @@
}
-
- public WebResponseContent UploaDavatar(List<IFormFile> files, int userId)
+ /// <summary>
+ /// 鍥剧墖鏂囦欢鍚�
+ /// </summary>
+ /// <param name="files"></param>
+ /// <returns></returns>
+ public WebResponseContent SaveFiles(IFormCollection files)
{
- if (files == null || files.Count == 0)
+ if (files == null || files.Files.Count == 0)
return new WebResponseContent { Status = false, Message = "璇蜂笂浼犳枃浠�" };
- // 1. 鎸囧畾鍥哄畾鐨勫瓨鍌ㄧ洰褰�
- //string baseDirectory = @"E:\缇庡瀷\NiuJuKongZhi\椤圭洰浠g爜\WIDESEAWCS_Server 姝e紡\WIDESEAWCS_Server\wwwroot\image\";
- string baseDirectory = @"wwwroot\image\";
-
- // 2. 鐢熸垚瀛愮洰褰曪紝閬垮厤鏂囦欢鍐茬獊
- string subDirectory = $"{DateTime.Now:yyMMddHHmmss}_{new Random().Next(1000, 9999)}";
- string filePath = Path.Combine(baseDirectory, subDirectory);
-
- //3. 纭繚鐩綍瀛樺湪
- if (!Directory.Exists(filePath))
- Directory.CreateDirectory(filePath);
+ // 1. 纭繚瀛樺偍鐩綍瀛樺湪
+ string baseDirectory = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "image");
+ if (!Directory.Exists(baseDirectory))
+ Directory.CreateDirectory(baseDirectory);
try
{
- string uploadedFilePath = "";
- for (int i = 0; i < files.Count; i++)
+ var file = files.Files[0]; // 鍙鐞嗙涓�涓枃浠�
+ string fileName = file.FileName; // 鐩存帴浣跨敤鍓嶇鐨勬枃浠跺悕
+
+ string fullFilePath = Path.Combine(baseDirectory, fileName);
+
+ // 2. 淇濆瓨鏂囦欢锛堝鏋滃瓨鍦紝鍒欒鐩栵級
+ using (var stream = new FileStream(fullFilePath, FileMode.Create))
{
- // 4. 鐢熸垚鍞竴鏂囦欢鍚嶏紙闃叉閲嶅悕瑕嗙洊锛�
- string fileName = $"{Guid.NewGuid()}{Path.GetExtension(files[i].FileName)}";
- string fullFilePath = Path.Combine(filePath, fileName);
-
- // 5. 淇濆瓨鏂囦欢鍒版寚瀹氳矾寰�
- using (var stream = new FileStream(fullFilePath, FileMode.Create))
- {
- files[i].CopyTo(stream);
- }
-
- // 6. 璁板綍鏂囦欢璺緞锛堝瓨鍏ユ暟鎹簱鐨勭浉瀵硅矾寰勶級
- uploadedFilePath = Path.Combine("/image", subDirectory, fileName).Replace("\\", "/");
- break; // 鍙鐞嗙涓�涓枃浠�
+ file.CopyTo(stream);
}
- //7. 鏇存柊鐢ㄦ埛澶村儚璺緞鍒版暟鎹簱
- var user = BaseDal.QueryData(u => u.User_Id == userId).FirstOrDefault();
- if (user != null)
- {
- user.HeadImageUrl = uploadedFilePath;
- UpdateData(user);
- }
- else
- {
- return new WebResponseContent { Status = false, Message = "鐢ㄦ埛涓嶅瓨鍦�" };
- }
-
- return new WebResponseContent { Status = true, Message = "鏂囦欢涓婁紶鎴愬姛", Data = uploadedFilePath };
+ // 3. 杩斿洖鏂囦欢鍚�
+ return new WebResponseContent { Status = true, Message = "鏂囦欢涓婁紶鎴愬姛", Data = fileName };
}
catch (Exception ex)
{
return new WebResponseContent { Status = false, Message = "涓婁紶鏂囦欢澶辫触锛�" + ex.Message };
}
}
+
+ /// <summary>
+ /// 鏇存柊瀵嗙爜
+ /// </summary>
+ /// <param name="id"></param>
+ /// <param name="oldPwd"></param>
+ /// <param name="newPwd"></param>
+ /// <returns></returns>
+ public WebResponseContent UpdatePwd(int id, string oldPwd, string newPwd)
+ {
+ WebResponseContent content = new WebResponseContent();
+ oldPwd = oldPwd?.Trim();
+ newPwd = newPwd?.Trim();
+
+ try
+ {
+ if (string.IsNullOrEmpty(oldPwd)) return content.Error("鏃у瘑鐮佷笉鑳戒负绌�");
+ if (string.IsNullOrEmpty(newPwd)) return content.Error("鏂板瘑鐮佷笉鑳戒负绌�");
+ if (newPwd.Length < 6) return content.Error("瀵嗙爜涓嶈兘灏戜簬6浣�");
+
+ // 鑾峰彇鐢ㄦ埛褰撳墠瀵嗙爜
+ string userCurrentPwd = BaseDal.QueryFirst(x => x.User_Id == id, s => s.UserPwd) ?? "";
+
+ if (string.IsNullOrEmpty(userCurrentPwd)) return content.Error("鐢ㄦ埛涓嶅瓨鍦ㄦ垨瀵嗙爜鏈缃�");
+
+ //// 杩涜瀵嗙爜鍔犲瘑瀵规瘮
+ //string _oldPwd = oldPwd.EncryptDES(AppSecret.User);
+ //if (_oldPwd != userCurrentPwd) return content.Error("鏃у瘑鐮佷笉姝g‘");
+
+ // 鐢熸垚鏂板瘑鐮佸姞瀵嗗��
+ string _newPwd = newPwd.EncryptDES(AppSecret.User);
+ if (userCurrentPwd == _newPwd) return content.Error("鏂板瘑鐮佷笉鑳戒笌鏃у瘑鐮佺浉鍚�");
+
+ // 鏇存柊瀵嗙爜
+ bool isUpdated = BaseDal.UpdateData(new Sys_User
+ {
+ User_Id = id,
+ UserPwd = _newPwd,
+ LastModifyPwdDate = DateTime.Now
+ }, new List<string>
+ {
+ nameof(Sys_User.LastModifyPwdDate),
+ nameof(Sys_User.UserPwd)
+ });
+
+ if (!isUpdated)
+ {
+ return content.Error("瀵嗙爜淇敼澶辫触锛岃绋嶅悗閲嶈瘯");
+ }
+
+ return content.OK("瀵嗙爜淇敼鎴愬姛", id);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"淇敼瀵嗙爜寮傚父: {ex.Message}");
+ return content.Error($"鏈嶅姟鍣ㄩ敊璇�: {ex.Message}");
+ }
+ }
+
+ public WebResponseContent Upuserbase(UserDTO userDTO)
+ {
+ try
+ {
+ var user = BaseDal.QueryData(x => x.User_Id == userDTO.id).FirstOrDefault();
+ if (user == null)
+ {
+ return new WebResponseContent { Status = false, Message = "娌℃壘鍒拌鐢ㄦ埛" };
+ }
+ user.UserTrueName = userDTO.usertruename;
+ user.PhoneNo = userDTO.phone;
+ user.HeadImageUrl = userDTO.files;
+ BaseDal.UpdateData(user); // 纭繚鏇存柊鍒版暟鎹簱
+ return new WebResponseContent { Status = true, Data = user };
+ }
+ catch (Exception ex)
+ {
+
+ return new WebResponseContent { Status = false, Message = "澶辫触锛�" + ex };
+ }
+
+ }
+
+
+ /// <summary>
+ /// 鏌ョ湅鐢ㄦ埛淇℃伅鍜屼汉鑴歌瘑鍒〃
+ /// </summary>
+ /// <param name="paginationDTO"></param>
+ /// <returns></returns>
+ public WebResponseContent GetUserFace(PaginationDTO paginationDTO)
+ {
+ try
+ {
+ int totalCount = 0;
+ var sys = Db.Queryable<Sys_User>();
+ var face = _faceRecognitionRepository.Db.Queryable<Dt_FaceRecognition>();
+
+ if (face == null)
+ {
+ return new WebResponseContent { Status = false, Message = "鏁版嵁涓虹┖" };
+ }
+
+ var query = sys.LeftJoin<Dt_FaceRecognition>((a, b) => a.Log_id == b.ID);
+ if (!string.IsNullOrEmpty(paginationDTO.searchKeyword))
+ {
+ query = query.Where((a, b) =>
+ a.UserName.Contains(paginationDTO.searchKeyword) ||
+ a.UserTrueName.Contains(paginationDTO.searchKeyword) ||
+ a.PhoneNo.Contains(paginationDTO.searchKeyword) ||
+ a.RoleName.Contains(paginationDTO.searchKeyword) ||
+ a.Role_Id.ToString().Contains(paginationDTO.searchKeyword)
+ );
+ }
+ if (paginationDTO.startDate.HasValue && paginationDTO.endDate.HasValue)
+ {
+ query = query.Where((a, b) => a.CreateDate >= paginationDTO.startDate && a.CreateDate <= paginationDTO.endDate);
+ }
+
+ var result = query.Select((a, b) => new
+ {
+ a.User_Id,
+ a.UserName,
+ a.UserTrueName,
+ a.PhoneNo,
+ a.Role_Id,
+ a.RoleName,
+ a.HeadImageUrl,
+ a.Enable,
+ a.CreateDate,
+ a.Face_token,
+ b.GroupID,
+ }).ToPageList(paginationDTO.pageIndex, paginationDTO.pageSize, ref totalCount);
+ return new WebResponseContent
+ {
+ Status = true,
+ Data = new
+ {
+ TotalCount = totalCount,//鎬绘暟
+ PageIndex = paginationDTO.pageIndex,//椤垫暟
+ PaseSize = paginationDTO.pageSize,//涓�椤靛灏戞暟鎹�
+ Items = result//杩斿洖瀛楁
+ }
+
+ };
+
+ }
+ catch (Exception)
+ {
+
+ throw;
+ }
+ }
+
+
+ public WebResponseContent AdduserData(AddUserDTO addUserDTO)
+ {
+ try
+ {
+
+ var baiduResult = BaiDuFaceHelper.AddUser(new BDUserInfo
+ {
+ ImgPath = addUserDTO.path,
+ user_id = addUserDTO.username,
+ group_id = addUserDTO.log_id // 杩欓噷搴旇濉櫨搴︿汉鑴稿簱鍒嗙粍
+ });
+
+
+ // 鍒ゆ柇鐧惧害杩斿洖鏄惁鎴愬姛
+ if (baiduResult == null || baiduResult.error_code != 0)
+ {
+ return new WebResponseContent { Status = false, Data = "浜鸿劯娉ㄥ唽澶辫触锛�" + baiduResult.error_msg };
+ }
+
+ // 鍒涘缓鐢ㄦ埛鏁版嵁
+ var sys = new Sys_User
+ {
+ UserName = addUserDTO.username,
+ HeadImageUrl=addUserDTO.path,
+ Log_id = addUserDTO.log_id,
+ Face_token = baiduResult.result.face_token,
+ PhoneNo = addUserDTO.phoneno,
+ Role_Id = addUserDTO.roleid,
+ RoleName = addUserDTO.rolename,
+ Enable = addUserDTO.enable,
+ UserPwd= "j79rYYvCz4vdhcboB1Ausg=="
+ };
+ BaseDal.AddData(sys);
+ return new WebResponseContent { Status = true, Data = sys };
+ }
+ catch (Exception ex)
+ {
+
+ return new WebResponseContent { Status = false, Message = "澶辫触" + ex };
+ }
+
+ }
+
+ public WebResponseContent UpuserData(AddUserDTO addUserDTO)
+ {
+ try
+ {
+
+ var baiduResult = BaiDuFaceHelper.AddUser(new BDUserInfo
+ {
+ ImgPath = addUserDTO.path,
+ user_id = addUserDTO.username,
+ group_id = addUserDTO.log_id // 杩欓噷搴旇濉櫨搴︿汉鑴稿簱鍒嗙粍
+ });
+
+
+ // 鍒ゆ柇鐧惧害杩斿洖鏄惁鎴愬姛
+ if (baiduResult == null || baiduResult.error_code != 0)
+ {
+ return new WebResponseContent { Status = false, Data = "浜鸿劯鏇存柊澶辫触锛�" + baiduResult.error_msg };
+ }
+
+ // 鏇存柊鐢ㄦ埛鏁版嵁
+ var sys = new Sys_User
+ {
+ UserName = addUserDTO.username,
+ HeadImageUrl = addUserDTO.path,
+ Log_id = addUserDTO.log_id,
+ Face_token = baiduResult.result.face_token,
+ PhoneNo = addUserDTO.phoneno,
+ Role_Id = addUserDTO.roleid,
+ RoleName = addUserDTO.rolename,
+ Enable = addUserDTO.enable,
+ };
+ BaseDal.UpdateData(sys);
+
+ return new WebResponseContent { Status = true, Data = sys };
+ }
+ catch (Exception ex)
+ {
+
+ return new WebResponseContent { Status = false, Message = "澶辫触" + ex };
+ }
+
+ }
+
+ /// <summary>
+ /// 鍒犻櫎
+ /// </summary>
+ /// <param name="deleteUserDTO"></param>
+ /// <returns></returns>
+ public WebResponseContent DeleteUserData(DeleteUserImg deleteUserDTO)
+ {
+ try
+ {
+
+ string apiResult = BaiDuFaceHelper.DeleteUser(deleteUserDTO);
+
+ // 2. 瑙f瀽杩斿洖缁撴灉锛屽垽鏂垹闄ゆ槸鍚︽垚鍔�
+ dynamic resultObj = JsonConvert.DeserializeObject(apiResult);
+ if (resultObj.error_code == 0)
+ {
+ // 鐧惧害鍒犻櫎鎴愬姛鍚庯紝鍒犻櫎鏁版嵁搴撲腑鐨勭敤鎴�
+ var user = BaseDal.QueryData(deleteUserDTO.user_id);
+ if (user != null)
+ {
+ BaseDal.DeleteData(user);
+ }
+ return WebResponseContent.Instance.OK("鐢ㄦ埛鍒犻櫎鎴愬姛");
+ }
+ else
+ {
+ return WebResponseContent.Instance.Error("鐧惧害 API 鍒犻櫎澶辫触锛�" + resultObj.error_msg);
+ }
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error("鍒犻櫎鐢ㄦ埛澶辫触锛�" + ex.Message);
+ }
+ }
+
+
+
}
}
+
+
--
Gitblit v1.9.3