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;
|
|
/**
|
* <p>
|
* 账户表 服务实现类
|
* </p>
|
*
|
* @author yanzhixin
|
* @since 2024-09-03
|
*/
|
@Slf4j
|
@Service
|
public class AccountServiceImpl extends MPJBaseServiceImpl<AccountMapper, Account> implements AccountService {
|
|
@Autowired
|
RoleMapper roleMapper;
|
/**
|
* 输入账户密码 返回权限
|
* @return
|
*/
|
@Override
|
public Map<String, Object> selectAccount(String account, String password){
|
//返回结果 用户权限
|
Map<String, Object> accountRole=new HashMap<>();
|
//验证通过的用户 权限内容
|
List<Map<String,Object>> 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(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<String> keyMenus=new ArrayList<>();//菜单顺序
|
//Map<String, Object> menus=new HashMap<>();//菜单内容页
|
|
if (username.size()>0){
|
Map<String,Object> 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<String,Object> item:username){
|
if(keyMenus.contains(item.get("menu_id").toString())){
|
//存在此菜单
|
int index=keyMenus.indexOf(item.get("menu_id").toString());
|
List<Map<String, Object>> thisMenus= (List<Map<String, Object>>) accountRole.get("menus");
|
Map<String, Object> thisMenu=(Map<String, Object>)thisMenus.get(index);
|
List<Map<String, Object>> thisPages= (List<Map<String, Object>>) thisMenu.get("pages");
|
//添加页面组
|
Map<String, Object> 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"));
|
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<Map<String, Object>> thisMenus= (List<Map<String, Object>>) accountRole.get("menus");
|
Map<String, Object> 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<Map<String, Object>> thisPages= new ArrayList<>();
|
//添加页面组
|
Map<String, Object> 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"));
|
thisPages.add(page);
|
thisMenu.put("pages",thisPages);
|
thisMenus.add(thisMenu);
|
accountRole.put("menus",thisMenus);
|
}else{
|
keyMenus.add(item.get("menu_id").toString());
|
//添加菜单组 不存在此带单则添加
|
List<Map<String, Object>> menus=new ArrayList<>();//菜单组
|
Map<String, Object> 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<Map<String, Object>> pages=new ArrayList<>();//页面组
|
Map<String, Object> 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"));
|
pages.add(page);
|
menu.put("pages",pages);
|
menus.add(menu);
|
accountRole.put("menus",menus);
|
}
|
}
|
}
|
return accountRole;
|
}
|
/**
|
* 查询所有账户
|
* @return
|
*/
|
@Override
|
public List<Map<String, Object>> 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);
|
}
|
}
|