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.
128 lines
2.6 KiB
128 lines
2.6 KiB
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 |
|
} |
|
}
|
|
|