diff --git a/application/admin/command/FcInstall.php b/application/admin/command/FcInstall.php index 049ac95..8f0fd08 100644 --- a/application/admin/command/FcInstall.php +++ b/application/admin/command/FcInstall.php @@ -12,7 +12,7 @@ use think\Db; * 同城分类信息 · 业务表安装器 * * 用法: - * php think fc:install 建表 + 首次注入种子数据(已存在则跳过种子)+ 轮播底色与生态绿主题对齐 + * php think fc:install 建表 + 首次注入种子数据(已存在则跳过种子)+ 轮播底色与春绿主题对齐 * php think fc:install --reset 建表 + 强制重置种子数据 * * 说明:全部使用 CREATE TABLE IF NOT EXISTS,幂等安全,不影响 FastAdmin 原有表。 @@ -22,13 +22,24 @@ class FcInstall extends Command { /** * 内置轮播(标题 / 跳转 / 底色)——种子数据与「底色升级」共用同一份定义。 - * color 取前端 uni.scss 的生态绿渐变家族:绿 = 平台与内容; - * image 留空时小程序用「绿底 + 白色插画」内置配图渲染。 + * color 取前端 uni.scss 的春绿主题(v4):105deg 亮绿(左)→ 深绿(右), + * 文字区落在亮绿端(小程序用墨绿字 #04301E),白色插画落在右侧深绿端; + * image 留空时小程序用「亮绿底 + 墨绿字 + 白色插画」内置配图渲染。 */ const BANNERS = [ - ['同城好物节 · 二手直降', '/pages/post/list?categoryId=3', 'linear-gradient(135deg, #18a587 0%, #0e7c66 55%, #0a5d4d 100%)'], - ['招聘旺季 · 免费发布', '/pages/post/create', 'linear-gradient(135deg, #0e7c66 0%, #0a5d4d 55%, #04302a 100%)'], - ['本地服务 · 上门更省心', '/pages/post/list?categoryId=5', 'linear-gradient(135deg, #16897f 0%, #0e6b62 55%, #07443e 100%)'], + ['同城好物节 · 二手直降', '/pages/post/list?categoryId=3', 'linear-gradient(105deg, #00e070 0%, #00c860 42%, #046b3b 100%)'], + ['招聘旺季 · 免费发布', '/pages/post/create', 'linear-gradient(105deg, #00d96c 0%, #00b85c 40%, #023a21 100%)'], + ['本地服务 · 上门更省心', '/pages/post/list?categoryId=5', 'linear-gradient(105deg, #00e878 0%, #049e52 45%, #045c34 100%)'], + ]; + + /** + * 需要被主题升级覆盖的历史底色特征: + * ① 旧暖橙纯色(#FF8A5B 一族);② v1.2 生态绿(#0e7c66 一族); + * 命中任一即按标题覆盖为上面的春绿渐变(只动 color 字段,不动业务数据)。 + */ + const LEGACY_COLOR_KEYS = [ + '18a587', '0e7c66', '0a5d4d', '04302a', '16897f', '0e6b62', '07443e', + 'ff8a5b', 'ffb86b', 'ff6f61', ]; protected function configure() @@ -63,7 +74,7 @@ class FcInstall extends Command $output->writeln('==> 已有数据,跳过种子(如需重置请加 --reset)'); } - $output->writeln('==> 轮播底色与生态绿主题对齐'); + $output->writeln('==> 轮播底色与春绿主题对齐'); $this->upgradeBanners($output); $output->writeln('==> 初始化后台菜单'); @@ -75,10 +86,11 @@ class FcInstall extends Command /** * 轮播底色升级(幂等,可重复执行) * - * v1.2 起主题改为生态绿,旧版种子里的轮播底色是暖橙纯色(#FF8A5B / #FFB86B / #FF6F61)。 - * 线上库若还是旧值,这里按「标题」精确匹配把内置 3 条轮播的底色覆盖为生态绿渐变; + * 主题迭代史:v1.0.x 暖橙纯色(#FF8A5B 一族)→ v1.2 生态绿(#0e7c66 一族)→ v1.3 春绿(本次)。 + * 线上库若还是历史值,这里按「标题」精确匹配把内置 3 条轮播的底色覆盖为春绿渐变; * 只动 color 字段,不新增/删除记录,也不影响发布、订单等业务数据。 - * 自定义过标题或已填渐变(linear-gradient(...))的轮播不会被改动。 + * 判定规则:color 为空/非渐变(旧纯色),或命中 LEGACY_COLOR_KEYS(上一版主题色)→ 覆盖; + * 自定义过标题、或已是春绿渐变(#00e070 一族)的轮播不会被改动(幂等)。 */ private function upgradeBanners(Output $output) { @@ -90,23 +102,35 @@ class FcInstall extends Command $type = isset($row['Type']) ? (string)$row['Type'] : (isset($row['type']) ? (string)$row['type'] : ''); if (preg_match('/^varchar\((\d+)\)$/i', $type, $m) && (int)$m[1] < 255) { Db::execute("ALTER TABLE `{$table}` MODIFY COLUMN `color` varchar(255) NOT NULL DEFAULT ''" - . " COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置生态绿渐变'"); + . " COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置春绿渐变'"); $output->writeln(' - 轮播底色列 color 已由 ' . $type . ' 扩容为 varchar(255)(存 CSS 渐变)'); } - // ② 旧暖色纯色 → 生态绿渐变 + // ② 历史底色(旧纯色 / 上一版生态绿)→ 春绿渐变 $upgraded = 0; foreach (self::BANNERS as $b) { $row = Db::name('fc_banner')->where('title', $b[0])->find(); - if ($row && strpos((string)$row['color'], 'gradient(') === false) { + if (!$row) { + continue; + } + $color = strtolower((string)$row['color']); + $isGradient = strpos($color, 'gradient(') !== false; + $isLegacy = false; + foreach (self::LEGACY_COLOR_KEYS as $k) { + if (strpos($color, $k) !== false) { + $isLegacy = true; + break; + } + } + if (!$isGradient || $isLegacy) { Db::name('fc_banner')->where('id', $row['id']) ->update(['color' => $b[2], 'updatetime' => time()]); $upgraded++; } } $output->writeln($upgraded - ? ' - 已把 ' . $upgraded . ' 条旧纯色轮播底色升级为生态绿渐变' - : ' - 轮播底色已是渐变或非内置轮播,无需处理'); + ? ' - 已把 ' . $upgraded . ' 条内置轮播底色升级为春绿渐变(105deg 亮绿→深绿)' + : ' - 轮播底色已是春绿渐变或非内置轮播,无需处理'); } /** @@ -250,7 +274,7 @@ class FcInstall extends Command `title` varchar(64) NOT NULL DEFAULT '', `image` varchar(255) NOT NULL DEFAULT '' COMMENT '图片,空则用渐变占位', `link` varchar(255) NOT NULL DEFAULT '' COMMENT '跳转路径', - `color` varchar(255) NOT NULL DEFAULT '' COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置生态绿渐变', + `color` varchar(255) NOT NULL DEFAULT '' COMMENT '底色:CSS 渐变 linear-gradient(...),留空则用内置春绿渐变', `sort` int(10) NOT NULL DEFAULT '0', `enabled` tinyint(1) NOT NULL DEFAULT '1', `createtime` int(10) DEFAULT NULL, diff --git a/application/admin/view/fc/banner/add.html b/application/admin/view/fc/banner/add.html index 19f3914..22b21d2 100644 --- a/application/admin/view/fc/banner/add.html +++ b/application/admin/view/fc/banner/add.html @@ -10,7 +10,7 @@
linear-gradient(135deg, #0E7C66 0%, #0E7C66 100%));留空或填纯色时小程序会回落到内置生态绿渐变。
+
+ 填 CSS 渐变(春绿家族;纯色请写成同色双色标,如 linear-gradient(105deg, #00E070 0%, #00E070 100%));留空或填纯色时小程序会回落到内置春绿渐变。建议方向 105deg(亮绿在左,深绿在右),文字区落在左侧亮绿端更清晰。
linear-gradient(135deg, #0E7C66 0%, #0E7C66 100%));留空或填纯色时小程序会回落到内置生态绿渐变。
+
+ 填 CSS 渐变(春绿家族;纯色请写成同色双色标,如 linear-gradient(105deg, #00E070 0%, #00E070 100%));留空或填纯色时小程序会回落到内置春绿渐变。建议方向 105deg(亮绿在左,深绿在右),文字区落在左侧亮绿端更清晰。