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