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 的一些固定的东西变的更灵活,只需要更新内容就可以完成功能变更,无需重新发版解决,提高了工作效率。

目录
相关文章
|
20天前
|
前端开发 JavaScript Linux
Sublime Text 3配置Go语言开发环境
【4月更文挑战第13天】本篇文章 Huazie 向大家介绍使用 Sublime Text 3搭建Go语言开发环境,并演示编译运行 Go语言代码
49 8
Sublime Text 3配置Go语言开发环境
|
1月前
|
Linux Go iOS开发
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
掌握Go语言:配置环境变量、深入理解GOPATH和GOROOT(1)
|
7月前
|
Go
Go语言构造函数的力量:初始化和配置的艺术
Go语言构造函数的力量:初始化和配置的艺术
48 0
|
7月前
|
Web App开发 存储 IDE
手把手教你使用LiteIDE配置Go语言开发环境
手把手教你使用LiteIDE配置Go语言开发环境
165 0
|
12天前
|
安全 Go 网络安全
【Go语言专栏】Go语言中的HTTPS与TLS配置
【4月更文挑战第30天】本文介绍了在Go语言中配置HTTPS服务器和处理TLS证书的方法。首先,TLS证书由证书颁发机构(CA)颁发,用于验证服务器身份和加密通信。接着,展示了如何使用`crypto/tls`包加载自签名证书启动HTTPS服务器。在生产环境中,通常使用CA签名的证书,这需要获取证书链和私钥。为了自动续期证书,可以利用Go的`acme/autocert`包与ACME服务交互。掌握这些技能对于确保Web服务的安全至关重要。
|
19天前
|
Go 开发工具 开发者
Intellij IDEA 配置 Go 语言开发环境
【4月更文挑战第14天】本篇文章 Huazie 向大家介绍使用 Intellij IDEA 搭建 Go 语言开发环境,并演示编译运行Go语言代码
31 1
Intellij IDEA 配置 Go 语言开发环境
|
2月前
|
数据建模 Go vr&ar
idea配置go依赖下载
idea配置go依赖下载
27 0
|
5月前
|
存储 JSON 监控
go配置解析库 - viper
go配置解析库 - viper
|
7月前
|
Go
Go 配置管理库 Viper 怎么读取结构体嵌套的配置信息?
Go 配置管理库 Viper 怎么读取结构体嵌套的配置信息?
48 0
|
8月前
|
Go
Go网络请求中配置代理
Go网络请求中配置代理
102 0