request; if ($request->isPost) { $mallId = $this->mall_id; // 获取底部导航栏 $navbar = Yii::$app->services->setting->mall->get($mallId, 'bottom_nav'); $navbar['navs'] = Json::decode($navbar['navs'],true); if ($navbar['navs']) { // 保证首页id实时性,获取装修首页ID $home_page_id = DiyPage::find()->select('id')->where(['mall_id'=>$mallId,'is_home_page'=>StatusEnum::ENABLED,'status'=>StatusEnum::ENABLED])->scalar(); $navbar['navs'][0]['url'] = DiyPage::PAGE_PATH_DIY . '?id=' . $home_page_id; $navbar['navs'][0]['params']['route'] = DiyPage::PAGE_PATH_DIY . '?id=' . $home_page_id; //判断是否安装了门店管家 $install = MallAddons::isInstall($mallId, AddonsEnum::ADDONS_NAME_STORE_STEWARD); if ($install) { $config = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_STORE_STEWARD, 'basic'); if ($config['index_type']) { $index_url = '/pages/AntTechnology/storeIndex/index'; $navbar['navs'][0]['url'] = $index_url; $navbar['navs'][0]['params']['route'] = $index_url; } } } $data['navbar'] = $navbar; $data['service'] = Yii::$app->services->setting->mall->get($mallId, 'service');// 客服地址 // 获取公共配置 $basic = Yii::$app->services->setting->mall->get($mallId, 'basic'); $data['basic'] = $basic; $data['share'] = ['share_title' => $basic['app_share_title'] ?? '', 'share_desc' => $basic['app_share_desc'] ?? '', 'share_pic' => $basic['app_share_pic'] ?? '']; $data['basic']['dollars_symbol'] = !empty($data['basic']['is_enable_dollars_symbol']) ? $data['basic']['dollars_symbol'] : '¥'; // 获取用户配置 $data['user_setting'] = Yii::$app->services->setting->mall->get($mallId, 'user'); $data['user_setting']['allow_app_login'] = $data['user_setting']['allow_app_login'] ?: 1;// 默认开启APP登录 // 获取版权配置 $data['copyright'] = Yii::$app->services->setting->mall->get($mallId, 'copyright'); // 获取sass平台的版权信息 $system = Yii::$app->services->setting->platform->get('system'); $data['copyright']['link_logo'] = $system['logo_url'] ?: ''; $data['copyright']['link_text'] = $system['copyright'] ?: ''; $data['copyright']['link_url'] = $system['copyright_url'] ?: ''; $data['copyright']['link_status'] = $system['copyright_status'] ?: 0; $mall = $this->mall; if(empty($mall['is_show_copyright'])){ $data['copyright']['link_status'] = 0; } $data['domain'] = [ 'h5_url' => $system['h5_url'] ?: '', 'api_url' => $system['api_url'] ?: '', ]; // 公共文字返回 $data['global_text'] = [ 'balance_name' => Yii::$app->services->setting->mall->get($mallId, 'balance.balance_name') ?? '余额', 'score_name' => Yii::$app->services->setting->mall->get($mallId, 'score.score_name') ?? '积分', ]; // 用户设置 $data['user_setting'] = Yii::$app->services->setting->mall->get($mallId, 'user'); $data['user_setting']['check_sms_code'] = $data['user_setting']['check_sms_code'] ?? 1;// 默认开启验证码注册 // 公众号设置 $data['follow'] = Yii::$app->services->setting->mall->get($mallId, 'follow'); $data['follow']['is_follw'] = 0; // 全局字体颜色 $data['global_text_color'] = Yii::$app->services->setting->mall->get($mallId, 'decorate_setting.global_text_color'); $data['global_goods_need'] = Yii::$app->services->setting->mall->get($mallId, 'decorate_setting.global_goods_need'); $balance_pay_setting = Yii::$app->services->setting->mall->get($mallId, 'pay.balance'); $balance_pay_setting = $balance_pay_setting ? json_decode($balance_pay_setting,'true') : []; $balance_pay_setting['is_setting_pay_password'] = 0; // 用户已登录 if (!empty($this->user)) { if($this->user->transaction_password) $balance_pay_setting['is_setting_pay_password'] = 1; // 是否关注过公众号 $follow = UserActionRecord::find()->select('follow')->where(['user_id' => $this->user_id])->scalar(); $data['follow']['is_follw'] = $follow == 1 ? 1 : 0; } $data['balance_pay_setting'] = $balance_pay_setting; // 获取商城有效的插件 $valid_addons = MallAddons::getValidAddons($this->mall_id); if (in_array('AiCustomerService', $valid_addons) && $this->user_id) { $data['ai_customer_service']['show_channel'] = (new SettingService(['mall_id' => $this->mall_id]))->getShowChannel(); } if(in_array(AddonsEnum::ADDONS_NAME_STORE, $valid_addons)){ $basic = \Yii::$app->services->setting->addons->get($this->mall_id, AddonsEnum::ADDONS_NAME_STORE, 'basic'); $data['is_show_location_store'] = $basic['is_show_location_store'] ?? 0; $data['store']['is_enable_dollars_symbol'] = $basic['is_enable_dollars_symbol']; $data['store']['dollars_symbol'] = !empty($basic['is_enable_dollars_symbol']) ? $basic['dollars_symbol'] : '¥'; } $data['valid_addons'] = $valid_addons; $relation_setting = \Yii::$app->services->setting->mall->get($mallId, 'user_relation_setting.relation_setting'); if (!empty($relation_setting)) $relation_setting = json_decode($relation_setting, true); $data['become_child_way'] = $relation_setting['become_child_way']??1; $data['cat'] = Yii::$app->services->setting->mall->get($mallId, 'cat'); $data['mall_name'] = $this->mall['name']; $data['pay_success_page'] = Yii::$app->services->setting->mall->get($this->mall_id,'order.pay_after_link');// 支付成功后跳转的地址 $data['is_bind_popups'] = UserPartitionRelationship::getIsNeedPopups($this->mall_id, $this->user_id ?? 0); $order_nav_options = [ ['name' => '商城订单', 'type' => 'default', 'url' => '/plugins/pages/order/list?tabIndex=0', 'open_type' => 'navigate'] ]; if(in_array(AddonsEnum::ADDONS_NAME_RESERVATION_SERVICE, $valid_addons) || in_array(AddonsEnum::ADDONS_NAME_HOME_MAKING, $valid_addons)) $order_nav_options[] = ['name' => '服务订单', 'type' => AddonsEnum::ADDONS_NAME_HOME_MAKING, 'url' => '/plugins4/Housekeeping/service_order/list?tabIndex=0', 'open_type' => 'navigate']; if(in_array(AddonsEnum::ADDONS_NAME_BAI_MI_MOVIE, $valid_addons)) $order_nav_options[] = ['name' => '电影订单', 'type' => AddonsEnum::ADDONS_NAME_BAI_MI_MOVIE, 'url' => '/plugins2/Movie/order/list?tabIndex=0', 'open_type' => 'navigate']; if(in_array(AddonsEnum::ADDONS_NAME_CAKE, $valid_addons)) $order_nav_options[] = ['name' => '蛋糕订单', 'type' => AddonsEnum::ADDONS_NAME_CAKE, 'url' => '/plugins2/Cake/order/list?tabIndex=0', 'open_type' => 'navigate']; if(in_array(AddonsEnum::ADDONS_QIAN_XI_SUPPLY_CHAIN, $valid_addons)) $order_nav_options[] = ['name' => '权益商品订单', 'type' => AddonsEnum::ADDONS_QIAN_XI_SUPPLY_CHAIN, 'url' => '/plugins5/QianxiSupplyChain/orderList?tabIndex=0', 'open_type' => 'navigate']; if(in_array(AddonsEnum::ADDONS_SCORE_GAME, $valid_addons)) $order_nav_options[] = ['name' => '实体店订单', 'type' => AddonsEnum::ADDONS_SCORE_GAME, 'url' => '/customAddons/ScoreGame/physicalStore/orderList', 'open_type' => 'navigate']; if(in_array(AddonsEnum::ADDONS_NAME_LAO_DA_FU, $valid_addons)) { $order_nav_options[] = ['name' => '看诊订单', 'type' => AddonsEnum::ADDONS_NAME_LAO_DA_FU, 'url' => '/customDesigns/LaoDaFu/clientSide/visitOrderList', 'open_type' => 'navigate']; $order_nav_options[] = ['name' => '我的挂号', 'type' => AddonsEnum::ADDONS_NAME_LAO_DA_FU, 'url' => '/customDesigns/LaoDaFu/clientSide/registerOrderList', 'open_type' => 'navigate']; } // 获取插件配置 $event = new GetAdsCfgEvent($this->mall_id); Yii::$app->services->events->dispatch($event, ['user' => $this->user]); $data['addons_config'] = $event->getConfig(); // 订单设置 $order_setting = Yii::$app->services->setting->mall->get($this->mall_id, 'order'); $data['order'] = [ 'is_show_positioning' => $order_setting['is_show_positioning'] ?? 1, // 显示定位按钮 ]; // 版本号 $varsion = $request->post('version', 0); $varsion && $data['is_review'] = (new MallService(['mall_id' => $this->mall_id]))->getVersionReview($varsion); //获取总商城地图配置 $map_setting = Yii::$app->services->setting->platform->get('map'); $data['real_time_map'] = $map_setting['is_location'] ? $map_setting['is_location'] : 0; $data['order_nav_options'] = $order_nav_options; // 登录时是否填写昵称 $data['basic']['is_write_name'] = !isset($data['basic']['is_write_name']) ? 0 : $data['basic']['is_write_name']; $this->success('获取成功', $data); } } /** * 获取图片base64数据接口 * @Author: lun * @DateTime: 2021/11/12 0012 14:07 * @Copyright: copyright (c) 2021 广东七件事集团 */ public function actionGetImgBase64() { $url = Yii::$app->request->get('url',''); // $this->redirect($url); if(!empty($url)){ $option=array('ssl'=>array('verify_peer' => false,'verify_peer_name' => false)); $image = file_get_contents($url,false,stream_context_create($option)); header('Content-type: image/jpg'); echo $image; exit; } } /** * 用户买点接口 * @Author: lun * @DateTime: 2021/11/30 0030 14:20 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionBuyingPoint() { $retuest = Yii::$app->request; if ($retuest->isPost) { try { $params = Yii::$app->request->post('form'); $data = [ 'mall_id' => $this->mall_id, 'user_id' => $this->user_id, 'card_id' => $this->card_id, 'list' => $params, ]; Yii::$app->services->rabbitMq->push(RabbitMqEnum::EXCHANGE_TASK, RabbitMqEnum::TASK_QUEUE, $data, BuyPointListener::class, 'async_handle'); $this->success('保存成功'); } catch (\Exception $e) { $this->error('买点保存失败,mag=' . $e->getMessage()); } } } /** * 发送验证码-公共方法 * @Author: lun * @DateTime: 2023/5/12 0012 17:27 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void * @throws \Overtrue\EasySms\Exceptions\NoGatewayAvailableException */ public function actionSmsCode() { $retuest = Yii::$app->request; if ($retuest->isPost) { $params = $retuest->post(); $res = Yii::$app->services->validate->validate($params, [ [['mobile'], 'required', 'message' => '请输入手机号码'], [['mobile','area_code'], 'integer'], [['sms_type'], 'string'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $area_code = '';// 初始化区号 $gateways = 'domestic';// 默认国内短信 // 检测是登录并且区号不为空则使用国际短信 if (!empty($this->user) && !empty($this->user->area_code)) { if ($this->user->area_code != 86) $gateways = 'international'; $area_code = $this->user->area_code; } // 判断是否有区号 if (!empty($params['area_code']) && $params['area_code'] != 86) { $gateways = 'international'; $area_code = $params['area_code']; } $params['sms_type'] = $params['sms_type'] ?: ''; $sms = new Sms($this->mall_id, $gateways); try { if ($sms->sendCaptcha($params['mobile'], $area_code,$params['sms_type']) === false) return $this->error('发送失败'); }catch (Exception $e){ return $this->error($e->getMessage()); } return $this->success('发送成功'); } } /** * 验证码校验 * * @return void */ public function actionCheckSmsCode() { $retuest = Yii::$app->request; if ($retuest->isPost) { $params = $retuest->post(); $res = Yii::$app->services->validate->validate($params, [ [['mobile'], 'required', 'message' => '请输入手机号码'], [['code'], 'required', 'message' => '请输入验证码'], [['mobile', 'area_code'], 'integer'], [['sms_type', 'code'], 'string'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $gateways = 'domestic';// 默认国内短信 // 检测是登录并且区号不为空则使用国际短信 if (!empty($this->user) && !empty($this->user->area_code)) { if ($this->user->area_code != 86) $gateways = 'international'; } // 判断是否有区号 if (!empty($params['area_code']) && $params['area_code'] != 86) { $gateways = 'international'; } $code = $params['code']; $sms = new Sms($this->mall_id, $gateways); try { if ($sms->checkValidateCode($params['mobile'], $code, $params['sms_type']) === false) return $this->error('验证失败'); return $this->success('验证成功'); } catch (Exception $e) { return $this->error($e->getMessage()); } } } public function actionGetUserConfig(){ $user_setting = Yii::$app->services->setting->mall->get($this->mall_id, 'user'); $data['is_manual_verification_code'] = $user_setting['is_manual_verification_code'] ?: 0; return $this->success('成功', $data); } public function actionGetDownloadUrl(){ try{ $channel = Yii::$app->services->setting->mall->get($this->mall_id, 'channel'); $conf = $channel['app'] ?? []; if ($conf) { $conf = json_decode($conf, true); } $app['ios_download_url'] = $conf['ios_download_url'] ?? ''; $app['android_download_url'] = $conf['android_download_url'] ?? ''; return $this->success('请求成功', compact('app')); }catch(Exception $e){ return $this->error($e->getMessage()); } } /** * 获取配置的文本信息通用接口 * @Author:lun * @Date:2023-12-22 11:37 * @Copyright:copyright(c)2023 广东七件事集团 * @return mixed|void|null */ public function actionGetSettingValue() { $request = Yii::$app->request; if ($request->isGet) { $params = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($params, [ [['group','keyword'], 'required'] ]); $group = $params['group']; $keyword = $params['keyword']; if ($res === false) throw new \Exception(Yii::$app->services->validate->getErrorMessage()); $data = Yii::$app->services->setting->mall->get($this->mall_id, "{$group}.{$keyword}"); return $this->success('获取成功',$data ?? ''); } } public function actionCheckAppVersion() { if (Yii::$app->request->isGet) { $params = Yii::$app->request->get(); $res = Yii::$app->services->validate->validate($params, [ [['app_type'], 'required'], [['app_type'], 'string'], ]); if ($res === false) throw new \Exception(Yii::$app->services->validate->getErrorMessage()); // $version_num = StringHelper::getVersionNum($params['version']); $data = AppVersion::find()->where(['app_type' => $params['app_type'], 'mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED])->orderBy('id desc')->asArray()->one(); // var_dump($version_num < (int) $data['version_num']);exit; return $this->success('获取成功',['version' => $data['version'], 'version_num' => $data['version_num'], 'app_type' => $data['app_type'], 'download_url' => $data['download_url'], 'describe' => $data['content'], 'edition_force' => $data['edition_force'], 'package_type' => $data['package_type']]); // return $this->success('当前app为最新版本'); } } /** * 地址解析(由文字地址到经纬度的转换能力,并同时提供结构化的省市区地址信息) * @Author: lun * @DateTime: 2023/7/20 0020 11:18 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void */ public function actionGeocoder() { $request = Yii::$app->request; if ($request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['address'], 'required', 'message' => '请输入查询的详细地址'], [['address'], 'string'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $config = Yii::$app->services->setting->platform->get('map'); if ($config['is_location'] == 0) { return $this->success('获取成功', []); } $data = QqMapHelper::Geocoder($params['address']); if ($data['status'] != 0) return $this->error($data['message']); return $this->success('获取成功', $data['result']); } } /** * 根据经纬度解析地址 * @Author: lun * @DateTime: 2023/7/21 0021 14:33 * @Copyright: copyright (c) 2021 广东七件事集团 * @return mixed|void * */ public function actionReverseGeocoder() { $request = Yii::$app->request; if ($request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['longitude','latitude'], 'required', 'message' => '需要解析的经纬度不能为空'], [['longitude','latitude'], 'safe'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $config = Yii::$app->services->setting->platform->get('map'); if ($config['is_location'] == 0) { return $this->success('获取成功', []); } $data = QqMapHelper::ReverseGeocoder($params['latitude'], $params['longitude']); if ($data['status'] != 0) return $this->error($data['message']); return $this->success('获取成功', $data['result']); } } /** * 根据当前经纬度获取附近的地点 * @Author:lun * @Date:2025-01-15 09:22 * @Copyright:copyright(c)2024 广东七件事集团 * @return mixed|void|null */ public function actionGetNear() { $request = Yii::$app->request; if ($request->isPost) { $params = Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['longitude','latitude'], 'required', 'message' => '需要解析的经纬度不能为空'], [['longitude','latitude'], 'safe'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $data = QqMapHelper::getNearPlace($params['latitude'], $params['longitude']); return $this->success('获取成功', $data); } } }