256 lines
6.9 KiB
Go
256 lines
6.9 KiB
Go
package db
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/jinzhu/copier"
|
|
"gorm.io/gorm"
|
|
"time"
|
|
"video_data_copy/data"
|
|
)
|
|
|
|
func copyOrders(db *gorm.DB, timeNow time.Time) {
|
|
order := &data.Orders{}
|
|
start := timeNow.Format("2006-01-02 15:04:05")
|
|
first := db.Debug().Where("create_time < ?", start).Order("create_time asc").First(order)
|
|
if first.RowsAffected == 0 {
|
|
fmt.Println("no orders data")
|
|
return
|
|
}
|
|
|
|
deleteTime := order.CreateTime
|
|
fmt.Println("copy orders from:", deleteTime)
|
|
|
|
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.OrdersCopy1{})
|
|
|
|
_execOrders(db, start, 0)
|
|
|
|
db.Debug().Where("create_time < ?", start).Delete(&data.Orders{})
|
|
}
|
|
|
|
func _execOrders(db *gorm.DB, timeNow string, index int) {
|
|
var orders []*data.Orders
|
|
|
|
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&orders)
|
|
|
|
fmt.Printf("index: %d, timeNow: %s ,orders count: %d\n", index, timeNow, len(orders))
|
|
if len(orders) == 0 {
|
|
return
|
|
}
|
|
|
|
var copyList []*data.OrdersCopy1
|
|
for _, order := range orders {
|
|
copyOrder := &data.OrdersCopy1{}
|
|
CopyStruct(order, copyOrder)
|
|
copyList = append(copyList, copyOrder)
|
|
}
|
|
|
|
db.Create(©List)
|
|
|
|
_execOrders(db, timeNow, index+1)
|
|
}
|
|
|
|
func copyPayDetails(db *gorm.DB, timeNow time.Time) {
|
|
detail := &data.PayDetails{}
|
|
start := timeNow.Format("2006-01-02 15:04:05")
|
|
first := db.Model(detail).Where("create_time < ?", start).Order("create_time asc").First(detail)
|
|
if first.RowsAffected == 0 {
|
|
fmt.Println("no pay_details data")
|
|
return
|
|
}
|
|
|
|
deleteTime := detail.CreateTime
|
|
|
|
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.PayDetailsCopy1{})
|
|
|
|
_execPayDetails(db, start, 0)
|
|
|
|
db.Debug().Where("create_time < ?", start).Delete(&data.PayDetails{})
|
|
}
|
|
|
|
func _execPayDetails(db *gorm.DB, timeNow string, index int) {
|
|
var details []*data.PayDetails
|
|
|
|
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&details)
|
|
|
|
fmt.Printf("index: %d, timeNow: %s ,pay_details count: %d\n", index, timeNow, len(details))
|
|
if len(details) == 0 {
|
|
return
|
|
}
|
|
|
|
var copyList []*data.PayDetailsCopy1
|
|
for _, detail := range details {
|
|
detailCopy := &data.PayDetailsCopy1{}
|
|
CopyStruct(detail, detailCopy)
|
|
copyList = append(copyList, detailCopy)
|
|
}
|
|
|
|
db.Create(©List)
|
|
|
|
_execPayDetails(db, timeNow, index+1)
|
|
}
|
|
|
|
func copyUserMoneyDetails(db *gorm.DB, timeNow time.Time) {
|
|
detail := &data.UserMoneyDetails{}
|
|
start := timeNow.Format("2006-01-02 15:04:05")
|
|
first := db.Model(detail).Where("create_time < ?", start).Order("create_time asc").First(detail)
|
|
if first.RowsAffected == 0 {
|
|
fmt.Println("no user_money_details data")
|
|
return
|
|
}
|
|
|
|
deleteTime := detail.CreateTime
|
|
|
|
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.UserMoneyDetailsCopy1{})
|
|
|
|
_execUserMoneyDetails(db, start, 0)
|
|
|
|
db.Debug().Where("create_time < ?", start).Delete(&data.UserMoneyDetails{})
|
|
}
|
|
|
|
func _execUserMoneyDetails(db *gorm.DB, timeNow string, index int) {
|
|
var details []*data.UserMoneyDetails
|
|
|
|
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&details)
|
|
|
|
fmt.Printf("index: %d, timeNow: %s ,pay_details count: %d\n", index, timeNow, len(details))
|
|
if len(details) == 0 {
|
|
return
|
|
}
|
|
|
|
var copyList []*data.UserMoneyDetailsCopy1
|
|
for _, detail := range details {
|
|
detailCopy := &data.UserMoneyDetailsCopy1{}
|
|
CopyStruct(detail, detailCopy)
|
|
copyList = append(copyList, detailCopy)
|
|
}
|
|
|
|
db.Create(©List)
|
|
|
|
_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(©List)
|
|
|
|
_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(©List)
|
|
|
|
_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(©List)
|
|
|
|
_execDiscSpinningRecord(db, timeNow, index+1)
|
|
}
|
|
|
|
// CopyStruct 使用反射复制结构体
|
|
func CopyStruct(src, dst interface{}) {
|
|
_ = copier.Copy(dst, src)
|
|
}
|