| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- namespace hd\controllers;
- use bizHd\custom\classes\CustomClass as HdCustomClass;
- use bizHd\member\classes\MemberLevelClass;
- use common\components\dict;
- use common\components\util;
- use Yii;
- class MemberLevelController extends BaseController
- {
- public $guestAccess = [];
- //初始化数据 ssh 20250831
- public function actionGetInitData()
- {
- $shop = $this->shop;
- $reduceDay = $shop->reduceDay ?? 30;
- $memberLevelSet = $shop->memberLevelSet ?? 0;
- $shopId = $this->shopId;
- if ($memberLevelSet == 1) {
- $list = MemberLevelClass::getAllByCondition(['shopId' => $shopId], 'level ASC', '*', null);
- $member = [];
- if (!empty($list)) {
- foreach ($list as $k => $val) {
- $name = $val['name'] ?? '会员';
- $levelSn = $val['levelSn'] ?? 'general';
- $level = $val['level'] ?? 1;
- $amount = $val['amount'] ?? 0;
- $amount = floatval($amount);
- $discount = floatval($val['discount'] ?? 10);
- $birthdayBenefit = trim($val['birthdayBenefit'] ?? '');
- $benefitDesc = trim($val['benefitDesc'] ?? '');
- $it = [
- 'name' => $name,
- 'levelSn' => $levelSn,
- 'level' => $level,
- 'member' => $level,
- 'amount' => $amount,
- 'discount' => $discount,
- 'birthdayBenefit' => $birthdayBenefit,
- 'benefitDesc' => $benefitDesc,
- ];
- $member[] = $it;
- }
- }
- } else {
- $member = dict::getDict('memberLevelMap');
- foreach ($member as $k => $row) {
- if (!isset($row['discount'])) {
- $member[$k]['discount'] = 10;
- }
- if (!isset($row['birthdayBenefit'])) {
- $member[$k]['birthdayBenefit'] = '';
- }
- if (!isset($row['benefitDesc'])) {
- $member[$k]['benefitDesc'] = '';
- }
- if (!isset($row['member'])) {
- $member[$k]['member'] = intval($row['level'] ?? ($k + 1));
- }
- }
- }
- util::success(['member' => $member, 'reduceDay' => $reduceDay, 'memberLevelSet' => $memberLevelSet]);
- }
- public function actionModify()
- {
- $post = Yii::$app->request->post();
- $shopId = $this->shopId;
- $mainId = $this->mainId;
- $connection = Yii::$app->db;
- $transaction = $connection->beginTransaction();
- try {
- $data = $post['data'] ?? [];
- if (empty($data)) {
- util::fail('请填写会员信息');
- }
- // 验证值递增
- $prevAmount = -1;
- foreach ($data as $item) {
- $currentAmount = floatval($item['amount'] ?? 0);
- if ($currentAmount <= $prevAmount) {
- util::fail('消费金额必须递增');
- }
- $prevAmount = $currentAmount;
- }
- foreach ($data as $k => $v) {
- $levelSn = $v['levelSn'] ?? 'general';
- $level = $v['level'] ?? 1;
- $name = $v['name'] ?? '会员';
- $amount = $v['amount'] ?? 0;
- $discount = floatval($v['discount'] ?? 10);
- $birthdayBenefit = mb_substr(trim($v['birthdayBenefit'] ?? ''), 0, 50);
- $benefitDesc = mb_substr(trim($v['benefitDesc'] ?? ''), 0, 500);
- $it = [
- 'mainId' => $mainId,
- 'shopId' => $shopId,
- 'level' => $level,
- 'levelSn' => $levelSn,
- 'name' => $name,
- 'amount' => $amount,
- 'discount' => $discount,
- 'birthdayBenefit' => $birthdayBenefit,
- 'benefitDesc' => $benefitDesc,
- ];
- $has = MemberLevelClass::getByCondition(['mainId' => $mainId, 'level' => $level], true);
- if (!empty($has)) {
- $has->amount = $amount;
- $has->discount = $discount;
- $has->birthdayBenefit = $birthdayBenefit;
- $has->benefitDesc = $benefitDesc;
- $has->save();
- } else {
- MemberLevelClass::add($it, true);
- }
- }
- $shop = $this->shop;
- $shop->memberLevelSet = 1;
- $shop->save();
- $transaction->commit();
- // 客户消费等级变更
- $producer = Yii::$app->rabbitmq->getProducer('customProducer');
- $msg = serialize(['type' => 'hd_change_custom_expense_level', 'mainId' => $mainId, 'shopId' => $shopId]);
- $producer->publish($msg, 'customExchange', 'customRoute', ['delivery_mode' => 2, 'content_type' => 'application/octet-stream']);
- util::complete('设置成功');
- } catch (\Exception $e) {
- $transaction->rollBack();
- Yii::info("失败原因:" . $e->getMessage());
- util::fail('设置失败');
- }
- }
- }
|