MainInviteController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. /**
  3. * hdApp 门店邀请 / 我的分佣
  4. */
  5. namespace hd\controllers;
  6. use bizHd\shop\classes\MainInviteClass;
  7. use bizHd\shop\classes\MainInviteCommissionClass;
  8. use bizHd\shop\classes\MainInviteFlowClass;
  9. use common\components\util;
  10. use Yii;
  11. class MainInviteController extends BaseController
  12. {
  13. public $guestAccess = [];
  14. /**
  15. * 我的分佣首页:xhMainInvite + 待结算 + 最近佣金
  16. * inviteCodeEligible:当前门店 hasRenew=1 且 deadline 未过期时才展示「我的邀请码」
  17. */
  18. public function actionIndex()
  19. {
  20. $mainId = (int) $this->mainId;
  21. $invite = MainInviteClass::ensureByMainId($mainId);
  22. $inviteCodeEligible = MainInviteClass::isShopInviteEligible($this->shop) ? 1 : 0;
  23. $inviteData = [
  24. 'inviteCode' => '',
  25. 'inviteCodeMask' => '',
  26. 'totalCommission' => '0.00',
  27. 'ableCommission' => '0.00',
  28. 'commissionAmount' => '0.00',
  29. 'hdDiscountAmount' => '0.00',
  30. 'inviteCount' => 0,
  31. ];
  32. if (!empty($invite)) {
  33. $code = $invite['inviteCode'] ?? '';
  34. // 未续费或已到期:不回传邀请码,避免前端误分享
  35. if (!$inviteCodeEligible) {
  36. $code = '';
  37. }
  38. $inviteData = [
  39. 'inviteCode' => $code,
  40. 'inviteCodeMask' => $code !== '' ? MainInviteCommissionClass::maskInviteCode($code) : '',
  41. 'totalCommission' => round((float) ($invite['totalCommission'] ?? 0), 2),
  42. 'ableCommission' => round((float) ($invite['ableCommission'] ?? 0), 2),
  43. 'commissionAmount' => round((float) ($invite['commissionAmount'] ?? 0), 2),
  44. 'hdDiscountAmount' => round((float) ($invite['hdDiscountAmount'] ?? 0), 2),
  45. 'inviteCount' => (int) ($invite['inviteCount'] ?? 0),
  46. ];
  47. }
  48. $recentRaw = MainInviteCommissionClass::getRecentList($mainId, 5);
  49. $recentList = [];
  50. foreach ($recentRaw as $row) {
  51. $recentList[] = MainInviteCommissionClass::formatRecentRow($row);
  52. }
  53. util::success([
  54. 'invite' => $inviteData,
  55. 'inviteCodeEligible' => $inviteCodeEligible,
  56. 'recentList' => $recentList,
  57. ]);
  58. }
  59. /**
  60. * 邀约花店列表(xhMainInviteCommission 按 inviterMainId)
  61. */
  62. public function actionInviteShopList()
  63. {
  64. $get = Yii::$app->request->get();
  65. $keyword = trim($get['keyword'] ?? '');
  66. $data = MainInviteCommissionClass::getInviteShopList($this->mainId, $keyword);
  67. util::success($data);
  68. }
  69. /**
  70. * 佣金变动明细分页(xhMainInviteFlow)
  71. */
  72. public function actionCommissionList()
  73. {
  74. $list = MainInviteFlowClass::getFlowList($this->mainId);
  75. util::success($list);
  76. }
  77. /**
  78. * 可提现佣金全额存入中央钱包余额
  79. * POST:无参,按当前登录 mainId 处理
  80. */
  81. public function actionDepositBalance()
  82. {
  83. $mainId = (int) $this->mainId;
  84. $shopId = (int) $this->shopId;
  85. $shopName = trim((string) ($this->shop->name ?? ''));
  86. try {
  87. $result = MainInviteClass::depositAbleCommissionToWallet($mainId, $shopId, $shopName);
  88. $invite = MainInviteClass::getByMainId($mainId);
  89. $inviteData = [
  90. 'totalCommission' => round((float) ($invite['totalCommission'] ?? 0), 2),
  91. 'ableCommission' => round((float) ($invite['ableCommission'] ?? 0), 2),
  92. ];
  93. util::success(array_merge($result, ['invite' => $inviteData]));
  94. } catch (\Exception $e) {
  95. util::fail($e->getMessage());
  96. }
  97. }
  98. }