| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487 |
- <?php
- namespace addons\Store\backend\controllers;
- use addons\Agent\common\models\AgentLevel;
- use addons\Boss\common\models\AddonsBossLevel;
- use addons\Distribution\common\models\DistributionLevel;
- use addons\Store\common\enums\StoreEnum;
- use common\enums\AddonsEnum;
- use common\enums\StatusEnum;
- use common\models\goods\Goods;
- use common\models\mall\MallAddons;
- use common\models\user\UserLevel;
- class StoreSettingController extends BaseController
- {
- public function actionIndex()
- {
- if (!\Yii::$app->request->isAjax) {
- return $this->render('/setting/index');
- }
- $is_install_distribution = MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_DISTRIBUTION);
- $is_install_agent = MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_AGENT);
- $is_install_boss = MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_BOSS);
- $is_install_area = MallAddons::isInstall($this->mall_id, AddonsEnum::ADDONS_NAME_AREA);
- if (\Yii::$app->request->isGet) {
- $web_url = \Yii::$app->services->setting->mall->get($this->mall_id, 'basic.web_url');
- if (empty($web_url)) {
- $h5_domain = 'https://h5.qijianshirjcs.com/';
- $mall_sign = '';
- } else {
- $url_info = explode('?', $web_url);
- $h5_domain = $url_info[0];
- $mall_sign = substr($url_info[1], mb_strlen('sign='));
- }
- $basic = \Yii::$app->services->setting->addons->get($this->mall_id, StoreEnum::ADDONS_NAME, 'basic');
- $cashier = \Yii::$app->services->setting->addons->get($this->mall_id, StoreEnum::ADDONS_NAME, 'cashier');
- $enter = \Yii::$app->services->setting->addons->get($this->mall_id, StoreEnum::ADDONS_NAME, 'enter');
- $mode = \Yii::$app->services->setting->addons->get($this->mall_id, StoreEnum::ADDONS_NAME, 'mode');
- if (!empty($enter['goods_ids'])) {
- $goods_ids = json_decode($enter['goods_ids'], true);
- $goods = Goods::find()
- ->select('id,goods_name,cover_pic')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'id' => $goods_ids])
- ->asArray()
- ->all();
- } else {
- $goods_ids = $goods = [];
- }
- if (empty($enter)) {
- $enter = null;
- } else {
- $enter['goods_ids'] = $goods_ids;
- $enter['goods_list'] = $goods;
- }
- if (empty($basic)) {
- $basic = [
- 'is_distribution_enable' => $is_install_distribution,
- 'is_agent_enable' => $is_install_agent,
- 'is_boss_enable' => $is_install_boss,
- 'is_area_enable' => $is_install_area,
- 'is_basic_null' => true,
- ];
- } else {
- $basic['is_distribution_enable'] = $is_install_distribution;
- $basic['is_agent_enable'] = $is_install_agent;
- $basic['is_boss_enable'] = $is_install_boss;
- $basic['is_area_enable'] = $is_install_area;
- }
- /* cashier */
- /* ---------- 会员等级相关配置处理 start ------ */
- $member_levels = UserLevel::find()
- ->select('level,name as level_name')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->all();
- if (empty($member_levels)) {
- $member_levels = [
- // ['level' => 0, 'level_name' => '默认等级'],
- ];
- }
- if (!empty($cashier['members'])) {
- $setting_members = json_decode($cashier['members'], true);
- $mem_levels = array_column($setting_members, 'level');
- $mem_level_discount_map = array_column($setting_members, 'discount', 'level');
- } else {
- $mem_levels = [];
- $mem_level_discount_map = [];
- }
- foreach ($member_levels as &$mlevel) {
- if (!in_array($mlevel['level'], $mem_levels)) {
- $mlevel['discount'] = 0;
- } else {
- $mlevel['discount'] = floatval($mem_level_discount_map[$mlevel['level']] ?? 0);
- }
- }
- // dd($member_levels);
- /* ---------- 会员等级相关配置处理 end ------ */
- /* ---------- 分销等级相关配置处理 start ------ */
- if (!$is_install_distribution) {
- $distribution_settings = [
- // ['level' => 0, 'level_name' => '默认等级', 'name' => '佣金', 'commission_rate' => [0, 0]],
- ];
- $is_distribution_enable = 0;
- } else {
- $is_distribution_enable = 1;
- $distribution_levels = DistributionLevel::find()
- ->select('level,name as level_name')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->all();
-
- $init_data = ['level'=>0,'level_name'=>'默认等级'];
- if (empty($distribution_levels)) {
- $distribution_levels = [$init_data,];
- }else{
- array_unshift($distribution_levels,$init_data);
- }
- if (!empty($cashier['distribution_settings'])) {
- $distribution_settings = json_decode($cashier['distribution_settings'], true);
- $distr_levels = array_column($distribution_settings, 'level');
- $distr_level_discount_map = array_column($distribution_settings, 'commission_rate', 'level');
- } else {
- $distr_levels = $distr_level_discount_map = [];
- }
- foreach ($distribution_levels as &$dlevel) {
- if (!in_array($dlevel['level'], $distr_levels)) {
- $dlevel['commission_rate'] = [0, 0];
- } else {
- $dlevel['commission_rate'] = $distr_level_discount_map[$dlevel['level']] ?? [0, 0];
- }
- }
- $distribution_settings = $distribution_levels;
- }
- /* ---------- 分销等级相关配置处理 end ------ */
- /* ---------- 经销等级相关配置处理 start ------ */
- if (!$is_install_agent) {
- $agent_settings = [
- 'team_rewards' => [
- // ['level' => 0, 'level_name' => '默认等级', 'commission_rate' => 0],
- ],
- 'equal_rewards' => [
- // ['level' => 0, 'level_name' => '默认等级', 'commission_rate' => 0],
- ],
- 'over_rewards' => [
- // ['level' => 0, 'level_name' => '默认等级', 'commission_rate' => 0],
- ],
- ];
- $is_agent_enable = 0;
- } else {
- $is_agent_enable = 1;
- $agent_levels = AgentLevel::find()
- ->select('level,name as level_name')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->all();
- if (empty($agent_levels)) {
- $agent_levels = [
- // ['level' => 0, 'level_name' => '默认等级'],
- ];
- }
- if (!empty($cashier['agent_settings'])) {
- $agent_settings = json_decode($cashier['agent_settings'], true);
- } else {
- $agent_settings = [
- 'team_rewards' => [
- // ['level' => 0, 'level_name' => '默认等级', 'commission_rate' => 0],
- ],
- 'equal_rewards' => [
- // ['level' => 0, 'level_name' => '默认等级', 'commission_rate' => 0],
- ],
- 'over_rewards' => [
- // ['level' => 0, 'level_name' => '默认等级', 'commission_rate' => 0],
- ],
- ];
- }
- foreach ($agent_settings as $reward_name => $setting) {
- foreach ($setting as $val) {
- $agent_settings[$reward_name][$val['level']] = $val;
- }
- }
- $ag_levels = array_column($agent_settings['team_rewards'], 'level');
- $agent_level_settings = [];
- foreach ($agent_levels as $alevel) {
- if (!in_array($alevel['level'], $ag_levels)) {
- $arr = $alevel;
- $arr['commission_rate'] = 0;
- $agent_level_settings['team_rewards'][] = $arr;
- $agent_level_settings['equal_rewards'][] = $arr;
- $agent_level_settings['over_rewards'][] = $arr;
- } else {
- $arr = [
- 'level' => $alevel['level'],
- 'level_name' => $alevel['level_name'],
- 'commission_rate' => $agent_settings['team_rewards'][$alevel['level']]['commission_rate'] ?? 0,
- ];
- $agent_level_settings['team_rewards'][] = $arr;
- $arr['commission_rate'] = $agent_settings['equal_rewards'][$alevel['level']]['commission_rate'] ?? 0;
- $agent_level_settings['equal_rewards'][] = $arr;
- $arr['commission_rate'] = $agent_settings['over_rewards'][$alevel['level']]['commission_rate'] ?? 0;
- $agent_level_settings['over_rewards'][] = $arr;
- }
- }
- $agent_settings = $agent_level_settings;
- /* ---------- 经销等级相关配置处理 end ------ */
- }
- if (empty($cashier)) {
- $cashier = [
- 'service_fee_ratio' => 0,
- 'member_status' => 0,
- 'is_distribution' => 0,
- 'is_agent' => 0,
- ];
- }
- $cashier['deepNames'] = ['一级分销', '二级分销'];
- $cashier['members'] = $member_levels;
- $cashier['distribution_settings'] = $distribution_settings;
- $cashier['is_distribution_enable'] = $is_distribution_enable;
- $cashier['agent_settings'] = $agent_settings;
- $cashier['is_agent_enable'] = $is_agent_enable;
- /* 模式相关设置 */
- /* 分销模式设置 ---- start ------ */
- // dd($mode);
- $mode['is_distribution_enable'] = $is_distribution_enable;
- if ($is_install_distribution) {
- $dst_commission_details = $dst_score_details = [];
- if (!empty($mode['Distribution'])) {
- $mode_distribution_settings = json_decode($mode['Distribution'], true);
- foreach ($mode_distribution_settings['commission']['detail'] as $detail) {
- $dst_commission_details[$detail['level']] = $detail;
- }
- foreach ($mode_distribution_settings['score']['detail'] as $detail) {
- $dst_score_details[$detail['level']] = $detail;
- }
- }
- // dd($dst_commission_details, $dst_score_details, $distribution_levels);
- $dst_commission_level_settings = $dst_score_level_settings = [];
- foreach ($distribution_levels as &$dlevel) {
- if (empty($dst_commission_details[$dlevel['level']])) {
- $arr = [
- 'level' => $dlevel['level'],
- 'level_name' => $dlevel['level_name'],
- 'first_prize' => 0,
- 'second_prize' => 0,
- 'third_prize' => 0
- ];
- $dst_commission_level_settings[] = $arr;
- } else {
- $dst_commission_details[$dlevel['level']]['level_name'] = $dlevel['level_name'];
- $dst_commission_level_settings[] = $dst_commission_details[$dlevel['level']];
- }
- if (empty($dst_score_details[$dlevel['level']])) {
- $arr = [
- 'level' => $dlevel['level'],
- 'level_name' => $dlevel['level_name'],
- 'first_prize' => 0,
- 'second_prize' => 0,
- 'third_prize' => 0
- ];
- $dst_score_level_settings[] = $arr;
- } else {
- $dst_score_level_settings[] = $dst_score_details[$dlevel['level']];
- }
- }
- if (!empty($dst_commission_level_settings)) {
- $mode_distribution_settings['commission']['detail'] = $dst_commission_level_settings;
- }
- if (!empty($dst_score_level_settings)) {
- $mode_distribution_settings['score']['detail'] = $dst_score_level_settings;
- }
- $mode['Distribution'] = $mode_distribution_settings;
- } else {
- $mode['Distribution'] = null;
- }
- /* 分销模式设置 ---- end ------ */
- /* 经销模式设置 ---- start ------ */
- $mode['is_agent_enable'] = $is_agent_enable;
- if ($is_install_agent) {
- $ag_commission_details = $ag_score_details = [];
- if (!empty($mode['Agent'])) {
- $mode_agent_settings = json_decode($mode['Agent'], true);
- foreach ($mode_agent_settings['commission']['detail'] as $detail) {
- $ag_commission_details[$detail['level']] = $detail;
- }
- foreach ($mode_agent_settings['score']['detail'] as $detail) {
- $ag_score_details[$detail['level']] = $detail;
- }
- }
- $ag_commission_level_settings = $ag_score_level_settings = [];
- foreach ($agent_levels as &$alevel) {
- if (empty($ag_commission_details[$alevel['level']])) {
- $arr = [
- 'level' => $alevel['level'],
- 'level_name' => $alevel['level_name'],
- 'agent_team_prize' => 0,
- 'agent_equal_prize' => 0,
- 'agent_over_prize' => 0,
- 'agent_extra_prize' => 0,
- ];
- $ag_commission_level_settings[] = $arr;
- } else {
- $ag_commission_details[$alevel['level']]['level_name'] = $alevel['level_name'];
- $ag_commission_level_settings[] = $ag_commission_details[$alevel['level']];
- }
- if (empty($ag_score_details[$alevel['level']])) {
- $arr = [
- 'level' => $alevel['level'],
- 'level_name' => $alevel['level_name'],
- 'agent_team_prize' => 0,
- 'agent_equal_prize' => 0,
- 'agent_over_prize' => 0,
- 'agent_extra_prize' => 0,
- ];
- $ag_score_level_settings[] = $arr;
- } else {
- $ag_score_details[$alevel['level']]['level_name'] = $alevel['level_name'];
- $ag_score_level_settings[] = $ag_score_details[$alevel['level']];
- }
- }
- if (!empty($ag_commission_level_settings)) {
- $mode_agent_settings['commission']['detail'] = $ag_commission_level_settings;
- }
- if (!empty($ag_score_level_settings)) {
- $mode_agent_settings['score']['detail'] = $ag_score_level_settings;
- }
- $mode['Agent'] = $mode_agent_settings;
- } else {
- $mode['Agent'] = null;
- }
- /* 经销模式设置 ---- end ------ */
- /* 股东分红模式设置 ---- start ------ */
- if ($is_install_boss) {
- $mode['is_boss_enable'] = 1;
- $bs_details = [];
- if (!empty($mode['Boss'])) {
- $mode_boss_settings = json_decode($mode['Boss'], true);
- if(!empty($mode_boss_settings['detail'])){
- foreach ($mode_boss_settings['detail'] as $detail) {
- $bs_details[$detail['level']] = $detail;
- }
- }
- }
- $boss_levels = AddonsBossLevel::find()
- ->select('level,name as level_name')
- ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])
- ->asArray()
- ->all();
- $bs_level_settings = [];
- foreach ($boss_levels as $blevel) {
- if (empty($bs_details[$blevel['level']])) {
- $arr = [
- 'level' => $blevel['level'],
- 'level_name' => $blevel['level_name'],
- 'prize' => 0,
- 'extra_prize' => 0,
- ];
- $bs_level_settings[] = $arr;
- } else {
- $bs_details[$blevel['level']]['level_name'] = $blevel['level_name'];
- $bs_level_settings[] = $bs_details[$blevel['level']];
- }
- }
- if (!empty($bs_level_settings)) {
- $mode_boss_settings['detail'] = $bs_level_settings;
- }
- $mode['Boss'] = $mode_boss_settings;
- } else {
- $mode['is_boss_enable'] = 0;
- $mode['Boss'] = null;
- }
- /* 股东分红模式设置 ---- end ------ */
- /* 区域分红模式设置 ---- start ------ */
- if ($is_install_area) {
- $mode['is_area_enable'] = 1;
- $area_details = [];
- if (!empty($mode['Area'])) {
- $mode_area_settings = json_decode($mode['Area'], true);
- foreach ($mode_area_settings['detail'] as $detail) {
- $area_details[$detail['level']] = $detail;
- }
- }
- $area_levels = [
- 1 => ['level' => 1, 'level_name' => '省代'],
- 2 => ['level' => 2, 'level_name' => '市代'],
- 3 => ['level' => 3, 'level_name' => '区代'],
- 4 => ['level' => 4, 'level_name' => '镇代'],
- ];
- $area_level_settings = [];
- foreach ($area_levels as $arlevel) {
- if (empty($area_details[$arlevel['level']])) {
- $arr = [
- 'level' => $arlevel['level'],
- 'level_name' => $arlevel['level_name'],
- 'prize' => 0,
- 'equal_prize' => 0,
- ];
- $area_level_settings[] = $arr;
- } else {
- $area_details[$arlevel['level']]['level_name'] = $arlevel['level_name'];
- $area_level_settings[] = $area_details[$arlevel['level']];
- }
- }
- if (!empty($area_level_settings)) {
- $mode_area_settings['detail'] = $area_level_settings;
- }
- $mode['Area'] = $mode_area_settings;
- } else {
- $mode['is_area_enable'] = 0;
- $mode['Area'] = null;
- }
- /* 股东分红模式设置 ---- end ------ */
- // dd($mode);
- $settings = [
- 'basic' => $basic,
- 'cashier' => $cashier,
- 'enter' => $enter,
- 'mode' => $mode,
- ];
- $group = \Yii::$app->request->get('group');
- if (!empty($group)) {
- $settings = $settings[$group] ?? [];
- }
- $settings['h5_domain'] = $h5_domain;
- $settings['mall_sign'] = $mall_sign;
- return $this->success('success', $settings);
- } else {
- $post = \Yii::$app->request->post();
- // dd($post);
- $group = $post['group'] ?? '';
- unset($post['_csrf'], $post['group']);
- if (empty($group)) {
- return $this->error('参数错误');
- }
- $rules = [
- 'basic' => [
- [['o2o_url', 'goods_auth', 'service_fee', 'settle_type', 'platform_ratio', 'risk_management', 'risk_management_ratio', 'settle_scene', 'store_distribution_status', 'store_agent_status', 'store_area_status', 'store_boss_status'], 'required'],
- [['o2o_url'], 'string', 'max' => 255],
- [['goods_auth', 'settle_type', 'risk_management', 'settle_scene', 'store_distribution_status', 'store_agent_status', 'store_area_status', 'store_boss_status'], 'integer'],
- [['service_fee', 'platform_ratio', 'risk_management_ratio'], 'number', 'min' => 0, 'max' => 100, 'message' => '比例取值在 0 ~ 100 之间'],
- ],
- 'cashier' => [
- [['service_fee_ratio', 'member_status', 'members', 'is_distribution', 'distribution_settings', 'is_agent', 'agent_settings'], 'required'],
- [['member_status', 'is_distribution', 'is_agent'], 'integer'],
- [['service_fee_ratio'], 'number', 'min' => 0, 'max' => 100, 'message' => '比例取值在 0 ~ 100 之间'],
- ],
- 'enter' => [
- [['is_enable', 'time_status', 'expired_days', 'store_audit', 'upload_license_image', 'mode'], 'required'],
- [['is_enable', 'time_status', 'expired_days', 'store_audit', 'upload_license_image', 'mode'], 'integer'],
- [['recruit_title', 'recruit_content', 'recruit_btn_text', 'dow_center_agreement'], 'string'],
- ['goods_ids', 'safe'],
- ],
- 'mode' => [
- [['is_enable_mode'], 'required'],
- ['is_enable_mode', 'integer'],
- [['Distribution', 'Agent', 'Boss','Area'], 'safe'],
- ],
- ];
- $res = \Yii::$app->services->validate->validate($post[$group], $rules[$group]);
- if ($res === false) return $this->error(\Yii::$app->services->validate->getErrorMessage());
- if ('basic' == $group) {
- $post[$group]['o2o_url'] = trim($post[$group]['o2o_url']);
- } elseif ('enter' == $group) {
- if (empty($post[$group]['goods_ids'])) {
- $post[$group]['goods_ids'] = '';
- } else {
- $post[$group]['goods_ids'] = json_encode($post[$group]['goods_ids']);
- }
- }
- // dd($post);
- \Yii::$app->services->setting->addons->set($this->mall_id, StoreEnum::ADDONS_NAME, $post);
- return $this->success('保存成功');
- }
- }
- }
|