123 lines
3.9 KiB
Java
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;
|
|
}
|
|
}
|