PrintWss.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace app\wss;
  3. use app\model\saas\SaasOrderDetail;
  4. use Workerman\Connection\TcpConnection;
  5. class PrintWss
  6. {
  7. public function onConnect(TcpConnection $connection)
  8. {
  9. // echo "onConnect-111\n";
  10. }
  11. public function onWebSocketConnect(TcpConnection $connection, $http_buffer)
  12. {
  13. // echo "onWebSocketConnect\n";
  14. }
  15. public function onMessage(TcpConnection $connection, $data)
  16. {
  17. if (empty($data)) $connection->send(['type' => 'empty','data' => []]);
  18. $param = json_decode($data,true);
  19. if ($param['type'] == "heartbeat") {
  20. $version = sConf("service.version");
  21. $data = [
  22. "type" => "update",
  23. "version" => $version?:'1.0.1'
  24. ];
  25. }
  26. if ($param['type'] == 'get_data') {
  27. $printer = explode("-",$param['printer']);
  28. $printJob = (new SaasOrderDetail)->where("shop_id",$printer[1])->where("print_id",$printer[0])->where("status",1)->findOrEmpty();
  29. if (!$printJob->isEmpty()) {
  30. $range = Null;
  31. if ($printJob['end_page'] > $printJob['start_page']) {
  32. $range = $printJob['start_page']."-".$printJob['end_page'];
  33. }
  34. if ($printJob['end_page'] == $printJob['start_page']) {
  35. $range = (int) $printJob['end_page'];
  36. }
  37. $color_mode = ($printJob['color']==1?'color':'monochrome');
  38. $duplex = "simplex";
  39. if ($printJob['paper_size'] == 'A4' && $printJob['duplex'] == 2) {
  40. $duplex = 'duplexlong'; // duplexlong
  41. }
  42. if ($printJob['paper_size'] == 'A3' && $printJob['duplex'] == 2) {
  43. $duplex = 'duplexshort'; // duplexshort
  44. }
  45. $data = [
  46. "type" => "print",
  47. "data" => [
  48. "jobId" => $printJob['id'],
  49. "action" => 'create',
  50. "remoteUrl" => "https://".sConf("storage.cos_http_domain")."/".$printJob['path'],
  51. "customFileName" => $printJob['order_sn']."_".$printJob['id'],
  52. "exe" => ['-print-to',$printJob['print_name'],'-print-settings',"{$range},{$printJob['number']}x,{$color_mode},$duplex,fit,paper={$printJob['paper_size']}",'-silent'],
  53. ]
  54. ];
  55. $printJob->status = 2;
  56. $printJob->save();
  57. } else {
  58. $data = [];
  59. }
  60. }
  61. $connection->send($data);
  62. }
  63. public function onClose(TcpConnection $connection)
  64. {
  65. // echo "onClose-2222\n";
  66. }
  67. }