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.

106 lines
3.3 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(&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 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(&registerRecord).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"
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
}