From 1b950fddf1936bed308720250b9fb1b1ae7319e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E4=BA=91=E9=87=91YunjinXu?= Date: Tue, 6 Jun 2023 14:31:53 +0800 Subject: [PATCH] Implement trans query condition: Status, TransType, CreateTime. --- dtmsvr/storage/boltdb/boltdb.go | 7 ++++++- dtmsvr/storage/redis/redis.go | 8 ++++++-- dtmsvr/storage/sql/sql.go | 18 ++++++++++++++++-- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/dtmsvr/storage/boltdb/boltdb.go b/dtmsvr/storage/boltdb/boltdb.go index ccd6f1d..e940b01 100644 --- a/dtmsvr/storage/boltdb/boltdb.go +++ b/dtmsvr/storage/boltdb/boltdb.go @@ -321,8 +321,13 @@ func (s *Store) ScanTransGlobalStores(position *string, limit int64, condition s } g := storage.TransGlobalStore{} dtmimp.MustUnmarshal(v, &g) + if !((condition.Status == "" || g.Status == condition.Status) && + (condition.TransType == "" || g.TransType == condition.TransType) && + (condition.CreateTimeStart.IsZero() || g.CreateTime.After(condition.CreateTimeStart)) && + (condition.CreateTimeEnd.IsZero() || g.CreateTime.Before(condition.CreateTimeEnd))) { + continue + } globals = append(globals, g) - // todo condition if len(globals) == int(limit) { break } diff --git a/dtmsvr/storage/redis/redis.go b/dtmsvr/storage/redis/redis.go index 1a35620..9b80d2d 100644 --- a/dtmsvr/storage/redis/redis.go +++ b/dtmsvr/storage/redis/redis.go @@ -80,8 +80,12 @@ func (s *Store) ScanTransGlobalStores(position *string, limit int64, condition s for _, v := range values { global := storage.TransGlobalStore{} dtmimp.MustUnmarshalString(v.(string), &global) - // todo condition - globals = append(globals, global) + if (condition.Status == "" || global.Status == condition.Status) && + (condition.TransType == "" || global.TransType == condition.TransType) && + (condition.CreateTimeStart.IsZero() || global.CreateTime.After(condition.CreateTimeStart)) && + (condition.CreateTimeEnd.IsZero() || global.CreateTime.Before(condition.CreateTimeEnd)) { + globals = append(globals, global) + } if len(globals) == int(limit) { break } diff --git a/dtmsvr/storage/sql/sql.go b/dtmsvr/storage/sql/sql.go index bcbbbb1..3a390cb 100644 --- a/dtmsvr/storage/sql/sql.go +++ b/dtmsvr/storage/sql/sql.go @@ -58,8 +58,22 @@ func (s *Store) ScanTransGlobalStores(position *string, limit int64, condition s if *position != "" { lid = dtmimp.MustAtoi(*position) } - // todo condition - dbr := dbGet().Must().Where("id < ?", lid).Order("id desc").Limit(int(limit)).Find(&globals) + query := dbGet().Must().Where("id < ?", lid) + if condition.Status != "" { + query = query.Where("status = ?", condition.Status) + } + if condition.TransType != "" { + query = query.Where("trans_type = ?", condition.TransType) + } + if !condition.CreateTimeStart.IsZero() { + query = query.Where("create_time >= ?", condition.CreateTimeStart.Format("2006-01-02 15:04:05")) + } + if !condition.CreateTimeEnd.IsZero() { + query = query.Where("create_time <= ?", condition.CreateTimeEnd.Format("2006-01-02 15:04:05")) + } + + dbr := query.Order("id desc").Limit(int(limit)).Find(&globals) + if dbr.RowsAffected < limit { *position = "" } else {