shop; $shopId = $shop->id; $weal = MemberWealClass::getAllByCondition(['shopId' => $shopId], null, '*', null); $weal = arrayUtil::arraySort($weal, 'level', SORT_ASC); if (!empty($weal)) { foreach ($weal as $key => $val) { $recharge = $val['recharge'] ?? 0; $recharge = floatval($recharge); $giv = $val['give'] ?? 0; $giv = floatval($giv); $weal[$key]['recharge'] = $recharge; $weal[$key]['give'] = $giv; } } $rechargeWeal = $shop->rechargeWeal ?? 0; util::success(['weal' => $weal, 'rechargeWeal' => $rechargeWeal]); } //获取会员的初始数据 public function actionGetInitData() { $map = dict::getDict('memberLevelMap'); $shop = $this->shop; $reduceDay = $shop->reduceDay ?? 30; $member = []; foreach ($map as $key => $val) { $name = $val['name'] ?? '普通会员'; $levelSn = $val['levelSn'] ?? 'general'; $level = $val['level'] ?? 1; $discount = $val['discount'] ?? 0.95; $recharge = $val['recharge'] ?? 0; $it = [ 'name' => $name, 'levelSn' => $levelSn, 'level' => $level, 'discount' => $discount, 'recharge' => $recharge, ]; $member[] = $it; } $shopId = $this->shopId; $list = MemberWealClass::getAllByCondition(['shopId' => $shopId], null, '*', null); if (!empty($list)) { $list = arrayUtil::arraySort($list, 'level', SORT_ASC); $member = []; foreach ($list as $key => $val) { $name = $val['name'] ?? '普通会员'; $levelSn = $val['levelSn'] ?? 'general'; $level = $val['level'] ?? 1; $discount = $val['discount'] ?? 0.95; $recharge = $val['recharge'] ?? 0; if ($discount > 1) { util::fail($name . '的折扣必须小于等于1'); } if ($discount <= 0) { util::fail($name . '的折扣必须大于0'); } $it = [ 'name' => $name, 'levelSn' => $levelSn, 'level' => $level, 'discount' => $discount, 'recharge' => $recharge, ]; $member[] = $it; } } util::success(['member' => $member, 'reduceDay' => $reduceDay]); } public function actionGetRechargeData() { $recharge = dict::getDict('memberLevelMap'); $shopId = $this->shopId; $has = MemberWealClass::getByCondition(['shopId' => $shopId], true); $hasMemberDiscount = !empty($has) ? 1 : 0; $weal = MemberWealClass::getAllByCondition(['shopId' => $shopId], null, '*', 'level'); if (!empty($weal)) { foreach ($recharge as $key => $val) { $level = $val['level']; $current = $weal[$level] ?? []; $newDiscount = $current['discount'] ?? 0.9; $newRecharge = $current['recharge'] ?? 0; $newRecharge = floatval($newRecharge); $newGive = $current['give'] ?? 0; $newGive = floatval($newGive); $recharge[$key]['discount'] = $newDiscount; $recharge[$key]['recharge'] = $newRecharge; $recharge[$key]['give'] = $newGive; } } $shop = $this->shop; $rechargeWeal = $shop->rechargeWeal ?? 1; $rechargeWeal = $rechargeWeal == 0 ? 1 : $rechargeWeal; util::success(['recharge' => $recharge, 'hasMemberDiscount' => $hasMemberDiscount, 'rechargeWeal' => $rechargeWeal]); } public function actionModifyRecharge() { $shop = $this->shop; $rechargeWeal = $shop->rechargeWeal ?? 0; if ($rechargeWeal != 0) { util::fail('已经设置过了'); } $post = Yii::$app->request->post(); $rechargeWeal = $post['rechargeWeal'] ?? 0; $data = $post['data'] ?? []; if ($rechargeWeal == 0) { util::fail('请选择优惠类型'); } if (empty($data)) { util::fail('请填写内容'); } // 验证recharge和give值递增,discount值递减 $prevRecharge = -1; $prevGive = -1; $prevDiscount = 2; // 初始化为大于1的值,确保第一个元素能通过验证 foreach ($data as $index => $item) { $currentRecharge = floatval($item['recharge'] ?? 0); $currentGive = floatval($item['give'] ?? 0); $currentDiscount = floatval($item['discount'] ?? 0); if ($currentRecharge <= $prevRecharge) { util::fail('充值金额必须递增'); } if ($rechargeWeal == 2) { if ($currentGive <= $prevGive) { util::fail('赠送金额必须递增'); } } if ($currentDiscount >= $prevDiscount) { util::fail('折扣必须递减'); } $prevRecharge = $currentRecharge; $prevGive = $currentGive; $prevDiscount = $currentDiscount; } $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $shop->rechargeWeal = $rechargeWeal; $shop->save(); $params = []; foreach ($data as $key => $val) { $levelSn = $val['levelSn']; $params[$levelSn] = $val; } $shopId = $this->shopId; $list = MemberWealClass::getAllByCondition(['shopId' => $shopId], null, '*', null, true); if (empty($list)) { util::fail('请先设置会员折扣'); } foreach ($list as $k => $obj) { $levelSn = $obj->levelSn ?? ''; $current = $params[$levelSn] ?? []; $rechargeAmount = $current['recharge'] ?? 0; $obj->recharge = $rechargeAmount; if (!empty($current)) { $give = $current['give'] ?? 0; if ($rechargeWeal == 2) { //送钱 $obj->give = $give; } $obj->save(); } } $transaction->commit(); util::complete('设置成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("失败原因:" . $e->getMessage()); util::fail('设置失败'); } } public function actionModify() { $post = Yii::$app->request->post(); $shopId = $this->shopId; $mainId = $this->mainId; $has = MemberWealClass::getByCondition(['shopId' => $shopId], true); if (!empty($has)) { 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('没有折扣数据'); } // 验证discount值递减 $prevDiscount = 2; // 初始化为大于1的值,确保第一个元素能通过验证 foreach ($data as $index => $item) { $currentDiscount = floatval($item['discount'] ?? 0); if ($currentDiscount >= $prevDiscount) { util::fail('折扣必须递减'); } $prevDiscount = $currentDiscount; } foreach ($data as $k => $v) { $discount = $v['discount'] ?? 0.95; $levelSn = $v['levelSn'] ?? 'general'; $level = $v['level'] ?? 1; $name = $v['name'] ?? '普通会员'; $recharge = $v['recharge'] ?? 0; $it = [ 'mainId' => $mainId, 'shopId' => $shopId, 'level' => $level, 'levelSn' => $levelSn, 'discount' => $discount, 'name' => $name, 'recharge' => $recharge, ]; MemberWealClass::add($it, true); } $transaction->commit(); util::complete('设置成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("失败原因:" . $e->getMessage()); util::fail('设置失败'); } } }