2025-01-20 01:55:44 +08:00
package model
import (
"context"
"database/sql"
"fmt"
"github.com/zeromicro/go-zero/core/stores/cache"
"github.com/zeromicro/go-zero/core/stores/sqlc"
"github.com/zeromicro/go-zero/core/stores/sqlx"
)
var _ AppAccountModel = ( * customAppAccountModel ) ( nil )
type (
// AppAccountModel is an interface to be customized, add more methods here,
// and implement the added methods in customAppAccountModel.
AppAccountModel interface {
appAccountModel
}
customAppAccountModel struct {
* defaultAppAccountModel
}
appAccountModel interface {
Insert ( ctx context . Context , data * AppAccount ) ( sql . Result , error )
FindOne ( ctx context . Context , id uint64 ) ( * AppAccount , error )
Update ( ctx context . Context , data * AppAccount ) error
Delete ( ctx context . Context , id uint64 ) error
FindIdByAppId ( ctx context . Context , appId string ) ( uint64 , error )
FindAll ( ctx context . Context ) ( * [ ] * GameAppConfig , error )
}
)
// NewAppAccountModel returns a model for the database table.
func NewAppAccountModel ( conn sqlx . SqlConn , c cache . CacheConf , opts ... cache . Option ) AppAccountModel {
return & customAppAccountModel {
defaultAppAccountModel : newAppAccountModel ( conn , c , opts ... ) ,
}
}
type GameAppConfig struct {
AppID string ` db:"app_id" `
Secret string ` db:"secret" `
EcpmValue sql . Null [ uint32 ] ` db:"ecpm_value" ` // 值
EcpmView sql . Null [ uint32 ] ` db:"ecpm_view" ` // 浏览次数
Type uint64 ` db:"type" ` // 类型(0:抖音,1:微信)
}
func ( m * defaultAppAccountModel ) FindAll ( ctx context . Context ) ( * [ ] * GameAppConfig , error ) {
2025-01-22 12:02:12 +08:00
ecpmAppAccountIdKey := fmt . Sprintf ( "%s%v" , cacheEcpmAppAccountIdPrefix , "all" )
2025-01-20 01:55:44 +08:00
var resp [ ] * GameAppConfig
err := m . QueryRowCtx ( ctx , & resp , ecpmAppAccountIdKey , func ( ctx context . Context , conn sqlx . SqlConn , v any ) error {
query := "select `app_id`,`secret`,`ecpm_value`,`ecpm_view`,`type` from `app_account` left join douyin_ecpm_config on app_account.id = douyin_ecpm_config.app_account_id"
return conn . QueryRowsCtx ( ctx , v , query )
} )
switch err {
case nil :
return & resp , nil
case sqlc . ErrNotFound :
return nil , ErrNotFound
default :
return nil , err
}
}