token; if ($token['isEmployee']) { return json(['code' => 1, 'data' => '员工无法预约', 'msg' => '员工无法预约']); } $param = Request::only(['designer_id' => '', 'designer_name' => '']); if (empty($param['designer_id'])) return json(['code' => 1, 'data' => '未选择设计师', 'msg' => '未选择设计师']); $w[] = ['uid', '=', $token['uid']]; $w[] = ['pipe_type', '=', 'designer']; $had = FootprintsModel::where($w)->whereRaw('reg_info->"$.id" = ' . (int)$param['designer_id'])->whereRaw('reg_info->"$.share_pipe_type" != ""')->count(); if ($had) { return json(['code' => 1, 'data' => '已经预约', 'msg' => '已经预约']); } // 设计师信息获取 $w3[] = ['id', '=', $param['designer_id']]; $w3[] = ['root_id', '=', $token['root_org']]; $data = Employee::where($w3)->field('name title,id,show,root_id')->findOrEmpty(); $data['share_pipe_type'] = 'designer'; $data['share_data_id'] = $param['designer_id']; // 如果有分享人 if (isset($token['share_employee'])) { // 添加足迹 event(new FootPrints($token['uid'], $token['share_employee'] ?? 0, $token['share_org'] ?? 0, $data, 'designer')); // 获取当前人的昵称 $w1[] = ['id', '=', $token['uid']]; $w1[] = ['root_id', '=', $token['root_org']]; $username = User::where($w1)->value('nickname'); // 获取分享人id $w2[] = ['id', '=', $token['share_employee']]; $w2[] = ['root_id', '=', $token['root_org']]; $employeeId = Employee::where($w2)->value('id'); //预约设计师获客线索提醒:*** 预约了 **** 设计师,请跟进沟通 $new = $username . '预约了' . $param['designer_name'] . '设计师,请及时跟进'; event(new Msg($employeeId, $new, 'designer')); } $designer_data['designer_id'] = $param['designer_id']; $designer_data['uid'] = $token['uid']; $designer_data['employee_id'] = $employeeId ?? 0; $designer_data['pipe_type'] = 'designer'; $designer_data['data_id'] = $param['designer_id']; $designer_data['root_id'] = $token['root_org']; DesignerReserve::create($designer_data); return json(['code' => 0, 'data' => '预约成功', 'msg' => '预约成功']); } /** * 设计师详情 */ public function designer_read() { $token = request()->token; $id = Request::param('id'); if (empty($id)) return json(['code' => 0, 'data' => []]); $w[] = ['id', '=', $id]; $w[] = ['root_id', '=', $token['root_org']]; $root_id = $token['root_org']; $data = Employee::with(['designer' => function ($query) use ($root_id) { $query->where('root_id', $root_id)->visible(['headimgurl', 'employee_id', 'desc', 'good_at', 'position', 'work_years', 'addtime', 'good_house', 'design_concept', 'vcr', 'id designer_id'])->bind(['desc', 'good_at', 'position', 'work_years', 'addtime', 'good_house', 'design_concept', 'vcr', 'name', 'headimgurl']); }])->where($w)->field('name title,id,show,id designer_id,root_id,image_photo')->findOrEmpty(); if ($data->isEmpty()) return json(['code' => 0, 'data' => []]); $cw[] = ['designer_id', '=', $data->id]; $cw[] = ['del', '=', 0]; $cw[] = ['publish', '=', 1]; $data->caseCount = MaterialCase::where($cw)->count(); //是否预约 $w1[] = ['uid', '=', $token['uid']]; $w1[] = ['pipe_type', '=', 'designer']; $data->make = FootprintsModel::where($w1)->whereRaw('reg_info->"$.id" = ' . (int)$data->id)->whereRaw('reg_info->"$.share_pipe_type" != ""')->count() ? 1 : 0; if (!empty($token['uid']) && !$token['isEmployee']) { event(new FootPrints($token['uid'], $token['share_employee'] ?? 0, $token['share_org'] ?? 0, $data, 'designer')); } return json(['code' => 0, 'data' => $data]); } /** * 设计师案例列表 */ public function designer_case_list() { $token = request()->token; $param = Request::only(['id' => 0, 'page' => 1, 'limit' => 15]); $w[] = ['designer_id', '=', $param['id']]; $w[] = ['root_id', '=', $token['root_org']]; $w[] = ['del', '=', 0]; $w[] = ['publish', '=', 1]; $list = MaterialCase::where($w)->with(['community' => function ($query) { $query->bind(['community_name' => 'name']); }, 'designer' => function ($query) { $query->bind(['designer_name' => 'name']); }, 'decostyle' => function ($query) { $query->bind(['decostyle_name' => 'name']); }, 'housetype'])->field('id,title,id,cover_img,shared_times,desc,square,community_id,designer_id,style_id,housetype_id,housetype_type,vr_case')->order('addtime desc,view_times desc')->page($param['page'], $param['limit'])->select(); $list = $list->append(['housetype.name'])->toArray(); foreach($list as &$item){ $item['housetype_name'] = $item['housetype']['name']; unset($item['housetype']); } $count = MaterialCase::where($w)->count(); return json(['code' => 0, 'data' => $list, 'count' => $count]); } /** * 设计师部门列表 */ public function designer_org() { $token = request()->token; $where = [ ['path', 'like', $token['root_org'] . '-%'], ['org_type','=',2], ['status','=',1] ]; $data = Org::where($where)->column('id,name,pid'); //查询部门设计师人数 $employee = Employee::where([['uid', '<>', 0], ['root_id', '=', $token['root_org']], ['state', '=', '在职']])->group('org_id')->column('count(id)','org_id'); foreach($data as &$val){ $val['employee_count'] = isset($employee[$val['id']]) ? $employee[$val['id']] : 0 ; } $new_arr = []; $persons = []; foreach($data as &$v){ $children = tree($data, $v['id'], $persons); $v['children'] = array_merge_recursive($children,$persons); if (empty($v['children'])) $v['disabled']=true; $new_arr[] =$v; } return json(['code' => 0, 'data' => $new_arr]); } /** * 设计师列表 */ public function index() { $token = request()->token; $param = Request::only(['page' => 1, 'limit' => 10, 'keyword' => '', 'at' => '', 'house' => '', 'org_id' => '']); if(!empty($param['org_id'])) { $orgs = [$param['org_id']]; }else{ $orgs = Org::where([['path', 'like', $token['root_org'] . '-%'], ['org_type', '=', 2]])->column('id'); } if (!empty($param['keyword'])) { $w1[] = ['name', 'like', '%' . trim($param['keyword']) . '%']; $w1[] = ['root_id', '=', $token['root_id']]; $ids1 = DesignerModel::where($w1)->column('employee_id'); $w2[] = ['root_id', '=', $token['root_id']]; $ids2 = DesignerModel::where($w2)->where("name is null AND name = ''")->column('employee_id'); $w2[] = ['name', 'like', '%' . trim($param['keyword']) . '%']; $w2[] = ['id', 'not in', $ids2]; $ids3 = Employee::where($w2)->column('id'); $w3[] = ['id', 'in', array_merge($ids1, $ids3)]; } $w3[] = ['org_id', 'in', $orgs]; $w3[] = ['root_id', '=', $token['root_org']]; $w3[] = ['state', '=', '在职']; $w5 = []; if ($param['at']) { $w5[] = ['good_at', 'like', '%' . trim($param['at']) . '%']; } if ($param['house']) { $w5[] = ['good_house', 'like', '%' . trim($param['house']) . '%']; } if ($w5) { $ids = DesignerModel::where($w5)->column('employee_id'); $w3[] = ['id', 'in', $ids]; } $root_id = $token['root_org']; $w3[] = ['show', '=', 0]; $list = Employee::with(['designer' => function ($query) use ($root_id) { $query->where('root_id', $root_id); }])->withCount(['materialCase' => function ($query) { $query->where([['publish', '=', 1], ['del', '=', 0]]); }])->where($w3)->field('name title,id,show,id designer_id')->order('material_case_count desc')->page($param['page'], $param['limit'])->select()->toArray(); $count = Employee::where($w3)->count(); if ($list) { foreach ($list as $k => $v) { $list[$k]['name'] = $v['title']; $list[$k]['show'] = $v['show'] ? '不展示' : '展示'; $list[$k]['case_count'] = $v['material_case_count']; $list[$k]['position'] = isset($v['designer']) ? $v['designer']['position'] : ''; $list[$k]['headimgurl'] = isset($v['designer']) ? $v['designer']['headimgurl'] : ''; $list[$k]['desc'] = isset($v['designer']) ? $v['designer']['desc'] : ''; $list[$k]['good_at'] = isset($v['designer']) ? $v['designer']['good_at'] : ''; $list[$k]['work_years'] = isset($v['designer']) ? $v['designer']['work_years'] : ''; $list[$k]['good_house'] = isset($v['designer']) ? $v['designer']['good_house'] : ''; $list[$k]['design_concept'] = isset($v['designer']) ? $v['designer']['design_concept'] : ''; $list[$k]['vcr'] = isset($v['designer']) ? $v['designer']['vcr'] : ''; unset($list[$k]['designer']); unset($list[$k]['title']); //是否预约 $list[$k]['make'] = 0;//FootprintsModel::where([['uid', '=', $token['uid']], ['pipe_type', '=', 'designer']])->whereRaw('reg_info->"$.id" = ' . (int)$v['id'])->whereRaw('reg_info->"$.share_pipe_type" != ""')->count() ? 1 : 0; } } return json(['code' => 0, 'data' => $list, 'count' => $count]); } }