Common.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <?php
  2. namespace addons\cms\controller\api;
  3. use addons\cms\library\Theme;
  4. use addons\cms\model\Block;
  5. use addons\cms\model\Channel;
  6. use think\Config;
  7. use think\Hook;
  8. /**
  9. * 公共
  10. */
  11. class Common extends Base
  12. {
  13. protected $noNeedLogin = '*';
  14. /**
  15. * 初始化
  16. */
  17. public function init()
  18. {
  19. //焦点图
  20. $bannerList = [];
  21. $list = Block::getBlockList(['name' => 'indexfocus', 'row' => 5]);
  22. foreach ($list as $index => $item) {
  23. $bannerList[] = ['image' => cdnurl($item['image'], true), 'url' => $item['url'], 'title' => $item['title']];
  24. }
  25. //配置信息
  26. $upload = Config::get('upload');
  27. //如果非服务端中转模式需要修改为中转
  28. if ($upload['storage'] != 'local' && isset($upload['uploadmode']) && $upload['uploadmode'] != 'server') {
  29. //临时修改上传模式为服务端中转
  30. set_addon_config($upload['storage'], ["uploadmode" => "server"], false);
  31. $upload = \app\common\model\Config::upload();
  32. // 上传信息配置后
  33. Hook::listen("upload_config_init", $upload);
  34. $upload = Config::set('upload', array_merge(Config::get('upload'), $upload));
  35. }
  36. $upload['cdnurl'] = $upload['cdnurl'] ? $upload['cdnurl'] : cdnurl('', true);
  37. $upload['uploadurl'] = preg_match("/^((?:[a-z]+:)?\/\/)(.*)/i", $upload['uploadurl']) ? $upload['uploadurl'] : url($upload['storage'] == 'local' ? '/api/common/upload' : $upload['uploadurl'], '', false, true);
  38. $config = [
  39. 'upload' => $upload,
  40. 'paytypelist' => Config::get('cms.paytypelist'),
  41. 'defaultpaytype' => Config::get('cms.defaultpaytype'),
  42. 'sitename' => Config::get('cms.sitename'),
  43. 'sitelogo' => cdnurl(Config::get('cms.sitelogo'),true),
  44. ];
  45. $data = [
  46. 'bannerList' => $bannerList,
  47. 'config' => $config,
  48. '__token__' => $this->request->token()
  49. ];
  50. //合并主题样式,判断是否预览模式
  51. $isPreview = stripos($this->request->SERVER("HTTP_REFERER"), "mode=preview") !== false;
  52. $themeConfig = $isPreview && \think\Session::get("previewtheme") ? \think\Session::get("previewtheme") : Theme::get();
  53. $themeConfig = Theme::render($themeConfig);
  54. $data = array_merge($data, $themeConfig);
  55. $this->success('', $data);
  56. }
  57. /**
  58. * Undocumented function
  59. * 获取分类
  60. * @return void
  61. */
  62. public function getCategory()
  63. {
  64. $model_id = $this->request->param('model');
  65. $parent_id = $this->request->param('channel');
  66. $menu_index = (int)$this->request->param('menu_index/d',0);
  67. //对于首页,应用初始化,app原生导航,无法给传参,默认传-1,取导航的设置参数
  68. if($model_id==-1){
  69. $model_id = Theme::getFirstParam('model',$menu_index);
  70. }
  71. if($parent_id==-1){
  72. $parent_id = Theme::getFirstParam('channel',$menu_index);
  73. }
  74. $tabList = [['id' => 0, 'title' => '全部']];
  75. $channelList = Channel::where('status', 'normal')
  76. ->where('type', 'in', ['list'])
  77. ->where(function ($query) use ($model_id,$parent_id) {
  78. if (!empty($model_id)) {
  79. $query->where('model_id', $model_id);
  80. }
  81. if(!empty($parent_id)){
  82. $query->where('parent_id',$parent_id);
  83. }
  84. })
  85. ->field('id,parent_id,model_id,name,diyname')
  86. ->order('weigh desc,id desc')
  87. ->select();
  88. foreach ($channelList as $index => $item) {
  89. $data = ['id' => $item['id'], 'title' => $item['name']];
  90. $tabList[] = $data;
  91. }
  92. $this->success('',$tabList);
  93. }
  94. public function selectpage()
  95. {
  96. $dispatch = $this->request->dispatch();
  97. $vars = array_merge($this->request->param(), $dispatch['var'], ['controller' => 'ajax', 'action' => 'selectpage']);
  98. return \think\App::invokeMethod($dispatch['method'], $vars);
  99. }
  100. }