From 04102f7237efefa744090ed7c25f7b5d0807b679 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 18:11:57 +0800
Subject: [PATCH] 完成运营中心提现和运营中心权限管理
---
admin/app/api/controller/plus/business/Template.php | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 108 insertions(+), 1 deletions(-)
diff --git a/admin/app/api/controller/plus/business/Template.php b/admin/app/api/controller/plus/business/Template.php
index 90b9a93..97da92d 100644
--- a/admin/app/api/controller/plus/business/Template.php
+++ b/admin/app/api/controller/plus/business/Template.php
@@ -12,6 +12,113 @@
public function getList()
{
$model = new TemplateModel();
- return $this->renderSuccess('',$model->getLists());
+ $param = $this->request->param();
+ $list = $model->lists($param);
+
+ // 获取屏幕宽度
+ $screenWidth = isset($param['screenWidth']) ? floatval($param['screenWidth']) : 375;
+
+ foreach($list as $index => $item) {
+ // 解析style JSON
+ $style = json_decode($item['style'], true);
+
+ if (!$style) {
+ $list[$index]['style'] = [];
+ continue;
+ }
+
+ // 计算缩放比例 (基于背景图宽度)
+ $backdropWidth = isset($style['backdrop']['width']) && $style['backdrop']['width'] > 0
+ ? floatval($style['backdrop']['width'])
+ : 375;
+
+ $scale = round($screenWidth / $backdropWidth, 4);
+
+ // 需要缩放的数值字段(排除这些字段名)
+ $excludeKeys = ['color', 'src', 'style', 'display', 'type', 'src'];
+
+ // 递归处理style数组,对所有数值字段进行缩放
+ $this->scaleStyleValues($style, $scale, $excludeKeys);
+
+ $list[$index]['style'] = $style;
+ }
+
+ return $this->renderSuccess('', $list);
+ }
+
+ /**
+ * 递归缩放style中的数值字段
+ * @param array &$data 数据数组(引用传递)
+ * @param float $scale 缩放比例
+ * @param array $excludeKeys 不需要缩放的键名
+ */
+ private function scaleStyleValues(&$data, $scale, $excludeKeys = [])
+ {
+ if (!is_array($data)) {
+ return;
+ }
+
+ foreach ($data as $key => &$value) {
+ if (is_array($value)) {
+ // 递归处理子数组
+ $this->scaleStyleValues($value, $scale, $excludeKeys);
+ } elseif (is_numeric($value) && !in_array($key, $excludeKeys)) {
+ // 对数值进行缩放(非0值)
+ if ($value != 0) {
+ $value = round($value * $scale, 2);
+ }
+ }
+ // 其他类型(字符串等)保持不变
+ }
+ }
+
+ /**
+ * 获取模板详情
+ * @param $template_id
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @throws \think\exception\DbException
+ */
+ public function detail($template_id)
+ {
+ $model = new TemplateModel();
+ $detail = $model->detail($template_id);
+ if (!$detail) {
+ return $this->renderError('模板不存在');
+ }
+ $detail['style'] = json_decode($detail['style'], true);
+ return $this->renderSuccess($detail);
+ }
+
+ /**
+ * 添加模板
+ */
+ public function add()
+ {
+ $param = request()->param();
+ $param['style'] = json_encode($param['style'], JSON_UNESCAPED_UNICODE);
+ if ((new TemplateModel())->add($param)) {
+ return $this->renderSuccess('添加成功');
+ }
+ return $this->renderError('添加失败');
+ }
+
+ /**
+ * 编辑模板
+ */
+ public function edit()
+ {
+ $param = request()->param();
+ $model = (new TemplateModel())->detail($param['template_id']);
+ if (!$model) {
+ return $this->renderError('模板不存在');
+ }
+ $param['style'] = json_encode($param['style'], JSON_UNESCAPED_UNICODE);
+ unset($param['template_id']);
+ if ($model->save($param)) {
+ return $this->renderSuccess('', '编辑成功');
+ }
+ return $this->renderError('编辑失败');
}
}
--
Gitblit v1.9.2