129 lines
2.6 KiB
Go
129 lines
2.6 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// LoopOffset single table offset
|
|
type LoopOffset struct {
|
|
IsLoop bool
|
|
OffsetID int64
|
|
OffsetTime string
|
|
TempOffsetID int64
|
|
TempOffsetTime string
|
|
RecoverID int64
|
|
RecoverTime string
|
|
TempRecoverID int64
|
|
TempRecoverTime string
|
|
ReviewID int64
|
|
ReviewTime int64
|
|
}
|
|
|
|
// SetLoop .
|
|
func (lo *LoopOffset) SetLoop(isLoop bool) {
|
|
lo.IsLoop = isLoop
|
|
}
|
|
|
|
// SetReview .
|
|
func (lo *LoopOffset) SetReview(rid int64, rtime int64) {
|
|
lo.ReviewID = rid
|
|
lo.ReviewTime = rtime
|
|
}
|
|
|
|
// SetOffset .
|
|
func (lo *LoopOffset) SetOffset(id int64, t string) {
|
|
if id != 0 {
|
|
lo.OffsetID = id
|
|
}
|
|
if t != "" {
|
|
lo.OffsetTime = t
|
|
if !lo.IsLoop {
|
|
if local, err := time.LoadLocation("Local"); err == nil {
|
|
if t2, e := time.ParseInLocation("2006-01-02 15:04:05", t, local); e == nil && t2.Unix()-lo.ReviewTime > 0 {
|
|
lo.OffsetTime = time.Unix(t2.Unix()-lo.ReviewTime, 0).Format("2006-01-02 15:04:05") //往前推ReviewTime
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// SetTempOffset .
|
|
func (lo *LoopOffset) SetTempOffset(id int64, time string) {
|
|
if id != 0 {
|
|
lo.TempOffsetID = id
|
|
}
|
|
if time != "" {
|
|
lo.TempOffsetTime = time
|
|
}
|
|
}
|
|
|
|
// SetRecoverOffset .
|
|
func (lo *LoopOffset) SetRecoverOffset(recoverID int64, recoverTime string) {
|
|
if recoverID >= 0 {
|
|
lo.RecoverID = recoverID
|
|
}
|
|
if recoverTime != "" {
|
|
lo.RecoverTime = recoverTime
|
|
}
|
|
}
|
|
|
|
// SetRecoverTempOffset .
|
|
func (lo *LoopOffset) SetRecoverTempOffset(recoverID int64, recoverTime string) {
|
|
if recoverID >= 0 {
|
|
lo.TempRecoverID = recoverID
|
|
}
|
|
if recoverTime != "" {
|
|
lo.TempRecoverTime = recoverTime
|
|
}
|
|
}
|
|
|
|
// LoopOffsets more tables offset
|
|
type LoopOffsets map[int]*LoopOffset
|
|
|
|
// SetLoops .
|
|
func (los LoopOffsets) SetLoops(i int, isLoop bool) {
|
|
if _, ok := los[i]; ok {
|
|
los[i].IsLoop = isLoop
|
|
}
|
|
}
|
|
|
|
// SetOffsets .
|
|
func (los LoopOffsets) SetOffsets(i int, id int64, time string) {
|
|
if id != 0 {
|
|
los[i].OffsetID = id
|
|
}
|
|
if time != "" {
|
|
los[i].OffsetTime = time
|
|
}
|
|
}
|
|
|
|
// SetTempOffsets .
|
|
func (los LoopOffsets) SetTempOffsets(i int, id int64, time string) {
|
|
if id != 0 {
|
|
los[i].TempOffsetID = id
|
|
}
|
|
if time != "" {
|
|
los[i].TempOffsetTime = time
|
|
}
|
|
}
|
|
|
|
// SetRecoverOffsets .
|
|
func (los LoopOffsets) SetRecoverOffsets(i int, recoverID int64, recoverTime string) {
|
|
if recoverID >= 0 {
|
|
los[i].RecoverID = recoverID
|
|
}
|
|
if recoverTime != "" {
|
|
los[i].RecoverTime = recoverTime
|
|
}
|
|
}
|
|
|
|
// SetRecoverTempOffsets .
|
|
func (los LoopOffsets) SetRecoverTempOffsets(i int, recoverID int64, recoverTime string) {
|
|
if recoverID >= 0 {
|
|
los[i].TempRecoverID = recoverID
|
|
}
|
|
if recoverTime != "" {
|
|
los[i].TempRecoverTime = recoverTime
|
|
}
|
|
}
|