diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SysMenuController.java b/backend/src/main/java/com/yfd/platform/system/controller/SysMenuController.java index 70a16a0..3ac00e2 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SysMenuController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SysMenuController.java @@ -90,9 +90,11 @@ public class SysMenuController { @PostMapping("/permissionAssignment") @Operation(summary = "获取分配权限(不含按钮)") @ResponseBody - public List> permissionAssignment(String roleId) { - - return sysMenuService.permissionAssignment(roleId); + public List> permissionAssignment(String code, String roleId) { + if (StrUtil.isBlank(code)) { + code = "1"; + } + return sysMenuService.permissionAssignment(code,roleId); } /********************************** diff --git a/backend/src/main/java/com/yfd/platform/system/controller/SysOrganizationController.java b/backend/src/main/java/com/yfd/platform/system/controller/SysOrganizationController.java index 9f51b71..45c0218 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/SysOrganizationController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/SysOrganizationController.java @@ -115,6 +115,9 @@ public class SysOrganizationController { if (StrUtil.isEmpty(sysOrganization.getIsvaild())) { sysOrganization.setIsvaild("1"); } + if("".equals(sysOrganization.getId())){ + sysOrganization.setId(null); + } //填写 当前用户名称 sysOrganization.setLastmodifier(userService.getUsername()); //填写 当前日期 diff --git a/backend/src/main/java/com/yfd/platform/system/controller/UserController.java b/backend/src/main/java/com/yfd/platform/system/controller/UserController.java index c90e345..ecf4003 100644 --- a/backend/src/main/java/com/yfd/platform/system/controller/UserController.java +++ b/backend/src/main/java/com/yfd/platform/system/controller/UserController.java @@ -64,7 +64,7 @@ public class UserController { public ResponseResult queryUsers(String orgid, String username, Page page) { - Page> mapPage = userService.queryUsers(orgid, + Page mapPage = userService.queryUsers(orgid, username, page); return ResponseResult.successData(mapPage); } diff --git a/backend/src/main/java/com/yfd/platform/system/domain/SysRole.java b/backend/src/main/java/com/yfd/platform/system/domain/SysRole.java index 1c5c5f1..68ab3ce 100644 --- a/backend/src/main/java/com/yfd/platform/system/domain/SysRole.java +++ b/backend/src/main/java/com/yfd/platform/system/domain/SysRole.java @@ -41,6 +41,7 @@ public class SysRole implements Serializable { /** * 1-超级管理员 2-单位管理员 3-普通用户 */ + @TableField("\"LEVEL\"") private String level; /** diff --git a/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java b/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java index 4aeaca7..57c5b85 100644 --- a/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java +++ b/backend/src/main/java/com/yfd/platform/system/domain/SysUser.java @@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode; import java.io.Serializable; import java.sql.Timestamp; +import java.util.List; /** *

@@ -113,4 +114,7 @@ public class SysUser implements Serializable { * 备用3 */ private String custom3; + + @TableField(exist = false) + List roles; } diff --git a/backend/src/main/java/com/yfd/platform/system/mapper/SysUserMapper.java b/backend/src/main/java/com/yfd/platform/system/mapper/SysUserMapper.java index ea57c78..7aae6a3 100644 --- a/backend/src/main/java/com/yfd/platform/system/mapper/SysUserMapper.java +++ b/backend/src/main/java/com/yfd/platform/system/mapper/SysUserMapper.java @@ -81,7 +81,7 @@ public interface SysUserMapper extends BaseMapper { ************************************/ boolean delInRoleUsersByUserid(@Param("userid") String userid,@Param("roleids")String[] roleids); - Page> queryUsers(String orgid, + Page queryUsers(String orgid, String username, Page page); diff --git a/backend/src/main/java/com/yfd/platform/system/service/ISysMenuService.java b/backend/src/main/java/com/yfd/platform/system/service/ISysMenuService.java index 7093e3b..b24b283 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/ISysMenuService.java +++ b/backend/src/main/java/com/yfd/platform/system/service/ISysMenuService.java @@ -95,7 +95,7 @@ public interface ISysMenuService extends IService { * isdisplay 是否显示 * 返回值说明: 菜单结构树集合 ***********************************/ - List> permissionAssignment(String roleId); + List> permissionAssignment(String code,String roleId); String uploadIcon(MultipartFile icon) throws FileNotFoundException; } diff --git a/backend/src/main/java/com/yfd/platform/system/service/IUserService.java b/backend/src/main/java/com/yfd/platform/system/service/IUserService.java index b141e53..e1ff507 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/IUserService.java +++ b/backend/src/main/java/com/yfd/platform/system/service/IUserService.java @@ -128,7 +128,7 @@ public interface IUserService extends IService { boolean addUserRoles(String roleid, String userid); //Page queryUsers(String orgid, String username, Page page); - Page> queryUsers(String orgid, String username, Page page); + Page queryUsers(String orgid, String username, Page page); /*********************************** * 用途说明:根据ID批量删除用户 diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/SysMenuServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/SysMenuServiceImpl.java index 56a1e02..af5dcad 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/SysMenuServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/SysMenuServiceImpl.java @@ -451,18 +451,19 @@ public class SysMenuServiceImpl extends ServiceImpl impl * 返回值说明: 菜单结构树集合 ***********************************/ @Override - public List> permissionAssignment(String roleId) { + public List> permissionAssignment(String code,String roleId) { - String code = sysMenuMapper.getSystemCodeById(roleId); - if (code == null) { - code = "1"; - } +// String code = sysMenuMapper.getSystemCodeById(roleId); +// if (code == null) { +// code = "1"; +// } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SysMenu::getSystemcode, code).select(SysMenu::getId, SysMenu::getParentid, SysMenu::getName).orderByAsc (SysMenu::getOrderno); - List> listAll = + List> mapList = sysMenuMapper.selectMaps(queryWrapper); + List> listAll = ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList); List listRole = sysMenuMapper.selectMenuByRoleId(roleId); for (Map map : listAll) { diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/SysOrganizationServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/SysOrganizationServiceImpl.java index 7e79194..4bc9925 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/SysOrganizationServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/SysOrganizationServiceImpl.java @@ -165,10 +165,12 @@ public class SysOrganizationServiceImpl extends ServiceImpl max = this.listObjs(queryWrapper); - //判断查询是否存在 存在转换成int类型并给codeMax替换值 - if (max.size() > 0) { - codeMax = - Integer.parseInt(max.get(0).toString().substring(max.get(0).toString().length() - 2)); + //判断查询是否存在 存在转换成 int 类型并给 codeMax 替换值 + if (!max.isEmpty() && max.getFirst() != null) { + String maxValue = max.getFirst().toString(); + if (maxValue.length() >= 2) { + codeMax = Integer.parseInt(maxValue.substring(maxValue.length() - 2)); + } } //2位数字编号 DecimalFormat df = new DecimalFormat("00"); diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/SysRoleServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/SysRoleServiceImpl.java index b14e1e6..f06dbd8 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/SysRoleServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/SysRoleServiceImpl.java @@ -49,8 +49,14 @@ public class SysRoleServiceImpl extends ServiceImpl impl QueryWrapper queryWrapper = new QueryWrapper<>(); List max = this.listObjs(queryWrapper.select("MAX(rolecode) " + "rolecode"));// 查询最大的编号 - if (max.size() > 0) { - codeMax = Integer.parseInt(max.get(0).toString());//判断查询是否存在 + // 存在转换成 int 类型并给 codeMax 替换值 + if (!max.isEmpty() && max.getFirst() != null) { + try { + codeMax = Integer.parseInt(max.getFirst().toString()); + } catch (NumberFormatException e) { + // 如果转换失败,保持默认值 0 + e.printStackTrace(); + } } // 存在转换成int类型并给codeMax替换值 String code = df.format(codeMax + 1); // 最大编号累加 diff --git a/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java b/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java index 73b1bf0..7e483f1 100644 --- a/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java +++ b/backend/src/main/java/com/yfd/platform/system/service/impl/UserServiceImpl.java @@ -27,6 +27,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import jakarta.annotation.Resource; @@ -224,46 +225,79 @@ public class UserServiceImpl extends ServiceImpl impleme *roleids 角色id * 返回值说明: 是否更新成功 ************************************/ - @Override - public Map updateById(SysUser sysUser, String roleids) { - //返回信息 - Map 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 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); + // ... existing code ... - } else { - //根据用户id 删除该用户角色关联 - ok = ok && sysUserMapper.delRoleUsersByUserid(sysUser.getId()); + @Override + @Transactional(rollbackFor = Exception.class) + public Map updateById(SysUser sysUser, String roleids) { + Map result = new HashMap<>(); + + try { + // 设置修改信息 + 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("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", "用户信息修改成功!"); - } else { + + } catch (Exception e) { + log.error("更新用户信息失败", e); result.put("status", "error"); - result.put("msg", "用户信息修改失败!"); + result.put("msg", "操作失败:" + e.getMessage()); + throw e; // 抛出异常,触发事务回滚 } return result; } + /** + * 处理用户角色分配(增量更新) + * @param userId 用户 ID + * @param roleIds 角色 ID 字符串(逗号分隔) + */ + private void handleUserRoles(String userId, String roleIds) { + // 获取用户当前角色 + List currentRoles = sysUserMapper.getRoleid(userId); + Set currentRoleSet = new HashSet<>(currentRoles != null ? currentRoles : Collections.emptyList()); + + // 解析新角色列表 + String[] newRoles = roleIds.split(","); + Set 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 public Map getOneById(String id) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -476,20 +510,16 @@ public class UserServiceImpl extends ServiceImpl impleme }*/ @Override - public Page> queryUsers(String orgid, + public Page queryUsers(String orgid, String username, Page page) { - Page> mapPage = sysUserMapper.queryUsers(orgid, + Page mapPage = sysUserMapper.queryUsers(orgid, username, page); - List> list = new ArrayList<>(); - List> records = mapPage.getRecords(); - for (Map record : records) { - String id = (String) record.get("id"); + ;mapPage.getRecords().forEach(record -> { + String id = record.getId(); List sysRoles = sysRoleMapper.getRoleByUserId(id); - record.put("roles", sysRoles); - list.add(record); - } - mapPage.setRecords(list); + record.setRoles(sysRoles); + }); return mapPage; } diff --git a/backend/src/main/resources/mapper/system/SysMenuMapper.xml b/backend/src/main/resources/mapper/system/SysMenuMapper.xml index 3eacc8e..85869c7 100644 --- a/backend/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/backend/src/main/resources/mapper/system/SysMenuMapper.xml @@ -33,7 +33,7 @@ DISTINCT m.id, m.parentid, - m.`name`, + m.name, m.opturl, m.icon, m.orderno, diff --git a/backend/src/main/resources/mapper/system/SysRoleMapper.xml b/backend/src/main/resources/mapper/system/SysRoleMapper.xml index 0fcf2af..c2c0d97 100644 --- a/backend/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/backend/src/main/resources/mapper/system/SysRoleMapper.xml @@ -91,7 +91,15 @@ diff --git a/backend/src/main/resources/mapper/system/SysUserMapper.xml b/backend/src/main/resources/mapper/system/SysUserMapper.xml index f89b6dc..dfc56f0 100644 --- a/backend/src/main/resources/mapper/system/SysUserMapper.xml +++ b/backend/src/main/resources/mapper/system/SysUserMapper.xml @@ -29,7 +29,7 @@ - insert into sys_role_users value (#{id},#{roleid},#{userid}) + insert into sys_role_users values (#{id},#{roleid},#{userid}) @@ -47,11 +47,13 @@ select roleid from sys_role_users where userid=#{userid} - + - SELECT DISTINCT u.id, u.usertype, @@ -62,7 +64,7 @@ u.phone, u.avatar, u.orgid, - u.`status`, + u.status, u.lastmodifier, u.lastmodifydate FROM @@ -73,7 +75,7 @@ and u.orgid = #{orgid} - and u.username like concat('%', #{username},'%') + and u.username LIKE '%' || #{username} || '%' ORDER BY u.lastmodifydate DESC