53 lines
1.5 KiB
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
|
|
}
|