package com.mes.md.service.impl; import com.github.yulichang.base.MPJBaseServiceImpl; import com.github.yulichang.toolkit.JoinWrappers; import com.mes.md.entity.*; import com.mes.md.mapper.AccountMapper; import com.mes.md.mapper.RoleMapper; import com.mes.md.service.AccountService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 账户表 服务实现类 *

* * @author yanzhixin * @since 2024-09-03 */ @Slf4j @Service public class AccountServiceImpl extends MPJBaseServiceImpl implements AccountService { @Autowired RoleMapper roleMapper; /** * 输入账户密码 返回权限 * @return */ @Override public Map selectAccount(String account, String password){ //返回结果 用户权限 Map accountRole=new HashMap<>(); //验证通过的用户 权限内容 List> username=baseMapper.selectJoinMaps(JoinWrappers.lambda(Account.class) .selectAll(Account.class) .selectAs(Role::getRoleName,"role_name") .selectAs(Role::getRoleNumber,"role_number") .selectAs(Role::getRemark,"role_remark") .selectAs(RoleMenu::getId,"role_menu_id") .selectAs(RoleMenu::getMenuId,"menu_id") .selectAs(RoleMenu::getPageId,"page_id") .selectAs(RoleMenu::getMenuSequence,"remark") .selectAs(RoleMenu::getParams,"params") .selectAs(Menu::getMenuName,"menu_name") .selectAs(Menu::getMenuNumber,"menu_number") .selectAs(Menu::getRemark,"menu_remark") .selectAs(Page::getPageName,"page_name") .selectAs(Page::getPageNumber,"page_number") .selectAs(Page::getPageUrl,"page_url") .innerJoin(Role.class,on->on.eq(Role::getId,Account::getRoleId)) .innerJoin(RoleMenu.class,on->on.eq(RoleMenu::getRoleId,Role::getId)) .innerJoin(Menu.class, on->on.eq(Menu::getId,RoleMenu::getMenuId)) .innerJoin(Page.class, on->on.eq(Page::getId,RoleMenu::getPageId)) .eq(Account::getAccount,account) .eq(Account::getPassword, password) ); List keyMenus=new ArrayList<>();//菜单顺序 //Map menus=new HashMap<>();//菜单内容页 if (username.size()>0){ Map frist=username.get(0); //账户信息 accountRole.put("id",frist.get("id").toString()); accountRole.put("user_name",frist.get("user_name").toString()); accountRole.put("account",frist.get("account").toString()); accountRole.put("role_id",frist.get("role_id").toString()); for (Map item:username){ if(keyMenus.contains(item.get("menu_id").toString())){ //存在此菜单 int index=keyMenus.indexOf(item.get("menu_id").toString()); List> thisMenus= (List>) accountRole.get("menus"); Map thisMenu=(Map)thisMenus.get(index); List> thisPages= (List>) thisMenu.get("pages"); //添加页面组 Map page=new HashMap<>();//页面 page.put("page_id",item.get("page_id")); page.put("page_name",item.get("page_name")); page.put("page_number",item.get("page_number")); page.put("page_url",item.get("page_url")); page.put("menu_sequence",item.get("menu_sequence")); page.put("params",item.get("params")); thisPages.add(page); thisMenu.put("pages",thisPages); thisMenus.set(index,thisMenu); accountRole.put("menus",thisMenus); }else if(keyMenus.size()>0&&!keyMenus.contains(item.get("menu_id").toString())){ //不存在此菜单 keyMenus.add(item.get("menu_id").toString()); List> thisMenus= (List>) accountRole.get("menus"); Map thisMenu=new HashMap<>(); thisMenu.put("menu_id",item.get("menu_id")); thisMenu.put("menu_name",item.get("menu_name")); thisMenu.put("menu_number",item.get("menu_number")); thisMenu.put("menu_remark",item.get("menu_remark")); List> thisPages= new ArrayList<>(); //添加页面组 Map page=new HashMap<>();//页面 page.put("page_id",item.get("page_id")); page.put("page_name",item.get("page_name")); page.put("page_number",item.get("page_number")); page.put("page_url",item.get("page_url")); page.put("menu_sequence",item.get("menu_sequence")); page.put("params",item.get("params")); thisPages.add(page); thisMenu.put("pages",thisPages); thisMenus.add(thisMenu); accountRole.put("menus",thisMenus); }else{ keyMenus.add(item.get("menu_id").toString()); //添加菜单组 不存在此带单则添加 List> menus=new ArrayList<>();//菜单组 Map menu=new HashMap<>(); //菜单 menu.put("menu_id",item.get("menu_id")); menu.put("menu_name",item.get("menu_name")); menu.put("menu_number",item.get("menu_number")); menu.put("menu_remark",item.get("menu_remark")); //添加页面组 List> pages=new ArrayList<>();//页面组 Map page=new HashMap<>();//页面 page.put("page_id",item.get("page_id")); page.put("page_name",item.get("page_name")); page.put("page_number",item.get("page_number")); page.put("page_url",item.get("page_url")); page.put("menu_sequence",item.get("menu_sequence")); page.put("params",item.get("params")); pages.add(page); menu.put("pages",pages); menus.add(menu); accountRole.put("menus",menus); } } } return accountRole; } /** * 查询所有账户 * @return */ @Override public List> findAccounts(){ return baseMapper.selectJoinMaps(JoinWrappers.lambda(Account.class) .selectAll() .selectAs(Role::getRoleName,"role_name") .leftJoin(Role.class, on -> on.eq(Role::getId, Account::getRoleId)) .orderByAsc(Account::getId)); } /** * 添加账户 * @return */ @Override public int addAccount(Account account){ return baseMapper.insert(account); } /** * 修改账户 * @return */ @Override public int updateAccount(Account account){ return baseMapper.updateById(account); } /** * 删除账户 * @return */ @Override public int deleteAccount(Account account){ return baseMapper.deleteById(account); } }