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 = $v['discount'] ?? 10; if ($discount === '') { $discount = 10; } if (!is_numeric($discount)) { util::fail('请输入有效的折扣'); } $discount = floatval($discount); if ($discount <= 0 || $discount > 10) { util::fail('折扣必须大于0且不超过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('设置失败'); } } }