Merge branch 'main' into yoon

This commit is contained in:
yoon 2025-02-17 14:29:06 +09:00
commit 733389a2a3
13 changed files with 402 additions and 1 deletions

View File

@ -0,0 +1,80 @@
package io.company.localhost.controller.api;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.pagehelper.PageInfo;
import io.company.localhost.common.annotation.Member;
import io.company.localhost.common.annotation.ParameterCheck;
import io.company.localhost.common.annotation.ReqMap;
import io.company.localhost.common.dto.ApiResponse;
import io.company.localhost.common.dto.MapDto;
import io.company.localhost.service.localvoteService;
import io.company.localhost.utils.AuthUtil;
import io.company.localhost.vo.MemberVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@RequestMapping("/api/vote")
@RestController
@RequiredArgsConstructor
public class VoteBoardController {
private final localvoteService localvoteservice;
/**
* 투표목록조회
* @param page 페이지번호 , 내가한투표 :0 투표안한것 :1 , 전체:0,투표마감:1,투표중:2
* @return
*/
@Member
@ParameterCheck
@GetMapping("getVoteList")
public ApiResponse<PageInfo<MapDto>> getVoteList(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) {
//userId
Long userId = AuthUtil.getUser().getId();
map.put("userId", userId);
PageInfo<MapDto> VoteList = localvoteservice.getVoteList(map);
return ApiResponse.ok(VoteList);
}
/**
* 투표 등록
* @param title 제목 ,endDate 종료날짜 ,itemList 항목리스트(항목,링크) ,addvoteIs 항목추가여부, votemMltiIs 다중투표 허용여부
* @return
*/
@Member
@PostMapping("insertWord")
public ApiResponse<Long> insertWord(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) {
//userId
Long userId = AuthUtil.getUser().getId();
map.put("userId", userId);
Long result = localvoteservice.insertVote(map);
return ApiResponse.ok(result);
}
/**
* 투표 선택
* @param title 제목 ,endDate 종료날짜 ,itemList 항목리스트(항목,링크) ,addvoteIs 항목추가여부, votemMltiIs 다중투표 허용여부
* @return
*/
@Member
@PostMapping("insertCheckedNums")
public ApiResponse<Long> insertCheckedNums(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) {
Long userId = AuthUtil.getUser().getId();
map.put("userId", userId);
return ApiResponse.ok(localvoteservice.insertCheckedNums(map));
}
}

View File

@ -30,7 +30,6 @@ import io.company.localhost.common.dto.ApiResponse;
import io.company.localhost.common.dto.MapDto; import io.company.localhost.common.dto.MapDto;
import io.company.localhost.service.commoncodService; import io.company.localhost.service.commoncodService;
import io.company.localhost.service.worddictyService; import io.company.localhost.service.worddictyService;
import io.company.localhost.utils.AuthUtil;
import io.company.localhost.vo.MemberVo; import io.company.localhost.vo.MemberVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -0,0 +1,16 @@
package io.company.localhost.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import io.company.localhost.common.dto.MapDto;
@Mapper
public interface VotDetailMapper {
Long insertdetail(MapDto map);
List<MapDto> getVoteDetails(int locvotSeq);
}

View File

@ -0,0 +1,20 @@
package io.company.localhost.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import io.company.localhost.common.dto.MapDto;
@Mapper
public interface VotMemberMapper {
void insertmem(MapDto map);
List<MapDto> getVoteMember(Integer locvotSeq);
}

View File

@ -0,0 +1,14 @@
package io.company.localhost.mapper;
import org.apache.ibatis.annotations.Mapper;
import io.company.localhost.common.dto.MapDto;
@Mapper
public interface VotRecordMapper {
int yesVotetotal(MapDto map);
Long insertCheckedNums(MapDto map);
}

View File

@ -0,0 +1,12 @@
package io.company.localhost.mapper;
import org.apache.ibatis.annotations.Mapper;
import io.company.localhost.common.dto.MapDto;
@Mapper
public interface VotchoiceMapper {
void insertChoice(MapDto map);
}

View File

@ -0,0 +1,19 @@
package io.company.localhost.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.github.pagehelper.PageInfo;
import io.company.localhost.common.dto.MapDto;
@Mapper
public interface localvoteMapper {
Long insertVote(MapDto map);
List<MapDto> getVoteList(MapDto map);
}

View File

@ -0,0 +1,91 @@
package io.company.localhost.service;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;
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 = (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> getVoteList(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.getVoteList(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.getVoteDetails(locvotSeq);
//투표 가능 멤버 조회
List<MapDto> voteMembers = votmembermapper.getVoteMember(locvotSeq);
voteMap.put("voteDetails", voteDetails);
voteMap.put("voteMembers", voteMembers);
map.put("id",locvotSeq);
//투표 여부
int yesVotetotal = votrecordmapper.yesVotetotal(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;
}
}

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.company.localhost.mapper.VotDetailMapper">
<insert id="insertdetail" parameterType="map">
INSERT INTO votdetail
(LOCVOTSEQ
,LOCVOTCON
,LOCVOTLIK
)
VALUES
<foreach collection="itemList" item="item" separator=",">
(
#{voteId}
,#{item.content}
,#{item.url}
)
</foreach>
</insert>
<select id="getVoteDetails" parameterType="int" >
select
*
from
votdetail
where
LOCVOTSEQ = #{LOCVOTSEQ}
</select>
</mapper>

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.company.localhost.mapper.VotMemberMapper">
<insert id="insertmem" parameterType="map">
INSERT INTO votmember
(LOCVOTSEQ
, MEMBERSEQ
)
VALUES
<foreach collection="activeUserList" item="user" separator=",">
(#{voteId}, #{user.id})
</foreach>
</insert>
<select id="getVoteMember" parameterType="int" >
select
*
from
votdetail
where
LOCVOTSEQ = #{LOCVOTSEQ}
</select>
</mapper>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.company.localhost.mapper.VotRecordMapper">
<select id="yesVotetotal" parameterType="map">
select count(*) as yesvote
from
votrecord
where
LOCVOTSEQ = #{id}
and
VOTRECMEM = #{userId}
</select>
<insert id="insertCheckedNums" parameterType="map">
INSERT INTO votrecord
(
LOCVOTSEQ
,VOTRECMEM
,VOTRECRDT
)
VALUES
(
#{votenum}
,#{userId}
,now()
)
</insert>
<!-- <insert id="insertCheckedNums" parameterType="map">
INSERT INTO votrecord
(
LOCVOTSEQ
,VOTRECMEM
,VOTRECRDT
)
VALUES
<foreach collection="checkedList" item="item" separator=",">
(#{item.LOCVOTSEQ}, #{userId} ,now())
</foreach>
</insert>-->
</mapper>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.company.localhost.mapper.VotchoiceMapper">
<insert id="insertChoice" parameterType="map">
INSERT INTO votchoice
(
LOCVOTSEQ
,VOTDETSEQ
)
VALUES
<foreach collection="checkedList" item="item" separator=",">
(
#{item.LOCVOTSEQ}
,#{item.VOTDETSEQ}
)
</foreach>
</insert>
</mapper>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.company.localhost.mapper.localvoteMapper">
<insert id="insertVote" parameterType="map" useGeneratedKeys="true" keyProperty="voteId">
insert into localvote
(
LOCVOTREG
,LOCVOTRDT
,LOCVOTEDT
,LOCVOTTTL
,LOCVOTADD
,LOCVOTMUL
)
values
(
#{userId}
,now()
,#{endDate}
,#{title}
,#{addvoteIs}
,#{votemMltiIs}
)
</insert>
<select id="getVoteList" parameterType="map">
select
a.*
,DATE_FORMAT(a.LOCVOTRDT, '%Y-%m-%d %H:%i') AS formatted_LOCVOTRDT
,DATE_FORMAT(a.LOCVOTEDT, '%Y-%m-%d %H:%i') AS formatted_LOCVOTEDT
,b.*
from
localvote a
LEFT JOIN
netmember b
on
a.LOCVOTREG = b.MEMBERSEQ
</select>
</mapper>