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" 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 }