[golang gin框架] 22.Gin 商城项目-商店设置模块,以及通过反射获取系统设置里面的数据

一.商店设置模块界面

通用信息

配置网站标题,logo,seo相关数据,备案信息等
云存储相关配置
缩略图相关配置
[golang gin框架] 22.Gin 商城项目-商店设置模块,以及通过反射获取系统设置里面的数据_第1张图片
[golang gin框架] 22.Gin 商城项目-商店设置模块,以及通过反射获取系统设置里面的数据_第2张图片

OSS储存配置

[golang gin框架] 22.Gin 商城项目-商店设置模块,以及通过反射获取系统设置里面的数据_第3张图片

缩略图尺寸配置

[golang gin框架] 22.Gin 商城项目-商店设置模块,以及通过反射获取系统设置里面的数据_第4张图片

二.代码展示

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" .}}

系统设置
  • 网站标题:
  • 网站logo:
    {{if ne .setting.SiteLogo ""}} {{end}}
  • 网站关键词:
  • 网站描述:
  • 商品默认图片:
    {{if ne .setting.NoPicture ""}} {{end}}
  • 备案信息:
  • 网站电话:
  • 搜索关键词:
  • 统计代码:
  • 是否开启Oss:    
  • BucketName:
  • Appid:
  • AppSecret:
  • EndPoint:
  • OssDomain:
  • 缩略图尺寸: 如:200,300,400 这样的话将会生成200x200 300x300以及400x400的图片
{{end}}

4.配置路由

在routers/adminRouters.go下配置设置相关路由
//商城系统设置
adminRouters.GET("/setting", admin.SettingController{}.Index)
adminRouters.POST("/setting/doEdit", admin.SettingController{}.DoEdit)

[上一节][golang gin框架] 21.Gin 商城项目-导航模块功能

[下一节][golang gin框架] 23.Gin 商城项目-前台templates模板分离,首页,顶部导航,轮播图 左侧分类数据渲染

你可能感兴趣的:(golang,#,gin框架开发,setting,反射,oss)