package com.thhy.usercore.modules.sys.sysmenu.service.impl;
import com.thhy.general.utils.UserInfoUtils;
import com.thhy.general.common.BasicStatus;
import com.thhy.general.exception.BasicException;
import com.thhy.usercore.modules.sys.sysmenu.entity.*;
import com.thhy.usercore.modules.sys.sysmenu.mapper.SysMenusMapper;
import com.thhy.usercore.modules.sys.sysmenu.service.ISysMenusService;
import com.thhy.usercore.modules.sys.sysmenubutton.entity.MenuButtonVo;
import com.thhy.usercore.modules.sys.sysmenubutton.entity.SysMenuButton;
import com.thhy.usercore.modules.sys.sysmenubutton.mapper.SysMenuButtonMapper;
import com.thhy.usercore.modules.sys.sysmenurole.mapper.SysMenuRoleMapper;
import com.thhy.general.config.SysUserInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author zhang_xiao_bo
* @since 2022-03-22
*/
@Service
public class SysMenusServiceImpl implements ISysMenusService {
@Autowired
private SysMenusMapper sysMenusMapper;
@Autowired
private SysMenuButtonMapper sysMenuButtonMapper;
@Autowired
private SysMenuRoleMapper sysMenuRoleMapper;
public SysMenus get(Serializable id){
return sysMenusMapper.queryById(id);
}
public List findList(SysMenus sysMenus){
return sysMenusMapper.findList(sysMenus);
}
@Transactional
public SysMenus addMenu(SysMenus sysMenus){
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
if(sysUserInfo==null||sysUserInfo.getUserId()==null){
throw new BasicException(BasicStatus.LOGIN_INFO_IS_ERROR);
}
if(sysMenus.getMenuId()==null){
sysMenus.setCreateTime(new Date());
sysMenus.setCreateUser(sysUserInfo.getUserId());
//如果序号为空,默认排在最后一位
if (sysMenus.getLevel()==null) {
Integer currentLevel = sysMenusMapper.currentLevel(sysMenus);
sysMenus.setLevel(currentLevel+1);
}
sysMenusMapper.insert(sysMenus);
}else{
/*Integer curVersion = sysMenusMapper.queryVersionById(sysMenus.getMenuId());
if(!curVersion.equals(sysMenus.getVersion())){
throw new BasicException(BasicStatus.SUBMIT_TIMEOUT);
}*/
sysMenus.setUpdateTime(new Date());
sysMenus.setUpdateUser(sysUserInfo.getUserId());
sysMenusMapper.update(sysMenus);
}
return sysMenus;
}
@Override
@Transactional
public void addMenuButton(MenuButtonDto menuButtonDto) {
sysMenuButtonMapper.deleteByMenuId(menuButtonDto.getMenuId());
String buttonIds = menuButtonDto.getButtonIds();
String[] buttonIdArray = new String[]{buttonIds};
if(buttonIds.contains(",")){
buttonIdArray = buttonIds.split(",");
}
for(String buttonId : buttonIdArray){
sysMenuButtonMapper.insert(new SysMenuButton(menuButtonDto.getMenuId(),buttonId));
}
}
@Override
public int queryVersion(Serializable id) {
return sysMenusMapper.queryVersionById(id);
}
/**
* 逻辑删除
* @param menuId
*/
public int deletelogic(Serializable menuId){
return sysMenusMapper.deletelogic(menuId);
}
/**
* 物理删除
* @param id
*/
public int delete(Serializable id){
return sysMenusMapper.deleteById(id);
}
@Override
public List findTree(MenuDto menuDto) {
List sysMenusList = sysMenusMapper.forTree(menuDto);
for(MenuTreeVo mv : sysMenusList){
menuDto.setParentId(mv.getMenuId());
List child = findTree(menuDto);
mv.setChildrens(child);
}
return sysMenusList;
}
@Override
public List findAllTree(MenuDto menuDto) {
List sysMenusList = sysMenusMapper.forAllTree(menuDto);
for(MenuTreeVo mv : sysMenusList){
menuDto.setParentId(mv.getMenuId());
List child = findAllTree(menuDto);
mv.setChildrens(child);
}
return sysMenusList;
}
@Override
public List allRoleMenu(MenuDto menuDto) {
List sysMenusList = sysMenusMapper.menuRoleTree(menuDto);
for(MenuButtonTreeVo mv : sysMenusList){
menuDto.setParentId(mv.getMenuId());
List child = allRoleMenu(menuDto);
if(child.size()<1){
MenuButtonDto menuButtonDto = new MenuButtonDto();
menuButtonDto.setMenuId(mv.getMenuId());
menuButtonDto.setRoleId(menuDto.getRoleId());
List menuButtonVos = sysMenuButtonMapper.queryMenuButton(menuButtonDto);
mv.setChildrens(menuButtonVos);
}else{
mv.setChildrens(child);
}
}
return sysMenusList;
}
@Override
public List MenuEnableButtons(MenuButtonDto menuButtonDto) {
SysUserInfo userInfo = UserInfoUtils.getInstance().getUserInfo();
menuButtonDto.setUserId(userInfo.getUserId());
List ebableList = sysMenuButtonMapper.MenuEnableButtons(menuButtonDto);
return ebableList;
}
}