76 lines
2.2 KiB
Go
76 lines
2.2 KiB
Go
package models
|
|
|
|
import (
|
|
"database/sql"
|
|
"errors"
|
|
"log"
|
|
"strconv"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
)
|
|
|
|
type MysqlConnection struct {
|
|
Database *sql.DB
|
|
}
|
|
|
|
// 初始化数据库连接
|
|
func (m *MysqlConnection) Init() (err error) {
|
|
user := Viper.Get("mysql.user").(string)
|
|
password := Viper.Get("mysql.password").(string)
|
|
host := Viper.Get("mysql.host").(string)
|
|
port := Viper.Get("mysql.port").(int)
|
|
database := Viper.Get("mysql.database").(string)
|
|
sqlconf := user + ":" + password + "@tcp(" + host + ":" + strconv.Itoa(port) + ")/" + database + "?charset=utf8mb4&parseTime=True&loc=Local"
|
|
m.Database, err = sql.Open("mysql", sqlconf) // 连接数据库
|
|
if err != nil {
|
|
log.Println("连接数据库失败", err)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// 根据图片 id 获取图片的 content
|
|
func (m *MysqlConnection) GetImageContent(group string, id string) (content string, err error) {
|
|
switch group {
|
|
case "article":
|
|
err = m.Database.QueryRow("SELECT image FROM web_article WHERE id=" + id).Scan(&content)
|
|
case "article_attribute":
|
|
err = m.Database.QueryRow("SELECT image FROM web_article_attribute WHERE id=" + id).Scan(&content)
|
|
case "ad":
|
|
err = m.Database.QueryRow("SELECT image FROM web_ad WHERE id=" + id).Scan(&content)
|
|
case "avatar":
|
|
err = m.Database.QueryRow("SELECT avatar FROM web_member WHERE id=" + id).Scan(&content)
|
|
case "image":
|
|
err = m.Database.QueryRow("SELECT content FROM web_images WHERE id=" + id).Scan(&content)
|
|
default:
|
|
err = errors.New("group 参数错误")
|
|
}
|
|
return content, err
|
|
}
|
|
|
|
// 获取图片列表
|
|
func (m *MysqlConnection) GetImages(page int, size int) (images []byte, err error) {
|
|
rows, err := m.Database.Query("SELECT id, group, content FROM web_images LIMIT ?, ?", (page-1)*size, size)
|
|
if err != nil {
|
|
log.Println("获取图片列表失败", err)
|
|
return
|
|
}
|
|
defer rows.Close()
|
|
|
|
images = []byte("[")
|
|
for rows.Next() {
|
|
var id int
|
|
var group string
|
|
var content string
|
|
err = rows.Scan(&id, &group, &content)
|
|
if err != nil {
|
|
log.Println("获取图片列表失败", err)
|
|
return
|
|
}
|
|
images = append(images, []byte("{\"id\":"+strconv.Itoa(id)+",\"group\":\""+group+"\",\"content\":\""+content+"\"},")...)
|
|
}
|
|
images = images[:len(images)-1]
|
|
images = append(images, []byte("]")...)
|
|
return
|
|
}
|