
board-service에서 아래 코드 작성하기
server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3307/board-db username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate: ddl-auto: update show-sql: true client: user-service: url: http://localhost:8080 point-service: url: http://localhost:8082
public class DeductPointsRequestDto { private Long userId; private int amount; public DeductPointsRequestDto(Long userId, int amount) { this.userId = userId; this.amount = amount; } public Long getUserId() { return userId; } public int getAmount() { return amount; } }
@Component public class PointClient { private final RestClient restClient; public PointClient( @Value("${client.point-service.url}") String pointServiceUrl ) { this.restClient = RestClient.builder() .baseUrl(pointServiceUrl) .build(); } public void deductPoints(Long userId, int amount) { DeductPointsRequestDto deductPointsRequestDto = new DeductPointsRequestDto(userId, amount); this.restClient.post() .uri("/points/deduct") .contentType(MediaType.APPLICATION_JSON) .body(deductPointsRequestDto) .retrieve() .toBodilessEntity(); } }
public class AddActivityScoreRequestDto { private Long userId; private int score; public AddActivityScoreRequestDto(Long userId, int score) { this.userId = userId; this.score = score; } public Long getUserId() { return userId; } public int getScore() { return score; } }
@Component public class UserClient { ... public void addActivityScore(Long userId, int score) { AddActivityScoreRequestDto addActivityScoreRequestDto = new AddActivityScoreRequestDto(userId, score); this.restClient.post() .uri("/users/activity-score/add") .contentType(MediaType.APPLICATION_JSON) .body(addActivityScoreRequestDto) .retrieve() .toBodilessEntity(); } }
@Service public class BoardService { private final BoardRepository boardRepository; private final UserClient userClient; private final PointClient pointClient; public BoardService(BoardRepository boardRepository, UserClient userClient, PointClient pointClient) { this.boardRepository = boardRepository; this.userClient = userClient; this.pointClient = pointClient; } @Transactional public void create(CreateBoardRequestDto createBoardRequestDto) { // 게시글 작성 전 100 포인트 차감 pointClient.deductPoints(createBoardRequestDto.getUserId(), 100); // 게시글 작성 Board board = new Board( createBoardRequestDto.getTitle(), createBoardRequestDto.getContent(), createBoardRequestDto.getUserId() ); this.boardRepository.save(board); // 게시글 작성 시 작성자에게 활동 점수 10점 부여 userClient.addActivityScore(createBoardRequestDto.getUserId(), 10); } ... }






