localhost-back/src/main/java/io/company/localhost/service/localvoteService.java
2025-02-24 13:34:59 +09:00

123 lines
3.9 KiB
Java

package io.company.localhost.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.company.localhost.common.dto.ApiResponse;
import io.company.localhost.common.dto.MapDto;
import io.company.localhost.mapper.VotDetailMapper;
import io.company.localhost.mapper.VotMemberMapper;
import io.company.localhost.mapper.VotRecordMapper;
import io.company.localhost.mapper.VotchoiceMapper;
import io.company.localhost.mapper.localvoteMapper;
import io.company.localhost.utils.PageUtil;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class localvoteService {
private final localvoteMapper localvotemapper;
private final VotMemberMapper votmembermapper;
private final VotDetailMapper votdetailmapper;
private final VotRecordMapper votrecordmapper;
private final VotchoiceMapper votchoicemapper;
public Long insertVote(MapDto map) {
Long result = 0L;
int voteIdInt = 0 ;
if(map.get("voteId") != null) {
voteIdInt = (int) map.get("voteId");
}
if(voteIdInt != 0) {
result = votdetailmapper.insertdetail(map);
}else {
result = localvotemapper.insertVote(map);
if(result == 1) {
//투표 가능 멤버 등록
votmembermapper.insertmem(map);
//투표 항목,링크 등록
votdetailmapper.insertdetail(map);
}
}
return result;
}
public PageInfo<MapDto> selectVoteList(MapDto map) {
//투표 목록조회
int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1;
PageHelper.startPage(page, 10);
PageInfo<MapDto> localvote = PageUtil.redefineNavigation(new PageInfo<>(localvotemapper.selectVoteList(map),10));
List<MapDto> resultList = new ArrayList<>();
List<MapDto> voteList = localvote.getList();
for (MapDto vote : voteList) {
MapDto voteMap = new MapDto();
voteMap.put("localVote", vote);
Integer locvotSeq = (Integer) vote.get("LOCVOTSEQ");
//투표 항목조회
List<MapDto> voteDetails = votdetailmapper.selectVoteDetails(locvotSeq);
//투표 가능 멤버 조회
List<MapDto> voteMembers = votmembermapper.selectVoteMember(locvotSeq);
//투표 결과 조회
List<MapDto> voteResult = votchoicemapper.selectVoteResult(locvotSeq);
voteMap.put("voteDetails", voteDetails);
voteMap.put("voteMembers", voteMembers);
voteMap.put("voteResult", voteResult);
map.put("id",locvotSeq);
//투표 여부
int yesVotetotal = votrecordmapper.selectYesVotetotal(map);
voteMap.put("yesVotetotal", yesVotetotal);
resultList.add(voteMap);
}
localvote.setList(resultList);
return localvote;
}
public Long insertCheckedNums(MapDto map) {
Long result = votrecordmapper.insertCheckedNums(map);
if(result == 1) {
votchoicemapper.insertChoice(map);
}
return result;
}
public Long updateEndData(MapDto map) {
return localvotemapper.updateEndData(map);
}
public Long updateRandomResult(MapDto map) {
Long result = 0L;
ObjectMapper objectMapper = new ObjectMapper();
Object randomListObj = map.get("randomList");
if (randomListObj instanceof List<?>) {
List<?> rawList = (List<?>) randomListObj;
if (!rawList.isEmpty()) {
//랜덤뽑기
Object selectedObj = rawList.get(new Random().nextInt(rawList.size()));
MapDto selectedItem = objectMapper.convertValue(selectedObj, MapDto.class);
selectedItem.put("voteid", map.get("voteid"));
//투표결과 저장
result = localvotemapper.updateRandomResult(selectedItem);
}
}
return result;
}
}