Files
nl-blogs/server/repositories/inquiry_repository.go
2026-01-16 13:01:21 +08:00

152 lines
4.1 KiB
Go

package repositories
import (
"log"
"time"
"github.com/niangaodev/art-code/config"
"github.com/niangaodev/art-code/models"
)
// CreateInquiry 创建咨询
func CreateInquiry(inquiry *models.Inquiry) error {
now := time.Now().Unix()
query := `INSERT INTO inquiries (name, company, contact_method, contact_value, budget, description, status, created_at, updated_at, deleted_at) VALUES (?, ?, ?, ?, ?, ?, 0, ?, ?, 0)`
_, err := config.DB.Exec(query, inquiry.Name, inquiry.Company, inquiry.ContactMethod, inquiry.ContactValue, inquiry.Budget, inquiry.Description, now, now)
if err != nil {
log.Printf("Error creating inquiry: %v", err)
return err
}
return nil
}
// GetInquiries 获取咨询列表 (Admin)
func GetInquiries() ([]models.Inquiry, error) {
// Added deleted_at check
rows, err := config.DB.Query("SELECT id, name, company, contact_method, contact_value, budget, description, status, created_at, updated_at, deleted_at FROM inquiries WHERE deleted_at = 0 ORDER BY created_at DESC")
if err != nil {
return nil, err
}
defer rows.Close()
var inquiries []models.Inquiry
for rows.Next() {
var i models.Inquiry
if err := rows.Scan(
&i.ID,
&i.Name,
&i.Company,
&i.ContactMethod,
&i.ContactValue,
&i.Budget,
&i.Description,
&i.Status,
&i.CreatedAt,
&i.UpdatedAt,
&i.DeletedAt,
); err != nil {
return nil, err
}
inquiries = append(inquiries, i)
}
return inquiries, nil
}
// GetEmailSuffixes 获取活跃的邮箱后缀
func GetEmailSuffixes() ([]models.EmailSuffix, error) {
rows, err := config.DB.Query("SELECT id, suffix, is_active, sort_order, created_at, updated_at, deleted_at FROM email_suffixes WHERE is_active = 1 AND deleted_at = 0 ORDER BY sort_order ASC")
if err != nil {
return nil, err
}
defer rows.Close()
var suffixes []models.EmailSuffix
for rows.Next() {
var s models.EmailSuffix
var isActive int
if err := rows.Scan(
&s.ID,
&s.Suffix,
&isActive,
&s.SortOrder,
&s.CreatedAt,
&s.UpdatedAt,
&s.DeletedAt,
); err != nil {
return nil, err
}
s.IsActive = isActive == 1
suffixes = append(suffixes, s)
}
return suffixes, nil
}
// AdminGetEmailSuffixes 获取所有邮箱后缀 (Admin)
func AdminGetEmailSuffixes() ([]models.EmailSuffix, error) {
rows, err := config.DB.Query("SELECT id, suffix, is_active, sort_order, created_at, updated_at, deleted_at FROM email_suffixes WHERE deleted_at = 0 ORDER BY sort_order ASC")
if err != nil {
return nil, err
}
defer rows.Close()
var suffixes []models.EmailSuffix
for rows.Next() {
var s models.EmailSuffix
var isActive int
if err := rows.Scan(
&s.ID,
&s.Suffix,
&isActive,
&s.SortOrder,
&s.CreatedAt,
&s.UpdatedAt,
&s.DeletedAt,
); err != nil {
return nil, err
}
s.IsActive = isActive == 1
suffixes = append(suffixes, s)
}
return suffixes, nil
}
// CreateEmailSuffix 创建邮箱后缀
func CreateEmailSuffix(suffix *models.EmailSuffix) error {
now := time.Now().Unix()
query := `INSERT INTO email_suffixes (suffix, is_active, sort_order, created_at, updated_at, deleted_at) VALUES (?, ?, ?, ?, ?, 0)`
isActive := 0
if suffix.IsActive {
isActive = 1
}
_, err := config.DB.Exec(query, suffix.Suffix, isActive, suffix.SortOrder, now, now)
return err
}
// UpdateEmailSuffix 更新邮箱后缀
func UpdateEmailSuffix(suffix *models.EmailSuffix) error {
now := time.Now().Unix()
query := `UPDATE email_suffixes SET suffix = ?, is_active = ?, sort_order = ?, updated_at = ? WHERE id = ? AND deleted_at = 0`
isActive := 0
if suffix.IsActive {
isActive = 1
}
_, err := config.DB.Exec(query, suffix.Suffix, isActive, suffix.SortOrder, now, suffix.ID)
return err
}
// DeleteEmailSuffix 删除邮箱后缀 (Soft Delete)
func DeleteEmailSuffix(id uint) error {
now := time.Now().Unix()
query := `UPDATE email_suffixes SET deleted_at = ? WHERE id = ?`
_, err := config.DB.Exec(query, now, id)
return err
}
// UpdateInquiryStatus 更新咨询状态
func UpdateInquiryStatus(id uint, status int) error {
now := time.Now().Unix()
query := `UPDATE inquiries SET status = ?, updated_at = ? WHERE id = ? AND deleted_at = 0`
_, err := config.DB.Exec(query, status, now, id)
return err
}