diff --git a/app/api/controller/GoodsCategoryController.php b/app/api/controller/GoodsCategoryController.php new file mode 100644 index 0000000..f49ba13 --- /dev/null +++ b/app/api/controller/GoodsCategoryController.php @@ -0,0 +1,38 @@ +request->get('client',1); + $cateogry = GoodsCategoryLogic::categoryThirdTree($client); + return $this->success('获取成功',$cateogry); + } +} \ No newline at end of file diff --git a/app/api/logic/GoodsCategoryLogic.php b/app/api/logic/GoodsCategoryLogic.php new file mode 100644 index 0000000..9ce89af --- /dev/null +++ b/app/api/logic/GoodsCategoryLogic.php @@ -0,0 +1,116 @@ +where(['is_show'=>1,'del'=>0,'level'=>1])->order('sort desc')->column('id,name,pid,image,level','id'); + $level2 = Db::name('goods_category')->where(['is_show'=>1,'del'=>0,'level'=>2])->order('sort desc')->column('id,name,pid,image,level','id'); + $level3 = Db::name('goods_category')->where(['is_show'=>1,'del'=>0,'level'=>3])->order('sort desc')->field('id,name,pid,image,level')->select(); + + //挂载第二级 + foreach ($level3 as $list3){ + if(isset($level2[$list3['pid']])){ + $list3['image'] = UrlServer::getFileUrl($list3['image']); + $list3['type'] = 1; + $level2[$list3['pid']]['sons'][] = $list3; + } + } + //挂载第一级、并移除没有下级的二级分类 + foreach ($level2 as $key2 => $list2){ +// if(!isset($list2['sons'])){ +// unset($level2[$key2]); +// continue; +// } + + if(isset($lists[$list2['pid']])){ + $list2['type'] = 1; + $list2['image'] = UrlServer::getFileUrl($list2['image']); + $lists[$list2['pid']]['sons'][] = $list2; + } + } + + + //移除没有完整的三级分类 + foreach ($lists as $key1 => $list1){ +// if(!isset($list1['sons'])){ +// unset($lists[$key1]); +// continue; +// +// } + if(!isset($list1['sons'])){ + $lists[$key1]['sons'] = []; + } + $lists[$key1]['image'] = UrlServer::getFileUrl($list1['image']); + $lists[$key1]['type'] = 1; + } + + //pc端不显示品牌 + if(1 == $client){ + $goods_brand = Db::name('goods_brand') + ->where(['del'=>0,'is_show'=>1]) + ->field('id,name,image') + ->order('sort desc,id desc') + ->select(); + if($goods_brand){ + foreach ($goods_brand as &$brand_item){ + $brand_item['type'] = 0; + $brand_item['image'] = UrlServer::getFileUrl($brand_item['image']); + } + + $brand = [ + 'id' => 0, + 'name' => '品牌推荐', + 'type' => 0, + 'sons' =>[ + [ + 'id' => 0, + 'name' => '热门品牌', + 'type' => 0, + 'sons' => $goods_brand, + + ] + ], + ]; + array_unshift($lists,$brand); + } + } + + Cache::set('goods_category_'.$client, array_values($lists)); + return array_values($lists); + } + + +} \ No newline at end of file diff --git a/app/common.php b/app/common.php index c169644..a66b62c 100644 --- a/app/common.php +++ b/app/common.php @@ -75,7 +75,17 @@ function check_dir_write(string $dir = '') : bool $route = root_path() . '/' . $dir; return is_writable($route); } - +function is_https() +{ + if (!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') { + return true; + } elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + return true; + } elseif (!empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') { + return true; + } + return false; +} /** * 多级线性结构排序 diff --git a/app/common/service/ConfigServer.php b/app/common/service/ConfigServer.php new file mode 100644 index 0000000..4200463 --- /dev/null +++ b/app/common/service/ConfigServer.php @@ -0,0 +1,131 @@ +where(['type' => $type, 'name' => $name]) + ->find(); + if (empty($data)) { + Db::name('config') + ->insert(['type' => $type, 'name' => $name, 'value' => $value]); + } else { + Db::name('config') + ->where(['type' => $type, 'name' => $name]) + ->update(['value' => $value, 'update_time' => $update_time]); + } + return $original; + } + + + /** + * @notes 获取配置 + * @param string $type + * @param string $name + * @param mixed $defaultValue + * @return mixed + * @author 令狐冲 + * @date 2022/9/29 11:35 + */ + public static function get(string $type, $name = '', $defaultValue = NULL) + { + //有缓存取缓存 + $CacheKey = 'config' . '-' . $type . '-' . $name; + $result = Cache::get($CacheKey); + $value = $result['config_server'] ?? false; + if ($value !== false) { + return $value; + } + + //单项配置 + if ($name) { + $value = Db::name('config') + ->where(['type' => $type, 'name' => $name]) + ->value('value'); + + //数组配置需要自动转换 + $json = json_decode($value, true); + if (json_last_error() === JSON_ERROR_NONE) { + $value = $json; + } + //获取调用默认配置 + if ($value === NULL) { + $value = $defaultValue; + } + //获取系统配置文件的配置 + if ($value === NULL) { + $value = Config::get('default.' . $type . '.' . $name); + } + Cache::set($CacheKey, ['config_server' => $value]); + return $value; + } + + //多项配置 + $data = Db::name('config') + ->where(['type' => $type]) + ->column('value', 'name'); + //数组配置需要自动转换 + if (is_array($data)) { + foreach ($data as $k => $v) { + $json = json_decode($v, true); + if (json_last_error() === JSON_ERROR_NONE) { + $data[$k] = $json; + } + } + } + if ($data === []) { + $data = $defaultValue; + } + Cache::set($CacheKey, ['config_server' => $data]); + return $data; + } +} \ No newline at end of file diff --git a/app/common/service/UrlServer.php b/app/common/service/UrlServer.php new file mode 100644 index 0000000..3ca99de --- /dev/null +++ b/app/common/service/UrlServer.php @@ -0,0 +1,101 @@ +port(); + $port = in_array($port, [ '80', '443' ]) ? '' : ":{$port}"; + + $file_url .= $port; + } + + return $protocol . $file_url . $uri; + + } else { + + $config = ConfigServer::get('storage_engine',$engine); + $domain = isset($config['domain']) ? $config['domain'] : 'http://'; + if ($domain[strlen($domain) - 1] == '/') { + $domain = substr($domain,0,strlen($domain)-1); + } + return $domain . $uri; + } + } + + /** + * NOTE: 设置文件路径转相对路径 + * @author: 张无忌 + * @param string $uri + * @return mixed + */ + public static function setFileUrl($uri='') + { + $engine = ConfigServer::get('storage', 'default', 'local'); + if ($engine === 'local') { + $domain = request()->domain(); + return str_replace($domain.'/', '', $uri); + } else { + $config = ConfigServer::get('storage_engine', $engine); + return str_replace($config['domain'], '', $uri); + } + } + +} \ No newline at end of file diff --git a/public/index.php b/public/index.php index 7a65249..89fb838 100644 --- a/public/index.php +++ b/public/index.php @@ -13,7 +13,13 @@ namespace think; require __DIR__ . '/../vendor/autoload.php'; +if (!defined('ROOT_PATH')) { + define('ROOT_PATH', dirname(__DIR__)); +} +if (!defined('DS')) { + define('DS', DIRECTORY_SEPARATOR); +} $url = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); $whe = !str_starts_with($url, '/adminapi/config/getConfig') && !str_starts_with($url, '/api/pc/config') && !str_starts_with($url, '/api/index/config'); if ($whe && !file_exists(__DIR__ . '/../config/install.lock')) {