This commit is contained in:
jingna 2025-05-19 18:30:57 +08:00
commit 11c1d236b7
17 changed files with 469 additions and 374 deletions

View File

@ -6,6 +6,7 @@ import io.gisbi.application.system.domain.Menu;
import io.gisbi.application.system.service.IMenuService;
import io.gisbi.config.ResponseResult;
import io.gisbi.utils.AuthUtils;
import io.micrometer.common.util.StringUtils;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
@ -29,54 +30,10 @@ public class MenuController {
@Resource
private IMenuService menuService;
/***********************************
* 用途说明获取菜单结构树含按钮
* 参数说明
* appId 应用ID 关联应用系统
* name 名称
* isdisplay 是否显示
* 返回值说明: 菜单结构树集合
***********************************/
@PostMapping("/getMenuButtonTree")
@ResponseBody
public List<Map<String, Object>> getMenuButtonTree(String appId,String name,String isdisplay) {
return menuService.getMenuButtonTree(appId, name, isdisplay);
}
/***********************************
* 用途说明获取菜单结构树不含按钮
* 参数说明
* appId 应用ID 关联应用系统
* name 名称
* isdisplay 是否显示
* 返回值说明: 菜单结构树集合
***********************************/
@PostMapping("/getMenuTreegetMenuTree")
@ResponseBody
public List<Map<String, Object>> getMenuTree(String appId,
String name,
String isdisplay) {
return menuService.getMenuTree(appId, name, isdisplay);
}
/***********************************
* 用途说明根据id查询菜单或按钮详情
* 参数说明
* id 菜单或按钮表id
* 返回值说明: 菜单或按钮表对象
***********************************/
@PostMapping("/getMenuById")
@ResponseBody
public ResponseResult getMenuById(String id) {
Menu menu = menuService.getById(id);
return ResponseResult.successData(menu);
}
/***********************************
* 用途说明新增菜单及按钮
* 参数说明
* sysMenu 菜单或按钮表对象
* sysMenu 菜单表对象
* 返回值说明: 是否添加成功提示
***********************************/
@PostMapping("/addMenu")
@ -99,6 +56,9 @@ public class MenuController {
@PostMapping("/updateMenuById")
@ResponseBody
public ResponseResult updateById(@RequestBody Menu menu) {
if (StringUtils.isEmpty(menu.getId())) {
return ResponseResult.error("没有菜单ID");
}
//填写 当前用户名称
menu.setLastmodifier(AuthUtils.getUser().getUserId().toString());
//填写 当前日期
@ -111,6 +71,37 @@ public class MenuController {
}
}
/***********************************
* 用途说明获取菜单结构树含按钮
* 参数说明
* appId 应用ID 关联应用系统
* name 名称
* isdisplay 是否显示
* 返回值说明: 菜单结构树集合
***********************************/
@PostMapping("/getMenuTree")
@ResponseBody
public List<Map<String, Object>> getMenuTree(String appId, String name, String isdisplay) {
return menuService.getMenuTree(appId, name, isdisplay);
}
/***********************************
* 用途说明根据id查询菜单
* 参数说明
* id 菜单或按钮表id
* 返回值说明: 菜单表对象
***********************************/
@PostMapping("/getMenuById")
@ResponseBody
public ResponseResult getMenuById(String id) {
Menu menu = menuService.getById(id);
return ResponseResult.successData(menu);
}
/***********************************
* 用途说明根据id删除菜单或按钮
* 参数说明
@ -119,8 +110,8 @@ public class MenuController {
***********************************/
@PostMapping("/deleteMenuById")
@ResponseBody
public ResponseResult deleteById(@RequestParam String id) {
boolean ok = menuService.deleteById(id);
public ResponseResult deleteMenuById(@RequestParam String id) {
boolean ok = menuService.deleteMenuById(id);
if (ok) {
return ResponseResult.success();
} else {
@ -142,8 +133,32 @@ public class MenuController {
//根据id 修改是否显示 最近修改人最近修改时间
updateWrapper.eq("id", id)
.set("isdisplay", isdisplay)
.set( "lastmodifier", AuthUtils.getUser().getUserId().toString())
.set("lastmodifydate",new Timestamp(System.currentTimeMillis()));
.set("lastmodifier", AuthUtils.getUser().getUserId().toString())
.set("lastmodifydate", new Timestamp(System.currentTimeMillis()));
boolean ok = menuService.update(updateWrapper);
if (ok) {
return ResponseResult.success();
} else {
return ResponseResult.error();
}
}
/***********************************
* 用途说明更新关联模块ID
* 参数说明
* id 菜单及按钮表id
* moduleId 关联模块ID
* 返回值说明: 是否更新成功
***********************************/
@PostMapping("/setModuleId")
@ResponseBody
public ResponseResult setModuleId(String id, String moduleId) {
UpdateWrapper<Menu> updateWrapper = new UpdateWrapper<>();
//根据id 修改关联模块ID 最近修改人最近修改时间
updateWrapper.eq("id", id)
.set("module_id", moduleId)
.set("lastmodifier", AuthUtils.getUser().getUserId().toString())
.set("lastmodifydate", new Timestamp(System.currentTimeMillis()));
boolean ok = menuService.update(updateWrapper);
if (ok) {
return ResponseResult.success();

View File

@ -1,8 +1,8 @@
package io.gisbi.application.system.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.xiaoymin.knife4j.core.util.StrUtil;
import io.gisbi.application.system.domain.Organization;
import io.gisbi.application.system.service.IOrganizationService;
import io.gisbi.utils.AuthUtils;
@ -31,37 +31,6 @@ public class OrganizationController {
private IOrganizationService organizationService;
/***********************************
* 用途说明获取企业列表
* 参数说明
* id 企业id
* orgName 部门名称
* 返回值说明: 企业列表集合
***********************************/
@PostMapping("/getOrganizations")
@ResponseBody
public List<Map<String, Object>> getOrganizations(String appId, String orgtype, String parentid, String orgName) {
return organizationService.getOrganizations(appId,orgtype, parentid, orgName);
}
/***********************************
* 用途说明根据企业ID查询部门信息
* 参数说明
* id 企业id
* orgName 部门名称
* 返回值说明: 系统部门框架对象
***********************************/
@PostMapping("/getOrganizationById")
@ResponseBody
public ResponseResult getOrganizationById(String id, String orgName) {
if (StrUtil.isBlank(id)) {
return ResponseResult.error("查询失败!");
}
Organization Organization = organizationService.getOrganizationById(id);
return ResponseResult.successData(Organization);
}
/***********************************
* 用途说明新增系统组织框架
* 参数说明
@ -92,6 +61,10 @@ public class OrganizationController {
@PostMapping("/updateOrganizationById")
@ResponseBody
public ResponseResult updateOrganizationById(@RequestBody Organization organization) {
if (StrUtil.isEmpty(organization.getId())) {
return ResponseResult.error("组织信息id不能为空");
}
if (organization == null) {
return ResponseResult.error("组织信息不能为空");
}
@ -108,6 +81,42 @@ public class OrganizationController {
}
}
/***********************************
* 用途说明获取企业列表
* 参数说明
* id 企业id
* orgName 部门名称
* orgtype 组织类型01-公司 02-部门
* parentid 上级ID
* 返回值说明: 企业列表集合
***********************************/
@PostMapping("/getOrganizations")
@ResponseBody
public List<Map<String, Object>> getOrganizations(String appId, String orgtype, String parentid, String orgName) {
return organizationService.getOrganizations(appId,orgtype, parentid, orgName);
}
/***********************************
* 用途说明根据ID查询信息
* 参数说明
* id 企业id
* orgName 部门名称
* 返回值说明: 系统部门框架对象
***********************************/
@PostMapping("/getOrganizationById")
@ResponseBody
public ResponseResult getOrganizationById(String id) {
if (StrUtil.isBlank(id)) {
return ResponseResult.error("查询失败!");
}
Organization Organization = organizationService.getOrganizationById(id);
return ResponseResult.successData(Organization);
}
/***********************************
* 用途说明设置组织是否有效
* 参数说明
@ -153,10 +162,12 @@ public class OrganizationController {
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
List<Organization> list = organizationService.list(queryWrapper.eq(Organization::getParentid, orgId));
List<String> ids = list.stream().map(Organization::getId).collect(Collectors.toList());
//删除当前id及其子节点
boolean isOk = organizationService.removeById(orgId);
if (!isOk) {
continue;
}
//删除节点
for (String oid : ids) {
organizationService.removeById(oid);
}

View File

@ -7,6 +7,7 @@ import io.gisbi.application.system.service.IRoleService;
import io.gisbi.application.system.service.IUserService;
import io.gisbi.config.ResponseResult;
import io.gisbi.utils.AuthUtils;
import io.micrometer.common.util.StringUtils;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
@ -32,32 +33,6 @@ public class RoleController {
@Resource
private IUserService userService;
/***********************************
* 用途说明查询所有角色
* 参数说明
* rolename 角色名称
* 返回值说明: 查询都有角色
***********************************/
@PostMapping("/listRole")
@ResponseBody
public List<Role> listRole(String appId, String rolename) {
return roleService.listRole(appId,rolename);
}
/***********************************
* 用途说明根据Id获取当个角色
* 参数说明
* id 角色表id
* 返回值说明: 根据id查询到角色详情
***********************************/
@PostMapping("/getRoleById")
@ResponseBody
public ResponseResult getRoleById(String id) {
Role role = roleService.getById(id);
return ResponseResult.successData(role);
}
/***********************************
* 用途说明新增角色
* 参数说明
@ -100,6 +75,33 @@ public class RoleController {
}
}
/***********************************
* 用途说明查询所有角色
* 参数说明
* rolename 角色名称
* 返回值说明: 查询都有角色
***********************************/
@PostMapping("/listRole")
@ResponseBody
public List<Role> listRole(String appId, String rolename) {
return roleService.listRole(appId,rolename);
}
/***********************************
* 用途说明根据Id获取单个角色
* 参数说明
* id 角色表id
* 返回值说明: 根据id查询到角色详情
***********************************/
@PostMapping("/getRoleById")
@ResponseBody
public ResponseResult getRoleById(String id) {
Role role = roleService.getById(id);
return ResponseResult.successData(role);
}
/***********************************
* 用途说明根据id删除角色
* 参数说明
@ -109,10 +111,33 @@ public class RoleController {
@PostMapping("/deleteRoleById")
@ResponseBody
public ResponseResult deleteRoleById(@RequestParam String id) {
roleService.deleteById(id);
boolean result = roleService.deleteById(id);
if (!result) {
return ResponseResult.error("删除角色失败,可能角色不存在");
}
return ResponseResult.success();
}
/***********************************
* 用途说明根据ID批量删除角色
* 参数说明
*ids 用户id集合
* 返回值说明: 判断是否删除成功
************************************/
@PostMapping("/deleteRoleByIds")
@ResponseBody
public ResponseResult deleteRoleByIds(String ids) {
if (StringUtils.isBlank(ids)) {
return ResponseResult.error("参数为空");
}
boolean ok = roleService.deleteRoleByIds(ids);
if (ok) {
return ResponseResult.success();
} else {
return ResponseResult.error();
}
}
/***********************************
* 用途说明设置角色是否有效
* 参数说明
@ -137,6 +162,32 @@ public class RoleController {
}
}
/***********************************
* 用途说明角色菜单权限
* 参数说明
* id 角色id
* menuIds 权限id字符串
* 返回值说明: 是否分配成功
***********************************/
@PostMapping("/setMenuByRoleId")
@ResponseBody
public ResponseResult setMenuByRoleId(String id, String menuIds) {
if (StrUtil.isBlank(id)) {
return ResponseResult.error("参数为空");
}
if (StrUtil.isBlank(menuIds)) {
return ResponseResult.success();
}
boolean ok = roleService.setMenuByRoleId(id, menuIds);
if (ok) {
return ResponseResult.success();
} else {
return ResponseResult.error();
}
}
/***********************************
* 用途说明角色添加用户
* 参数说明

View File

@ -9,10 +9,8 @@ import io.micrometer.common.util.StringUtils;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;
import java.sql.Timestamp;
import java.util.Map;
import static org.bouncycastle.asn1.x500.style.RFC4519Style.cn;
/**
* <p>

View File

@ -2,7 +2,7 @@ package io.gisbi.application.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import io.gisbi.application.system.domain.Role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.*;
import java.util.List;
@ -13,14 +13,16 @@ public interface RoleMapper extends BaseMapper<Role> {
* 参数说明 id 角色id
* 返回值说明: void
***********************************/
List<Role> getRoleByUserId(String id);
@Select("SELECT r.id,r.rolename,r.rolecode FROM app_role_users ru INNER JOIN app_role r ON ru.roleid = r.id WHERE ru.userid = #{id}")
List<Role> getRoleByUserId( @Param("id") String id);
/**********************************
* 用途说明: 根据用户id获取角色id
* 参数说明 userid 用户id
* 返回值说明: void
***********************************/
List<String> getRoleUsers(String userid, String appId);
@Select("SELECT roleid FROM app_role_users WHERE userid = #{userid} AND app_id = #{appId}")
List<String> getRoleUsers(@Param("userid") String userid, @Param("appId") String appId);
/***********************************
* 用途说明根据角色id删除角色菜单关联
@ -28,7 +30,8 @@ public interface RoleMapper extends BaseMapper<Role> {
*id 角色id
* 返回值说明: 是否删除成功
***********************************/
void deleteRoleMenus(String roleId);
@Delete("DELETE FROM app_role_menu WHERE roleid= #{id}")
void deleteRoleMenus( @Param("id") String id);
/***********************************
* 用途说明根据角色id删除角色用户关联
@ -36,7 +39,8 @@ public interface RoleMapper extends BaseMapper<Role> {
*id 角色id
* 返回值说明: 是否删除成功
***********************************/
void deleteRoleUser(String roleId);
@Delete(" DELETE FROM app_role_users WHERE roleid= #{id}")
void deleteRoleUser( @Param("id")String id);
/***********************************
* 用途说明根据 角色id和用户id 删除 admin除外
@ -45,5 +49,33 @@ public interface RoleMapper extends BaseMapper<Role> {
* urserid 用户id
* 返回值说明: 是否删除成功
***********************************/
@Delete("delete from app_role_users where userid !=(select u.id from app_user u where u.account=\"admin\") and roleid=#{roleid} and userid=#{urserid}\n")
boolean deleteRoleUsers(String roleid, String urserid);
@Insert("<script>" +
"INSERT INTO app_role_menu " +
"<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">" +
" <if test=\"id != null and id != ''\">id,</if>" +
" <if test=\"appid != null and appid != ''\">app_id,</if>" + // 字段名 app_id 对应参数 appid
" <if test=\"roleid != null and roleid != ''\">roleid,</if>" +
" <if test=\"menuid != null and menuid != ''\">menuid</if>" +
"</trim>" +
" VALUES " +
"<trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">" +
" <if test=\"id != null and id != ''\">#{id},</if>" +
" <if test=\"appid != null and appid != ''\">#{appid},</if>" +
" <if test=\"roleid != null and roleid != ''\">#{roleid},</if>" +
" <if test=\"menuid != null and menuid != ''\">#{menuid}</if>" +
"</trim>" +
"</script>")
void addRoleMenu(@Param("id") String id, @Param("appid") String appid, @Param("roleid") String roleid, @Param("menuid") String menuid);
/***********************************
* 用途说明根据菜单id删除角色菜单关联
* 参数说明
*id 菜单id
* 返回值说明: 是否删除成功
***********************************/
@Delete("DELETE FROM app_role_menu WHERE menuid= #{id}")
void deleteRoleMenusByMenuId(@Param("id") String id);
}

View File

@ -3,8 +3,7 @@ package io.gisbi.application.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.gisbi.application.system.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.*;
import java.util.List;
import java.util.Map;
@ -20,7 +19,8 @@ public interface UserMapper extends BaseMapper<User> {
* userid 用户id
* 返回值说明:
************************************/
boolean addUserRoles(@Param("id") String id, @Param("appid") String appid, @Param("roleid") String roleid,@Param("userid") String userid);
@Insert("INSERT INTO app_role_users(id, app_id, roleid, userid) VALUES (#{id}, #{appid}, #{roleid}, #{userid})")
boolean addUserRoles(@Param("id") String id, @Param("appid") String appid, @Param("roleid") String roleid, @Param("userid") String userid);
/***********************************
* 用途说明根据用户表id查询角色表所有角色id
@ -28,16 +28,9 @@ public interface UserMapper extends BaseMapper<User> {
* userid 用户id
* 返回值说明:
************************************/
@Select(" SELECT roleid FROM app_role_users WHERE userid = #{userid} ")
List<String> getRoleid(@Param("userid") String id);
/***********************************
* 用途说明根据用户id删除所分配的不包含角色
* 参数说明
* userid 用户id
* roleids 多个角色id
* 返回值说明:
************************************/
void delInRoleUsersByUserid(@Param("userid") String userid,@Param("roleids")String[] roleids);
/***********************************
* 用途说明根据用户id删除所分配的角色
@ -45,6 +38,7 @@ public interface UserMapper extends BaseMapper<User> {
* userid 用户id
* 返回值说明:
************************************/
@Delete("delete from app_role_users where userid=#{userid}")
boolean delRoleUsersByUserid( @Param("userid") String id);
/***********************************
@ -55,7 +49,30 @@ public interface UserMapper extends BaseMapper<User> {
* page 分页条件
* 返回值说明:
************************************/
Page<Map<String, Object>> queryUsers(String orgid,String appId, String nickname, Page<User> page);
@Select("<script>" +
"SELECT DISTINCT\n" +
" u.id, u.usertype, u.username, u.nickname,\n" +
" u.email, u.phone, u.avatar, u.orgid,\n" +
" u.status, u.lastmodifier, u.lastmodifydate\n" +
"FROM app_user u\n" +
"WHERE u.usertype != 0\n" +
"<if test='orgid != null'>\n" +
" AND u.orgid = #{orgid}\n" +
"</if>\n" +
"<if test='appId != null'>\n" +
" AND u.app_id = #{appId}\n" +
"</if>\n" +
"<if test='nickname != null'>\n" +
" AND u.nickname LIKE CONCAT('%', #{nickname}, '%')\n" +
"</if>\n" +
"ORDER BY u.lastmodifydate DESC" +
"</script>")
Page<Map<String, Object>> queryUsers(
@Param("orgid") String orgid,
@Param("appId") String appId,
@Param("nickname") String nickname,
Page<?> page
);
/***********************************
@ -64,6 +81,10 @@ public interface UserMapper extends BaseMapper<User> {
* idList 用户id集合
* 返回值说明:
************************************/
@Delete("<script>" +
"DELETE FROM app_role_users WHERE userid IN " +
"<foreach collection='idList' item='id' open='(' separator=',' close=')'>#{id}</foreach>" +
"</script>")
void delRoleUsersByUserIds(List<String> idList);
/***********************************
@ -73,6 +94,6 @@ public interface UserMapper extends BaseMapper<User> {
* roleid 角色id
* 返回值说明:
************************************/
@Select(" select id, app_id, roleid, userid from app_role_users where roleid = #{roleid} and userid = #{userid} ")
List<Map> getRoleUsersByid(@Param("roleid") String roleid,@Param("userid") String userid);
}

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.gisbi.application.system.mapper.RoleMapper">
</mapper>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.gisbi.application.system.mapper.UserMapper">
</mapper>

View File

@ -22,18 +22,9 @@ public interface IMenuService extends IService<Menu> {
* isdisplay 是否显示
* 返回值说明: 菜单结构树集合
***********************************/
List<Map<String, Object>> getMenuButtonTree(String appId, String name, String isdisplay);
/***********************************
* 用途说明获取菜单结构树不含按钮
* 参数说明
* appId 应用ID 关联应用系统
* name 名称
* isdisplay 是否显示
* 返回值说明: 菜单结构树集合
***********************************/
List<Map<String, Object>> getMenuTree(String appId, String name, String isdisplay);
/***********************************
* 用途说明新增菜单及按钮
* 参数说明
@ -48,5 +39,5 @@ public interface IMenuService extends IService<Menu> {
* id 删除列的id
* 返回值说明: 是否删除成功
***********************************/
boolean deleteById(String id);
boolean deleteMenuById(String id);
}

View File

@ -18,14 +18,19 @@ public interface IOrganizationService extends IService<Organization> {
/***********************************
* 用途说明获取企业列表
* 参数说明
* id 企业id
* orgName 部门名称
* orgtype 组织类型01-公司 02-部门
* parentid 上级ID
* 返回值说明: 企业列表集合
***********************************/
List<Map<String, Object>> getOrganizations(String appId, String orgtype, String parentid, String orgname);
/***********************************
* 用途说明根据企业ID查询部门信息
* 用途说明根据ID查询信息
* 参数说明
* id 企业id
* id 企业id
* orgName 部门名称
* 返回值说明: 系统部门框架对象
***********************************/
Organization getOrganizationById(String id);

View File

@ -38,7 +38,13 @@ public interface IRoleService extends IService<Role> {
***********************************/
List<Role> listRole(String appId, String rolename);
void deleteById(String id);
/***********************************
* 用途说明根据id删除角色
* 参数说明
* id 角色id
* 返回值说明: 是否删除成功
***********************************/
Boolean deleteById(String id);
/***********************************
* 用途说明删除角色用户
@ -47,4 +53,21 @@ public interface IRoleService extends IService<Role> {
* 返回值说明: 是否新增成功
***********************************/
boolean deleteRoleUsers(String roleid, String userids);
/***********************************
* 用途说明根据ID批量删除角色
* 参数说明
*ids 用户id集合
* 返回值说明: 判断是否删除成功
************************************/
boolean deleteRoleByIds(String ids);
/***********************************
* 用途说明角色菜单权限
* 参数说明
* id 角色id
* menuIds 权限id字符串
* 返回值说明: 是否分配成功
***********************************/
boolean setMenuByRoleId(String id, String menuIds);
}

View File

@ -5,15 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.gisbi.application.system.domain.Menu;
import io.gisbi.application.system.mapper.MenuMapper;
import io.gisbi.application.system.mapper.RoleMapper;
import io.gisbi.application.system.service.IMenuService;
import io.gisbi.utils.AuthUtils;
import io.micrometer.common.util.StringUtils;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
@ -34,12 +33,11 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
@Resource
private MenuMapper menuMapper;
//菜单图片路径
@Value("${file-space.system}")
private String sysetmPath;
@Resource
private RoleMapper roleMapper;
@Override
public List<Map<String, Object>> getMenuButtonTree(String appId, String name, String isdisplay) {
public List<Map<String, Object>> getMenuTree(String appId, String name, String isdisplay) {
List<Map<String, Object>> listMap = null;
//不带名称查询返回树结构
if (StringUtils.isEmpty(name)) {
@ -61,28 +59,12 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
return listMap;
}
@Override
public List<Map<String, Object>> getMenuTree(String appId, String name, String isdisplay) {
QueryWrapper<Menu> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(isdisplay)) {
queryWrapper.eq("isdisplay", isdisplay);
} else {
queryWrapper.eq("isdisplay", 1);
}
//根据系统 ,类型不为2 显示序号 正序排序
queryWrapper.eq("parentid", "0").eq("systemcode", appId).ne(
"type", "02").orderByAsc("orderno");
List<Map<String, Object>> listMap = this.listMaps(queryWrapper);
for (int i = 0; i < listMap.size(); i++) {
List<Map<String, Object>> childList = child(listMap.get(i).get(
"id").toString(), appId, name, isdisplay, "02");//查询下一子集
listMap.get(i).put("children", childList); //添加新列 子集
}
return listMap;
}
/***********************************
* 用途说明新增菜单及按钮
* 参数说明
* sysMenu 菜单或按钮表对象
* 返回值说明: 是否添加成功提示
***********************************/
@Override
public boolean addMenu(Menu menu) {
String parentId = menu.getParentid();
@ -151,38 +133,50 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
return this.save(menu);
}
/***********************************
* 用途说明根据id删除菜单或按钮
* 参数说明
* id 删除列的id
* 返回值说明: 是否删除成功
***********************************/
@Override
public boolean deleteById(String id) {
@Transactional(rollbackFor = Exception.class)
public boolean deleteMenuById(String id) {
//根据id查询
Menu menu = this.getById(id);
//图片路径
String iconname = sysetmPath + "menu" + File.separator + menu.getIcon();
//删除图标
new File(iconname).delete();
//根据id删除
// 根据id删除主菜单
boolean isOk = this.removeById(id);
//删除成功同步更新表数据
if (isOk) {
//1 创建list集合用于封装所有删除目录或菜单id值
List<String> idList = new ArrayList<>();
this.selectPermissionChildById(id, idList);
if (idList.size() > 0) {
menuMapper.deleteBatchIds(idList);
}
QueryWrapper<Menu> queryWrapper = new QueryWrapper<>();
//根据上级id 查询 根据 orderno 正序排序
queryWrapper.eq("parentid", menu.getParentid()).orderByAsc(
"orderno");
List<Menu> list = this.list(queryWrapper);
for (int i = 0; i < list.size(); i++) {
Menu menuData = list.get(i);
//更新序列号
menuData.setOrderno(i + 1);
}
//更新表数据
this.updateBatchById(list);
if (!isOk) {
return false;
}
// 通过ID 删除角色菜单关联信息
roleMapper.deleteRoleMenusByMenuId(id);
//1 创建list集合用于封装所有删除目录或菜单id值 如果下面有子项 都删除
List<String> idList = new ArrayList<>();
this.selectPermissionChildById(id, idList);
if (!idList.isEmpty()) {
menuMapper.deleteBatchIds(idList);
//通过ID集合 删除角色菜单关联信息
for (String menuId : idList) {
roleMapper.deleteRoleMenusByMenuId(menuId);
}
}
QueryWrapper<Menu> queryWrapper = new QueryWrapper<>();
//根据上级id 查询 根据 orderno 正序排序
queryWrapper.eq("parentid", menu.getParentid()).orderByAsc(
"orderno");
List<Menu> list = this.list(queryWrapper);
for (int i = 0; i < list.size(); i++) {
Menu menuData = list.get(i);
//更新序列号
menuData.setOrderno(i + 1);
}
//更新表数据
this.updateBatchById(list);
return isOk;
}
@ -204,12 +198,12 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
/***********************************
* 用途说明查询菜单及按钮树状图
* 用途说明查询菜单
* 参数说明
* parentid 上级id
*systemcode 系统
* isdisplay 是否显示
* type 按钮
* type 菜单类型
* 返回值说明: 菜单结构树集合
***********************************/
private List<Map<String, Object>> child(String parentid,

View File

@ -1,11 +1,9 @@
package io.gisbi.application.system.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.xiaoymin.knife4j.core.util.StrUtil;
import io.gisbi.application.system.domain.Organization;
import io.gisbi.application.system.domain.User;
import io.gisbi.application.system.mapper.OrganizationMapper;
import io.gisbi.application.system.service.IOrganizationService;
import io.gisbi.application.system.service.IUserService;
@ -43,6 +41,10 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
/***********************************
* 用途说明获取企业列表
* 参数说明
* id 企业id
* orgName 部门名称
* orgtype 组织类型01-公司 02-部门
* parentid 上级ID
* 返回值说明: 企业列表集合
***********************************/
@Override
@ -87,8 +89,8 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
LambdaQueryWrapper<Organization> queryWrapper = new LambdaQueryWrapper<>();
//根据上级id 查询
queryWrapper.eq(StringUtils.isNotBlank(parentid), Organization::getParentid, parentid);
queryWrapper.eq(StringUtils.isNotBlank(appId), Organization::getAppId, appId);
queryWrapper.eq(Organization::getParentid, parentid);
queryWrapper.eq(Organization::getAppId, appId);
//根据部门名称查询
queryWrapper.like(StringUtils.isNotBlank(orgname), Organization::getOrgname, orgname);
@ -107,9 +109,10 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
}
/***********************************
* 用途说明根据企业ID查询部门信息
* 用途说明根据ID查询信息
* 参数说明
* id 企业id
* id 企业id
* orgName 部门名称
* 返回值说明: 系统部门框架对象
***********************************/
@Override

View File

@ -1,21 +1,27 @@
package io.gisbi.application.system.service.impl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.gisbi.application.system.domain.Role;
import io.gisbi.application.system.domain.User;
import io.gisbi.application.system.mapper.RoleMapper;
import io.gisbi.application.system.service.IRoleService;
import io.gisbi.utils.AuthUtils;
import io.netty.channel.ChannelInboundHandlerAdapter;
import jakarta.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.sql.Timestamp;
import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
@ -28,6 +34,9 @@ import java.util.List;
@Service
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {
private static final Logger LOGGER = LoggerFactory.getLogger(ChannelInboundHandlerAdapter.class);
@Resource
private RoleMapper roleMapper;
@ -104,13 +113,87 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
* 返回值说明: 是否删除成功
***********************************/
@Override
public void deleteById(String id) {
//根据id删除 角色
boolean isOk = this.removeById(id);
//删除角色菜单关联
@Transactional(rollbackFor = Exception.class)
public Boolean deleteById(String id) {
try {
// 根据id删除角色
boolean isOk = this.removeById(id);
if (!isOk) {
return false;
}
// 删除角色菜单关联
roleMapper.deleteRoleMenus(id);
// 删除角色用户关联
roleMapper.deleteRoleUser(id);
return true;
} catch (Exception e) {
// 可结合日志记录异常信息
LOGGER.error("删除角色失败ID: {}", id, e);
throw e; // 抛出异常以便事务回滚
}
}
/***********************************
* 用途说明根据ID批量删除角色
* 参数说明
*ids 用户id集合
* 返回值说明: 判断是否删除成功
************************************/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteRoleByIds(String ids) {
if (StringUtils.isBlank(ids)) {
// 参数为空直接返回失败
return false;
}
final String SEPARATOR = ",";
List<String> idList = Arrays.asList(ids.split(SEPARATOR));
boolean allSuccess = true;
for (String id : idList) {
if (StringUtils.isBlank(id)) {
// 跳过非法空ID
continue;
}
// 删除角色信息
if (!this.removeById(id)) {
allSuccess = false;
break;
}
// 删除角色菜单关联
roleMapper.deleteRoleMenus(id);
// 删除角色用户关联
roleMapper.deleteRoleUser(id);
}
return allSuccess;
}
/***********************************
* 用途说明角色菜单权限
* 参数说明
* id 角色id
* menuIds 权限id字符串
* 返回值说明: 是否分配成功
***********************************/
@Override
public boolean setMenuByRoleId(String id, String menuIds) {
Role role = roleMapper.selectById(id);
// 删除角色所对应的权限
roleMapper.deleteRoleMenus(id);
//删除角色用户关联
roleMapper.deleteRoleUser(id);
// 重新赋予权限
String[] ids = menuIds.split(",");
for (String menuId : ids) {
String uuid = IdUtil.fastSimpleUUID();
roleMapper.addRoleMenu(uuid, role.getAppId(), id, menuId);
}
return true;
}
/***********************************
@ -130,4 +213,6 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
}
return ok;
}
}

View File

@ -10,7 +10,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.gisbi.application.system.domain.Role;
import io.gisbi.application.system.domain.User;
import io.gisbi.application.system.mapper.OrganizationMapper;
import io.gisbi.application.system.mapper.RoleMapper;
import io.gisbi.application.system.mapper.UserMapper;
import io.gisbi.application.system.service.IUserService;
@ -23,8 +22,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.File;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -124,22 +121,20 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
//修改用户信息
boolean ok = this.updateById(user);
if (ok) {
//判断角色id是否为空 如果不为空 先删除 后增加 如果为空删除用户下所有角色信息
if (StringUtils.isNotEmpty(roleids)) {
String[] roles = roleids.split(",");
Set<String> roleSet = new HashSet<>(Arrays.asList(roles));
List<String> existingRoles = userMapper.getRoleid(user.getId());
//首先根绝用户ID删除用户角色关联表中的数据
ok = ok && userMapper.delRoleUsersByUserid(user.getId());
// 添加新角色
for (String role : roles) {
if (!existingRoles.contains(role)) {
//系统生成id
String id = IdUtil.fastSimpleUUID();
ok = ok && userMapper.addUserRoles(id, user.getAppId(), role, user.getId());
}
//系统生成id
String id = IdUtil.fastSimpleUUID();
ok = ok && userMapper.addUserRoles(id, user.getAppId(), role, user.getId());
}
// 删除不在 roleids 中的角色
userMapper.delInRoleUsersByUserid(user.getId(), roles);
} else {
// 删除所有关联角色
ok = ok && userMapper.delRoleUsersByUserid(user.getId());
@ -183,7 +178,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
}
List<Map<String, Object>> list = new ArrayList<>(records.size());
//根据用户ID获取对应的角色信息
for (Map<String, Object> record : records) {
Object idObj = record.get("id");
@ -218,23 +213,17 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
public Boolean deleteUserById(String id) {
//根据id查询
User user = this.getById(id);
//账号头像存储地址
//String imgName = systempath + File.separator + "user" + File.separator + user.getAvatar();
String imgName = File.separator + "user" + File.separator + user.getAvatar();
//如果是管理员不能删除
if ("admin".equals(user.getUsername())) {
return false;
} else {
//删除用户及对应的橘色信息
boolean isOk = this.removeById(id);
//判断是否删除成功
if (isOk) {
//根据用户id 删除该用户角色关联
userMapper.delRoleUsersByUserid(id);
//判断是否存在 账号头像 存在删除
if (StringUtils.isNotEmpty(user.getAvatar())) {
// FileUtil.del(imgName);
}
return false;
return true;
} else {
return false;
}
@ -248,6 +237,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
* 返回值说明: 判断是否删除成功
************************************/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean deleteUserByIds(String ids) {
List<String> idList = Arrays.asList(ids.split(","));
@ -260,21 +250,13 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
if (names.contains("admin")) {
return false;
} else {
//批量删除用户
int result = userMapper.deleteBatchIds(idList);
if (result <= 0) {
return false;
}
// 根据ID删除用户与角色的关联信息
userMapper.delRoleUsersByUserIds(idList);
List<String> avatars =
sysUsers.stream().map(User::getAvatar).collect(Collectors.toList());
if (avatars.size() > 0) {
for (String avatar : avatars) {
//账号头像存储地址
// String imgName =systempath + File.separator + "user" + File.separator + avatar;
// FileUtil.del(imgName);
}
}
return true;
}
}
@ -310,10 +292,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
@Override
public boolean setStatus(String id, String status) {
boolean isOk = false;
// //根据当前用户id 查询角色表的级别 currentUser.getUser() 获取当前用户id
// String level = userMapper.getMaxLevel(id);
// //判断当前用户级别 管理员及以上权限
// if (Integer.parseInt(level) <= 2) {
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
//根据id修改用户状态最近修改人最近修改时间
updateWrapper.eq("id", id)
@ -322,10 +300,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
.set("lastmodifier", AuthUtils.getUser().getUserId().toString());
//是否修改成功
isOk = this.update(updateWrapper);
//}
return isOk;
}
/***********************************
* 用途说明角色添加用户
* 参数说明
@ -334,7 +313,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
* 返回值说明: 是否新增成功
***********************************/
@Override
public boolean addUserRole(String roleid, String userid) {
public boolean addUserRoles(String roleid, String userid) {
boolean isOk = true;
if (StringUtils.isEmpty(roleid) || StringUtils.isEmpty(userid)) {
return false;
@ -359,7 +338,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IU
* account 登录名称
* 返回值说明: 重复返回 false 否则返回 true
************************************/
private boolean isExistAccount(String appid,String username) {
private boolean isExistAccount(String appid, String username) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if (this.list(queryWrapper.eq("app_id", appid).eq("username", username)).size() > 0) {
//判断 查询登录账号 结果集是否为null 重复返回 false 否则返回 tree

View File

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.gisbi.application.system.mapper.RoleMapper">
<!--根据用户id获取角色信息-->
<select id="getRoleByUserId">
SELECT r.id,
r.rolename,
r.rolecode
FROM app_role_users ru
INNER JOIN app_role r ON ru.roleid = r.id
WHERE ru.userid = #{id}
</select>
<!--根据用户id获取角色id-->
<select id="getRoleUsers" resultType="java.lang.String">
SELECT roleid
FROM app_role_users
WHERE userid = #{userid}
AND app_id = #{appId}
</select>
<!--根据角色ID删除菜单与角色关联信息-->
<delete id="deleteRoleMenus">
DELETE FROM app_role_menu WHERE roleid= #{id}
</delete>
<!--根据角色ID删除用户与角色关联信息-->
<delete id="deleteRoleUser">
DELETE FROM app_role_users WHERE roleid= #{id}
</delete>
<!--根据 角色id和用户id 删除系统角色用户对照 -->
<delete id="deleteRoleUsers">
delete from app_role_users where userid !=(select u.id from app_user u where u.account="admin") and roleid=#{roleid} and userid=#{urserid}
</delete>
</mapper>

View File

@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.gisbi.application.system.mapper.UserMapper">
<!--用户分配角色 系统角色用户对照新增数据-->
<insert id="addUserRoles">
INSERT INTO app_role_users(id, app_id, roleid, userid)
VALUES (#{id}, #{appid}, #{roleid}, #{userid});
</insert>
<!--根据用户表id查询角色表所有角色id-->
<select id="getRoleid" resultType="String">
SELECT roleid
FROM app_role_users
WHERE userid = #{userid}
</select>
<!--根据用户id删除所分配的不包含角色-->
<delete id="delInRoleUsersByUserid">
delete from app_role_users
where
userid=#{userid}
and roleid not in
<foreach collection="roleids" item="roleids" open="(" separator=","
close=")">
#{roleids}
</foreach>
</delete>
<!--根据用户id删除所分配的角色-->
<delete id="delRoleUsersByUserid">
delete from sys_role_users where userid=#{userid}
</delete>
<!--根据条件分页查询用户信息-->
<select id="queryUsers" resultType="java.util.Map">
SELECT DISTINCT
u.id,
u.usertype,
u.username,
u.nickname,
u.email,
u.phone,
u.avatar,
u.orgid,
u.status,
u.lastmodifier,
u.lastmodifydate
FROM
app_user u
WHERE
1 = 1
AND u.usertype != 0
<if test="orgid != null">
AND u.orgid = #{orgid}
</if>
<if test="appId != null">
AND u.app_id = #{appId}
</if>
<if test="nickname != null">
AND u.nickname LIKE CONCAT('%',#{nickname},'%')
</if>
ORDER BY
u.lastmodifydate DESC
</select>
<!--根据ID删除用户与角色的关联信息-->
<delete id="delRoleUsersByUserIds">
DELETE FROM app_role_users WHERE userid IN
<foreach collection="idList" item="id" open="(" separator=","
close=")">
#{id}
</foreach>
</delete>
<!--根据用户id 和角色id 查询 系统角色用户对照表-->
<select id="getRoleUsersByid" resultType="java.util.Map">
select id, app_id, roleid, userid
from app_role_users
where roleid = #{roleid}
and userid = #{userid}
</select>
</mapper>