<?php namespace App\Model; use App\Http\Services\AdminUserService; use App\Http\Services\DepartmentService; use Illuminate\Database\Eloquent\Model; class IntracodeModel extends Model { protected $table = 'lie_intracode'; protected $primaryKey = 'code_id'; public function getEncode() { $redis = new RedisModel(); $codeList = json_decode($redis->get('EncodedList_supplier'), true); if (!$codeList) { $codeList = $this->where('admin_id', '>', 0)->join('user_info', 'lie_intracode.admin_id', '=', 'user_info.userId')->where('user_info.status', '!=', 4)->select('code_id', 'admin_id', 'name', 'email')->get(); if ($codeList) { $codeList = $codeList->toArray(); foreach ($codeList as $k => &$v) { if (empty($v['name'])) { $v['name'] = $v['email']; } } $redis->set('EncodedList_supplier', json_encode($codeList)); $redis->expire('EncodedList_supplier', 60 * 10);//缓存10分钟 } } return $codeList; } //获取简单的内部用户数据 public function getSampleEncode() { $codeList = $this->getEncode(); $result = []; foreach ($codeList as $code) { $result[$code['code_id']] = $code['name'] . '(' . $code['code_id'] . ')'; } return $result; } //获取采购员和对应的编码 public function getChannelUsersEncode() { $departmentService = new DepartmentService(); //市场部 $usersMarket = $departmentService->getUserByDepartmentId(4); //运营部 $usersOperation = $departmentService->getUserByDepartmentId(9); //采购部 $userChannel = $departmentService->getUserByDepartmentId(8); $users = array_merge(array_merge($usersMarket, $usersOperation),$userChannel); $userIds = array_column($users, 'userId'); $users = $this->getEncodeByUserIds($userIds); $result = []; foreach ($users as $code) { $result[$code['code_id']] = $code['name'] . '(' . $code['code_id'] . ')'; } return $result; } //获取admin_id对应user_code的用户数据 public function getAdminUserAndCode() { $codeList = $this->getEncode(); $result = []; foreach ($codeList as $code) { $result[$code['admin_id']] = $code['name'] . '(' . $code['code_id'] . ')'; } return $result; } public function getEncodeByUserIds($userIds = []) { $code = $this->where('admin_id', '>', 0)->join('user_info', 'lie_intracode.admin_id', '=', 'user_info.userId') ->whereIn('user_info.userId', $userIds) ->select('code_id', 'admin_id', 'name', 'email', 'mobile')->get(); if ($code) { $code = $code->toArray(); } return $code; } //获取渠道开发那边的人员(还是会汇总所有的内部编码的,只是把运营他们那边的人员优先级提高一些) public function getPurchaseUserCodes() { $adminService = new AdminUserService(); $users = $adminService->getPurchaseUsers(); $codeIds = array_column($users, 'code_id'); $codes = $this->getSampleEncode(); $userCodes = []; foreach ($users as $user) { $userCodes[$user['code_id']] = $user['name']; } $temp = []; foreach ($codes as $code => $name) { if (in_array($code, $codeIds)) { unset($codes[$code]); $temp[$code] = $name; } } $userCodes = $temp + $codes; return $userCodes; } //获取内部编码相关信息 public function getEncodedUserByEncoded($encodedList = []) { $encodedUsers = []; $codes = $this->select('code_id', 'admin_id') ->whereIn('code_id', $encodedList) ->get(); if (empty($codes)) { return []; } $codes = $codes->toArray(); $adminIds = array_column($codes, 'admin_id'); $userModel = new UserInfoModel(); $users = $userModel->whereIn('userId', $adminIds)->pluck('name', 'userId'); foreach ($codes as $key => $code) { $encodedUsers[$code['code_id']] = array_get($users, $code['admin_id']); } return $encodedUsers; } }