Skip to content

Commit 09ae9a3

Browse files
author
Jason
committed
修复统计丢失问题
1 parent ae5c23a commit 09ae9a3

1 file changed

Lines changed: 30 additions & 28 deletions

File tree

app/zkf/zkf.go

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,21 @@ func (z *ZKF) statGasByTableName(tableName string) {
9595
flag := "hour"
9696
if tableName == zkfModel.HourTable {
9797
flag = "hour"
98-
dateEnd = dateStart.Add(3599 * time.Second)
98+
dateEnd = dateStart.Add(3600 * time.Second)
99+
100+
//判断这个阶段的数据是否结束,一定要先判断,以防时间差导致结果异常
101+
tx := appModel.Transaction{}
102+
err = z.db.Last(&tx).Error
103+
if err != nil {
104+
log.Error("[zkf] => [%s] get latest tx err: %s", flag, err.Error())
105+
continue
106+
}
107+
if tx.CreatedAt.Compare(dateEnd) >= 0 {
108+
calcStatus = zkfConstant.CalcStatusStop
109+
}
99110

100111
//统计
101-
row := z.db.Model(&appModel.Transaction{}).Select("IFNULL(sum(gas_used * effective_gas_price),0),IFNULL(sum(effective_gas_price),0),IFNULL(min(block_number),0),IFNULL(max(block_number),0),IFNULL(max(created_at),now()),IFNULL(count(1),0)").Where("created_at>=? and created_at<=?", dateStart, dateEnd).Row()
112+
row := z.db.Model(&appModel.Transaction{}).Select("IFNULL(sum(gas_used * effective_gas_price),0),IFNULL(sum(effective_gas_price),0),IFNULL(min(block_number),0),IFNULL(max(block_number),0),IFNULL(max(created_at),now()),IFNULL(count(1),0)").Where("created_at>=? and created_at<?", dateStart, dateEnd).Row()
102113
err = row.Scan(&totalGasFee, &totalGasPrice, &minBlockNumber, &maxBlockNumber, &maxBlockNumberDate, &count)
103114
if err != nil {
104115
log.Error("[zkf] => [%s] stat gas data err: %s", flag, err.Error())
@@ -108,31 +119,32 @@ func (z *ZKF) statGasByTableName(tableName string) {
108119
log.Warnf("[zkf] => [%s] tx data is empty", flag)
109120
continue
110121
}
111-
112-
//判断这个阶段的数据是否结束
113-
tx := appModel.Transaction{}
114-
err = z.db.Last(&tx).Error
115-
if err != nil {
116-
log.Error("[zkf] => [%s] get latest tx err: %s", flag, err.Error())
117-
continue
118-
}
119-
if tx.CreatedAt.Compare(dateEnd) > 0 {
120-
calcStatus = zkfConstant.CalcStatusStop
121-
}
122122
} else {
123123
tbName := zkfModel.HourTable
124124
if tableName == zkfModel.DailyTable {
125125
flag = "daily"
126126
tbName = zkfModel.HourTable
127-
dateEnd = dateStart.AddDate(0, 0, 1).Add(-1 * time.Second)
127+
dateEnd = dateStart.AddDate(0, 0, 1)
128128
}
129129
if tableName == zkfModel.WeeklyTable {
130130
flag = "weekly"
131131
tbName = zkfModel.DailyTable
132-
dateEnd = dateStart.AddDate(0, 0, 7).Add(-1 * time.Second)
132+
dateEnd = dateStart.AddDate(0, 0, 7)
133133
}
134+
135+
//判断这个阶段的数据是否结束,一定要先判断,以防时间差导致结果异常
136+
zkfStatGas := zkfModel.ZkfStatGas{}
137+
err = z.db.Table(tbName).Last(&zkfStatGas).Error
138+
if err != nil {
139+
log.Errorf("[zkf] => [%s] get latest tx err: %s", flag, err.Error())
140+
continue
141+
}
142+
if zkfStatGas.DateEnd.Compare(dateEnd) >= 0 {
143+
calcStatus = zkfConstant.CalcStatusStop
144+
}
145+
134146
//统计
135-
row := z.db.Table(tbName).Select("IFNULL(sum(total_gas_fee),0),IFNULL(sum(total_gas_price),0),IFNULL(min(block_start),0),IFNULL(max(block_end),0),IFNULL(max(date_end),now()),IFNULL(sum(total_tx_count),0)").Where("date_start>=? and date_end<=?", dateStart, dateEnd).Row()
147+
row := z.db.Table(tbName).Select("IFNULL(sum(total_gas_fee),0),IFNULL(sum(total_gas_price),0),IFNULL(min(block_start),0),IFNULL(max(block_end),0),IFNULL(max(date_end),now()),IFNULL(sum(total_tx_count),0)").Where("date_start>=? and date_end<?", dateStart, dateEnd).Row()
136148
err = row.Scan(&totalGasFee, &totalGasPrice, &minBlockNumber, &maxBlockNumber, &maxBlockNumberDate, &count)
137149
if err != nil {
138150
log.Error("[zkf] => [%s] stat gas data err: %s", flag, err.Error())
@@ -143,17 +155,6 @@ func (z *ZKF) statGasByTableName(tableName string) {
143155
log.Warnf("[zkf] => [%s] %s data is empty", flag, tbName)
144156
continue
145157
}
146-
147-
//判断这个阶段的数据是否结束
148-
zkfStatGas := zkfModel.ZkfStatGas{}
149-
err = z.db.Table(tbName).Last(&zkfStatGas).Error
150-
if err != nil {
151-
log.Errorf("[zkf] => [%s] get latest tx err: %s", flag, err.Error())
152-
continue
153-
}
154-
if zkfStatGas.DateEnd.Compare(dateEnd) > 0 {
155-
calcStatus = zkfConstant.CalcStatusStop
156-
}
157158
}
158159

159160
//若没有新增数据,则继续下一轮,减少数据写入频率
@@ -167,7 +168,8 @@ func (z *ZKF) statGasByTableName(tableName string) {
167168
result.DateEnd = &maxBlockNumberDate
168169
//若结束,则用截止时间
169170
if calcStatus == zkfConstant.CalcStatusStop {
170-
result.DateEnd = &dateEnd
171+
end := dateEnd.Add(-1 * time.Second)
172+
result.DateEnd = &end
171173
}
172174
result.BlockStart = minBlockNumber
173175
result.BlockEnd = maxBlockNumber

0 commit comments

Comments
 (0)