thread-master/apps/backend/internal/logic/crm/get_crm_stats_logic.go

43 lines
973 B
Go
Raw Normal View History

2026-08-03 05:52:02 +00:00
package crm
import (
"context"
"apps/backend/internal/svc"
"apps/backend/internal/types"
"github.com/zeromicro/go-zero/core/logx"
)
type GetCrmStatsLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
func NewGetCrmStatsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetCrmStatsLogic {
return &GetCrmStatsLogic{Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx}
}
func (l *GetCrmStatsLogic) GetCrmStats(req *types.CrmStatsReq) (*types.CrmStatsData, error) {
uid, err := ownerUID(l.ctx)
if err != nil {
return nil, err
}
stats, err := l.svcCtx.Crm.Stats(l.ctx, uid, req.From, req.To)
if err != nil {
return nil, err
}
won := 0
if v, ok := stats["won"].(int); ok {
won = v
}
return &types.CrmStatsData{
Terms: []types.TermConversionStat{},
Variants: []types.VariantConversionStat{},
Sources: []types.SourceConversionStat{
{Source: "radar", Won: won, InsufficientSample: won < 5},
},
}, nil
}