bztang-admin/app/common/middleware/BasicInformation.php

415 lines
18 KiB
PHP

<?php
/**
* Created by PhpStorm.
* User: dingran
* Date: 2019/2/19
* Time: 上午11:53
*/
namespace app\common\middleware;
use app\backend\modules\goods\models\GoodsSetting;
use app\backend\modules\member\models\MemberRelation;
use app\common\events\CommonExtraEvent;
use app\common\facades\Setting;
use app\common\helpers\Cache;
use app\common\helpers\Client;
use app\common\services\popularize\PortType;
use app\common\traits\JsonTrait;
use app\frontend\controllers\HomePageController;
use app\frontend\models\Member;
use app\frontend\modules\finance\controllers\PopularizePageShowController;
use app\frontend\modules\home\services\ShopPublicDataService;
use app\frontend\modules\member\controllers\MemberController;
use app\common\modules\shop\PluginsConfig;
use app\frontend\modules\member\controllers\ServiceController;
use Yunshop\Decorate\models\DecorateFooterModel;
use Yunshop\Decorate\models\DecorateModel;
use Yunshop\Love\Common\Services\SetService;
use Yunshop\NewMemberPrize\frontend\controllers\NewMemberPrizeController;
use app\common\facades\RichText;
class BasicInformation
{
use JsonTrait;
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, \Closure $next)
{
$response = $next($request);
if (!$response) {
return $response;
}
$content = $response->getContent();
$response->setContent($this->handleContent($request, $content));
return $response;
}
private function handleContent($request, $content)
{
app('db')->cacheSelect = false;
$content = json_decode($content, true);
if (request()->basic_info == 1) {
$content = array_merge($content, ['basic_info' => $this->getBasicInfo($request, $content)]);
}
if (request()->validate_page == 1) {
$content = array_merge($content, $this->getValidatePage($request));
}
return json_encode($content);
}
private function getBasicInfo($request, $content = [])
{
$consolidated_payment = \Setting::get('shop.trade')['consolidated_payment'];
return [
'popularize_page' => (new PopularizePageShowController())->index($request, true)['json'],
'integral' => Setting::get('integral.plugin_name') ?: '消费积分',
'ecological_point' => Setting::get('plugin.ecological_point.plugin_name') ?: '供销积分',
'love' => Setting::get('love.name') ?: '爱心值',
'lang' => $this->getLangSetting(),
'globalParameter' => $this->globalParameter(),
'plugin_setting' => PluginsConfig::current()->get(),
'consolidated_payment' => is_null($consolidated_payment) ? 1 : $consolidated_payment,
'home' => $this->getPublicData(),
'thumb_parameter' => $this->getThumbParameter(),
'upload_max_file_size' => $this->getFileSize(),
'theme_color' => Setting::get('shop.shop')['theme_color'] ?: '#fe9a51',
'price_difference_pool_name' => Setting::get('plugin.price_difference_pool.plugin_name') ?: '资金池',
'price_difference_pool' => app('plugins')->isEnabled('price-difference-pool') && Setting::get("plugin.price_difference_pool.plugin_switch"),
'customer_center' => app('plugins')->isEnabled('customer-center') && Setting::get("plugin.customer-center.is_open"),
];
}
private function getValidatePage($request)
{
return ['validate_page' => (new MemberController())->isValidatePage($request, true)['json']];
}
private function getFileSize()
{
$file_size = 0;
$file_size_str = ini_get('upload_max_filesize');
if (strexists($file_size_str, 'M')) {
$file_size = strstr($file_size_str, 'M', true) * 1024 * 1024;
}
if (strexists($file_size_str, 'G')) {
$file_size = strstr($file_size_str, 'G', true) * 1024 * 1024 * 1024;
}
if (strexists($file_size_str, 'T')) {
$file_size = strstr($file_size_str, 'T', true) * 1024 * 1024 * 1024 * 1024;
}
return $file_size;
}
private function getPublicData()
{
$uid = \YunShop::app()->getMemberId();
if (!Cache::has("public_setting")) {
//商城设置
$shop_setting = Setting::get('shop.shop');
$member_set = Setting::get('shop.member');
$sms_set = Setting::get('shop.sms');
$goodsSet = GoodsSetting::uniacid()->select('scribing_show')->first();
$mailInfo = [
'logo' => replace_yunshop(yz_tomedia($shop_setting['logo'])),
'signimg' => replace_yunshop(yz_tomedia($shop_setting['signimg'])),
'agent' => MemberRelation::getSetInfo()->value('status') ? true : false,
'diycode' => html_entity_decode($shop_setting['diycode']),
'is_bind_mobile' => $member_set['is_bind_mobile'], //是否绑定手机号
'bind_mobile_page' => $member_set['bind_mobile_page'] ?: [], //指定绑定手机号的页面
'service_mobile' => Setting::get('shop.contact')['phone'], //商城设置客服电话
'scribing_show' => $goodsSet['scribing_show'] ? 1 : 0, //原价划线显示
];
//客服设置
$mailInfo = array_merge($shop_setting, $mailInfo, (new ServiceController())->index());
$setting['mailInfo'] = $mailInfo;
$setting['mobile_login_code'] = $member_set['mobile_login_code'];
$setting['register'] = Setting::get('shop.register');
//增加验证码功能
$setting['captcha_status'] = $sms_set['status'];
$setting['country_code'] = $sms_set['country_code'];
$setting['plugin']['goods_show'] = [];
if (app('plugins')->isEnabled('goods-show')) {
$setting['plugin']['goods_show'] = [
'goods_group' => Setting::get('plugin.goods_show.goods_group'),
'around_goods' => Setting::get('plugin.goods_show.around_goods'),
];
}
if (app('plugins')->isEnabled('love')) {
$setting['love_name'] = SetService::getLoveSet()['name'];//获取爱心值基础设置
}
Cache::put("public_setting", $setting, 3600);
} else {
$setting = Cache::get("public_setting");
}
//强制绑定手机号
$is_bind_mobile = 0;
if ($uid) {
$is_bind_mobile = Member::current()->mobile ? 0 : $setting['mailInfo']['is_bind_mobile'];
$result['memberinfo']['uid'] = Member::current()->uid;
//用户爱心值
if (app('plugins')->isEnabled('love')) {
$love_usable = \Yunshop\Love\Common\Models\MemberLove::select('usable')->where(
'member_id',
$uid
)->value('usable');
}
$result['memberinfo']['usable'] = empty($love_usable) ? 0 : $love_usable;
}
$setting['mailInfo']['is_bind_mobile'] = (int)$is_bind_mobile;
$result['mailInfo'] = $setting['mailInfo'];
//验证码
if (extension_loaded('fileinfo') && $setting['captcha_status'] == 1) {
$result['captcha'] = app('captcha')->create('default', true);
$result['captcha']['status'] = 1;
}
$result['system']['mobile_login_code'] = $setting['mobile_login_code'] ? 1 : 0;
$result['system']['country_code'] = $setting['country_code'] ? 1 : 0;
//小程序验证推广按钮是否开启
$result['system']['btn_romotion'] = PortType::popularizeShow(request()->type);
//会员注册设置
$result['register_setting'] = $setting['register'];
//商品展示组件
$result['plugin']['goods_show'] = $setting['plugin']['goods_show'];
$result['plugin']['new_member_prize'] = [];
if (app('plugins')->isEnabled('new-member-prize')) {
$result['plugin']['new_member_prize'] = (new NewMemberPrizeController())->index(request()->type);
}
$result['designer']['love_name'] = $setting['love_name'];
$public_data_service = ShopPublicDataService::getInstance();
$item = [
'ViewSet' => $public_data_service->getViewSet(),
'is_decorate' => $public_data_service->is_decorate,
];
$result['item'] = array_merge($item, $public_data_service->getFootMenus());
//会员注册设置
$register_set = Setting::get('shop.register');
$shop = Setting::get('shop.shop');
if ($shop['is_agreement']) {
$register_set['new_agreement'] = RichText::get('shop.agreement');
$register_set['agreement_name'] = $shop['agreement_name'];
}
$result['register_setting'] = $register_set;
return $result;
}
/**
* 获取语言设置
* @return array|mixed
*/
private function getLangSetting()
{
if (!Cache::has("lang_setting")) {
$widgets = \app\common\modules\widget\Widget::current()->getItem('lang');
$langData = Setting::get('shop.lang')['zh_cn'];
$data = [];
foreach ($widgets as $widget) {
foreach ((new $widget['class'])->getData() as $tab => $list) {
$set_data = $langData[$tab];
$widget_data = [];
foreach ($list['data'] as $value) {
$widget_data[$value['key']] = $set_data[$value['key']] ?: $value['default'];
}
$data[$tab] = $widget_data;
}
}
$data['plugin_language'] = \app\common\services\LangService::getCurrentLang();
Cache::put("lang_setting", $data, 3600);
} else {
$data = Cache::get("lang_setting");
}
return $data;
}
//该接口为全局需要的参数,别给我删了
private function globalParameter()
{
//配送站
if (app('plugins')->isEnabled('delivery-station')) {
$data['is_open_delivery_station'] = Setting::get('plugin.delivery_station.is_open') ? 1 : 0;
} else {
$data['is_open_delivery_station'] = 0;
}
if (app('plugins')->isEnabled('photo-order')) {
$set = Setting::get('plugin.photo-order');
if ($set['is_open'] == 1) {
$data['is_open_photo_order'] = 1;
$data['photo_order_min_pohot'] = $set['min_pohot'];
$data['photo_order_max_pohot'] = $set['max_pohot'];
} else {
$data['is_open_photo_order'] = 0;
}
} else {
$data['is_open_photo_order'] = 0;
}
//会员订单配送方式为司机配送(7), 参数会在会员中心订单列表、供应商前端订单、门店前端订单用到
$data['delivery_driver_open'] = \app\common\services\plugin\DeliveryDriverSet::whetherEnabled();
// 自提点
if (app('plugins')->isEnabled('package-deliver')) {
$set = Setting::get('plugin.package_deliver');
$data['is_open_package_deliver'] = $set['is_package'];
}
// 广告市场
if (app('plugins')->isEnabled('advert-market') && app('plugins')->isEnabled('store-cashier')) {
$set = Setting::get('plugin.advert-market');
$data['is_open_advert_market'] = $set['is_open'];
}
$data['assemble_name'] = '安装服务';
$data['assemble_worker_name'] = '安装师傅';
if (app('plugins')->isEnabled('assemble')) {
$data['assemble_name'] = Setting::get('plugin.assemble.assemble_name') ?: '安装服务';
$data['assemble_worker_name'] = Setting::get('plugin.assemble.assemble_worker_name') ?: '安装师傅';
}
if (app('plugins')->isEnabled('consume-red-packet')) {
$data['consume_red_packet_status'] = 1;
} else {
$data['consume_red_packet_status'] = 0;
}
if (app('plugins')->isEnabled('shop-esign')) {
$data['is_open_shop_esign'] = 1;
} else {
$data['is_open_shop_esign'] = 0;
}
$data['is_open_shop_esign_v2'] = 0;
if (app('plugins')->isEnabled('shop-esign-v2')) {
$data['is_open_shop_esign_v2'] = 1;
}
//汇聚支付
if (app('plugins')->isEnabled('converge_pay') && Setting::get('plugin.convergePay_set.wechat') == true) {
$data['initial_id'] = Setting::get('plugin.convergePay_set.wechat.initial_id');//初始id
}
$data['gh_id'] = '';
if (app('plugins')->isEnabled('min-app') && ($gh_id = Setting::get('plugin.min_app.min_original_id'))) {
$data['gh_id'] = $gh_id;
}
$ios_virtual_pay = 0;
if (Client::osType() == 1 && Setting::get('shop.pay.ios_virtual_pay') == 1) {
$ios_virtual_pay = 1;
}
$data['ios_virtual_pay'] = $ios_virtual_pay;
//注册,下单定位
$data['order_locate'] = false;
$data['register_locate'] = false;
$data['bind_mobile_locate'] = false;
//会员价
$data['vip_show'] = Setting::get('shop.member')['vip_price'] == 1 ? true : false;
if (app('plugins')->isEnabled('registration_area')) {
$area_set = array_pluck(Setting::getAllByGroup('registration-area')->toArray(), 'value', 'key');
if ($area_set['is_open'] == 1) {
$data['order_locate'] = true;
$data['register_locate'] = true;
$data['bind_mobile_locate'] = true;
}
}
//招商专员插件是否开启 true 开启 false 关闭
if (app('plugins')->isEnabled('invest-people')) {
$data['invest_people_name'] = \Yunshop\InvestPeople\services\InvestMemberView::pluginName();
$data['invest_people_open'] = !Setting::get('plugin.invest_people')['open'];
} else {
$data['invest_people_open'] = false;
}
$data['cart_num'] = \app\frontend\models\MemberCart::getCartNum(\YunShop::app()->getMemberId());
//益生系统
if (app('plugins')->isEnabled('ys-system')) {
$data['crm_account_bind'] = \Yunshop\YsSystem\common\AccountBindState::open(\YunShop::app()->getMemberId());
} else {
$data['crm_account_bind'] = 0;
}
//会员团队
if (!is_null(\app\common\modules\shop\ShopConfig::current()->get('team_judge')) && \YunShop::app()->getMemberId(
)) {
$class = array_get(\app\common\modules\shop\ShopConfig::current()->get('team_judge'), 'class');
$function = array_get(\app\common\modules\shop\ShopConfig::current()->get('team_judge'), 'function');
$member_team = $class::$function(\YunShop::app()->getMemberId());
if ($member_team['res']) {
$data['member_team'] = $member_team['notice'];
}
}
//默认地址
if (!is_null(\app\common\modules\shop\ShopConfig::current()->get('default_address_judge'))) {
$class = array_get(\app\common\modules\shop\ShopConfig::current()->get('default_address_judge'), 'class');
$function = array_get(
\app\common\modules\shop\ShopConfig::current()->get('default_address_judge'),
'function'
);
$default_address_judge = $class::$function();
if ($default_address_judge['hide_address']) {
$data['hide_address'] = true;
}
if ($default_address_judge['hide_dispatch']) {
$data['hide_dispatch'] = true;
}
}
$data['coffee_machine_open_state'] = app('plugins')->isEnabled('coffee-machine') && \Yunshop\CoffeeMachine\services\SettingService::getSetting()['open_state'] ? 1 : 0;
$data['hide_total_sales'] = Setting::get('goods.hide_goods_sales') ? 1 : 0;
return $data;
}
private function getThumbParameter()
{
return '';
if (config('app.framework') == 'platform') {
$systemSetting = app('SystemSetting');
if ($remote = $systemSetting->get('remote')) {
$setting[$remote['key']] = unserialize($remote['value']);
}
$upload_type = $setting['remote']['type'];
} else {
global $_W;
//公众号独立配置信息 优先使用公众号独立配置
$uni_setting = app('WqUniSetting')->get()->toArray();
if (!empty($uni_setting['remote']) && iunserializer($uni_setting['remote'])['type'] != 0) {
$setting['remote'] = iunserializer($uni_setting['remote']);
$upload_type = $setting['remote']['type'];
} else {
$setting = $_W['setting'];
$upload_type = $setting['remote']['type'];
}
}
switch ($upload_type) {
case 2:
$parameter = '?x-oss-process=image/resize,mfit,h_350,w_350';
break;
case 4:
$parameter = '?imageView2/2/w/350/h/350';
break;
default:
$parameter = '';
}
return $parameter;
}
}