目錄
研究背景
主要特性功能:
視頻效果演示 :
主要功能截圖:
系統首頁:
疫情資料分布圖模擬:
用戶管理:
角色控制:
選單權限:
每日健康打卡:
歷史出行資料:
外出報備申請:
外出請假審核:
疫情通知公告:
疫情資料管理:
注銷修改密碼:
?主要代碼實作:
主要資料表設計:
表clock
表file
表go_out
表info
表sys_captcha (系統驗證碼)
表sys_config (系統配置資訊表)
表sys_log (系統日志)
表sys_oss (檔案上傳)
表sys_role (角色)
表sys_user (系統用戶)
表sys_user_role (用戶與角色對應關系)
表sys_user_token (系統用戶Token)
表thm
表towork_apply
獲取原始碼聯系:
🍅 作者主頁:Java李楊勇
🍅 簡介:Java領域優質創作者🏆、【java李楊勇】公號作者? 簡歷模板、學習資料、面試題庫【關注我,都給你】
🍅文末獲取原始碼聯系🍅
主要特性功能:
完全回應式布局(支持電腦、平板、手機等所有主流設備)
強大的一鍵生成功能(包括控制器、模型、視圖、選單等)
支持多資料源,簡單配置即可實作切換,
支持按鈕及資料權限,可自定義部門資料權限,
對常用js插件進行二次封裝,使js代碼變得簡潔,更加易維護
完善的XSS防范及腳本過濾,徹底杜絕XSS攻擊
Maven多專案依賴,模塊及插件分專案,盡量松耦合,方便模塊升級、增減模塊,
國際化支持,服務端及客戶端支持
完善的日志記錄體系簡單注解即可實作
支持服務監控,資料監控,快取監控功能,主要技術:java、springboot、springmvc、redis、shiro、vue、element、echarts、mysql等
視頻效果演示 :基于Springboot+Vue前后端分離疫情防疫管理系統設計和實.mp4https://www.bilibili.com/video/BV1tb4y1i7Lh
https://www.bilibili.com/video/BV1tb4y1i7Lh
主要功能截圖:
用戶登錄、輸入賬號密碼進行驗證和用戶角色判斷、不同角色不同選單權限

系統首頁:

疫情資料分布圖模擬:

用戶管理:


角色控制:

選單權限:


每日健康打卡:


歷史出行資料:

外出報備申請:

外出請假審核:


疫情通知公告:


疫情資料管理:


注銷修改密碼:
主要代碼實作:
選單串列處理和顯示:
@Service("sysMenuService")
public class SysMenuServiceImpl extends ServiceImpl<SysMenuDao, SysMenuEntity> implements SysMenuService {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Override
public 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;
}
@Override
public List<SysMenuEntity> queryListParentId(Long parentId) {
return baseMapper.queryListParentId(parentId);
}
@Override
public List<SysMenuEntity> queryNotButtonList() {
return baseMapper.queryNotButtonList();
}
@Override
public List<SysMenuEntity> getUserMenuList(Long userId) {
//系統管理員,擁有最高權限
if(userId == Constant.SUPER_ADMIN){
return getAllMenuList(null);
}
//用戶選單串列
List<Long> menuIdList = sysUserService.queryAllMenuId(userId);
return getAllMenuList(menuIdList);
}
@Override
public void delete(Long menuId){
//洗掉選單
this.removeById(menuId);
//洗掉選單與角色關聯
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權限靈活控制到目錄、選單、按鈕級別以及權限攔截,
@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("賬號已被鎖定,請聯系管理員");
}
//生成token,并保存到資料庫
R r = sysUserTokenService.createToken(user.getUserId());
return r;
}
主要資料表設計:
資料庫名:renren-epidemic
檔案版本:V1.0.0
檔案描述:資料庫表設計描述
表clock
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 聯系手機號碼 | |
| 7 | bz | varchar | 255 | 0 | Y | N | 備注說明 | |
| 8 | stu | varchar | 255 | 0 | Y | N |
表info
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 (系統驗證碼)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 (系統配置資訊表)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 狀態 0:隱藏 1:顯示 |
| 5 | remark | varchar | 500 | 0 | Y | N | 備注 |
表sys_log (系統日志)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 請求引數 | |
| 6 | time | bigint | 20 | 0 | N | N | 執行時長(毫秒) | |
| 7 | ip | varchar | 64 | 0 | Y | N | IP地址 | |
| 8 | create_date | datetime | 19 | 0 | Y | N | 創建時間 |
表sys_menu (選單管理)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 授權(多個用逗號分隔,如:user:list,user:create) | |
| 6 | type | int | 10 | 0 | Y | N | 型別 0:目錄 1:選單 2:按鈕 | |
| 7 | icon | varchar | 50 | 0 | Y | N | 選單圖示 | |
| 8 | order_num | int | 10 | 0 | Y | N | 排序 |
表sys_oss (檔案上傳)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | id | bigint | 20 | 0 | N | Y | ||
| 2 | url | varchar | 200 | 0 | Y | N | URL地址 | |
| 3 | create_date | datetime | 19 | 0 | Y | N | 創建時間 |
表sys_role (角色)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 創建者ID | |
| 5 | create_time | datetime | 19 | 0 | Y | N | 創建時間 |
表sys_role_menu (角色與選單對應關系)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 (系統用戶)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 狀態 0:禁用 1:正常 | |
| 8 | create_user_id | bigint | 20 | 0 | Y | N | 創建者ID | |
| 9 | create_time | datetime | 19 | 0 | Y | N | 創建時間 |
表sys_user_role (用戶與角色對應關系)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 (系統用戶Token)
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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
| 編號 | 名稱 | 資料型別 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 |
獲取原始碼聯系:
大家點贊、收藏、關注、評論啦 、查看👇🏻👇🏻👇🏻微信公眾號獲取聯系方式👇🏻👇🏻👇🏻
打卡 文章 更新 115/ 365天
精彩專欄推薦訂閱:在下方專欄👇🏻👇🏻👇🏻👇🏻
Java專案精品實戰案例《100套》https://blog.csdn.net/weixin_39709134/category_11128297.html
https://blog.csdn.net/weixin_39709134/category_11128297.html
web前端期末大作業網頁實戰《100套》https://blog.csdn.net/weixin_39709134/category_11374891.html
https://blog.csdn.net/weixin_39709134/category_11374891.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377151.html
標籤:其他
下一篇:演算法學習:動態規劃
