| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- <?php
- namespace hd\controllers;
- use bizHd\member\classes\MemberWealClass;
- use bizHd\shop\classes\ShopClass;
- use common\components\arrayUtil;
- use common\components\dict;
- use common\components\util;
- use Yii;
- class MemberWealController extends BaseController
- {
- public $guestAccess = [];
- //获取充值和会员的优惠政策 ssh 20250226
- public function actionGetWeal()
- {
- $shop = $this->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('设置失败');
- }
- }
- }
|