go 语言设置 商城首页

server/2025/2/13 13:18:36/

1:前端传递的数据结构:

{"page_type": 10,"page_name": "商城首页","page_data": {"page": {"params": {"name": "商城首页","title": "萤火商城2.0","shareTitle": "分享标题"},"style": {"titleTextColor": "black","titleBackgroundColor": "#ffffff"},"name": "页面设置","type": "page"},"items": [{"name": "搜索框","type": "search","params": {"placeholder": "请输入关键字进行搜索"},"style": {"textAlign": "left","searchStyle": "square"}},{"name": "店铺公告","type": "notice","params": {"text": "萤火商城系统 [ 致力于通过产品和服务,帮助商家高效化开拓市场 ]","link": null,"showIcon": true,"scrollable": true},"style": {"paddingTop": 0,"background": "#fffbe8","textColor": "#de8c17"}},{"name": "图片轮播","type": "banner","style": {"btnColor": "#ffffff","btnShape": "round","interval": 2.5},"data": [{"imgUrl": "http://www.yoshop.com/assets/store/img/diy/banner/01.png","link": null},{"imgUrl": "http://www.yoshop.com/assets/store/img/diy/banner/01.png","link": null}]},{"name": "导航组","type": "navBar","style": {"rowsNum": 4,"background": "#ffffff","paddingTop": 0,"textColor": "#666666"},"data": [{"imgUrl": "http://www.yoshop.com/assets/store/img/diy/navbar/01.png","imgName": "icon-1.png","link": null,"text": "按钮文字1"},{"imgUrl": "http://www.yoshop.com/assets/store/img/diy/navbar/01.png","imgName": "icon-2.jpg","link": null,"text": "按钮文字2"},{"imgUrl": "http://www.yoshop.com/assets/store/img/diy/navbar/01.png","imgName": "icon-3.jpg","link": null,"text": "按钮文字3"},{"imgUrl": "http://www.yoshop.com/assets/store/img/diy/navbar/01.png","imgName": "icon-4.jpg","link": null,"text": "按钮文字4"}]}]},"store_id": 10001,"is_delete": 0
}

后端的代码: 

package modelsimport ("database/sql/driver""fmt""github.com/goccy/go-json"
)type SysPage struct {ID         uint     `gorm:"primary_key;auto_increment" json:"id"`PageType   uint8    `gorm:"not_null;default:10" json:"page_type"` // 页面类型 (10 首页, 20 自定义页)PageName   string   `gorm:"type:varchar(255);not_null;default:''" json:"page_name"`PageData   PageData `gorm:"type:longtext;not_null" json:"page_data"`StoreID    uint     `gorm:"not_null;default:0" json:"store_id"`IsDelete   uint8    `gorm:"not_null;default:0" json:"is_delete"`CreateTime uint     `gorm:"not_null;default:0" json:"create_time"`UpdateTime uint     `gorm:"not_null;default:0" json:"update_time"`
}// PageData 是一个自定义类型,用于处理 JSON 数据
type PageData map[string]interface{}// Scan 实现 sql.Scanner 接口,用于从数据库读取 JSON 数据
func (pd *PageData) Scan(value interface{}) error {if value == nil {*pd = PageData{}return nil}bytes, ok := value.([]byte)if !ok {return fmt.Errorf("failed to unmarshal PageData: %v", value)}return json.Unmarshal(bytes, pd)
}// Value 实现 driver.Valuer 接口,用于将 JSON 数据写入数据库
func (pd PageData) Value() (driver.Value, error) {return json.Marshal(pd)
}func (SysPage) TableName() string {return "sys_page"
}package pageimport ("admin/common/database""admin/models""github.com/gin-gonic/gin""net/http""time"
)func Add(c *gin.Context) {var pageReq models.SysPageif c.Request.ContentLength == 0 {c.JSON(http.StatusBadRequest, gin.H{"error": "No data provided"})return}if err := c.ShouldBindJSON(&pageReq); err != nil {c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})return}page := models.SysPage{ID:         pageReq.ID,PageType:   pageReq.PageType,PageName:   pageReq.PageName,PageData:   pageReq.PageData,StoreID:    pageReq.StoreID,IsDelete:   pageReq.IsDelete,CreateTime: uint(time.Now().Unix()),UpdateTime: uint(time.Now().Unix()),}if err := database.DB.Debug().Create(&page).Error; err != nil {c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to save the good"})return}c.JSON(http.StatusOK, gin.H{"msg": "create suceessfully!"})
}

 


http://www.ppmy.cn/server/167338.html

相关文章

数据库的基本概念

在当今的信息时代,数据已成为企业乃至整个社会的重要资产。如何有效地存储、管理和利用这些数据成为了技术发展的关键领域之一。数据库系统作为数据管理的核心工具,在软件开发、数据分析等多个方面扮演着不可或缺的角色。本文将带你了解数据库的一些基本…

Redis 常见面试题汇总(持续更新)

文章目录 01、Redis 支持哪些数据类型?02、谈谈对 Redis 的 AOF 机制的 rewrite 模式的理解?03、请列举几个 Redis 常见性能问题和解决方案04、Redis 使用的最大内存是多少?内存数据淘汰策略有哪些?05、请谈谈 Redis 的同步机制。…

DeepSeek的蒸馏技术:让模型推理更快

DeepSeek系列模型,如DeepSeek-R1-Distill-Qwen-7B,采用了知识蒸馏(Knowledge Distillation)技术,这是一种强大的模型压缩和优化方法。通过蒸馏,DeepSeek模型在保持甚至提升性能的同时,实现了更快…

DeepSeek 中的 GRPO 算法全面解析

摘要: 为特定任务调整大型语言模型 (LLM) 通常涉及通过使用人类反馈 (RLHF) 的强化学习对偏好数据进行微调。 虽然这些数据通常来自不同的标注者群体(例如,不同的文化背景、种族、公司团队等),但传统的 RLHF 方法采用“一刀切”的方法,即,它们不加区分地假设并优化一个单…

【小蓝的旅行计划——带悔贪心(优先队列)、线段树】

题目 动态规划代码 #include <bits/stdc.h> using namespace std; const int N 1e3 10; int f[N][N]; int main() {memset(f, 0x3f, sizeof f);int n, m;cin >> n >> m;f[0][m] 0;for (int i 1; i < n; i){int d, w, l;cin >> d >> w &…

【浏览器多开】Google Chrome 谷歌浏览器分身术

谷歌浏览器分身术&#xff08;多开&#xff09;&#xff1a; 复制已有谷歌浏览器图标—>右键–>属性的目标栏中&#xff0c;添加 --user-data-dir自定义文件夹路径 参数。 例如&#xff1a; C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…

Vue的scoped原理是什么

Vue中的scoped是一种基于属性选择器的样式隔离方案&#xff0c;通过给组件生成唯一的属性选择器来实现样式隔离。 当在<style>标签上添加scoped属性时&#xff0c;Vue会为该组件的每个元素添加一个唯一的data-v-xxxx属性&#xff0c;并将样式规则中的选择器修改为包含该属…

C#常用集合优缺点对比

先上结论&#xff1a; 在C#中&#xff0c;链表、一维数组、字典、List<T>和ArrayList是常见的数据集合类型&#xff0c;它们各有优缺点&#xff0c;适用于不同的场景。以下是它们的比较&#xff1a; 1. 一维数组 (T[]) 优点&#xff1a; 性能高&#xff1a;数组在内存中…