MainInviteController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. /**
  3. * ghsApp 门店邀请 / 我的分佣(邀请花店开店)
  4. * 数据与 hd 共用 xhMainInvite、xhMainInviteFlow 等表
  5. */
  6. namespace ghs\controllers;
  7. use bizHd\shop\classes\MainInviteClass;
  8. use bizHd\shop\classes\MainInviteCommissionClass;
  9. use bizHd\shop\classes\MainInviteFlowClass;
  10. use bizHd\wx\classes\WxOpenClass;
  11. use common\components\dict;
  12. use common\components\imgUtil;
  13. use common\components\miniUtil;
  14. use common\components\util;
  15. use Yii;
  16. class MainInviteController extends BaseController
  17. {
  18. public $guestAccess = [];
  19. /**
  20. * 我的分佣首页
  21. */
  22. public function actionIndex()
  23. {
  24. $mainId = (int) $this->mainId;
  25. $invite = MainInviteClass::getByMainId($mainId);
  26. $inviteData = [
  27. 'inviteCode' => '',
  28. 'inviteCodeMask' => '',
  29. 'totalCommission' => '0.00',
  30. 'ableCommission' => '0.00',
  31. 'commissionAmount' => '0.00',
  32. 'hdDiscountAmount' => '0.00',
  33. 'inviteCount' => 0,
  34. ];
  35. if (!empty($invite)) {
  36. $code = $invite['inviteCode'] ?? '';
  37. $inviteData = [
  38. 'inviteCode' => $code,
  39. 'inviteCodeMask' => MainInviteCommissionClass::maskInviteCode($code),
  40. 'totalCommission' => round((float) ($invite['totalCommission'] ?? 0), 2),
  41. 'ableCommission' => round((float) ($invite['ableCommission'] ?? 0), 2),
  42. 'commissionAmount' => round((float) ($invite['commissionAmount'] ?? 0), 2),
  43. 'hdDiscountAmount' => round((float) ($invite['hdDiscountAmount'] ?? 0), 2),
  44. 'inviteCount' => (int) ($invite['inviteCount'] ?? 0),
  45. ];
  46. }
  47. $recentRaw = MainInviteCommissionClass::getRecentList($mainId, 5);
  48. $recentList = [];
  49. foreach ($recentRaw as $row) {
  50. $recentList[] = MainInviteCommissionClass::formatRecentRow($row);
  51. }
  52. util::success([
  53. 'invite' => $inviteData,
  54. 'recentList' => $recentList,
  55. ]);
  56. }
  57. /**
  58. * 邀约花店列表
  59. */
  60. public function actionInviteShopList()
  61. {
  62. $get = Yii::$app->request->get();
  63. $keyword = trim($get['keyword'] ?? '');
  64. $data = MainInviteCommissionClass::getInviteShopList($this->mainId, $keyword);
  65. util::success($data);
  66. }
  67. /**
  68. * 佣金变动明细分页
  69. */
  70. public function actionCommissionList()
  71. {
  72. $list = MainInviteFlowClass::getFlowList($this->mainId);
  73. util::success($list);
  74. }
  75. /**
  76. * 可提现佣金全额存入中央钱包余额
  77. */
  78. public function actionDepositBalance()
  79. {
  80. $mainId = (int) $this->mainId;
  81. $shopId = (int) $this->shopId;
  82. $shopName = trim((string) ($this->shop->name ?? ''));
  83. try {
  84. $result = MainInviteClass::depositAbleCommissionToWallet($mainId, $shopId, $shopName);
  85. $invite = MainInviteClass::getByMainId($mainId);
  86. $inviteData = [
  87. 'totalCommission' => round((float) ($invite['totalCommission'] ?? 0), 2),
  88. 'ableCommission' => round((float) ($invite['ableCommission'] ?? 0), 2),
  89. ];
  90. util::success(array_merge($result, ['invite' => $inviteData]));
  91. } catch (\Exception $e) {
  92. util::fail($e->getMessage());
  93. }
  94. }
  95. /**
  96. * 生成 hdApp 邀请开店小程序码(落地 applyInvite,scene 带 inviteCode)
  97. * GET:可选 envVersion=develop|trial|release
  98. */
  99. public function actionInviteHdMiniCode()
  100. {
  101. $invite = MainInviteClass::getByMainId((int) $this->mainId);
  102. $inviteCode = trim((string) ($invite['inviteCode'] ?? ''));
  103. if ($inviteCode === '') {
  104. util::fail('暂无邀请码');
  105. }
  106. $get = Yii::$app->request->get();
  107. $envVersion = trim((string) ($get['envVersion'] ?? ''));
  108. if ($envVersion === '') {
  109. $envVersion = getenv('YII_ENV') === 'production' ? 'release' : 'develop';
  110. }
  111. $merchant = WxOpenClass::getWxInfo();
  112. $page = 'pagesClient/official/applyInvite';
  113. $ptStyle = dict::getDict('ptStyle', 'hd');
  114. $scene = 'inviteCode=' . $inviteCode;
  115. $imgPath = miniUtil::generateUnlimitedMiniCode($merchant, $page, $scene, $ptStyle, $envVersion);
  116. util::success([
  117. 'imgUrl' => imgUtil::groupImg($imgPath),
  118. 'inviteCode' => $inviteCode,
  119. ]);
  120. }
  121. }