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

来源:互联网 发布:python impacket库 编辑:程序博客网 时间:2024/06/05 04:09

背景: 大部分涉及金额的系统都要做佣金统计或查询所有下级的资料, 只用的关联(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 0
原创粉丝点击