Skip to content

Commit

Permalink
Merge pull request #287 from 42organization/dev
Browse files Browse the repository at this point in the history
최종 PR 머지하겠습니다!
  • Loading branch information
Sion99 authored Sep 20, 2023
2 parents 55de617 + 76b37fe commit b035c0f
Show file tree
Hide file tree
Showing 212 changed files with 10,898 additions and 5,732 deletions.
10 changes: 4 additions & 6 deletions createView.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ create or replace view v_teamuser as
from team, team_user tu, user u, game g
where team.id=tu.team_id and u.id=tu.user_id and g.id=team.game_id;

create or replace view v_rank_game_detail as
select team.id teamId, team.score, team.win, g.id gameId, g.season_id seasonId, g.start_time startTime, g.status, g.mode,
tu.user_id userId, u.intra_id intraId, u.image_uri image, u.total_exp,
r.wins, r.losses
from team, team_user tu, user u, game g, ranks r
where team.id=tu.team_id and u.id=tu.user_id and g.id=team.game_id and r.user_id = u.id and r.season_id = g.season_id;
create or replace VIEW `v_rank_game_detail` AS
select `team`.`id` AS `teamId`,`team`.`score` AS `score`,`team`.`win` AS `win`,`g`.`id` AS `gameId`,`g`.`season_id` AS `seasonId`,`g`.`start_time` AS `startTime`,`g`.`end_time` AS `endTime`,`g`.`status` AS `status`,`g`.`mode` AS `mode`,`tu`.`user_id` AS `userId`,`u`.`intra_id` AS `intraId`,`u`.`image_uri` AS `image`,`u`.`total_exp` AS `total_exp`,`r`.`wins` AS `wins`,`r`.`losses` AS `losses`
from ((((`team` join `team_user` `tu`) join `user` `u`) join `game` `g`) join `ranks` `r`)
where ((`team`.`id` = `tu`.`team_id`) and (`u`.`id` = `tu`.`user_id`) and (`g`.`id` = `team`.`game_id`) and (`r`.`user_id` = `u`.`id`) and (`r`.`season_id` = `g`.`season_id`));
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.gg.server.admin.coin.controller;

import com.gg.server.admin.coin.dto.CoinUpdateRequestDto;
import com.gg.server.admin.coin.service.CoinAdminService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
@RequestMapping("pingpong/admin/coin")
public class CoinAdminController {
private final CoinAdminService coinAdminService;

@PutMapping()
public ResponseEntity updateUserCoin(@RequestBody CoinUpdateRequestDto coinUpdateRequestDto) {
coinAdminService.updateUserCoin(coinUpdateRequestDto);
return new ResponseEntity(HttpStatus.NO_CONTENT);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.gg.server.admin.coin.controller;

import com.gg.server.admin.coin.dto.CoinPolicyAdminAddDto;
import com.gg.server.admin.coin.dto.CoinPolicyAdminListResponseDto;
import com.gg.server.admin.coin.service.CoinPolicyAdminService;
import com.gg.server.domain.user.dto.UserDto;
import com.gg.server.global.dto.PageRequestDto;
import com.gg.server.global.utils.argumentresolver.Login;
import io.swagger.v3.oas.annotations.Parameter;
import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequiredArgsConstructor
@RequestMapping("pingpong/admin")
@Validated
public class CoinPolicyAdminController {
private final CoinPolicyAdminService coinPolicyAdminService;

@GetMapping("/coinpolicy")
public ResponseEntity<CoinPolicyAdminListResponseDto> getCoinPolicyList(@ModelAttribute @Valid PageRequestDto coReq){
Pageable pageable = PageRequest.of(coReq.getPage() - 1, coReq.getSize(), Sort.by("createdAt").descending());

return ResponseEntity.ok()
.body(coinPolicyAdminService.findAllCoinPolicy(pageable));
}

@PostMapping("/coinpolicy")
public ResponseEntity addCoinPolicy(@Parameter(hidden = true) @Login UserDto userDto, @Valid @RequestBody CoinPolicyAdminAddDto addDto){

coinPolicyAdminService.addCoinPolicy(userDto, addDto);
return new ResponseEntity(HttpStatus.CREATED);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.gg.server.admin.coin.data;

import com.gg.server.domain.coin.data.CoinPolicy;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface CoinPolicyAdminRepository extends JpaRepository<CoinPolicy, Long> {
Optional<CoinPolicy> findFirstByOrderByIdDesc();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.gg.server.admin.coin.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.PositiveOrZero;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class CoinPolicyAdminAddDto {
@NotNull(message = "plz. not null attendance")
@PositiveOrZero(message = "plz. attendance PositiveOrZero")
private int attendance;

@NotNull(message = "plz. not null normal")
@PositiveOrZero(message = "plz. normal PositiveOrZero")
private int normal;

@NotNull(message = "plz. not null rankWin")
@PositiveOrZero(message = "plz. rankWin PositiveOrZero")
private int rankWin;

@NotNull(message = "plz. not null rankLose")
@PositiveOrZero(message = "plz. rankLose PositiveOrZero")
private int rankLose;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.gg.server.admin.coin.dto;

import com.gg.server.admin.announcement.dto.AnnouncementAdminResponseDto;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

@AllArgsConstructor
@NoArgsConstructor
@Getter
public class CoinPolicyAdminListResponseDto {
private List<CoinPolicyAdminResponseDto> coinPolicyList;
private int totalPage;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.gg.server.admin.coin.dto;

import com.gg.server.domain.announcement.data.Announcement;
import com.gg.server.domain.coin.data.CoinPolicy;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Getter
@NoArgsConstructor
public class CoinPolicyAdminResponseDto {
private Long coinPolicyId;
private String createUserId;
private int attendance;
private int normal;
private int rankWin;
private int rankLose;
private LocalDateTime createdAt;

public CoinPolicyAdminResponseDto(CoinPolicy coinPolicyAdmin)
{
this.coinPolicyId = coinPolicyAdmin.getId();
this.createUserId = coinPolicyAdmin.getUser().getIntraId();
this.attendance = coinPolicyAdmin.getAttendance();
this.normal = coinPolicyAdmin.getNormal();
this.rankWin = coinPolicyAdmin.getRankWin();
this.rankLose = coinPolicyAdmin.getRankLose();
this.createdAt = coinPolicyAdmin.getCreatedAt();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.gg.server.admin.coin.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class CoinUpdateRequestDto {
@NotNull(message = "intraId는 null이 될 수 없습니다.")
private String intraId;
@NotNull(message = "change는 null이 될 수 없습니다.")
private int change;
@NotNull(message = "content는 null이 될 수 없습니다.")
private String content;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.gg.server.admin.coin.service;

import com.gg.server.admin.coin.dto.CoinUpdateRequestDto;
import com.gg.server.domain.coin.data.CoinHistory;
import com.gg.server.domain.coin.service.CoinHistoryService;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.data.UserRepository;
import com.gg.server.domain.user.exception.UserNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@RequiredArgsConstructor
public class CoinAdminService {
private final UserRepository userRepository;
private final CoinHistoryService coinHistoryService;

@Transactional
public void updateUserCoin(CoinUpdateRequestDto coinUpdateRequestDto) {
User user = userRepository.findByIntraId(coinUpdateRequestDto.getIntraId()).orElseThrow(UserNotFoundException::new);
user.addGgCoin(coinUpdateRequestDto.getChange());
coinHistoryService.addCoinHistory(new CoinHistory(user, coinUpdateRequestDto.getContent(), coinUpdateRequestDto.getChange()));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.gg.server.admin.coin.service;

import com.gg.server.admin.announcement.dto.AnnouncementAdminListResponseDto;
import com.gg.server.admin.announcement.dto.AnnouncementAdminResponseDto;
import com.gg.server.admin.coin.data.CoinPolicyAdminRepository;
import com.gg.server.admin.coin.dto.CoinPolicyAdminAddDto;
import com.gg.server.admin.coin.dto.CoinPolicyAdminListResponseDto;
import com.gg.server.admin.coin.dto.CoinPolicyAdminResponseDto;
import com.gg.server.admin.user.data.UserAdminRepository;
import com.gg.server.domain.announcement.data.Announcement;
import com.gg.server.domain.coin.data.CoinPolicy;
import com.gg.server.domain.user.data.User;
import com.gg.server.domain.user.dto.UserDto;
import com.gg.server.domain.user.exception.UserNotFoundException;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@AllArgsConstructor
public class CoinPolicyAdminService {
private final CoinPolicyAdminRepository coinPolicyAdminRepository;
private final UserAdminRepository userAdminRepository;

@Transactional(readOnly = true)
public CoinPolicyAdminListResponseDto findAllCoinPolicy(Pageable pageable) {
Page<CoinPolicy> allCoinPolicy = coinPolicyAdminRepository.findAll(pageable);
Page<CoinPolicyAdminResponseDto> responseDtos = allCoinPolicy.map(CoinPolicyAdminResponseDto::new);

return new CoinPolicyAdminListResponseDto(responseDtos.getContent(),
responseDtos.getTotalPages());
}

@Transactional
public void addCoinPolicy(UserDto userDto, CoinPolicyAdminAddDto addDto){
User user = userAdminRepository.findByIntraId(userDto.getIntraId()).orElseThrow(UserNotFoundException::new);

CoinPolicy coinPolicy = CoinPolicy.from(user, addDto);
coinPolicyAdminRepository.save(coinPolicy);
}
}
Loading

0 comments on commit b035c0f

Please sign in to comment.