OrderClearController.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace ghs\controllers;
  3. use bizGhs\custom\classes\CustomClass;
  4. use bizGhs\order\classes\OrderClearClass;
  5. use bizHd\purchase\classes\PurchaseClearClass;
  6. use Yii;
  7. use common\components\util;
  8. class OrderClearController extends BaseController
  9. {
  10. //收款 ssh 2021.2.4
  11. public function actionClear()
  12. {
  13. $id = Yii::$app->request->post('id');
  14. $customId = Yii::$app->request->post('customId', 0);
  15. if (empty($id)) {
  16. util::fail('请选择交易记录');
  17. }
  18. //抹零之后的价格
  19. $modifyPrice = Yii::$app->request->post('modifyPrice', 0.00);
  20. if (is_numeric($modifyPrice) == false || $modifyPrice <= 0) {
  21. util::fail('金额填错了哦');
  22. }
  23. $custom = CustomClass::getById($customId, true);
  24. CustomClass::valid($custom, $this->shopId);
  25. $current = time();
  26. //查找有没结帐订单还没有过期
  27. $list = OrderClearClass::getAllByCondition(['customId' => $customId, 'status' => PurchaseClearClass::STATUS_AWAIT_PAY], null, '*', null, true);
  28. if (!empty($list)) {
  29. foreach ($list as $item) {
  30. $deadline = $item->deadline;
  31. $deadTime = strtotime($deadline);
  32. if ($current > $deadTime) {
  33. $item->status = PurchaseClearClass::STATUS_EXPIRE;
  34. $item->save();
  35. } else {
  36. util::fail('已生成过结帐单,请2分钟后再试');
  37. }
  38. }
  39. }
  40. $connection = Yii::$app->db;
  41. $transaction = $connection->beginTransaction();
  42. $name = $this->shopAdmin['name'] ?? '';
  43. $data = [
  44. 'customId' => $customId,
  45. 'ghsShopAdminId' => $this->shopAdminId,
  46. 'ghsShopAdminName' => $name,
  47. 'modifyPrice' => $modifyPrice,
  48. ];
  49. try {
  50. OrderClearClass::clear($data, $id, $this->sjId, $this->shopId);
  51. $transaction->commit();
  52. } catch (\Exception $exception) {
  53. $transaction->rollBack();
  54. Yii::info("批量收款失败:" . $exception->getMessage());
  55. util::fail('操作失败');
  56. }
  57. util::complete();
  58. }
  59. }