| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- <?php
- /**
- * Created by PhpStorm.
- * User: win 10
- * Date: 2019/7/16
- * Time: 14:53
- */
- namespace app\frontend\modules\member\controllers;
- use app\common\components\ApiController;
- use app\common\facades\Setting;
- use app\common\models\Member;
- use app\framework\Http\Request;
- use app\frontend\controllers\HomePageController;
- use app\frontend\modules\coupon\controllers\MemberCouponController;
- use Yunshop\Diyform\api\DiyFormController;
- use Yunshop\Designer\models\MemberDesigner;
- use Yunshop\Designer\services\DesignerService;
- use app\frontend\modules\member\models\MemberModel;
- use Yunshop\NearbyStoreGoods\frontend\controllers\DesignerController;
- use Yunshop\Commission\models\Agents;
- use Yunshop\Commission\models\AgentLevel;
- use Yunshop\TeamDividend\admin\models\TeamDividendAgencyModel;
- use Yunshop\TeamDividend\models\TeamDividendLevelModel;
- use app\frontend\modules\member\controllers\MemberController;
- class MemberDesignerController extends ApiController
- {
- public function index(Request $request, $integrated = null)
- {//代码结构有机会一定要重新弄一下。。。
- $res = [];
- $res['status'] = false;
- $res['data'] = [];
- $goods_model = \app\common\modules\shop\ShopConfig::current()->get('goods.models.commodity_classification');
- $goods_model = new $goods_model;
- $set = \Setting::get('plugin.video-share');
- //如果安装了新装修插件并开启插件
- if (app('plugins')->isEnabled('decorate') && \Setting::get('plugin.decorate.is_open') == "1")
- {
- $page = new \Yunshop\Decorate\frotend\IndexController();
- $pageType = \Yunshop::request()->type;
- if ($pageType == '7') {
- $pageType = '3';
- }
- if ($pageType == '8') {
- $pageType = '4';
- }
- if ($pageType == '18') {
- $pageType = '5';
- }
- if (\request()->cps_h5){
- $pageType = '7';
- }
- $page->page_type = $pageType;
- $page->page_scene = '2';
- $page->page_sort = '1';
- if ($pageType == '2')
- {
- $page->page_sort = "2"; //2为会员装修页面
- }
- $decorate = $page->getPage();
- if ($decorate)
- {
- $decorate['datas']=json_decode($decorate['datas'],true);
- $decorate['page_info']=json_decode($decorate['page_info'],true);
- $memberData = $this->getMemberData();
- //收银台属于插件第二个按钮,特殊处理
- $is_cashier = 0;
- $has_cashier = 1;
- if ($memberData['merchants_arr']['cashier']) {
- $is_cashier = 1;
- }
- $is_love_open = app('plugins')->isEnabled('love');
- foreach ($decorate['datas'] as $key => $value)
- {
- //实用工具
- if ($value['component_key'] == 'U_membertop')
- {
- $name = '';
- if ($value['remote_data']['grade_type'] == 2) {
- if (app('plugins')->isEnabled('team-dividend')) {
- $name = $this->getLevelName(2);
- } else {
- $decorate['datas'][$key]['remote_data']['grade_type'] = 1;
- }
- }
- if ($value['remote_data']['grade_type'] == 3) {
- if (app('plugins')->isEnabled('commission')) {
- $name = $this->getLevelName(3);
- } else {
- $decorate['datas'][$key]['remote_data']['grade_type'] = 1;
- }
- }
- if (!$value['remote_data']['grade_type']) {
- $decorate['datas'][$key]['remote_data']['grade_type'] = 1;
- }
- if (MemberModel::isAgent()) {
- $decorate['datas'][$key]['remote_data']['isagent'] = true;
- } else {
- $decorate['datas'][$key]['remote_data']['isagent'] = false;
- }
- $decorate['datas'][$key]['remote_data']['levelname'] = $name;
- }
- //实用工具
- if ($value['component_key'] == 'U_membertool')
- {
- foreach ($value['remote_data']['show_list'] as $pkey => $par)
- {
- if (!in_array($par['name'], $memberData['tools']) || $par['is_open'] == false)
- {
- unset($decorate['datas'][$key]['remote_data']['show_list'][$pkey]);
- }
- }
- $decorate['datas'][$key]['remote_data']['show_list'] = array_values($decorate['datas'][$key]['remote_data']['show_list']);
- }
- // 商家管理
- if ($value['component_key'] == 'U_membermerchant')
- {
- foreach ($value['remote_data']['show_list'] as $pkey => $par)
- {
- if (in_array($par['name'], ['store-cashier', 'hotel', 'supplier', 'micro','package_deliver','ad-serving']))
- {
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['title'] = $memberData['merchants_arr'][$par['name']]['title'];
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['url'] = $memberData['merchants_arr'][$par['name']]['url'];
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url'] = $memberData['merchants_arr'][$par['name']]['mini_url'];
- }
- if ($par['name'] == 'cashier') {
- $has_cashier = 0;
- }
- if ($par['name'] == 'store-cashier')
- {
- $storeCashier = true;
- }
- if ($par['name'] == 'StoreVerification' && app('plugins')->isEnabled('store-project')) {
- $langService = new \Yunshop\StoreProjects\common\services\LangService;
- if ($langService->getLangSetting()['project'] !== '') {
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['title'] = '我的' . $langService->getLangSetting()['project'];
- }
- }
- if (!in_array($par['name'], $memberData['merchants']) || $par['is_open'] == false)
- {
- unset($decorate['datas'][$key]['remote_data']['show_list'][$pkey]);
- }
- }
- if ($is_cashier == 1 && $has_cashier == 1 && $storeCashier === true)
- {
- $memberData['merchants_arr']['cashier']['image'] = $this->handlePluginImage($memberData['merchants_arr']['cashier']['image']);
- // $decorate['datas'][$key]['remote_data']['show_list'][] = $memberData['merchants_arr']['cashier'];
- }
- $decorate['datas'][$key]['remote_data']['show_list'] = array_values($decorate['datas'][$key]['remote_data']['show_list']);
- }
- //营销互动
- if ($value['component_key'] == 'U_membermarket')
- {
- foreach ($value['remote_data']['show_list'] as $pkey => $par)
- {
- if(app('plugins')->isEnabled('video-share') && $par['name'] == 'video-share' && $set['list_style'] == 2)
- { //视频分享url单独处理
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['url'] = 'VideoDetail';
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url'] = '/packageC/video_goods/VideoDetail/VideoDetail';
- }elseif(app('plugins')->isEnabled('video-share') && $par['name'] == 'video-share'){
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['url'] = 'VideoList';
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url'] = '/packageC/video_goods/VideoList/VideoList';
- }
- //如果是客户 && 安装了客户中心插件 && 开启客户中心
- if($par['name'] == 'm-guanxi' && app('plugins')->isEnabled('customer-center') && \Setting::get("plugin.customer-center.is_open")){
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['url'] = 'customerCenterIndex';
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url'] = '/packageF/others/customerCenter/customerCenterIndex/customerCenterIndex';
- }
- if(app('plugins')->isEnabled('customer-development') && $par['name'] == 'customer-development')
- {
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url'] = '/packageH/toker/memberTokerCard/memberTokerCard';
- }
- if (!in_array($par['name'], $memberData['markets']) || $par['is_open'] == false)
- {
- unset($decorate['datas'][$key]['remote_data']['show_list'][$pkey]);
- }else{
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['title'] = empty($memberData['market_arr'][$par['name']]['title'])?$decorate['datas'][$key]['remote_data']['show_list'][$pkey]['title']:$memberData['market_arr'][$par['name']]['title'];
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url'] = empty($memberData['market_arr'][$par['name']]['mini_url'])?$decorate['datas'][$key]['remote_data']['show_list'][$pkey]['mini_url']:$memberData['market_arr'][$par['name']]['mini_url'];
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['url'] = empty($memberData['market_arr'][$par['name']]['url'])?$decorate['datas'][$key]['remote_data']['show_list'][$pkey]['url']:$memberData['market_arr'][$par['name']]['url'];
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['total'] = isset($memberData['market_arr'][$par['name']]['total'])?$memberData['market_arr'][$par['name']]['total']:$decorate['datas'][$key]['remote_data']['show_list'][$pkey]['total'];
- }
- }
- $decorate['datas'][$key]['remote_data']['show_list'] = array_values($decorate['datas'][$key]['remote_data']['show_list']);
- }
- //资产权益
- if ($value['component_key'] == 'U_memberrights')
- {
- foreach ($value['remote_data']['show_list'] as $pkey => $par)
- {
- if (!in_array($par['name'], $memberData['assets']) || $par['is_open'] == false)
- {
- unset($decorate['datas'][$key]['remote_data']['show_list'][$pkey]);
- }else{
- $decorate['datas'][$key]['remote_data']['show_list'][$pkey]['title'] = $memberData['assets_arr'][$par['name']]['title'];
- }
- }
- $decorate['datas'][$key]['remote_data']['show_list'] = array_values($decorate['datas'][$key]['remote_data']['show_list']);
- }
- }
- $memberController = new MemberController;
- $advertisement = $memberController->getFirstLogin('member');
- $decorate['pageinfo']['params']['advertisement'] = $advertisement;
- //给前端判断是否新装修页面
- $decorate['page_plugins']='decorate';
- $res['data'] = $decorate;
- $res['status'] = true;
- }
- }
- if (is_null($integrated)) {
- return $this->successJson('成功', $res);
- } else {
- return show_json(1, $res);
- }
- }
- /**
- * 获取可用模板
- */
- private function getDesigner()
- {
- if (\Yunshop::request()->ingress == 'weChatApplet') {
- $pageType = 9;
- } else {
- $pageType = \Yunshop::request()->type;
- }
- $designer = MemberDesigner::uniacid()
- ->whereRaw('FIND_IN_SET(?,page_type)', [$pageType])
- ->where(['shop_page_type' => MemberDesigner::PAGE_MEMBER_CENTER, 'is_default' => 1])
- ->first();
- return $designer;
- }
- /**
- * @return array
- * 获取可用插件按钮
- */
- private function getMemberData()
- {
- $memberId = \YunShop::app()->getMemberId();
- $arr = (new \app\common\services\member\MemberCenterService())->getMemberData($memberId);
- $tools = ['m-collection', 'm-footprint', 'm-address', 'm-info'];
- $merchants = [];
- //控制二维码显示,由member-data方法搬来
- $member_info = MemberModel::getUserInfos_v2(\YunShop::app()->getMemberId())->first();
- if (empty($member_info)) {
- $mid = Member::getMid();
- $this->jump = true;
- return $this->jumpUrl(\YunShop::request()->type, $mid);
- }
- $member_info = $member_info->toArray();
- $is_agent = $member_info['yz_member']['is_agent'] == 1 && $member_info['yz_member']['status'] == 2 ? true : false;
- if ($is_agent) {
- $markets = ['m-erweima'];
- } else {
- $markets = [];
- }
- $markets = array_merge($markets, ['m-pinglun', 'm-guanxi', 'm-coupon']);
- $assets = [];
- $merchants_arr = [];
- foreach ($arr['tool'] as $v) {
- $tools[] = $v['name'];
- }
- foreach ($arr['merchant'] as $v) {
- $merchants[] = $v['name'];
- $merchants_arr[$v['name']] = $v;
- }
- foreach ($arr['market'] as $v) {
- $markets[] = $v['name'];
- $market_arr[$v['name']] = $v;
- }
- foreach ($arr['asset_equity'] as $v) {
- $assets[] = $v['name'];
- $assets_arr[$v['name']] = $v;
- }
- return [
- 'tools' => $tools,
- 'merchants' => $merchants,
- 'markets' => $markets,
- 'assets' => $assets,
- 'merchants_arr' => $merchants_arr,
- 'assets_arr' => $assets_arr,
- 'market_arr' => $market_arr
- ];
- }
- private function getLevelName($type)
- {
- $name = '';
- if ($type == 2) {
- $agency_model = TeamDividendAgencyModel::getAgencyInfoByUid(\YunShop::app()->getMemberId());
- $name = $agency_model->hasOneLevel->level_name ?: '';
- }
- if ($type == 3) {
- $request = Agents::getLevelByMemberId()
- ->where('member_id', \YunShop::app()->getMemberId())
- ->first();
- if (!$request) {
- return '';
- }
- $request = $request->toArray();
- if ($request['agent_level']) {
- $name = $request['agent_level']['name'];
- } else {
- $name = AgentLevel::getDefaultLevelName();
- }
- }
- return $name;
- }
- private function handlePluginImage($image)
- {
- if (config('app.framework') == 'platform') {
- $dir = '/';
- } else {
- $dir = '/addons/yun_shop/';
- }
- return $dir.'static/yunshop/designer/images/'.$image;
- }
- }
|