diff --git a/screen-vue/src/api/bizMenu.js b/screen-vue/src/api/bizMenu.js
new file mode 100644
index 0000000..c523c93
--- /dev/null
+++ b/screen-vue/src/api/bizMenu.js
@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+
+/**
+ * 获取指标信息列表
+ */
+export function getHomeMenuList(params) {
+ return request({
+ url: '/biz/homeMenu/list',
+ method: 'get',
+ params: params
+ })
+}
\ No newline at end of file
diff --git a/screen-vue/src/api/bizUser.js b/screen-vue/src/api/bizUser.js
new file mode 100644
index 0000000..8c03087
--- /dev/null
+++ b/screen-vue/src/api/bizUser.js
@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+
+/**
+ * 获取指标信息列表
+ */
+export function getHomeUserList(params) {
+ return request({
+ url: '/biz/homeUser/list',
+ method: 'get',
+ params: params
+ })
+}
\ No newline at end of file
diff --git a/screen-vue/src/assets/logo.png b/screen-vue/src/assets/logo.png
new file mode 100644
index 0000000..0c9c06d
Binary files /dev/null and b/screen-vue/src/assets/logo.png differ
diff --git a/screen-vue/src/components/Layout/editPswd.vue b/screen-vue/src/components/Layout/editPswd.vue
new file mode 100644
index 0000000..cbeae28
--- /dev/null
+++ b/screen-vue/src/components/Layout/editPswd.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/components/Layout/index.vue b/screen-vue/src/components/Layout/index.vue
new file mode 100644
index 0000000..ed9b575
--- /dev/null
+++ b/screen-vue/src/components/Layout/index.vue
@@ -0,0 +1,767 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 首页
+
+
+
+
+
+
+
+
+
+
+ 关闭全部
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/router/index.js b/screen-vue/src/router/index.js
index 9835e39..56d585c 100644
--- a/screen-vue/src/router/index.js
+++ b/screen-vue/src/router/index.js
@@ -1,33 +1,85 @@
import { createRouter, createWebHistory } from 'vue-router'
import Login from '@/views/Login.vue'
+import Page404 from '@/views/error/404.vue'
+import Layout from '@/components/Layout/index.vue'
import Dashboard from '@/views/desktop/index.vue'
+import bigScreen from '@/views/screen/index.vue'
+
+// 扫描规则保持不变
+const modules = import.meta.glob('../views/**/index.vue', {
+ eager: false,
+ import: 'default'
+})
+
+const generateRoutes = () => {
+ const routes = []
+
+ Object.entries(modules).forEach(([filePath, module]) => {
+ const excludePaths = [
+ 'views/Login.vue',
+ 'views/desktop/index.vue',
+ 'views/error/',
+ 'views/screen/',
+ ]
+ if (excludePaths.some(path => filePath.includes(path))) {
+ return
+ }
+
+ const routePath = filePath
+ .replace('../views', '')
+ .replace('.vue', '')
+ .toLowerCase()
+
+ const routeName = routePath
+ .split('/')
+ .filter(Boolean)
+ .map(seg => seg.charAt(0).toUpperCase() + seg.slice(1))
+ .join('')
+
+ routes.push({
+ path: routePath,
+ name: routeName || 'SystemRoleIndex',
+ component: module
+ })
+ })
+
+ return routes
+}
-// 路由规则
const routes = [
{
path: '/',
- redirect: '/login' // 默认跳登录页
+ redirect: '/login'
},
{
path: '/login',
name: 'Login',
component: Login,
- meta: {
- isPublic: true // 标记为公开页面,无需登录
- }
+ meta: { isPublic: true }
},
{
- path: '/dashboard',
- name: 'Dashboard',
- component: Dashboard,
- meta: {
- requiresAuth: true // 需要登录验证
- }
+ path: '/bigScreen',
+ name: 'bigScreen',
+ component: bigScreen,
+ meta: { requiresAuth: true }
+ },
+ {
+ path: '/',
+ component: Layout,
+ meta: { requiresAuth: true },
+ children: [
+ {
+ path: 'dashboard',
+ name: 'Dashboard',
+ component: Dashboard
+ },
+ ...generateRoutes()
+ ]
},
- // 关键补充:404兜底路由(匹配所有未定义的前端路由)
{
path: '/:pathMatch(.*)*',
- redirect: '/login' // 未知路径重定向到登录页
+ name: 'Page404',
+ component: Page404
}
]
@@ -39,15 +91,12 @@ const router = createRouter({
}
})
-// 路由守卫:验证登录状态(优化版,增加容错)
router.beforeEach((to, from, next) => {
- // 公开页面直接放行
if (to.meta.isPublic) {
next()
return
}
- // 非公开页面校验token
try {
const token = localStorage.getItem('token')
if (token && token.trim() !== '') {
diff --git a/screen-vue/src/views/Login.vue b/screen-vue/src/views/Login.vue
index 47d1dd9..d98765d 100644
--- a/screen-vue/src/views/Login.vue
+++ b/screen-vue/src/views/Login.vue
@@ -68,13 +68,13 @@ const handleLogin = async () => {
isLoading.value = true;
const res = await login(loginForm.value);
localStorage.setItem('token', res.token);
- localStorage.setItem('userName', res.userName);
+ localStorage.setItem('loginUser', JSON.stringify(res.loginUser));
ElMessage.success('登录成功!');
setTimeout(() => {
router.push('/dashboard');
}, 3000);
} catch (error) {
- ElMessage.error(res.msg);
+ console.log(error);
}finally{
isLoading.value = false;
}
diff --git a/screen-vue/src/views/desktop/index.vue b/screen-vue/src/views/desktop/index.vue
index 08ef3f1..3dc7c35 100644
--- a/screen-vue/src/views/desktop/index.vue
+++ b/screen-vue/src/views/desktop/index.vue
@@ -1,356 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
\ No newline at end of file
diff --git a/screen-vue/src/views/error/404.vue b/screen-vue/src/views/error/404.vue
new file mode 100644
index 0000000..1e83e07
--- /dev/null
+++ b/screen-vue/src/views/error/404.vue
@@ -0,0 +1,66 @@
+
+
+
404
+
页面不存在
+
返回上一页
+
返回首页
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV01.vue b/screen-vue/src/views/screen/Erp/components/ChartV01.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV01.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV01.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV02.vue b/screen-vue/src/views/screen/Erp/components/ChartV02.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV02.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV02.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV03.vue b/screen-vue/src/views/screen/Erp/components/ChartV03.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV03.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV03.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV04.vue b/screen-vue/src/views/screen/Erp/components/ChartV04.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV04.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV04.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV05.vue b/screen-vue/src/views/screen/Erp/components/ChartV05.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV05.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV05.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV06.vue b/screen-vue/src/views/screen/Erp/components/ChartV06.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV06.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV06.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV07.vue b/screen-vue/src/views/screen/Erp/components/ChartV07.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV07.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV07.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV08.vue b/screen-vue/src/views/screen/Erp/components/ChartV08.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV08.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV08.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/ChartV09.vue b/screen-vue/src/views/screen/Erp/components/ChartV09.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/ChartV09.vue
rename to screen-vue/src/views/screen/Erp/components/ChartV09.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/components/detail/indexV01.vue b/screen-vue/src/views/screen/Erp/components/detail/indexV01.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/components/detail/indexV01.vue
rename to screen-vue/src/views/screen/Erp/components/detail/indexV01.vue
diff --git a/screen-vue/src/views/desktop/screen/Erp/index.vue b/screen-vue/src/views/screen/Erp/index.vue
similarity index 100%
rename from screen-vue/src/views/desktop/screen/Erp/index.vue
rename to screen-vue/src/views/screen/Erp/index.vue
diff --git a/screen-vue/src/views/screen/Home/components/user/form.vue b/screen-vue/src/views/screen/Home/components/user/form.vue
new file mode 100644
index 0000000..72bd7dc
--- /dev/null
+++ b/screen-vue/src/views/screen/Home/components/user/form.vue
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/views/desktop/screen/Home/components/user/index.vue b/screen-vue/src/views/screen/Home/components/user/index.vue
similarity index 57%
rename from screen-vue/src/views/desktop/screen/Home/components/user/index.vue
rename to screen-vue/src/views/screen/Home/components/user/index.vue
index 517e0a8..1c2bfc6 100644
--- a/screen-vue/src/views/desktop/screen/Home/components/user/index.vue
+++ b/screen-vue/src/views/screen/Home/components/user/index.vue
@@ -3,41 +3,33 @@
-
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
+
+
+
@@ -70,6 +62,7 @@
empty-text="暂无相关数据"
class="data-table"
v-loading="loading"
+ loading-text="正在加载数据..."
:header-cell-style="{
background: 'rgba(10, 30, 60, 0.8)',
color: '#a0cfff',
@@ -86,17 +79,49 @@
borderBottom: '1px solid rgba(64, 158, 255, 0.2)'
}"
>
-
-
-
-
-
+
+
+
+
+
+
+
- ¥{{ scope.row.amount }}
+
+
+
-
-
@@ -115,27 +140,43 @@
/>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/views/system/index.vue b/screen-vue/src/views/system/index.vue
new file mode 100644
index 0000000..bbd935d
--- /dev/null
+++ b/screen-vue/src/views/system/index.vue
@@ -0,0 +1,42 @@
+
+
+
+
+
+
欢迎使用后台管理系统
+
当前访问路径:/syshome
+
这是 Layout 子路由的正常渲染内容,不会展示代码
+
测试按钮
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/views/system/menu/index.vue b/screen-vue/src/views/system/menu/index.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/screen-vue/src/views/system/menu/index.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/views/system/role/index.vue b/screen-vue/src/views/system/role/index.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/screen-vue/src/views/system/role/index.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/screen-vue/src/views/system/user/index.vue b/screen-vue/src/views/system/user/index.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/screen-vue/src/views/system/user/index.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/mini/mybigscreen/Auth/routeController.java b/src/main/java/com/mini/mybigscreen/Auth/routeController.java
index ffa14de..33f84bf 100644
--- a/src/main/java/com/mini/mybigscreen/Auth/routeController.java
+++ b/src/main/java/com/mini/mybigscreen/Auth/routeController.java
@@ -2,6 +2,8 @@ package com.mini.mybigscreen.Auth;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class routeController {
@@ -10,9 +12,15 @@ public class routeController {
/**
* 路由跳转
*/
- @GetMapping({"/", "/login", "/dashboard"})
+ @GetMapping({"/", "/login", "/bigScreen", "/dashboard"})
public String forwardToIndex() {
return "forward:/index.html";
}
+
+ @RequestMapping(value = "/**/{path:[^.]*}")
+ public String redirect(@PathVariable String path) {
+ return "forward:/index.html";
+ }
+
}
diff --git a/src/main/java/com/mini/mybigscreen/Auth/userController.java b/src/main/java/com/mini/mybigscreen/Auth/userController.java
index f2d6d62..3938aca 100644
--- a/src/main/java/com/mini/mybigscreen/Auth/userController.java
+++ b/src/main/java/com/mini/mybigscreen/Auth/userController.java
@@ -3,6 +3,8 @@ package com.mini.mybigscreen.Auth;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.mini.mybigscreen.Model.LoginRequest;
import com.mini.mybigscreen.Model.Result;
+import com.mini.mybigscreen.Model.loginUser;
+import com.mini.mybigscreen.Model.userInfo;
import com.mini.mybigscreen.biz.domain.HomeUser;
import com.mini.mybigscreen.biz.service.HomeUserService;
import com.mini.mybigscreen.utils.AesUtil;
@@ -32,11 +34,11 @@ public class userController {
.eq("password", AesUtil.encrypt(loginRequest.getPassword()));
HomeUser user = userService.getOne(queryWrapper, true);
if (user != null) {
- String token = KeyUtil.ObjKey(125,0);
+ String token = KeyUtil.ObjKey(125, 0);
HttpSession session = request.getSession(true);
session.setAttribute("userName", user.getUserName());
session.setAttribute("token", token);
- return Result.success(token);
+ return Result.success(new userInfo(token, new loginUser(user.getUname(), user.getUserId(), user.getRoleId(), user.getUserName())));
}
return Result.error("账号或密码错误");
}
diff --git a/src/main/java/com/mini/mybigscreen/Config/WebConfig.java b/src/main/java/com/mini/mybigscreen/Config/WebConfig.java
index 78f9d80..a9f7c33 100644
--- a/src/main/java/com/mini/mybigscreen/Config/WebConfig.java
+++ b/src/main/java/com/mini/mybigscreen/Config/WebConfig.java
@@ -19,6 +19,7 @@ public class WebConfig implements WebMvcConfigurer {
.addPathPatterns("/**") // 拦截所有路径
.excludePathPatterns(
"/",
+ "/login",
"/index.html",
"/userLogin"
)
diff --git a/src/main/java/com/mini/mybigscreen/Model/Menu.java b/src/main/java/com/mini/mybigscreen/Model/Menu.java
new file mode 100644
index 0000000..6f13cf7
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/Model/Menu.java
@@ -0,0 +1,36 @@
+package com.mini.mybigscreen.Model;
+
+import com.mini.mybigscreen.biz.domain.HomeMenu;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class Menu implements Serializable {
+
+ private String menuId;
+ private String parentId;
+ private String menuName;
+ private String menuType;
+ private String path;
+ private String menuIcon;
+ private Integer sort;
+ private Integer isIframe;
+ // 子菜单列表
+ private List children;
+
+
+ public Menu(String menuId,String parentId, String menuName, String menuType, String path,String menuIcon, Integer sort, Integer isIframe,List children) {
+ this.menuId = menuId;
+ this.parentId = parentId;
+ this.menuName = menuName;
+ this.menuType = menuType;
+ this.path = path;
+ this.menuIcon = menuIcon;
+ this.sort = sort;
+ this.isIframe = isIframe;
+ this.children = children;
+ }
+}
diff --git a/src/main/java/com/mini/mybigscreen/Model/PageResult.java b/src/main/java/com/mini/mybigscreen/Model/PageResult.java
index ad179b8..dfbe8b1 100644
--- a/src/main/java/com/mini/mybigscreen/Model/PageResult.java
+++ b/src/main/java/com/mini/mybigscreen/Model/PageResult.java
@@ -12,4 +12,12 @@ public class PageResult implements Serializable {
private Integer currentPage; // 当前页码
private Integer pageSize; // 每页条数
private Integer total; // 总记录数
+
+
+ public PageResult(List list,Integer currentPage,Integer pageSize,Integer total){
+ this.list = list;
+ this.currentPage = currentPage;
+ this.pageSize = pageSize;
+ this.total = total;
+ }
}
diff --git a/src/main/java/com/mini/mybigscreen/Model/loginUser.java b/src/main/java/com/mini/mybigscreen/Model/loginUser.java
new file mode 100644
index 0000000..46579ea
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/Model/loginUser.java
@@ -0,0 +1,21 @@
+package com.mini.mybigscreen.Model;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class loginUser implements Serializable {
+
+ private String uname;
+ private String userId;
+ private String roleId;
+ private String userName;
+
+ public loginUser(String uname, String userId, String roleId, String userName) {
+ this.uname = uname;
+ this.userId = userId;
+ this.roleId = roleId;
+ this.userName = userName;
+ }
+}
diff --git a/src/main/java/com/mini/mybigscreen/Model/userInfo.java b/src/main/java/com/mini/mybigscreen/Model/userInfo.java
new file mode 100644
index 0000000..d9af591
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/Model/userInfo.java
@@ -0,0 +1,19 @@
+package com.mini.mybigscreen.Model;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class userInfo implements Serializable {
+
+ private String token;
+ private loginUser loginUser;
+
+ public userInfo(String token, loginUser loginUser) {
+ this.token = token;
+ this.loginUser = loginUser;
+ }
+}
diff --git a/src/main/java/com/mini/mybigscreen/biz/controller/ErpTransactionFlowController.java b/src/main/java/com/mini/mybigscreen/biz/controller/ErpTransactionFlowController.java
index dde55cc..f622706 100644
--- a/src/main/java/com/mini/mybigscreen/biz/controller/ErpTransactionFlowController.java
+++ b/src/main/java/com/mini/mybigscreen/biz/controller/ErpTransactionFlowController.java
@@ -40,13 +40,8 @@ public class ErpTransactionFlowController {
.eq(StrUtil.isNotBlank(transactionType), "transaction_type", transactionType)
.orderByDesc("create_time");
List flowList = flowService.list(query);
- PageUtil pageUtil = new PageUtil<>(pageNum, pageSize, flowList);
- List pageData = pageUtil.OkData();
- PageResult result = new PageResult<>();
- result.setList(pageData); // 当前页数据
- result.setCurrentPage(pageNum); // 当前页码
- result.setPageSize(pageSize); // 每页条数
- result.setTotal(flowList.size()); // 总条数
+ PageUtil util = new PageUtil<>(pageNum, pageSize, flowList);
+ PageResult> result = new PageResult<>(util.OkData(), pageNum, pageSize, flowList.size());
return Result.success(result);
}
}
diff --git a/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java b/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java
new file mode 100644
index 0000000..d1b1a6f
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/biz/controller/HomeMenuController.java
@@ -0,0 +1,61 @@
+package com.mini.mybigscreen.biz.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mini.mybigscreen.Model.Menu;
+import com.mini.mybigscreen.Model.Result;
+import com.mini.mybigscreen.biz.domain.HomeMenu;
+import com.mini.mybigscreen.biz.service.HomeMenuService;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ *
+ * 菜单表 前端控制器
+ *
+ *
+ * @author gaoxq
+ * @since 2026-03-01
+ */
+@RestController
+@RequestMapping("/biz/homeMenu")
+public class HomeMenuController {
+
+
+ @Resource
+ private HomeMenuService menuService;
+
+
+ @GetMapping("list")
+ public Result> getList() {
+ List menuList = new ArrayList<>();
+ QueryWrapper query = new QueryWrapper<>();
+ query.eq("ustatus", "1")
+ .eq("parent_id", "0")
+ .orderByAsc("sort");
+ List pMenus = menuService.list(query);
+ for (HomeMenu menu : pMenus) {
+ QueryWrapper childQuery = new QueryWrapper<>();
+ childQuery.eq("parent_id", menu.getMenuId());
+ List childMenus = menuService.list(childQuery);
+ menuList.add(new Menu(
+ menu.getMenuId(),
+ menu.getParentId(),
+ menu.getMenuName(),
+ menu.getMenuType(),
+ menu.getPath(),
+ menu.getMenuIcon(),
+ menu.getSort(),
+ menu.getIsIframe(),
+ childMenus
+ ));
+ }
+ return Result.success(menuList);
+ }
+
+
+}
diff --git a/src/main/java/com/mini/mybigscreen/biz/controller/HomeUserController.java b/src/main/java/com/mini/mybigscreen/biz/controller/HomeUserController.java
index 9c626a7..049890a 100644
--- a/src/main/java/com/mini/mybigscreen/biz/controller/HomeUserController.java
+++ b/src/main/java/com/mini/mybigscreen/biz/controller/HomeUserController.java
@@ -1,11 +1,22 @@
package com.mini.mybigscreen.biz.controller;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mini.mybigscreen.Model.PageResult;
+import com.mini.mybigscreen.Model.Result;
+import com.mini.mybigscreen.biz.domain.HomeUser;
+import com.mini.mybigscreen.biz.service.HomeUserService;
+import com.mini.mybigscreen.utils.PageUtil;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
+
/**
*
- * 前端控制器
+ * 前端控制器
*
*
* @author gaoxq
@@ -15,4 +26,23 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/biz/homeUser")
public class HomeUserController {
+
+ @Resource
+ private HomeUserService userService;
+
+
+ @GetMapping("list")
+ public Result> getList(Integer pageNum, Integer pageSize,
+ String userName, String uname, String ustatus) {
+ QueryWrapper query = new QueryWrapper<>();
+ query.like(StrUtil.isNotBlank(uname), "uname", uname)
+ .eq(StrUtil.isNotBlank(ustatus), "ustatus", ustatus)
+ .eq(StrUtil.isNotBlank(userName), "user_name", userName)
+ .orderByDesc("create_time");
+ List userList = userService.list(query);
+ PageUtil util = new PageUtil<>(pageNum, pageSize, userList);
+ PageResult> result = new PageResult<>(util.OkData(), pageNum, pageSize, userList.size());
+ return Result.success(result);
+ }
+
}
diff --git a/src/main/java/com/mini/mybigscreen/biz/domain/HomeMenu.java b/src/main/java/com/mini/mybigscreen/biz/domain/HomeMenu.java
new file mode 100644
index 0000000..f597419
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/biz/domain/HomeMenu.java
@@ -0,0 +1,77 @@
+package com.mini.mybigscreen.biz.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 菜单表
+ *
+ *
+ * @author gaoxq
+ * @since 2026-03-01
+ */
+@Getter
+@Setter
+@TableName("biz_home_menu")
+public class HomeMenu implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableField("create_time")
+ private LocalDateTime createTime;
+
+ @TableId(value = "menu_id", type = IdType.AUTO)
+ private String menuId;
+
+ /**
+ * 父菜单ID(0为顶级菜单)
+ */
+ @TableField("parent_id")
+ private String parentId;
+
+ /**
+ * 菜单名称
+ */
+ @TableField("menu_name")
+ private String menuName;
+
+ /**
+ * 菜单类型(M=目录,C=菜单,F=按钮)
+ */
+ @TableField("menu_type")
+ private String menuType;
+
+ /**
+ * 路由路径
+ */
+ @TableField("path")
+ private String path;
+
+ /**
+ * 排序号
+ */
+ @TableField("sort")
+ private Integer sort;
+
+ /**
+ * 是否外链(0=否,1=是)
+ */
+ @TableField("is_iframe")
+ private Integer isIframe;
+
+ /**
+ * 菜单图标
+ */
+ @TableField("menu_icon")
+ private String menuIcon;
+
+ @TableField("ustatus")
+ private Integer ustatus;
+}
diff --git a/src/main/java/com/mini/mybigscreen/biz/domain/HomeUser.java b/src/main/java/com/mini/mybigscreen/biz/domain/HomeUser.java
index 5a1ebf4..e699766 100644
--- a/src/main/java/com/mini/mybigscreen/biz/domain/HomeUser.java
+++ b/src/main/java/com/mini/mybigscreen/biz/domain/HomeUser.java
@@ -4,18 +4,20 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+
import java.io.Serializable;
import java.time.LocalDateTime;
+
import lombok.Getter;
import lombok.Setter;
/**
*
- *
+ *
*
*
* @author gaoxq
- * @since 2026-02-25
+ * @since 2026-02-28
*/
@Getter
@Setter
@@ -25,7 +27,7 @@ public class HomeUser implements Serializable {
private static final long serialVersionUID = 1L;
@TableField("create_time")
- private LocalDateTime createTime;
+ private String createTime;
@TableId(value = "user_id", type = IdType.AUTO)
private String userId;
@@ -40,26 +42,50 @@ public class HomeUser implements Serializable {
private String uname;
/**
- * 租户id
+ * 性别
*/
- @TableField("f_tenant_id")
- private String fTenantId;
+ @TableField("sex")
+ private Integer sex;
/**
- * 流程id
+ * 电子邮件
*/
- @TableField("f_flow_id")
- private String fFlowId;
+ @TableField("email")
+ private String email;
/**
- * 流程任务主键
+ * 电话号码
*/
- @TableField("f_flow_task_id")
- private String fFlowTaskId;
+ @TableField("phone")
+ private String phone;
/**
- * 流程任务状态
+ * 角色编号
*/
- @TableField("f_flow_state")
- private Integer fFlowState;
+ @TableField("role_id")
+ private String roleId;
+
+ /**
+ * 模块名称
+ */
+ @TableField("group_module_id")
+ private String groupModuleId;
+
+ /**
+ * 用户状态
+ */
+ @TableField("ustatus")
+ private String ustatus;
+
+ /**
+ * 累计登录次数
+ */
+ @TableField("login_count")
+ private Integer loginCount;
+
+ /**
+ * 最后登录IP
+ */
+ @TableField("last_login_ip")
+ private String lastLoginIp;
}
diff --git a/src/main/java/com/mini/mybigscreen/biz/mapper/HomeMenuMapper.java b/src/main/java/com/mini/mybigscreen/biz/mapper/HomeMenuMapper.java
new file mode 100644
index 0000000..2a3c234
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/biz/mapper/HomeMenuMapper.java
@@ -0,0 +1,16 @@
+package com.mini.mybigscreen.biz.mapper;
+
+import com.mini.mybigscreen.biz.domain.HomeMenu;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ *
+ * 菜单表 Mapper 接口
+ *
+ *
+ * @author gaoxq
+ * @since 2026-03-01
+ */
+public interface HomeMenuMapper extends BaseMapper {
+
+}
diff --git a/src/main/java/com/mini/mybigscreen/biz/mapper/HomeUserMapper.java b/src/main/java/com/mini/mybigscreen/biz/mapper/HomeUserMapper.java
index db92cbe..e4c743a 100644
--- a/src/main/java/com/mini/mybigscreen/biz/mapper/HomeUserMapper.java
+++ b/src/main/java/com/mini/mybigscreen/biz/mapper/HomeUserMapper.java
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*
*
* @author gaoxq
- * @since 2026-02-25
+ * @since 2026-02-28
*/
public interface HomeUserMapper extends BaseMapper {
diff --git a/src/main/java/com/mini/mybigscreen/biz/service/HomeMenuService.java b/src/main/java/com/mini/mybigscreen/biz/service/HomeMenuService.java
new file mode 100644
index 0000000..34afc68
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/biz/service/HomeMenuService.java
@@ -0,0 +1,16 @@
+package com.mini.mybigscreen.biz.service;
+
+import com.mini.mybigscreen.biz.domain.HomeMenu;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ *
+ * 菜单表 服务类
+ *
+ *
+ * @author gaoxq
+ * @since 2026-03-01
+ */
+public interface HomeMenuService extends IService {
+
+}
diff --git a/src/main/java/com/mini/mybigscreen/biz/service/impl/HomeMenuServiceImpl.java b/src/main/java/com/mini/mybigscreen/biz/service/impl/HomeMenuServiceImpl.java
new file mode 100644
index 0000000..08f8558
--- /dev/null
+++ b/src/main/java/com/mini/mybigscreen/biz/service/impl/HomeMenuServiceImpl.java
@@ -0,0 +1,20 @@
+package com.mini.mybigscreen.biz.service.impl;
+
+import com.mini.mybigscreen.biz.domain.HomeMenu;
+import com.mini.mybigscreen.biz.mapper.HomeMenuMapper;
+import com.mini.mybigscreen.biz.service.HomeMenuService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ *
+ * 菜单表 服务实现类
+ *
+ *
+ * @author gaoxq
+ * @since 2026-03-01
+ */
+@Service
+public class HomeMenuServiceImpl extends ServiceImpl implements HomeMenuService {
+
+}
diff --git a/src/main/java/com/mini/mybigscreen/mybatis/demo.java b/src/main/java/com/mini/mybigscreen/mybatis/demo.java
index ab07076..c0fc235 100644
--- a/src/main/java/com/mini/mybigscreen/mybatis/demo.java
+++ b/src/main/java/com/mini/mybigscreen/mybatis/demo.java
@@ -29,7 +29,7 @@ public class demo {
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mapper"));
})
.strategyConfig(builder -> {
- builder.addInclude("erp_category")
+ builder.addInclude("biz_home_menu")
.addTablePrefix("biz_")
.entityBuilder()
.enableLombok()
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 22f365c..5a08dfd 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -10,6 +10,7 @@ spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=1000MB
spring.servlet.multipart.file-size-threshold=10MB
+spring.mvc.pathmatch.matching-strategy=ant_path_matcher
## MySQL
spring.datasource.url=jdbc:mysql://192.168.31.189:33069/work?useSSL=false&serverTimezone=UTC&characterEncoding=utf8
spring.datasource.username=dream
diff --git a/src/main/resources/mapper/HomeMenuMapper.xml b/src/main/resources/mapper/HomeMenuMapper.xml
new file mode 100644
index 0000000..b8856a4
--- /dev/null
+++ b/src/main/resources/mapper/HomeMenuMapper.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ create_time, menu_id, parent_id, menu_name, menu_type, path, sort, is_iframe, menu_icon, ustatus
+
+
+
diff --git a/src/main/resources/mapper/HomeUserMapper.xml b/src/main/resources/mapper/HomeUserMapper.xml
index 143c051..27762e9 100644
--- a/src/main/resources/mapper/HomeUserMapper.xml
+++ b/src/main/resources/mapper/HomeUserMapper.xml
@@ -9,6 +9,14 @@
+
+
+
+
+
+
+
+
@@ -17,7 +25,7 @@
- create_time, user_id, user_name, password, uname, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state
+ create_time, user_id, user_name, password, uname, sex, email, phone, role_id, group_module_id, ustatus, login_count, last_login_ip, f_tenant_id, f_flow_id, f_flow_task_id, f_flow_state