107 lines
3.9 KiB
C#
107 lines
3.9 KiB
C#
|
|
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());
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|