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('保存成功'); } } }