目標
- 用戶管理需求和準備
- 用戶管理
api
- 用戶管理前端
- 用戶頭像
- 為用戶分配角色
用戶條件分頁查詢API
- 一樣是透過
controller -> service -> mapper
拿到資料list
後再回傳給前端
新增用戶
- 也是同樣的切割code
- 用戶名不能重複
- 只列出未被刪除(is_deleted=0)的數據
Controller
Service
剩餘的用戶修改以及刪除功能也都大同小異
用戶管理-前端
前面已經寫好後端了,接下來前端一步一步完成,以下就直接放完成的code
了,因為大同小異,調用方法、接收數據、傳送數據、顯示數據…
實作新增用戶的時候後端出現錯誤,通過在globalException printStackTrace
找到原因,提示status
不能為null
,於是在service
設定一下sysUser.setStatus(1);
順利解決
修改用戶時如果沒有修改用戶名,原本的後端邏輯會檢測到數據庫有重名,造成操作失敗,改為以下程式碼修復成功
用戶頭像
使用minio
一個使用Golang開發的雲端儲存的開源專案,專注於儲存大量的非結構化的數據,如圖片、影片、文字等任何非結構化的數據,類似於AWS S3的開源版本,可以在影像辨識、NLP模型的訓練及重新部署等情境發揮作用
安裝後新增bucket
並且設定Access Policy
為public
上傳頭像
- 使用新的
controller
和service
專門處理檔案上傳
- 直接使用原始檔案名稱會有重複檔名出現的可能性
基礎的做完之後,接下來優化程式碼
使用設定檔案去除寫死的string
設定檔案
定義設定檔案class
加入設定檔案至主程式
重複檔案名稱問題解決
直接加上uuid
隨機化名子以及加上日期分組
修改用戶頭像時有bug
,需要在mapper
寫入資料庫
角色分配
為了讓每個用戶有自己的角色(多個角色),需要更新用戶與角色之間的關係表,也就是做用戶與角色表之間的關聯
查詢所有角色
SysRoleController.java
使用Map
的目的是我們最終要兩種資料
SysRoleServiceImpl.java
SysRoleMapper.xml
前端一樣調用後端API
然後顯示數據,vue
內要記得引入js
檔案
儲存用戶分配的角色
controller
從前端拿到請求後,呼叫service
執行兩個動作
- 根據
userId
刪除該用戶之前已經分配的所有角色
- 重新插入用戶新分配之角色
省去查詢與比對的麻煩
SysUserServiceImpl.java
顯示用戶分配過的角色
沿用前面搜尋所有角色的api
,只需要多傳入userId
然後再多寫一個方法利用userId
查詢該id
的所有roleId
前端的部分也是改成呼叫時傳userId
給後端
結果拿到後element-plus
就會依照roleId
把每個用戶自己的role
打勾,完成顯示