49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
|
|
package crm
|
||
|
|
|
||
|
|
import (
|
||
|
|
crmusecase "haixun-backend/internal/model/crm_contact/domain/usecase"
|
||
|
|
"haixun-backend/internal/types"
|
||
|
|
)
|
||
|
|
|
||
|
|
func toCrmContactData(item *crmusecase.CRMContactSummary) *types.CrmContactData {
|
||
|
|
if item == nil {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
return &types.CrmContactData{
|
||
|
|
ID: item.ID,
|
||
|
|
BrandID: item.BrandID,
|
||
|
|
AuthorID: item.AuthorID,
|
||
|
|
AuthorName: item.AuthorName,
|
||
|
|
AuthorAvatar: item.AuthorAvatar,
|
||
|
|
AuthorFollowers: item.AuthorFollowers,
|
||
|
|
ScanPostID: item.ScanPostID,
|
||
|
|
Notes: item.Notes,
|
||
|
|
Tags: item.Tags,
|
||
|
|
Status: item.Status,
|
||
|
|
OutreachCount: item.OutreachCount,
|
||
|
|
LastContactedAt: item.LastContactedAt,
|
||
|
|
CreateAt: item.CreateAt,
|
||
|
|
UpdateAt: item.UpdateAt,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func toCrmContactListData(items []crmusecase.CRMContactSummary, total, page, pageSize int) *types.CrmContactListData {
|
||
|
|
totalPages := 0
|
||
|
|
if total > 0 {
|
||
|
|
totalPages = (total + pageSize - 1) / pageSize
|
||
|
|
}
|
||
|
|
data := make([]types.CrmContactData, 0, len(items))
|
||
|
|
for _, item := range items {
|
||
|
|
data = append(data, *toCrmContactData(&item))
|
||
|
|
}
|
||
|
|
return &types.CrmContactListData{
|
||
|
|
List: data,
|
||
|
|
Pagination: types.PaginationData{
|
||
|
|
Total: int64(total),
|
||
|
|
Page: int64(page),
|
||
|
|
PageSize: int64(pageSize),
|
||
|
|
TotalPages: int64(totalPages),
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|