活动-用户相关功能

This commit is contained in:
attiya 2025-09-23 09:28:53 +08:00
parent 37b33c9b37
commit 3ff9e94bdb
10 changed files with 83 additions and 5 deletions

View File

@ -110,9 +110,10 @@ public class ActivityController {
public JsonResult<?> getInfo(@PathVariable Long id) {
Activity activity = activityService.getById(id);
QueryWrapper queryWrapper = QueryWrapper.create()
.select(ACTIVITY_USER.USER_ID)
.where(ACTIVITY_USER.ACTIVITY_ID.eq(activity.getActivityId()));
List<Long> list = activityUserMapper.selectListByQueryAs(queryWrapper,Long.class);
.select(USER.ALL_COLUMNS)
.where(ACTIVITY_USER.ACTIVITY_ID.eq(activity.getActivityId()))
.leftJoin(USER).on(USER.USER_ID.eq(ACTIVITY_USER.USER_ID));
List<User> list = activityUserMapper.selectListByQueryAs(queryWrapper,User.class);
ActivityDto activityDto = new ActivityDto(activity, list);
return JsonResult.success(activityDto);
}

View File

@ -132,7 +132,7 @@ public class UserController {
*/
@PostMapping("activity/registration")
public JsonResult<?> registration(@RequestBody RegistrationVo registrationVo) {
userService.registration(registrationVo);
return JsonResult.success();
}
}

View File

@ -1,6 +1,7 @@
package com.cdzy.activity.model.dto;
import com.cdzy.activity.model.Activity;
import com.cdzy.activity.model.User;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -23,5 +24,5 @@ public class ActivityDto implements Serializable {
private Activity activity;
private List<Long> userIds;
private List<User> userIds;
}

View File

@ -2,11 +2,17 @@ package com.cdzy.activity.model.vo;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author attiya
* @since 2025-09-22
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class RegistrationVo {
@NotBlank(message = "微信openId不能为空")

View File

@ -1,5 +1,6 @@
package com.cdzy.activity.service;
import com.cdzy.activity.model.vo.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.service.IService;
import com.cdzy.activity.model.User;
@ -13,4 +14,6 @@ import com.cdzy.activity.model.User;
public interface UserService extends IService<User> {
void saveUser(UserVo user);
void registration(RegistrationVo registrationVo);
}

View File

@ -1,5 +1,12 @@
package com.cdzy.activity.service.impl;
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;
import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.spring.service.impl.ServiceImpl;
@ -9,6 +16,12 @@ import com.cdzy.activity.service.UserService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
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;
/**
* 服务层实现
*
@ -21,6 +34,15 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Resource
private UserMapper userMapper;
@Resource
private ActivityMapper activityMapper;
@Resource
private ActivityUserMapper activityUserMapper;
@Resource
private UserRegistrationActivityMapper userRegistrationActivityMapper;
@Override
public void saveUser(UserVo user) {
QueryWrapper queryWrapper = QueryWrapper
@ -41,4 +63,49 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
entity.setIsFilled(2);
userMapper.update(entity);
}
@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);
}
}