MemberLevelController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\member\classes\MemberLevelClass;
  4. use common\components\util;
  5. use Yii;
  6. class MemberLevelController extends BaseController
  7. {
  8. public $guestAccess = [];
  9. //初始化数据 ssh 20250831;等级列表与 mall 权益页同源(MemberLevelClass::getShopMemberList)
  10. public function actionGetInitData()
  11. {
  12. $shop = $this->shop;
  13. $reduceDay = $shop->reduceDay ?? 30;
  14. $memberLevelSet = $shop->memberLevelSet ?? 0;
  15. $member = MemberLevelClass::getShopMemberList($shop);
  16. util::success(['member' => $member, 'reduceDay' => $reduceDay, 'memberLevelSet' => $memberLevelSet]);
  17. }
  18. public function actionModify()
  19. {
  20. $post = Yii::$app->request->post();
  21. $shopId = $this->shopId;
  22. $mainId = $this->mainId;
  23. $connection = Yii::$app->db;
  24. $transaction = $connection->beginTransaction();
  25. try {
  26. $data = $post['data'] ?? [];
  27. if (empty($data)) {
  28. util::fail('请填写会员信息');
  29. }
  30. // 验证值递增
  31. $prevAmount = -1;
  32. foreach ($data as $item) {
  33. $currentAmount = floatval($item['amount'] ?? 0);
  34. if ($currentAmount <= $prevAmount) {
  35. util::fail('消费金额必须递增');
  36. }
  37. $prevAmount = $currentAmount;
  38. }
  39. foreach ($data as $k => $v) {
  40. $levelSn = $v['levelSn'] ?? 'general';
  41. $level = $v['level'] ?? 1;
  42. $name = $v['name'] ?? '会员';
  43. $amount = $v['amount'] ?? 0;
  44. $discount = $v['discount'] ?? 10;
  45. if ($discount === '') {
  46. $discount = 10;
  47. }
  48. if (!is_numeric($discount)) {
  49. util::fail('请输入有效的折扣');
  50. }
  51. $discount = floatval($discount);
  52. if ($discount <= 0 || $discount > 10) {
  53. util::fail('折扣必须大于0且不超过10');
  54. }
  55. $birthdayBenefit = mb_substr(trim($v['birthdayBenefit'] ?? ''), 0, 50);
  56. $benefitDesc = mb_substr(trim($v['benefitDesc'] ?? ''), 0, 500);
  57. $it = [
  58. 'mainId' => $mainId,
  59. 'shopId' => $shopId,
  60. 'level' => $level,
  61. 'levelSn' => $levelSn,
  62. 'name' => $name,
  63. 'amount' => $amount,
  64. 'discount' => $discount,
  65. 'birthdayBenefit' => $birthdayBenefit,
  66. 'benefitDesc' => $benefitDesc,
  67. ];
  68. $has = MemberLevelClass::getByCondition(['mainId' => $mainId, 'level' => $level], true);
  69. if (!empty($has)) {
  70. $has->amount = $amount;
  71. $has->discount = $discount;
  72. $has->birthdayBenefit = $birthdayBenefit;
  73. $has->benefitDesc = $benefitDesc;
  74. $has->save();
  75. } else {
  76. MemberLevelClass::add($it, true);
  77. }
  78. }
  79. $shop = $this->shop;
  80. $shop->memberLevelSet = 1;
  81. $shop->save();
  82. $transaction->commit();
  83. // 客户消费等级变更
  84. $producer = Yii::$app->rabbitmq->getProducer('customProducer');
  85. $msg = serialize(['type' => 'hd_change_custom_expense_level', 'mainId' => $mainId, 'shopId' => $shopId]);
  86. $producer->publish($msg, 'customExchange', 'customRoute', ['delivery_mode' => 2, 'content_type' => 'application/octet-stream']);
  87. util::complete('设置成功');
  88. } catch (\Exception $e) {
  89. $transaction->rollBack();
  90. Yii::info("失败原因:" . $e->getMessage());
  91. util::fail('设置失败');
  92. }
  93. }
  94. }