MemberLevelController.php 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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 = floatval($v['discount'] ?? 10);
  90. $birthdayBenefit = mb_substr(trim($v['birthdayBenefit'] ?? ''), 0, 50);
  91. $benefitDesc = mb_substr(trim($v['benefitDesc'] ?? ''), 0, 500);
  92. $it = [
  93. 'mainId' => $mainId,
  94. 'shopId' => $shopId,
  95. 'level' => $level,
  96. 'levelSn' => $levelSn,
  97. 'name' => $name,
  98. 'amount' => $amount,
  99. 'discount' => $discount,
  100. 'birthdayBenefit' => $birthdayBenefit,
  101. 'benefitDesc' => $benefitDesc,
  102. ];
  103. $has = MemberLevelClass::getByCondition(['mainId' => $mainId, 'level' => $level], true);
  104. if (!empty($has)) {
  105. $has->amount = $amount;
  106. $has->discount = $discount;
  107. $has->birthdayBenefit = $birthdayBenefit;
  108. $has->benefitDesc = $benefitDesc;
  109. $has->save();
  110. } else {
  111. MemberLevelClass::add($it, true);
  112. }
  113. }
  114. $shop = $this->shop;
  115. $shop->memberLevelSet = 1;
  116. $shop->save();
  117. $transaction->commit();
  118. // 客户消费等级变更
  119. $producer = Yii::$app->rabbitmq->getProducer('customProducer');
  120. $msg = serialize(['type' => 'hd_change_custom_expense_level', 'mainId' => $mainId, 'shopId' => $shopId]);
  121. $producer->publish($msg, 'customExchange', 'customRoute', ['delivery_mode' => 2, 'content_type' => 'application/octet-stream']);
  122. util::complete('设置成功');
  123. } catch (\Exception $e) {
  124. $transaction->rollBack();
  125. Yii::info("失败原因:" . $e->getMessage());
  126. util::fail('设置失败');
  127. }
  128. }
  129. }