pluck('value','key')->toArray(); self::$box_detail_header = Header_ext::where('type','box_detail')->pluck('value','key')->toArray(); } public static function getInstance(): self { if (self::$instance == null) { self::$instance = new BoxHookService(); } return self::$instance; } /** * 包装单新增 * @param $data * @return array */ public function boxInsert($data,$user){ $box = new Box(); if(!isset($data['order_no'])||empty($data['order_no'])) $data['order_no'] = $this->setOrderNo(); if(empty($data['order_no'])) return [false, "包装单号生成失败"]; if(!isset($data['out_order_no'])) return [false,'out_order_no不存在!']; list($status,$box) = $this->dealBox($box,$data,$user); if(!$status) return [false,$box]; $box->save(); list($status,$msg) = $this->boxDetailInsert($data); if(!$status) return [false,$msg]; return [true,$box]; } public function dealBox($box,$data,$user){ //包装审核 $em = new EmployeeService(); $auto = $em->is_auto($user, "bz_auto"); $box->order_no = $data['order_no']; $box->out_order_no = $data['out_order_no']; // $box->top_id = $data['top_id']; // $box->num = $data['num']; $box->ext_1 = isset($data['ext_1']) ? $data['ext_1'] : ''; $box->ext_2 = isset($data['ext_2']) ? $data['ext_2'] : ''; $box->ext_3 = isset($data['ext_3']) ? $data['ext_3'] : ''; $box->ext_4 = isset($data['ext_4']) ? $data['ext_4'] : ''; $box->ext_5 = isset($data['ext_5']) ? $data['ext_5'] : ''; $box->top_order_no = $data['top_order_no']; $box->status = $auto; $box->shipment_order_no = isset($data['shipment_order_no'])? $data['shipment_order_no'] : ''; return [true,$box]; } /** * 包装单详情新增 * @param $data * @return array */ public function boxDetailInsert($data){ $order_no = $data['order_no']; $out_order_no = $data['out_order_no']; $top_order_no = $data['top_order_no']; $box_detail = new BoxDetail(['channel'=>$top_order_no]); if(!isset($data['detail'])||empty($data['detail'])) return [true,'']; $insert = $data['detail']; list($status,$insert) = $this->dealBoxDetail($insert,$order_no,$out_order_no,$top_order_no); if(!$status) return [false,$insert]; $box_detail->insert($insert); return [true,'']; } /** * 包装单详情数据处理 * @param $data * @return array */ public function dealBoxDetail($data,$order_no,$out_order_no,$top_order_no){ $insert = []; $time = time(); foreach ($data as $v){ if(!isset($v['top_id'])) return [false,'top_id不存在!']; if(!isset($v['num'])) return [false,'数量不存在!']; $insert[] = [ 'order_no' => $order_no, 'out_order_no' => $out_order_no, 'top_id' => $v['top_id'], 'orders_product_id' => $v['orders_product_id'] ?? 0, 'code' => '', 'title' => '', 'num' => $v['num'], 'price' => $v['price'], 'type' => isset($v['type'])?$v['type'] : 1, 'crt_time' => $time, 'upd_time' => $time, 'top_order_no' => $top_order_no, 'box_type' => $v['box_type'], 'ext_1' => isset($v['ext_1']) ? $v['ext_1'] : '', 'ext_2' => isset($v['ext_2']) ? $v['ext_2'] : '', 'ext_3' => isset($v['ext_3']) ? $v['ext_3'] : '', 'ext_4' => isset($v['ext_4']) ? $v['ext_4'] : '', 'ext_5' => isset($v['ext_5']) ? $v['ext_5'] : '', 'ext_8' => isset($v['ext_8']) ? $v['ext_8'] : '', 'team_id' => isset($v['team_id']) ? $v['team_id'] : '', 'shipment_order_no' => isset($v['shipment_order_no']) ? $v['shipment_order_no'] : '', ]; } return [true,$insert]; } /** * @return string */ public function setOrderNo(){ $str = date('Ymd',time()); $order_number = Box::where('order_no','Like','%'. $str . '%') ->max('order_no'); if(empty($order_number)){ $number = str_pad(1,4,'0',STR_PAD_LEFT); $number = $str . $number; }else{ $tmp = substr($order_number, -4); $tmp = $tmp + 1; //超过99999 if(strlen($tmp) > 4) return ''; $number = str_pad($tmp,4,'0',STR_PAD_LEFT); $number = $str . $number; } return $number; // return date('YmdHis').rand(1000,9999); } /** * @param $data * @return array */ public function boxDetail($data){ // var_dump($data); if(isset($data['top_order_no'])) $top_order_no = $data['top_order_no']; else $top_order_no = Box::where('order_no',$data['order_no'])->where('del_time',0)->value('top_order_no'); $box = new BoxDetail(['channel'=>$top_order_no]); // $list = []; $box = $box->where('del_time',0); if(isset($data['id'])) { $box = $box->where('top_id',$data['id']); } if(isset($data['order_no'])){ $box = $box->where('order_no',$data['order_no']); } // var_dump($box->toSql()); $box = $box->get()->toArray(); // var_dump($box);die; return [true,$box]; } /** * @param $order_no * @return array */ public function delBox($order_no){ $box = Box::where('del_time',0)->where('order_no',$order_no)->first(); if(empty($box)) return []; $boxDetail = new BoxDetail(['channel' => $box->top_order_no]); $list = $boxDetail->where('order_no', $order_no) ->where('del_time',0) ->select('id','top_id','orders_product_id','num','ext_1','ext_2','ext_3','ext_4','ext_5','out_order_no','box_type') ->get()->toArray(); $boxDetail->where('order_no',$order_no) ->where('del_time',0) ->update(['del_time' => time()]); $box->del_time = time(); $box->save(); return $list; } // /** // * @param $data // * @return array // */ // public function boxDetail($data){ // $order_no = $data['order_no']; // // $box = new BoxDetail(['channel'=>$order_no]); // // $list = $this->limit($box,'*',$data); // // return [true,$list]; // } }