mirror of
https://github.com/iLoveElysia/openbilibili.git
synced 2026-03-14 13:56:26 -05:00
107 lines
2.8 KiB
Go
107 lines
2.8 KiB
Go
|
|
package dao
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"context"
|
|||
|
|
"time"
|
|||
|
|
|
|||
|
|
"go-common/app/admin/main/vip/model"
|
|||
|
|
"go-common/library/ecode"
|
|||
|
|
"go-common/library/log"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
const (
|
|||
|
|
_vipConfDialog = "vip_conf_dialog"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// DialogAll .
|
|||
|
|
func (d *Dao) DialogAll(c context.Context, appID, platform int64, status string) (res []*model.ConfDialog, err error) {
|
|||
|
|
db := d.vip.Table(_vipConfDialog)
|
|||
|
|
if appID != 0 {
|
|||
|
|
db = db.Where("app_id=?", appID)
|
|||
|
|
}
|
|||
|
|
if platform != 0 {
|
|||
|
|
db = db.Where("platform=?", platform)
|
|||
|
|
}
|
|||
|
|
if len(status) > 0 {
|
|||
|
|
curr := time.Now().Format("2006-01-02 15:04:05")
|
|||
|
|
//padding:待生效,active:已经生效,inactive:已经失效
|
|||
|
|
switch status {
|
|||
|
|
case "padding":
|
|||
|
|
db = db.Where("stage = true AND start_time>?", curr)
|
|||
|
|
case "active":
|
|||
|
|
db = db.Where("stage = true AND start_time<=? AND (end_time = '1970-01-01 08:00:00' OR end_time >?)", curr, curr)
|
|||
|
|
case "inactive":
|
|||
|
|
db = db.Where("stage = false OR (end_time > '1970-01-01 08:00:00' AND end_time < ?)", curr)
|
|||
|
|
default:
|
|||
|
|
log.Info("query all dialog.")
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if err := db.Find(&res).Error; err != nil {
|
|||
|
|
return nil, err
|
|||
|
|
}
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DialogByID vip price config by id.
|
|||
|
|
func (d *Dao) DialogByID(c context.Context, id int64) (dlg *model.ConfDialog, err error) {
|
|||
|
|
dlg = &model.ConfDialog{}
|
|||
|
|
if err := d.vip.Table(_vipConfDialog).Where("id=?", id).First(dlg).Error; err != nil {
|
|||
|
|
if err == ecode.NothingFound {
|
|||
|
|
err = nil
|
|||
|
|
}
|
|||
|
|
return nil, err
|
|||
|
|
}
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DialogBy vip price config by .
|
|||
|
|
func (d *Dao) DialogBy(c context.Context, appID, platform int64, id int64) (res []*model.ConfDialog, err error) {
|
|||
|
|
if err := d.vip.Table(_vipConfDialog).Where("stage = true AND app_id=? AND platform=? AND id<>?", appID, platform, id).Find(&res).Error; err != nil {
|
|||
|
|
return nil, err
|
|||
|
|
}
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DialogSave .
|
|||
|
|
func (d *Dao) DialogSave(c context.Context, arg *model.ConfDialog) (eff int64, err error) {
|
|||
|
|
db := d.vip.Table(_vipConfDialog).Save(arg)
|
|||
|
|
if err = db.Error; err != nil {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
eff = db.RowsAffected
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DialogEnable .
|
|||
|
|
func (d *Dao) DialogEnable(c context.Context, arg *model.ConfDialog) (eff int64, err error) {
|
|||
|
|
stage := map[string]interface{}{
|
|||
|
|
"stage": arg.Stage,
|
|||
|
|
"end_time": time.Now(),
|
|||
|
|
"operator": arg.Operator,
|
|||
|
|
}
|
|||
|
|
db := d.vip.Table(_vipConfDialog).Where("id=?", arg.ID).Updates(stage)
|
|||
|
|
if err = db.Error; err != nil {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
eff = db.RowsAffected
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// DialogDel delete vip price config by id.
|
|||
|
|
func (d *Dao) DialogDel(c context.Context, id int64) (eff int64, err error) {
|
|||
|
|
db := d.vip.Table(_vipConfDialog).Where("id=?", id).Delete(&model.ConfDialog{})
|
|||
|
|
if err = db.Error; err != nil {
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
eff = db.RowsAffected
|
|||
|
|
return
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// CountDialogByPlatID count dialog by platform id .
|
|||
|
|
func (d *Dao) CountDialogByPlatID(c context.Context, plat int64) (count int64, err error) {
|
|||
|
|
if err := d.vip.Table(_vipConfDialog).Where("platform=?", plat).Count(&count).Error; err != nil {
|
|||
|
|
return 0, err
|
|||
|
|
}
|
|||
|
|
return
|
|||
|
|
}
|