MemberLevelController.php 3.6 KB

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