input('page', 1); // $perPage = $request->input('per_page', 10); $perPage = $params['size'] ?? 10; $page = $params['current'] ?? 1; $keyword = $params['keyword'] ?? ''; $recycle = $params['recycle'] ?? ''; $follow = $params['follow'] ?? ''; $follow_last = $params['follow_last'] ?? ''; $tagId = $params['tag_id'] ?? []; $where = []; $user_id =$params['user_id']; $seas = $params['seas'] ?? ''; if($seas == 'seas'){ $where[] = ['user_id', 0]; // }elseif($recycle == 'recycle'){ // $where[] = ['user_id', $user_id]; }else{ $where[] = ['user_id', $user_id]; } $where[] = ['status', 1]; $grade = []; if (!Util::isEmpty($follow) && $follow == 0) { $where[] = ['grade', '<=', 2]; } elseif (!Util::isEmpty($follow) && $follow == 1) { $grade = [3, 4]; } elseif (!Util::isEmpty($follow) && $follow == 2) { $where[] = ['grade', '=', 5]; } if (!Util::isEmpty($follow_last) && $follow_last == 0) { $where[] = ['follow_last', '>', strtotime('-1 day')]; } elseif (!Util::isEmpty($follow_last) && $follow_last == 1) { $where[] = ['follow_last', '>', strtotime('-3 day')]; } elseif (!Util::isEmpty($follow_last) && $follow_last == 2) { $where[] = ['follow_last', '>', strtotime('-7 day')]; } $query = Customer::where($where); if(!empty($tagId)){ //查询有$tagId 里任意一个标签的客户 //$query->whereHas('tags', function($query) use ($tagId){ // $query->whereIn ('tag.id', $tagId); //}); //查询有$tagId 里所有标签的客户 foreach ($tagId as $id) { $query->whereHas('tags', function($query) use ($id){ $query->where('tag_id', $id); }); } } if (!Util::isEmpty($keyword)) { $query->where(function ($query) use ($keyword) { $query->where('contacts', 'like', "%{$keyword}%") ->orWhere('phone', 'like', "%{$keyword}%"); }); } if (!Util::isEmpty($grade)) { $query->whereIn('grade', $grade); } if ($recycle == 'recycle') { $query->onlyTrashed(); } if ($seas == 'seas') { $corp = Corp::where('abbr', $params['corp_abbr'])->first(); $corpId = $corp?$corp->id:0; if($corpId == 1){ $query->whereIn('channel_id', [1,2,3,4,5,6,7,8]); } elseif($corpId == 3) { $query->whereIn('channel_id', [9,10,11]); } else{ $query->whereIn('channel_id', [0]); } $query->withTrashed(); } $customer = $query->orderBy('id','desc')->paginate($perPage, ['*'], 'page', $page); foreach ($customer as &$item) { $item = $this->getCustomer($item); if($seas == 'seas'){ $item['phone'] = Util::mask($item['phone']); $item['email'] = Util::mask($item['email']); $item['WhatsApp'] = Util::mask($item['WhatsApp']); $item['seas_time'] = time()-(empty($item['deleted_at'])?strtotime($item['updated_at']):strtotime($item['deleted_at'])); } } unset($item); return $customer; } /** 分页列表 */ public function serviceList(Request $request) { if (method_exists($this, 'complexQuery')) { $result = $this->complexQuery($request->get()); } else { $config = $this->buildQueryConfig($request, 'index'); $limit = (int)$request->get('size', 15); $page = (int)$request->get('current', 1); $result = $this->logicList($config, $limit, $page); } return $this->postProcess('List', $result); } /** * 构造 CrudUtil 查询配置 */ protected function buildQueryConfig(Request $request, string $scene = 'default'): array { $p = $request->all(); $config = []; $config['model'] = $this->modelClass; switch ($scene) { case 'index': $config['where']['status'] = 1; // 关键字 if (isset($p['keyword']) && $p['keyword']) { $k = '%' . $p['keyword'] . '%'; $config['where']['contacts'] = ['like', $k]; } $config['order']['id'] = 'desc'; $config['dataLimit']['type'] = 'relation'; $config['dataLimit']['userId'] = $request->user->uid; $config['dataLimit']['userField'] = 'user_id'; break; } return $config; } public function report($params) { $id = $params['id']; $userId = $params['user_id']; $where = [ 'id' => $id, 'user_id' => $userId, ]; $customer = Customer::where($where)->withTrashed()->first(); if(empty($customer)){ return false; } CustomerHis::create([ 'customer_id' => $id, 'user_his' => $userId, 'user_id' => 0, ]); $customer->user_id = 0; $customer->status = 2; $res = $customer->save(); //软删除 $customer->delete(); return $res; } /** * @param $customer * @param $request * @param $tag 是否返回客户标签 * @return mixed */ public static function getCustomer($customer, $language = 'zh_CN', $tag = false) { $customer['grade_txt'] = Util::language($language, Constants::GRADE_EN[$customer['grade']], Constants::GRADE_ZH[$customer['grade']], Constants::GRADE_RU[$customer['grade']]); $customer['magnitude'] = ($customer['magnitude']==0)?1:$customer['magnitude']; $customer['magnitude_txt'] = Util::language($language, Constants::MAGNITUDE_EN[$customer['magnitude']], Constants::MAGNITUDE[$customer['magnitude']], Constants::MAGNITUDE_RU[$customer['magnitude']]); $customer['sex_txt'] = Util::language($language, Constants::SEX_EN[$customer['sex']], Constants::SEX[$customer['sex']], Constants::SEX_RU[$customer['sex']]); if ($customer['grade']<=2) { $customer['follow'] = 0; $customer['follow_txt'] = Util::language($language,'Following','跟进中','Продолжение'); }elseif ($customer['grade']<5) { $customer['follow'] = 1; $customer['follow_txt'] = Util::language($language,'transacted','已成交','Транзакция завершена'); }else{ $customer['follow'] = 2; $customer['follow_txt'] = Util::language($language,'lost','已流失','Потерянный'); } $where = [ 'customer_id' => $customer['id'] ]; $begin_follow = Follow::select('id','created_at','updated_at') ->where($where) ->min('created_at'); $customer['begin_follow'] = Util::timeTotDate($begin_follow); // $customer['created_at'] = Util::timeTotDate($customer['created_at']); // $customer['updated_at'] = Util::timeTotDate($customer['updated_at']); $customer = Util::formatDate($customer,['follow_last']); $nameLang = $language=='en'?'name_en':($language=='ru'?'name_ru':'name'); $countryLang = $language=='en'?'en_addr':'cn_addr'; // $customer['car_type_name'] = empty($customer['car_type_id'])?'':CarType::where(['id'=>$customer['car_type_id']])->value($nameLang); $customer['country_name'] = empty($customer['country_id'])?'':Country::where(['id'=>$customer['country_id']])->value($countryLang); $customer['channel_name'] = empty($customer['channel_id'])?'':Channel::where(['id'=>$customer['channel_id']])->value($nameLang); // $customer['last_follow'] = $last_follow; $customer['enter_user_name'] = empty($customer['enter_user_id']) ? '' : User::where('id',$customer['enter_user_id'])->value('name'); $customer['user_name'] = empty($customer['user_id']) ? '公海' : User::where('id',$customer['user_id'])->value('name'); if ($tag) { foreach ($customer['tags'] as &$tag) { $tag['names'] = unserialize($tag['names']); $tag['name'] = $tag['names'][$language]; } } return $customer; } public function detail($params) { $id =$params['id']; $customer = Customer::with('tags')->select('id', 'user_id', 'grade', 'channel_id', 'car_type_id', 'country_id', 'magnitude', 'email', 'phone', 'WhatsApp', 'contacts', 'describe', 'address', 'lat', 'lng', 'follow_next', 'follow_remark', 'sex') ->where('id', $id) ->first(); return $customer; } }