支付宝 接入一系列修改

This commit is contained in:
2025-02-08 16:30:07 +08:00
parent 27aff930c7
commit cbdce12462
31 changed files with 1432 additions and 357 deletions

View File

@@ -17,6 +17,14 @@ var (
modelDB *gorm.DB
)
func init() {
// 启动异步处理
go ExecuteCreateChan()
go ExecuteSaveChan()
go ExecuteDeleteChan()
}
// RegisterDBModel 注册数据库模型到全局变量dbModelMap中。
// 这个函数接受一个interface{}类型的参数dbModel表示数据库模型。
// 函数的目的是将传入的数据库模型添加到全局变量dbModelMap中
@@ -27,7 +35,7 @@ func RegisterDBModel(dbModel interface{}) {
dbModelMap = append(dbModelMap, &dbModel)
}
// 设置modelDB 类型
// SetModelDB 设置modelDB 类型
func SetModelDB(db *gorm.DB) {
modelDB = db
}
@@ -138,38 +146,120 @@ func Save(db *gorm.DB, value interface{}, dbIndex int32) *gorm.DB {
return result
}
// DBData 添加数据通道
type DBData struct {
DB *gorm.DB
Value any
}
var (
// 添加数据通道
createChan = make(chan DBData)
// 保存数据通道
saveChan = make(chan DBData)
// 删除数据通道
deleteChan = make(chan DBData)
)
// AsyncCreate 异步创建数据
func AsyncCreate(db *gorm.DB, value interface{}) {
go func() {
createChan <- DBData{
DB: db,
Value: value,
}
}
//检查表是否存在
CheckTableExists(db, value)
result := db.Create(value)
if result.Error != nil {
logUtilPlus.ErrorLog("AsyncCreate is err: %v", result.Error)
// ExecuteCreateChan 执行添加数据通道
func ExecuteCreateChan() {
defer func() {
if err := recover(); err != nil {
logUtilPlus.ErrorLog("AsyncCreate is err: %v", err)
//停止程序
panic(err)
}
}()
for {
select {
case createData := <-createChan:
db := createData.DB
value := createData.Value
//检查表是否存在
CheckTableExists(db, value)
result := db.Create(value)
if result.Error != nil {
logUtilPlus.ErrorLog("AsyncCreate is err: %v", result.Error)
}
}
}
}
// AsyncSave 异步保存数据
func AsyncSave(db *gorm.DB, value interface{}) {
go func() {
result := db.Save(value)
if result.Error != nil {
logUtilPlus.ErrorLog("AsyncSave is err : %v", result.Error)
saveChan <- DBData{
DB: db,
Value: value,
}
}
// ExecuteSaveChan 执行保存数据通道
func ExecuteSaveChan() {
defer func() {
if err := recover(); err != nil {
logUtilPlus.ErrorLog("AsyncSave is err: %v", err)
panic(err)
}
}()
for {
select {
case saveData := <-saveChan:
db := saveData.DB
value := saveData.Value
result := db.Save(value)
if result.Error != nil {
logUtilPlus.ErrorLog("AsyncSave is err : %v", result.Error)
}
}
}
}
// AsyncDelete 异步删除数据
func AsyncDelete(db *gorm.DB, value interface{}) {
go func() {
result := db.Delete(value)
if result.Error != nil {
logUtilPlus.ErrorLog("AsyncDelete is err : %v", result.Error)
deleteChan <- DBData{
DB: db,
Value: value,
}
}
// ExecuteDeleteChan 执行删除数据通道
func ExecuteDeleteChan() {
defer func() {
if err := recover(); err != nil {
logUtilPlus.ErrorLog("AsyncDelete is err: %v", err)
panic(err)
}
}()
for {
select {
case deleteData := <-deleteChan:
db := deleteData.DB
value := deleteData.Value
result := db.Delete(value)
if result.Error != nil {
logUtilPlus.ErrorLog("AsyncDelete is err : %v", result.Error)
}
}
}
}