|
@@ -2,6 +2,7 @@ package tables
|
|
|
|
|
|
import (
|
|
|
"Wine-Server/utils"
|
|
|
+ "database/sql"
|
|
|
)
|
|
|
|
|
|
type AdvertiseTable struct {
|
|
@@ -11,17 +12,19 @@ type AdvertiseTable struct {
|
|
|
Src string `json:"src"`
|
|
|
Type bool `json:"type"` // true: pic, false: video
|
|
|
Duration uint16 `json:"duration"` // ms
|
|
|
+ Describe string `json:"describe"`
|
|
|
}
|
|
|
|
|
|
func CreateAdvertiseTable() error {
|
|
|
- sql := "CREATE TABLE IF NOT EXISTS `advertise`(" +
|
|
|
+ SQL := "CREATE TABLE IF NOT EXISTS `advertise`(" +
|
|
|
"`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY," +
|
|
|
"`order` TINYINT UNSIGNED NOT NULL," +
|
|
|
"`time` DATETIME DEFAULT CURRENT_TIMESTAMP," +
|
|
|
"`type` BOOL DEFAULT TRUE," +
|
|
|
"`src` VARCHAR(128) NOT NULL," +
|
|
|
- "`duration` SMALLINT UNSIGNED DEFAULT 3000);"
|
|
|
- _, err := utils.Mysql.Exec(sql)
|
|
|
+ "`duration` SMALLINT UNSIGNED DEFAULT 3000," +
|
|
|
+ "`describe` VARCHAR(64) DEFAULT '');"
|
|
|
+ _, err := utils.Mysql.Exec(SQL)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -29,12 +32,12 @@ func CreateAdvertiseTable() error {
|
|
|
}
|
|
|
|
|
|
func (row *AdvertiseTable) Insert() error {
|
|
|
- sql := "INSERT INTO `advertise`(`order`,`type`,`src`,`duration`) VALUES(?,?,?,?);"
|
|
|
- pre, err := utils.Mysql.Prepare(sql)
|
|
|
+ SQL := "INSERT INTO `advertise`(`order`,`type`,`src`,`duration`,`describe`) VALUES(?,?,?,?,?);"
|
|
|
+ pre, err := utils.Mysql.Prepare(SQL)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- _, err = pre.Exec(row.Order, row.Type, row.Src, row.Duration)
|
|
|
+ _, err = pre.Exec(row.Order, row.Type, row.Src, row.Duration, row.Describe)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -55,8 +58,8 @@ func (row *AdvertiseTable) Delete() error {
|
|
|
|
|
|
func (row *AdvertiseTable) Update(args utils.JsonType) error {
|
|
|
keys, values := utils.UnZip(args)
|
|
|
- sql := utils.Format("UPDATE `advertise` SET %s WHERE `id`=%d;", utils.SqlFields(keys), row.Id)
|
|
|
- pre, err := utils.Mysql.Prepare(sql)
|
|
|
+ SQL := utils.Format("UPDATE `advertise` SET %s WHERE `id`=%d;", utils.SqlFields(keys), row.Id)
|
|
|
+ pre, err := utils.Mysql.Prepare(SQL)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -68,12 +71,12 @@ func (row *AdvertiseTable) Update(args utils.JsonType) error {
|
|
|
}
|
|
|
|
|
|
func (row *AdvertiseTable) UpdateSelf() error {
|
|
|
- sql := "UPDATE `advertise` SET `order`=?,`src`=?,`type`=?,`duration`=? WHERE `id`=?;"
|
|
|
- pre, err := utils.Mysql.Prepare(sql)
|
|
|
+ SQL := "UPDATE `advertise` SET `order`=?,`src`=?,`type`=?,`duration`=?,`describe`=? WHERE `id`=?;"
|
|
|
+ pre, err := utils.Mysql.Prepare(SQL)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- _, err = pre.Exec(row.Order, row.Src, row.Type, row.Duration, row.Id)
|
|
|
+ _, err = pre.Exec(row.Order, row.Src, row.Type, row.Duration, row.Describe, row.Id)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -81,27 +84,28 @@ func (row *AdvertiseTable) UpdateSelf() error {
|
|
|
}
|
|
|
|
|
|
func (row *AdvertiseTable) Get() error {
|
|
|
- sql := "SELECT `order`,`time`,`src`,`type`,`duration` FROM `advertise` WHERE `id`=?;"
|
|
|
- pre, err := utils.Mysql.Prepare(sql)
|
|
|
+ SQL := "SELECT `order`,`time`,`src`,`type`,`duration`,`describe` FROM `advertise` WHERE `id`=?;"
|
|
|
+ pre, err := utils.Mysql.Prepare(SQL)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- err = pre.QueryRow(row.Id).Scan(&row.Order, &row.Time, &row.Src, &row.Type, &row.Duration)
|
|
|
+ err = pre.QueryRow(row.Id).Scan(&row.Order, &row.Time, &row.Src, &row.Type, &row.Duration, &row.Describe)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-func AdvListAll() ([]AdvertiseTable, error) {
|
|
|
+func AdvertiseListAll() ([]AdvertiseTable, error) {
|
|
|
var res []AdvertiseTable
|
|
|
- query, err := utils.Mysql.Query("SELECT `id`,`order`,`time`,`src`,`type`,`duration` FROM `advertise` ORDER BY `order`;")
|
|
|
+ SQL := "SELECT `id`,`order`,`time`,`src`,`type`,`duration`,`describe` FROM `advertise` ORDER BY `order`;"
|
|
|
+ query, err := utils.Mysql.Query(SQL)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
for query.Next() {
|
|
|
var one AdvertiseTable
|
|
|
- err = query.Scan(&one.Id, &one.Order, &one.Time, &one.Src, &one.Type, &one.Duration)
|
|
|
+ err = query.Scan(&one.Id, &one.Order, &one.Time, &one.Src, &one.Type, &one.Duration, &one.Describe)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
@@ -109,3 +113,46 @@ func AdvListAll() ([]AdvertiseTable, error) {
|
|
|
}
|
|
|
return res, nil
|
|
|
}
|
|
|
+
|
|
|
+func AdvertisesQuery(cond string, kind, limit, page int) (int, []AdvertiseTable, error) {
|
|
|
+ SQL := "none"
|
|
|
+ if kind == -1 {
|
|
|
+ SQL = utils.Format("SELECT COUNT(`id`) AS `total` FROM `advertise` WHERE `describe` LIKE '%%%s%%';", cond)
|
|
|
+ } else {
|
|
|
+ SQL = utils.Format(
|
|
|
+ "SELECT COUNT(`id`) AS `total` FROM `advertise` WHERE `type`=%d AND `describe` LIKE '%%%s%%';", kind, cond,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ total := 0
|
|
|
+ err := utils.Mysql.QueryRow(SQL).Scan(&total)
|
|
|
+ if err != nil {
|
|
|
+ return 0, nil, err
|
|
|
+ }
|
|
|
+ if total == 0 {
|
|
|
+ return 0, []AdvertiseTable{}, err
|
|
|
+ }
|
|
|
+ if kind == -1 {
|
|
|
+ SQL = utils.Format(
|
|
|
+ "SELECT `id`,`order`,`time`,`type`,`src`,`duration`,`describe` FROM `advertise` "+
|
|
|
+ "WHERE `describe` LIKE '%%%s%%' LIMIT %d OFFSET %d;", cond, limit, (page-1)*limit,
|
|
|
+ )
|
|
|
+ } else {
|
|
|
+ SQL = utils.Format(
|
|
|
+ "SELECT `id`,`order`,`time`,`type`,`src`,`duration`,`describe` FROM `advertise` "+
|
|
|
+ "WHERE `type`=%d AND `describe` LIKE '%%%s%%' LIMIT %d OFFSET %d;", kind, cond, limit, (page-1)*limit,
|
|
|
+ )
|
|
|
+ }
|
|
|
+ var rows *sql.Rows
|
|
|
+ res := make([]AdvertiseTable, 0)
|
|
|
+ rows, err = utils.Mysql.Query(SQL)
|
|
|
+ if err != nil {
|
|
|
+ return 0, nil, err
|
|
|
+ }
|
|
|
+ for rows.Next() {
|
|
|
+ tmp := AdvertiseTable{}
|
|
|
+ _ = rows.Scan(&tmp.Id, &tmp.Order, &tmp.Time, &tmp.Type, &tmp.Src, &tmp.Duration, &tmp.Describe)
|
|
|
+ res = append(res, tmp)
|
|
|
+ }
|
|
|
+ _ = rows.Close()
|
|
|
+ return total, res, nil
|
|
|
+}
|