/************************************************************ * * @packageName : io.company.localhost.service * @fileName : localvoteService.java * @author : 공현지 * @date : 25.01.07 * @description : * * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * 24.12.06 공현지 최초 생성 * *************************************************************/ package io.company.localhost.service; import java.util.ArrayList; import java.util.List; import java.util.Random; 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.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 selectVoteList(MapDto map) { //투표 목록조회 int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1; PageHelper.startPage(page, 10); PageInfo localvote = PageUtil.redefineNavigation(new PageInfo<>(localvotemapper.selectVoteList(map),10)); List resultList = new ArrayList<>(); List voteList = localvote.getList(); for (MapDto vote : voteList) { MapDto voteMap = new MapDto(); voteMap.put("localVote", vote); Integer locvotSeq = (Integer) vote.get("LOCVOTSEQ"); map.put("locvotSeq", locvotSeq); //투표 항목조회 + 결과 조회 + 투표여부 List voteDetails = votdetailmapper.selectVoteDetailsResult(map); //투표 가능 멤버 조회 List voteMembers = votmembermapper.selectVoteMember(locvotSeq); voteMap.put("voteDetails", voteDetails); voteMap.put("voteMembers", voteMembers); 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; } public Long updateDeleteData(MapDto map) { return localvotemapper.updateDeleteData(map); } }