215 lines
4.9 KiB
Go
215 lines
4.9 KiB
Go
package model
|
||
|
||
import (
|
||
"errors"
|
||
"github.com/globalsign/mgo/bson"
|
||
"time"
|
||
)
|
||
|
||
// 跑马灯
|
||
var (
|
||
HorseRaceLampDBName = "user"
|
||
HorseRaceLampCollName = "user_horseracelamp"
|
||
)
|
||
|
||
type RemoveHorseRaceLampArg struct {
|
||
Platform string
|
||
Key string
|
||
}
|
||
|
||
type RemoveHorseRaceLampRet struct {
|
||
Data *interface{}
|
||
Tag int
|
||
}
|
||
type HorseRaceLamp struct {
|
||
Id bson.ObjectId `bson:"_id"`
|
||
Channel string //渠道
|
||
Title string //标题
|
||
Content string //公告内容
|
||
Footer string
|
||
StartTime int64 //开始播放的时间
|
||
Interval int32 //播放间隔
|
||
Count int32 //播放次数
|
||
CreateTime int64 //创建公告的时间
|
||
Priority int32 //播放优先级
|
||
MsgType int32 //公告类型
|
||
Platform string //公告播放的平台
|
||
State int32 //状态 0.启用;1.关闭
|
||
Target []int32
|
||
StandSec int32
|
||
}
|
||
|
||
func NewHorseRaceLamp(channel, platform, title, content, footer string, startTime int64, interval int32, count int32, priority, state int32,
|
||
msgType int32, target []int32, standSec int32) *HorseRaceLamp {
|
||
horseracelamp := &HorseRaceLamp{
|
||
Id: bson.NewObjectId(),
|
||
Channel: channel,
|
||
Title: title,
|
||
Content: content,
|
||
Footer: footer,
|
||
StartTime: startTime,
|
||
Interval: interval,
|
||
Count: count,
|
||
Priority: priority,
|
||
CreateTime: time.Now().Unix(),
|
||
MsgType: msgType,
|
||
Platform: platform,
|
||
State: state,
|
||
Target: target,
|
||
StandSec: standSec,
|
||
}
|
||
return horseracelamp
|
||
}
|
||
|
||
type InsertHorseRaceLampArgs struct {
|
||
HorseRaceLamps []*HorseRaceLamp
|
||
Platform string
|
||
}
|
||
|
||
func InsertHorseRaceLamp(platform string, notices ...*HorseRaceLamp) (err error) {
|
||
if len(notices) == 0 {
|
||
return errors.New("no data")
|
||
}
|
||
if rpcCli == nil {
|
||
return ErrRPClientNoConn
|
||
}
|
||
args := InsertHorseRaceLampArgs{
|
||
HorseRaceLamps: notices,
|
||
Platform: platform,
|
||
}
|
||
var ret bool
|
||
err = rpcCli.CallWithTimeout("HorseRaceLampSvc.InsertHorseRaceLamp", args, &ret, time.Second*30)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
return
|
||
}
|
||
|
||
type GetHorseRaceLampArgs struct {
|
||
Platform string
|
||
Id bson.ObjectId
|
||
}
|
||
|
||
func GetHorseRaceLamp(platform string, Id bson.ObjectId) (ret *HorseRaceLamp, err error) {
|
||
args := GetHorseRaceLampArgs{
|
||
Platform: platform,
|
||
Id: Id,
|
||
}
|
||
err = rpcCli.CallWithTimeout("HorseRaceLampSvc.GetHorseRaceLamp", args, &ret, time.Second*30)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return
|
||
}
|
||
|
||
func RemoveHorseRaceLamp(plt, key string) (err error) {
|
||
if rpcCli == nil {
|
||
return ErrRPClientNoConn
|
||
}
|
||
|
||
args := &RemoveHorseRaceLampArg{Key: key, Platform: plt}
|
||
var ret bool
|
||
err = rpcCli.CallWithTimeout("HorseRaceLampSvc.RemoveHorseRaceLamp", args, &ret, time.Second*30)
|
||
if err != nil {
|
||
return err
|
||
}
|
||
return nil
|
||
}
|
||
|
||
/*
|
||
func StopHorseRaceLamp(key string) (err error) {
|
||
Id := bson.ObjectIdHex(key)
|
||
err = HorseRaceLampCollection().Update(bson.M{"_id": Id}, bson.D{{"$set", bson.D{{"state", NOTICESTATE_STOP}}}})
|
||
return err
|
||
}*/
|
||
|
||
func GetAllHorseRaceLamp(plt string) (notice []HorseRaceLamp, err error) {
|
||
if rpcCli == nil {
|
||
return nil, ErrRPClientNoConn
|
||
}
|
||
err = rpcCli.CallWithTimeout("HorseRaceLampSvc.GetAllHorseRaceLamp", plt, ¬ice, time.Second*30)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
return notice, nil
|
||
}
|
||
|
||
type EditHorseRaceLampArg struct {
|
||
Key string
|
||
Channel string
|
||
Platform string
|
||
Title string
|
||
Content string
|
||
Footer string
|
||
StartTime int64
|
||
Interval int32
|
||
Count int32
|
||
Priority int32
|
||
MsgType int32
|
||
State int32
|
||
Target []int32
|
||
StandSec int32
|
||
}
|
||
type EditHorseRaceLampRet struct {
|
||
Tag int
|
||
}
|
||
|
||
func EditHorseRaceLamp(hrl *HorseRaceLamp) (err error) {
|
||
if rpcCli == nil {
|
||
return ErrRPClientNoConn
|
||
}
|
||
args := &EditHorseRaceLampArg{
|
||
Key: hrl.Id.Hex(),
|
||
Channel: hrl.Channel,
|
||
Platform: hrl.Platform,
|
||
Title: hrl.Title,
|
||
Content: hrl.Content,
|
||
Footer: hrl.Footer,
|
||
StartTime: hrl.StartTime,
|
||
Interval: hrl.Interval,
|
||
Count: hrl.Count,
|
||
Priority: hrl.Priority,
|
||
MsgType: hrl.MsgType,
|
||
State: hrl.State,
|
||
Target: hrl.Target,
|
||
StandSec: hrl.StandSec,
|
||
}
|
||
var ret bool
|
||
err = rpcCli.CallWithTimeout("HorseRaceLampSvc.EditHorseRaceLamp", args, &ret, time.Second*30)
|
||
return err
|
||
}
|
||
|
||
type QueryHorseRaceLampArg struct {
|
||
Platform string
|
||
MsgType int32
|
||
State int32
|
||
ToIndex int32
|
||
FromIndex int
|
||
LimitDataNum int
|
||
}
|
||
type QueryHorseRaceLampRet struct {
|
||
Data []HorseRaceLamp
|
||
Count int
|
||
}
|
||
|
||
func GetHorseRaceLampInRangeTsLimitByRange(platform string, msgType, state, fromIndex,
|
||
toIndex int32) (ret *QueryHorseRaceLampRet, err error) {
|
||
if rpcCli == nil {
|
||
return nil, ErrRPClientNoConn
|
||
}
|
||
limitDataNum := toIndex - fromIndex
|
||
if limitDataNum < 0 {
|
||
limitDataNum = 0
|
||
}
|
||
args := &QueryHorseRaceLampArg{
|
||
Platform: platform,
|
||
MsgType: msgType,
|
||
State: state,
|
||
FromIndex: int(fromIndex),
|
||
ToIndex: toIndex,
|
||
LimitDataNum: int(limitDataNum),
|
||
}
|
||
err = rpcCli.CallWithTimeout("HorseRaceLampSvc.GetHorseRaceLampInRangeTsLimitByRange", args, &ret, time.Second*30)
|
||
return
|
||
}
|