94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
// 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)
|
|
}
|