diff --git a/src/main/java/com/cdzy/activity/controller/UserController.java b/src/main/java/com/cdzy/activity/controller/UserController.java index 957d84d..ea5e84b 100644 --- a/src/main/java/com/cdzy/activity/controller/UserController.java +++ b/src/main/java/com/cdzy/activity/controller/UserController.java @@ -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); } /** diff --git a/src/main/java/com/cdzy/activity/model/dto/ActivityInfo.java b/src/main/java/com/cdzy/activity/model/dto/ActivityInfo.java new file mode 100644 index 0000000..4606831 --- /dev/null +++ b/src/main/java/com/cdzy/activity/model/dto/ActivityInfo.java @@ -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; +} \ No newline at end of file diff --git a/src/main/java/com/cdzy/activity/service/UserService.java b/src/main/java/com/cdzy/activity/service/UserService.java index 28f6c22..5b1fffe 100644 --- a/src/main/java/com/cdzy/activity/service/UserService.java +++ b/src/main/java/com/cdzy/activity/service/UserService.java @@ -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 { void saveUser(UserVo user); void registration(RegistrationVo registrationVo); + + ActivityInfo activityInfo(Long activityId, String wxOpenId); } diff --git a/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java b/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java index f4e6f7f..2ee274d 100644 --- a/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java +++ b/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java @@ -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 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)); + .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 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; + } }