// Package service 业务逻辑层 package service import ( "fmt" "server/common" "server/modules/yx/entity" "server/modules/yx/mapper" "time" ) type YxVolunteerService struct { mapper *mapper.YxVolunteerMapper } func NewYxVolunteerService() *YxVolunteerService { return &YxVolunteerService{mapper: mapper.NewYxVolunteerMapper()} } func (s *YxVolunteerService) List(page, size int) ([]entity.YxVolunteer, int64, error) { return s.mapper.FindAll(page, size) } func (s *YxVolunteerService) GetByID(id string) (*entity.YxVolunteer, error) { return s.mapper.FindByID(id) } func (s *YxVolunteerService) Create(item *entity.YxVolunteer) error { item.ID = common.GenerateStringID() return s.mapper.Create(item) } func (s *YxVolunteerService) FindActiveByScoreId(scoreId string) (*entity.YxVolunteer, error) { return s.mapper.FindActiveByScoreId(scoreId) } func (s *YxVolunteerService) Update(item *entity.YxVolunteer) error { return s.mapper.Update(item) } func (s *YxVolunteerService) UpdateFields(id string, fields map[string]interface{}) error { return s.mapper.UpdateFields(id, fields) } func (s *YxVolunteerService) Delete(id string) error { return s.mapper.Delete(id) } func (s *YxVolunteerService) BatchCreate(items []entity.YxVolunteer) error { for i := range items { items[i].ID = common.GenerateStringID() } return s.mapper.BatchCreate(items, 100) } func (s *YxVolunteerService) BatchUpdate(items []entity.YxVolunteer) error { return s.mapper.BatchUpdate(items) } func (s *YxVolunteerService) BatchUpsert(items []entity.YxVolunteer, updateColumns []string) error { for i := range items { if items[i].ID == "" { items[i].ID = common.GenerateStringID() } } return s.mapper.BatchUpsert(items, updateColumns) } func (s *YxVolunteerService) BatchDelete(ids []string) error { return s.mapper.BatchDelete(ids) } // 根据ScoreId创建新志愿表 func (s *YxVolunteerService) CreateByScoreId(scoreId string, userId string) error { volunteer := entity.YxVolunteer{} volunteer.ID = common.GenerateStringID() // 志愿表名称格式 时间戳 20260101134501志愿表 volunteer.VolunteerName = time.Now().Format("20060102150405") + "志愿表" volunteer.ScoreId = scoreId volunteer.CreateType = "1" volunteer.State = "1" volunteer.CreateBy = userId volunteer.CreateTime = time.Now() volunteer.UpdateTime = time.Now() // 先关闭当前用户其他志愿单 - ✅ 检查错误 if err := s.mapper.CloseOtherVolunteer(userId); err != nil { return fmt.Errorf("关闭其他志愿表失败: %w", err) } // 创建志愿表 return s.mapper.Create(&volunteer) }