基于javaweb+mysql的springboot疫情人员流动管理系统(java+jsp+ssm+springboot+maven+mysql)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot疫情人员流动管理系统(java+jsp+ssm+springboot+maven+mysql)
一、项目简述 本系统主要实现的功能有: 社区疫情流动人员管理系统,住户管理,出入管理,访客管理,体温录入,高风险警示等等。
二、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
Springboot+ SpringMVC + MyBatis + Jsp + Html+ JavaScript + JQuery + Ajax + maven等等
public Result updateVistor(VistorDto vistorDto){
return visitorService.updateVistor(vistorDto);
}
}
package com.demo.controller;
/**
* <p>
* 前端控制器
* </p>
*
*
* 注册码相关
*/
@RestController
@RequestMapping("/Usalt")
@RequiresRoles(value = "admin" , logical = Logical.OR)
public class UsersaltController {
//添加注册码
@Autowired
private UsersaltService usersaltService;
@GetMapping("/querySaltByParam")
public JsonObject queryUserByParam(@RequestParam("page")Integer currentPage, @RequestParam("limit")Integer limit)
{
JsonObject<UsersaltDto> object = new JsonObject<>();
IPage<UsersaltDto> dtoIPage = usersaltService.querySaltByParam(currentPage,limit,null);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
return "page/record/resRecord";
}
@RequestMapping("/visRecord")
public String visRecordPage() {
return "page/record/visRecord";
}
@RequestMapping("/vistors")
public String vistorsPage() {
return "page/vistor/vistors";
}
@RequestMapping("/vistor")
public String vistorPage() {
return "page/vistor/vistor";
}
@RequestMapping("/address")
public String addressPage() {
return "page/address/address";
}
@RequestMapping("/addAddress")
public String addAddressPage() {
return "page/address/addAddress";
}
@RequestMapping("/users")
public String userPage() {
return "page/user/users";
}
@RequestMapping("/addUser")
public String addUserPage() {
return "page/user/addUser";
}
@RequestMapping("/sys/aboutMe")
public String aboutMePage() {
return "page/sys/aboutMe";
}
* 全局异常捕捉处理
* 基于@ControllerAdvice注解的全局异常统一处理只能针对于Controller层的异常
*
* @param ex
* @return
*/
@ResponseBody
@ExceptionHandler(value = Exception.class)
public Map errorHandler(Exception ex) {
ex.printStackTrace();
Map map = new HashMap();
map.put("code", 100);
map.put("msg", ex.getMessage());
return map;
}
}
package com.demo.exception;
/**
* 权限不足,未获得授权异常统一处理类
*/
@RestControllerAdvice
public class UnathcException {
@ExceptionHandler(UnauthorizedException.class)
public String handleShiroException(Exception e)
{
return "没有权限";
}
@ExceptionHandler(AuthorizationException.class)
public String authorizationExceptionException(Exception e)
{
return "权限认证失败";
}
}
package com.demo.controller;
/**
* <p>
* 前端控制器
* </p>
*
*/
@PostMapping("datas")
public Result showDatas(){
//住户相关
Result result = residentService.queryResCountl();
Object data = result.getData();
//地址相关
long addTotal = addressService.queryAddressByParam().getTotal();
//访客相关
long visTotal = visitorService.queryVistorByParam().getTotal();
//记录相关
long recTotal = recordService.queryRecordByParam().getTotal();
HashMap<String, Object> map = new HashMap<>(10);
map.put("resCount",data);
map.put("addCount",addTotal);
map.put("visCount",visTotal);
map.put("recCount",recTotal);
return Result.ok(map);
}
/**
* 首页 统计表
* 记录的七天变化情况
*/
@PostMapping("/echarts")
public Result echarts(){
/**
* 获取当前时间,以及前七天的日期
*/
String beginTime = null;
String endTime = null;
int size = 0;
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
HashMap<String, HashMap<String,Object>> map = new HashMap<>();
HashMap<String, Object> dataMap = new HashMap<>();
HashMap<String, Object> dateMap = new HashMap<>();
ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> dateList = new ArrayList<>();
calendar.add(Calendar.DATE,-6);
beginTime = dateFormat.format(calendar.getTime());
calendar.add(Calendar.DATE,1);
endTime= dateFormat.format(calendar.getTime());
size = recordService.queryRecCountByDate(beginTime, endTime).size();
dateList.add(beginTime);
/**
* 查找登记信息
* @param currentPage 当前页
* @param limit 页面大小
* @param queryParams 查询条件,可以为null
* @return
*/
@GetMapping("/residentsByParams")
public JsonObject residentList(@RequestParam("page")Integer currentPage, @RequestParam("limit")Integer limit,
@RequestParam(name = "params",required = false) String queryParams)
{
JsonObject<ResidentDto> object = new JsonObject<>();
if (queryParams == null){
IPage<ResidentDto> dtoIPage = residentService.residentsByParams(currentPage,limit,null,null,null);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}else {
JSONObject jsonObject=JSON.parseObject(queryParams);
String keyword = jsonObject.getString("keyword");
String addHouse = jsonObject.getString("addHouse");
String addUnit = jsonObject.getString("addUnit");
IPage<ResidentDto> dtoIPage = residentService.residentsByParams(currentPage,limit,keyword,addHouse,addUnit);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}
}
/**
* @param residentDto
* @return
* 新增登记信息
*/
@PostMapping("/addResSubmit")
public Result addResSubmit(ResidentDto residentDto)
{
return residentService.addResident(residentDto);
}
/**
* 更新登记信息
* @param residentDto
* @return
*/
@PostMapping("/updateResSubmit")
public Result updateResSubmit(ResidentDto residentDto)
public String userSaltPage() {
return "page/salt/userSalt";
}
@RequestMapping("/404")
public String exceptionPage() {
return "page/sys/404";
}
}
package com.demo.controller;
/**
* @desc: excel导入数据库
*/
@Api(value = "文件上传", tags = "文件上传相关接口")
public Result addSalt(Integer count, Integer role)
{
return usersaltService.addSalt(count,role);
}
@PostMapping("/deleteSalt")
public Result deleteSalt(Integer[] ids)
{
System.out.println(ids);
return usersaltService.deleteSalt(ids);
}
@PostMapping("/updateSalt")
public Result updateSalt(UsersaltDto usersaltDto)
{
return Result.ok();
}
}
package com.demo.controller;
/**
@PostMapping("/infoSubmit")
@ResponseBody
public Result infoSubmit(UserDto userDto) {
Boolean info = userService.updateUserInfo(userDto);
System.out.println(info);
if (info) {
return Result.ok();
} else {
return Result.fail("保存个人信息失败!");
}
}
// 用户注销
@ApiOperation("用户注销方法")
@GetMapping("/logout")
public String logout() {
Subject subject = SecurityUtils.getSubject();
subject.logout();
return "redirect:login";
}
}
package com.demo.controller;
/**
* <p>
* 前端控制器
* </p>
*
@RequestMapping("/resident")
public String residentPage() {
return "page/residents/resident";
}
@RequestMapping("/addResident")
public String addResidentPage() {
return "page/residents/addResident";
}
@RequestMapping("/perilPage")
public String perilPage() {
return "page/residents/peril";
}
@RequestMapping("/resCount")
public String resCountPage() {
return "page/residents/resCount";
}
@RequestMapping("/records")
public String recordsPage() {
return "page/record/records";
}
@RequestMapping("/resRecord")
public String recordPage() {
return "page/record/resRecord";
}
@RequestMapping("/visRecord")
public String visRecordPage() {
return "page/record/visRecord";
}
@RequestMapping("/vistors")
public String vistorsPage() {
return "page/vistor/vistors";
}
@PostMapping("/sendSms")
public Result sendSms(@RequestParam String account,
@RequestParam String userPhone) {
return userService.sendSms(account, userPhone);
}
//验证验证码
@PostMapping("/lookForPwdSubmit")
public Result lookForPwd(RetrievePwdDto retrievePwdDto) {
return userService.checkVesCode(retrievePwdDto);
}
//重置密码
@PostMapping("/retrievePwdSubmit")
public Result retrievePwdSubmit(RetrievePwdDto retrievePwdDto) {
System.out.println(retrievePwdDto);
return userService.updateUserPwd(retrievePwdDto.getAccount(), retrievePwdDto.getNewPwd());
}
//用户注册
@PostMapping("/registerUser")
public Result registerUser(UserDto userDto) {
return userService.registerUser(userDto);
}
}
package com.demo.controller;
/**
* <p>
* 前端控制器
* </p>
*
*/
@Api(value = "获取菜单", tags = "获取菜单信息接口")
@RestController
@RequestMapping("/menus")
@Slf4j
public class MenuController {
@Resource
private MenuService menuService;
@ApiOperation(value = "通过登录的用户ID获取菜单信息", notes = "通过登录的用户ID获取菜单信息")
@GetMapping("")
public String listMenus() {
//获取当前用户的菜单列表
UserDto userSession = (UserDto) SecurityUtils.getSubject().getSession().getAttribute("userSession");
JSONObject jsonObject = new JSONObject();
List<MenuDTO> list = menuService.listByUserId(userSession.getUserId());
return JSONObject.toJSONString(list);
}
}
package com.demo.utils;
@RequestMapping("/perilPage")
public String perilPage() {
return "page/residents/peril";
}
@RequestMapping("/resCount")
public String resCountPage() {
return "page/residents/resCount";
}
@RequestMapping("/records")
public String recordsPage() {
return "page/record/records";
}
@RequestMapping("/resRecord")
public String recordPage() {
return "page/record/resRecord";
}
@RequestMapping("/visRecord")
public String visRecordPage() {
return "page/record/visRecord";
}
@RequestMapping("/vistors")
public String vistorsPage() {
return "page/vistor/vistors";
}
@RequestMapping("/vistor")
public String vistorPage() {
return "page/vistor/vistor";
}
@RequestMapping("/address")
public String addressPage() {
return "page/address/address";
}
/**
* <p>
* 登录控制器
*/
@Slf4j
@Controller
@RequestMapping("/User")
@Api(value = "用户登录模块,进行个人信息管理", tags = "用户登录相关信息接口")
public class LoginController {
@Autowired
private UserService userService;
@Resource
private MyShiroRealm shiroRealm;
@RequestMapping("/main")
public String mainPage(HttpServletRequest request, Model model) {
String account = CookieUtil.getCookieValue(request, "account");
UserDto user = userService.queryUserDtoByAccount(account);
model.addAttribute("user", user);
request.getSession().setAttribute("user", user);
return "index";
}
@PostMapping("/doLogin")
@ResponseBody
@RequestMapping("/records")
public String recordsPage() {
return "page/record/records";
}
@RequestMapping("/resRecord")
public String recordPage() {
return "page/record/resRecord";
}
@RequestMapping("/visRecord")
public String visRecordPage() {
return "page/record/visRecord";
}
@RequestMapping("/vistors")
public String vistorsPage() {
return "page/vistor/vistors";
}
@RequestMapping("/vistor")
public String vistorPage() {
return "page/vistor/vistor";
}
@RequestMapping("/address")
public String addressPage() {
return "page/address/address";
}
@RequestMapping("/addAddress")
public String addAddressPage() {
return "page/address/addAddress";
}
@RequestMapping("/users")
public String userPage() {
return "page/user/users";
}
@RequestMapping("/addUser")
public String addUserPage() {
return "page/user/addUser";
}
@RequestMapping("/sys/aboutMe")
public String aboutMePage() {
return "page/sys/aboutMe";
}
}
@RequestMapping("/vistor")
public String vistorPage() {
return "page/vistor/vistor";
}
@RequestMapping("/address")
public String addressPage() {
return "page/address/address";
}
@RequestMapping("/addAddress")
public String addAddressPage() {
return "page/address/addAddress";
}
@RequestMapping("/users")
public String userPage() {
return "page/user/users";
}
@RequestMapping("/addUser")
public String addUserPage() {
return "page/user/addUser";
}
@RequestMapping("/sys/aboutMe")
public String aboutMePage() {
return "page/sys/aboutMe";
}
@RequestMapping("/feedBack")
public String feedbackPage() {
return "page/info/feedBack";
}
@RequestMapping("/userSalt")
public String userSaltPage() {
return "page/salt/userSalt";
}
@RequestMapping("/404")
public String exceptionPage() {
return "page/sys/404";
}
return "page/record/records";
}
@RequestMapping("/resRecord")
public String recordPage() {
return "page/record/resRecord";
}
@RequestMapping("/visRecord")
public String visRecordPage() {
return "page/record/visRecord";
}
@RequestMapping("/vistors")
public String vistorsPage() {
return "page/vistor/vistors";
}
@RequestMapping("/vistor")
public String vistorPage() {
return "page/vistor/vistor";
}
@RequestMapping("/address")
public String addressPage() {
return "page/address/address";
}
@RequestMapping("/addAddress")
public String addAddressPage() {
return "page/address/addAddress";
}
@RequestMapping("/users")
public String userPage() {
return "page/user/users";
}
@RequestMapping("/addUser")
public String addUserPage() {
return "page/user/addUser";
}
@RequestMapping("/sys/aboutMe")
public String aboutMePage() {
return "page/sys/aboutMe";
}
* 前端控制器
* </p>
*
*
* 注册码相关
*/
@RestController
@RequestMapping("/Usalt")
@RequiresRoles(value = "admin" , logical = Logical.OR)
public class UsersaltController {
//添加注册码
@Autowired
private UsersaltService usersaltService;
@GetMapping("/querySaltByParam")
public JsonObject queryUserByParam(@RequestParam("page")Integer currentPage, @RequestParam("limit")Integer limit)
{
JsonObject<UsersaltDto> object = new JsonObject<>();
IPage<UsersaltDto> dtoIPage = usersaltService.querySaltByParam(currentPage,limit,null);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}
@PostMapping("/addSalt")
public Result addSalt(Integer count, Integer role)
{
return usersaltService.addSalt(count,role);
}
@PostMapping("/deleteSalt")
public Result deleteSalt(Integer[] ids)
{
System.out.println(ids);
return usersaltService.deleteSalt(ids);
}
@PostMapping("/updateSalt")
public Result updateSalt(UsersaltDto usersaltDto)
}
}
//修改密码
@PostMapping("/pwdSubmit")
@ResponseBody
public Result pwdSubmit(HttpServletRequest request, @RequestParam String oldPwd,
@RequestParam String newPwd) {
String account = CookieUtil.getCookieValue(request, "account");
UserDto user = userService.queryUserDtoByAccount(account);
String updateUserPwd = userService.updateUserPwd(user.getAccount(), oldPwd, newPwd);
if ("true".equals(updateUserPwd)) {
//修改密码后需要将当前用户shiro缓存中的数据清空
shiroRealm.clearCachedAuthenticationInfo(SecurityUtils.getSubject().getPrincipals());
//清除授权信息
shiroRealm.clearCachedAuthorizationInfo(SecurityUtils.getSubject().getPrincipals());
return Result.ok(user.getUserName() + "密码修改成功");
} else {
return Result.fail(updateUserPwd);
}
}
@PostMapping("/infoSubmit")
@ResponseBody
public Result infoSubmit(UserDto userDto) {
Boolean info = userService.updateUserInfo(userDto);
System.out.println(info);
if (info) {
return Result.ok();
} else {
return Result.fail("保存个人信息失败!");
}
}
// 用户注销
@ApiOperation("用户注销方法")
@GetMapping("/logout")
public String logout() {
Subject subject = SecurityUtils.getSubject();
subject.logout();
return "redirect:login";
}
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}
}
@PostMapping("/addAddress")
public Result addAddress(AddressDto addressDto) {
return addressService.addAddress(addressDto);
}
@PostMapping("/deleteAddress")
public Result deleteAddress(Integer[] ids) {
return addressService.deleteAddress(ids);
}
@PostMapping("/updateAddress")
public Result updateAddress(AddressDto addressDto) {
return addressService.updateAddress(addressDto);
}
}
package com.demo.controller;
/**
* <p>
* 来访客人登记表 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/visitors")
@RequiresRoles(value={"user","admin"},logical= Logical.OR)
*
*/
@RestController
@RequestMapping("/residents")
@RequiresRoles(value={"user","admin"},logical= Logical.OR)
@Api(value = "住户管理相关接口",tags ="住户管理相关接口" )
public class ResidentController {
@Autowired
private ResidentService residentService;
/**
* 查找登记信息
* @param currentPage 当前页
* @param limit 页面大小
* @param queryParams 查询条件,可以为null
* @return
*/
@GetMapping("/residentsByParams")
public JsonObject residentList(@RequestParam("page")Integer currentPage, @RequestParam("limit")Integer limit,
@RequestParam(name = "params",required = false) String queryParams)
{
JsonObject<ResidentDto> object = new JsonObject<>();
if (queryParams == null){
IPage<ResidentDto> dtoIPage = residentService.residentsByParams(currentPage,limit,null,null,null);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}else {
JSONObject jsonObject=JSON.parseObject(queryParams);
String keyword = jsonObject.getString("keyword");
String addHouse = jsonObject.getString("addHouse");
String addUnit = jsonObject.getString("addUnit");
IPage<ResidentDto> dtoIPage = residentService.residentsByParams(currentPage,limit,keyword,addHouse,addUnit);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}
/**
* <p>
* 地址管理 前端控制器
* </p>
*
*/
@RestController
@Api(tags = "地址相关接口")
@RequestMapping("/address")
public class AddressController {
@Autowired
private AddressService addressService;
@GetMapping("/queryAddressByParam")
public JsonObject queryAddressByParam(@RequestParam("page") Integer currentPage, @RequestParam("limit") Integer limit,
@RequestParam(name = "params", required = false) String queryParams) {
JsonObject<AddressDto> object = new JsonObject<>();
if (queryParams != null) {
JSONObject jsonObject = JSON.parseObject(queryParams);
String keyword = jsonObject.getString("keyword");
IPage<AddressDto> dtoIPage = addressService.queryAddressByParam(currentPage, limit, keyword);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
} else {
IPage<AddressDto> dtoIPage = addressService.queryAddressByParam(currentPage, limit, queryParams);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}
}
@PostMapping("/addAddress")
public Result addAddress(AddressDto addressDto) {
return addressService.addAddress(addressDto);
}
@PostMapping("/updateAddress")
public Result updateAddress(AddressDto addressDto) {
return addressService.updateAddress(addressDto);
}
}
package com.demo.controller;
/**
* <p>
* 来访客人登记表 前端控制器
* </p>
*
*/
@RestController
@RequestMapping("/visitors")
@RequiresRoles(value={"user","admin"},logical= Logical.OR)
public class VisitorController {
@Autowired
private VisitorService visitorService;
@GetMapping("/queryVisByParam")
public JsonObject queryVisByParam(@RequestParam("page")Integer currentPage, @RequestParam("limit")Integer limit,
@RequestParam(name = "params",required = false) String queryParams)
}
@PostMapping("/deleteUser")
public Result deleteAddress(Integer[] ids) {
return userService.deleteUser(ids);
}
@PostMapping("/updateUser")
public Result updateUser(UserDto userDto) {
return userService.updateUser(userDto);
}
}
package com.demo.controller;
/**
* <p>
* 地址管理 前端控制器
* </p>
*
*/
@RestController
@Api(tags = "地址相关接口")
@RequestMapping("/address")
@RequestMapping("/404")
public String exceptionPage() {
return "page/sys/404";
}
}
package com.demo.controller;
/**
* @desc: excel导入数据库
*/
@Api(value = "文件上传", tags = "文件上传相关接口")
@RestController
@RequestMapping("/api/excel")
public class ExcelController {
public static Logger logger = LoggerFactory.getLogger(ExcelController.class);
@Resource
private ResidentService residentService;
@Resource
*/
@Api(tags = "进出记录接口")
@RestController
@RequestMapping("/records")
@RequiresRoles(value = {"user", "admin"}, logical = Logical.OR)
public class RecordController {
@Autowired
private RecordService recordService;
@GetMapping("/getRecordByParam")
public JsonObject getRecords(@RequestParam("page") Integer currentPage, @RequestParam("limit") Integer limit,
@RequestParam(name = "params", required = false) String queryParams) {
JsonObject<RecordDto> object = new JsonObject<>();
if (queryParams != null) {
JSONObject jsonObject = JSON.parseObject(queryParams);
String keyword = jsonObject.getString("keyword");
IPage<RecordDto> dtoIPage = recordService.queryRecordByParam(currentPage, limit, keyword);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
} else {
IPage<RecordDto> dtoIPage = recordService.queryRecordByParam(currentPage, limit, null);
object.setCode(0);
object.setMsg("ok");
object.setCount(dtoIPage.getTotal());
object.setData(dtoIPage);
return object;
}
}
@PostMapping("/addRecord")
public Result addRecords(RecordDto recordDto) {
return recordService.addRecord(recordDto);
}
@PostMapping("/deleteRecords")
public Result deleteRecord(Integer[] ids) {
return recordService.deleteRecord(ids);
}
@PostMapping("/updateRecords")
public Result updateRecords(RecordDto recordDto) {
return recordService.updateRecord(recordDto);
}
}
return Result.ok(map);
}
}
package com.demo.controller;
/**
* 控制所有的请求跳转信息,进行页面渲染
*/
@Controller
@RequestMapping("/User")
@Api(value = "页面跳转", tags = "页面跳转相关接口")
public class IndexController {
@RequestMapping("/login")
public String loginPage() {
return "page/sys/login";
}
@RequestMapping("/welcome")
public String welcomePage() {
return "page/sys/welcome";
}
@RequestMapping("/lookForPwd")
public String lookForPwdPage() {
return "page/sys/lookForPwd";
}
@RequestMapping("/register")
public String registerPage() {
return "page/sys/register";
}
@RequestMapping("/userInfo")
public String setUserPage() {
return "page/user/user-setting";
}
@RequestMapping("/updatePwd")
public String updatePwdPage() {
return "page/user/user-password";