<?php namespace App\Model\Pcb; use App\Map\PcbOrderMap; use App\Model\UserMainModel; use Illuminate\Database\Eloquent\Model; use Request; use DB; class PcbOrderModel extends Model { protected $connection='pcb'; protected $table='order'; protected $primaryKey='id'; public $timestamps = false; //列表 public function getList($type =1) { $arr = ['p', 'limit','self','start_time','end_time','status',"user_account","order_sn","purchase_sn","order_type","adtag","ptag","test_order"]; $input = Request::only($arr); $input=TrimX($input,true,$arr); //查询数据\ $list = $this->where(function ($query) use ($input) { $PcbPurchaseModel = new PcbPurchaseModel(); foreach ($input as $k => $v){ $v = trim($v); switch ($k){ case "p": case "limit": case "_url": case "test_order": continue; break; case "start_time": $query->where('create_time', '>=', strtotime($v)); break; case "end_time": $query->where('create_time', '<=',strtotime($v)); break; case "end_time": $query->where('create_time', '<=',strtotime($v)); break; case "purchase_sn": $items = $PcbPurchaseModel->select("order_id")->where("purchase_sn","like","%".$v."%")->get(); if ($items->count()){ $orderIds = arrayToCommaStr($items->toArray(),'order_id',1); $query->whereIn("order_id",$orderIds); }else{ $query->where("order_id",0); } break; default: $query->whereIn($k, explode(',',trim($v,','))); break; } } })->orderBy('order_id','desc'); if (empty($input['test_order'])){ //排除测试账号 $testMobile = (new UserMainModel())->testMobile(); $list->whereNotIn('user_id', $testMobile); } //getSql(); if ($type == 1){ $input['limit'] = 10; $input['p'] = isset($input['p']) ? $input['p'] : 1; $list = $list->paginate($input['limit'], ['*'], 'p', $input['p'])->toArray(); if (!$list) return [20001, '没有数据']; $data = $this->clearData($list['data']); return [0, '成功', $data, $list['total']]; }else{ return $this->clearData($list->get()->toArray()); } } //清洗列表数据 private function clearData($data){ if (!is_array($data) || count($data) == 0 || $data == ""){ return []; } $PcbPurchaseModel = new PcbPurchaseModel(); $PcbPublicModel = new PcbPublicModel(); $con = DB::connection("pcb"); foreach ($data as $k=>&$v){ //查询采购 $purchase = $PcbPurchaseModel->where("order_id",$v['order_id'])->first(); $v['tiaojia']=$v['purchase_amount'] = $v['purchase_sn'] = ""; if ($purchase){ if ( $purchase['purchase_amount'] > 0 && $purchase['purchase_amount'] != $v['order_amount']){ $v['tiaojia'] = "是"; }elseif($purchase['purchase_amount'] == 0){ $v['tiaojia'] = ""; }else{ $v['tiaojia'] = "否"; } $v['purchase_amount'] = $purchase['purchase_amount'] > 0 ? $purchase['purchase_amount'] : ""; $v['purchase_sn'] = $purchase['purchase_sn']; } //查询支付 $v['order_pay_type'] = $PcbPublicModel->getPay($v['order_id']); $v['order_type'] = PcbOrderMap::$order_type[$v['order_type']]; $v['status_name'] = PcbOrderMap::$status[$v['status']]; $v['create_time'] = date('Y-m-d H:i:s',$v['create_time']); $v['pay_time'] = $v['pay_time'] > 0 ? date('Y-m-d H:i:s',$v['pay_time']) : ""; $shipping = $con->table('shipping')->where(['relevance_id' => $v['order_id'],'shipping_type'=>1])->first(); $v['shipping_no'] = $shipping ? $shipping->shipping_no : ""; $v['shipping_name'] = $shipping ? $shipping->shipping_name : ""; $userCompany = DB::connection('order')->table("lie_user_company")->where("user_id",$v['user_id'])->first(); $v['company_name'] = $userCompany ? $userCompany->com_name : "" ; } return $data; } //导出 public function export() { $data = $this->getList(2); $column = array('ID','会员账号','交易订单编号','采购订单编号','是否调价','订单金额','调整后订单金额','订单状态','订单类型','支付方式','下单时间'); // 表头 $fileName = 'PCB交易订单列表导出'.date('YmdHis', time()).'.csv'; $temp = []; foreach ($data as $k=>$v){ array_push($temp,[ 'order_id'=>$v['order_id'], 'user_account' =>$v['user_account']."\n", 'order_sn' =>$v['order_sn']."\n", 'purchase_sn' =>@$v['purchase_sn']."\n", 'tiaojia' =>$v['tiaojia'], 'order_amount' =>$v['order_amount'], 'purchase_amount' =>$v['purchase_amount'], 'status_name' =>$v['status_name'], 'order_type' =>$v['order_type'], 'order_pay_type' =>$v['order_pay_type'], 'create_time' =>$v['create_time'], ]); } export_csv($temp, $column, $fileName); } }