snowy框架

用户登录

接受前端传来的用户名,密码,租户验证码,验证码。校验验证码,查看是否开启多租户功能。

然后就是校验账号和密码,判断传入账号和密码是否为空,空就异常,根据账号查询用户,不存在抛异常。账号存在,获取账号的passwordhashvalue值,将得到的密码解密,将解密后的密码进行hashvalue处理,然后进行判断。

登录,要查看状态不能为停用状态,然后构建登录用户信息(员工信息(构建登录用户时候没有查询附属机构id,职位id),首先会获取全部的菜单id,然后根据用户id和角色id,查询出自己的数据范围。角色信息,权限信息,应用信息,数据范围信息),然后使用JWT工具类构建token,将登录信息缓存在redis中,过期时间为两个小时。然后将用户登录的时间和地址进行更新。写入日志。设置SpringSecurityContext上下文(之后获取用户就很简单),判断是否单用户登录(获取redis中所有用户的登录信息,删掉账号名相同,但是登录用户的UUID和刚生成的不同的)。

默认app:首先判断自己拥有的菜单编码,查看是否有默认激活的应用(active=Y),将这个放在userAppDictlist的第一个,否则就按照获取菜单编码的第一个作为首个app0。

app和菜单的关系,先通过角色获取菜单代码集合,菜单中的application对应这app中的code。超级管理员只能获得系统权重菜单,不能获取业务权重菜单。

由用户id,菜单id集合和appcode获取该用户的菜单树。

用户退出

  • 从request中获取到token,request中会将token进行封装,检验token,获取到payLoad中的信息UUID信息,判断redis中的uuid和生成的uuid是否相同。从redis中将key的信息进行删除。

新增:

如果不是自己所拥有的数据范围,则不能够添加该范围内的用户。首先会先给用户赋一个初始密码,然后查看用户是否设置密码,设置就覆盖掉HashValue,将手机号敏感加密使用SM4,然后保存用户信息。同时,把用户id,作为参数传给员工id,查看是否存在这个用户,没有就设置为null,然后将SysEmpParam中的参数copy给emp表,然后查看这个员工的附属机构,删除之前的附属机构,重新赋值,职位也是一样。

编辑:

和新增差不多,相当于新增了。新增时直接给了状态,编辑是先让状态为null,然后在更新状态。

删除

删除用户的时候,将用户信息中状态设置Delete,根据用户id删除员工信息表中的员工表(里边有机构),员工附属机构职位表,员工职位表信息,然后根据用户id,删除用户角色和数据范围。

授权角色

授权角色会先去查看角色权限,如果没有则不能授权,授权方式就是先删除之前的角色,然后重新赋值。

授权数据

授权数据会先去查看数据权限(就是说自己的机构是否包含想要赋值的机构),没有则不能赋值,授权方式也是先删除之前的数据范围,然后重新赋值。授权数据就相当于授权职位。

app:

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

构建树:

  • 获取父节点(0L)
  • 根据父节点获取子一级节点
  • 然后根据子一级节点进行递归。

删除app时,应查看该app下是否有正常的菜单,有则不能删除。

菜单:

  • 创建目录,校验传过来的参数。

  • 重新设置pids,因为是目录所以pids=[0],

  • 设置为启用状态

    • 创建菜单,校验参数
    • 从pid获取到pids,然后添加进去
    • 设置启用
      • 创建按钮,校验参数,包含:,\
      • 从pid获取到pids,然后添加进去
      • 设置启用

删除就是级联删除,获取子节点所有的集合,然后设置为delete

修改的时候不能让自己选择自己,否则无限循环,也不能让自己成为父节点的父节点。

获取系统菜单树,根据application获得所在的菜单,然后构建树,供增加和修改时查看父节点。

切换菜单,获取角色id组合,由角色id组合得到菜单id集合,

员工

员工表包含员工id,机构id,机构name

机构表,包含pid和pids

职位表:职位id和name

员工职位表:员工id,职位id

员工附属机构职位表:员工id,机构id,职位id

删除机构时,判断是否有员工,

员工可以添加附属机构,

机构:

新增时,首先检验参数,不是管理员登录时,不能够添加父节点(0L),添加子节点时也要去数据权限校验(检验添加的节点是否在自己权限范围内)。

删除时,会先将所有的子节点放到list中,然后校验登录用户的数据区权限包不包括这些删除的节点。如果机构下有员工不能删,附属机构下有员工也不能删除。没有的话就级联删除信息。

修改的时候,首先校验登陆人的datascope是否包含操作的公司。检验参数。如果修改了别的地方的信息,去别的表中修改信息。然后将所有的子节点进行更新。

角色包含着菜单和数据。

用户被授权角色就可以有相应菜单和角色中包含的部分或全部数据

角色:

删除角色的时候,将状态改为2,然后删除该角色对应的数据范围(本人数据,自定义数据),删除用户角色中间表的信息,删除角色菜单表中数据

授权菜单时,首先应该删除原有的菜单-角色表中数据,然后新增。

授权数据范围时,如果授权为全部,没权限。如果是自定义,查看是否在自己权限范围内。授权数据时,也是先删除原有数据范围,然后赋新值。

角色也有自己的数据范围

职位

删除职位的时候,判断该职位和该员工附属职位下是否有员工,有则不能删除,要将员工-职位表中数据一并删除。

area

只有个查询方法。

consts

添加系统配置时,会将配置放到ConstantContext中,方便之后获取。

删除系统配置时,会去查看状态是否为Y,不是就可以删除,然后删除对应的Context中内容。

修改时,不能修改状态,编辑过后,将新的内容放到context中。

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

DictType

字典类型下有个字典,通过字典类型id获得字典值。

删除的时候会将字典类型下的字典也会删除。

字典树,获取字典类型,然后设置字典类型为pid=0,然后查找字典值,pid为字典类型的id。,然后经过doTreeBuild()。

DictData

一样。

email

email功能没成功好像是因为过滤问题。

file

使用的是@Resource,按照名字查找实例@Bean,能找到实例Bean的名字,然后就调用实例@Bean。

上传文件的流程:

  • 生成id,获取文件名称,获取后缀,后缀不能为空,将三个加起来生成最后的名称。
  • 将文件转化为byte[],通过storageFile()方法在指定位置创建文件

上传文件时候,获取的默认地址是在调用构造器的时候初始化了。

monitor

在线用户列表:从redis中获取key所对应的value。

强制退出:获取登录用户的id,然后清楚登录该用户的redis信息,加入退出日志。

Notice

已收:根据当前用户id去查询所有没有被删除的信息。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,你想了解关于使用FastAPI和Snowy搭建后台管理系统的内容,是吗?那么我会为你提供一些相关的信息。 首先,FastAPI是一个基于Python的高性能Web框架,它使用异步编程方式,支持单线程处理多个请求。相比于其他Python框架,FastAPI的运行速度更快,而且使用简单,易于上手。 而Snowy则是一个基于Vue.js的前端UI框架,它提供了一系列的组件和模板,可以快速搭建出美观、易用的后台管理系统。Snowy的特点是轻量级、易于扩展、响应式设计,很适合用于构建现代化的Web应用程序。 要使用FastAPI和Snowy搭建后台管理系统,你可以按照以下步骤进行: 1. 安装FastAPI和相关依赖 使用pip命令安装FastAPI和uvicorn(一个基于ASGI的Web服务器): ``` pip install fastapi uvicorn ``` 2. 创建FastAPI应用程序 在你的Python项目中创建一个FastAPI应用程序,可以使用类似下面的代码: ```python from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} ``` 这个例子创建了一个简单的FastAPI应用程序,其中定义了一个处理HTTP GET请求的路由(/),返回一个JSON对象。 3. 运行FastAPI应用程序 在终端中使用uvicorn命令来运行FastAPI应用程序: ``` uvicorn main:app --reload ``` 这个命令将启动一个Web服务器,监听本地的8000端口,可以通过浏览器访问http://localhost:8000来测试你的应用程序。 4. 集成Snowy前端框架 通过npm命令安装Snowy框架: ``` npm install snowy ``` 在你的Vue.js应用程序中引入Snowy组件: ```javascript import Vue from 'vue' import Snowy from 'snowy' Vue.use(Snowy) ``` 现在你可以使用Snowy提供的组件来构建你的后台管理系统,例如表格、表单、图表等。你可以参考Snowy的文档来学习如何使用这些组件。 5. 开始构建后台管理系统 现在你可以开始使用FastAPI和Snowy来构建你的后台管理系统了。你可以在FastAPI中定义路由和API接口,提供数据服务,而在Snowy中构建前端页面,展示数据和交互。你可以使用Vue.js的数据绑定和事件处理机制,将前端页面和后端数据连接起来。 总之,使用FastAPI和Snowy搭建后台管理系统可以让你快速开发出高性能、易用的Web应用程序。它们都是开源的项目,拥有广泛的社区支持和生态环境,非常适合用于构建现代化的Web应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值