活动-用户相关功能

This commit is contained in:
attiya 2025-09-23 09:59:04 +08:00
parent 8e73f01646
commit 39e2d9ac3b
4 changed files with 138 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import com.cdzy.activity.model.Activity;
import com.cdzy.activity.model.JsonResult;
import com.cdzy.activity.model.PageParam;
import com.cdzy.activity.model.User;
import com.cdzy.activity.model.dto.ActivityInfo;
import com.cdzy.activity.model.vo.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo;
import com.cdzy.activity.service.ActivityService;
@ -117,11 +118,9 @@ public class UserController {
* @return 登陆结果
*/
@GetMapping("activity/info")
public JsonResult<?> activityInfo(@NotNull(message = "活动ID不能为空") Long activityId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(ACTIVITY.ACTIVITY_ID.eq(activityId));
Activity activity = activityService.getOne(queryWrapper);
return JsonResult.success(activity);
public JsonResult<?> activityInfo(@NotNull(message = "活动ID不能为空") Long activityId,@NotNull(message = "活动ID不能为空") String wxOpenId) {
ActivityInfo activityInfo = userService.activityInfo(activityId,wxOpenId);
return JsonResult.success(activityInfo);
}
/**

View File

@ -0,0 +1,90 @@
package com.cdzy.activity.model.dto;
import lombok.Builder;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
@Builder
@Data
public class ActivityInfo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Long activityId;
/**
* 活动名称
*/
private String activityName;
/**
* 封面
*/
private String activityCover;
/**
* 主办方
*/
private String activitySponsor;
/**
* 简介
*/
private String activityDescription;
/**
* 活动地址
*/
private String activityLocation;
/**
* 报名开始时间
*/
private LocalDateTime registrationStartTime;
/**
* 报名结束时间
*/
private LocalDateTime registrationEndTime;
/**
* 活动开始时间
*/
private LocalDateTime startTime;
/**
* 报名结束时间
*/
private LocalDateTime endTime;
/**
* 报名最大人数
*/
private Integer maxNum;
/**
* 是否限制人数0不限制1限制
*/
private Integer limitPeople;
private Integer status;
/**
* 是否限制报名人群0不限制1限制
*/
private Integer limitRegister;
/**
* 活动类型1-体育 2-文娱
*/
private Integer activityType;
/**
* 该活动当前用户是否可报名
*/
private Boolean possibleRegister;
}

View File

@ -1,5 +1,6 @@
package com.cdzy.activity.service;
import com.cdzy.activity.model.dto.ActivityInfo;
import com.cdzy.activity.model.vo.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.service.IService;
@ -16,4 +17,6 @@ public interface UserService extends IService<User> {
void saveUser(UserVo user);
void registration(RegistrationVo registrationVo);
ActivityInfo activityInfo(Long activityId, String wxOpenId);
}

View File

@ -6,6 +6,7 @@ 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.dto.ActivityInfo;
import com.cdzy.activity.model.vo.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.query.QueryWrapper;
@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import static com.cdzy.activity.model.table.ActivityTableDef.ACTIVITY;
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;
@ -72,34 +74,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
if (activity == null) {
throw new RuntimeException("该活动不存在");
}
if (activity.getRegistrationStartTime().isAfter(LocalDateTime.now())){
if (activity.getRegistrationStartTime().isAfter(LocalDateTime.now())) {
throw new RuntimeException("该活动尚未开始报名");
}
if (activity.getRegistrationEndTime().isBefore(LocalDateTime.now())){
if (activity.getRegistrationEndTime().isBefore(LocalDateTime.now())) {
throw new RuntimeException("该活动已结束报名");
}
if (activity.getLimitPeople() == 1){
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()){
if (count >= activity.getMaxNum()) {
throw new RuntimeException("该活动报名人数已达上限");
}
}
if (activity.getLimitRegister() == 1){
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){
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){
if (user == null) {
throw new RuntimeException("用户信息错误");
}
UserRegistrationActivity registrationActivity = UserRegistrationActivity.builder()
@ -108,4 +110,35 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
.build();
userRegistrationActivityMapper.insert(registrationActivity);
}
@Override
public ActivityInfo activityInfo(Long activityId, String wxOpenId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(ACTIVITY.ACTIVITY_ID.eq(activityId));
ActivityInfo activityInfo = activityMapper.selectObjectByQueryAs(queryWrapper, ActivityInfo.class);
if (activityInfo == null) {
throw new RuntimeException("该活动不存在");
}
//默认允许报名
activityInfo.setPossibleRegister(Boolean.TRUE);
if (activityInfo.getRegistrationStartTime().isAfter(LocalDateTime.now())) {
activityInfo.setPossibleRegister(Boolean.FALSE);
}
if (activityInfo.getRegistrationEndTime().isBefore(LocalDateTime.now())) {
activityInfo.setPossibleRegister(Boolean.FALSE);
}
if (activityInfo.getLimitRegister() == 1) {
queryWrapper.clear();
queryWrapper.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) {
activityInfo.setPossibleRegister(Boolean.FALSE);
}
}
return activityInfo;
}
}