Merge branch 'main' of http://192.168.0.251:3000/localnet/localhost-back.git into main
This commit is contained in:
commit
6198078447
@ -31,6 +31,7 @@ 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.NetprojctService;
|
||||
import io.company.localhost.service.ProMemberService;
|
||||
import io.company.localhost.service.commoncodService;
|
||||
import io.company.localhost.utils.AuthUtil;
|
||||
import io.company.localhost.vo.MemberVo;
|
||||
@ -45,6 +46,7 @@ public class ProjectController {
|
||||
|
||||
private final commoncodService commoncodservice;
|
||||
private final NetprojctService netprojctService;
|
||||
private final ProMemberService promemberService;
|
||||
|
||||
/**
|
||||
* 프로젝트 연도 조회
|
||||
@ -64,7 +66,7 @@ public class ProjectController {
|
||||
*
|
||||
* @param projectName 프로젝트 이름
|
||||
* @param participantSeq 참여자 번호
|
||||
* @param address 주소 정보 (주소, 상세주소, 우편번호
|
||||
* @param address 주소 정보 (주소, 상세주소, 우편번호)
|
||||
* @return
|
||||
*
|
||||
*/
|
||||
@ -114,7 +116,7 @@ public class ProjectController {
|
||||
*/
|
||||
@PatchMapping("/updateYon")
|
||||
public ApiResponse<Boolean> updateProjectMember(@ReqMap MapDto map) {
|
||||
boolean isMember = netprojctService.updateProjectMember(map);
|
||||
boolean isMember = promemberService.updateProjectMember(map);
|
||||
return ApiResponse.ok(isMember);
|
||||
}
|
||||
|
||||
@ -128,7 +130,7 @@ public class ProjectController {
|
||||
@GetMapping("/members/{projctSeq}")
|
||||
public ApiResponse<List<MapDto>> selectProjectMembers(@PathVariable int projctSeq) {
|
||||
|
||||
return ApiResponse.ok(netprojctService.getProjectMembers(projctSeq));
|
||||
return ApiResponse.ok(promemberService.selectProjectMembers(projctSeq));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -129,6 +129,19 @@ public class UserController {
|
||||
return ApiResponse.ok(!isDuplicate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 전화번호 중복 체크
|
||||
*
|
||||
* @param memberTel
|
||||
* @return ApiResponse<Boolean>
|
||||
*
|
||||
*/
|
||||
@GetMapping("/checkPhone")
|
||||
public ApiResponse<Boolean> selectCheckPhone(@RequestParam String memberTel) {
|
||||
boolean isDuplicate = netmemberservice.selectCheckPhone(memberTel);
|
||||
return ApiResponse.ok(!isDuplicate);
|
||||
}
|
||||
|
||||
/**
|
||||
* 로그인 여부 체크
|
||||
*
|
||||
|
||||
@ -32,6 +32,8 @@ public interface NetmemberMapper {
|
||||
|
||||
int selectCheckId(String memberIds);
|
||||
|
||||
int selectCheckPhone(String memberTel);
|
||||
|
||||
int selectPwReset(MapDto map);
|
||||
|
||||
String selectPassword(String id);
|
||||
@ -39,4 +41,5 @@ public interface NetmemberMapper {
|
||||
int updatePassword(MapDto map);
|
||||
|
||||
List<MapDto> getallUserList();
|
||||
|
||||
}
|
||||
|
||||
@ -29,11 +29,5 @@ public interface NetprojctMapper {
|
||||
|
||||
int updateProject(MapDto map);
|
||||
|
||||
int insertProjectMember(Integer projctSeq);
|
||||
|
||||
int updateProjectMember(MapDto map);
|
||||
|
||||
List<MapDto> selectProjectMembers(int projctSeq);
|
||||
|
||||
List<MapDto> selectProjectLog(int projctSeq);
|
||||
}
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
/************************************************************
|
||||
*
|
||||
* @packageName : io.company.localhost.mapper
|
||||
* @fileName : PromemberMapper.java
|
||||
* @author : 박지윤
|
||||
* @date : 24.02.20
|
||||
* @description :
|
||||
*
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 24.02.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 PromemberMapper {
|
||||
|
||||
int insertProjectMember(Integer projctSeq);
|
||||
|
||||
int insertNewMemberToProjects(Integer memberSeq);
|
||||
|
||||
int updateProjectMember(MapDto map);
|
||||
|
||||
List<MapDto> selectProjectMembers(int projctSeq);
|
||||
|
||||
}
|
||||
@ -23,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import io.company.localhost.common.dto.MapDto;
|
||||
import io.company.localhost.mapper.NetmemberMapper;
|
||||
import io.company.localhost.mapper.PromemberMapper;
|
||||
import io.company.localhost.mapper.commoncodMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@ -31,6 +32,7 @@ import lombok.RequiredArgsConstructor;
|
||||
public class NetmemberService {
|
||||
private final NetmemberMapper memberMapper;
|
||||
private final commoncodMapper commoncodMapper;
|
||||
private final PromemberMapper promemberMapper;
|
||||
private final DelegatingPasswordEncoder passwordEncoder;
|
||||
private final FileService fileService;
|
||||
|
||||
@ -73,6 +75,10 @@ public class NetmemberService {
|
||||
|
||||
commoncodMapper.updateColorYon(colorMap);
|
||||
|
||||
// 모든 프로젝트에 새로운 멤버 추가
|
||||
Integer newMemberSeq = map.getInt("MEMBERSEQ");
|
||||
promemberMapper.insertNewMemberToProjects(newMemberSeq);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -86,6 +92,16 @@ public class NetmemberService {
|
||||
return memberMapper.selectCheckId(memberIds) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 전화번호 중복 체크
|
||||
*
|
||||
* @param memberTel
|
||||
* @return
|
||||
*/
|
||||
public boolean selectCheckPhone(String memberTel) {
|
||||
return memberMapper.selectCheckPhone(memberTel) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 사원 목록 전체 조회
|
||||
*
|
||||
|
||||
@ -22,6 +22,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import io.company.localhost.common.dto.MapDto;
|
||||
import io.company.localhost.mapper.NetprojctMapper;
|
||||
import io.company.localhost.mapper.PromemberMapper;
|
||||
import io.company.localhost.mapper.commoncodMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@ -30,6 +31,7 @@ import lombok.RequiredArgsConstructor;
|
||||
public class NetprojctService {
|
||||
private final commoncodMapper commoncodMapper;
|
||||
private final NetprojctMapper netprojctMapper;
|
||||
private final PromemberMapper promemberMapper;
|
||||
|
||||
|
||||
/**
|
||||
@ -63,7 +65,7 @@ public class NetprojctService {
|
||||
|
||||
Integer projctSeq = map.getInt("PROJCTSEQ");
|
||||
|
||||
netprojctMapper.insertProjectMember(projctSeq);
|
||||
promemberMapper.insertProjectMember(projctSeq);
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -101,25 +103,6 @@ public class NetprojctService {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 프로젝트 참여, 미참여 member
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public boolean updateProjectMember(MapDto map) {
|
||||
return netprojctMapper.updateProjectMember(map) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 프로젝트 멤버리스트 조회
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
public List<MapDto> getProjectMembers(int projctSeq) {
|
||||
return netprojctMapper.selectProjectMembers(projctSeq);
|
||||
}
|
||||
|
||||
/**
|
||||
* 프로젝트 log 조회
|
||||
|
||||
@ -0,0 +1,53 @@
|
||||
/************************************************************
|
||||
*
|
||||
* @packageName : io.company.localhost.PromemberService
|
||||
* @fileName : PromemberService.java
|
||||
* @author : 박지윤
|
||||
* @date : 25.02.20
|
||||
* @description :
|
||||
*
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 25.02.20 박지윤 최초 생성
|
||||
*
|
||||
*************************************************************/
|
||||
package io.company.localhost.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import io.company.localhost.common.dto.MapDto;
|
||||
import io.company.localhost.mapper.PromemberMapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class ProMemberService {
|
||||
private final PromemberMapper promemberMapper;
|
||||
|
||||
/**
|
||||
* 프로젝트 참여, 미참여 member
|
||||
*
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public boolean updateProjectMember(MapDto map) {
|
||||
return promemberMapper.updateProjectMember(map) > 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 프로젝트 멤버리스트 조회
|
||||
*
|
||||
* @param
|
||||
* @return
|
||||
*/
|
||||
public List<MapDto> selectProjectMembers(int projctSeq) {
|
||||
return promemberMapper.selectProjectMembers(projctSeq);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -6,6 +6,7 @@ import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import io.company.localhost.utils.BlobUtil;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -196,24 +197,6 @@ public class localbordService {
|
||||
return boardMapper.selectCountCommentReactions(boardId);
|
||||
}
|
||||
|
||||
private String procBlobToString(Object blob) {
|
||||
try {
|
||||
if (blob instanceof String) {
|
||||
return (String) blob; // 이미 문자열이면 그대로 반환
|
||||
} else if (blob instanceof java.sql.Blob) {
|
||||
java.sql.Blob sqlBlob = (java.sql.Blob) blob;
|
||||
long blobLength = sqlBlob.length();
|
||||
byte[] blobBytes = sqlBlob.getBytes(1, (int) blobLength);
|
||||
return new String(blobBytes, StandardCharsets.UTF_8); // SQL BLOB → 바이트 배열 → 문자열 변환
|
||||
} else {
|
||||
throw new UnsupportedOperationException("Unsupported blob type: " + blob.getClass()); // 지원되지 않는 타입이면 예외 발생
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to convert Blob to String: " + e.getMessage(), e); // 변환 실패 시 예외 처리
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private String procFirstImageUrl(String jsonContent) {
|
||||
try {
|
||||
// JSON 유효성 검사
|
||||
@ -292,7 +275,7 @@ public class localbordService {
|
||||
// Blob 데이터를 문자열로 변환
|
||||
Object content = boardDetail.get("content");
|
||||
if (content != null) {
|
||||
String contentString = procBlobToString(content); // Blob을 문자열로 변환
|
||||
String contentString = BlobUtil.procBlobToString(content); // Blob을 문자열로 변환
|
||||
boardDetail.put("content", contentString); // JSON 변환 가능
|
||||
}
|
||||
}
|
||||
@ -309,7 +292,7 @@ public class localbordService {
|
||||
post.put("dislikeCount", reactions.getOrDefault("dislikeCount", 0));
|
||||
|
||||
Object content = post.get("content");
|
||||
String contentString = procBlobToString(content);
|
||||
String contentString = BlobUtil.procBlobToString(content);
|
||||
post.put("content", contentString);
|
||||
|
||||
String firstImageUrl = procFirstImageUrl(contentString);
|
||||
|
||||
@ -23,6 +23,7 @@ import org.springframework.stereotype.Service;
|
||||
import io.company.localhost.common.dto.MapDto;
|
||||
import io.company.localhost.mapper.commoncodMapper;
|
||||
import io.company.localhost.mapper.worddictyMapper;
|
||||
import io.company.localhost.utils.BlobUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Service
|
||||
@ -32,9 +33,14 @@ public class worddictyService {
|
||||
private final worddictyMapper worddictymapper;
|
||||
private final commoncodMapper commoncodmapper;
|
||||
|
||||
|
||||
public List<MapDto> getWordList(MapDto map) {
|
||||
List<MapDto> wordList = worddictymapper.getWordList(map);
|
||||
for (MapDto word : wordList) {
|
||||
Object content = word.get("WRDDICCON");
|
||||
// BlobUtil.procBlobToString으로 content 변환
|
||||
String contentString = BlobUtil.procBlobToString(content);
|
||||
word.put("WRDDICCON", contentString);
|
||||
}
|
||||
List<MapDto> processedList = new ArrayList<>();
|
||||
|
||||
// 데이터 가공
|
||||
@ -60,7 +66,6 @@ public class worddictyService {
|
||||
}
|
||||
return processedList;
|
||||
}
|
||||
|
||||
public Long insertWord(MapDto map) {
|
||||
|
||||
if (map.containsKey("CMNCODNAM") && map.get("CMNCODNAM") != null) {
|
||||
@ -68,28 +73,16 @@ public class worddictyService {
|
||||
}
|
||||
return worddictymapper.insertWord(map);
|
||||
}
|
||||
|
||||
public Long updateWord(MapDto map) {
|
||||
return worddictymapper.updateWord(map);
|
||||
}
|
||||
|
||||
public MapDto getWordDetail(MapDto map) {
|
||||
return worddictymapper.getWordDetail(map);
|
||||
}
|
||||
|
||||
public int getTotal(MapDto map) {
|
||||
return worddictymapper.getTotal(map);
|
||||
}
|
||||
|
||||
|
||||
public Long updateword(MapDto map) {
|
||||
return worddictymapper.updateword(map);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
42
src/main/java/io/company/localhost/utils/BlobUtil.java
Normal file
42
src/main/java/io/company/localhost/utils/BlobUtil.java
Normal file
@ -0,0 +1,42 @@
|
||||
/************************************************************
|
||||
*
|
||||
* @packageName : io.company.localhost.utils
|
||||
* @fileName : BlobUtil.java
|
||||
* @author : 서지희
|
||||
* @date : 25.02.25
|
||||
* @description :
|
||||
*
|
||||
* ===========================================================
|
||||
* DATE AUTHOR NOTE
|
||||
* -----------------------------------------------------------
|
||||
* 25.02.25 서지희 최초 생성
|
||||
*
|
||||
*************************************************************/
|
||||
package io.company.localhost.utils;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Blob;
|
||||
|
||||
public class BlobUtil {
|
||||
|
||||
private BlobUtil() {
|
||||
// 객체 생성 방지 (유틸리티 클래스는 인스턴스를 만들 필요가 없음)
|
||||
}
|
||||
|
||||
public static String procBlobToString(Object blob) {
|
||||
try {
|
||||
if (blob instanceof String) {
|
||||
return (String) blob; // 이미 문자열이면 그대로 반환
|
||||
} else if (blob instanceof Blob) {
|
||||
Blob sqlBlob = (Blob) blob;
|
||||
long blobLength = sqlBlob.length();
|
||||
byte[] blobBytes = sqlBlob.getBytes(1, (int) blobLength);
|
||||
return new String(blobBytes, StandardCharsets.UTF_8); // SQL BLOB → 바이트 배열 → 문자열 변환
|
||||
} else {
|
||||
throw new UnsupportedOperationException("Unsupported blob type: " + blob.getClass()); // 지원되지 않는 타입이면 예외 발생
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to convert Blob to String: " + e.getMessage(), e); // 변환 실패 시 예외 처리
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -88,13 +88,20 @@
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 중복체크 -->
|
||||
<!-- id 중복체크 -->
|
||||
<select id="selectCheckId" resultType="int">
|
||||
SELECT COUNT(*)
|
||||
FROM netmember
|
||||
WHERE MEMBERIDS = #{memberIds}
|
||||
</select>
|
||||
|
||||
<!-- phone 중복체크 -->
|
||||
<select id="selectCheckPhone" resultType="int">
|
||||
SELECT COUNT(*)
|
||||
FROM netmember
|
||||
WHERE MEMBERTEL = #{memberTel}
|
||||
</select>
|
||||
|
||||
<!-- 비밀번호 재설정 member 체크 -->
|
||||
<select id="selectPwReset" resultType="int">
|
||||
SELECT COUNT(*)
|
||||
@ -78,34 +78,6 @@
|
||||
WHERE PROJCTSEQ = #{projctSeq}
|
||||
</update>
|
||||
|
||||
|
||||
<!-- 프로젝트 등록 후 모든 사용자 자동 참여 -->
|
||||
<insert id="insertProjectMember">
|
||||
INSERT INTO promember (PROJCTSEQ, MEMBERSEQ, PROJCTYON)
|
||||
SELECT #{projctSeq}, MEMBERSEQ, '1' FROM netmember;
|
||||
</insert>
|
||||
|
||||
<!-- 프로젝트 참여 미참여 -->
|
||||
<update id="updateProjectMember">
|
||||
UPDATE promember
|
||||
SET PROJCTYON = #{projctYon}
|
||||
WHERE PROJCTSEQ = #{projctSeq}
|
||||
AND MEMBERSEQ = #{memberSeq}
|
||||
</update>
|
||||
|
||||
<!-- 프로젝트 멤버 조회 -->
|
||||
<select id="selectProjectMembers" resultType="io.company.localhost.common.dto.MapDto">
|
||||
SELECT pm.PROJCTSEQ,
|
||||
pm.MEMBERSEQ,
|
||||
pm.PROJCTYON,
|
||||
nm.MEMBERNAM,
|
||||
nm.MEMBERPRF,
|
||||
nm.MEMBERCOL as usercolor
|
||||
FROM promember pm
|
||||
JOIN netmember nm ON pm.MEMBERSEQ = nm.MEMBERSEQ
|
||||
WHERE pm.PROJCTSEQ = #{projctSeq}
|
||||
</select>
|
||||
|
||||
<!-- 프로젝트 로그 조회 -->
|
||||
<select id="selectProjectLog" parameterType="int" resultType="map">
|
||||
SELECT
|
||||
39
src/main/resources/mapper/PromemberMapper.xml
Normal file
39
src/main/resources/mapper/PromemberMapper.xml
Normal file
@ -0,0 +1,39 @@
|
||||
<?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.PromemberMapper">
|
||||
|
||||
<!-- 프로젝트 등록 후 모든 사용자 자동 참여 -->
|
||||
<insert id="insertProjectMember">
|
||||
INSERT INTO promember (PROJCTSEQ, MEMBERSEQ, PROJCTYON)
|
||||
SELECT #{projctSeq}, MEMBERSEQ, '1' FROM netmember;
|
||||
</insert>
|
||||
|
||||
<!-- 새로 가입한 회원 모든 프로젝트 멤버에 미참여 상태로 추가 -->
|
||||
<insert id="insertNewMemberToProjects">
|
||||
INSERT INTO promember (PROJCTSEQ, MEMBERSEQ, PROJCTYON)
|
||||
SELECT PROJCTSEQ, #{memberSeq}, '0' FROM netprojct;
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- 프로젝트 참여 미참여 -->
|
||||
<update id="updateProjectMember">
|
||||
UPDATE promember
|
||||
SET PROJCTYON = #{projctYon}
|
||||
WHERE PROJCTSEQ = #{projctSeq}
|
||||
AND MEMBERSEQ = #{memberSeq}
|
||||
</update>
|
||||
|
||||
<!-- 프로젝트 멤버 조회 -->
|
||||
<select id="selectProjectMembers" resultType="io.company.localhost.common.dto.MapDto">
|
||||
SELECT pm.PROJCTSEQ,
|
||||
pm.MEMBERSEQ,
|
||||
pm.PROJCTYON,
|
||||
nm.MEMBERNAM,
|
||||
nm.MEMBERPRF,
|
||||
nm.MEMBERCOL as usercolor
|
||||
FROM promember pm
|
||||
JOIN netmember nm ON pm.MEMBERSEQ = nm.MEMBERSEQ
|
||||
WHERE pm.PROJCTSEQ = #{projctSeq}
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Loading…
Reference in New Issue
Block a user