Go 实现更换新春首页和皮肤配置

简介: 新春佳节到来了,各种 APP 的开启首页图片和皮肤样式都会发生变化,它们都将会更新成和新春有关系的图片广告或者新春相关的背景图片。当一个运营负责这项工作时,只需要开发一个可配置的功能,运营只需进行设置就可以完成新春首页替换和新年红皮肤更新。

前言

新春佳节到来了,各种 APP 的开启首页图片和皮肤样式都会发生变化,它们都将会更新成和新春有关系的图片广告或者新春相关的背景图片。当一个运营负责这项工作时,只需要开发一个可配置的功能,运营只需进行设置就可以完成新春首页替换和新年红皮肤更新。

详细设计

接口

整体的需求只有2个,首页图片的替换和皮肤样式的更新,那么可以提供2个接口给前端,前端通过调用接口来完成相应的工作:

  • 前端获取首页图片接口然后完成显示 /api/v1/ad/pics
  • 前端获取皮肤样式然后渲染样式 /api/v1/skin

数据库

首页图片表

像有些节假日或者活动是重复的。所以考虑复用性,直接使用旧的配置就可以完成功能,所以考虑将图片信息存储室增加一个标识 is_show 用来标识是否显示在首页。这样在获取首页图片时只需过滤 is_show = true 的图片进行显示。

Create table app_pic (
   ID VARCHAR(32) NOT NULL   COMMENT 'ID' ,
   Code VARCHAR(255)    COMMENT '标识' ,
   Name VARCHAR(255)    COMMENT '图片名称' ,
     FilePath VARCHAR(255)    COMMENT '图片路径' ,
   IsShow tinyint 
)

这里假设图片都存储在 OSS 上,这里只需存储图片文件所在的地址即可。当然也是支持以文件流的格式进行存储,主要是根据自己的场景来判断。如果整个项目的图片比较少,也支持存储在服务器上,然后地址存储为本地服务器的相对地址。

皮肤样式表

这里也是和图片一样的设计,增加标识用于后续切换,只要开启就返回给前端。

Create table StyleCss (
   ID VARCHAR(32) NOT NULL   COMMENT 'ID' ,
   Code VARCHAR(255)    COMMENT '标识' ,
   Name VARCHAR(255)    COMMENT '样式名称' ,
     StyleContent VARCHAR(255)    COMMENT '样式' ,
   Is_Show tinyint 
)

详细业务逻辑

实体类

这里使用 gorm 通过实例对象的语法,完成关系型数据库的操作。

// appPic 表
type AppPic struct {
    Id       int    `json:"id"`
    Code     string `json:"code"`
    Name     string `json:"name"`
    FileName string `json:"fileName"`
    IsShow   string `json:"isShow"`
}

func(AppPic)TableName string {
return "appPic"
}

// styleCss 表
type StyleCss struct {
    Id           int    `json:"id"`
    Code         string `json:"code"`
    Name         string `json:"name"`
    StyleContent string `json:"styleContent"`
    IsShow       string `json:"isShow"`
}
func(StyleCss)TableName string {
return "StyleCss"
}

详细实现

使用 gin 框架,然后实现基本的接口功能

c := gin.Default()
    c.GET("/api/v1/ad/pics", func(ctx *gin.Context) {
        var data []entities.AppPic
        result := db.Where("isshow=true").Find(&data)
        return ctx.JSON(http.StatusOK,gin.H{"code":200,message: "success","data":result})
    })

结论

通过通用配置的方式可以让 app 的一些固定的东西变的更灵活,只需要更新内容就可以完成功能变更,无需重新发版解决,提高了工作效率。

目录
相关文章
|
6月前
|
前端开发 JavaScript Linux
Sublime Text 3配置Go语言开发环境
【4月更文挑战第13天】本篇文章 Huazie 向大家介绍使用 Sublime Text 3搭建Go语言开发环境,并演示编译运行 Go语言代码
836 8
Sublime Text 3配置Go语言开发环境
|
6月前
|
Linux Go iOS开发
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
1176 0
|
Go
Go语言构造函数的力量:初始化和配置的艺术
Go语言构造函数的力量:初始化和配置的艺术
185 0
|
Web App开发 存储 IDE
手把手教你使用LiteIDE配置Go语言开发环境
手把手教你使用LiteIDE配置Go语言开发环境
430 0
|
2月前
|
关系型数据库 MySQL Go
go抽取mysql配置到yaml配置文件
go抽取mysql配置到yaml配置文件
|
1月前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境
|
3月前
|
Unix 编译器 Go
|
3月前
|
JSON 缓存 监控
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
Viper 是一个强大的 Go 语言配置管理库,适用于各类应用,包括 Twelve-Factor Apps。相比仅支持 `.ini` 格式的 `go-ini`,Viper 支持更多配置格式如 JSON、TOML、YAML
go语言后端开发学习(五)——如何在项目中使用Viper来配置环境
|
3月前
|
Linux Go
Linux——windows10下的Ubuntu18.04安装并配置go环境
Linux——windows10下的Ubuntu18.04安装并配置go环境
51 1
|
5月前
|
Go
go配置镜像(阿里云、七牛)
go配置镜像(阿里云、七牛)
312 1