112 lines
4.4 KiB
Java
Raw Normal View History

2025-09-22 09:47:31 +08:00
package com.cdzy.activity.service.impl;
2025-09-23 09:28:53 +08:00
import com.cdzy.activity.mapper.ActivityMapper;
import com.cdzy.activity.mapper.ActivityUserMapper;
import com.cdzy.activity.mapper.UserRegistrationActivityMapper;
import com.cdzy.activity.model.Activity;
import com.cdzy.activity.model.ActivityUser;
import com.cdzy.activity.model.UserRegistrationActivity;
import com.cdzy.activity.model.vo.RegistrationVo;
2025-09-22 10:33:24 +08:00
import com.cdzy.activity.model.vo.UserVo;
2025-09-22 10:48:51 +08:00
import com.mybatisflex.core.query.QueryWrapper;
2025-09-22 09:47:31 +08:00
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.cdzy.activity.model.User;
import com.cdzy.activity.mapper.UserMapper;
import com.cdzy.activity.service.UserService;
2025-09-22 10:48:51 +08:00
import jakarta.annotation.Resource;
2025-09-22 09:47:31 +08:00
import org.springframework.stereotype.Service;
2025-09-23 09:28:53 +08:00
import java.time.LocalDateTime;
import static com.cdzy.activity.model.table.ActivityUserTableDef.ACTIVITY_USER;
import static com.cdzy.activity.model.table.UserRegistrationActivityTableDef.USER_REGISTRATION_ACTIVITY;
import static com.cdzy.activity.model.table.UserTableDef.USER;
2025-09-22 09:47:31 +08:00
/**
2025-09-22 10:48:51 +08:00
* 服务层实现
2025-09-22 09:47:31 +08:00
*
* @author attiya
* @since 2025-09-19
*/
@Service
2025-09-22 10:48:51 +08:00
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Resource
private UserMapper userMapper;
2025-09-22 09:47:31 +08:00
2025-09-23 09:28:53 +08:00
@Resource
private ActivityMapper activityMapper;
@Resource
private ActivityUserMapper activityUserMapper;
@Resource
private UserRegistrationActivityMapper userRegistrationActivityMapper;
2025-09-22 10:33:24 +08:00
@Override
public void saveUser(UserVo user) {
2025-09-22 10:48:51 +08:00
QueryWrapper queryWrapper = QueryWrapper
.create()
.eq(User::getWxOpenId, user.getWxOpenId());
User entity = userMapper.selectOneByQuery(queryWrapper);
if (entity == null) {
throw new RuntimeException("用户登陆信息错误");
}
entity.setName(user.getName());
entity.setPhone(user.getPhone());
entity.setGender(user.getGender());
entity.setAddress(user.getAddress());
entity.setAge(user.getAge());
entity.setChronicDiseasesHistory(user.getChronicDiseasesHistory());
entity.setChronicDisease(user.getChronicDisease());
entity.setHeath(user.getHeath());
entity.setIsFilled(2);
2025-09-22 17:03:04 +08:00
userMapper.update(entity);
2025-09-22 10:33:24 +08:00
}
2025-09-23 09:28:53 +08:00
@Override
public void registration(RegistrationVo registrationVo) {
Long activityId = registrationVo.getActivityId();
String wxOpenId = registrationVo.getWxOpenId();
Activity activity = activityMapper.selectOneById(activityId);
if (activity == null) {
throw new RuntimeException("该活动不存在");
}
if (activity.getRegistrationStartTime().isAfter(LocalDateTime.now())){
throw new RuntimeException("该活动尚未开始报名");
}
if (activity.getRegistrationEndTime().isBefore(LocalDateTime.now())){
throw new RuntimeException("该活动已结束报名");
}
if (activity.getLimitPeople() == 1){
QueryWrapper queryWrapper = QueryWrapper.create()
.where(USER_REGISTRATION_ACTIVITY.ACTIVITY_ID.eq(activityId));
long count = userRegistrationActivityMapper.selectCountByQuery(queryWrapper);
if (count >= activity.getMaxNum()){
throw new RuntimeException("该活动报名人数已达上限");
}
}
if (activity.getLimitRegister() == 1){
QueryWrapper queryWrapper = QueryWrapper.create()
.where(ACTIVITY_USER.ACTIVITY_ID.eq(activityId))
.where(USER.WX_OPEN_ID.eq(wxOpenId))
.leftJoin(USER).on(USER.USER_ID.eq(ACTIVITY_USER.USER_ID));
ActivityUser selected = activityUserMapper.selectOneByQuery(queryWrapper);
if (selected == null){
throw new RuntimeException("该活动限制报名人群,无法报名");
}
}
QueryWrapper queryWrapper = QueryWrapper.create()
.where(USER.WX_OPEN_ID.eq(wxOpenId));
User user = userMapper.selectOneByQuery(queryWrapper);
if (user == null){
throw new RuntimeException("用户信息错误");
}
UserRegistrationActivity registrationActivity = UserRegistrationActivity.builder()
.activityId(activityId)
.userId(user.getUserId())
.build();
userRegistrationActivityMapper.insert(registrationActivity);
}
2025-09-22 09:47:31 +08:00
}