PrintWss.php 3.1 KB

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