fix(subscribe): add BeforeDelete and BeforeUpdate methods for sort handling

This commit is contained in:
Chang lue Tsen 2025-05-06 13:29:39 +09:00
parent d6f5160be1
commit a2e4c6d09a

View File

@ -48,6 +48,28 @@ func (s *Subscribe) BeforeCreate(tx *gorm.DB) error {
return nil return nil
} }
func (s *Subscribe) BeforeDelete(tx *gorm.DB) error {
if err := tx.Exec("UPDATE `subscribe` SET sort = sort - 1 WHERE sort > ?", s.Sort).Error; err != nil {
return err
}
return nil
}
func (s *Subscribe) BeforeUpdate(tx *gorm.DB) error {
var count int64
if err := tx.Set("gorm:query_option", "FOR UPDATE").Model(&Subscribe{}).
Where("sort = ? AND id != ?", s.Sort, s.Id).Count(&count).Error; err != nil {
return err
}
if count > 0 {
var maxSort int64
if err := tx.Model(&Subscribe{}).Select("MAX(sort)").Scan(&maxSort).Error; err != nil {
return err
}
s.Sort = maxSort + 1
}
return nil
}
type Discount struct { type Discount struct {
Months int64 `json:"months"` Months int64 `json:"months"`
Discount int64 `json:"discount"` Discount int64 `json:"discount"`