You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

106 lines
2.8 KiB

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
}