日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

snowy框架

發(fā)布時(shí)間:2023/12/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 snowy框架 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用戶登錄

接受前端傳來(lái)的用戶名,密碼,租戶驗(yàn)證碼,驗(yàn)證碼。校驗(yàn)驗(yàn)證碼,查看是否開(kāi)啟多租戶功能。

然后就是校驗(yàn)賬號(hào)和密碼,判斷傳入賬號(hào)和密碼是否為空,空就異常,根據(jù)賬號(hào)查詢用戶,不存在拋異常。賬號(hào)存在,獲取賬號(hào)的passwordhashvalue值,將得到的密碼解密,將解密后的密碼進(jìn)行hashvalue處理,然后進(jìn)行判斷。

登錄,要查看狀態(tài)不能為停用狀態(tài),然后構(gòu)建登錄用戶信息(員工信息(構(gòu)建登錄用戶時(shí)候沒(méi)有查詢附屬機(jī)構(gòu)id,職位id),首先會(huì)獲取全部的菜單id,然后根據(jù)用戶id和角色id,查詢出自己的數(shù)據(jù)范圍。角色信息,權(quán)限信息,應(yīng)用信息,數(shù)據(jù)范圍信息),然后使用JWT工具類(lèi)構(gòu)建token,將登錄信息緩存在redis中,過(guò)期時(shí)間為兩個(gè)小時(shí)。然后將用戶登錄的時(shí)間和地址進(jìn)行更新。寫(xiě)入日志。設(shè)置SpringSecurityContext上下文(之后獲取用戶就很簡(jiǎn)單),判斷是否單用戶登錄(獲取redis中所有用戶的登錄信息,刪掉賬號(hào)名相同,但是登錄用戶的UUID和剛生成的不同的)。

默認(rèn)app:首先判斷自己擁有的菜單編碼,查看是否有默認(rèn)激活的應(yīng)用(active=Y),將這個(gè)放在userAppDictlist的第一個(gè),否則就按照獲取菜單編碼的第一個(gè)作為首個(gè)app0。

app和菜單的關(guān)系,先通過(guò)角色獲取菜單代碼集合,菜單中的application對(duì)應(yīng)這app中的code。超級(jí)管理員只能獲得系統(tǒng)權(quán)重菜單,不能獲取業(yè)務(wù)權(quán)重菜單。

由用戶id,菜單id集合和appcode獲取該用戶的菜單樹(shù)。

用戶退出

  • 從request中獲取到token,request中會(huì)將token進(jìn)行封裝,檢驗(yàn)token,獲取到payLoad中的信息UUID信息,判斷redis中的uuid和生成的uuid是否相同。從redis中將key的信息進(jìn)行刪除。

新增:

如果不是自己所擁有的數(shù)據(jù)范圍,則不能夠添加該范圍內(nèi)的用戶。首先會(huì)先給用戶賦一個(gè)初始密碼,然后查看用戶是否設(shè)置密碼,設(shè)置就覆蓋掉HashValue,將手機(jī)號(hào)敏感加密使用SM4,然后保存用戶信息。同時(shí),把用戶id,作為參數(shù)傳給員工id,查看是否存在這個(gè)用戶,沒(méi)有就設(shè)置為null,然后將SysEmpParam中的參數(shù)copy給emp表,然后查看這個(gè)員工的附屬機(jī)構(gòu),刪除之前的附屬機(jī)構(gòu),重新賦值,職位也是一樣。

編輯:

和新增差不多,相當(dāng)于新增了。新增時(shí)直接給了狀態(tài),編輯是先讓狀態(tài)為null,然后在更新?tīng)顟B(tài)。

刪除

刪除用戶的時(shí)候,將用戶信息中狀態(tài)設(shè)置Delete,根據(jù)用戶id刪除員工信息表中的員工表(里邊有機(jī)構(gòu)),員工附屬機(jī)構(gòu)職位表,員工職位表信息,然后根據(jù)用戶id,刪除用戶角色和數(shù)據(jù)范圍。

授權(quán)角色

授權(quán)角色會(huì)先去查看角色權(quán)限,如果沒(méi)有則不能授權(quán),授權(quán)方式就是先刪除之前的角色,然后重新賦值。

授權(quán)數(shù)據(jù)

授權(quán)數(shù)據(jù)會(huì)先去查看數(shù)據(jù)權(quán)限(就是說(shuō)自己的機(jī)構(gòu)是否包含想要賦值的機(jī)構(gòu)),沒(méi)有則不能賦值,授權(quán)方式也是先刪除之前的數(shù)據(jù)范圍,然后重新賦值。授權(quán)數(shù)據(jù)就相當(dāng)于授權(quán)職位。

app:

激活功能:將激活的改為未激活,然后將想要激活的active改為Y。

構(gòu)建樹(shù):

  • 獲取父節(jié)點(diǎn)(0L)
  • 根據(jù)父節(jié)點(diǎn)獲取子一級(jí)節(jié)點(diǎn)
  • 然后根據(jù)子一級(jí)節(jié)點(diǎn)進(jìn)行遞歸。

刪除app時(shí),應(yīng)查看該app下是否有正常的菜單,有則不能刪除。

菜單:

  • 創(chuàng)建目錄,校驗(yàn)傳過(guò)來(lái)的參數(shù)。

  • 重新設(shè)置pids,因?yàn)槭悄夸浰詐ids=[0],

  • 設(shè)置為啟用狀態(tài)

    • 創(chuàng)建菜單,校驗(yàn)參數(shù)
    • 從pid獲取到pids,然后添加進(jìn)去
    • 設(shè)置啟用
      • 創(chuàng)建按鈕,校驗(yàn)參數(shù),包含:,\
      • 從pid獲取到pids,然后添加進(jìn)去
      • 設(shè)置啟用

刪除就是級(jí)聯(lián)刪除,獲取子節(jié)點(diǎn)所有的集合,然后設(shè)置為delete

修改的時(shí)候不能讓自己選擇自己,否則無(wú)限循環(huán),也不能讓自己成為父節(jié)點(diǎn)的父節(jié)點(diǎn)。

獲取系統(tǒng)菜單樹(shù),根據(jù)application獲得所在的菜單,然后構(gòu)建樹(shù),供增加和修改時(shí)查看父節(jié)點(diǎn)。

切換菜單,獲取角色id組合,由角色id組合得到菜單id集合,

員工

員工表包含員工id,機(jī)構(gòu)id,機(jī)構(gòu)name

機(jī)構(gòu)表,包含pid和pids

職位表:職位id和name

員工職位表:員工id,職位id

員工附屬機(jī)構(gòu)職位表:員工id,機(jī)構(gòu)id,職位id

刪除機(jī)構(gòu)時(shí),判斷是否有員工,

員工可以添加附屬機(jī)構(gòu),

機(jī)構(gòu):

新增時(shí),首先檢驗(yàn)參數(shù),不是管理員登錄時(shí),不能夠添加父節(jié)點(diǎn)(0L),添加子節(jié)點(diǎn)時(shí)也要去數(shù)據(jù)權(quán)限校驗(yàn)(檢驗(yàn)添加的節(jié)點(diǎn)是否在自己權(quán)限范圍內(nèi))。

刪除時(shí),會(huì)先將所有的子節(jié)點(diǎn)放到list中,然后校驗(yàn)登錄用戶的數(shù)據(jù)區(qū)權(quán)限包不包括這些刪除的節(jié)點(diǎn)。如果機(jī)構(gòu)下有員工不能刪,附屬機(jī)構(gòu)下有員工也不能刪除。沒(méi)有的話就級(jí)聯(lián)刪除信息。

修改的時(shí)候,首先校驗(yàn)登陸人的datascope是否包含操作的公司。檢驗(yàn)參數(shù)。如果修改了別的地方的信息,去別的表中修改信息。然后將所有的子節(jié)點(diǎn)進(jìn)行更新。

角色包含著菜單和數(shù)據(jù)。

用戶被授權(quán)角色就可以有相應(yīng)菜單和角色中包含的部分或全部數(shù)據(jù)

角色:

刪除角色的時(shí)候,將狀態(tài)改為2,然后刪除該角色對(duì)應(yīng)的數(shù)據(jù)范圍(本人數(shù)據(jù),自定義數(shù)據(jù)),刪除用戶角色中間表的信息,刪除角色菜單表中數(shù)據(jù)

授權(quán)菜單時(shí),首先應(yīng)該刪除原有的菜單-角色表中數(shù)據(jù),然后新增。

授權(quán)數(shù)據(jù)范圍時(shí),如果授權(quán)為全部,沒(méi)權(quán)限。如果是自定義,查看是否在自己權(quán)限范圍內(nèi)。授權(quán)數(shù)據(jù)時(shí),也是先刪除原有數(shù)據(jù)范圍,然后賦新值。

角色也有自己的數(shù)據(jù)范圍

職位

刪除職位的時(shí)候,判斷該職位和該員工附屬職位下是否有員工,有則不能刪除,要將員工-職位表中數(shù)據(jù)一并刪除。

area

只有個(gè)查詢方法。

consts

添加系統(tǒng)配置時(shí),會(huì)將配置放到ConstantContext中,方便之后獲取。

刪除系統(tǒng)配置時(shí),會(huì)去查看狀態(tài)是否為Y,不是就可以刪除,然后刪除對(duì)應(yīng)的Context中內(nèi)容。

修改時(shí),不能修改狀態(tài),編輯過(guò)后,將新的內(nèi)容放到context中。

timer,sms,oauth,notice,monitor,log,file,emp,email,dict,consts,area,

DictType

字典類(lèi)型下有個(gè)字典,通過(guò)字典類(lèi)型id獲得字典值。

刪除的時(shí)候會(huì)將字典類(lèi)型下的字典也會(huì)刪除。

字典樹(shù),獲取字典類(lèi)型,然后設(shè)置字典類(lèi)型為pid=0,然后查找字典值,pid為字典類(lèi)型的id。,然后經(jīng)過(guò)doTreeBuild()。

DictData

一樣。

email

email功能沒(méi)成功好像是因?yàn)檫^(guò)濾問(wèn)題。

file

使用的是@Resource,按照名字查找實(shí)例@Bean,能找到實(shí)例Bean的名字,然后就調(diào)用實(shí)例@Bean。

上傳文件的流程:

  • 生成id,獲取文件名稱(chēng),獲取后綴,后綴不能為空,將三個(gè)加起來(lái)生成最后的名稱(chēng)。
  • 將文件轉(zhuǎn)化為byte[],通過(guò)storageFile()方法在指定位置創(chuàng)建文件

上傳文件時(shí)候,獲取的默認(rèn)地址是在調(diào)用構(gòu)造器的時(shí)候初始化了。

monitor

在線用戶列表:從redis中獲取key所對(duì)應(yīng)的value。

強(qiáng)制退出:獲取登錄用戶的id,然后清楚登錄該用戶的redis信息,加入退出日志。

Notice

已收:根據(jù)當(dāng)前用戶id去查詢所有沒(méi)有被刪除的信息。

這里寫(xiě)自定義目錄標(biāo)題

  • 用戶登錄
    • 用戶退出
    • 新增:
    • 編輯:
    • 刪除
    • 授權(quán)角色
    • 授權(quán)數(shù)據(jù)
  • app:
  • 菜單:
  • 員工
  • 機(jī)構(gòu):
  • 角色:
  • 職位
  • area
  • consts
  • DictType
  • DictData
  • email
  • file
  • monitor
  • Notice

總結(jié)

以上是生活随笔為你收集整理的snowy框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。