@ -3,6 +3,7 @@
namespace App\Service\v3\Implementations ;
use App\Libs\FeiePrintClient ;
use App\Model\v3\OrderMain ;
use App\Service\v3\Interfaces\FeiePrintServiceInterface ;
use Hyperf\DbConnection\Db ;
@ -41,28 +42,33 @@ class FeiePrintService implements FeiePrintServiceInterface
public function feiePrint ( $globalOrderId )
{
// TODO 对象数组=》二维数组
$data = Db :: table ( 'lanzu_order_main as m' )
-> join ( 'lanzu_order as o' , 'o.order_main_id' , '=' , 'm.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 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 ();
$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 as $key => & $item ) {
$item = ( array ) $item ;
}
// foreach ($data['order'] as $key => &$item) {
// $item = (array)$item;
// }
$content = $this -> printFormat ( $data , 1 4, 6 , 3 , 6 );
$content = $this -> printFormat ( $data , 4 , 14 , 7 , 7 );
$res = $this -> printMsg ( $data [ 0 ][ 'sn' ], $content , 1 );
return ( $res ) ;
//$res = $this->printMsg('920527381', $content, 1);
return $content ;
}
/**
@ -96,151 +102,166 @@ class FeiePrintService implements FeiePrintServiceInterface
protected function printFormat ( $arr , $A , $B , $C , $D )
{
$length = $A + $B + $C + $D ;
$orderInfo = '<CB>懒族生活</CB><BR>' ;
$orderInfo .= '名称 单价 数量 金额<BR>' ;
$orderInfo .= '数量 名称 单价 金额<BR>' ;
$orderInfo .= '--------------------------------<BR>' ;
$shopname = " " ;
$shopnum = 0 ;
foreach ( $arr as $k5 => $v5 ) {
if ( $shopname != $v5 [ 'shopname' ]) {
if ( $shopname != " " ) {
foreach ( $arr -> orders as $k5 => $order ) {
$orderInfo .= ' <BR>' ;
}
$shopnum ++ ;
$orderInfo .= " <C>( " . $shopnum . " ) " . $v5 [ 'shopname' ] . '</C><BR>' ;
$shopname = $v5 [ 'shopname' ];
}
$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 . '<BR>' ;
}
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 . '<BR>' ;
}
}
$orderInfo .= $head . $tail ;
if ( ! empty ( $v5 [ 'o_note' ])){
$orderInfo .= '备注:' . $v5 [ 'o_note' ] . '<BR>' ;
}
}
// $time = date('Y-m-d H:i:s', time());
$orderInfo .= '--------------------------------<BR>' ;
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' ] . '<BR>' ;
}
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' ] . '<BR>' ;
}
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 . '<BR>' ;
}
$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 . '<BR>' ;
$orderInfo .= '送货地点:' . $arr [ 0 ][ 'address' ] . '<BR>' ;
$tel = substr_replace ( $arr [ 0 ][ 'tel' ], '****' , 3 , 4 );
$orderInfo .= '联系电话:' . $tel . '<BR>' ;
$orderInfo .= '配送时间:' . $arr [ 0 ][ 'ps_time' ] . '<BR>' ;
if ( ! empty ( $arr [ 0 ][ 'note' ])){
$orderInfo .= '备注:' . $arr [ 0 ][ 'note' ] . '<BR><BR>' ;
}
$orderInfo .= " <C>( " . $shopnum . " ) " . $order -> store -> name . '</C><BR>' ;
foreach ( $order [ 'orderGoods' ] as $goods ){
$orderInfo .= str_pad ( $goods -> number , $A , ' ' , STR_PAD_RIGHT );
$nameLength = mb_strwidth ( $goods -> name , 'utf-8' );
$orderInfo .= str_pad ( $goods -> name , $B + $nameLength , ' ' , STR_PAD_RIGHT );
$orderInfo .= str_pad ( $goods -> price , $C , ' ' , STR_PAD_LEFT );
$orderInfo .= str_pad ( bcmul ( $goods -> number , $goods -> price , 2 ), $D , ' ' , STR_PAD_LEFT );
}
if ( ! empty ( $order -> note )){
$note = '备注:' . $order -> note ;
// $noteLength = mb_strwidth($note);
// $noteTime = ceil($noteLength/32);
// $noteArr = $this->mb_str_split($note,$length);
// var_dump($noteArr,$noteTime);
// for ($i = 0;$i <= count($noteArr);$i++){
// $orderInfo .= str_pad($noteArr[$i],$length,' ',STR_PAD_RIGHT).'<BR>';
// }
}
}
// $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.'<BR>';
// }
// 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.'<BR>';
// }
// }
// $orderInfo .= $head.$tail;
// if(!empty($v5['o_note'])){
// $orderInfo .= '备注:'.$v5['o_note'].'<BR>';
// }
// }
// // $time = date('Y-m-d H:i:s', time());
// $orderInfo .= '--------------------------------<BR>';
// 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'] . '<BR>';
// }
// 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'].'<BR>';
// }
// 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.'<BR>';
// }
// $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.'<BR>';
// $orderInfo .= '送货地点:' . $arr[0]['address'] . '<BR>';
// $tel = substr_replace( $arr[0]['tel'], '****', 3, 4);
// $orderInfo .= '联系电话:' . $tel . '<BR>';
// $orderInfo .= '配送时间:' . $arr[0]['ps_time'] . '<BR>';
// if(!empty($arr[0]['note'])){
// $orderInfo .= '备注:'.$arr[0]['note'].'<BR><BR>';
// }
//$orderInfo .= '<QR>http://www.feieyun.com</QR>';//把解析后的二维码生成的字符串用标签套上即可自动生成二维码
return $orderInfo ;
}
}