|
|
@@ -0,0 +1,84 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+use App\OrderIssue;
|
|
|
+use Illuminate\Database\Migrations\Migration;
|
|
|
+use Illuminate\Database\Schema\Blueprint;
|
|
|
+use Illuminate\Support\Facades\Schema;
|
|
|
+
|
|
|
+class ChangeColumnOrderIdToOrderIssues extends Migration
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * Run the migrations.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function up()
|
|
|
+ {
|
|
|
+ $this->cleanOrderIssueRepeat();
|
|
|
+ Schema::table('order_issues', function (Blueprint $table) {
|
|
|
+ $table->integer('order_id')->unique('order_issues_order_id_unique')->change();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Reverse the migrations.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function down()
|
|
|
+ {
|
|
|
+ Schema::table('order_issues', function (Blueprint $table) {
|
|
|
+ $table->dropUnique('order_issues_order_id_unique');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ public function cleanOrderIssueRepeat()
|
|
|
+ {
|
|
|
+ ini_set('max_execution_time', 6500);
|
|
|
+ ini_set('memory_limit', '1526M');
|
|
|
+ for ($i = 0; true; $i++) {
|
|
|
+ $orderIssue_unique = \App\OrderIssue::withTrashed()
|
|
|
+ ->selectRaw('count(1) as count,id,order_id')
|
|
|
+ ->whereNotNull('order_id')
|
|
|
+ ->orderByDesc('created_at')
|
|
|
+ ->groupBy('order_id')
|
|
|
+ ->having('count', '>', 1)
|
|
|
+ ->limit(100)
|
|
|
+ ->get();
|
|
|
+ if ($orderIssue_unique->count() == 0) return;
|
|
|
+ foreach ($orderIssue_unique as $item) {
|
|
|
+ $orderIssue_delete = OrderIssue::withTrashed()->where('order_id', $item->order_id)->get();
|
|
|
+ /** @var OrderIssue $order_issue_unique */
|
|
|
+ $order_issue_unique = $orderIssue_delete->whereNull('deleted_at')->first();
|
|
|
+ if(!$order_issue_unique) $order_issue_unique = $orderIssue_delete->first();
|
|
|
+ $ids = [];
|
|
|
+ foreach ($orderIssue_delete as $key => $order_issue) {
|
|
|
+ if ($order_issue->id == $order_issue_unique->id) continue;
|
|
|
+ $ids[] = $order_issue->id;
|
|
|
+ if ($order_issue['rejecting_status'] != '未退回') $order_issue_unique['rejecting_status'] = $order_issue['rejecting_status'];
|
|
|
+ if ($order_issue['situation_explain']) $order_issue_unique['situation_explain'] = $order_issue['situation_explain'];
|
|
|
+ if ($order_issue['order_issue_type_id']) $order_issue_unique['order_issue_type_id'] = $order_issue['order_issue_type_id'];
|
|
|
+ if ($order_issue['second_order_id']) $order_issue_unique['second_order_id'] = $order_issue['second_order_id'];
|
|
|
+ if ($order_issue['is_new_rejecting'] != '无') $order_issue_unique['is_new_rejecting'] = $order_issue['is_new_rejecting'];
|
|
|
+ if ($order_issue['second_client_no']) $order_issue_unique['second_client_no'] = $order_issue['second_client_no'];
|
|
|
+ if ($order_issue['final_status']) $order_issue_unique['final_status'] = $order_issue['final_status'];
|
|
|
+ if ($order_issue['logistic_indemnity_money']) $order_issue_unique['logistic_indemnity_money'] = $order_issue['logistic_indemnity_money'];
|
|
|
+ if ($order_issue['logistic_express_remission']) $order_issue_unique['logistic_express_remission'] = $order_issue['logistic_express_remission'];
|
|
|
+ if ($order_issue['baoshi_indemnity_money']) $order_issue_unique['baoshi_indemnity_money'] = $order_issue['baoshi_indemnity_money'];
|
|
|
+ if ($order_issue['baoshi_express_remission']) $order_issue_unique['baoshi_express_remission'] = $order_issue['baoshi_express_remission'];
|
|
|
+ if ($order_issue['user_workgroup_id']) $order_issue_unique['user_workgroup_id'] = $order_issue['user_workgroup_id'];
|
|
|
+ if ($order_issue['custom_code']) $order_issue_unique['custom_code'] = $order_issue['custom_code'];
|
|
|
+ if ($order_issue['imported_status']) $order_issue_unique['imported_status'] = $order_issue['imported_status'];
|
|
|
+ }
|
|
|
+ if ($order_issue_unique['deleted_at']) $order_issue_unique['deleted_at'] = null;
|
|
|
+ $order_issue_unique->save();
|
|
|
+ $order_issue_unique->同步退单状态();
|
|
|
+ OrderIssue:: withTrashed()->whereIn('id', $ids)->forceDelete();
|
|
|
+ app('LogService')->log(__METHOD__, __FUNCTION__, 'orders_toCombine:' . json_encode($order_issue_unique) . '|toBe OrderId: ' . json_encode($order_issue_unique->id));
|
|
|
+ $orderIssueProcessLogs = \App\OrderIssueProcessLog::query()->whereIn('order_issue_id', $ids)->get();
|
|
|
+ app('LogService')->log(__METHOD__, __FUNCTION__, 'delete order_issue processLogs:' . json_encode($orderIssueProcessLogs));
|
|
|
+ \App\OrderIssueProcessLog::query()->whereIn('order_issue_id', $ids)->forceDelete();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|