作者 ZhengBing He

整合需要的字段信息到工单项目表里

@@ -6,7 +6,6 @@ use App\Models\Manage\Manage; @@ -6,7 +6,6 @@ use App\Models\Manage\Manage;
6 use App\Models\Project\Project; 6 use App\Models\Project\Project;
7 use App\Models\WorkOrder\TicketProject; 7 use App\Models\WorkOrder\TicketProject;
8 use Illuminate\Console\Command; 8 use Illuminate\Console\Command;
9 -use Illuminate\Support\Facades\Cache;  
10 use Illuminate\Support\Facades\Http; 9 use Illuminate\Support\Facades\Http;
11 10
12 class FetchTicketProjects extends Command 11 class FetchTicketProjects extends Command
@@ -72,15 +71,18 @@ class FetchTicketProjects extends Command @@ -72,15 +71,18 @@ class FetchTicketProjects extends Command
72 71
73 $item['pm'] = $item['pm'] == '未安排' ? '杨长远' : $item['pm']; 72 $item['pm'] = $item['pm'] == '未安排' ? '杨长远' : $item['pm'];
74 $item['assm'] = $item['assm'] == '未安排' ? '杨长远' : $item['assm']; 73 $item['assm'] = $item['assm'] == '未安排' ? '杨长远' : $item['assm'];
  74 + $item['yhs'] = $item['yhs'] == '未安排' ? '杨长远' : $item['yhs'];
75 75
76 // 如果 $item['cate'] 包含”推广“字符,则$engineer_name = $item['assm'] 76 // 如果 $item['cate'] 包含”推广“字符,则$engineer_name = $item['assm']
77 - $engineer_name = (strpos($item['cate'], '推广') !== false) ? $item['assm'] : $item['pm']; 77 + $engineer_name = (strpos($item['cate'], '推广') !== false) ? $item['yhs'] : $item['assm'];
78 78
79 $fields = [ 79 $fields = [
80 'post_id' => $item['postid'], 80 'post_id' => $item['postid'],
81 'company_name' => $item['company'], 81 'company_name' => $item['company'],
82 'title' => $item['title'], 82 'title' => $item['title'],
83 - 'engineer_id' => Manage::where('name', $engineer_name)->value('id') ?? 0, 83 + 'engineer_id' => Manage::where('name', $engineer_name)->value('id') ?? 0, // 第一负责人
  84 + 'assm_id' => Manage::where('name', $item['assm'])->value('id') ?? 0, //售后服务经理
  85 + 'seom_id' => Manage::where('name', $item['yhs'])->value('id') ?? 0, //售后服务经理
84 'website' => $item['main_url'] ?? '', 86 'website' => $item['main_url'] ?? '',
85 ]; 87 ];
86 if (!$project) { 88 if (!$project) {
@@ -116,9 +118,9 @@ class FetchTicketProjects extends Command @@ -116,9 +118,9 @@ class FetchTicketProjects extends Command
116 */ 118 */
117 public function fetch_v6() 119 public function fetch_v6()
118 { 120 {
  121 + $lastid = 0;
119 while (true) { 122 while (true) {
120 try { 123 try {
121 - $lastid = Cache::store('redis')->get('fetch_v6_lastid', 0);  
122 $items = Project::where('id', '>', intval($lastid)) 124 $items = Project::where('id', '>', intval($lastid))
123 ->orderBy('id', 'asc') 125 ->orderBy('id', 'asc')
124 ->limit(10) 126 ->limit(10)
@@ -130,22 +132,44 @@ class FetchTicketProjects extends Command @@ -130,22 +132,44 @@ class FetchTicketProjects extends Command
130 foreach ($items as $item) { 132 foreach ($items as $item) {
131 $uuid = md5("V5{$item->id}"); 133 $uuid = md5("V5{$item->id}");
132 $project = TicketProject::where('uuid', $uuid)->first(); 134 $project = TicketProject::where('uuid', $uuid)->first();
  135 + $fields = [
  136 + 'company_name' => $item->company,
  137 + 'title' => $item->title,
  138 + 'assm_id' => $item->type ==3 ? $item->deploy_optimize->manager_mid ?? 0 : $item->deploy_build->manager_mid ?? 0, // 售后服务经理
  139 + 'seom_id' => $item->deploy_optimize->optimist_mid ?? $item->deploy_optimize->manager_mid ?? $item->deploy_optimize->tech_leader ?? 0, // 优化推广负责人
  140 + 'engineer_id' => $item->type == 3 ?
  141 + $item->deploy_optimize->optimist_mid ?? $item->deploy_optimize->manager_mid ?? $item->deploy_optimize->tech_leader ?? 0
  142 + : $item->deploy_build->manager_mid ?? $item->deploy_build->leader_mid ?? 0, // 技术组长
  143 + ];
133 if (!$project) { 144 if (!$project) {
134 $project = new TicketProject(); 145 $project = new TicketProject();
135 $project->uuid = $uuid; 146 $project->uuid = $uuid;
136 $project->post_id = $item->post_id; 147 $project->post_id = $item->post_id;
137 $project->version = 6; 148 $project->version = 6;
138 $project->table_id = $item->id; 149 $project->table_id = $item->id;
  150 + foreach ($fields as $k => $v) {
  151 + $project->$k = $v;
  152 + }
  153 + $project->save();
  154 + }else{
  155 + $changed = false;
  156 + foreach ($fields as $k => $v) {
  157 + if ($project->$k != $v) {
  158 + $project->$k = $v;
  159 + $changed = true;
  160 + }
  161 + }
  162 + if ($changed) {
139 $project->save(); 163 $project->save();
140 - Cache::store('redis')->put('fetch_v6_lastid', $item->id);  
141 } 164 }
142 - echo "V6: {$item->company}\n"; 165 + }
  166 + $lastid = $item->id;
  167 + echo date('Y-m-d H:i:s') . " V6: $item->id {$item->company} fetch ok \n";
143 } 168 }
144 }catch (\Exception $exception) { 169 }catch (\Exception $exception) {
145 echo $exception; 170 echo $exception;
146 break; 171 break;
147 } 172 }
148 } 173 }
149 -  
150 } 174 }
151 } 175 }
@@ -138,4 +138,17 @@ class TicketController extends BaseController @@ -138,4 +138,17 @@ class TicketController extends BaseController
138 { 138 {
139 // 139 //
140 } 140 }
  141 +
  142 + public function projectInfo($project_id)
  143 + {
  144 + $project = TicketProject::with([
  145 + 'projectV6:id,company',
  146 + 'assm:id,name',
  147 + 'seom:id,name',
  148 + 'first_engineer:id,name',
  149 + ])
  150 + ->where('uuid', $project_id)->first();
  151 + if (!$project) return $this->error('未找到项目', 404);
  152 + return response()->json(['data' => $project]);
  153 + }
141 } 154 }
@@ -19,4 +19,26 @@ class TicketProject extends Model @@ -19,4 +19,26 @@ class TicketProject extends Model
19 ->where('version', 6); 19 ->where('version', 6);
20 } 20 }
21 21
  22 + //售后服务经理
  23 + public function assm()
  24 + {
  25 + return $this->hasOne(Manage::class, 'id', 'assm_id')
  26 + ->select(['id', 'name']);
  27 + }
  28 +
  29 + // 优化师
  30 + public function seom()
  31 + {
  32 + return $this->hasOne(Manage::class, 'id', 'seom_id')
  33 + ->select(['id', 'name']);
  34 + }
  35 +
  36 + /**
  37 + * 第一负责人
  38 + */
  39 + public function first_engineer()
  40 + {
  41 + return $this->hasOne(Manage::class, 'id', 'engineer_id')
  42 + ->select(['id', 'name']);
  43 + }
22 } 44 }
@@ -80,6 +80,7 @@ Route::any('/get_project_by_mch_id', [\App\Http\Controllers\Api\PrivateControlle @@ -80,6 +80,7 @@ Route::any('/get_project_by_mch_id', [\App\Http\Controllers\Api\PrivateControlle
80 // B端,渠道在企微群操作-售后工单 80 // B端,渠道在企微群操作-售后工单
81 Route::prefix('tickets')->group(function () { 81 Route::prefix('tickets')->group(function () {
82 Route::get('/{project_id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'index'])->summary('B端,渠道-工单列表')->name('tickets.list'); 82 Route::get('/{project_id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'index'])->summary('B端,渠道-工单列表')->name('tickets.list');
  83 + Route::get('/projectInfo/{project_id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'projectInfo'])->summary('B端,渠道-项目信息')->name('tickets.projectInfo');
83 Route::post('/{project_id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'store'])->summary('B端,渠道-提工单')->name('tickets.store'); 84 Route::post('/{project_id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'store'])->summary('B端,渠道-提工单')->name('tickets.store');
84 Route::get('/{project_id}/{id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'show'])->summary('B端,渠道-工单详情')->name('tickets.show'); 85 Route::get('/{project_id}/{id}', [\App\Http\Controllers\Api\WorkOrder\TicketController::class, 'show'])->summary('B端,渠道-工单详情')->name('tickets.show');
85 }); 86 });