基于Spring Boot的老龄化人口信息管理平台设计与实现
系统架构设计
本系统采用前后端分离的开发模式,后端基于Spring Boot框架构建RESTful API接口,前端可使用Vue或原生HTML配合Ajax进行交互,数据层采用MySQL数据库存储业务数据。整体结构分为表现层、服务层和持久层,符合典型的三层架构模式,具备良好的可维护性和扩展性。
功能界面展示
系统包含用户登录、老年人信息管理、数据分析报表、权限控制等核心模块,界面简洁直观,操作流畅。以下为部分运行截图:
关键代码实现
以下是用户认证与权限管理的核心控制器示例,实现了登录、注册、会话获取等功能:
@RestController
@RequestMapping("/api/auth")
public class AuthController {
@Autowired
private UserService userService;
@Autowired
private TokenManager tokenManager;
/**
* 用户登录接口
*/
@PostMapping("/login")
@IgnoreAuthorityCheck
public Result<String> authenticate(
@RequestParam String account,
@RequestParam String credential,
@RequestParam String userType,
HttpServletRequest req) {
QueryWrapper<UserEntity> wrapper = new QueryWrapper<>();
wrapper.eq("account", account);
UserEntity user = userService.getOne(wrapper);
if (user == null || !user.getCredential().equals(credential)) {
return Result.fail("用户名或密码错误");
}
if (!user.getUserType().equals(userType)) {
return Result.fail("角色权限不匹配");
}
String accessToken = tokenManager.createToken(
user.getId(),
user.getAccount(),
userType
);
return Result.success(accessToken);
}
/**
* 新用户注册
*/
@PostMapping("/register")
@IgnoreAuthorityCheck
public Result<Void> registerUser(@RequestBody UserEntity newUser) {
if (userService.existsByAccount(newUser.getAccount())) {
return Result.fail("该账号已被注册");
}
userService.createUser(newUser);
return Result.success();
}
/**
* 获取当前登录用户信息
*/
@GetMapping("/profile")
public Result<UserEntity> getCurrentUserInfo(HttpServletRequest request) {
Integer userId = (Integer) request.getSession().getAttribute("currentUserId");
UserEntity userInfo = userService.getById(userId);
return Result.success(userInfo);
}
/**
* 重置密码(默认为123456)
*/
@PutMapping("/reset-password")
@IgnoreAuthorityCheck
public Result<Void> resetPassword(@RequestParam String account) {
UserEntity user = userService.findByAccount(account);
if (user == null) {
return Result.fail("用户不存在");
}
user.setCredential("123456");
userService.updateById(user);
return Result.success("密码已重置为123456");
}
/**
* 用户退出登录
*/
@GetMapping("/logout")
public Result<String> logoutSession(HttpServletRequest request) {
request.getSession().invalidate();
return Result.success("成功退出登录");
}
}
数据库表结构定义
系统基础用户表用于存储管理员及工作人员账户信息,SQL语句如下:
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`account` VARCHAR(100) NOT NULL UNIQUE COMMENT '登录账号',
`credential` VARCHAR(100) NOT NULL COMMENT '加密密码',
`user_type` VARCHAR(50) DEFAULT 'staff' COMMENT '用户类型:admin/staff',
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';
-- 初始化超级管理员账户
INSERT INTO `sys_user` (`id`, `account`, `credential`, `user_type`, `create_time`)
VALUES (1, 'admin', 'admin', 'admin', '2024-01-01 00:00:00');
技术选型说明
Spring Boot 框架优势
Spring Boot 是构建企业级Java应用的主流框架,通过自动配置机制简化了Spring应用的搭建过程。其内嵌Tomcat服务器、起步依赖管理和Actuator监控组件,显著提升了开发效率。结合MyBatis Plus实现持久层操作,支持链式查询和分页封装,减少模板代码编写量。
MySQL 数据库存储方案
MySQL作为成熟的关系型数据库,以其高性能、高可靠性和低成本广泛应用于各类信息系统中。本项目采用InnoDB存储引擎,支持事务处理和外键约束,保障数据一致性。同时利用其索引优化能力提升查询性能,适用于老龄化管理系统中高频读写场景。
