编写工具用idea 、Maven包,后端数据库是mysql,Java语言,springboot框架。其间,在健康打卡位置和物资选购要调用接口才可实现其功能。
1、研究对象:小区居民普通用户和小区管理员
管理员权限:管理员是整个系统的操作者,系统的各个模块都能进行信息的增删改查,也是封闭的小区与外界的桥梁,负责人员监管、疫情监管、物资选购及配送、通过窗口线上心理疏导及公共区域消毒。
开发说明:前端使用微信微信小程序开发工具;后端使用springboot+VUE开发
开发语言:Java
开发工具:IDEA /Eclipse/微信小程序开发工具
数据库:MYSQL5.7或以上
应用服务:Tomcat8或以上
该小程序分为6个模块,重在监测小区疫情居民的身体健康状况,要求居民每日健康打卡,在管理基本人员信息外增设了物资选购平台满足封闭期间居民的日常生活物资的补给,实现足不出户也能过好基本的生活,配合小区的管理,做好个人防护。
居民用户权限:
小区居民在授权进入小程序后,首先必须如实进行每日健康打卡;其次能在小程序首页直观的看到自己所在小区的疫情变化,小区新闻和发布的公告;再者能在物资选购入口下单自己所需物品;最后可在我的中心查看个人的信息和我的订单。
2.1、小区人员信息管理
经过小区管理员的号召和该小程序如何使用的培训后让居民进入小程序要注册个人基本信息,完成登录,进入首页,熟悉小程序内各个功能模块并学会使用小程序完成每日任务。
2.2 居民信息每日健康打卡
居民点开健康打卡要填写的信息有姓名、户号、打卡位置、体温、症状(无症状,发热、咳嗽、呼吸困难,乏力,感冒,是否新冠患者,是否疑似新冠患者,是否新冠患者的密接人,是否有途径中高风险地区)、紧急联系人姓名、紧急联系人电话、本人电话、备注。
2.3 健康数据上报:
居民每周一要将健康码,行程码和核酸检测结果保存图片并上传到指定位置,以便管理员进行查看和统计数据。
2.4 健康数据统计:
管理员根据该封闭小区内人员健康打卡数据和小区志愿者排查情况进行整理并统计生成可视化图标(饼图和折线图),每日更新便于居民在小程序上查看该小区的疫情情况。
2.5物资选购入口:
管理员通过对接小区外的超市将日常需求物资添加到购物车,当居民选购完成后,管理员通过订单信息将送到的物资放到指定点进行消毒后,由小区志愿者分门别类送到用户住处。小区防控既要看到“病”,也要看到“人”;既要管理,也要服务在织密织严织紧防控网的同时,党员干部和社区志愿者还为群众生产做好全方位的保障工作。小区作为居民生活的共同体,通过加强对小区秩序的维护、保障居民生活必需品供应,能够最大程度保证居民日常生活正常有序进行。只有充足的物资支持、有序的生产生活保障和全体居民的守望相助,确保生活、安全、人文关怀保障到位,才能够战胜疫情。
2.6小区窗口:
在这里居民能看到这个小区的新闻和公告,公告里可以积极号召一周内健康码持续是绿码的居民作为志愿者,给居民配送日常物资和配合医疗人员进行排查等。在小区窗口里有进入居民间的聊天群的入口,小区管理员要主动公开社区疫情防控信息,及时回应居民关切问题。对于有疑问、有顾虑、有侥幸心理的居民,小区工作者想方设法多做解疑释惑工作。对于重要问题与小区内相关单位积极沟通协商,通过多种方式,把小区居民动员起来,把小区内相关单位动员起来,快速形成了上下一心、众志成城、共克时艰的生动局面,建成了人人有责、人人尽责、人人享有的小区疫情防控共同体。小区居委会在防控中突出人性化,强化基本生活保障,切实帮助小区群众解决实际困难和问题,尽可能减少疫情防控对居民生活的影响。
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
目 录
1绪论 1
1.1项目研究的背景 1
1.2开发意义 1
1.3项目研究现状及内容 5
1.4论文结构 5
2开发技术介绍 7
2.1 B/S架构 7
2.2 MySQL 介绍 7
2.3 MySQL环境配置 7
2.4 Java语言简介 8
2.5微信小程序技术 8
3系统分析 9
3.1可行性分析 9
3.1.1技术可行性 9
3.1.2经济可行性 9
3.1.3操作可行性 10
3.2网站性能需求分析 10
3.3网站功能分析 10
3.4系统流程的分析 11
3.4.1 用户管理的流程 12
3.4.2 个人中心管理流程 13
3.4.3 登录流程 13
4系统设计 14
4.1 软件功能模块设计 14
4.2 数据库设计 13
4.2.1 概念模型设计 13
4.2.2 物理模型设计 15
5系统详细设计 21
5.1系统前台功能模块 21
5.2管理员功能模块 24
6系统测试 30
7总结与心得体会 33
7.1 总结 33
7.2 心得体会 33
参考文献 35
致谢 36