Commit 17c50c7c authored by 李博今's avatar 李博今

添加删除角色限制,并且查询时返回用户数

parent d1e5d6ac
......@@ -175,6 +175,8 @@ public enum ResultServiceEnums {
STARTDATE_AFTER_ENDDATE(93,"开始时间比结束时间晚"),
STARTDATE_EQUAL_ENDDATE(94,"开始时间等于结束时间"),
ROLE_HAS_USER(95,"仍然有绑定此角色的用户,不可删除此角色"),
;
private Integer code;
......
......@@ -32,9 +32,11 @@ public interface SysRoleRepository extends BaseMapper<SysRole> {
+ " <if test=\"roleName !=null and roleName != ''\">and role_name = #{roleName} </if> "
+ " order by create_date desc"
+ "</script>")
@ResultMap(value = "BaseResultMap" )
@ResultMap(value = "SelectAllAndUserNum" )
List<SysRole> queryRoles(SysRole sysRole);
//获得此角色的用户数
int countUserNum(String roleId);
@Select("<script>select * from s_role where "
+ "DEL_FLAG='0' "
......
......@@ -8,6 +8,7 @@ import org.hibernate.validator.constraints.NotBlank;
import org.rcisoft.core.entity.IdEntity;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
* Created by gaowenfeng on 2017/8/9.
......@@ -24,4 +25,7 @@ public class SysRole extends IdEntity<SysRole> {
@Length(min = 1,max = 64,message = "长度最小为1,最大为50")
@NotBlank
private String code;
@Transient
private int userNum;
}
......@@ -13,6 +13,7 @@ import org.rcisoft.sys.dept.entity.DeptRole;
import org.rcisoft.sys.role.dao.SysRoleRepository;
import org.rcisoft.sys.role.entity.SysRole;
import org.rcisoft.sys.role.service.SysRoleService;
import org.rcisoft.sys.user.dao.SysUserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
......@@ -35,6 +36,8 @@ public class SysRoleServiceImpl implements SysRoleService {
@Autowired
private SysRoleRepository sysRoleRepository;
@Autowired
private SysUserMapper sysUserMapper;
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override
......@@ -62,16 +65,23 @@ public class SysRoleServiceImpl implements SysRoleService {
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT)
@Override
public int removeRole(String id,String token) {
//删除该角色所有的关联信息
sysRoleRepository.deleteRoleMenuByRoleId(id);
sysRoleRepository.deleteUserRoleByRoleId(id);
SysRole sysRole = sysRoleRepository.selectByPrimaryKey(id);
sysRole.setDelFlag(DelStatus.DELETED.getStatus());
UserUtil.setCurrentMergeOperation(sysRole);
int line = sysRoleRepository.updateByPrimaryKeySelective(sysRole);
log.info(UserUtil.getUserInfoProp(token,UserUtil.USER_USERNAME)+"删除了ID为"+ sysRole.getBusinessId()+"的角色信息");
return line;
//获得当前是此角色的人数
int userCount = sysUserMapper.countUserByRole(id);
//如果仍然有用户是此角色,则该角色不可删除
if(userCount > 0){
throw new ServiceException(ResultServiceEnums.ROLE_HAS_USER);
}else{
//删除该角色所有的关联信息
sysRoleRepository.deleteRoleMenuByRoleId(id);
sysRoleRepository.deleteUserRoleByRoleId(id);
SysRole sysRole = sysRoleRepository.selectByPrimaryKey(id);
sysRole.setDelFlag(DelStatus.DELETED.getStatus());
UserUtil.setCurrentMergeOperation(sysRole);
int line = sysRoleRepository.updateByPrimaryKeySelective(sysRole);
log.info(UserUtil.getUserInfoProp(token,UserUtil.USER_USERNAME)+"删除了ID为"+ sysRole.getBusinessId()+"的角色信息");
return line;
}
}
@Override
......
......@@ -95,4 +95,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
@Select("select business_id from s_user where login_name = #{0} and del_flag = 0")
String selectByLoginName(String loginName);
@Select("select count(*) from s_r_user_role where role_id = #{roleId} ")
int countUserByRole(String roleId);
}
......@@ -13,6 +13,24 @@
<result column="update_date" property="updateDate" jdbcType="TIMESTAMP" />
<result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
</resultMap>
<resultMap id="SelectAllAndUserNum" type="org.rcisoft.sys.role.entity.SysRole">
<id column="business_id" jdbcType="VARCHAR" property="businessId" />
<result column="role_name" jdbcType="VARCHAR" property="roleName" />
<result column="CODE" jdbcType="VARCHAR" property="code" />
<result column="checked" jdbcType="VARCHAR" property="checked" />
<result column="CREATE_BY" property="createBy" jdbcType="VARCHAR" />
<result column="FLAG" property="flag" jdbcType="VARCHAR" />
<result column="UPDATE_BY" property="updateBy" jdbcType="VARCHAR" />
<result column="DEL_FLAG" property="delFlag" jdbcType="VARCHAR" />
<result column="update_date" property="updateDate" jdbcType="TIMESTAMP" />
<result column="create_date" property="createDate" jdbcType="TIMESTAMP" />
<association property="userNum" column="business_id" select="countUserNum"/>
</resultMap>
<select id="countUserNum" parameterType="string" resultType="int">
select count(*)
from s_r_user_role where role_id = #{id}
</select>
<resultMap id="drResultMap" type="org.rcisoft.sys.dept.entity.DeptRole">
<result column="drid" jdbcType="VARCHAR" property="id" />
<result column="rid" jdbcType="VARCHAR" property="rid" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment