DepartmentModel::moveDepart PHP Method

moveDepart() public method

移动部门,将某个部门移动到新部门下面
public moveDepart ( integer $id, integer $pid ) : boolean
$id integer 预移动部门ID
$pid integer 移动到的父级ID
return boolean 是否移动成功
    public function moveDepart($id, $pid = 0)
    {
        if (empty($id)) {
            $this->error = L('PUBLIC_DEPARTMENT_ID_REQUIRED');
            // 部门ID不能为空
            return false;
        }
        // 如果子部门不是移动到顶级下面,则判断是否移动到自己子集下面
        if ($pid != 0) {
            $data = $this->treeDo->getChildHash($id);
            if (in_array($pid, $data)) {
                return false;
            }
        }
        $map = array();
        $map['department_id'] = $id;
        $save['parent_dept_id'] = $pid;
        $oldTreeName = $this->getTreeName($id);
        if ($this->where($map)->save($save)) {
            $curName = $oldTreeName[count($oldTreeName) - 1];
            $newtreeName = array();
            if ($pid != 0) {
                $newTreeName = $this->getTreeName($pid);
            }
            $newTreeName[] = $curName;
            $this->cleanCache();
            // 替换用户字段表的冗余数据
            $this->editUserProfile($oldTreeName, $newTreeName);
            // 更新部门关联表数据
            $ids = $this->getTreeIdBySql($id);
            $this->updateUserDepart(implode('|', $newTreeName) . '|', $ids);
            return true;
        } else {
            return false;
        }
    }