|
|
|
@ -1,124 +1,94 @@
|
|
|
|
|
package com.baiye.system.service.impl;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
|
import com.baiye.security.constant.UserAttributeNameConstants;
|
|
|
|
|
import com.baiye.security.userdetails.User;
|
|
|
|
|
import com.baiye.security.util.SecurityUtils;
|
|
|
|
|
import com.baiye.system.checker.AdminUserChecker;
|
|
|
|
|
import com.baiye.system.enums.RoleCodeEnum;
|
|
|
|
|
import com.baiye.domain.PageParam;
|
|
|
|
|
import com.baiye.domain.PageResult;
|
|
|
|
|
import com.baiye.domain.SelectData;
|
|
|
|
|
import com.baiye.exception.BusinessException;
|
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
|
import com.baiye.result.BaseResultCode;
|
|
|
|
|
import com.baiye.system.mapper.SysRoleMapper;
|
|
|
|
|
import com.baiye.system.model.entity.SysRole;
|
|
|
|
|
import com.baiye.system.model.qo.SysRoleQO;
|
|
|
|
|
import com.baiye.system.model.vo.SysRolePageVO;
|
|
|
|
|
import com.baiye.system.service.SysRoleMenuService;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
|
|
|
|
import com.baiye.exception.BusinessException;
|
|
|
|
|
import com.baiye.result.BaseResultCode;
|
|
|
|
|
import com.baiye.system.mapper.SysRoleMapper;
|
|
|
|
|
import com.baiye.system.service.SysRoleService;
|
|
|
|
|
import com.baiye.domain.PageParam;
|
|
|
|
|
import com.baiye.domain.PageResult;
|
|
|
|
|
import com.baiye.domain.SelectData;
|
|
|
|
|
import com.baiye.extend.mybatis.plus.service.impl.ExtendServiceImpl;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.io.Serializable;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
public class SysRoleServiceImpl extends ExtendServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
|
|
|
|
|
|
|
|
|
|
private final SysRoleMenuService sysRoleMenuService;
|
|
|
|
|
|
|
|
|
|
private final AdminUserChecker adminUserChecker;
|
|
|
|
|
private final SysRoleMenuService sysRoleMenuService;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 查询系统角色列表
|
|
|
|
|
*
|
|
|
|
|
* @param pageParam 分页对象
|
|
|
|
|
* @param qo 查询参数
|
|
|
|
|
* @return 分页对象
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public PageResult<SysRolePageVO> queryPage(PageParam pageParam, SysRoleQO qo) {
|
|
|
|
|
return baseMapper.queryPage(pageParam, qo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过角色ID,删除角色,并清空角色菜单缓存
|
|
|
|
|
*
|
|
|
|
|
* @param id 角色ID
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public boolean removeById(Serializable id) {
|
|
|
|
|
SysRole role = getById(id);
|
|
|
|
|
sysRoleMenuService.deleteByRoleCode(role.getCode());
|
|
|
|
|
return SqlHelper.retBool(baseMapper.deleteById(id));
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 查询系统角色列表
|
|
|
|
|
*
|
|
|
|
|
* @param pageParam 分页对象
|
|
|
|
|
* @param qo 查询参数
|
|
|
|
|
* @return 分页对象
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public PageResult<SysRolePageVO> queryPage(PageParam pageParam, SysRoleQO qo) {
|
|
|
|
|
return baseMapper.queryPage(pageParam, qo);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 角色的选择数据
|
|
|
|
|
*
|
|
|
|
|
* @return List<SelectData < ?>>
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<SelectData<Void>> listSelectData() {
|
|
|
|
|
List<SelectData<Void>> selectData = baseMapper.listSelectData();
|
|
|
|
|
/**
|
|
|
|
|
* 通过角色ID,删除角色,并清空角色菜单缓存
|
|
|
|
|
*
|
|
|
|
|
* @param id 角色ID
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
public boolean removeById(Serializable id) {
|
|
|
|
|
SysRole role = getById(id);
|
|
|
|
|
sysRoleMenuService.deleteByRoleCode(role.getCode());
|
|
|
|
|
return SqlHelper.retBool(baseMapper.deleteById(id));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
User user = SecurityUtils.getUser();
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
|
Collection<String> roleCodeList = (Collection<String>) user.getAttributes().get(UserAttributeNameConstants.ROLE_CODES);
|
|
|
|
|
/**
|
|
|
|
|
* 角色的选择数据
|
|
|
|
|
*
|
|
|
|
|
* @return List<SelectData < ?>>
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public List<SelectData<Void>> listSelectData() {
|
|
|
|
|
List<SelectData<Void>> selectData = baseMapper.listSelectData();
|
|
|
|
|
|
|
|
|
|
String salesExecutive = RoleCodeEnum.find(14L);
|
|
|
|
|
String storeExecutive = RoleCodeEnum.find(22L);
|
|
|
|
|
String entryClerk = RoleCodeEnum.find(15L);
|
|
|
|
|
String directExecutive = RoleCodeEnum.find(24L);
|
|
|
|
|
Set<String> list = new HashSet<>();
|
|
|
|
|
if (adminUserChecker.isAdminUser(user.getUserId())) {
|
|
|
|
|
list.addAll(ListUtil.of(salesExecutive, storeExecutive, directExecutive));
|
|
|
|
|
}
|
|
|
|
|
if (roleCodeList.contains(salesExecutive)) {
|
|
|
|
|
list.add(entryClerk);
|
|
|
|
|
}
|
|
|
|
|
if (roleCodeList.contains(storeExecutive)) {
|
|
|
|
|
List<String> excludeRoleCode = ListUtil.of(RoleCodeEnum.find(1L), salesExecutive, storeExecutive, entryClerk);
|
|
|
|
|
List<String> collect = selectData.stream().map(SelectData::getValue).filter(value -> !excludeRoleCode.contains(String.valueOf(value))).map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
list.addAll(collect);
|
|
|
|
|
}
|
|
|
|
|
if (roleCodeList.contains(directExecutive)) {
|
|
|
|
|
list.addAll(ListUtil.of(RoleCodeEnum.find(25L), RoleCodeEnum.find(26L)));
|
|
|
|
|
}
|
|
|
|
|
return selectData.stream().filter(c -> list.contains(String.valueOf(c.getValue()))).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
return selectData.stream().filter(c -> "2".equals(c.getType())).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 是否存在角色code
|
|
|
|
|
*
|
|
|
|
|
* @param roleCode 角色code
|
|
|
|
|
* @return boolean 是否存在
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean existsRoleCode(String roleCode) {
|
|
|
|
|
return baseMapper.existsRoleCode(roleCode);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 是否存在角色code
|
|
|
|
|
*
|
|
|
|
|
* @param roleCode 角色code
|
|
|
|
|
* @return boolean 是否存在
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean existsRoleCode(String roleCode) {
|
|
|
|
|
return baseMapper.existsRoleCode(roleCode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增角色
|
|
|
|
|
*
|
|
|
|
|
* @param sysRole 角色对象
|
|
|
|
|
* @return boolean 是否新增成功
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean save(SysRole sysRole) {
|
|
|
|
|
if (existsRoleCode(sysRole.getCode())) {
|
|
|
|
|
throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR, "角色标识已存在!");
|
|
|
|
|
}
|
|
|
|
|
return SqlHelper.retBool(getBaseMapper().insert(sysRole));
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 新增角色
|
|
|
|
|
*
|
|
|
|
|
* @param sysRole 角色对象
|
|
|
|
|
* @return boolean 是否新增成功
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean save(SysRole sysRole) {
|
|
|
|
|
if (existsRoleCode(sysRole.getCode())) {
|
|
|
|
|
throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR, "角色标识已存在!");
|
|
|
|
|
}
|
|
|
|
|
return SqlHelper.retBool(getBaseMapper().insert(sysRole));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|