package data import ( "context" "github.com/go-kratos/kratos/v2/log" "demo/internal/biz" ) type adRepo struct { data *Data log *log.Helper } func NewAdRepo(data *Data, logger log.Logger) biz.AdRepo { return &adRepo{ data: data, log: log.NewHelper(logger), } } func (p *adRepo) List(ctx context.Context, customerId int64, req *biz.ListReportRequest) (int64, biz.AdList, error) { db := p.data.db.Table("ads_report_advertise_hour"). Select("advertise_id AS ad_id,advertise_name AS ad_name, "+reportCommonFiled). Where("customer_id = ?", customerId). Where("is_delete = ?", 0) // add start_date and end_date condition if req.StartDate != "" { db = db.Where("date_long >= ?", req.StartDateLong) } if req.EndDate != "" { db = db.Where("date_long <= ?", req.EndDateLong) } var total int64 if err := db.Count(&total).Error; err != nil { return 0, nil, err } var list biz.AdList if err := db.Order(req.GetOrderBy("id") + " " + req.GetOrderByMode()). Limit(req.Limit()).Offset(req.Offset()).Scan(&list).Error; err != nil { return total, nil, err } return total, list, nil }