152 lines
4.1 KiB
Go
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
|
|
}
|