123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- namespace App\Imports\Order;
- use AlibabaCloud\Gpdb\V20160503\DeleteDatabase;
- use App\Models\Docter;
- use App\Models\Order;
- use App\Models\OrderPatient;
- use App\Models\Organization;
- use App\Models\Patient;
- use App\User;
- use Illuminate\Support\Facades\Log;
- use Maatwebsite\Excel\Concerns\ToModel;
- use Maatwebsite\Excel\Concerns\WithHeadingRow;
- use Maatwebsite\Excel\Concerns\WithBatchInserts;
- use Maatwebsite\Excel\Concerns\WithChunkReading;
- use Maatwebsite\Excel\Concerns\WithProgressBar;
- class chatOrder implements ToModel,WithBatchInserts,WithChunkReading
- {
- /**
- * @param array $row
- *
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- public function model(array $row)
- {
- if($row[0] == '订单编号') return null;
- // [
- // 0 => "im20210118173813522",
- // 1 => "云南运营主体",
- // 2 => "熊振宇",
- // 3 => "13708872753",
- // 4 => "文菊焱",
- // 5 => "",
- // 6 => "云南省昆明市昆明市盘龙区联盟街道金康园社区卫生服务站",
- // 7 => "妇保科",
- // 8 => "否",
- // 9 => "进行中",
- // 10 => "",
- // 11 => "否",
- // 12 => "1.99",
- // 13 => "0.00",
- // 14 => "1.99",
- // 15 => "1.99",
- // 16 => "微信支付",
- // 17 => "单次图文咨询",
- // 18 => "已付款",
- // 19 => "2021-01-18 17:38:13",
- // ];
- //检查是否有该订单
- $isHave = $this->getValue(new Order(),['order_sn'=>$row[0]],'id');
- if($isHave) return null;
- $patient_id = $this->getValue(new Patient(),['name'=>$row[2]],'id');
- $user_id = $this->getValue(new User(),['phone'=>$row[3]],'id');
- //如果没有用户不导入该订单
- if(empty($user_id)){
- Log::info('订单没有用户信息,订单编号: '.$row[0].PHP_EOL);
- return null;
- }
- // 1 => "未支付"
- // 2 => "待支付"
- // 3 => "进行中"
- // 4 => "已完成"
- // 5 => "已取消"
- // 6 => "已超时"
- // 7 => "已预约"
- //订单状态
- $status = Order::getStatus();
- //订单状态
- $paystatus = Order::getPayStatus();
- $pay_status = array_search($row[18],$paystatus);
- $order_status = array_search($row[9],$status);
- $docter_id = $this->getValue(new Docter(),['name'=>$row[4]],'id');
- $org_id = $this->getValue(new Organization(),['name'=>$row[6]],'id');
- $evaluate = $row[10] == '已评价'? 1 : 0;
- $pay_types = [1=>'微信支付',2=>'余额支付',3=>'服务包支付'];
- //支付方式
- $payType = array_search($row[16],$pay_types) + 1;
- if($payType == 1) $payType = 2;
- $orderInfo = [
- 'order_sn'=>$row[0],
- 'patient_id'=>$patient_id,
- 'user_id'=>$user_id,
- 'docter_id'=>$docter_id,
- 'order_status'=>$order_status,
- 'organization_id'=>$org_id,
- 'is_evaluate'=>$evaluate,
- 'is_discount'=>$row[11],
- 'total_amount'=>$row[12]*100,
- 'discount_amount'=>$row[13]*100,
- 'payment_amount'=>$row[15]*100,
- 'payment_type'=>$payType,
- 'payment_status'=>$pay_status,
- 'product_type'=>1,
- 'created_at'=>$row[19],
- ];
- //处理逻辑
- return new Order($orderInfo);
- }
- public function startRow(): int
- {
- return 2;
- }
- public function batchSize(): int
- {
- return 20;
- }
- public function chunkSize(): int
- {
- return 20;
- }
- public function getValue($model,$where,$field)
- {
- return $model->where($where)->value($field);
- }
- }
|