CashierController.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace addons\Happiness\api\modules\v1\controllers;
  3. use addons\Happiness\common\models\HappinessStore;
  4. use addons\Happiness\common\models\HappinessCashierOrder;
  5. use common\models\common\PaymentTradeOrder;
  6. use Yii;
  7. use api\controllers\OnAuthController;
  8. use addons\Happiness\common\enums\HappinessEnum;
  9. use addons\Happiness\common\models\StoreCart;
  10. use addons\Happiness\common\models\HappinessStoreGoods;
  11. use addons\Happiness\common\models\HappinessStoreGoodsAttr;
  12. use common\enums\StatusEnum;
  13. /**
  14. * 默认控制器
  15. *
  16. * Class DefaultController
  17. * @package addons\Store\api\modules\v1\controllers
  18. */
  19. class CashierController extends OnAuthController
  20. {
  21. public $modelClass = '';
  22. /**
  23. * 不用进行登录验证的方法
  24. *
  25. * 例如: ['index', 'update', 'create', 'view', 'delete']
  26. * 默认全部需要验证
  27. *
  28. * @var array
  29. */
  30. protected $authOptional = ['index'];
  31. /**
  32. * 需要门店验证的方法
  33. */
  34. protected $authStore = ['payment-code', 'cashier-amount', 'cashier-log'];
  35. protected $store_id = 0;
  36. public function beforeAction($action)
  37. {
  38. parent::beforeAction($action);
  39. //检测门店身份
  40. if (in_array($action->id, $this->authStore)) {
  41. $store = HappinessStore::find()
  42. ->where(['mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'status' => StatusEnum::ENABLED])
  43. ->one();
  44. if (empty($store)) {
  45. \Yii::$app->response->data = ['code' => 1, 'msg' => '您非门店身份'];
  46. \Yii::$app->response->send();
  47. return;
  48. }
  49. $this->store_id = $store->id;
  50. }
  51. return $action;
  52. }
  53. //扫码后请求
  54. public function actionScanCode()
  55. {
  56. $params = Yii::$app->request->get();
  57. $params['mall_id'] = $this->mall_id;
  58. $params['user_id'] = $this->user_id;
  59. $params['user'] = $this->user;
  60. $res = HappinessCashierOrder::scanCode($params);
  61. if ($res === false) return $this->error(HappinessCashierOrder::getStaticError());
  62. return $this->success('操作成功', $res);
  63. }
  64. //添加订单
  65. public function actionCreate()
  66. {
  67. $params = Yii::$app->request->post();
  68. $store = HappinessStore::findOne(['id' => $params['store_id'],'status' => StatusEnum::ENABLED]);
  69. if (empty($store)) return $this->error('门店不存在');
  70. $params['mall_id'] = $this->mall_id;
  71. $params['user_id'] = $this->user_id;
  72. $params['title'] = $store['store_name'] . ':收银台订单';
  73. $params['user'] = $this->user;
  74. $res = HappinessCashierOrder::createOrder($params);
  75. if ($res === false) return $this->error(HappinessCashierOrder::getStaticError());
  76. return $this->success('操作成功', $res);
  77. }
  78. //收款码
  79. public function actionPaymentCode()
  80. {
  81. $params = Yii::$app->request->get();
  82. $H5Url = \Yii::$app->services->setting->platform->get('system.h5_url');
  83. $cashier = \Yii::$app->services->setting->addons->get($this->mall_id, HappinessEnum::ADDONS_NAME, 'cashier');
  84. $returnData = [
  85. 'store_id' => $this->store_id,
  86. 'cashier_bg_img' => $cashier['cashier_bg_img'] ?? '',
  87. 'h5_url' => $H5Url,
  88. ];
  89. return $this->success('请求成功', $returnData);
  90. }
  91. /**
  92. * 关闭收银台订单
  93. * @return mixed|null
  94. */
  95. public function actionClose()
  96. {
  97. $params = \Yii::$app->request->post();
  98. $res = \Yii::$app->services->validate->validate($params, [
  99. [['trade_id'], 'required'],
  100. ]);
  101. if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
  102. $payment_order = PaymentTradeOrder::findOne(['trade_id'=>$params['trade_id'],'is_pay'=>0]);
  103. $data = [
  104. 'order_no' => $payment_order['order_no'],
  105. 'user_id' => $this->user_id,
  106. 'mall_id' => $this->mall_id,
  107. 'operator_id' => $this->user_id,
  108. 'operator_name' => $this->user['nickname']??'',
  109. ];
  110. HappinessCashierOrder::close($data);
  111. return $this->success('操作成功');
  112. }
  113. }