PrinterService.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace services\extend\printer;
  3. use Yii;
  4. use common\enums\ExtendConfigNameEnum;
  5. use common\enums\ExtendConfigTypeEnum;
  6. use common\models\extend\Config;
  7. use common\queues\ReceiptPrinterJob;
  8. /**
  9. * 小票打印
  10. *
  11. * Class PrinterService
  12. * @package services\extend
  13. */
  14. class PrinterService
  15. {
  16. /**
  17. * @var bool
  18. */
  19. public $queueSwitch = false;
  20. /**
  21. * 打印单个
  22. *
  23. * @param int $config_id
  24. * @param array $data
  25. * @return bool|string|null
  26. */
  27. public function printerById($config_id, $data)
  28. {
  29. // 是否进入队列
  30. if ($this->queueSwitch == true) {
  31. $messageId = Yii::$app->queue->push(new ReceiptPrinterJob([
  32. 'config' => Yii::$app->services->extendConfig->findById($config_id),
  33. 'data' => $data,
  34. ]));
  35. return $messageId;
  36. } else {
  37. return $this->receiptPrinter(Yii::$app->services->extendConfig->findById($config_id), $data);
  38. }
  39. }
  40. /**
  41. * 执行打印
  42. *
  43. * @param Config $config
  44. * @param array $data
  45. * @return bool
  46. * @throws \yii\web\UnprocessableEntityHttpException
  47. */
  48. public function receiptPrinter(Config $config, $data)
  49. {
  50. if (empty($config) || empty($data)) {
  51. return false;
  52. }
  53. $model = Yii::$app->services->extendConfig->getModel($config->name, $config->data);
  54. switch ($config->name) {
  55. case ExtendConfigNameEnum::YI_LIAN_YUN :
  56. Yii::$app->services->extendPrinterYiLianYun->text($data, '', $model);
  57. break;
  58. case ExtendConfigNameEnum::FEI_E :
  59. Yii::$app->services->extendPrinterFeiEYun->print($data, $model);
  60. break;
  61. case ExtendConfigNameEnum::XP_YUN :
  62. Yii::$app->services->extendPrinterXpYun->print($data, $model);
  63. break;
  64. }
  65. return true;
  66. }
  67. /**
  68. * 获取自动打印的配置
  69. *
  70. * @param $merchant_id
  71. * @return array|\yii\db\ActiveRecord[]
  72. */
  73. public function findAllAuto($merchant_id)
  74. {
  75. return Yii::$app->services->extendConfig->findByType(ExtendConfigTypeEnum::RECEIPT_PRINTER, $merchant_id);
  76. }
  77. }
粤ICP备19079148号