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
|
|
|
}
|