From 041f4edd4459fb70417f64edf02c5beb9e9e3516 Mon Sep 17 00:00:00 2001 From: xucong <850806214@qq.com> Date: Wed, 7 May 2025 16:53:50 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=BC=BA=E5=A4=B1=E4=BF=A1=E6=81=AF=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/MenuController.php | 33 +++ app/api/logic/MenuLogic.php | 63 ++++++ app/common/model/Menu_.php | 267 +++++++++++++++++++++++++ app/common/model/SelffetchVerifier.php | 75 +++++++ 4 files changed, 438 insertions(+) create mode 100644 app/api/controller/MenuController.php create mode 100644 app/api/logic/MenuLogic.php create mode 100644 app/common/model/Menu_.php create mode 100644 app/common/model/SelffetchVerifier.php diff --git a/app/api/controller/MenuController.php b/app/api/controller/MenuController.php new file mode 100644 index 0000000..bd23087 --- /dev/null +++ b/app/api/controller/MenuController.php @@ -0,0 +1,33 @@ +request->get('type', 1); + $list = MenuLogic::getMenu($type,$this->user_info); + return $this->success('获取成功', $list); + } +} \ No newline at end of file diff --git a/app/api/logic/MenuLogic.php b/app/api/logic/MenuLogic.php new file mode 100644 index 0000000..94808bd --- /dev/null +++ b/app/api/logic/MenuLogic.php @@ -0,0 +1,63 @@ +where(['decorate_type' => $type, 'del' => 0, 'is_show' => 1]) + ->field('name,image,link_type,link_address') + ->order('sort desc') + ->select(); + + $menu_list = []; + + $is_open = ConfigServer::get('distribution', 'is_open', 1); + + foreach ($list as $key => $menu) { + //未登录时不显示核销订单入口,登陆用户非核销员时不显示核销订单入口 + if (($menu['link_address'] == Menu_::centre_writeoff_order && empty($user_info)) || ($menu['link_address'] == Menu_::centre_writeoff_order && !empty($user_info) && empty(SelffetchVerifier::where(['user_id'=>$user_info['id'],'status'=>1,'del'=>0])->select()->toArray()))) { + continue; + } + + $menu_content = Menu_::getMenuContent($type, $menu['link_address']); + + if ($menu_content && !$is_open && 2 === $menu_content['menu_type']) { + continue; + } + //处理图标 + $menu_list[] = [ + 'name' => $menu['name'], + 'image' => UrlServer::getFileUrl($menu['image']), + 'link' => $menu_content['link'] ?? $menu['link_address'], + 'is_tab' => $menu_content['is_tab'] ?? '', + 'link_type' => $menu_content['link_type'] ?? $menu['link_type'], + ]; + } + return $menu_list; + } +} \ No newline at end of file diff --git a/app/common/model/Menu_.php b/app/common/model/Menu_.php new file mode 100644 index 0000000..3b37835 --- /dev/null +++ b/app/common/model/Menu_.php @@ -0,0 +1,267 @@ + '菜单名称' + * link => 调整链接 + * is_tab => 是否的tab页 + * link_type => 菜单类型:1-跳转;2-web-view;3-按钮(微信小程序可调用客服) + * menu_type => 菜单内容类型:1-正常内容;2-分销菜单 + * + */ + public static function getMenuContent($scene = true,$from = true){ + //首页菜单 + $config1 = [ + self::index_seckill => [ + 'name' => '限时秒杀', + 'link' => '/bundle/pages/goods_seckill/goods_seckill', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_team_activity => [ + 'name' => '拼团活动', + 'link' => '/bundle/pages/goods_combination/goods_combination', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_hot_sell => [ + 'name' => '热销榜单', + 'link' => '/bundle/pages/hot_list/hot_list', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_coupon_list => [ + 'name' => '领券中心', + 'link' => '/pages/user_getcoupon/user_getcoupon', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_sign_in => [ + 'name' => '积分签到', + 'link' => '/bundle/pages/user_sign/user_sign', + 'is_tab' => 0, + 'menu_type' => 1, + ], + self::index_member_centre => [ + 'name' => '会员中心', + 'link' => '/pages/user_vip/user_vip', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_my_collect => [ + 'name' => '我的收藏', + 'link' => '/pages/user_collection/user_collection', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_store_news => [ + 'name' => '商城资讯', + 'link' => '/pages/news_list/news_list', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_store_help => [ + 'name' => '帮助中心', + 'link' => '/pages/news_list/news_list?type=1', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_delivery_address => [ + 'name' => '收货地址', + 'link' => '/pages/user_address/user_address', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_goods_category => [ + 'name' => '商品分类', + 'link' => '/pages/sort/sort', + 'is_tab' => 1, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_luckdraw => [ + 'name' => '积分抽奖', + 'link' => '/bundle/pages/luckly_wheel/luckly_wheel', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_bargain => [ + 'name' => '砍价活动', + 'link' => '/bundle/pages/bargain/bargain', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::index_live_room => [ + 'name' => '商城直播', + 'link' => '/bundle/pages/live_broadcast/live_broadcast', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + ]; + //个人中心菜单 + $config2 = [ + self::centre_my_wallet => [ + 'name' => '我的钱包', + 'link' => '/bundle/pages/user_wallet/user_wallet', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_generalize => [ + 'name' => '分销推广', + 'link' => '/bundle/pages/user_spread/user_spread', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 2, + ], + self::centre_my_coupon => [ + 'name' => '我的优惠券', + 'link' => '/pages/user_coupon/user_coupon', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_level_serve => [ + 'name' => '等级服务', + 'link' => '/pages/user_vip/user_vip', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_store_help => [ + 'name' => '帮助中心', + 'link' => '/pages/news_list/news_list?type=1', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_delivery_address => [ + 'name' => '收货地址', + 'link' => '/pages/user_address/user_address', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_my_collect => [ + 'name' => '我的收藏', + 'link' => '/pages/user_collection/user_collection', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_service => [ + 'name' => '联系客服', + 'link' => '/bundle/pages/contact_offical/contact_offical', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_team_activity => [ + 'name' => '我的拼团', + 'link' => '/bundle/pages/user_group/user_group', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_bargain => [ + 'name' => '砍价记录', + 'link' => '/bundle/pages/bargain_code/bargain_code', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_writeoff_order => [ + 'name' => '核销订单', + 'link' => '/bundle/pages/writeoff_order/writeoff_order', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ], + self::centre_invitation_poster => [ + 'name' => '邀请海报', + 'link' => '/bundle/pages/invite_fans/invite_fans', + 'is_tab' => 0, + 'link_type' => 1, + 'menu_type' => 1, + ] + ]; + $config_name = 'config'.$scene; + $content = $$config_name; + if($scene === true){ + $content = array_merge($config1,$config2); + } + if($from === true){ + return $content; + } + return $content[$from] ?? []; + } + + + +} \ No newline at end of file diff --git a/app/common/model/SelffetchVerifier.php b/app/common/model/SelffetchVerifier.php new file mode 100644 index 0000000..b19131e --- /dev/null +++ b/app/common/model/SelffetchVerifier.php @@ -0,0 +1,75 @@ + '停用', + self::OPEN => '启用', + ]; + if ($status === true) { + return $desc; + } + return $desc[$status] ?? '未知'; + } + + /** + * @notes 核销员状态获取器 + * @param $value + * @param $data + * @return string|string[] + * @author ljj + * @date 2021/8/16 3:35 下午 + */ + public function getStatusDescAttr($value,$data) + { + return self::getVerifierStatus($data['status']); + } + + /** + * @notes 创建时间获取器 + * @param $value + * @param $data + * @return false|string + * @author ljj + * @date 2021/8/16 3:35 下午 + */ + public function getCreateTimeAttr($value,$data) + { + return date('Y-m-d H:i:s',$value); + } +} \ No newline at end of file