活动-用户相关功能
This commit is contained in:
parent
8e73f01646
commit
39e2d9ac3b
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
90
src/main/java/com/cdzy/activity/model/dto/ActivityInfo.java
Normal file
90
src/main/java/com/cdzy/activity/model/dto/ActivityInfo.java
Normal 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;
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user