diff --git a/server/marketserver/cache/cachemgr.go b/server/marketserver/cache/cachemgr.go new file mode 100644 index 00000000..c2cd965e --- /dev/null +++ b/server/marketserver/cache/cachemgr.go @@ -0,0 +1,13 @@ +package cache + +type cacheMgr struct { + +} + +func (this *cacheMgr) Init() { + +} + +func (this *cacheMgr) UnInit() { + +} diff --git a/server/marketserver/cache/export.go b/server/marketserver/cache/export.go new file mode 100644 index 00000000..273ccdba --- /dev/null +++ b/server/marketserver/cache/export.go @@ -0,0 +1,12 @@ +package cache + +import ( + "main/constant" + "main/global" +) + +var _cacheMgr = new(cacheMgr) + +func init() { + global.RegModule(constant.CACHE_MGR_MODULE_IDX, _cacheMgr) +} diff --git a/server/marketserver/common/types.go b/server/marketserver/common/types.go index 6020261b..a1c2bb96 100644 --- a/server/marketserver/common/types.go +++ b/server/marketserver/common/types.go @@ -17,19 +17,21 @@ type OrderUpdatedEvent struct { Chain string `json:"chain"` Data struct { Id string `json:"id"` + Sell [] struct { + TokenId string `json:"token_id"` + ItemType string `json:"item_type"` + EndAmount string `json:"end_amount"` + StartAmount string `json:"start_amount"` + ContractAddress string `json:"contract_address"` + } `json:"sell"` + Status struct { + Name string `json:"name"` + } `json:"status"` + StartAt interface{} `json:"start_at"` + EndAt interface{} `json:"end_at"` + CreatedAt interface{} `json:"created_at"` + UpdatedAt interface{} `json:"updated_at"` } `json:"data"` - Sell [] struct { - TokenId string `json:"token_id"` - ItemType string `json:"item_type"` - EndAmount string `json:"end_amount"` - StartAmount string `json:"start_amount"` - ContractAddress string `json:"contract_address"` - } `json:"sell"` - Status string `json:"status"` - StartTime int32 `json:"start_time"` - EndTime int32 `json:"end_time"` - CreatedAt int32 `json:"created_at"` - UpdatedAt int32 `json:"updated_at"` } type App interface { @@ -41,3 +43,6 @@ type RouterMgr interface{ type TaskMgr interface{ } + +type CacheMgr interface{ +} diff --git a/server/marketserver/constant/constant.go b/server/marketserver/constant/constant.go index 0d24deed..318bcacc 100644 --- a/server/marketserver/constant/constant.go +++ b/server/marketserver/constant/constant.go @@ -10,6 +10,7 @@ const ( APP_MODULE_IDX = iota ROUTER_MGR_MODULE_IDX TASK_MGR_MODULE_IDX + CACHE_MGR_MODULE_IDX MAX_MODULE_IDX ) diff --git a/server/marketserver/global/global.go b/server/marketserver/global/global.go index 184b38f6..b130ebb8 100644 --- a/server/marketserver/global/global.go +++ b/server/marketserver/global/global.go @@ -10,11 +10,13 @@ import ( var modules [constant.MAX_MODULE_IDX]q5.Module var initOrders = []int32{ constant.ROUTER_MGR_MODULE_IDX, + constant.TASK_MGR_MODULE_IDX, } var app common.App var routerMgr common.RouterMgr var taskMgr common.TaskMgr +var cacheMgr common.CacheMgr func GetApp() common.App { return app @@ -28,6 +30,10 @@ func GetTaskMgr() common.TaskMgr { return taskMgr } +func GetCacheMgr() common.CacheMgr { + return cacheMgr +} + func RegModule(idx int32, m q5.Module) { fmt.Printf("RegModule module %d\n", idx) modules[idx] = m @@ -44,6 +50,10 @@ func RegModule(idx int32, m q5.Module) { { taskMgr = m.(common.TaskMgr) } + case constant.CACHE_MGR_MODULE_IDX: + { + cacheMgr = m.(common.CacheMgr) + } default: { panic("unknow module") diff --git a/server/marketserver/initialize/enter.go b/server/marketserver/initialize/enter.go index 276931c8..08bd333a 100644 --- a/server/marketserver/initialize/enter.go +++ b/server/marketserver/initialize/enter.go @@ -5,6 +5,7 @@ import ( . "main/global" _ "main/router" _ "main/task" + _ "main/cache" ) func Init() { diff --git a/server/marketserver/task/taskmgr.go b/server/marketserver/task/taskmgr.go index 37e44828..fc984d7e 100644 --- a/server/marketserver/task/taskmgr.go +++ b/server/marketserver/task/taskmgr.go @@ -32,9 +32,10 @@ func (this* taskMgr) loadWebHookEvent(eventName string, cb func(ds *f5.DataSet) var newLastSyncIdx int64 f5.GetGoStyleDb().RawQuery( constant.BCEVENT_DB, - "SELECT * FROM t_webhook_process_last_idx WHERE idx > ? LIMIT 1000", + "SELECT * FROM t_webhook_event WHERE idx > ? AND event_name = ? LIMIT 1000", []string{ q5.ToString(lastSyncIdx), + eventName, }, func (err error, ds *f5.DataSet) { if err == nil { @@ -106,7 +107,6 @@ func (this* taskMgr) saveLastIdx(eventName string, lastIdx int64) bool { func (this* taskMgr) orderUpdatedCb(ds *f5.DataSet) bool { nowTime := f5.GetApp().GetRealSeconds() - //eventId := ds.GetByName("event_id") rawData := ds.GetByName("raw_data") p := new(common.OrderUpdatedEvent) err := q5.DecodeJson(rawData, &p) @@ -115,11 +115,11 @@ func (this* taskMgr) orderUpdatedCb(ds *f5.DataSet) bool { updateFields := [][]string{ {"order_id", p.Data.Id}, {"chain", p.Chain}, - {"status", p.Status}, - {"start_time", q5.ToString(p.StartTime)}, - {"end_time", q5.ToString(p.EndTime)}, - {"created_at", q5.ToString(p.CreatedAt)}, - {"updated_at", q5.ToString(p.UpdatedAt)}, + {"status", p.Data.Status.Name}, + {"start_time", q5.SafeToString(p.Data.StartAt)}, + {"end_time", q5.SafeToString(p.Data.EndAt)}, + {"created_at", q5.SafeToString(p.Data.CreatedAt)}, + {"updated_at", q5.SafeToString(p.Data.UpdatedAt)}, {"event_id", p.EventId}, {"event_data", rawData}, {"modifytime", q5.ToString(nowTime)}, @@ -127,26 +127,26 @@ func (this* taskMgr) orderUpdatedCb(ds *f5.DataSet) bool { insertFields := [][]string{ {"order_id", p.Data.Id}, {"chain", p.Chain}, - {"status", p.Status}, + {"status", p.Data.Status.Name}, {"net_id", q5.ToString(netId)}, - {"token_id", p.Sell[0].TokenId}, - {"contract_address", p.Sell[0].ContractAddress}, - {"start_time", q5.ToString(p.StartTime)}, - {"end_time", q5.ToString(p.EndTime)}, - {"created_at", q5.ToString(p.CreatedAt)}, - {"updated_at", q5.ToString(p.UpdatedAt)}, + {"token_id", p.Data.Sell[0].TokenId}, + {"contract_address", p.Data.Sell[0].ContractAddress}, + {"start_time", q5.SafeToString(p.Data.StartAt)}, + {"end_time", q5.SafeToString(p.Data.EndAt)}, + {"created_at", q5.SafeToString(p.Data.CreatedAt)}, + {"updated_at", q5.SafeToString(p.Data.UpdatedAt)}, {"event_id", p.EventId}, {"event_data", rawData}, {"createtime", q5.ToString(nowTime)}, {"modifytime", q5.ToString(nowTime)}, } - f5.GetGoStyleDb().Upsert( + f5.GetGoStyleDb().UpsertEx( constant.BCNFT_DB, "t_order", [][]string{ {"net_id", q5.ToString(netId)}, - {"contract_address", p.Sell[0].ContractAddress}, - {"token_id", p.Sell[0].TokenId}, + {"contract_address", p.Data.Sell[0].ContractAddress}, + {"token_id", p.Data.Sell[0].TokenId}, }, updateFields, insertFields, @@ -154,6 +154,9 @@ func (this* taskMgr) orderUpdatedCb(ds *f5.DataSet) bool { if err != nil { return } + }, + func (ds *f5.DataSet) bool { + return p.EventId > ds.GetByName("event_id") }) } return true