提交 52ab6995 authored 作者: kxjia's avatar kxjia

更新代码

上级 e48d8c32
...@@ -2,9 +2,11 @@ package com.fintech.penalty.service; ...@@ -2,9 +2,11 @@ package com.fintech.penalty.service;
import com.fintech.penalty.dto.*; import com.fintech.penalty.dto.*;
import com.fintech.penalty.entity.Menu; import com.fintech.penalty.entity.Menu;
import com.fintech.penalty.entity.Role;
import com.fintech.penalty.entity.RoleMenu; import com.fintech.penalty.entity.RoleMenu;
import com.fintech.penalty.repository.MenuRepository; import com.fintech.penalty.repository.MenuRepository;
import com.fintech.penalty.repository.RoleMenuRepository; import com.fintech.penalty.repository.RoleMenuRepository;
import com.fintech.penalty.repository.RoleRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -23,6 +25,7 @@ public class MenuService { ...@@ -23,6 +25,7 @@ public class MenuService {
private final MenuRepository menuRepository; private final MenuRepository menuRepository;
private final RoleMenuRepository roleMenuRepository; private final RoleMenuRepository roleMenuRepository;
private final RoleRepository roleRepository;
public List<MenuDTO> findAll() { public List<MenuDTO> findAll() {
List<Menu> allMenus = menuRepository.findAll(); List<Menu> allMenus = menuRepository.findAll();
...@@ -98,20 +101,37 @@ public class MenuService { ...@@ -98,20 +101,37 @@ public class MenuService {
roleCode = "ADMIN"; roleCode = "ADMIN";
} }
List<Menu> allMenus = menuRepository.findAllVisible();
if (allMenus.isEmpty()) {
log.warn("No menus found in database");
return new ArrayList<>();
}
if ("ADMIN".equals(roleCode)) { if ("ADMIN".equals(roleCode)) {
List<Menu> allMenus = menuRepository.findAllVisible();
if (allMenus.isEmpty()) {
return new ArrayList<>();
}
return buildTree(allMenus); return buildTree(allMenus);
} }
return buildTree(allMenus.stream() try {
.filter(m -> m.getVisible() != null && m.getVisible()) Role role = roleRepository.findByCode(roleCode).orElse(null);
.collect(Collectors.toList())); if (role != null) {
List<Long> menuIds = roleMenuRepository.findByRoleId(role.getId()).stream()
.map(RoleMenu::getMenuId)
.collect(Collectors.toList());
if (!menuIds.isEmpty()) {
List<Menu> roleMenus = menuRepository.findAllById(menuIds);
return buildTree(roleMenus.stream()
.filter(m -> m.getVisible() != null && m.getVisible())
.collect(Collectors.toList()));
}
}
} catch (Exception e) {
log.warn("获取角色菜单失败: {}", e.getMessage());
}
List<Menu> allMenus = menuRepository.findAllVisible();
if (allMenus.isEmpty()) {
return new ArrayList<>();
}
return buildTree(allMenus);
} }
public MenuDTO findById(Long id) { public MenuDTO findById(Long id) {
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>金融监管处罚监控系统</title> <title>金融监管处罚监控系统</title>
<script type="module" crossorigin src="/assets/index-DLhtj81y.js"></script> <script type="module" crossorigin src="/assets/index-C_I9toNW.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-D_lRsYFa.css"> <link rel="stylesheet" crossorigin href="/assets/index-D_lRsYFa.css">
</head> </head>
<body> <body>
......
...@@ -104,9 +104,7 @@ ...@@ -104,9 +104,7 @@
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="role"> <el-form-item label="角色" prop="role">
<el-select v-model="form.role" placeholder="请选择角色" style="width: 100%"> <el-select v-model="form.role" placeholder="请选择角色" style="width: 100%">
<el-option label="管理员" value="ADMIN" /> <el-option v-for="item in roleOptions" :key="item.value" :label="item.label" :value="item.value" />
<el-option label="普通用户" value="USER" />
<el-option label="访客" value="VIEWER" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="enabled" v-if="isEdit"> <el-form-item label="状态" prop="enabled" v-if="isEdit">
...@@ -135,6 +133,12 @@ const pageSize = ref(10) ...@@ -135,6 +133,12 @@ const pageSize = ref(10)
const total = ref(0) const total = ref(0)
const roleOptions = ref([]) const roleOptions = ref([])
const pagination = reactive({
page: currentPage,
size: pageSize,
total: total
})
const dialogVisible = ref(false) const dialogVisible = ref(false)
const isEdit = ref(false) const isEdit = ref(false)
const submitLoading = ref(false) const submitLoading = ref(false)
...@@ -172,13 +176,14 @@ const fetchData = async () => { ...@@ -172,13 +176,14 @@ const fetchData = async () => {
loading.value = true loading.value = true
try { try {
const res = await api.getUsers({ const res = await api.getUsers({
page: currentPage.value - 1, page: pagination.page - 1,
size: pageSize.value size: pagination.size
}) })
tableData.value = res.data.content const data = res.data.data || res.data
total.value = res.data.totalElements tableData.value = data.content || []
pagination.total = data.totalElements || data.total || 0
} catch (error) { } catch (error) {
console.error('获取用户列表失败:', error) console.error('获取用户失败:', error)
} finally { } finally {
loading.value = false loading.value = false
} }
...@@ -187,17 +192,15 @@ const fetchData = async () => { ...@@ -187,17 +192,15 @@ const fetchData = async () => {
const fetchRoles = async () => { const fetchRoles = async () => {
try { try {
const res = await api.getRolesSimple() const res = await api.getRolesSimple()
roleOptions.value = res.data.map(r => ({ // 移除 nextTick,直接赋值
label: r.name, const roles = res.data || []
value: r.code roleOptions.value = roles.map(r => ({
label: r.name || r.roleName,
value: r.code || r.roleCode
})) }))
} catch (error) { } catch (error) {
console.error('获取角色失败:', error) console.error('获取角色失败:', error)
roleOptions.value = [ roleOptions.value = []
{ label: '管理员', value: 'ADMIN' },
{ label: '普通用户', value: 'USER' },
{ label: '访客', value: 'VIEWER' }
]
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论