exhibition-register/internal/dao/register.go

144 lines
4.4 KiB
Go
Raw Normal View History

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
}
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
}
2025-03-26 02:05:13 +00:00
// 新增DAO方法
func CheckRatingNoExists(req *exhibition.CheckRatingNoReq) (bool, error) {
var count int64
query := app.ModuleClients.ExhibitionRegister.Model(&model.RegisterRecord{})
switch req.Type {
case 1:
query = query.Where("preliminary_rating_no = ?", req.RatingNo)
case 2:
query = query.Where("re_rating_no = ?", req.RatingNo)
default:
return false, errors.New("未知的评选号类型")
}
err := query.Count(&count).Error
if err != nil {
return false, err
}
return count > 0, nil
}