golang-yitisheng-server/server/modules/yx/mapper/yx_volunteer_mapper.go

53 lines
1.5 KiB
Go

// Package mapper 数据访问层
package mapper
import (
"server/common"
"server/modules/yx/entity"
"server/modules/yx/vo"
)
type YxVolunteerMapper struct {
*common.BaseMapper[entity.YxVolunteer]
}
func NewYxVolunteerMapper() *YxVolunteerMapper {
return &YxVolunteerMapper{
BaseMapper: common.NewBaseMapper[entity.YxVolunteer](),
}
}
// CloseOtherVolunteer 关闭用户的其他志愿单
func (m *YxVolunteerMapper) CloseOtherVolunteer(userId string) error {
result := m.GetDB().Model(&entity.YxVolunteer{}).
Where("create_by = ?", userId).
Updates(map[string]interface{}{"state": "0"})
if result.Error != nil {
return result.Error
}
return nil
}
// FindActiveByScoreId 根据 scoreId 查找激活的志愿单
func (m *YxVolunteerMapper) FindActiveByScoreId(scoreId string) (*entity.YxVolunteer, error) {
var item entity.YxVolunteer
err := m.GetDB().Where("score_id = ? AND state = ?", scoreId, "1").First(&item).Error
return &item, err
}
// ListByUser 查询用户的志愿单列表(包含成绩信息)
func (m *YxVolunteerMapper) ListByUser(userID string, page, size int) ([]vo.UserVolunteerVO, int64, error) {
var items []vo.UserVolunteerVO
var total int64
db := m.GetDB().Table("yx_volunteer v").
Select("v.*, s.professional_category, s.province, s.cultural_score, s.professional_score").
Joins("LEFT JOIN yx_user_score s ON v.score_id = s.id").
Where("v.create_by = ?", userID)
db.Count(&total)
err := db.Order("v.create_time DESC").Offset((page - 1) * size).Limit(size).Scan(&items).Error
return items, total, err
}