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 }