feat(widget): finish chatwoot widget stub burn-down

This commit is contained in:
2026-06-04 22:01:30 +08:00
parent f3b450905f
commit a0003c7c06
7 changed files with 574 additions and 42 deletions
+12 -2
View File
@@ -134,6 +134,16 @@ func (r *ContactRepo) FindByEmail(ctx context.Context, accountID uint, email str
return &contact, nil
}
// FindByIdentifier retrieves a contact by external identifier within an account.
func (r *ContactRepo) FindByIdentifier(ctx context.Context, accountID uint, identifier string) (*model.Contact, error) {
var contact model.Contact
err := r.db.WithContext(ctx).Where("account_id = ? AND identifier = ?", accountID, identifier).First(&contact).Error
if err != nil {
return nil, err
}
return &contact, nil
}
// CountByAccount returns total number of contacts in an account.
func (r *ContactRepo) CountByAccount(ctx context.Context, accountID uint) (int64, error) {
var total int64
@@ -196,7 +206,7 @@ type ContactFilterParams struct {
ContactSource string `json:"contact_source,omitempty" form:"contact_source"`
InboxID *uint `json:"inbox_id,omitempty" form:"inbox_id"`
Labels string `json:"labels,omitempty" form:"labels"`
Status string `json:"status,omitempty" form:"status"` // active, inactive
Status string `json:"status,omitempty" form:"status"` // active, inactive
UpdatedWithin *int `json:"updated_within,omitempty" form:"updated_within"` // seconds
}
@@ -254,4 +264,4 @@ func (r *ContactRepo) Filter(ctx context.Context, accountID uint, params Contact
err := q.Offset(offset).Limit(limit).Order(orderClause).
Find(&contacts).Error
return contacts, total, err
}
}