PrintWss.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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'] == 'get_data') {
  20. $printer = explode("-",$param['printer']);
  21. $printJob = (new SaasOrderDetail)->where("shop_id",$printer[1])->where("print_id",$printer[0])->where("status",1)->findOrEmpty();
  22. if (!$printJob->isEmpty()) {
  23. $range = Null;
  24. if ($printJob['end_page'] > $printJob['start_page']) {
  25. $range = $printJob['start_page']."-".$printJob['end_page'];
  26. }
  27. if ($printJob['end_page'] == $printJob['start_page']) {
  28. $range = (int) $printJob['end_page'];
  29. }
  30. $color_mode = ($printJob['color']==1?'color':'monochrome');
  31. $duplex = "simplex";
  32. if ($printJob['paper_size'] == 'A4' && $printJob['duplex'] == 2) {
  33. $duplex = 'duplexshort'; // duplexlong
  34. }
  35. if ($printJob['paper_size'] == 'A3' && $printJob['duplex'] == 2) {
  36. $duplex = 'duplexlong'; // duplexshort
  37. }
  38. $data = [
  39. "type" => "print",
  40. "data" => [
  41. "jobId" => $printJob['id'],
  42. "action" => 'create',
  43. "remoteUrl" => "https://".sConf("storage.cos_http_domain")."/".$printJob['path'],
  44. "customFileName" => $printJob['order_sn'],
  45. "exe" => ['-print-to',$printJob['print_name'],'-print-settings',"{$range},{$printJob['number']}x,{$color_mode},$duplex,paper={$printJob['paper_size']}",'-silent'],
  46. ]
  47. ];
  48. $printJob->status = 2;
  49. $printJob->save();
  50. } else {
  51. $data = [];
  52. }
  53. }
  54. $connection->send($data);
  55. }
  56. public function onClose(TcpConnection $connection)
  57. {
  58. echo "onClose-2222\n";
  59. }
  60. }