链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

100 lines
2.2 KiB

<?php
namespace App\Admin\Extensions;
use App\Models\Feprint;
use App\Models\ImsCjdcOrderMain;
use Dcat\Admin\Grid\RowAction;
use Graze\GuzzleHttp\JsonRpc\Client;
use Illuminate\Http\Request;
class OrderPrint extends RowAction
{
protected $title;
public function __construct($title = null)
{
parent::__construct($title);
}
public function handle(Request $request)
{
$oid = $this->getKey();
$result = $this->doPrint($oid);
if ($result){
return $this->response()->success('操作成功');
}else{
return $this->response()->success('打印失败');
}
}
/**
* 设置要POST到接口的数据
*
* @return array
*/
public function parameters()
{
}
public function doPrint($oid)
{
$row = ImsCjdcOrderMain::find($oid);
//>>1.获取打印机状态
$result = $this->getPrintStatus($row->market_id);
//>>2.调用打印
if ($result == 1) {
$res = $this->rpcPrint($oid);
$res = json_decode($res, true)['result'];
$res = json_decode($res);
//>>3.记录打印次数
if ($res->msg == 'ok' && $res->ret == 0) {
//记录打印次数
$row->print_num +=1;
return $row->save();
} else {
return false;
}
}
}
/**
* @param $oid //主订单ID
* @return int
*/
public function getPrintStatus($mid)
{
$fe = Feprint::where('market_id', $mid)->first();
if ($fe) {
return $fe->status;
} else {
return -1;
}
}
public function rpcPrint($oid)
{
$client = Client::factory(env('RPC_SITE_HOST'));
$request = $client->request(uniqid(), '/feie/doPrint', ['oid' => $oid]);
$response = $client->send($request);
return $response->getBody()->getContents();
}
public function feiErPrint($order_num)
{
include_once app_path('Libs\feier_print\api_php_demo.php');
$result = json_decode(FeiePrint($order_num));
dd($result);
}
}