bztang-admin/business/admin/controllers/DepartmentMemberController.php

99 lines
3.0 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Created by PhpStorm.
*
*
*
* Date: 2021/9/22
* Time: 13:37
*/
namespace business\admin\controllers;
use app\backend\modules\member\models\Member;
use business\common\models\Department;
use business\common\models\DepartmentStaff;
use business\common\models\Staff;
use Exception;
use Illuminate\Support\Facades\DB;
use Yunshop\WorkWechat\common\models\Employee;
use business\common\services\SettingService;
class DepartmentMemberController extends \business\common\controllers\components\BaseController
{
public function getDepartmentMember(Department $department)
{
$data = $department->getDepartmentMember();
$res = $this->recursion($data);
return $this->successJson('ok',$res);
}
private function recursion($data, $parent_id = 0)
{
$res = [];
foreach ($data as $item) {
if ($item['parent_id'] == $parent_id) {
$item['children'] = $this->recursion($data, $item['id']);
if (empty($item['children'])) {
unset($item['children']);
}
array_push($res, $item);
}
}
return $res;
}
//弃用
public function t()
{
$data = Department::uniacid()->where('business_id', SettingService::getBusinessId())
->with(['hasMayDepartmentStaff.hasOneStaff'])->get()->groupBy('level')->toArray();
$data = $this->tt($data[1], 1, $data);
return $this->successJson('ok', $data);
}
// 临时写成以数组方式集合有点bug只有一个部门返回给前端不是数组而是对象
public function tt(array $list, $level = 1, $lists)
{
foreach ($list as &$item) {
$item['type'] = "department";
// 获取该部门的员工
$staff_ids = DepartmentStaff::uniacid()
->where('business_id', SettingService::getBusinessId())
->where('department_id', $item['id'])->pluck('staff_id');
$staff_data = Staff::uniacid()->whereIn('id', $staff_ids)->get()->toArray();
$staff = [];
foreach ($staff_data as $key => $items) {
$staff[$key] = $items;
$staff[$key]['type'] = "staff";
}
if ($staff) {
$item['staff'] = $staff;//array_values(array_unique($staff));
} else {
$item['staff'] = [];
}
// 获取子部门
if ($c = $lists[$level + 1]) {
$c = collect($c);
$children = $c->where('parent_id', $item['id'])->all();
if (!$children) {
$item['children'] = [];
} else {
$children = $this->recursion($children, $level + 1, $lists);
$item['children'] = $children[0] ? $children : array_merge([],$children);
}
} else {
$item['children'] = [];
}
}
return $list;
}
}