链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

146 lines
5.8 KiB

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;
class MigrateOrder extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'migrateData:order';
/**
* The console command description.
*
* @var string
*/
protected $description = 'migrate order data';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
// main order
$orderMain = DB::table('ims_cjdc_order_main')->get();
$bar = $this->output->createProgressBar(count($orderMain));
$bar->start();
foreach ($orderMain as $k => $main) {
DB::beginTransaction();
try {
// 主订单
$dataMain = [
'market_id' => $main->market_id ?? 0,
'order_num' => $main->order_num ?? '',
'global_order_id' => $main->global_order_id ?? 0,
'user_id' => $main->user_id ?? 0,
'pay_type' => $main->pay_type ?? 0,
'type' => $main->type ?? 0,
'order_type' => $main->order_type ?? 0,
'shipping_type' => $main->dada_status == 0 ? 1 : 2,
'money' => $main->money ?? 0,
'total_money' => $main->total_money ?? 0,
'services_money' => 0,
'coupon_money' => $main->yhq_money2 ?? 0,
'delivery_money' => $main->dada_fee ?? 0,
'state' => $main->state ?? 0,
'pay_time' => $main->pay_time ? strtotime($main->pay_time) : 0,
'receive_time' => $main->jd_time ? strtotime($main->jd_time) : 0,
'delivery_time' => 0,
'complete_time' => $main->complete_time ? strtotime($main->complete_time) : 0,
'cancel_time' => $main->complete_time ? strtotime($main->complete_time) : 0,
'refund_time' => $main->refund_time ?? 0,
'tel' => $main->tel ?? '',
'address' => $main->address ?? '',
'lat' => $main->lat ?? '',
'lng' => $main->lng ?? '',
'name' => $main->name ?? '',
'print_num' => $main->print_num ?? 0,
'plat' => $main->plat ?? 0,
'refuse_refund_note' => $main->refuse_refund_note ?? '',
'delivery_time_note' => $main->delivery_time ?? '',
'total_refund_note' => $main->total_refund_note ?? '',
'note' => $main->note ?? '',
'created_at' => $main->time_add ?? 0,
'updated_at' => 0,
];
$newMainId = DB::table('lanzu_order_main')->insertGetId($dataMain);
// 子订单
$orderChildren = DB::table('ims_cjdc_order')->where(['order_main_id' => $main->id])->get();
foreach ($orderChildren as $kChild => $child) {
// 子订单
$dataChild = [
'order_main_id' => $newMainId ?? 0,
'user_id' => $child->user_id ?? 0,
'store_id' => $child->store_id ?? 0,
'status' => 1,
'refund_time' => 0,
'order_num' => $child->order_num ?? '',
'money' => $child->money ?? 0,
'oid' => $child->oid ?? 0,
'refuse_refund_note' => '',
'refund_note' => '',
'note' => $child->note ?? '',
'created_at' => $child->time_add ? strtotime($child->time_add) : 0,
'updated_at' => $child->time_add ? strtotime($child->time_add) : 0,
];
$newChildId = DB::table('lanzu_order')->insertGetId($dataChild);
// 订单商品
$orderGoods = DB::table('ims_cjdc_order_goods')->where(['order_id' => $child->id])->get();
$dataGoods = [];
foreach ($orderGoods as $kGoods => $goods) {
// 订单商品
$dataGoods[] = [
'order_id' => $newChildId ?? 0,
'goods_id' => $goods->good_id ?? 0,
'number' => $goods->number ?? 0,
'status' => 1,
'price' => $goods->money ?? 0,
'original_price' => $goods->money2 ?? 0,
'vip_price' => $goods->vip_money ?? 0,
'name' => $goods->name ?? '',
'goods_unit' => $goods->good_unit ?? '',
'cover_img' => $goods->img ?? '',
'spec' => json_encode([]),
'refund_time' => 0,
'created_at' => time(),
'updated_at' => time(),
'refuse_refund_note' => '',
];
}
DB::table('lanzu_order_goods')->insert($dataGoods);
}
$bar->advance();
DB::commit();
} catch (\Exception $e) {
$this->info(json_encode(['order_id' => $main->id, 'exception' => $e->getMessage()]));
DB::rollBack();
}
}
$bar->finish();
return 0;
}
}