GhsRechargeController.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace hd\controllers;
  3. use biz\shop\classes\ShopClass;
  4. use bizGhs\custom\classes\CustomRechargeClass;
  5. use bizHd\ghs\classes\GhsClass;
  6. use bizHd\ghs\classes\GhsRechargeClass;
  7. use common\components\util;
  8. use Yii;
  9. class GhsRechargeController extends BaseController
  10. {
  11. //充值记录 ssh 20240507
  12. public function actionList()
  13. {
  14. $get = Yii::$app->request->get();
  15. $ghsId = $get['ghsId'] ?? 0;
  16. $ghs = GhsClass::getById($ghsId, true);
  17. GhsClass::valid($ghs, $this->shopId);
  18. $where = [];
  19. $where['ghsId'] = $ghsId;
  20. $list = GhsRechargeClass::getRechargeList($where);
  21. util::success($list);
  22. }
  23. /**
  24. * 花店端:对已付款充值退款(财务权限),经 customRechargeId 走统一退款逻辑。
  25. */
  26. public function actionRefund()
  27. {
  28. $staff = $this->shopAdmin;
  29. if (!isset($staff->finance) || intval($staff->finance) === 0) {
  30. util::fail('请有财务权限的人操作');
  31. }
  32. $post = Yii::$app->request->post();
  33. $id = intval($post['id'] ?? 0);
  34. if ($id <= 0) {
  35. util::fail('参数错误');
  36. }
  37. $ghsRecharge = GhsRechargeClass::getById($id, true);
  38. if (empty($ghsRecharge)) {
  39. util::fail('没有找到充值记录');
  40. }
  41. $ghsId = intval($ghsRecharge->ghsId ?? 0);
  42. $ghs = GhsClass::getById($ghsId, true);
  43. if (empty($ghs)) {
  44. util::fail('没有找到供货商');
  45. }
  46. GhsClass::valid($ghs, $this->shopId);
  47. $customRechargeId = intval($ghsRecharge->customRechargeId ?? 0);
  48. if ($customRechargeId <= 0) {
  49. util::fail('充值记录不完整,无法退款');
  50. }
  51. $customRecharge = CustomRechargeClass::getById($customRechargeId, true);
  52. if (empty($customRecharge)) {
  53. util::fail('没有找到对应充值单');
  54. }
  55. $ghsShopId = intval($customRecharge->shopId ?? ($ghs->shopId ?? 0));
  56. $ghsShop = ShopClass::getById($ghsShopId, true);
  57. if (empty($ghsShop)) {
  58. util::fail('没有找到供货商门店');
  59. }
  60. $cacheKey = 'hd_ghs_recharge_refund_' . $id;
  61. $has = Yii::$app->redis->executeCommand('GET', [$cacheKey]);
  62. if (!empty($has)) {
  63. util::fail('请5秒之后再提交');
  64. }
  65. Yii::$app->redis->executeCommand('SETEX', [$cacheKey, 5, 'has']);
  66. $connection = Yii::$app->db;
  67. $transaction = $connection->beginTransaction();
  68. try {
  69. CustomRechargeClass::refundPaidRecharge($customRechargeId, $ghsShop, $staff);
  70. $transaction->commit();
  71. util::complete('退款成功');
  72. } catch (\Exception $e) {
  73. $transaction->rollBack();
  74. Yii::info('花店充值退款失败:' . $e->getMessage());
  75. util::fail($e->getMessage() ?: '退款失败');
  76. }
  77. }
  78. }