fix: 优化oraclesql不适用问题
This commit is contained in:
parent
30c469d7aa
commit
0cef3936e2
@ -90,9 +90,11 @@ public class SysMenuController {
|
|||||||
@PostMapping("/permissionAssignment")
|
@PostMapping("/permissionAssignment")
|
||||||
@Operation(summary = "获取分配权限(不含按钮)")
|
@Operation(summary = "获取分配权限(不含按钮)")
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
public List<Map<String, Object>> permissionAssignment(String roleId) {
|
public List<Map<String, Object>> permissionAssignment(String code, String roleId) {
|
||||||
|
if (StrUtil.isBlank(code)) {
|
||||||
return sysMenuService.permissionAssignment(roleId);
|
code = "1";
|
||||||
|
}
|
||||||
|
return sysMenuService.permissionAssignment(code,roleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**********************************
|
/**********************************
|
||||||
|
|||||||
@ -115,6 +115,9 @@ public class SysOrganizationController {
|
|||||||
if (StrUtil.isEmpty(sysOrganization.getIsvaild())) {
|
if (StrUtil.isEmpty(sysOrganization.getIsvaild())) {
|
||||||
sysOrganization.setIsvaild("1");
|
sysOrganization.setIsvaild("1");
|
||||||
}
|
}
|
||||||
|
if("".equals(sysOrganization.getId())){
|
||||||
|
sysOrganization.setId(null);
|
||||||
|
}
|
||||||
//填写 当前用户名称
|
//填写 当前用户名称
|
||||||
sysOrganization.setLastmodifier(userService.getUsername());
|
sysOrganization.setLastmodifier(userService.getUsername());
|
||||||
//填写 当前日期
|
//填写 当前日期
|
||||||
|
|||||||
@ -64,7 +64,7 @@ public class UserController {
|
|||||||
public ResponseResult queryUsers(String orgid,
|
public ResponseResult queryUsers(String orgid,
|
||||||
String username, Page<SysUser> page) {
|
String username, Page<SysUser> page) {
|
||||||
|
|
||||||
Page<Map<String, Object>> mapPage = userService.queryUsers(orgid,
|
Page<SysUser> mapPage = userService.queryUsers(orgid,
|
||||||
username, page);
|
username, page);
|
||||||
return ResponseResult.successData(mapPage);
|
return ResponseResult.successData(mapPage);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -41,6 +41,7 @@ public class SysRole implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 1-超级管理员 2-单位管理员 3-普通用户
|
* 1-超级管理员 2-单位管理员 3-普通用户
|
||||||
*/
|
*/
|
||||||
|
@TableField("\"LEVEL\"")
|
||||||
private String level;
|
private String level;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
@ -113,4 +114,7 @@ public class SysUser implements Serializable {
|
|||||||
* 备用3
|
* 备用3
|
||||||
*/
|
*/
|
||||||
private String custom3;
|
private String custom3;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
List<SysRole> roles;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -81,7 +81,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
|
|||||||
************************************/
|
************************************/
|
||||||
boolean delInRoleUsersByUserid(@Param("userid") String userid,@Param("roleids")String[] roleids);
|
boolean delInRoleUsersByUserid(@Param("userid") String userid,@Param("roleids")String[] roleids);
|
||||||
|
|
||||||
Page<Map<String, Object>> queryUsers(String orgid,
|
Page<SysUser> queryUsers(String orgid,
|
||||||
String username,
|
String username,
|
||||||
Page<SysUser> page);
|
Page<SysUser> page);
|
||||||
|
|
||||||
|
|||||||
@ -95,7 +95,7 @@ public interface ISysMenuService extends IService<SysMenu> {
|
|||||||
* isdisplay 是否显示
|
* isdisplay 是否显示
|
||||||
* 返回值说明: 菜单结构树集合
|
* 返回值说明: 菜单结构树集合
|
||||||
***********************************/
|
***********************************/
|
||||||
List<Map<String, Object>> permissionAssignment(String roleId);
|
List<Map<String, Object>> permissionAssignment(String code,String roleId);
|
||||||
|
|
||||||
String uploadIcon(MultipartFile icon) throws FileNotFoundException;
|
String uploadIcon(MultipartFile icon) throws FileNotFoundException;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -128,7 +128,7 @@ public interface IUserService extends IService<SysUser> {
|
|||||||
boolean addUserRoles(String roleid, String userid);
|
boolean addUserRoles(String roleid, String userid);
|
||||||
|
|
||||||
//Page<SysUser> queryUsers(String orgid, String username, Page<SysUser> page);
|
//Page<SysUser> queryUsers(String orgid, String username, Page<SysUser> page);
|
||||||
Page<Map<String,Object>> queryUsers(String orgid, String username, Page<SysUser> page);
|
Page<SysUser> queryUsers(String orgid, String username, Page<SysUser> page);
|
||||||
|
|
||||||
/***********************************
|
/***********************************
|
||||||
* 用途说明:根据ID批量删除用户
|
* 用途说明:根据ID批量删除用户
|
||||||
|
|||||||
@ -451,18 +451,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
|||||||
* 返回值说明: 菜单结构树集合
|
* 返回值说明: 菜单结构树集合
|
||||||
***********************************/
|
***********************************/
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> permissionAssignment(String roleId) {
|
public List<Map<String, Object>> permissionAssignment(String code,String roleId) {
|
||||||
|
|
||||||
String code = sysMenuMapper.getSystemCodeById(roleId);
|
// String code = sysMenuMapper.getSystemCodeById(roleId);
|
||||||
if (code == null) {
|
// if (code == null) {
|
||||||
code = "1";
|
// code = "1";
|
||||||
}
|
// }
|
||||||
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||||
queryWrapper.eq(SysMenu::getSystemcode, code).select(SysMenu::getId,
|
queryWrapper.eq(SysMenu::getSystemcode, code).select(SysMenu::getId,
|
||||||
SysMenu::getParentid, SysMenu::getName).orderByAsc
|
SysMenu::getParentid, SysMenu::getName).orderByAsc
|
||||||
(SysMenu::getOrderno);
|
(SysMenu::getOrderno);
|
||||||
List<Map<String, Object>> listAll =
|
List<Map<String, Object>> mapList =
|
||||||
sysMenuMapper.selectMaps(queryWrapper);
|
sysMenuMapper.selectMaps(queryWrapper);
|
||||||
|
List<Map<String, Object>> listAll = ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList);
|
||||||
List<String> listRole =
|
List<String> listRole =
|
||||||
sysMenuMapper.selectMenuByRoleId(roleId);
|
sysMenuMapper.selectMenuByRoleId(roleId);
|
||||||
for (Map<String, Object> map : listAll) {
|
for (Map<String, Object> map : listAll) {
|
||||||
|
|||||||
@ -166,9 +166,11 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
|
|||||||
}
|
}
|
||||||
List<Object> max = this.listObjs(queryWrapper);
|
List<Object> max = this.listObjs(queryWrapper);
|
||||||
//判断查询是否存在 存在转换成 int 类型并给 codeMax 替换值
|
//判断查询是否存在 存在转换成 int 类型并给 codeMax 替换值
|
||||||
if (max.size() > 0) {
|
if (!max.isEmpty() && max.getFirst() != null) {
|
||||||
codeMax =
|
String maxValue = max.getFirst().toString();
|
||||||
Integer.parseInt(max.get(0).toString().substring(max.get(0).toString().length() - 2));
|
if (maxValue.length() >= 2) {
|
||||||
|
codeMax = Integer.parseInt(maxValue.substring(maxValue.length() - 2));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//2位数字编号
|
//2位数字编号
|
||||||
DecimalFormat df = new DecimalFormat("00");
|
DecimalFormat df = new DecimalFormat("00");
|
||||||
|
|||||||
@ -49,8 +49,14 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|||||||
QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
|
||||||
List<Object> max = this.listObjs(queryWrapper.select("MAX(rolecode) " +
|
List<Object> max = this.listObjs(queryWrapper.select("MAX(rolecode) " +
|
||||||
"rolecode"));// 查询最大的编号
|
"rolecode"));// 查询最大的编号
|
||||||
if (max.size() > 0) {
|
// 存在转换成 int 类型并给 codeMax 替换值
|
||||||
codeMax = Integer.parseInt(max.get(0).toString());//判断查询是否存在
|
if (!max.isEmpty() && max.getFirst() != null) {
|
||||||
|
try {
|
||||||
|
codeMax = Integer.parseInt(max.getFirst().toString());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
// 如果转换失败,保持默认值 0
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 存在转换成int类型并给codeMax替换值
|
// 存在转换成int类型并给codeMax替换值
|
||||||
String code = df.format(codeMax + 1); // 最大编号累加
|
String code = df.format(codeMax + 1); // 最大编号累加
|
||||||
|
|||||||
@ -27,6 +27,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
|
|||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@ -224,46 +225,79 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
|
|||||||
*roleids 角色id
|
*roleids 角色id
|
||||||
* 返回值说明: 是否更新成功
|
* 返回值说明: 是否更新成功
|
||||||
************************************/
|
************************************/
|
||||||
@Override
|
// ... existing code ...
|
||||||
public Map updateById(SysUser sysUser, String roleids) {
|
|
||||||
//返回信息
|
|
||||||
Map<String, String> result = new HashMap<>();
|
|
||||||
//获取当前用户 最近修改者替换
|
|
||||||
sysUser.setLastmodifier(getUsername());
|
|
||||||
//获取当前时间 最近修改日期替换
|
|
||||||
sysUser.setLastmodifydate(new Timestamp(System.currentTimeMillis()));
|
|
||||||
//根据修改
|
|
||||||
boolean ok = this.updateById(sysUser);
|
|
||||||
if (ok) {
|
|
||||||
if (StrUtil.isNotEmpty(roleids)) {
|
|
||||||
String[] roles = roleids.split(",");
|
|
||||||
List<String> list = sysUserMapper.getRoleid(sysUser.getId());
|
|
||||||
for (String role : roles) {
|
|
||||||
if (!list.contains(role)) {
|
|
||||||
//系统生成id
|
|
||||||
String id = IdUtil.fastSimpleUUID();
|
|
||||||
//新增sys_role_users表数据
|
|
||||||
ok = ok && sysUserMapper.addUserRoles(id, role,
|
|
||||||
sysUser.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//删除不包含的角色
|
|
||||||
sysUserMapper.delInRoleUsersByUserid(sysUser.getId(), roles);
|
|
||||||
|
|
||||||
} else {
|
@Override
|
||||||
//根据用户id 删除该用户角色关联
|
@Transactional(rollbackFor = Exception.class)
|
||||||
ok = ok && sysUserMapper.delRoleUsersByUserid(sysUser.getId());
|
public Map updateById(SysUser sysUser, String roleids) {
|
||||||
}
|
Map<String, String> result = new HashMap<>();
|
||||||
result.put("status", "sucess");
|
|
||||||
result.put("msg", "用户信息修改成功!");
|
try {
|
||||||
} else {
|
// 设置修改信息
|
||||||
|
String currentUsername = getUsername();
|
||||||
|
Timestamp currentTime = new Timestamp(System.currentTimeMillis());
|
||||||
|
sysUser.setLastmodifier(currentUsername);
|
||||||
|
sysUser.setLastmodifydate(currentTime);
|
||||||
|
|
||||||
|
// 更新用户信息
|
||||||
|
boolean ok = this.updateById(sysUser);
|
||||||
|
if (!ok) {
|
||||||
result.put("status", "error");
|
result.put("status", "error");
|
||||||
result.put("msg", "用户信息修改失败!");
|
result.put("msg", "用户信息修改失败!");
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理角色分配
|
||||||
|
String userId = sysUser.getId();
|
||||||
|
if (StrUtil.isNotEmpty(roleids)) {
|
||||||
|
handleUserRoles(userId, roleids);
|
||||||
|
} else {
|
||||||
|
// 清空所有角色
|
||||||
|
sysUserMapper.delRoleUsersByUserid(userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
result.put("status", "sucess");
|
||||||
|
result.put("msg", "用户信息修改成功!");
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("更新用户信息失败", e);
|
||||||
|
result.put("status", "error");
|
||||||
|
result.put("msg", "操作失败:" + e.getMessage());
|
||||||
|
throw e; // 抛出异常,触发事务回滚
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理用户角色分配(增量更新)
|
||||||
|
* @param userId 用户 ID
|
||||||
|
* @param roleIds 角色 ID 字符串(逗号分隔)
|
||||||
|
*/
|
||||||
|
private void handleUserRoles(String userId, String roleIds) {
|
||||||
|
// 获取用户当前角色
|
||||||
|
List<String> currentRoles = sysUserMapper.getRoleid(userId);
|
||||||
|
Set<String> currentRoleSet = new HashSet<>(currentRoles != null ? currentRoles : Collections.emptyList());
|
||||||
|
|
||||||
|
// 解析新角色列表
|
||||||
|
String[] newRoles = roleIds.split(",");
|
||||||
|
Set<String> newRoleSet = new HashSet<>(Arrays.asList(newRoles));
|
||||||
|
|
||||||
|
// 需要新增的角色(新角色 - 当前角色)
|
||||||
|
for (String roleId : newRoles) {
|
||||||
|
if (!currentRoleSet.contains(roleId)) {
|
||||||
|
String id = IdUtil.fastSimpleUUID();
|
||||||
|
sysUserMapper.addUserRoles(id, roleId, userId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 需要删除的角色(当前角色 - 新角色)
|
||||||
|
sysUserMapper.delInRoleUsersByUserid(userId, newRoles);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... existing code ...
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map getOneById(String id) {
|
public Map getOneById(String id) {
|
||||||
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
||||||
@ -476,20 +510,16 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<Map<String, Object>> queryUsers(String orgid,
|
public Page<SysUser> queryUsers(String orgid,
|
||||||
String username,
|
String username,
|
||||||
Page<SysUser> page) {
|
Page<SysUser> page) {
|
||||||
Page<Map<String, Object>> mapPage = sysUserMapper.queryUsers(orgid,
|
Page<SysUser> mapPage = sysUserMapper.queryUsers(orgid,
|
||||||
username, page);
|
username, page);
|
||||||
List<Map<String, Object>> list = new ArrayList<>();
|
;mapPage.getRecords().forEach(record -> {
|
||||||
List<Map<String, Object>> records = mapPage.getRecords();
|
String id = record.getId();
|
||||||
for (Map<String, Object> record : records) {
|
|
||||||
String id = (String) record.get("id");
|
|
||||||
List<SysRole> sysRoles = sysRoleMapper.getRoleByUserId(id);
|
List<SysRole> sysRoles = sysRoleMapper.getRoleByUserId(id);
|
||||||
record.put("roles", sysRoles);
|
record.setRoles(sysRoles);
|
||||||
list.add(record);
|
});
|
||||||
}
|
|
||||||
mapPage.setRecords(list);
|
|
||||||
return mapPage;
|
return mapPage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -33,7 +33,7 @@
|
|||||||
DISTINCT
|
DISTINCT
|
||||||
m.id,
|
m.id,
|
||||||
m.parentid,
|
m.parentid,
|
||||||
m.`name`,
|
m.name,
|
||||||
m.opturl,
|
m.opturl,
|
||||||
m.icon,
|
m.icon,
|
||||||
m.orderno,
|
m.orderno,
|
||||||
|
|||||||
@ -91,7 +91,15 @@
|
|||||||
<!--根据用户id获取角色信息-->
|
<!--根据用户id获取角色信息-->
|
||||||
<select id="getRoleByUserId"
|
<select id="getRoleByUserId"
|
||||||
resultType="com.yfd.platform.system.domain.SysRole">
|
resultType="com.yfd.platform.system.domain.SysRole">
|
||||||
SELECT r.id,r.rolename,r.orgscope FROM sys_role_users ru INNER JOIN sys_role r ON ru.roleid =r.id WHERE ru.userid =#{id}
|
SELECT
|
||||||
|
r.id,
|
||||||
|
r.rolename,
|
||||||
|
r.orgscope
|
||||||
|
FROM
|
||||||
|
sys_role_users ru
|
||||||
|
INNER JOIN sys_role r ON ru.roleid = r.id
|
||||||
|
WHERE
|
||||||
|
ru.userid =#{id}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!--根据角色id获取用户id-->
|
<!--根据角色id获取用户id-->
|
||||||
|
|||||||
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
<!--用户分配角色 系统角色用户对照新增数据-->
|
<!--用户分配角色 系统角色用户对照新增数据-->
|
||||||
<insert id="addUserRoles">
|
<insert id="addUserRoles">
|
||||||
insert into sys_role_users value (#{id},#{roleid},#{userid})
|
insert into sys_role_users values (#{id},#{roleid},#{userid})
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
<!--根据用户id 和角色id 查询 系统角色用户对照表-->
|
<!--根据用户id 和角色id 查询 系统角色用户对照表-->
|
||||||
@ -49,9 +49,11 @@
|
|||||||
|
|
||||||
<!--根据用户表 id 查询角色表最大级别-->
|
<!--根据用户表 id 查询角色表最大级别-->
|
||||||
<select id="getMaxLevel" resultType="String">
|
<select id="getMaxLevel" resultType="String">
|
||||||
select min(level) from sys_role where id in (select roleid from sys_role_users where userid=#{userid})
|
SELECT MIN(r."LEVEL")
|
||||||
|
FROM sys_role r
|
||||||
|
WHERE r.id IN ( SELECT roleid FROM sys_role_users WHERE userid = #{userId} )
|
||||||
</select>
|
</select>
|
||||||
<select id="queryUsers" resultType="java.util.Map">
|
<select id="queryUsers" resultType="com.yfd.platform.system.domain.SysUser">
|
||||||
SELECT DISTINCT
|
SELECT DISTINCT
|
||||||
u.id,
|
u.id,
|
||||||
u.usertype,
|
u.usertype,
|
||||||
@ -62,7 +64,7 @@
|
|||||||
u.phone,
|
u.phone,
|
||||||
u.avatar,
|
u.avatar,
|
||||||
u.orgid,
|
u.orgid,
|
||||||
u.`status`,
|
u.status,
|
||||||
u.lastmodifier,
|
u.lastmodifier,
|
||||||
u.lastmodifydate
|
u.lastmodifydate
|
||||||
FROM
|
FROM
|
||||||
@ -73,7 +75,7 @@
|
|||||||
and u.orgid = #{orgid}
|
and u.orgid = #{orgid}
|
||||||
</if>
|
</if>
|
||||||
<if test="username != null">
|
<if test="username != null">
|
||||||
and u.username like concat('%', #{username},'%')
|
and u.username LIKE '%' || #{username} || '%'
|
||||||
</if>
|
</if>
|
||||||
ORDER BY u.lastmodifydate DESC
|
ORDER BY u.lastmodifydate DESC
|
||||||
</select>
|
</select>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user