MemberLevelController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  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. $it = [
  29. 'name' => $name,
  30. 'levelSn' => $levelSn,
  31. 'level' => $level,
  32. 'amount' => $amount,
  33. ];
  34. $member[] = $it;
  35. }
  36. }
  37. } else {
  38. $member = dict::getDict('memberLevelMap');
  39. }
  40. util::success(['member' => $member, 'reduceDay' => $reduceDay, 'memberLevelSet' => $memberLevelSet]);
  41. }
  42. public function actionModify()
  43. {
  44. $post = Yii::$app->request->post();
  45. $shopId = $this->shopId;
  46. $mainId = $this->mainId;
  47. $connection = Yii::$app->db;
  48. $transaction = $connection->beginTransaction();
  49. try {
  50. $data = $post['data'] ?? [];
  51. if (empty($data)) {
  52. util::fail('请填写会员信息');
  53. }
  54. // 验证值递增
  55. $prevAmount = -1;
  56. foreach ($data as $item) {
  57. $currentAmount = floatval($item['amount'] ?? 0);
  58. if ($currentAmount <= $prevAmount) {
  59. util::fail('消费金额必须递增');
  60. }
  61. $prevAmount = $currentAmount;
  62. }
  63. foreach ($data as $k => $v) {
  64. $levelSn = $v['levelSn'] ?? 'general';
  65. $level = $v['level'] ?? 1;
  66. $name = $v['name'] ?? '会员';
  67. $amount = $v['amount'] ?? 0;
  68. $it = [
  69. 'mainId' => $mainId,
  70. 'shopId' => $shopId,
  71. 'level' => $level,
  72. 'levelSn' => $levelSn,
  73. 'name' => $name,
  74. 'amount' => $amount,
  75. ];
  76. $has = MemberLevelClass::getByCondition(['mainId' => $mainId, 'level' => $level], true);
  77. if (!empty($has)) {
  78. $has->amount = $amount;
  79. $has->save();
  80. } else {
  81. MemberLevelClass::add($it, true);
  82. }
  83. }
  84. $transaction->commit();
  85. // 客户消费等级变更
  86. $producer = Yii::$app->rabbitmq->getProducer('customProducer');
  87. $msg = serialize(['type' => 'hd_change_custom_expense_level', 'mainId' => $mainId, 'shopId' => $shopId]);
  88. $producer->publish($msg, 'customExchange', 'customRoute', ['delivery_mode' => 2, 'content_type' => 'application/octet-stream']);
  89. util::complete('设置成功');
  90. } catch (\Exception $e) {
  91. $transaction->rollBack();
  92. Yii::info("失败原因:" . $e->getMessage());
  93. util::fail('设置失败');
  94. }
  95. }
  96. }