feieUser = config('feie.user'); $this->feieUkey = config('feie.ukey'); $this->feieHost = config('feie.host'); $this->feiePort = config('feie.port'); $this->feieApiPath = config('feie.api_path'); } public function feiePrint($globalOrderId) { // TODO 对象数组=》二维数组 $data = OrderMain::query()->with(['orders' => function($query){ $query->with('store','orderGoods'); } ])->where('global_order_id',$globalOrderId)->first(); // $data = Db::table('lanzu_order_main as m') // ->join('lanzu_order as o','o.order_main_id', '=', 'm.global_order_id','inner') // ->join('lanzu_order_goods as g','o.id','=', 'g.order_id','inner') // ->join('lanzu_feprint as f','m.market_id','=', 'f.market_id','inner') // ->join('lanzu_store_new as s','s.id','=', 'o.store_id','inner') // ->where('m.global_order_id', $globalOrderId) // ->selectRaw("o.note as o_note,g.name,g.number,g.price,g.goods_unit,m.delivery_time_note as ps_time,m.address,m.note,m.name as user_name,m.delivery_money,m.money as m_money,m.coupon_money,m.services_money,f.sn,m.tel,m.order_num,g.id,g.spec,s.name as shopname") // ->orderBy('s.id') // ->get() // ->toArray(); // print_r($data); // return $data; if (empty($data)) { return ; } // foreach ($data['order'] as $key => &$item) { // $item = (array)$item; // } $content = $this->printFormat($data, 4, 14, 7, 7); $res = $this->printMsg('920527381', $content, 1); return $res; } /** * [打印订单接口 Open_printMsg] * @param [string] $sn [打印机编号sn] * @param [string] $content [打印内容] * @param [string] $times [打印联数] * @return [string] [接口返回值] */ protected function printMsg($sn, $content, $times = 1) { $time = time(); //请求时间 $msgInfo = array( 'user' => $this->feieUser, 'stime' => $time, 'sig' => sha1($this->feieUser . $this->feieUkey . $time), 'apiname' => 'Open_printMsg', 'sn' => $sn, 'content' => $content, 'times' => $times//打印次数 ); $client = new FeiePrintClient($this->feieHost, $this->feiePort); if (!$client->post($this->feieApiPath, $msgInfo)) { echo 'error'; } else { // 服务器返回的JSON字符串,建议要当做日志记录起来 $result = $client->getContent(); return $result; } } protected function printFormat($arr, $A, $B, $C, $D) { $orderInfo = '懒族生活
'; $orderInfo .= '数量 名称 单价 金额
'; $orderInfo .= '--------------------------------
'; //$shopnum 当前为第几个店铺 $shopnum = 0; //循环处理子订单 foreach ($arr->orders as $k5 => $order) { $orderInfo .= '
'; $shopnum++; $orderInfo .= "(" . $shopnum . ")" .$order->store->name . '
'; $subNum = 0; //循环处理子订单下商品 foreach ($order['orderGoods'] as $goods){ //店铺商品数量小计 $subNum += $goods->number; $orderInfo .= str_pad($goods->number,$A,' ',STR_PAD_RIGHT); //商品名处理 $nameLength = mb_strwidth($goods->name_unit); $nameArr = mb_str_split($goods->name_unit); $length = $A; foreach ($nameArr as $name){ $len = mb_strwidth($name); $length += $len; if($length >= ($A + $B +$C + $D)){ $orderInfo .= '
'; $length = $A; } $orderInfo .= $name; } //商品名长度是否超过一行 if($nameLength > ($B+$C+$D)){ $orderInfo .= '
'; $orderInfo .= str_pad($goods->price,$A+$B+$C,' ',STR_PAD_LEFT); }else{ $orderInfo .= str_pad($goods->price,$C+$B+$A-$length,' ',STR_PAD_LEFT); } $orderInfo .= str_pad(bcmul($goods->number,$goods->price,2),$D,' ',STR_PAD_LEFT); } /** * 订单商品处理结束 */ //处理订单备注 $orderInfo .= '--------------------------------
'; //订单小计 $orderInfo .= $this->space($subNum,$order->money); if(!empty($order->note)){ $orderInfo .='
'; $orderInfo .='
'; $note = '备注:'.$order->note; $orderInfo .= $note.'
'; } } $orderInfo .= '--------------------------------
'; if ($arr->services_money > 0) { $orderInfo .= $this->space('服务费:',$arr->services_money); } if($arr->delivery_money > 0){ $orderInfo .= $this->space('配送费:',$arr->delivery_money); } if($arr->coupon_money > 0){ $orderInfo .= $this->space('红包:',$arr->coupon_money); } $total = '合计:'.$arr->money; $userName = $arr->name; if(strlen($userName)>18){ $userName=substr($userName,0,18).'...'; } $userLength = preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $userName); $totalLength = preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $total); $userLength = mb_strlen($userLength); $totalLength = mb_strlen($totalLength); $orderInfo .= str_pad($userName,$A+$B+$userLength,' ',STR_PAD_RIGHT); $orderInfo .= str_pad($total,$C+$D+$totalLength+1,' ',STR_PAD_LEFT); $orderInfo .= '
'; $orderInfo .= '送货地点:' . $arr->address . '
'; $tel = substr_replace( $arr->tel, '****', 3, 4); $orderInfo .= '联系电话:' . $tel . '
'; $orderInfo .= '配送时间:' . $arr->delivery_time_note . '
'; // $name = $v5['name']; // $name .= "(规格:". $v5['goods_unit'].")"; // $price = $v5['m_money']; // $num = $v5['number']; // $prices = sprintf("%.2f",$v5['m_money']*$v5['number']); // $kw3 = ''; // $kw1 = ''; // $kw2 = ''; // $kw4 = ''; // $str = $name; // $blankNum = $A;//名称控制为14个字节 // $lan = mb_strlen($str,'utf-8'); // $m = 0; // $j=1; // $blankNum++; // $result = array(); // if(strlen($price) < $B){ // $k1 = $B - strlen($price); // for($q=0;$q<$k1;$q++){ // $kw1 .= ' '; // } // $price = $kw1.$price; // } // if(strlen($num) < $C){ // $k2 = $C - strlen($num); // for($q=0;$q<$k2;$q++){ // $kw2 .= ' '; // } // $num = $kw2.$num; // } // if(strlen($prices) < $D){ // $k3 = $D - strlen($prices); // for($q=0;$q<$k3;$q++){ // $kw4 .= ' '; // } // $prices = $kw4.$prices; // } // for ($i=0;$i<$lan;$i++){ // $new = mb_substr($str,$m,$j,'utf-8'); // $j++; // if(mb_strwidth($new,'utf-8')<$blankNum) { // if($m+$j>$lan) { // $m = $m+$j; // $tail = $new; // // $lenght = iconv("UTF-8", "GBK//IGNORE", $new); // $k = $A - mb_strwidth($new,'utf-8'); // for($q=0;$q<$k;$q++){ // $kw3 .= ' '; // } // if($m==$j){ // $tail .= $kw3.' '.$price.' '.$num.' '.$prices; // }else{ // $tail .= $kw3.'
'; // } // break; // }else{ // $next_new = mb_substr($str,$m,$j,'utf-8'); // if(mb_strwidth($next_new,'utf-8')<$blankNum) continue; // else{ // $m = $i+1; // $result[] = $new; // $j=1; // } // } // } // } // $head = ''; // foreach ($result as $key=>$value) { // if($key < 1){ // // $v_lenght = iconv("UTF-8", "GBK//IGNORE", $value); // $v_lenght = mb_strwidth($value,'utf-8'); // if($v_lenght == 13) $value = $value." "; // $head .= $value.' '.$price.' '.$num.' '.$prices; // }else{ // $head .= $value.'
'; // } // } // $orderInfo .= $head.$tail; // if(!empty($v5['o_note'])){ // $orderInfo .= '备注:'.$v5['o_note'].'
'; // } // } // // $time = date('Y-m-d H:i:s', time()); // $orderInfo .= '--------------------------------
'; // if ($arr[0]['services_money'] > 0) { // $kw5 = ''; // $len = 24 - strlen($arr[0]['services_money']); // for ($q = 0; $q < $len; $q++) { // $kw5 .= ' '; // } // $orderInfo .= '服务费:' . $kw5 . $arr[0]['services_money'] . '
'; // } // if($arr[0]['delivery_money'] > 0){ // $kw5 = ''; // $len = 24 - strlen($arr[0]['delivery_money']); // for ($q = 0; $q < $len; $q++) { // $kw5 .= ' '; // } // $orderInfo .= '配送费:'.$kw5.$arr[0]['delivery_money'].'
'; // } // if($arr[0]['coupon_money'] > 0){ // $coupon_money = sprintf("%.2f",$arr[0]['coupon_money']); // $kw6 = ''; // $len = 25 - strlen($coupon_money); // for ($q = 0; $q < $len; $q++) { // $kw6 .= ' '; // } // $orderInfo .= '红包:'.$kw6.'-'.$coupon_money.'
'; // } // $total = '合计:'.$arr[0]['m_money']; // $user_name = $arr[0]['user_name']; // if(strlen($user_name)>18){ // $user_name=substr($user_name,0,18).'...'; // } // $str = $user_name . $total; // $kw5 = ''; // // $lenght = iconv("UTF-8", "GBK//IGNORE", $str); // $total_len = 32 - mb_strwidth($str,'utf-8'); // for ($q = 0; $q < $total_len; $q++) { // $kw5 .= ' '; // } // $total_str = $user_name.$kw5.$total; // $orderInfo .= $total_str.'
'; // $orderInfo .= '送货地点:' . $arr[0]['address'] . '
'; // $tel = substr_replace( $arr[0]['tel'], '****', 3, 4); // $orderInfo .= '联系电话:' . $tel . '
'; // $orderInfo .= '配送时间:' . $arr[0]['ps_time'] . '
'; // if(!empty($arr[0]['note'])){ // $orderInfo .= '备注:'.$arr[0]['note'].'

'; // } //$orderInfo .= 'http://www.feieyun.com';//把解析后的二维码生成的字符串用标签套上即可自动生成二维码 return $orderInfo; } function space($name,$price,$len = 32) { $length = mb_strwidth($name); $str = $name; $str .= str_pad($price ,$len-$length,' ',STR_PAD_LEFT); return $str; } }