SettleController.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\order\classes\OrderClass;
  4. use bizHd\order\classes\SettleClass;
  5. use common\components\dict;
  6. use common\components\util;
  7. use Yii;
  8. class SettleController extends BaseController
  9. {
  10. public $guestAccess = [];
  11. //结清尾款 ssh 20220708
  12. public function actionConfirmSettle()
  13. {
  14. $post = Yii::$app->request->post();
  15. $connection = Yii::$app->db;
  16. $transaction = $connection->beginTransaction();
  17. try {
  18. //先将客户未过期的结账单置为过期
  19. $customId = $post['customId'] ?? 0;
  20. if(!empty($customId)){
  21. SettleClass::updateByCondition(['customId' => $customId, 'status' => 1], ['status' => 3]);
  22. }
  23. $staff = $this->shopAdmin;
  24. $payWay = $post['payWay'] ?? dict::getDict('payWay', 'wxPay');
  25. $id = $post['id'] ?? '';
  26. if (is_numeric($id)) {
  27. $order = OrderClass::getById($id, true);
  28. if (empty($order)) {
  29. util::fail('没有找到订单');
  30. }
  31. OrderClass::valid($order, $this->mainId);
  32. SettleClass::confirmSettle($order, $payWay, $staff);
  33. } else {
  34. $idArr = json_decode($id, true);
  35. $ids = array_column($idArr, 'id');
  36. $orderList = OrderClass::getAllByCondition(['id' => ['in', $ids]], null, '*', null, true);
  37. if (!empty($orderList)) {
  38. foreach ($orderList as $order) {
  39. OrderClass::valid($order, $this->mainId);
  40. SettleClass::confirmSettle($order, $payWay, $staff);
  41. }
  42. }
  43. }
  44. $transaction->commit();
  45. util::complete();
  46. } catch (\Exception $exception) {
  47. $transaction->rollBack();
  48. Yii::info("失败:" . $exception->getMessage());
  49. util::fail('操作失败');
  50. }
  51. }
  52. }