MemberLevelController.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\custom\classes\CustomClass as HdCustomClass;
  4. use bizHd\member\classes\MemberLevelClass;
  5. use common\components\dict;
  6. use common\components\util;
  7. use Yii;
  8. class MemberLevelController extends BaseController
  9. {
  10. public $guestAccess = [];
  11. //初始化数据 ssh 20250831
  12. public function actionGetInitData()
  13. {
  14. $shop = $this->shop;
  15. $reduceDay = $shop->reduceDay ?? 30;
  16. $memberLevelSet = $shop->memberLevelSet ?? 0;
  17. $shopId = $this->shopId;
  18. if ($memberLevelSet == 1) {
  19. $list = MemberLevelClass::getAllByCondition(['shopId' => $shopId], 'level ASC', '*', null);
  20. $member = [];
  21. if (!empty($list)) {
  22. foreach ($list as $k => $val) {
  23. $name = $val['name'] ?? '会员';
  24. $levelSn = $val['levelSn'] ?? 'general';
  25. $level = $val['level'] ?? 1;
  26. $amount = $val['amount'] ?? 0;
  27. $amount = floatval($amount);
  28. $discount = floatval($val['discount'] ?? 10);
  29. $birthdayBenefit = trim($val['birthdayBenefit'] ?? '');
  30. $benefitDesc = trim($val['benefitDesc'] ?? '');
  31. $it = [
  32. 'name' => $name,
  33. 'levelSn' => $levelSn,
  34. 'level' => $level,
  35. 'member' => $level,
  36. 'amount' => $amount,
  37. 'discount' => $discount,
  38. 'birthdayBenefit' => $birthdayBenefit,
  39. 'benefitDesc' => $benefitDesc,
  40. ];
  41. $member[] = $it;
  42. }
  43. }
  44. } else {
  45. $member = dict::getDict('memberLevelMap');
  46. foreach ($member as $k => $row) {
  47. if (!isset($row['discount'])) {
  48. $member[$k]['discount'] = 10;
  49. }
  50. if (!isset($row['birthdayBenefit'])) {
  51. $member[$k]['birthdayBenefit'] = '';
  52. }
  53. if (!isset($row['benefitDesc'])) {
  54. $member[$k]['benefitDesc'] = '';
  55. }
  56. if (!isset($row['member'])) {
  57. $member[$k]['member'] = intval($row['level'] ?? ($k + 1));
  58. }
  59. }
  60. }
  61. util::success(['member' => $member, 'reduceDay' => $reduceDay, 'memberLevelSet' => $memberLevelSet]);
  62. }
  63. public function actionModify()
  64. {
  65. $post = Yii::$app->request->post();
  66. $shopId = $this->shopId;
  67. $mainId = $this->mainId;
  68. $connection = Yii::$app->db;
  69. $transaction = $connection->beginTransaction();
  70. try {
  71. $data = $post['data'] ?? [];
  72. if (empty($data)) {
  73. util::fail('请填写会员信息');
  74. }
  75. // 验证值递增
  76. $prevAmount = -1;
  77. foreach ($data as $item) {
  78. $currentAmount = floatval($item['amount'] ?? 0);
  79. if ($currentAmount <= $prevAmount) {
  80. util::fail('消费金额必须递增');
  81. }
  82. $prevAmount = $currentAmount;
  83. }
  84. foreach ($data as $k => $v) {
  85. $levelSn = $v['levelSn'] ?? 'general';
  86. $level = $v['level'] ?? 1;
  87. $name = $v['name'] ?? '会员';
  88. $amount = $v['amount'] ?? 0;
  89. $discount = $v['discount'] ?? 10;
  90. if ($discount === '') {
  91. $discount = 10;
  92. }
  93. if (!is_numeric($discount)) {
  94. util::fail('请输入有效的折扣');
  95. }
  96. $discount = floatval($discount);
  97. if ($discount <= 0 || $discount > 10) {
  98. util::fail('折扣必须大于0且不超过10');
  99. }
  100. $birthdayBenefit = mb_substr(trim($v['birthdayBenefit'] ?? ''), 0, 50);
  101. $benefitDesc = mb_substr(trim($v['benefitDesc'] ?? ''), 0, 500);
  102. $it = [
  103. 'mainId' => $mainId,
  104. 'shopId' => $shopId,
  105. 'level' => $level,
  106. 'levelSn' => $levelSn,
  107. 'name' => $name,
  108. 'amount' => $amount,
  109. 'discount' => $discount,
  110. 'birthdayBenefit' => $birthdayBenefit,
  111. 'benefitDesc' => $benefitDesc,
  112. ];
  113. $has = MemberLevelClass::getByCondition(['mainId' => $mainId, 'level' => $level], true);
  114. if (!empty($has)) {
  115. $has->amount = $amount;
  116. $has->discount = $discount;
  117. $has->birthdayBenefit = $birthdayBenefit;
  118. $has->benefitDesc = $benefitDesc;
  119. $has->save();
  120. } else {
  121. MemberLevelClass::add($it, true);
  122. }
  123. }
  124. $shop = $this->shop;
  125. $shop->memberLevelSet = 1;
  126. $shop->save();
  127. $transaction->commit();
  128. // 客户消费等级变更
  129. $producer = Yii::$app->rabbitmq->getProducer('customProducer');
  130. $msg = serialize(['type' => 'hd_change_custom_expense_level', 'mainId' => $mainId, 'shopId' => $shopId]);
  131. $producer->publish($msg, 'customExchange', 'customRoute', ['delivery_mode' => 2, 'content_type' => 'application/octet-stream']);
  132. util::complete('设置成功');
  133. } catch (\Exception $e) {
  134. $transaction->rollBack();
  135. Yii::info("失败原因:" . $e->getMessage());
  136. util::fail('设置失败');
  137. }
  138. }
  139. }