package com.bruce.sams.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bruce.sams.common.enums.RegistrationRole; import com.bruce.sams.common.enums.RegistrationStatus; import com.bruce.sams.domain.ams.Registration; import com.bruce.sams.mapper.RegistrationMapper; import com.bruce.sams.service.RegistrationService; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; /** * 活动报名服务实现类 * @author bruce * @description 针对表【ams_registration(活动报名表)】的数据库操作Service实现 * @createDate 2025-02-20 15:08:53 */ @Service public class RegistrationServiceImpl extends ServiceImpl implements RegistrationService { /** * 用户报名活动 * @param actId 活动ID * @param userId 用户ID */ @Override public void register(Long actId, Long userId) { Registration registration = new Registration(); registration.setActId(actId); registration.setUserId(userId); registration.setRole(RegistrationRole.PARTICIPANT); registration.setStatus(RegistrationStatus.REGISTERED); registration.setRegisterTime(new Date(System.currentTimeMillis())); this.save(registration); } /** * 用户取消报名 * @param actId 活动ID * @param userId 用户ID */ @Override public void cancelRegistration(Long actId, Long userId) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(Registration::getActId, actId).eq(Registration::getUserId, userId); Registration registration = this.getOne(query); if (registration != null) { registration.setStatus(RegistrationStatus.CANCELLED); this.updateById(registration); } } /** * 用户签到活动 * @param actId 活动ID * @param userId 用户ID */ @Override public void attendActivity(Long actId, Long userId) { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); query.eq(Registration::getActId, actId).eq(Registration::getUserId, userId); Registration registration = this.getOne(query); if (registration != null && registration.getStatus() == RegistrationStatus.REGISTERED) { registration.setStatus(RegistrationStatus.ATTENDED); registration.setAttendTime(new Date(System.currentTimeMillis())); this.updateById(registration); } } /** * 获取用户报名的所有活动 * @param userId 用户ID * @return 报名列表 */ @Override public List listMyRegistrations(Long userId) { return this.lambdaQuery().eq(Registration::getUserId, userId).list(); } /** * 获取某个活动的所有报名信息 * @param actId 活动ID * @return 报名列表 */ @Override public List listRegistrationsForActivity(Long actId) { return this.lambdaQuery().eq(Registration::getActId, actId).list(); } }