活动-用户相关功能

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

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; 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.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo; import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.service.IService; import com.mybatisflex.core.service.IService;
@ -16,4 +17,6 @@ public interface UserService extends IService<User> {
void saveUser(UserVo user); void saveUser(UserVo user);
void registration(RegistrationVo registrationVo); 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.Activity;
import com.cdzy.activity.model.ActivityUser; import com.cdzy.activity.model.ActivityUser;
import com.cdzy.activity.model.UserRegistrationActivity; 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.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo; import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.query.QueryWrapper; import com.mybatisflex.core.query.QueryWrapper;
@ -18,6 +19,7 @@ import org.springframework.stereotype.Service;
import java.time.LocalDateTime; 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.ActivityUserTableDef.ACTIVITY_USER;
import static com.cdzy.activity.model.table.UserRegistrationActivityTableDef.USER_REGISTRATION_ACTIVITY; import static com.cdzy.activity.model.table.UserRegistrationActivityTableDef.USER_REGISTRATION_ACTIVITY;
import static com.cdzy.activity.model.table.UserTableDef.USER; import static com.cdzy.activity.model.table.UserTableDef.USER;
@ -108,4 +110,35 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
.build(); .build();
userRegistrationActivityMapper.insert(registrationActivity); 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;
}
} }