一.商店设置模块界面
通用信息
配置网站标题,logo,seo相关数据,备案信息等
云存储相关配置
缩略图相关配置
OSS储存配置
缩略图尺寸配置
二.代码展示
1.模型
package models
//系统设置
type Setting struct {
//使用反射功能:`form:"xxx"`配置:可以批量获取表单数据,form后面的需要和html中表单字段一致
Id int `form:"id"`
SiteTitle string `form:"site_title"` //标题
SiteLogo string //logo
SiteKeywords string `form:"site_keywords"` //关键词
SiteDescription string `form:"site_description"` //描述
NoPicture string //默认图片,不需要form设置, 因为该字段的数据需要用到上传功能,要校验
SiteIcp string `form:"site_icp"` //备案信息
SiteTel string `form:"site_tel"` //电话
SearchKeywords string `form:"search_keywords"` //搜索关键词
TongjiCode string `form:"tongji_code"` //统计代码
Appid string `form:"appid"` //oss appid
AppSecret string `form:"app_secret"` //oss 密钥
EndPoint string `form:"end_point"` //oss 访问结点域名
BucketName string `form:"bucket_name"` //oss 桶名称
OssStatus int `form:"oss_status"` //oss 开启状态: 1 是, 0 否
OssDomain string `form:"oss_domain"` //oss domain
ThumbnailSize string `form:"thumbnail_size"` //缩略图大小设置
}
func (Setting) TableName() string {
return "setting"
}
2.控制器
上传功能见:
[golang gin框架] 15.Gin 商城项目-封装上传图片方法,轮播图的增删改查以及异步修改状态,数量
[golang gin框架] 19.Gin 图片上传到云服务器(腾讯云,阿里云)
package admin
import (
"github.com/gin-gonic/gin"
"goshop/models"
"net/http"
)
type SettingController struct {
BaseController
}
func (con SettingController) Index(c *gin.Context) {
setting := models.Setting{}
models.DB.First(&setting)
c.HTML(http.StatusOK, "admin/setting/index.html", gin.H{
"setting": setting,
})
}
func (con SettingController) DoEdit(c *gin.Context) {
setting := models.Setting{Id: 1}
models.DB.Find(&setting)
//c.ShouldBind(&setting): 绑定表单中的数据到结构体
if err := c.ShouldBind(&setting); err != nil {
con.Error(c, "修改数据失败,请重试", "/admin/setting")
return
} else {
// 上传图片 logo
siteLogo, err1 := models.UploadImg(c, "site_logo")
if len(siteLogo) > 0 && err1 == nil {
setting.SiteLogo = siteLogo
} else if err1 != nil {
con.Error(c, "上传错误", "/admin/setting")
return
}
//上传图片 no_picture
noPicture, err2 := models.UploadImg(c, "no_picture")
if len(noPicture) > 0 && err2 == nil {
setting.NoPicture = noPicture
}
err3 := models.DB.Save(&setting).Error
if err3 != nil {
con.Error(c, "修改数据失败", "/admin/setting")
return
}
con.Success(c, "修改数据成功", "/admin/setting")
}
}
3.视图(html)
index.html
{{ define "admin/setting/index.html" }}
{{ template "admin/public/page_header.html" .}}