背景: 大部分涉及金额的系统都要做佣金统计或查询所有下级的资料, 只用的关联(DBRef)查询, 不好处理,

这时可以添加多一个字段relation, 例如:

管理员admin :  /admin

一级下级: /admin/ObjectId("xxxxxxx")

二级下级: /admin/ObjectId("xxxxxxx")/ObjectId("yyyyyyyy")

三级下级: /admin/ObjectId("xxxxxxx")/ObjectId("yyyyyyyy")/ObjectId("yyyyyyyy")

......

以此类推, 当需要查找某个用户的所有下级时, 用正则匹配即可

此处除开管理员(管理员可能为多个), 我都用mongo的ObjectId存储, 以确保唯一性

下面根据系统要求定义函数

函数:

def get_lower_user(self):
            """
                获取当前用户自己和自己的下级
            """
            # 得到当前用户
            current_user = db.user.find_one({ "_id" : ObjectId(self.get_current_user()) })
            # 如果当前用户不为管理员
            if current_user.role == "admin":
                reg = "^/admin"         # 获取当前用户自己和自己的下级
                reg = "^/admin/"        # 只获取当前用户的下级
            else:
                reg = "^%s" % current_user.relation     # 获取当前用户自己和自己的下级
                reg = "^%s/" % current_user.relation    # 只获取当前用户的下级

return reg

调用: 只需要匹配此正则的relation的用户都是下级

备注: DBRef关联查询, 我还是做了保留字段, 因为在很多情况只需要查询上一级和下一级的用户时用到

数据库处理用户上下级关系相关推荐

  1. ClosureTable 用户上下级有关系的建立和使用

    最近在弄个分佣项目,一开始使用了之前转载的那个path方式来做,但使用后发现这个方式不太合适用来做各种级差.分销.无限等分佣方式,然后百度一下午,终于找到了一个非常不错的建立上下级关系方法,Closu ...

  2. 数据库管理员用户角色组权限设计

    一.引言 因为做过的一些系统的权限管理的功能虽然在逐步完善,但总有些不尽人意的地方,总想抽个时间来更好的思考一下权限系统的设计. 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新 ...

  3. PHP分销推广如何确立上下级关系,【解决方案+问题分析】微信分销会员上下级关系出现混乱,剖析全过程...

    微信分销会员上下级关系出现混乱,从反馈到分析问题如何发生 ,再到如果解决.在此把实际项目遇到的问题分享出来,以供以后和网友参考. 某日,接到一通领导打来的一通电话.电话主要内容是他曾接到一个用户的反馈 ...

  4. SQL-根据各人员上下级关系,得到各人员分别处于几级单位,并获取各人员的相关信息

    1.数据表: 现在有一个表,也就是oracle数据库中scott用户下的emp表. 2.需求:如果KING是一级人员,那么其他人分别是几级人员?并获取每个人对应的上级的姓名及工资情况. 3.分析及解答 ...

  5. 数据库 user schema sqlserver 关系

    一个登录名可以对应一个服务器中的不同数据库下的用户名 数据库和用户名 是一一对应的 select * from dba_tables t where t.owner='用户id'; dba_table ...

  6. oracle创建数据库总结,oracle创建数据库和用户方法总结

    以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...

  7. 获取用户之间关系——使用followerway

    为什么80%的码农都做不了架构师?>>>    我的问题:上星期一直纠结的是怎样获取用户之间人际关系,今天和鲁博士讨论后发现用这种策略: 我先讲一下我的问题:我要获取一个event所 ...

  8. 微服务和数据库到底是什么关系?

    过去几年来,"微服务架构"这个术语持续火热,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式.尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署,网点智能以及 ...

  9. mysql使用什么语句为指定_在MySQL中,可以使用_____语句来为指定数据库添加用户。...

    [简答题]ZX14-04-22电子被限制在一维相距 的两个不可穿透壁之间, ,试求 (1)电子最低能态的能量是多少? (2)如果E 1 是电子最低能态的能量,则电子较高一级能态的能量是多少? (3)如 ...

最新文章

  1. String 转化 list
  2. 使用Python和OpenCV创建自己的“ CamScanner”
  3. leetcode132. 分割回文串 II(dp)
  4. Interesting Finds: 2008.03.24
  5. ionic html5 上传图片,ionic4+angular7+cordova上传图片功能的实例代码
  6. 基于表格存储的高性能监控数据存储计算方案
  7. 苹果充电线android头断了,苹果充电线又坏了?其实一招就能搞定!还不花1分钱......
  8. web.xml的contextConfigLocation作用及自动加载applicationContext.xml
  9. 商城app源码_多商户商城源码系统有什么优势呢?
  10. java专题作业答案_java作业答案java作业答案.doc
  11. 推荐一个app,收纳杭州最全登山地图!附亲测过的亲子徒步路线推荐
  12. 截至9月28日聚合支付牌照知多少,附名单
  13. 五边形创意画_儿童美术创意绘画图片_儿童美术创意绘画作品
  14. JUNIPER路由器中常用命令总结
  15. JAVA数组元素比较
  16. Intel有那些45纳米的CPU
  17. 绘制地图格网时,如何只显示度的数值
  18. 《安富莱嵌入式周报》第298期:迷你火星探测器,开源单片机3D实时渲染库, 开源USB工业相机,VS2022开始支持MarkDown,PC-lint 2.0发布
  19. K210--运行NOMMU linux
  20. 金港赢配资简述今天PVC大爆发

热门文章

  1. Java实现简单井字棋小游戏代码实例
  2. 个人常用网址(不定期更新)
  3. 华为C8650+升级电信定制版失败
  4. CNC加工中心操作经验汇集,这次总结全了!
  5. 隐马尔科夫模型python代码详解
  6. 全国计算机一级考试模拟试题access,2013年全国计算机二级考试Access上机模拟试卷一...
  7. 学计算机女生笔记本电脑推荐,适合女生的笔记本电脑有哪些?一般女生用什么笔记本电脑?...
  8. 插上USB设备虚拟机不弹提示框
  9. C++ 中 typename用法
  10. android rom 慢,安卓系统运行慢怎么办