新的迁移规则

This commit is contained in:
GYJ
2025-03-24 21:18:21 +08:00
parent ca62f9b361
commit d4d6c67477
9 changed files with 269 additions and 31 deletions

View File

@@ -129,6 +129,126 @@ func _execUserMoneyDetails(db *gorm.DB, timeNow string, index int) {
_execUserMoneyDetails(db, timeNow, index+1)
}
func copyCourseCollect(db *gorm.DB, timeNow time.Time) {
collect := &data.CourseCollect{}
start := timeNow.Format("2006-01-02 15:04:05")
first := db.Model(collect).Where("create_time < ?", start).Order("create_time asc").First(collect)
if first.RowsAffected == 0 {
fmt.Println("no course_collect data")
return
}
deleteTime := collect.CreateTime
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.CourseCollectCopy1{})
_execCourseCollect(db, start, 0)
db.Debug().Where("create_time < ?", start).Delete(&data.CourseCollect{})
}
func _execCourseCollect(db *gorm.DB, timeNow string, index int) {
var collects []*data.CourseCollect
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&collects)
fmt.Printf("index: %d, timeNow: %s ,course_collect count: %d\n", index, timeNow, len(collects))
if len(collects) == 0 {
return
}
var copyList []*data.CourseCollectCopy1
for _, collect := range collects {
collectCopy := &data.CourseCollectCopy1{}
CopyStruct(collect, collectCopy)
copyList = append(copyList, collectCopy)
}
db.Create(&copyList)
_execCourseCollect(db, timeNow, index+1)
}
func copyCourseUser(db *gorm.DB, timeNow time.Time) {
user := &data.CourseUser{}
start := timeNow.Format("2006-01-02 15:04:05")
first := db.Model(user).Where("create_time < ?", start).Order("create_time asc").First(user)
if first.RowsAffected == 0 {
fmt.Println("no course_user data")
return
}
deleteTime := user.CreateTime
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.CourseUserCopy1{})
_execCourseUser(db, start, 0)
db.Debug().Where("create_time < ?", start).Delete(&data.CourseUser{})
}
func _execCourseUser(db *gorm.DB, timeNow string, index int) {
var users []*data.CourseUser
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&users)
fmt.Printf("index: %d, timeNow: %s ,course_user count: %d\n", index, timeNow, len(users))
if len(users) == 0 {
return
}
var copyList []*data.CourseUserCopy1
for _, user := range users {
userCopy := &data.CourseUserCopy1{}
CopyStruct(user, userCopy)
copyList = append(copyList, userCopy)
}
db.Create(&copyList)
_execCourseUser(db, timeNow, index+1)
}
func copyDiscSpinningRecord(db *gorm.DB, timeNow time.Time) {
record := &data.DiscSpinningRecord{}
start := timeNow.Format("2006-01-02 15:04:05")
first := db.Model(record).Where("create_time < ?", start).Order("create_time asc").First(record)
if first.RowsAffected == 0 {
fmt.Println("no disc_spinning_record data")
return
}
deleteTime := record.CreateTime
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.DiscSpinningRecordCopy1{})
_execDiscSpinningRecord(db, start, 0)
db.Debug().Where("create_time < ?", start).Delete(&data.DiscSpinningRecord{})
}
func _execDiscSpinningRecord(db *gorm.DB, timeNow string, index int) {
var records []*data.DiscSpinningRecord
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&records)
fmt.Printf("index: %d, timeNow: %s ,disc_spinning_record count: %d\n", index, timeNow, len(records))
if len(records) == 0 {
return
}
var copyList []*data.DiscSpinningRecordCopy1
for _, record := range records {
recordCopy := &data.DiscSpinningRecordCopy1{}
CopyStruct(record, recordCopy)
copyList = append(copyList, recordCopy)
}
db.Create(&copyList)
_execDiscSpinningRecord(db, timeNow, index+1)
}
// CopyStruct 使用反射复制结构体
func CopyStruct(src, dst interface{}) {
_ = copier.Copy(dst, src)

View File

@@ -32,8 +32,17 @@ func CopyData() {
for _, db := range dbList {
copyOrders(db, parse)
time.Sleep(time.Second * 2)
copyPayDetails(db, parse)
time.Sleep(time.Second * 2)
copyUserMoneyDetails(db, parse)
time.Sleep(time.Second * 2)
copyCourseCollect(db, parse)
time.Sleep(time.Second * 2)
copyCourseUser(db, parse)
time.Sleep(time.Second * 2)
copyDiscSpinningRecord(db, parse)
time.Sleep(time.Second * 2)
}
}