You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.4 KiB
Go

8 months ago
package dao
import (
"errors"
"exhibition-register/internal/model"
8 months ago
"exhibition-register/pb/exhibition"
8 months ago
"exhibition-register/pkg/app"
"exhibition-register/pkg/msg"
8 months ago
"fmt"
8 months ago
"go.uber.org/zap"
"gorm.io/gorm"
)
func CheckByPhone(phone string) (record *model.RegisterRecord, err error) {
res := app.ModuleClients.ExhibitionRegister.Where("phone_num=?", phone).First(record)
if res.Error != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil
}
zap.L().Error("Register err CheckByPhone", zap.Error(err))
err = errors.New(msg.ErrorSelect)
return
}
return
}
8 months ago
func CreateRegisterRecord(registerRecord *model.RegisterRecord) (err error) {
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
}
return
}
func UpdateRegisterRecord(registerRecord *model.RegisterRecord) (err error) {
if err = app.ModuleClients.ExhibitionRegister.Model(&model.RegisterRecord{}).Where("uuid", registerRecord.UUID).Updates(registerRecord).Error; err != nil {
return errors.New(msg.ErrorUpdate)
}
return
}
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
}
sortBy := "created_at desc"
if in.SortKey == 1 {
sortBy = fmt.Sprintf("created_at%s%s", " ", in.Sort)
}
if in.SortKey == 2 {
sortBy = fmt.Sprintf("updated_at%s%s", " ", in.Sort)
}
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
}