Prints.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace app\controller\exe;
  3. use app\extra\basic\Base;
  4. use app\middleware\ExeMiddleware;
  5. use app\model\saas\SaasOrderDetail;
  6. use app\model\saas\SaasPrintClient;
  7. use LinFly\Annotation\Route\Controller;
  8. use LinFly\Annotation\Route\Middleware;
  9. use LinFly\Annotation\Route\Route;
  10. use support\Request;
  11. use support\Response;
  12. #[Controller(prefix: "/exe/prints"),Middleware(ExeMiddleware::class)]
  13. class Prints extends Base
  14. {
  15. protected array $noNeedLogin = ["getPrintData"];
  16. /**
  17. * 回传打印机信息
  18. * @param Request $request
  19. * @return Response
  20. */
  21. #[Route(path: "set",methods: "post")]
  22. public function getPrintList(Request $request): Response
  23. {
  24. try {
  25. $param = $request->post();
  26. if (empty($param)) return errorTrans("empty.data");
  27. $shopId = $request->uuid;
  28. $mode = (new SaasPrintClient);
  29. $printIn = [];
  30. foreach ($param as $key=>$val)
  31. {
  32. $param[$key] = $val;
  33. $printId = strToUniqueNumberV4(trim($val['name']));
  34. $param[$key]['key'] = "{$printId}-{$shopId}";
  35. $param[$key]['userKey'] = $printId;
  36. $printData = $mode->where("code",$printId)->where("shop_id",$shopId)->findOrEmpty();
  37. if ($printData->isEmpty()) {
  38. $printIn[$key] = [
  39. "shop_id" => $shopId,
  40. "code" => $printId,
  41. "name" => $val['name'],
  42. "ipaddress" => $val['ipAddress'],
  43. "print_status" => $val['status'],
  44. ];
  45. }
  46. }
  47. if (!empty($printIn)) {
  48. $mode->insertAll(array_values($printIn));
  49. }
  50. return success("ok",$param);
  51. } catch (\Throwable $throwable) {
  52. return error($throwable->getMessage());
  53. }
  54. }
  55. /**
  56. * 打印回传
  57. * @param Request $request
  58. * @return Response
  59. */
  60. #[Route(path: "status",methods: "post")]
  61. public function getPrintData(Request $request): Response
  62. {
  63. try {
  64. $param = $this->_valid([
  65. "data.require" => trans("empty.data"),
  66. "param.require" => trans("empty.data"),
  67. ],$request->method());
  68. if (!is_array($param)) return error($param);
  69. $orderId = $param['param']['jobId'];
  70. $order = (new SaasOrderDetail)->where("id",$orderId)->with(['orders'])->findOrEmpty();
  71. $outPut = $param['data']['outputArray'];
  72. $logData = [];
  73. foreach ($outPut as $key=>$val) {
  74. if ($val['type'] == 'stdout') {
  75. $logData[$key] = [
  76. "order_sn" => $param['param']['customFileName'],
  77. "msg" => delNt($val['data'])
  78. ];
  79. } else if ($val['type'] == "exit") {
  80. if ($val['code'] == 0) {
  81. $order->status = 3;
  82. $order->save();
  83. }
  84. }
  85. }
  86. $logData = array_values($logData);
  87. if (!empty($logData)) {
  88. }
  89. return success("ok");
  90. } catch (\Throwable $throwable) {
  91. return error($throwable->getMessage());
  92. }
  93. }
  94. }