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); $it = [ 'name' => $name, 'levelSn' => $levelSn, 'level' => $level, 'amount' => $amount, ]; $member[] = $it; } } } else { $member = dict::getDict('memberLevelMap'); } util::success(['member' => $member, 'reduceDay' => $reduceDay, 'memberLevelSet' => $memberLevelSet]); } public function actionModify() { $post = Yii::$app->request->post(); $shopId = $this->shopId; $mainId = $this->mainId; $shop = $this->shop; if ($shop->memberLevelSet == 1) { util::fail('已经设置过'); } $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $reduceDay = $post['reduceDay'] ?? 0; ShopClass::updateById($shopId, ['reduceDay' => $reduceDay]); $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; $it = [ 'mainId' => $mainId, 'shopId' => $shopId, 'level' => $level, 'levelSn' => $levelSn, 'name' => $name, 'amount' => $amount, ]; $has = MemberLevelClass::getByCondition(['mainId' => $mainId, 'level' => $level], true); if (!empty($has)) { $has->amount = $amount; $has->save(); } else { MemberLevelClass::add($it, true); } } $shop->memberLevelSet = 1; $shop->save(); $transaction->commit(); util::complete('设置成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("失败原因:" . $e->getMessage()); util::fail('设置失败'); } } }