Use DTO for activity list

This commit is contained in:
Tim
2025-08-12 01:22:26 +08:00
parent f977f96407
commit 499488c22a
3 changed files with 52 additions and 2 deletions

View File

@@ -1,7 +1,9 @@
package com.openisle.controller;
import com.openisle.dto.ActivityDto;
import com.openisle.dto.MilkTeaInfoDto;
import com.openisle.dto.MilkTeaRedeemRequest;
import com.openisle.mapper.ActivityMapper;
import com.openisle.model.Activity;
import com.openisle.model.ActivityType;
import com.openisle.model.User;
@@ -12,6 +14,7 @@ import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/activities")
@@ -19,10 +22,13 @@ import java.util.List;
public class ActivityController {
private final ActivityService activityService;
private final UserService userService;
private final ActivityMapper activityMapper;
@GetMapping
public List<Activity> list() {
return activityService.list();
public List<ActivityDto> list() {
return activityService.list().stream()
.map(activityMapper::toDto)
.collect(Collectors.toList());
}
@GetMapping("/milk-tea")

View File

@@ -0,0 +1,21 @@
package com.openisle.dto;
import com.openisle.model.ActivityType;
import lombok.Data;
import java.time.LocalDateTime;
/**
* DTO representing an activity without participant details.
*/
@Data
public class ActivityDto {
private Long id;
private String title;
private String icon;
private String content;
private LocalDateTime startTime;
private LocalDateTime endTime;
private ActivityType type;
private boolean ended;
}

View File

@@ -0,0 +1,23 @@
package com.openisle.mapper;
import com.openisle.dto.ActivityDto;
import com.openisle.model.Activity;
import org.springframework.stereotype.Component;
/** Mapper for activity entities. */
@Component
public class ActivityMapper {
public ActivityDto toDto(Activity a) {
ActivityDto dto = new ActivityDto();
dto.setId(a.getId());
dto.setTitle(a.getTitle());
dto.setIcon(a.getIcon());
dto.setContent(a.getContent());
dto.setStartTime(a.getStartTime());
dto.setEndTime(a.getEndTime());
dto.setType(a.getType());
dto.setEnded(a.isEnded());
return dto;
}
}