97 lines
3.1 KiB
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();
|
|
}
|
|
}
|
|
|
|
|
|
|