62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
|
|
package crm
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
|
||
|
|
"apps/backend/internal/logic/crmmap"
|
||
|
|
"apps/backend/internal/svc"
|
||
|
|
"apps/backend/internal/types"
|
||
|
|
|
||
|
|
"github.com/zeromicro/go-zero/core/logx"
|
||
|
|
)
|
||
|
|
|
||
|
|
type GetContactLogic struct {
|
||
|
|
logx.Logger
|
||
|
|
ctx context.Context
|
||
|
|
svcCtx *svc.ServiceContext
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewGetContactLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetContactLogic {
|
||
|
|
return &GetContactLogic{Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (l *GetContactLogic) GetContact(req *types.GetContactReq) (*types.ContactDetailData, error) {
|
||
|
|
uid, err := ownerUID(l.ctx)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
c, touches, total, err := l.svcCtx.Crm.GetContact(l.ctx, uid, int64(req.Page), int64(req.PageSize), req.Id)
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
briefs := make([]types.ContactOpportunityBrief, 0)
|
||
|
|
for _, raw := range l.svcCtx.Crm.OpportunityBriefs(l.ctx, uid, c.OpportunityIDs) {
|
||
|
|
b := types.ContactOpportunityBrief{}
|
||
|
|
if v, ok := raw["id"].(string); ok {
|
||
|
|
b.Id = v
|
||
|
|
}
|
||
|
|
if v, ok := raw["permalink"].(string); ok {
|
||
|
|
b.Permalink = v
|
||
|
|
}
|
||
|
|
if v, ok := raw["text"].(string); ok {
|
||
|
|
b.Text = v
|
||
|
|
}
|
||
|
|
if v, ok := raw["intent_score"].(int); ok {
|
||
|
|
b.IntentScore = v
|
||
|
|
}
|
||
|
|
if v, ok := raw["intent_band"].(string); ok {
|
||
|
|
b.IntentBand = v
|
||
|
|
}
|
||
|
|
if v, ok := raw["created_at"].(int64); ok {
|
||
|
|
b.CreatedAt = v
|
||
|
|
}
|
||
|
|
briefs = append(briefs, b)
|
||
|
|
}
|
||
|
|
return &types.ContactDetailData{
|
||
|
|
Contact: *crmmap.Contact(c),
|
||
|
|
Touches: crmmap.TouchList(touches),
|
||
|
|
Pagination: crmmap.Pagination(req.Page, req.PageSize, total),
|
||
|
|
Opportunities: briefs,
|
||
|
|
}, nil
|
||
|
|
}
|