修改包名
This commit is contained in:
79
syncdata/base_report_sync.go
Normal file
79
syncdata/base_report_sync.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package syncdata
|
||||
|
||||
import (
|
||||
"context"
|
||||
)
|
||||
|
||||
type ReportSyncable interface {
|
||||
FetchReport(ctx context.Context, params interface{}) (interface{}, error)
|
||||
ConvertToSum(apiData interface{}, dataType string) interface{}
|
||||
ConvertToDetails(apiData interface{}, dataType string) []interface{}
|
||||
SaveSum(ctx context.Context, data interface{}) (int64, error)
|
||||
SaveDetails(ctx context.Context, data []interface{}) (successCount, failCount int64, err error)
|
||||
}
|
||||
|
||||
type BaseReportSync struct {
|
||||
httpClient *HttpClient
|
||||
}
|
||||
|
||||
func NewBaseReportSync() *BaseReportSync {
|
||||
return &BaseReportSync{
|
||||
httpClient: NewHttpClient("", 0),
|
||||
}
|
||||
}
|
||||
|
||||
func (b *BaseReportSync) FetchReport(ctx context.Context, params interface{}) (interface{}, error) {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (b *BaseReportSync) ConvertToSum(apiData interface{}, dataType string) interface{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *BaseReportSync) ConvertToDetails(apiData interface{}, dataType string) []interface{} {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (b *BaseReportSync) SaveSum(ctx context.Context, data interface{}) (int64, error) {
|
||||
return 0, nil
|
||||
}
|
||||
|
||||
func (b *BaseReportSync) SaveDetails(ctx context.Context, data []interface{}) (int64, int64, error) {
|
||||
return 0, 0, nil
|
||||
}
|
||||
|
||||
func (b *BaseReportSync) ExecuteSync(ctx context.Context, syncer ReportSyncable, params interface{}, dataType string, useMock bool) (*SyncResult, error) {
|
||||
result := &SyncResult{}
|
||||
|
||||
apiData, err := syncer.FetchReport(ctx, params)
|
||||
if err != nil {
|
||||
result.Error = err
|
||||
return result, err
|
||||
}
|
||||
|
||||
sumData := syncer.ConvertToSum(apiData, dataType)
|
||||
if sumData != nil {
|
||||
sumID, err := syncer.SaveSum(ctx, sumData)
|
||||
if err != nil {
|
||||
result.Error = err
|
||||
return result, err
|
||||
}
|
||||
result.SumSuccess = true
|
||||
result.SumID = sumID
|
||||
}
|
||||
|
||||
detailData := syncer.ConvertToDetails(apiData, dataType)
|
||||
if len(detailData) > 0 {
|
||||
successCount, failCount, err := syncer.SaveDetails(ctx, detailData)
|
||||
if err != nil {
|
||||
result.Error = err
|
||||
return result, err
|
||||
}
|
||||
result.DetailSuccess = true
|
||||
result.DetailCount = len(detailData)
|
||||
result.DetailSuccessCount = successCount
|
||||
result.DetailFailCount = failCount
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user