PrinterServer.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. namespace App\Servers\printer;
  3. use App\Models\ErrorRecord;
  4. use App\Models\Order;
  5. use App\Models\OrderItem;
  6. /**
  7. * 打印机服务
  8. */
  9. class PrinterServer
  10. {
  11. /**
  12. * 错误信息
  13. * @var string
  14. */
  15. private $errorMsg = '';
  16. static private $server = '';
  17. private function __construct()
  18. {
  19. }
  20. /**
  21. * 创建对象
  22. * @return PrinterServer
  23. */
  24. static function creatServer()
  25. {
  26. if (empty(self::$server)) {
  27. self::$server = new PrinterServer();
  28. }
  29. return self::$server;
  30. }
  31. /**
  32. * 添加打印机
  33. * @param $brand_id
  34. * @param $sn
  35. * @param $key
  36. * @param string $name
  37. * @return bool
  38. */
  39. function addPrinter($brand_id,$sn,$key,$name='')
  40. {
  41. if ($brand_id == 1){//商鹏
  42. $sendServer = SpyunServer::creatServer();
  43. }elseif ($brand_id == 2){//飞鹅
  44. $sendServer = FeieYunServer::creatServer();
  45. }elseif ($brand_id == 3){//芯烨
  46. $sendServer = XprinterServer::creatServer();
  47. }elseif ($brand_id == 4){//佳博
  48. $sendServer = PoscomServer::creatServer();
  49. }elseif ($brand_id == 5){//大趋智能
  50. $sendServer = TrenditServer::creatServer();
  51. }elseif ($brand_id == 6){//易联云
  52. $sendServer = YlyServer::creatServer();
  53. }
  54. $result = $sendServer->addPrinter($sn,$key,$name);
  55. if (!$result) {
  56. $this->errorMsg = $sendServer->getErrorMsg();
  57. return false;
  58. }
  59. return true;
  60. }
  61. /**
  62. * 删除打印机
  63. * @param $brand_id
  64. * @param $sn
  65. * @return bool
  66. */
  67. function delPrinter($brand_id,$sn)
  68. {
  69. if ($brand_id == 1){//商鹏
  70. $sendServer = SpyunServer::creatServer();
  71. }elseif ($brand_id == 2){//飞鹅
  72. $sendServer = FeieYunServer::creatServer();
  73. }elseif ($brand_id == 3){//芯烨
  74. $sendServer = XprinterServer::creatServer();
  75. }elseif ($brand_id == 4){//佳博
  76. $sendServer = PoscomServer::creatServer();
  77. }elseif ($brand_id == 5){//大趋智能
  78. $sendServer = TrenditServer::creatServer();
  79. }elseif ($brand_id == 6){//易联云
  80. $sendServer = YlyServer::creatServer();
  81. }
  82. $result = $sendServer->deletePrinter($sn);
  83. if (!$result) {
  84. $this->errorMsg = $sendServer->getErrorMsg();
  85. return false;
  86. }
  87. return true;
  88. }
  89. /**
  90. * 发送打印
  91. * @return bool
  92. */
  93. function sendPrints($brand_id,$sn,$order_id,$is_test=0)
  94. {
  95. if (!$is_test){
  96. $order = Order::where('id',$order_id)
  97. ->where('is_del',0)
  98. ->where('order_status',2)
  99. ->select(['id','order_sn','m_id','order_type','number','note','pay_money','goods_number','pack_price','created_at','shop_id','table_number','diner_number'])
  100. ->first();
  101. if (empty($order)) {
  102. ErrorRecord::create(['msg' => '订单不存在打印失败:', 'data' => $order_id]);
  103. $this->errorMsg = '订单不存在';
  104. return false;
  105. }
  106. $order->{'item'} = OrderItem::where('order_id',$order_id)->select(['goods_name','goods_attr','goods_number','goods_price'])->get();
  107. }else{
  108. $order = [];
  109. }
  110. if ($brand_id == 1){
  111. $sendServer = SpyunServer::creatServer();
  112. }elseif ($brand_id == 2){//飞鹅
  113. $sendServer = FeieYunServer::creatServer();
  114. }elseif ($brand_id == 3){//芯烨
  115. $sendServer = XprinterServer::creatServer();
  116. }elseif ($brand_id == 4){//佳博
  117. $sendServer = PoscomServer::creatServer();
  118. }elseif ($brand_id == 5){//大趋智能
  119. $sendServer = TrenditServer::creatServer();
  120. }elseif ($brand_id == 6){//易联云
  121. $sendServer = YlyServer::creatServer();
  122. }
  123. $result = $sendServer->prints($is_test,$sn,$order);
  124. if (!$result) {
  125. $this->errorMsg = $sendServer->getErrorMsg();
  126. ErrorRecord::create(['msg' => '订单不存在打印失败:'.$sendServer->getErrorMsg(), 'data' => $order_id]);
  127. return false;
  128. }
  129. return $result;
  130. }
  131. /**
  132. * @return string
  133. */
  134. public function getErrorMsg(): string
  135. {
  136. return $this->errorMsg;
  137. }
  138. }