package doumeemes.biz.system.impl;
|
|
import doumeemes.biz.system.SystemDataPermissionBiz;
|
import doumeemes.core.constants.DataPermissionConstants;
|
import doumeemes.core.constants.ResponseStatus;
|
import doumeemes.core.exception.BusinessException;
|
import doumeemes.core.model.LoginUserInfo;
|
import doumeemes.core.utils.Constants;
|
import doumeemes.dao.system.model.SystemDataPermission;
|
import doumeemes.dao.system.model.SystemRole;
|
import doumeemes.service.system.SystemDataPermissionService;
|
import doumeemes.service.system.SystemRoleService;
|
import org.apache.shiro.SecurityUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
@Service
|
public class SystemDataPermissionBizImpl implements SystemDataPermissionBiz {
|
|
@Autowired
|
private SystemDataPermissionService systemDataPermissionService;
|
@Autowired
|
private SystemRoleService systemRoleService;
|
|
@Override
|
public Integer create(SystemDataPermission systemDataPermission) {
|
//验证角色是否正确
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
SystemRole role = new SystemRole();
|
role.setDeleted(Boolean.FALSE);
|
role.setType(Constants.ROLETYPE.plat);
|
if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
role.setType(Constants.ROLETYPE.com);
|
role.setCompanyId(user.getCompany().getId());
|
}
|
if(systemRoleService.findOne(role) == null){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,权限信息不存在!");
|
}
|
// 验证是否已存在配置
|
this.check(systemDataPermission, "该业务模块与角色存在有效的数据权限,请勿重复配置");
|
// 清空自定义数据
|
if (
|
DataPermissionConstants.Type.DEPARTMENT_CUSTOM.getCode() != systemDataPermission.getType() &&
|
DataPermissionConstants.Type.POSITION_CUSTOM.getCode() != systemDataPermission.getType()
|
) {
|
systemDataPermission.setCustomData("");
|
}
|
return systemDataPermissionService.create(systemDataPermission);
|
}
|
|
@Override
|
public void update(SystemDataPermission systemDataPermission) {
|
//验证角色是否正确
|
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
|
SystemRole role = new SystemRole();
|
role.setDeleted(Boolean.FALSE);
|
role.setType(Constants.ROLETYPE.plat);
|
if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
|
role.setType(Constants.ROLETYPE.com);
|
role.setCompanyId(user.getCompany().getId());
|
}
|
if(systemRoleService.findOne(role) == null){
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,权限信息不存在!");
|
}
|
// 清空自定义数据
|
if (
|
DataPermissionConstants.Type.DEPARTMENT_CUSTOM.getCode() != systemDataPermission.getType() &&
|
DataPermissionConstants.Type.POSITION_CUSTOM.getCode() != systemDataPermission.getType()
|
) {
|
systemDataPermission.setCustomData("");
|
}
|
systemDataPermissionService.updateById(systemDataPermission);
|
}
|
|
@Override
|
public void updateStatus(SystemDataPermission systemDataPermission) {
|
if (!systemDataPermission.getDisabled()) {
|
SystemDataPermission dbPermission = systemDataPermissionService.findById(systemDataPermission.getId());
|
if (dbPermission == null) {
|
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage());
|
}
|
// 验证是否已存在配置
|
this.check(dbPermission, "该业务模块与角色存在有效的数据权限,请先禁用后再尝试启动此数据权限");
|
}
|
systemDataPermissionService.updateById(systemDataPermission);
|
}
|
|
private void check (SystemDataPermission systemDataPermission, String message) {
|
// 验证是否已存在配置
|
SystemDataPermission queryDto = new SystemDataPermission();
|
queryDto.setRoleId(systemDataPermission.getRoleId());
|
queryDto.setBusinessCode(systemDataPermission.getBusinessCode());
|
queryDto.setDisabled(Boolean.FALSE);
|
queryDto.setDeleted(Boolean.FALSE);
|
if (systemDataPermissionService.count(queryDto) > 0) {
|
throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), message);
|
}
|
}
|
}
|