Browse Source

角色查询地区权限筛选

huangqizheng/feature-20250718222252-导出修改完毕
sunjiabei 1 month ago
parent
commit
a845073aa9
  1. 3
      src/main/java/com/example/demo/domain/vo/RoleVo.java
  2. 4
      src/main/java/com/example/demo/mapper/RoleMapper.java
  3. 16
      src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java
  4. 21
      src/main/resources/mapper/RoleMapper.xml

3
src/main/java/com/example/demo/domain/vo/RoleVo.java

@ -31,6 +31,7 @@ public class RoleVo implements Serializable {
private Integer priority;//优先级 private Integer priority;//优先级
private Integer fatherId;//上级角色id private Integer fatherId;//上级角色id
private String fatherName;//上级角色名称 private String fatherName;//上级角色名称
private String market;//所属市场
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
private Date createTime; // 创建时间 private Date createTime; // 创建时间
@ -40,4 +41,6 @@ public class RoleVo implements Serializable {
List<Integer> menuIds;//拥有的菜单id List<Integer> menuIds;//拥有的菜单id
List<MenuVo> tree;//菜单树 List<MenuVo> tree;//菜单树
private List<String> markets; // 地区列表
} }

4
src/main/java/com/example/demo/mapper/RoleMapper.java

@ -7,7 +7,6 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
import java.util.Random;
/** /**
* @program: gold-java * @program: gold-java
@ -27,8 +26,9 @@ public interface RoleMapper {
//查找角色id //查找角色id
Role selectByRoleId(Integer id); Role selectByRoleId(Integer id);
//查找全部角色 //查找全部角色
List<RoleVo> selectAllRole();
List<RoleVo> selectAllRole(List<String> markets);
//新建角色 //新建角色
void addRole(RoleVo roleVo); void addRole(RoleVo roleVo);

16
src/main/java/com/example/demo/serviceImpl/RoleServiceImpl.java

@ -7,6 +7,8 @@ import com.example.demo.domain.vo.Result;
import com.example.demo.domain.vo.RoleVo; import com.example.demo.domain.vo.RoleVo;
import com.example.demo.mapper.RefundMapper; import com.example.demo.mapper.RefundMapper;
import com.example.demo.mapper.RoleMapper; import com.example.demo.mapper.RoleMapper;
import com.example.demo.service.AdminService;
import com.example.demo.service.GeneralService;
import com.example.demo.service.MenuService; import com.example.demo.service.MenuService;
import com.example.demo.service.RoleService; import com.example.demo.service.RoleService;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
@ -33,6 +35,10 @@ public class RoleServiceImpl implements RoleService {
private RoleMapper roleMapper; private RoleMapper roleMapper;
@Autowired @Autowired
private MenuService menuService; private MenuService menuService;
@Autowired
private AdminService adminService;
@Autowired
private GeneralService generalService;
//新增角色 //新增角色
@Override @Override
@ -51,6 +57,9 @@ public class RoleServiceImpl implements RoleService {
if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) { if (roleVo.getMenuIds() == null || roleVo.getMenuIds().isEmpty()) {
return Result.error("权限为空"); return Result.error("权限为空");
} }
if(roleVo.getMarket() == null|| roleVo.getMarket().isEmpty()){
return Result.error("所属市场为空");
}
else { else {
if(roleVo.getFatherId() != 2) { if(roleVo.getFatherId() != 2) {
for(Integer menuId : roleVo.getMenuIds()){ for(Integer menuId : roleVo.getMenuIds()){
@ -106,7 +115,9 @@ public class RoleServiceImpl implements RoleService {
//查找全部角色 //查找全部角色
@Override @Override
public List<RoleVo> selectAllRole() { public List<RoleVo> selectAllRole() {
return roleMapper.selectAllRole();
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getRoleMarket(account);
return roleMapper.selectAllRole(markets);
} }
@Override @Override
@ -117,6 +128,9 @@ public class RoleServiceImpl implements RoleService {
//分页查找角色 //分页查找角色
@Override @Override
public PageInfo<RoleVo> selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) { public PageInfo<RoleVo> selectBy(Integer pageNum, Integer pageSize, RoleVo roleVo) {
String account = adminService.getCurrentAdminAccount();
List<String> markets = generalService.getRoleMarket(account);
roleVo.setMarkets(markets);
PageHelper.startPage(pageNum, pageSize); PageHelper.startPage(pageNum, pageSize);
List<RoleVo> roleVos = roleMapper.selectBy(roleVo); List<RoleVo> roleVos = roleMapper.selectBy(roleVo);
// 遍历 roleVos 列表 // 遍历 roleVos 列表

21
src/main/resources/mapper/RoleMapper.xml

@ -19,6 +19,15 @@
<select id="selectAllRole" resultType="com.example.demo.domain.vo.RoleVo"> <select id="selectAllRole" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name FROM role SELECT id,role_name FROM role
<where>
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
AND market IN
<foreach collection="markets" item="market" open="(" close=")" separator=",">
#{market}
</foreach>
</if>
</where>
</select> </select>
<select id="selectByFatherId" resultType="com.example.demo.domain.vo.RoleVo"> <select id="selectByFatherId" resultType="com.example.demo.domain.vo.RoleVo">
SELECT id,role_name,priority FROM role SELECT id,role_name,priority FROM role
@ -31,9 +40,8 @@
<!-- 插入角色信息 --> <!-- 插入角色信息 -->
<insert id="addRole" parameterType="com.example.demo.domain.vo.RoleVo" useGeneratedKeys="true" keyProperty="id"> <insert id="addRole" parameterType="com.example.demo.domain.vo.RoleVo" useGeneratedKeys="true" keyProperty="id">
INSERT INTO role INSERT INTO role
(role_name, priority, father_id)
VALUES
(#{roleName}, #{priority}, #{fatherId})
(role_name, priority, father_id, market)
VALUES (#{roleName}, #{priority}, #{fatherId}, #{market})
</insert> </insert>
<!-- 删除 role_menu 表中对应角色的数据 --> <!-- 删除 role_menu 表中对应角色的数据 -->
@ -57,6 +65,13 @@
-- 自连接,通过 father_id 关联父角色 -- 自连接,通过 father_id 关联父角色
LEFT JOIN role father ON r.father_id = father.id LEFT JOIN role father ON r.father_id = father.id
<where> <where>
<!-- 判断 market 是否不为总部且 markets 不为空 -->
<if test="markets != null and markets.size() > 0 and '总部' not in markets">
AND r.market IN
<foreach collection="markets" item="market" open="(" close=")" separator=",">
#{market}
</foreach>
</if>
<if test="roleName != null and roleName != ''"> <if test="roleName != null and roleName != ''">
r.role_name LIKE CONCAT('%', #{roleName}, '%') r.role_name LIKE CONCAT('%', #{roleName}, '%')
</if> </if>

Loading…
Cancel
Save