using DataCheck; using EncryptTool; using WcsMain.ApiServe.Controllers.Dto; using WcsMain.ApiServe.Controllers.Dto.WcsDto.User; using WcsMain.ApiServe.Factory; using WcsMain.DataBase.Dao; using WcsMain.DataBase.TableEntity; using WcsMain.WcsAttribute.AutoFacAttribute; namespace WcsMain.ApiServe.Service.WcsService; [Service] public class UserService(AppUserDao appUserDao, AppMenuDao menuDao) { private readonly AppUserDao _userDao = appUserDao; private readonly AppMenuDao _menuDao = menuDao; /// /// 登录请求的具体实现 /// /// /// public WcsApiResponse Login(LoginRequest request) { // 数据校验 var checkData = CheckData.CheckDataRules(request); if (!checkData) { return WcsApiResponseFactory.RequestErr(); } string encryptPwd = Md5Encrypt.EncryptPassword(request.UserPassword); /* 判断用户账户ID和密码是否正确 */ List? loginUser = _userDao.Query(new AppUser { UserId = request.UserId, UserPassword = encryptPwd }); if (loginUser == default) { return WcsApiResponseFactory.DataBaseErr(); } if (loginUser.Count < 1) { return WcsApiResponseFactory.RequestErr(msg: "用户不存在或者密码不正确"); } /* 查找该用户的菜单 */ // ---- 目前无权限控制,默认返回所有菜单 var loginResponse = GetUserMenu(loginUser[0]); return WcsApiResponseFactory.Success(loginResponse, "登录成功"); } /// /// 查找用户的菜单 /// /// /// private LoginResponse? GetUserMenu(AppUser user) { var menus = _menuDao.GetMenuWithGroupId(user.UserGroup!); if (menus == default || menus.Count < 1) { return default; } LoginResponse loginResponse = new() { UserName = user.UserName, Menu = [] }; // ---- 找出主菜单 List<(string Index, string MainMenuName, string ico)> mainMenuInfo = []; foreach (var menu in menus) { if (mainMenuInfo.Exists(e => e.MainMenuName == menu.MainMenuName)) continue; (string Index, string MainMenuName, string ico) newMenu = (menu.MainMenuIndex!, menu.MainMenuName!, menu.MainMenuIco!); mainMenuInfo.Add(newMenu); loginResponse.Menu.Add(new MainMenuData { Index = menu.MainMenuIndex, MainMenu = menu.MainMenuName, Ico = menu.MainMenuIco, }); } loginResponse.Menu = [.. loginResponse.Menu.OrderBy(o => o.Index)]; // ---- 找出次级菜单 foreach (var mainMenu in loginResponse.Menu) { var findResult = menus.FindAll(f => f.MainMenuName == mainMenu.MainMenu); mainMenu.Minor = []; foreach (var minorMenu in findResult) { mainMenu.Minor.Add(new MinorMenuData { Index = minorMenu.MinorMenuIndex, MinorMenu = minorMenu.MinorMenuName, Router = minorMenu.MinorMenuRouter, Ico = minorMenu.MinorMenuIco, }); } mainMenu.Minor = [.. mainMenu.Minor.OrderBy(o => o.Index)]; } return loginResponse; } /// /// 分页查询所有用户 /// /// /// public WcsApiResponse> GetUserWithPage(GetUserWithPageRequest request) { var (users, total) = _userDao.QueryWithPage(request); return WcsApiResponseFactory.Success(users, total.ToString()); } }