基于java Springboot+Vue+shiro前后端分离疫情防疫管理系统设计和实现2.0
目錄??
研究背景
主要特性功能:
視頻效果演示 :
主要功能截圖:
系統(tǒng)首頁:??
疫情數(shù)據(jù)分布圖模擬:
用戶管理:
角色控制:
菜單權(quán)限:
每日健康打卡:
歷史出行數(shù)據(jù):
外出報備申請:
外出請假審核:
疫情通知公告:
疫情資料管理:
注銷修改密碼:
?主要代碼實現(xiàn):
主要數(shù)據(jù)表設(shè)計:
表clock
表file
表go_out
表info
表sys_captcha (系統(tǒng)驗證碼)
表sys_config (系統(tǒng)配置信息表)
表sys_log (系統(tǒng)日志)
表sys_oss (文件上傳)
表sys_role (角色)
表sys_user (系統(tǒng)用戶)
表sys_user_role (用戶與角色對應(yīng)關(guān)系)
表sys_user_token (系統(tǒng)用戶Token)
表thm
表towork_apply
?獲取源碼聯(lián)系:
🍅 作者主頁:Java李楊勇?
🍅 簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者🏆、【java李楊勇】公號作者? ?簡歷模板、學(xué)習(xí)資料、面試題庫【關(guān)注我,都給你】
🍅文末獲取源碼聯(lián)系🍅
主要特性功能:
完全響應(yīng)式布局(支持電腦、平板、手機等所有主流設(shè)備)
強大的一鍵生成功能(包括控制器、模型、視圖、菜單等)
支持多數(shù)據(jù)源,簡單配置即可實現(xiàn)切換。
支持按鈕及數(shù)據(jù)權(quán)限,可自定義部門數(shù)據(jù)權(quán)限。
對常用js插件進行二次封裝,使js代碼變得簡潔,更加易維護
完善的XSS防范及腳本過濾,徹底杜絕XSS攻擊
Maven多項目依賴,模塊及插件分項目,盡量松耦合,方便模塊升級、增減模塊。
國際化支持,服務(wù)端及客戶端支持
完善的日志記錄體系簡單注解即可實現(xiàn)
支持服務(wù)監(jiān)控,數(shù)據(jù)監(jiān)控,緩存監(jiān)控功能。
主要技術(shù):java、springboot、springmvc、redis、shiro、vue、element、echarts、mysql等
視頻效果演示 :基于Springboot+Vue前后端分離疫情防疫管理系統(tǒng)設(shè)計和實.mp4https://www.bilibili.com/video/BV1tb4y1i7Lhhttps://www.bilibili.com/video/BV1tb4y1i7Lh
主要功能截圖:
用戶登錄、輸入賬號密碼進行驗證和用戶角色判斷、不同角色不同菜單權(quán)限
系統(tǒng)首頁:??
疫情數(shù)據(jù)分布圖模擬:
用戶管理:
?
角色控制:
菜單權(quán)限:
每日健康打卡:
?
歷史出行數(shù)據(jù):
外出報備申請:
外出請假審核:
?
疫情通知公告:
疫情資料管理:
?
注銷修改密碼:
主要代碼實現(xiàn):
菜單列表處理和顯示:
@Service("sysMenuService") public class SysMenuServiceImpl extends ServiceImpl<SysMenuDao, SysMenuEntity> implements SysMenuService {@Autowiredprivate SysUserService sysUserService;@Autowiredprivate SysRoleMenuService sysRoleMenuService;@Overridepublic List<SysMenuEntity> queryListParentId(Long parentId, List<Long> menuIdList) {List<SysMenuEntity> menuList = queryListParentId(parentId);if(menuIdList == null){return menuList;}List<SysMenuEntity> userMenuList = new ArrayList<>();for(SysMenuEntity menu : menuList){if(menuIdList.contains(menu.getMenuId())){userMenuList.add(menu);}}return userMenuList;}@Overridepublic List<SysMenuEntity> queryListParentId(Long parentId) {return baseMapper.queryListParentId(parentId);}@Overridepublic List<SysMenuEntity> queryNotButtonList() {return baseMapper.queryNotButtonList();}@Overridepublic List<SysMenuEntity> getUserMenuList(Long userId) {//系統(tǒng)管理員,擁有最高權(quán)限if(userId == Constant.SUPER_ADMIN){return getAllMenuList(null);}//用戶菜單列表List<Long> menuIdList = sysUserService.queryAllMenuId(userId);return getAllMenuList(menuIdList);}@Overridepublic void delete(Long menuId){//刪除菜單this.removeById(menuId);//刪除菜單與角色關(guān)聯(lián)sysRoleMenuService.removeByMap(new MapUtils().put("menu_id", menuId));}/*** 獲取所有菜單列表*/private List<SysMenuEntity> getAllMenuList(List<Long> menuIdList){//查詢根菜單列表List<SysMenuEntity> menuList = queryListParentId(0L, menuIdList);//遞歸獲取子菜單getMenuTreeList(menuList, menuIdList);return menuList;}/*** 遞歸*/private List<SysMenuEntity> getMenuTreeList(List<SysMenuEntity> menuList, List<Long> menuIdList){List<SysMenuEntity> subMenuList = new ArrayList<SysMenuEntity>();for(SysMenuEntity entity : menuList){//目錄if(entity.getType() == Constant.MenuType.CATALOG.getValue()){entity.setList(getMenuTreeList(queryListParentId(entity.getMenuId(), menuIdList), menuIdList));}subMenuList.add(entity);}return subMenuList;}shiro權(quán)限靈活控制到目錄、菜單、按鈕級別以及權(quán)限攔截。
@Bean("shiroFilter")public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();shiroFilter.setSecurityManager(securityManager);//oauth過濾Map<String, Filter> filters = new HashMap<>();filters.put("oauth2", new OAuth2Filter());shiroFilter.setFilters(filters);Map<String, String> filterMap = new LinkedHashMap<>();filterMap.put("/webjars/**", "anon");filterMap.put("/druid/**", "anon");filterMap.put("/app/**", "anon");filterMap.put("/sys/login", "anon");filterMap.put("/swagger/**", "anon");filterMap.put("/v2/api-docs", "anon");filterMap.put("/swagger-ui.html", "anon");filterMap.put("/swagger-resources/**", "anon");filterMap.put("/captcha.jpg", "anon");filterMap.put("/aaa.txt", "anon");filterMap.put("/virtuel/**", "anon");filterMap.put("/**", "oauth2");shiroFilter.setFilterChainDefinitionMap(filterMap);return shiroFilter;}?登錄模塊的驗證以及保存token到前端
/*** 登錄*/@PostMapping("/sys/login")public Map<String, Object> login(@RequestBody SysLoginForm form)throws IOException {boolean captcha = sysCaptchaService.validate(form.getUuid(), form.getCaptcha()); // if(!captcha){ // return R.error("驗證碼不正確"); // }//用戶信息SysUserEntity user = sysUserService.queryByUserName(form.getUsername());//賬號不存在、密碼錯誤if(user == null || !user.getPassword().equals(new Sha256Hash(form.getPassword(), user.getSalt()).toHex())) {return R.error("賬號或密碼不正確");}//賬號鎖定if(user.getStatus() == 0){return R.error("賬號已被鎖定,請聯(lián)系管理員");}//生成token,并保存到數(shù)據(jù)庫R r = sysUserTokenService.createToken(user.getUserId());return r;}主要數(shù)據(jù)表設(shè)計:
數(shù)據(jù)庫名:renren-epidemic
文檔版本:V1.0.0
文檔描述:數(shù)據(jù)庫表設(shè)計描述
表clock
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | ||
| 2 | name | varchar | 255 | 0 | Y | N | 姓名 | |
| 3 | phone | varchar | 255 | 0 | Y | N | 手機號 | |
| 4 | szd | varchar | 255 | 0 | Y | N | 所在地 | |
| 5 | stzk | varchar | 255 | 0 | Y | N | 身體狀況 | |
| 6 | grjc | varchar | 255 | 0 | Y | N | 是否和感染人員接觸 | |
| 7 | bz | varchar | 255 | 0 | Y | N | ||
| 8 | create_time | datetime | 19 | 0 | Y | N | 日期 | |
| 9 | tw | varchar | 255 | 0 | Y | N |
表file
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | ||
| 2 | path | varchar | 255 | 0 | Y | N | ||
| 3 | file_name | varchar | 255 | 0 | Y | N | ||
| 4 | file_type | varchar | 255 | 0 | Y | N | ||
| 5 | classify | varchar | 255 | 0 | Y | N | ||
| 6 | create_time | datetime | 19 | 0 | Y | N | ||
| 7 | create_by | varchar | 255 | 0 | Y | N |
表go_out
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | ||
| 2 | wc_time | datetime | 19 | 0 | Y | N | 外出時間 | |
| 3 | wc_yy | varchar | 255 | 0 | Y | N | 外出原因 | |
| 4 | wc_dd | varchar | 255 | 0 | Y | N | 外出地點 | |
| 5 | username | varchar | 255 | 0 | Y | N | 用戶姓名 | |
| 6 | phone | varchar | 255 | 0 | Y | N | 聯(lián)系手機號碼 | |
| 7 | bz | varchar | 255 | 0 | Y | N | 備注說明 | |
| 8 | stu | varchar | 255 | 0 | Y | N |
表info
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | ||
| 2 | title | varchar | 255 | 0 | Y | N | ||
| 3 | content | longtext | 2147483647 | 0 | Y | N | ||
| 4 | create_time | datetime | 19 | 0 | Y | N | ||
| 5 | create_by | varchar | 255 | 0 | Y | N | ||
| 6 | bz | varchar | 255 | 0 | Y | N |
表sys_captcha (系統(tǒng)驗證碼)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | uuid | char | 36 | 0 | N | Y | uuid | |
| 2 | code | varchar | 6 | 0 | N | N | 驗證碼 | |
| 3 | expire_time | datetime | 19 | 0 | Y | N | 過期時間 |
表sys_config (系統(tǒng)配置信息表)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | param_key | varchar | 50 | 0 | Y | N | key | |
| 3 | param_value | varchar | 2000 | 0 | Y | N | value | |
| 4 | status | tinyint | 4 | 0 | Y | N | 1 | 狀態(tài) ??0:隱藏 ??1:顯示 |
| 5 | remark | varchar | 500 | 0 | Y | N | 備注 |
表sys_log (系統(tǒng)日志)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | username | varchar | 50 | 0 | Y | N | 用戶名 | |
| 3 | operation | varchar | 50 | 0 | Y | N | 用戶操作 | |
| 4 | method | varchar | 200 | 0 | Y | N | 請求方法 | |
| 5 | params | varchar | 5000 | 0 | Y | N | 請求參數(shù) | |
| 6 | time | bigint | 20 | 0 | N | N | 執(zhí)行時長(毫秒) | |
| 7 | ip | varchar | 64 | 0 | Y | N | IP地址 | |
| 8 | create_date | datetime | 19 | 0 | Y | N | 創(chuàng)建時間 |
表sys_menu (菜單管理)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | menu_id | bigint | 20 | 0 | N | Y | ||
| 2 | parent_id | bigint | 20 | 0 | Y | N | 父菜單ID,一級菜單為0 | |
| 3 | name | varchar | 50 | 0 | Y | N | 菜單名稱 | |
| 4 | url | varchar | 200 | 0 | Y | N | 菜單URL | |
| 5 | perms | varchar | 500 | 0 | Y | N | 授權(quán)(多個用逗號分隔,如:user:list,user:create) | |
| 6 | type | int | 10 | 0 | Y | N | 類型 ??0:目錄 ??1:菜單 ??2:按鈕 | |
| 7 | icon | varchar | 50 | 0 | Y | N | 菜單圖標(biāo) | |
| 8 | order_num | int | 10 | 0 | Y | N | 排序 |
表sys_oss (文件上傳)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | url | varchar | 200 | 0 | Y | N | URL地址 | |
| 3 | create_date | datetime | 19 | 0 | Y | N | 創(chuàng)建時間 |
表sys_role (角色)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | role_id | bigint | 20 | 0 | N | Y | ||
| 2 | role_name | varchar | 100 | 0 | Y | N | 角色名稱 | |
| 3 | remark | varchar | 100 | 0 | Y | N | 備注 | |
| 4 | create_user_id | bigint | 20 | 0 | Y | N | 創(chuàng)建者ID | |
| 5 | create_time | datetime | 19 | 0 | Y | N | 創(chuàng)建時間 |
表sys_role_menu (角色與菜單對應(yīng)關(guān)系)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | role_id | bigint | 20 | 0 | Y | N | 角色ID | |
| 3 | menu_id | bigint | 20 | 0 | Y | N | 菜單ID |
表sys_user (系統(tǒng)用戶)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | user_id | bigint | 20 | 0 | N | Y | ||
| 2 | username | varchar | 50 | 0 | N | N | 用戶名 | |
| 3 | password | varchar | 100 | 0 | Y | N | 密碼 | |
| 4 | salt | varchar | 20 | 0 | Y | N | 鹽 | |
| 5 | | varchar | 100 | 0 | Y | N | 郵箱 | |
| 6 | mobile | varchar | 100 | 0 | Y | N | 手機號 | |
| 7 | status | tinyint | 4 | 0 | Y | N | 狀態(tài) ?0:禁用 ??1:正常 | |
| 8 | create_user_id | bigint | 20 | 0 | Y | N | 創(chuàng)建者ID | |
| 9 | create_time | datetime | 19 | 0 | Y | N | 創(chuàng)建時間 |
表sys_user_role (用戶與角色對應(yīng)關(guān)系)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | user_id | bigint | 20 | 0 | Y | N | 用戶ID | |
| 3 | role_id | bigint | 20 | 0 | Y | N | 角色ID |
表sys_user_token (系統(tǒng)用戶Token)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | user_id | bigint | 20 | 0 | N | Y | ||
| 2 | token | varchar | 100 | 0 | N | N | token | |
| 3 | expire_time | datetime | 19 | 0 | Y | N | 過期時間 | |
| 4 | update_time | datetime | 19 | 0 | Y | N | 更新時間 |
表thm
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | ||
| 2 | username | varchar | 255 | 0 | Y | N | ||
| 3 | cx_time | datetime | 19 | 0 | Y | N | ||
| 4 | place | varchar | 255 | 0 | Y | N | ||
| 5 | bz | varchar | 255 | 0 | Y | N | ||
| 6 | mobile | varchar | 255 | 0 | Y | N |
表towork_apply
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認(rèn)值 | 說明 |
| 1 | id | int | 10 | 0 | N | Y | ||
| 2 | title | varchar | 255 | 0 | Y | N | ||
| 3 | content | varchar | 255 | 0 | Y | N | ||
| 4 | apply_user | varchar | 255 | 0 | Y | N | ||
| 5 | apply_time | datetime | 19 | 0 | Y | N | ||
| 6 | bz | varchar | 255 | 0 | Y | N | ||
| 7 | stu | varchar | 255 | 0 | Y | N |
?獲取源碼聯(lián)系:
?大家點贊、收藏、關(guān)注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯(lián)系方式👇🏻👇🏻👇🏻
打卡 文章 更新?115/? 365天
?精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
??Java項目精品實戰(zhàn)案例《100套》https://blog.csdn.net/weixin_39709134/category_11128297.htmlhttps://blog.csdn.net/weixin_39709134/category_11128297.html
web前端期末大作業(yè)網(wǎng)頁實戰(zhàn)《100套》https://blog.csdn.net/weixin_39709134/category_11374891.htmlhttps://blog.csdn.net/weixin_39709134/category_11374891.html
總結(jié)
以上是生活随笔為你收集整理的基于java Springboot+Vue+shiro前后端分离疫情防疫管理系统设计和实现2.0的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML+CSS+JS实现 ❤️echa
- 下一篇: npm install packagen