2024-01-30 09:39:04 +00:00
package dao
import (
"errors"
"exhibition-register/internal/model"
2024-02-01 10:56:19 +00:00
"exhibition-register/pb/exhibition"
2024-01-30 09:39:04 +00:00
"exhibition-register/pkg/app"
"exhibition-register/pkg/msg"
2024-02-01 10:56:19 +00:00
"fmt"
2025-03-05 07:01:03 +00:00
2024-01-30 09:39:04 +00:00
"go.uber.org/zap"
"gorm.io/gorm"
)
func CheckByPhone ( phone string ) ( record * model . RegisterRecord , err error ) {
2024-02-02 09:05:34 +00:00
res := app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } ) . Where ( "phone_num = ?" , phone ) . First ( & record )
2024-01-30 09:39:04 +00:00
if res . Error != nil {
2024-02-02 09:05:34 +00:00
if errors . Is ( res . Error , gorm . ErrRecordNotFound ) {
2024-01-30 09:39:04 +00:00
return nil , nil
}
zap . L ( ) . Error ( "Register err CheckByPhone" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
return
}
2024-02-01 10:56:19 +00:00
2024-02-22 07:14:15 +00:00
func CheckBy ( qType string , keyword string , uuid string ) ( record * model . RegisterRecord , err error ) {
dbLink := app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } ) . Where ( qType + "= ?" , keyword )
if qType == "phone_num" {
dbLink = dbLink . Where ( "uuid != ?" , uuid )
}
res := dbLink . First ( & record )
if res . Error != nil {
if errors . Is ( res . Error , gorm . ErrRecordNotFound ) {
return nil , nil
}
zap . L ( ) . Error ( "Register err CheckBy" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
return
}
2024-02-02 09:05:34 +00:00
func CreateRegisterRecord ( registerRecord * model . RegisterRecord ) ( record * model . RegisterRecord , err error ) {
2024-02-01 10:56:19 +00:00
res := app . ModuleClients . ExhibitionRegister . Create ( & registerRecord )
if res . Error != nil || res . RowsAffected != 1 {
zap . L ( ) . Error ( "dao CreateRegisterRecord err" , zap . Error ( res . Error ) )
err = errors . New ( msg . ErrorInsert )
return
}
2024-02-02 09:05:34 +00:00
return registerRecord , nil
2024-02-01 10:56:19 +00:00
}
2024-02-02 09:05:34 +00:00
func UpdateRegisterRecord ( registerRecord * model . RegisterRecord ) ( record * model . RegisterRecord , err error ) {
if err = app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } ) . Where ( "uuid" , registerRecord . UUID ) . Updates ( & registerRecord ) . Error ; err != nil {
return nil , errors . New ( msg . ErrorUpdate )
2024-02-01 10:56:19 +00:00
}
2024-02-02 09:05:34 +00:00
if err = app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } ) . Where ( "uuid" , registerRecord . UUID ) . First ( & record ) . Error ; err != nil {
zap . L ( ) . Error ( "未能通过uuid查询到数据" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
return record , nil
2024-02-01 10:56:19 +00:00
}
func RecordList ( in * exhibition . RecordListReq ) ( data [ ] * model . RegisterRecord , total int64 , err error ) {
offset := ( in . Page - 1 ) * in . PageSize
dbLink := app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } )
if in . Keyword != "" {
keyword := "%" + in . Keyword + "%"
dbLink = dbLink . Where ( "artist_name like ? or phone_num like ?" , keyword , keyword )
}
if err = dbLink . Count ( & total ) . Error ; err != nil {
zap . L ( ) . Error ( "RecordList err" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
if total == 0 {
return
}
2025-03-05 07:12:09 +00:00
// sortBy := "created_at desc,id desc"
// if in.SortKey == 1 {
// sortBy = fmt.Sprintf(sortBy, "ASC", "ASC")
// }
// if in.SortKey == 2 {
// sortBy = fmt.Sprintf(sortBy, "DESC", "DESC")
// }
sortBy := "created_at desc,id desc"
2024-02-01 10:56:19 +00:00
if in . SortKey == 1 {
2025-03-05 07:12:09 +00:00
sortBy = fmt . Sprintf ( "created_at %s,id %s" , in . Sort , in . Sort )
2024-02-01 10:56:19 +00:00
}
if in . SortKey == 2 {
2025-03-05 07:12:09 +00:00
sortBy = fmt . Sprintf ( "updated_at %s,id %s" , in . Sort , in . Sort )
2024-02-01 10:56:19 +00:00
}
if err = dbLink . Order ( sortBy ) . Limit ( int ( in . PageSize ) ) . Offset ( int ( offset ) ) . Find ( & data ) . Error ; err != nil {
zap . L ( ) . Error ( "RecordList err" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
return
}
func AllRecord ( ) ( data [ ] * model . RegisterRecord , err error ) {
if err = app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } ) . Order ( "id desc" ) . Find ( & data ) . Error ; err != nil {
zap . L ( ) . Error ( "AllRecord err" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
return
}
2025-03-12 06:22:07 +00:00
func GetRecordByName ( in * exhibition . RegisterInfo ) ( record * model . RegisterRecord , err error ) {
if err = app . ModuleClients . ExhibitionRegister . Model ( & model . RegisterRecord { } ) . Where ( "artist_name=? AND artwork_name=?" , in . ArtistName , in . ArtworkName ) . First ( & record ) . Error ; err != nil {
zap . L ( ) . Error ( "GetRecordByName err" , zap . Error ( err ) )
err = errors . New ( msg . ErrorSelect )
return
}
return
}