Comprehensive Java SpringBoot Project for Community Management and Epidemic Control with RBAC
This article presents a full‑stack Java SpringBoot project that manages community users and tracks epidemic data, employing RBAC for role‑based permissions, MySQL for storage, and various Spring modules such as SpringMVC, AOP, interceptors, and global exception handling.
Project introduction: This Java SpringBoot project implements community‑based user management and epidemic tracking, using RBAC for role‑user permission control, MySQL, Tomcat, SpringMVC, and various Spring features such as AOP, interceptors, and global exception handling.
1. Login Module (Registration)
Provides user login, registration, password update and related validation logic.
@Service
public class UserService extends BaseService
{
@Resource
private UserMapper userMapper;
@Resource
private UserRoleMapper userRoleMapper;
@Resource
private CommunityMapper communityMapper;
// User login
public UserModel userLogin(String userName, String userPwd) {
checkUserLoginParam(userName, userPwd);
User temp = userMapper.queryUserByUserName(userName);
AssertUtil.isTrue(temp == null, "用户不存在");
checkUserPwd(userPwd, temp.getUserPwd());
return builderUserInfo(temp);
}
// Validate login parameters
private void checkUserLoginParam(String userName, String userPwd) {
AssertUtil.isTrue(StringUtils.isBlank(userName), "用户名不能为空");
AssertUtil.isTrue(StringUtils.isBlank(userPwd), "密码不能为空");
}
// Validate password
private void checkUserPwd(String userPwd, String userPwd1) {
userPwd = Md5Util.encode(userPwd);
AssertUtil.isTrue(!(userPwd.equals(userPwd1)), "密码不正确");
}
// Build user model
private UserModel builderUserInfo(User temp) {
UserModel userModel = new UserModel();
userModel.setUserIdStr(UserIDBase64.encoderUserID(temp.getId()));
userModel.setUserName(temp.getUserName());
userModel.setTrueName(temp.getTrueName());
return userModel;
}
// Additional methods for password update, registration, etc., are defined similarly.
}2. Daily Epidemic Module
Handles confirmed case data, linking users to communities, and provides pagination and role‑based queries.
@Service
public class ConfirmedService extends BaseService
{
@Resource
private ConfirmedMapper confirmedMapper;
@Resource
private UserMapper userMapper;
@Resource
private CommunityMapper communityMapper;
// Paginated role query
public Map
findRoleByParam(ConfirmedQuery confirmedQuery) {
Map
map = new HashMap<>();
PageHelper.startPage(confirmedQuery.getPage(), confirmedQuery.getLimit());
PageInfo
rlist = new PageInfo<>(selectByParams(confirmedQuery));
map.put("code",0);
map.put("msg","success");
map.put("count",rlist.getTotal());
map.put("data",rlist.getList());
return map;
}
// Add confirmed case with transactional handling
@Transactional(propagation = Propagation.REQUIRED)
public void addUser(Confirmed user) {
checkConfirmed(user.getTrueName(), user.getState());
// Community mapping logic omitted for brevity
User temp = userMapper.selectByPhone(user.getTcPhone());
if (temp != null) {
userMapper.updateUserHealthById(temp.getUserPhone());
user.setUserId(temp.getId());
} else {
User u = new User();
u.setTrueName(user.getTrueName());
u.setUserName(user.getTrueName());
u.setUserPwd(Md5Util.encode("123456"));
u.setComId(user.getComId());
u.setUserPhone(user.getTcPhone());
u.setEcPhone(user.getTcPhone());
u.setHealth("2");
u.setCreateDate(new Date());
u.setUpdateDate(new Date());
AssertUtil.isTrue(userMapper.insertSelective(u) < 1, "插入用户失败");
Integer userId = userMapper.selectById(user.getTcPhone());
user.setUserId(userId);
}
user.setCreateDate(new Date());
AssertUtil.isTrue(insertSelective(user) < 1, "添加失败");
}
// Other CRUD methods omitted for brevity.
}3. Prevention Management Module
Manages community information and vaccination records, offering multi‑condition pagination and CRUD operations.
@Service
public class CommunityService extends BaseService
{
@Resource
private CommunityMapper communityMapper;
public Map
queryComByParams(CommunityQuery query) {
Map
map = new HashMap<>();
PageHelper.startPage(query.getPage(), query.getLimit());
PageInfo
pageInfo = new PageInfo<>(communityMapper.selectByParams(query));
map.put("code",0);
map.put("msg","");
map.put("count",pageInfo.getTotal());
map.put("data",pageInfo.getList());
return map;
}
public List
> findRoles(Integer userId) {
return communityMapper.selectRoles(userId);
}
}
@Service
public class VaccinationService {
@Resource
VaccinationMapper vaccinationMapper;
public Map
selectAll(VaccinationQuery vaccinationQuery) {
Map
map = new HashMap<>();
PageHelper.startPage(vaccinationQuery.getPage(), vaccinationQuery.getLimit());
PageInfo
pageInfo = new PageInfo<>(vaccinationMapper.selectByParams(vaccinationQuery));
map.put("code",0);
map.put("msg","success");
map.put("data",pageInfo.getList());
map.put("count",pageInfo.getTotal());
return map;
}
@Transactional(propagation = Propagation.REQUIRED)
public void insertVaccination(Vaccination vaccination) {
checkOK(vaccination);
vaccination.setFirstDate(new Date());
vaccination.setSecondDate(new Date());
AssertUtil.isTrue(vaccinationMapper.insertSelective(vaccination) < 1, "插入失败");
}
private void checkOK(Vaccination v) {
AssertUtil.isTrue(v == null, "请输入添加的角色");
AssertUtil.isTrue(StringUtils.isBlank(v.getTrueName()), "用户名不能为空");
AssertUtil.isTrue(StringUtils.isBlank(v.getFirst()), "请填写(是/否)");
AssertUtil.isTrue(StringUtils.isBlank(v.getSecond()), "请填写(是/否)");
}
// Delete and update methods omitted for brevity.
}4. System Management Module
Provides role management, permission granting, and role‑based resource handling.
@Service
public class RoleService extends BaseService
{
@Autowired(required = false)
RoleMapper roleMapper;
@Autowired(required = false)
RoleQuery roleQuery;
@Resource
private ModuleMapper moduleMapper;
@Resource
private PermissionMapper permissionMapper;
public Map
selectRole(RoleQuery roleQuery) {
Map
map = new HashMap<>();
PageHelper.startPage(roleQuery.getPage(), roleQuery.getLimit());
PageInfo
pageInfo = new PageInfo<>(roleMapper.selectByParams(roleQuery));
map.put("code",0);
map.put("msg","success");
map.put("data",pageInfo.getList());
map.put("count",pageInfo.getTotal());
return map;
}
@Transactional(propagation = Propagation.REQUIRED)
public void insertRole(Role role) {
checkRole(role);
role.setCreateDate(new Date());
role.setUpdateDate(new Date());
AssertUtil.isTrue(insertSelective(role) < 1, "添加失败了呢~");
}
private void checkRole(Role role) {
AssertUtil.isTrue(role == null, "请输入角色信息~");
Role existing = roleMapper.selectByName(role.getRoleName());
AssertUtil.isTrue(existing != null, "已添加过啦~");
}
@Transactional(propagation = Propagation.REQUIRED)
public void addGrant(Integer[] mids, Integer roleId) {
AssertUtil.isTrue(roleId == null || roleMapper.selectByPrimaryKey(roleId) == null, "待授权的角色不存在");
int count = roleMapper.countPermissionByRoleId(roleId);
if (count > 0) {
int deleted = roleMapper.deletePermissionsByRoleId(roleId);
AssertUtil.isTrue(count != deleted, "资源删除失败");
}
List
plist = new ArrayList<>();
if (mids != null && mids.length != 0) {
for (Integer mid : mids) {
Permission p = new Permission();
p.setRoleId(roleId);
p.setModuleId(mid);
p.setAclValue(moduleMapper.selectByPrimaryKey(mid).getOptValue());
p.setCreateDate(new Date());
p.setUpdateDate(new Date());
plist.add(p);
}
}
AssertUtil.isTrue(permissionMapper.insertBatch(plist) != plist.size(), "角色权限更新失败");
}
// Update, delete, and other helper methods omitted for brevity.
}5. User Module
Repeats role service logic for user‑related role management; the code is analogous to the system management module and demonstrates consistent service‑layer design.
Overall, the project showcases a layered architecture with service, mapper, and controller layers, comprehensive RBAC handling, and typical CRUD operations for community, vaccination, and user data.
Java Captain
Focused on Java technologies: SSM, the Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading; occasionally covers DevOps tools like Jenkins, Nexus, Docker, ELK; shares practical tech insights and is dedicated to full‑stack Java development.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.