diff --git a/server/jccommon/types.go b/server/jccommon/types.go index b304a45d..7ecee479 100644 --- a/server/jccommon/types.go +++ b/server/jccommon/types.go @@ -108,6 +108,13 @@ type UserStackingPo struct { Contracts []*ContractStackingPo `json:"contracts"` } +type ContractStackingCecPo struct { + NetId int32 `json:"net_id"` + ContractAddress string `json:"contract_address"` + TokenType int32 `json:"token_type"` + Nfts []*NftStackingPo `json:"nfts"` +} + type NftIdentity struct { NetId int32 ContractAddress string @@ -141,6 +148,11 @@ func NewContractStackingPo() *ContractStackingPo { return p } +func NewContractStackingCecPo() *ContractStackingCecPo { + p := new(ContractStackingCecPo) + return p +} + func NewUserStackingPo() *UserStackingPo { p := new(UserStackingPo) p.Contracts = []*ContractStackingPo{} diff --git a/server/light_backtask/task/stacking_go.go b/server/light_backtask/task/stacking_go.go new file mode 100644 index 00000000..c6ddde1d --- /dev/null +++ b/server/light_backtask/task/stacking_go.go @@ -0,0 +1,88 @@ +package task + +import ( + "q5" + "f5" + "main/mt" + "main/service" + "jccommon" + "time" +) + +type stackingCec struct { + lockMetas []*mt.Contract +} + +type accountStackingCec struct { + accountAddress string +} + +func (this* stackingCec) init() { + this.lockMetas = []*mt.Contract{} + mt.Table.Contract.Traverse(func (ele *mt.Contract) bool { + if ele.GetName() == jccommon.CONTRACT_NAME_NFTLock { + q5.AppendSlice(&this.lockMetas, ele) + f5.GetSysLog().Info("task.contribution.init load lockMetas net_id:%d name:%s contract_address:%s", + ele.GetNetId(), + ele.GetName(), + ele.GetAddress()) + } + return true + }) + if len(this.lockMetas) <= 0 { + panic("task.contribution.init lockMetas is empty") + return + } + go this.calc() +} + +func (this* stackingCec) unInit() { +} + +func (this* stackingCec) stat(statTime int64, nowTime int64) { +} + +func (this* stackingCec) calc() { + for true { + nowTime := f5.GetApp().GetRealSeconds() + this.stat(nowTime - 3600 * 24, nowTime) + + nowTime = f5.GetApp().GetRealSeconds() + daySeconds := q5.GetDaySeconds(nowTime, 0) + sleepTime := daySeconds + 3600 * 24 - nowTime + 3 + time.Sleep(time.Second * time.Duration(sleepTime)) + } +} + +func (this* stackingCec) isStatEd(statDaySeconds int64) (error, bool) { + return nil, false +} + +func (this* stackingCec) loadFromDb(addressHash *q5.ConcurrentMap[string, *accountStackingCec], + ds *f5.DataSet) bool { + accountAddress := ds.GetByName("last_lock_address") + if accountAddress == "" { + return true + } + ownerAddress := ds.GetByName("owner_address") + p := new(jccommon.NftStacking) + p.NetId = q5.ToInt32(ds.GetByName("net_id")) + p.ContractAddress = ds.GetByName("contract_address") + p.TokenType = q5.ToInt32(ds.GetByName("token_type")) + p.TokenId = ds.GetByName("token_id") + p.ItemId = q5.ToInt32(ds.GetByName("item_id")) + p.Quality = q5.ToInt32(ds.GetByName("quality")) + lockMeta := mt.Table.Contract.GetByNetIdName(p.NetId, jccommon.CONTRACT_NAME_NFTLock) + if lockMeta == nil { + return true + } + if lockMeta.GetAddress() != ownerAddress { + return true + } + return true +} + +func (this* stackingCec) saveToDb() { + +} +,