64 lines
2.0 KiB
PHP
Executable File
64 lines
2.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace app\common\Model;
|
|
|
|
use service\ToolsService;
|
|
use think\Db;
|
|
|
|
/**
|
|
* 部门
|
|
* Class Organization
|
|
* @package app\common\Model
|
|
*/
|
|
class Department extends CommonModel
|
|
{
|
|
protected $append = [];
|
|
|
|
/**
|
|
* @param $name
|
|
* @param string $parentDepartmentCode
|
|
* @return Department
|
|
* @throws \think\db\exception\DataNotFoundException
|
|
* @throws \think\db\exception\ModelNotFoundException
|
|
* @throws \think\exception\DbException
|
|
*/
|
|
public function createDepartment($name, $parentDepartmentCode = '')
|
|
{
|
|
$path = '';
|
|
if ($parentDepartmentCode) {
|
|
$parentDepartment = self::where(['code' => $parentDepartmentCode])->field('code,path')->find();
|
|
$parentDepartment['path'] && $parentDepartment['path'] = ",{$parentDepartment['path']}";
|
|
$path = "{$parentDepartment['code']}{$parentDepartment['path']}";
|
|
}
|
|
$data = [
|
|
'organization_code' => getCurrentOrganizationCode(),
|
|
'code' => createUniqueCode('department'),
|
|
'name' => $name,
|
|
'pcode' => $parentDepartmentCode,
|
|
'path' => $path,
|
|
'create_time' => nowTime(),
|
|
];
|
|
return self::create($data);
|
|
}
|
|
|
|
public function deleteDepartment($departmentCode)
|
|
{
|
|
$department = self::where(['code' => $departmentCode])->find();
|
|
if (!$department) {
|
|
throw new \Exception('该部门不存在', 1);
|
|
}
|
|
$prefix = config('database.prefix');
|
|
$sql = "select code from {$prefix}department where find_in_set('{$departmentCode}',path)";
|
|
$departments = Db::name('department')->query($sql);
|
|
$codes = [$departmentCode];
|
|
if ($departments) {
|
|
foreach ($departments as $department) {
|
|
$codes[] = $department['code'];
|
|
}
|
|
}
|
|
$result = self::whereIn('code', $codes)->delete();
|
|
DepartmentMember::whereIn('department_code', $codes)->delete();
|
|
return $result;
|
|
}
|
|
}
|