wcs_server_kate_suzhou/WcsMain/ApiServe/Service/WcsService/UserService.cs

107 lines
3.9 KiB
C#
Raw Normal View History

2024-05-14 16:30:56 +08:00
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;
/// <summary>
/// 登录请求的具体实现
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse<LoginResponse> Login(LoginRequest request)
{
// 数据校验
var checkData = CheckData.CheckDataRules(request);
if (!checkData)
{
return WcsApiResponseFactory.RequestErr<LoginResponse>();
}
string encryptPwd = Md5Encrypt.EncryptPassword(request.UserPassword);
/* 判断用户账户ID和密码是否正确 */
List<AppUser>? loginUser = _userDao.Query(new AppUser { UserId = request.UserId, UserPassword = encryptPwd });
if (loginUser == default)
{
return WcsApiResponseFactory.DataBaseErr<LoginResponse>();
}
if (loginUser.Count < 1)
{
return WcsApiResponseFactory.RequestErr<LoginResponse>(msg: "用户不存在或者密码不正确");
}
/* 查找该用户的菜单 */ // ---- 目前无权限控制,默认返回所有菜单
var loginResponse = GetUserMenu(loginUser[0]);
return WcsApiResponseFactory.Success(loginResponse, "登录成功");
}
/// <summary>
/// 查找用户的菜单
/// </summary>
/// <param name="user"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 分页查询所有用户
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public WcsApiResponse<List<AppUser>> GetUserWithPage(GetUserWithPageRequest request)
{
var (users, total) = _userDao.QueryWithPage(request);
return WcsApiResponseFactory.Success(users, total.ToString());
}
}