package com.thhy.usercore.modules.sys.sysrole.service.impl;
import com.thhy.general.utils.UserInfoUtils;
import com.thhy.general.common.BasicStatus;
import com.thhy.general.common.enums.IsUse;
import com.thhy.general.exception.BasicException;
import com.thhy.usercore.modules.sys.sysbutton.entity.SysRoleButton;
import com.thhy.usercore.modules.sys.sysbutton.mapper.SysRoleButtonMapper;
import com.thhy.usercore.modules.sys.sysmenurole.entity.SysMenuRole;
import com.thhy.usercore.modules.sys.sysmenurole.mapper.SysMenuRoleMapper;
import com.thhy.usercore.modules.sys.sysrole.entity.RoleMenuDto;
import com.thhy.usercore.modules.sys.sysrole.entity.RoleVo;
import com.thhy.usercore.modules.sys.sysrole.entity.SysRoles;
import com.thhy.usercore.modules.sys.sysrole.mapper.SysRolesMapper;
import com.thhy.usercore.modules.sys.sysrole.service.ISysRolesService;
import com.thhy.usercore.modules.sys.sysuserrole.entity.UserRoleDto;
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 org.springframework.util.StringUtils;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
/**
*
* 服务实现类
*
*
* @author zhang_xiao_bo
* @since 2022-03-22
*/
@Service
public class SysRolesServiceImpl implements ISysRolesService {
@Autowired
private SysRolesMapper sysRolesMapper;
@Autowired
private SysRoleButtonMapper sysRoleButtonMapper;
@Autowired
private SysMenuRoleMapper sysMenuRoleMapper;
public SysRoles get(Serializable id){
return sysRolesMapper.queryById(id);
}
public List findList(SysRoles sysRoles){
return sysRolesMapper.findList(sysRoles);
}
public SysRoles addRole(SysRoles sysRoles){
SysUserInfo sysUserInfo = UserInfoUtils.getInstance().getUserInfo();
if(sysRoles.getRoleId()==null){ //增加
sysRoles.setCreateBy(sysUserInfo.getUserId().toString());
sysRoles.setCreateTime(new Date());
sysRoles.setIsUse(IsUse.YES.getValue());
sysRolesMapper.insert(sysRoles);
}else{ //修改
//校验版本
Integer curVersion = sysRolesMapper.queryVersionById(sysRoles.getRoleId());
if(!curVersion.equals(sysRoles.getVersion())){
throw new BasicException(BasicStatus.SUBMIT_TIMEOUT);
}
sysRoles.setUpdateBy(sysUserInfo.getUserId().toString());
sysRoles.setUpdateTime(new Date());
sysRolesMapper.update(sysRoles);
}
return sysRoles;
}
/**
* 获取数据版本
* @param id
* @return
*/
@Override
public int queryVersion(Serializable id) {
return sysRolesMapper.queryVersionById(id);
}
/**
* 为角色配置菜单
* @param roleMenuDto
*/
@Override
@Transactional
public void updateMenuForRole(RoleMenuDto roleMenuDto) {
String menuIds = roleMenuDto.getMenuIds();
if(!StringUtils.isEmpty(menuIds)){
sysMenuRoleMapper.deletelogicByRoleId(roleMenuDto.getRoleId());
sysRoleButtonMapper.deleteByRoleId(roleMenuDto.getRoleId());
//sysRoleUrlMapper.deleteByRoleId(roleMenuDto.getRoleId());
}
String[] menuArray = new String[]{menuIds};
if(menuIds.contains(",")){
menuArray = menuIds.split(",");
}
for(String menuId : menuArray){
if(menuId.contains("-")){
//按钮
String[] menuButtonIds = menuId.split("-");
sysMenuRoleMapper.insert(new SysMenuRole(menuButtonIds[0],roleMenuDto.getRoleId()));
sysRoleButtonMapper.insert(new SysRoleButton(menuButtonIds[0],roleMenuDto.getRoleId(),menuButtonIds[1]));
//updateRoleUrl(Integer.parseInt(menuButtonIds[0]),roleMenuDto.getRoleId());
}else{
sysMenuRoleMapper.insert(new SysMenuRole(menuId,roleMenuDto.getRoleId()));
//updateRoleUrl(Integer.parseInt(menuId),roleMenuDto.getRoleId());
}
}
}
/*public void updateRoleUrl(Integer menuId,Integer roleId){
List sysMenuUrlList = sysMenuUrlMapper.queryByMenuId(menuId);
for(SysMenuUrl sysMenuUrl : sysMenuUrlList){
sysRoleUrlMapper.insert(new SysRoleUrl(roleId,sysMenuUrl.getUrlId(),menuId));
}
}*/
/*@Override
@Transactional
public void updateUrlForRole(SysUrlDto sysUrlDto) {
sysRoleUrlMapper.deleteByRoleId(sysUrlDto.getRoleId());
String urlIds = sysUrlDto.getUrlIds();
String[] urlIdsArray = new String[]{urlIds};
if(urlIds.contains(",")){
urlIdsArray = urlIds.split(",");
}
for(String urlId : urlIdsArray){
sysRoleUrlMapper.insert(new SysRoleUrl(sysUrlDto.getRoleId(), Integer.parseInt(urlId)));
}
}*/
/**
* 逻辑删除
* @param id
*/
public int deletelogic(Serializable id){
return sysRolesMapper.deletelogic(id);
}
@Override
public List findAll(UserRoleDto userRoleDto) {
return sysRolesMapper.findAll(userRoleDto);
}
}