动态表单,三表联查数据重组

查出的数据进行重组

例如

取出来的数据类型是这样的
testlist = [{"id":1,'name':'用户管理',"pid":1,'pname':"菜单管理"},{"id":2,'name':'用户22管理',"pid":1,'pname':"菜单管理"}]
进行数据重组
#定义两个列表
#一个列表存放pid
idlist=[]
#一个列表存放菜单数据 son权限数据
reslist=[]
# reslist = [{"id":1,"name":"菜单管理","son":[{"id":1,'name':'用户管理'},{"id":2,'name':'用户22管理'}]}]
for i in testlist:
    if i['pid'] not in idlist:
        reslist.append({"id":i['pid'],"name":i['pname'],"son":[{"id":i['id'],'name':i['name']}]})
        idlist.append(i['pid'])
    else:
        index = idlist.index(i['pid'])
        reslist[index]['son'].append({"id":i['id'],'name':i['name']})
print(reslist)

重组后的数据是这样的

[{'id': 1, 'name': '菜单管理', 'son': [{'id': 1, 'name': '用户管理'}, {'id': 2, 'name': '用户22管理'}]}]

OA平台进行实现

mysql使用左外连接实现
语法:select 字段 from 表1 left join 表2 on 连接条件;

# 根式或数据
def data_get(data):
    if not data:
        return []
    # 把接收到的数据重组
    list_id = []
    list_res = []
    for i in data:
        if i['pid'] not in list_id:
            list_res.append({"id": i['pid'], "name": i['pname'], "son": [{"id": i['id'],'url': i['url'], 'name': i['rname']}]})
            list_id.append(i['pid'])
        else:
            index = list_id.index(i['pid'])
            list_res[index]['son'].append({"id": i['id'],'url': i['url'], 'name': i['rname']})
    return list_res
    
	@staticmethod
    def user_resource_all(db: Session, role_id: int) -> list:
        # 查询结果集
        sql = f"select res.rname,res.url,res.pid,par.id,par.rname as pname from role_resource as rr left join resource as res on rr.resource_id=res.id left join resource as par on res.pid=par.id where role_id={role_id}"
        data = db.execute(sql)

        # 序列化数据
        datas = data_get(data)
        return datas

# 获取用户对应的权限
@router.get("/get/user/resource", summary="获取用户对应的权限")
async def get_role_resource(
        db: Session = Depends(deps.get_db),
        role_id=int
):
    response_result = curd_resource.user_resource_all(db, role_id=role_id)
    return response_code.resp_200(data=response_result)

根据登录进来的用户 获取他的角色信息来判断他的资源
角色表
在这里插入图片描述

资源表
在这里插入图片描述
角色资源表
字段 :角色id 资源id
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值