例如:
父部门
-------子部门
-------------孙部门
-------------------人员1
-------------------人员2
有部门表、人员表、权限表、部门权限中间表、人员权限中间表
现在我给父部门分配一个权限后,父部门下面的所有子部门和人员都拥有该权限
请问该表之间的数据应该如何插入。
求大家帮忙解答一下。谢谢!

解决方案 »

  1.   

    父部门                                  []父菜单
    -------子部门                          ------[]子菜单
    -------------孙部门                     ----------[√]添加
    -------------------人员1            ----------[]修改
    -------------------人员2            ----------[]删除
    现在我为父部门选择了一个添加功能,在部门和权限中间表插入了:父部门id----添加按钮id
    当我选中人员2时,右侧的添加复选框也默认被选中,这个应该怎么判断?
    我选中人员2,通过人员2的id去查询人员和权限中间表,如果人员权限中间表没有人员2的id与权限id对应的关系,之后我通过人员2的id查询所在部门的id,之后看该部门id和权限中间表有没有数据,如果没有我查询该部门对应的父部门的id,通过父部门的id再到部门和权限中间表中查询有没有数据,如果没有再查....,我这个用一个方法可以实现吗?可以在同一个方法调用自己吗?类似js这样:obj2Str方法在方法体内部调用obj2Str自己
    function obj2Str(obj) {
    switch (typeof (obj)) {
    case 'object':
    var ret = [];
    if (obj instanceof Array) {
    for ( var i = 0, len = obj.length; i < len; i++) {
    ret.push(obj2Str(obj[i]));
    }
    return '[' + ret.join(',') + ']';
    } else if (obj instanceof RegExp) {
    return obj.toString();
    } else {
    for ( var a in obj) {
    ret.push(a + ':' + obj2Str(obj[a]));
    }
    return '{' + ret.join(',') + '}';
    }
    case 'function':
    return 'function() {}';
    case 'number':
    return obj.toString();
    case 'string':
    return "\""
    + obj.replace(/(\\|\")/g, "\\$1").replace(
    /\n|\r|\t/g,
    function(a) {
    return ("\n" == a) ? "\\n" : ("\r" == a) ? "\\r"
    : ("\t" == a) ? "\\t" : "";
    }) + "\"";
    case 'boolean':
    return obj.toString();
    default:
    return obj.toString();
    }
    }
    各位帮忙给个思路,看看这个方法怎么写。