【计算机毕业设计】疫情社区管理系统的设计与实现-创新互联

文章目录
  • 介绍
  • 软件架构
  • 开发环境
  • 界面效果图
  • 项目结构
  • 代码实现:
  • 🌟思维导图

治多ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!介绍

基于Java的疫情社区人员流动管理系统。

软件架构

系统使用前后端分离,后端编写接口,提供数据。前端调用接口获取数据,根据要求在页面上进行渲染。

由于使用前后端分离,就要解决跨域访问的问题,所以用JWT进行数据的传送。

用shiro框架进行权限的控制,根据用户拥有的角色,分配角色对应的权限。

在用户注册时,会有注册码,注册码有两种分类,一种是管理员,一种是超级管理员,根据注册码给用户分配角色。

管理员有添加、查询,删除居民或者访客信息的权限,也有查询住户地址权限。而超级管理员拥有系统所有的权限。

开发环境

1.系统用Java语言开发,前端用Vue,后端用Spring Boot框架;

2.开发工具:IDEA、Navicat Premium 15、Postman等;

3.技术:MySQL、Redis、Spring、Spring Boot、MyBatis、JWT(Shiro)、Vue等

界面效果图

登录:
在这里插入图片描述
首页:
首页
用户个人信息(图片上传):
在这里插入图片描述

住户管理:
在这里插入图片描述
访客出入登记:
在这里插入图片描述
访客出入信息管理:
在这里插入图片描述
文件管理:
在这里插入图片描述
垃圾箱(数据恢复):
在这里插入图片描述

项目结构

在这里插入图片描述

代码实现:

登录:

@RequestMapping("/user")
@RestController
public class LoginController {final UserService userService;

    final MenuService menuService;

    public LoginController(UserService userService, MenuService menuService){this.userService = userService;
        this.menuService = menuService;
    }

    @RequestMapping(value = "/login",method = RequestMethod.POST)
    public APIResult login(@RequestBody User user){Subject subject = SecurityUtils.getSubject();
        try {subject.login(new UsernamePasswordToken(user.getAccount(),user.getPassword()));
            // 获取当前登录用户
            User loginuser = userService.findRolesByAccount(user.getAccount());
            ListmenuByRoleName = menuService.findMenuByRoleName(loginuser.getRoleName());
            loginuser.setMenus(menuByRoleName);
            if (loginuser.getStatus() == ConstantsUtils.CODE_STATUS_1){return APIResult.notFound("该用户已被禁用或者拉入黑名单,请联系管理员");
            }
            loginuser.setPassword(null);
            loginuser.setCodeText(null);
            String token = TokenUtil.createToken(loginuser.getAccount());
            return new APIResult(ConstantsUtils.CODE_STATUS_200,token,1,loginuser);
        } catch (UnknownAccountException e) {e.printStackTrace();
            return APIResult.notFound("用户名错误");
        } catch (IncorrectCredentialsException e) {e.printStackTrace();
            return APIResult.notFound("密码错误");
        }

    }
    @RequestMapping(value = "/loginout",method = RequestMethod.POST)
    public APIResult loginout(@RequestBody String account){RedisTemplate redisTemplate = (RedisTemplate) ApplicationContextUtils.getBean("redisTemplate");
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setHashKeySerializer(new StringRedisSerializer());
        redisTemplate.opsForHash().delete("authenticationCache",account);
        return new APIResult(ConstantsUtils.CODE_STATUS_200,null,ConstantsUtils.CODE_STATUS_1,"退出成功");
    }


    @RequestMapping(value = "/reg",method = RequestMethod.POST)
    public APIResult reg(@RequestBody User user){try {userService.reg(user);
            return APIResult.created(user);
        } catch (Exception e) {e.printStackTrace();
            return APIResult.notFound(e.getMessage());
        }
    }
}

图表统计

@RequestMapping("/echarts")
@RestController
public class EchartsController {final ResidentService residentService;
    final VisitorService visitorService;
    final AddressService addressService;

    public EchartsController(ResidentService residentService, VisitorService visitorService, AddressService addressService) {this.residentService = residentService;
        this.visitorService = visitorService;
        this.addressService = addressService;
    }

    @GetMapping("/members")
    public APIResult members() {Listlist = residentService.queryAll(null,null,null);
        int q1 = list.size(); // 正常
        Listresidents = residentService.queryByresState();
        int q2 = residents.size();
        return new APIResult(ConstantsUtils.CODE_STATUS_200,null,list.size(),CollUtil.newArrayList(q1, q2));
    }

    @RequestMapping(value = "/vis",method = RequestMethod.GET)
    public APIResult getVis(){Listlist = visitorService.queryAll(null, null, null);
        int q1 = 0; // 第一季度
        int q2 = 0; // 第二季度
        int q3 = 0; // 第三季度
        int q4 = 0; // 第四季度
        for (Visitor visitor : list) {Date visTime = visitor.getVisTime();
            Quarter quarter = DateUtil.quarterEnum(visTime);
            switch (quarter) {case Q1: q1 += 1; break;
                case Q2: q2 += 1; break;
                case Q3: q3 += 1; break;
                case Q4: q4 += 1; break;
                default: break;
            }
        }
        return new APIResult(ConstantsUtils.CODE_STATUS_200,null,list.size(),CollUtil.newArrayList(q1, q2, q3, q4));
    }

    @RequestMapping(value = "/getFour",method = RequestMethod.GET)
    public APIResult getFour(){//住户总体人数
        Listlist1 = residentService.getAll();
        int number1=list1.size();
        //访客数量
        Listlist2 = visitorService.getAll();
        int number2 =list2.size();
        //中高风险地区人数
        Listlist3 = residentService.queryByresState();
        int number3 = list3.size();
        //房间数量
        List
list4 = addressService.queryAll(null, null, null); int number4 = list4.size(); return new APIResult(ConstantsUtils.CODE_STATUS_200,null,null,CollUtil.newArrayList(number1, number2, number3, number4)); } }
🌟思维导图

在这里插入图片描述

后面的就不再列举了,,

✨✨源码,看下面评论哦✨✨

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


新闻标题:【计算机毕业设计】疫情社区管理系统的设计与实现-创新互联
当前路径:http://hbruida.cn/article/ccjiii.html