Backend Development 20 min read

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.

Java Captain
Java Captain
Java Captain
Comprehensive Java SpringBoot Project for Community Management and Epidemic Control with RBAC

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.

backendJavaMySQLSpringBootRBACSpringMVCServiceLayer
Java Captain
Written by

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.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.