Merge branch 'master-tw'
This commit is contained in:
commit
7901796705
@ -90,9 +90,11 @@ public class SysMenuController {
|
||||
@PostMapping("/permissionAssignment")
|
||||
@Operation(summary = "获取分配权限(不含按钮)")
|
||||
@ResponseBody
|
||||
public List<Map<String, Object>> permissionAssignment(String roleId) {
|
||||
|
||||
return sysMenuService.permissionAssignment(roleId);
|
||||
public List<Map<String, Object>> permissionAssignment(String code, String roleId) {
|
||||
if (StrUtil.isBlank(code)) {
|
||||
code = "1";
|
||||
}
|
||||
return sysMenuService.permissionAssignment(code,roleId);
|
||||
}
|
||||
|
||||
/**********************************
|
||||
|
||||
@ -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());
|
||||
//填写 当前日期
|
||||
|
||||
@ -64,7 +64,7 @@ public class UserController {
|
||||
public ResponseResult queryUsers(String orgid,
|
||||
String username, Page<SysUser> page) {
|
||||
|
||||
Page<Map<String, Object>> mapPage = userService.queryUsers(orgid,
|
||||
Page<SysUser> mapPage = userService.queryUsers(orgid,
|
||||
username, page);
|
||||
return ResponseResult.successData(mapPage);
|
||||
}
|
||||
|
||||
@ -41,6 +41,7 @@ public class SysRole implements Serializable {
|
||||
/**
|
||||
* 1-超级管理员 2-单位管理员 3-普通用户
|
||||
*/
|
||||
@TableField("\"LEVEL\"")
|
||||
private String level;
|
||||
|
||||
/**
|
||||
|
||||
@ -6,6 +6,7 @@ import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@ -113,4 +114,7 @@ public class SysUser implements Serializable {
|
||||
* 备用3
|
||||
*/
|
||||
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);
|
||||
|
||||
Page<Map<String, Object>> queryUsers(String orgid,
|
||||
Page<SysUser> queryUsers(String orgid,
|
||||
String username,
|
||||
Page<SysUser> page);
|
||||
|
||||
|
||||
@ -95,7 +95,7 @@ public interface ISysMenuService extends IService<SysMenu> {
|
||||
* isdisplay 是否显示
|
||||
* 返回值说明: 菜单结构树集合
|
||||
***********************************/
|
||||
List<Map<String, Object>> permissionAssignment(String roleId);
|
||||
List<Map<String, Object>> permissionAssignment(String code,String roleId);
|
||||
|
||||
String uploadIcon(MultipartFile icon) throws FileNotFoundException;
|
||||
}
|
||||
|
||||
@ -128,7 +128,7 @@ public interface IUserService extends IService<SysUser> {
|
||||
boolean addUserRoles(String roleid, String userid);
|
||||
|
||||
//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批量删除用户
|
||||
|
||||
@ -451,18 +451,19 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
* 返回值说明: 菜单结构树集合
|
||||
***********************************/
|
||||
@Override
|
||||
public List<Map<String, Object>> permissionAssignment(String roleId) {
|
||||
public List<Map<String, Object>> 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<SysMenu> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysMenu::getSystemcode, code).select(SysMenu::getId,
|
||||
SysMenu::getParentid, SysMenu::getName).orderByAsc
|
||||
(SysMenu::getOrderno);
|
||||
List<Map<String, Object>> listAll =
|
||||
List<Map<String, Object>> mapList =
|
||||
sysMenuMapper.selectMaps(queryWrapper);
|
||||
List<Map<String, Object>> listAll = ObjectConverterUtil.convertMapFieldsToEntityFormat(SysMenu.class, mapList);
|
||||
List<String> listRole =
|
||||
sysMenuMapper.selectMenuByRoleId(roleId);
|
||||
for (Map<String, Object> map : listAll) {
|
||||
|
||||
@ -165,10 +165,12 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
|
||||
queryWrapper.eq("parentid", "0");
|
||||
}
|
||||
List<Object> 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");
|
||||
|
||||
@ -49,8 +49,14 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
QueryWrapper<SysRole> queryWrapper = new QueryWrapper<>();
|
||||
List<Object> 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); // 最大编号累加
|
||||
|
||||
@ -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<SysUserMapper, SysUser> impleme
|
||||
*roleids 角色id
|
||||
* 返回值说明: 是否更新成功
|
||||
************************************/
|
||||
@Override
|
||||
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);
|
||||
// ... existing code ...
|
||||
|
||||
} else {
|
||||
//根据用户id 删除该用户角色关联
|
||||
ok = ok && sysUserMapper.delRoleUsersByUserid(sysUser.getId());
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Map updateById(SysUser sysUser, String roleids) {
|
||||
Map<String, String> 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<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
|
||||
public Map getOneById(String id) {
|
||||
QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>();
|
||||
@ -476,20 +510,16 @@ public class UserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impleme
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public Page<Map<String, Object>> queryUsers(String orgid,
|
||||
public Page<SysUser> queryUsers(String orgid,
|
||||
String username,
|
||||
Page<SysUser> page) {
|
||||
Page<Map<String, Object>> mapPage = sysUserMapper.queryUsers(orgid,
|
||||
Page<SysUser> mapPage = sysUserMapper.queryUsers(orgid,
|
||||
username, page);
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
List<Map<String, Object>> records = mapPage.getRecords();
|
||||
for (Map<String, Object> record : records) {
|
||||
String id = (String) record.get("id");
|
||||
;mapPage.getRecords().forEach(record -> {
|
||||
String id = record.getId();
|
||||
List<SysRole> sysRoles = sysRoleMapper.getRoleByUserId(id);
|
||||
record.put("roles", sysRoles);
|
||||
list.add(record);
|
||||
}
|
||||
mapPage.setRecords(list);
|
||||
record.setRoles(sysRoles);
|
||||
});
|
||||
return mapPage;
|
||||
}
|
||||
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
DISTINCT
|
||||
m.id,
|
||||
m.parentid,
|
||||
m.`name`,
|
||||
m.name,
|
||||
m.opturl,
|
||||
m.icon,
|
||||
m.orderno,
|
||||
|
||||
@ -91,7 +91,15 @@
|
||||
<!--根据用户id获取角色信息-->
|
||||
<select id="getRoleByUserId"
|
||||
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>
|
||||
|
||||
<!--根据角色id获取用户id-->
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
|
||||
<!--用户分配角色 系统角色用户对照新增数据-->
|
||||
<insert id="addUserRoles">
|
||||
insert into sys_role_users value (#{id},#{roleid},#{userid})
|
||||
insert into sys_role_users values (#{id},#{roleid},#{userid})
|
||||
</insert>
|
||||
|
||||
<!--根据用户id 和角色id 查询 系统角色用户对照表-->
|
||||
@ -47,11 +47,13 @@
|
||||
select roleid from sys_role_users where userid=#{userid}
|
||||
</select>
|
||||
|
||||
<!--根据用户表id查询角色表最大级别-->
|
||||
<!--根据用户表 id 查询角色表最大级别-->
|
||||
<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 id="queryUsers" resultType="java.util.Map">
|
||||
<select id="queryUsers" resultType="com.yfd.platform.system.domain.SysUser">
|
||||
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}
|
||||
</if>
|
||||
<if test="username != null">
|
||||
and u.username like concat('%', #{username},'%')
|
||||
and u.username LIKE '%' || #{username} || '%'
|
||||
</if>
|
||||
ORDER BY u.lastmodifydate DESC
|
||||
</select>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user