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;
}
}