SAMS/src/main/java/com/bruce/sams/service/impl/RegistrationServiceImpl.java

97 lines
3.1 KiB
Java

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<RegistrationMapper, Registration> 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<Registration> 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<Registration> 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<Registration> listMyRegistrations(Long userId) {
return this.lambdaQuery().eq(Registration::getUserId, userId).list();
}
/**
* 获取某个活动的所有报名信息
* @param actId 活动ID
* @return 报名列表
*/
@Override
public List<Registration> listRegistrationsForActivity(Long actId) {
return this.lambdaQuery().eq(Registration::getActId, actId).list();
}
}