diff --git a/app/pay/controller/PayController.php b/app/pay/controller/PayController.php index abb6710..f9d989b 100644 --- a/app/pay/controller/PayController.php +++ b/app/pay/controller/PayController.php @@ -1,10 +1,10 @@ <?php namespace app\pay\controller; -use cmf\controller\HomeBaseController; +use cmf\controller\PayBaseController; use app\integral\model\IntegralModel; use think\Db; -class PayController extends HomeBaseController +class PayController extends PayBaseController { //提交订单 diff --git a/simplewind/cmf/controller/HomeBaseController.php b/simplewind/cmf/controller/HomeBaseController.php index 0ca8a2b..e9c2b87 100644 --- a/simplewind/cmf/controller/HomeBaseController.php +++ b/simplewind/cmf/controller/HomeBaseController.php @@ -56,7 +56,7 @@ class HomeBaseController extends BaseController } } }else { -// $this->error('请从微信浏览器打开'); + $this->error('请从微信浏览器打开'); } diff --git a/simplewind/cmf/controller/PayBaseController.php b/simplewind/cmf/controller/PayBaseController.php new file mode 100644 index 0000000..3ca4e91 --- /dev/null +++ b/simplewind/cmf/controller/PayBaseController.php @@ -0,0 +1,241 @@ +<?php +// +---------------------------------------------------------------------- +// | bronet [ 以客户为中心 以奋斗者为本 ] +// +---------------------------------------------------------------------- +// | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved. +// +---------------------------------------------------------------------- +// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) +// +--------------------------------------------------------------------- +// | Author: Dean <zxxjjforever@163.com> +// +---------------------------------------------------------------------- +namespace cmf\controller; + +use app\user\model\UserModel; +use think\Db; +use app\admin\model\ThemeModel; +use think\View; + +class PayBaseController extends BaseController +{ + + public function _initialize() + { + + parent::_initialize(); // TODO: Change the autogenerated stub + if (cmf_is_wechat()) { + if (empty(session('user.id'))) { + require_once EXTEND_PATH . '/WeChatCommon.php'; + $wx = new \WeChatCommon(); + if (request()->param('code') == NULL) { + $wx->code(); + } else { + $code = request()->param('code'); + $info = $wx->getOpenid($code); + if(Db::name('user')->where(['openid'=>$info['openid']])->count() == 0) { + //注册新用户 + //拉去用户信息 + $return = $wx->getUserInfo($info); + $data = [ + 'user_type' => 2, + 'create_time' => time(), + 'user_nickname' => $return['nickname'], + 'sex' => $return['sex'], + 'avatar' => $return['headimgurl'], + 'openid' => $info['openid'] + ]; + if(Db::name('user')->insert($data)) { + $userId = Db::name('user')->getLastInsID(); + session('user.id', $userId); + session('user.openid', $info['openid']); + } + }else { + $userId = Db::name('user')->where(['openid'=>$info['openid']])->value('id'); + session('user.id', $userId); + session('user.openid', $info['openid']); + } + } + } + }else { +// $this->error('请从微信浏览器打开'); + } + + + + // 监听home_init + hook('home_init'); + parent::_initialize(); + $siteInfo = cmf_get_site_info(); + View::share('site_info', $siteInfo); + } + + public function _initializeView() + { + $cmfThemePath = config('cmf_theme_path'); + $cmfDefaultTheme = cmf_get_current_theme(); + + $themePath = "{$cmfThemePath}{$cmfDefaultTheme}"; + + $root = cmf_get_root(); + //使cdn设置生效 + $cdnSettings = cmf_get_option('cdn_settings'); + if (empty($cdnSettings['cdn_static_root'])) { + $viewReplaceStr = [ + '__ROOT__' => $root, + '__TMPL__' => "{$root}/{$themePath}", + '__STATIC__' => "{$root}/static", + '__WEB_ROOT__' => $root + ]; + } else { + $cdnStaticRoot = rtrim($cdnSettings['cdn_static_root'], '/'); + $viewReplaceStr = [ + '__ROOT__' => $root, + '__TMPL__' => "{$cdnStaticRoot}/{$themePath}", + '__STATIC__' => "{$cdnStaticRoot}/static", + '__WEB_ROOT__' => $cdnStaticRoot + ]; + } + + $viewReplaceStr = array_merge(config('view_replace_str'), $viewReplaceStr); + config('template.view_base', "{$themePath}/"); + config('view_replace_str', $viewReplaceStr); + + $themeErrorTmpl = "{$themePath}/error.html"; + if (file_exists_case($themeErrorTmpl)) { + config('dispatch_error_tmpl', $themeErrorTmpl); + } + + $themeSuccessTmpl = "{$themePath}/success.html"; + if (file_exists_case($themeSuccessTmpl)) { + config('dispatch_success_tmpl', $themeSuccessTmpl); + } + + + } + + /** + * 加载模板输出 + * @access protected + * @param string $template 模板文件名 + * @param array $vars 模板输出变量 + * @param array $replace 模板替换 + * @param array $config 模板参数 + * @return mixed + */ + protected function fetch($template = '', $vars = [], $replace = [], $config = []) + { + $template = $this->parseTemplate($template); + $more = $this->getThemeFileMore($template); + $this->assign('theme_vars', $more['vars']); + $this->assign('theme_widgets', $more['widgets']); + return parent::fetch($template, $vars, $replace, $config); + } + + /** + * 自动定位模板文件 + * @access private + * @param string $template 模板文件规则 + * @return string + */ + private function parseTemplate($template) + { + // 分析模板文件规则 + $request = $this->request; + // 获取视图根目录 + if (strpos($template, '@')) { + // 跨模块调用 + list($module, $template) = explode('@', $template); + } + + $viewBase = config('template.view_base'); + + if ($viewBase) { + // 基础视图目录 + $module = isset($module) ? $module : $request->module(); + $path = $viewBase . ($module ? $module . DS : ''); + } else { + $path = isset($module) ? APP_PATH . $module . DS . 'view' . DS : config('template.view_path'); + } + + $depr = config('template.view_depr'); + if (0 !== strpos($template, '/')) { + $template = str_replace(['/', ':'], $depr, $template); + $controller = cmf_parse_name($request->controller()); + if ($controller) { + if ('' == $template) { + // 如果模板文件名为空 按照默认规则定位 + $template = str_replace('.', DS, $controller) . $depr . $request->action(); + } elseif (false === strpos($template, $depr)) { + $template = str_replace('.', DS, $controller) . $depr . $template; + } + } + } else { + $template = str_replace(['/', ':'], $depr, substr($template, 1)); + } + return $path . ltrim($template, '/') . '.' . ltrim(config('template.view_suffix'), '.'); + } + + /** + * 获取模板文件变量 + * @param string $file + * @param string $theme + * @return array + */ + private function getThemeFileMore($file, $theme = "") + { + + //TODO 增加缓存 + $theme = empty($theme) ? cmf_get_current_theme() : $theme; + + // 调试模式下自动更新模板 + if (APP_DEBUG) { + $themeModel = new ThemeModel(); + $themeModel->updateTheme($theme); + } + + $themePath = config('cmf_theme_path'); + $file = str_replace('\\', '/', $file); + $file = str_replace('//', '/', $file); + $file = str_replace(['.html', '.php', $themePath . $theme . "/"], '', $file); + + $files = Db::name('theme_file')->field('more')->where(['theme' => $theme])->where(function ($query) use ($file) { + $query->where(['is_public' => 1])->whereOr(['file' => $file]); + })->select(); + + $vars = []; + $widgets = []; + foreach ($files as $file) { + $oldMore = json_decode($file['more'], true); + if (!empty($oldMore['vars'])) { + foreach ($oldMore['vars'] as $varName => $var) { + $vars[$varName] = $var['value']; + } + } + + if (!empty($oldMore['widgets'])) { + foreach ($oldMore['widgets'] as $widgetName => $widget) { + + $widgetVars = []; + if (!empty($widget['vars'])) { + foreach ($widget['vars'] as $varName => $var) { + $widgetVars[$varName] = $var['value']; + } + } + + $widget['vars'] = $widgetVars; + $widgets[$widgetName] = $widget; + } + } + } + + return ['vars' => $vars, 'widgets' => $widgets]; + } + + public function checkUserLogin() + { + $userId = cmf_get_current_user_id(); + if (empty($userId)) { + $this->error("用户尚未登录", url("user/login/index")); + } + } + +} \ No newline at end of file