增加代理收益明细

This commit is contained in:
gong
2026-05-13 16:22:45 +08:00
parent 0b65ae9705
commit 35dc24043e
3 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
package data
type (
// SysUserMoneyDetails 钱包记录表
SysUserMoneyDetails struct {
ID int64 `gorm:"column:id;type:bigint;not null;autoIncrement;comment:钱包详情id" json:"id"`
UserID int64 `gorm:"column:user_id;type:bigint;comment:用户id" json:"userId"`
RelationID string `gorm:"column:relation_id;type:varchar(191);collate:utf8mb4_general_ci;comment:关联ID" json:"relationId"`
SysUserID int64 `gorm:"column:sys_user_id;type:bigint;comment:渠道用户id" json:"sysUserId"`
ByUserID int64 `gorm:"column:by_user_id;type:bigint;comment:对应用户id" json:"byUserId"`
Title string `gorm:"column:title;type:varchar(191);collate:utf8mb4_general_ci;comment:标题" json:"title"`
Classify int `gorm:"column:classify;type:int;comment:分类" json:"classify"` // 见常量定义
Type int `gorm:"column:type;type:int;default:1;comment:类别1充值2支出" json:"type"`
State int `gorm:"column:state;type:int;default:1;comment:状态 1待支付 2已到账 3取消" json:"state"`
Money float64 `gorm:"column:money;type:decimal(10,4);comment:金额" json:"money"` // 高精度可用 decimal.Decimal
Content string `gorm:"column:content;type:varchar(191);collate:utf8mb4_general_ci;comment:内容" json:"content"`
MoneyType int `gorm:"column:money_type;type:int;default:1;comment:金额类型1红包2金豆" json:"moneyType"`
CreateTime string `gorm:"column:create_time;type:varchar(64);collate:utf8mb4_bin;comment:创建时间" json:"createTime"`
SourceID int64 `gorm:"column:source_id;type:bigint;comment:源id" json:"sourceId"`
}
SysUserMoneyDetailsCopy1 struct {
ID int64 `gorm:"column:id;type:bigint;not null;autoIncrement;comment:钱包详情id" json:"id"`
UserID int64 `gorm:"column:user_id;type:bigint;comment:用户id" json:"userId"`
RelationID string `gorm:"column:relation_id;type:varchar(191);collate:utf8mb4_general_ci;comment:关联ID" json:"relationId"`
SysUserID int64 `gorm:"column:sys_user_id;type:bigint;comment:渠道用户id" json:"sysUserId"`
ByUserID int64 `gorm:"column:by_user_id;type:bigint;comment:对应用户id" json:"byUserId"`
Title string `gorm:"column:title;type:varchar(191);collate:utf8mb4_general_ci;comment:标题" json:"title"`
Classify int `gorm:"column:classify;type:int;comment:分类" json:"classify"` // 见常量定义
Type int `gorm:"column:type;type:int;default:1;comment:类别1充值2支出" json:"type"`
State int `gorm:"column:state;type:int;default:1;comment:状态 1待支付 2已到账 3取消" json:"state"`
Money float64 `gorm:"column:money;type:decimal(10,4);comment:金额" json:"money"` // 高精度可用 decimal.Decimal
Content string `gorm:"column:content;type:varchar(191);collate:utf8mb4_general_ci;comment:内容" json:"content"`
MoneyType int `gorm:"column:money_type;type:int;default:1;comment:金额类型1红包2金豆" json:"moneyType"`
CreateTime string `gorm:"column:create_time;type:varchar(64);collate:utf8mb4_bin;comment:创建时间" json:"createTime"`
SourceID int64 `gorm:"column:source_id;type:bigint;comment:源id" json:"sourceId"`
}
)
func (SysUserMoneyDetails) TableName() string {
return "sys_user_money_details"
}
func (SysUserMoneyDetailsCopy1) TableName() string {
return "sys_user_money_details_copy1"
}

View File

@@ -322,6 +322,49 @@ func _execCashOut(db *gorm.DB, timeNow string, index int, totalCount int64) {
_execCashOut(db, timeNow, index+1, totalCount)
}
func copySysUserMoneyDetails(db *gorm.DB, timeNow time.Time) {
record := &data.SysUserMoneyDetails{}
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 sys_user_money_detail data")
return
}
deleteTime := record.CreateTime
db.Debug().Where("create_time >= ?", deleteTime).Delete(&data.SysUserMoneyDetailsCopy1{})
var totalCount int64 = 0
db.Debug().Model(&data.SysUserMoneyDetails{}).Where("create_time >= ?", deleteTime).Count(&totalCount)
_execSysUserMoneyDetails(db, start, 0, totalCount)
db.Debug().Where("create_time < ?", start).Delete(&data.SysUserMoneyDetails{})
}
func _execSysUserMoneyDetails(db *gorm.DB, timeNow string, index int, totalCount int64) {
var records []*data.SysUserMoneyDetails
db.Debug().Where("create_time < ?", timeNow).Limit(1000).Offset(index * 1000).Find(&records)
fmt.Printf("index: %d, timeNow: %s ,sys_user_money_details count: %d, totalCount: %d\n", index, timeNow, len(records), totalCount)
if len(records) == 0 {
return
}
var copyList []*data.SysUserMoneyDetailsCopy1
for _, record := range records {
recordCopy := &data.SysUserMoneyDetailsCopy1{}
CopyStruct(record, recordCopy)
copyList = append(copyList, recordCopy)
}
db.Create(&copyList)
//time.Sleep(1500 * time.Millisecond)
_execSysUserMoneyDetails(db, timeNow, index+1, totalCount)
}
// CopyStruct 使用反射复制结构体
func CopyStruct(src, dst interface{}) {
_ = copier.Copy(dst, src)

View File

@@ -45,6 +45,8 @@ func CopyData() {
time.Sleep(time.Second * 2)
copyCashOut(db, parse)
time.Sleep(time.Second * 2)
copySysUserMoneyDetails(db, parse)
time.Sleep(time.Second * 2)
}
}