From 64be6714471b30366b0aa31a7d36308886dd8cd5 Mon Sep 17 00:00:00 2001 From: Hyunuk Date: Fri, 17 Nov 2023 05:57:41 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[tomato-market/plan#11]=20=EB=B8=8C?= =?UTF-8?q?=EB=9E=9C=EC=B9=98=20=EC=83=9D=EC=84=B1=20=EB=B0=8F=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 2 + src/pages/Category.js | 4 +- src/pages/ChatList.js | 5 +- src/pages/MyPage.js | 114 ++++++++++++++++++++++++++++++++++++++-- src/pages/UpdateUser.js | 41 +++++++++++++++ 5 files changed, 160 insertions(+), 6 deletions(-) create mode 100644 src/pages/UpdateUser.js diff --git a/src/App.js b/src/App.js index 152b67c..ebf4791 100644 --- a/src/App.js +++ b/src/App.js @@ -14,6 +14,7 @@ import Favorite from 'pages/Favorite'; import PostUpdate from 'pages/PostUpdate'; import SellList from 'pages/SellList'; import Category from 'pages/Category'; +import UpdateUser from 'pages/UpdateUser'; function App() { return ( @@ -32,6 +33,7 @@ function App() { } /> } /> } /> + } /> ); diff --git a/src/pages/Category.js b/src/pages/Category.js index d6aba60..3654d5e 100644 --- a/src/pages/Category.js +++ b/src/pages/Category.js @@ -44,7 +44,7 @@ export default function Category() { {/* keyword를 입력한 상태로 들어가야 함 state로 넘기기?*/} {/* Board는 title 검색만 keyword로 가능한 상태 */} - + 구매 @@ -161,7 +161,7 @@ export default function Category() { - + 판매 diff --git a/src/pages/ChatList.js b/src/pages/ChatList.js index b3bec2d..ffa2b76 100644 --- a/src/pages/ChatList.js +++ b/src/pages/ChatList.js @@ -107,11 +107,14 @@ export default function ChatList() { const imageUrl = '/image/' + room.image.uuid; return ( { console.log(room.postNum, room.sellerId, room.image); diff --git a/src/pages/MyPage.js b/src/pages/MyPage.js index 6461d8c..b40900e 100644 --- a/src/pages/MyPage.js +++ b/src/pages/MyPage.js @@ -1,11 +1,28 @@ import Background from 'components/Background'; import React from 'react'; import { useNavigate } from 'react-router-dom'; -import { Button } from '@mui/material'; +import { Avatar, Button, Typography } from '@mui/material'; import BottomNav from 'components/BottomNav'; +import { Grid } from '@mui/material'; +import { useState } from 'react'; +import Navbar from 'components/Navbar'; +import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; +import ReceiptLongIcon from '@mui/icons-material/ReceiptLong'; +import LocalMallIcon from '@mui/icons-material/LocalMall'; +import NotificationsNoneIcon from '@mui/icons-material/NotificationsNone'; +import InfoIcon from '@mui/icons-material/Info'; +import HelpOutlineIcon from '@mui/icons-material/HelpOutline'; export default function MyPage() { const navigate = useNavigate(); + const [userId, setUserId] = useState(''); + const getUserId = (id) => { + setUserId(id); + }; + + const updateUser = () => { + navigate('/updateUser'); + }; const favorite = () => { navigate('/favorite'); @@ -17,9 +34,100 @@ export default function MyPage() { return ( +
- - + + 내정보 + + + + 프로필 + + + + + + + {userId} + + + + + + + + 나의 거래 + + + + + + + + favorite()}> + 관심 목록 + + + + + + + + + sellList()}> + 판매 내역 + + + + + + + + + {}}> + 구매 내역 + + + + + + + 기타 + + + + + + + + favorite()}> + 공지사항 + + + + + + + + + sellList()}> + 이용약관 + + + + + + + + + {}}> + 자주 묻는 질문 + + + +
diff --git a/src/pages/UpdateUser.js b/src/pages/UpdateUser.js new file mode 100644 index 0000000..913bf48 --- /dev/null +++ b/src/pages/UpdateUser.js @@ -0,0 +1,41 @@ +import React from 'react'; +import Background from 'components/Background'; +import Navbar from 'components/Navbar'; +import BottomNav from 'components/BottomNav'; +import { useState } from 'react'; +import { Button, TextField, Typography } from '@mui/material'; + +export default function UpdateUser() { + const [userId, setUserId] = useState(''); + const getUserId = (id) => { + setUserId(id); + }; + + const [check, setCheck] = useState(false); + + return ( + + +
+ 프로필 + {!check ? ( +
+ setCheck(true)}> +
+ ) : ( +
+ {/* 마이페이지에 있어야 할 내용 */} + {/* */} + {/* NickName */} + + {userId} + + + +
+ )} +
+ +
+ ); +} From c76b53d5830b24005df6d6f32814aedd15b7f0e2 Mon Sep 17 00:00:00 2001 From: Hyunuk Date: Fri, 24 Nov 2023 05:00:19 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[tomato-market/plan#11]=20=EC=A0=84?= =?UTF-8?q?=EC=B2=B4=EC=A0=81=EC=9D=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/bg_bot.png | Bin 0 -> 12373 bytes src/assets/tomato_logo.png | Bin 0 -> 7289 bytes src/assets/tomato_main_logo.png | Bin 0 -> 33496 bytes src/components/Logo.js | 2 +- src/components/Navbar.js | 16 ++- src/pages/Board.js | 66 ++++++---- src/pages/Chatting.js | 6 +- src/pages/Favorite.js | 4 +- src/pages/Home.js | 17 ++- src/pages/MyPage.js | 45 ++++++- src/pages/PostDetail.js | 7 +- src/pages/SellList.js | 4 +- src/pages/SignUp.js | 2 - src/pages/UpdateUser.js | 221 +++++++++++++++++++++++++++++--- src/styles/Home.css | 1 - src/styles/Logo.css | 21 +-- 16 files changed, 323 insertions(+), 89 deletions(-) create mode 100644 src/assets/bg_bot.png create mode 100644 src/assets/tomato_logo.png create mode 100644 src/assets/tomato_main_logo.png diff --git a/src/assets/bg_bot.png b/src/assets/bg_bot.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1282ed6c572ffa46451d385b04812503007a66 GIT binary patch literal 12373 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∓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 A;s5{u literal 0 HcmV?d00001 diff --git a/src/assets/tomato_main_logo.png b/src/assets/tomato_main_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1c6bb51448d29ac5bf1c2d08938e0bd22432ceff GIT binary patch literal 33496 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 literal 0 HcmV?d00001 diff --git a/src/components/Logo.js b/src/components/Logo.js index afe3438..5be1e58 100644 --- a/src/components/Logo.js +++ b/src/components/Logo.js @@ -1,6 +1,6 @@ import React from 'react'; import 'styles/Logo.css'; -import logo from '../logo.svg'; +import logo from 'assets/tomato_logo.png'; export default function Logo() { return ( diff --git a/src/components/Navbar.js b/src/components/Navbar.js index 865a550..27bdde3 100644 --- a/src/components/Navbar.js +++ b/src/components/Navbar.js @@ -12,8 +12,11 @@ import Session from 'utils/Session'; import { useState } from 'react'; import Grid from '@mui/material/Grid'; import Logout from 'components/Logout'; +import { useNavigate } from 'react-router-dom'; +import logo from 'assets/tomato_logo.png'; export default function Navbar(props) { + const navigate = useNavigate(); const style = { position: 'absolute', top: '20%', @@ -39,6 +42,9 @@ export default function Navbar(props) { }, [isSessionValid, props]); // const logoutSession = logout(); + const home = () => { + navigate('/board'); + }; return ( <> @@ -46,13 +52,11 @@ export default function Navbar(props) { -
+
- - - Text - {/* 로고 넣기 */} - + + {/* Logo */} + diff --git a/src/pages/Board.js b/src/pages/Board.js index d088fbf..0891d66 100644 --- a/src/pages/Board.js +++ b/src/pages/Board.js @@ -19,10 +19,7 @@ import createdAt from 'utils/Time'; import SpeedDial from '@mui/material/SpeedDial'; import SpeedDialIcon from '@mui/material/SpeedDialIcon'; import SpeedDialAction from '@mui/material/SpeedDialAction'; -import SaveIcon from '@mui/icons-material/Save'; -import PrintIcon from '@mui/icons-material/Print'; -import ShareIcon from '@mui/icons-material/Share'; -import CreateIcon from '@mui/icons-material/Create'; +import LocationOnIcon from '@mui/icons-material/LocationOn'; import Grid from '@mui/material/Grid'; export default function Board() { @@ -102,6 +99,47 @@ export default function Board() { navigate('/postDetail', { state: postNumber }); }; + // const [location, setLocation] = useState(''); + const searchByLocation = () => { + console.log('현재 위치로 검색'); + axios({ + url: '/api/user/location', + method: 'get', + params: { + userId: userId, + }, + }) + .then((response) => { + console.log(response.data); + if (response.status === 200) { + if (response.data.message === '위치 조회 성공') { + // setLocation(response.data.data); + // console.log(location); + // setLocation이 아니라 + setType('L'); + setKeyword(response.data.data); + } else { + alert(response.data.message); + } + } else { + throw new Error('정의되지 않은 에러'); + } + }) + .catch((error) => alert(error)); + }; + + const actions = [ + { + icon: ( + + + + ), + name: '글쓰기', + }, + { icon: , name: '위치 검색' }, + ]; + return ( @@ -168,7 +206,7 @@ export default function Board() { - + {post.title} @@ -178,7 +216,7 @@ export default function Board() {
- + {post.location} @@ -235,19 +273,3 @@ export default function Board() { ); } - -const actions = [ - { - icon: ( - - - - ), - name: '글쓰기', - }, - // 추후 목록 수정 - { icon: , name: 'ds' }, - { icon: , name: 'Save' }, - { icon: , name: 'Print' }, - { icon: , name: 'Share' }, -]; diff --git a/src/pages/Chatting.js b/src/pages/Chatting.js index 7c770ec..db048ea 100644 --- a/src/pages/Chatting.js +++ b/src/pages/Chatting.js @@ -50,7 +50,7 @@ export default function Chatting() { method: 'post', data: { sellerId: state.sellerId, - userId: state.userId, + userId: userId, postNum: state.postNum, }, }) @@ -131,8 +131,8 @@ export default function Chatting() { console.log('Chatting Room: ' + state.postNum); // postNum은 roomId가 아님 console.log('Chatting Room: ' + roomId); // postNum은 roomId가 아님 // WebSocket - // const webSocketUrl = 'ws://' + window.location.host + ':8080/api/ws'; - const webSocketUrl = 'ws://localhost:8080/api/ws'; + const webSocketUrl = 'ws://' + window.location.host + ':8080/api/ws'; + // const webSocketUrl = 'ws://localhost:8080/api/ws'; stompClient.current = Stomp.over(() => new WebSocket(webSocketUrl)); // Stomp Client // SockJS, Apic에서 SockJS로 테스트 할수가 없음 diff --git a/src/pages/Favorite.js b/src/pages/Favorite.js index 3c6da13..1013333 100644 --- a/src/pages/Favorite.js +++ b/src/pages/Favorite.js @@ -126,7 +126,9 @@ export default function Favorite() { ); }) ) : ( -
등록된 관심 목록이 없습니다.
+ + 등록된 관심 목록이 없습니다. + )} diff --git a/src/pages/Home.js b/src/pages/Home.js index 2ddb5bb..740a4b4 100644 --- a/src/pages/Home.js +++ b/src/pages/Home.js @@ -3,17 +3,22 @@ import 'styles/Home.css'; import Background from 'components/Background.js'; import Logo from 'components/Logo'; import { Link } from 'react-router-dom'; +// import bot from 'assets/bg_bot.png'; +import { Typography } from '@mui/material'; function Home() { return ( - -
- {/* 추가 문구 지정 필요 */} - - 시작하기 +
+ + + {/* 추가 문구 지정 필요 */} + + 시작하기 + -
버튼을 눌러 시작하기
+ {/* 디자인 끝까지 고민 */} + {/* */}
); diff --git a/src/pages/MyPage.js b/src/pages/MyPage.js index b40900e..5f21428 100644 --- a/src/pages/MyPage.js +++ b/src/pages/MyPage.js @@ -12,6 +12,8 @@ import LocalMallIcon from '@mui/icons-material/LocalMall'; import NotificationsNoneIcon from '@mui/icons-material/NotificationsNone'; import InfoIcon from '@mui/icons-material/Info'; import HelpOutlineIcon from '@mui/icons-material/HelpOutline'; +import { useEffect } from 'react'; +import axios from 'axios'; export default function MyPage() { const navigate = useNavigate(); @@ -20,6 +22,33 @@ export default function MyPage() { setUserId(id); }; + const [location, setLocation] = useState(''); + + useEffect(() => { + if (userId !== '') { + axios({ + url: '/api/user/location', + method: 'get', + params: { + userId: userId, + }, + }) + .then((response) => { + console.log(response.data); + if (response.status === 200) { + if (response.data.message === '위치 조회 성공') { + setLocation(response.data.data); + } else { + alert(response.data.message); + } + } else { + throw new Error('정의되지 않은 에러'); + } + }) + .catch((error) => alert(error)); + } + }, [userId]); + const updateUser = () => { navigate('/updateUser'); }; @@ -36,22 +65,28 @@ export default function MyPage() {
- + 내정보 프로필 - - + + - {userId} + + {/* 닉네임 받아서 표시 */} + {userId} + + + {location} + - diff --git a/src/pages/PostDetail.js b/src/pages/PostDetail.js index 961f583..cbdc3d7 100644 --- a/src/pages/PostDetail.js +++ b/src/pages/PostDetail.js @@ -31,7 +31,7 @@ export default function PostDetail() { const [post, setPost] = useState([]); const [imageList, setImageList] = useState([]); // const profileImgUrl = 'http://localhost:80/image/user.png'; - const profileImgUrl = '/image/user.png'; // 실제 환경 Url + // const profileImgUrl = '/image/user.png'; // 실제 환경 Url // Session의 UserId가 Post의 UserId와 같으면 수정/삭제 버튼 생김 @@ -295,11 +295,12 @@ export default function PostDetail() { {/* User */} - + {/* 프로필 사진 */} {/* + {/* */} + diff --git a/src/pages/SellList.js b/src/pages/SellList.js index edd82c0..4241106 100644 --- a/src/pages/SellList.js +++ b/src/pages/SellList.js @@ -154,7 +154,9 @@ export default function SellList() { } }) ) : ( -
판매 목록이 없습니다.
+ + 판매 목록이 없습니다. + )}
diff --git a/src/pages/SignUp.js b/src/pages/SignUp.js index 0ddab4b..8fdee1c 100644 --- a/src/pages/SignUp.js +++ b/src/pages/SignUp.js @@ -1,5 +1,4 @@ import React from 'react'; -import Logo from 'components/Logo'; import 'styles/SignUp.css'; import Background from 'components/Background.js'; import { Link, useNavigate } from 'react-router-dom'; @@ -107,7 +106,6 @@ function SignUp() { return ( -
토마토 마켓 회원가입
아이디
diff --git a/src/pages/UpdateUser.js b/src/pages/UpdateUser.js index 913bf48..a929b0d 100644 --- a/src/pages/UpdateUser.js +++ b/src/pages/UpdateUser.js @@ -1,39 +1,222 @@ -import React from 'react'; +import React, { useEffect } from 'react'; import Background from 'components/Background'; import Navbar from 'components/Navbar'; import BottomNav from 'components/BottomNav'; import { useState } from 'react'; import { Button, TextField, Typography } from '@mui/material'; +import { useNavigate } from 'react-router-dom'; +import Grid from '@mui/material/Grid'; + +import PopupDom from 'components/PopupDom'; +import PopupPostCode from 'components/PopupPostCode'; +import ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos'; +import axios from 'axios'; export default function UpdateUser() { + const navigate = useNavigate(); const [userId, setUserId] = useState(''); const getUserId = (id) => { setUserId(id); }; - const [check, setCheck] = useState(false); + const [password, setPassword] = useState(''); + const [newPassword, setNewPassword] = useState(''); + const handlePwd = (e) => { + setPassword(e.target.value); + console.log(password); + }; + const handleNewPwd = (e) => { + setNewPassword(e.target.value); + console.log(newPassword); + }; + + const [location, setLocation] = useState(''); + const [opLocation, setOpLocation] = useState(false); + + const changePw = () => { + console.log('비밀번호 변경'); + axios({ + url: '/api/user/password', + method: 'put', + params: { + userId: userId, + password: password, + newPassword: newPassword, + }, + }) + .then((response) => { + console.log(response.data); + if (response.status === 200) { + if (response.data.message === '비밀번호 변경 성공') { + alert(response.data.message); + } else { + alert(response.data.message); + } + } else { + throw new Error('정의되지 않은 에러'); + } + }) + .catch((error) => alert(error)); + }; + + useEffect(() => { + if (userId !== '') { + axios({ + url: '/api/user/location', + method: 'get', + params: { + userId: userId, + }, + }) + .then((response) => { + console.log(response.data); + if (response.status === 200) { + if (response.data.message === '위치 조회 성공') { + setLocation(response.data.data); + } else { + alert(response.data.message); + } + } else { + throw new Error('정의되지 않은 에러'); + } + }) + .catch((error) => alert(error)); + } + }, [userId]); + + const [isPopupOpen, setIsPopupOpen] = useState(false); + // 팝업창 열기 + const openPostCode = () => { + setIsPopupOpen(true); + }; + + // 팝업창 닫기 + const closePostCode = () => { + setIsPopupOpen(false); + }; + + const changeLocation = () => { + console.log('변경: ' + userId + ' ' + location); + axios({ + url: '/api/user/location', + method: 'put', + params: { + userId: userId, + location: location, + }, + }) + .then((response) => { + console.log(response.data); + if (response.status === 200) { + if (response.data.message === '위치 변경 성공') { + alert('성공적으로 변경되었습니다.'); + console.log(response.data.data); + setLocation(response.data.data); + } else { + alert(response.data.message); + } + } else { + throw new Error('정의되지 않은 에러'); + } + }) + .catch((error) => alert(error)); + }; return (
- 프로필 - {!check ? ( -
- setCheck(true)}> -
- ) : ( -
- {/* 마이페이지에 있어야 할 내용 */} - {/* */} - {/* NickName */} - - {userId} - - - -
- )} + + navigate('/myPage')}> + + + + + 회원 정보 수정 + + + + +
+ {/* 마이페이지에 있어야 할 내용 */} + + 비밀번호 변경 + + + + + + + + + + + + + + 위치정보 + + {!opLocation ? ( + + {/* 이미 등록된 위치정보가 있으면 출력*/} + + + {location} + + + + {/* state를 바꿔서 TextField로 변경 */} + + + + ) : ( + + {/* 이미 등록된 위치정보가 있으면 출력*/} + + +
+ {isPopupOpen && ( + + + + )} +
+
+ + + + {/* Validation 필요 */} + + + {/* state를 바꿔서 TextField로 변경 */} + + + +
+ )} +
diff --git a/src/styles/Home.css b/src/styles/Home.css index 688cfc7..14064a9 100644 --- a/src/styles/Home.css +++ b/src/styles/Home.css @@ -23,6 +23,5 @@ width: 300px; height: 100px; border-radius: 8px; - background-color: #61dafb; color: white; } diff --git a/src/styles/Logo.css b/src/styles/Logo.css index 148cfd1..a4df73f 100644 --- a/src/styles/Logo.css +++ b/src/styles/Logo.css @@ -1,24 +1,7 @@ .App-logo { flex-grow: 0; - height: 120px; top: 0; pointer-events: none; - margin-top: 20px; -} - -/* 삭제 예정 */ -@media (prefers-reduced-motion: no-preference) { - .App-logo { - animation: App-logo-spin infinite 20s linear; - } -} - -/* 아마도 삭제 */ -@keyframes App-logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } + margin-top: 300px; + max-width: 360px; } From 499091933a8fb7e8a8ec615358855c04003c4c4b Mon Sep 17 00:00:00 2001 From: Hyunuk Date: Fri, 24 Nov 2023 05:27:39 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[tomato-market/plan#11]=20=EB=A7=88?= =?UTF-8?q?=EC=9D=B4=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/MyPage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/MyPage.js b/src/pages/MyPage.js index 5f21428..1300c7e 100644 --- a/src/pages/MyPage.js +++ b/src/pages/MyPage.js @@ -22,7 +22,7 @@ export default function MyPage() { setUserId(id); }; - const [location, setLocation] = useState(''); + const [location, setLocation] = useState('등록된 위치정보가 없습니다.'); useEffect(() => { if (userId !== '') { @@ -39,7 +39,7 @@ export default function MyPage() { if (response.data.message === '위치 조회 성공') { setLocation(response.data.data); } else { - alert(response.data.message); + console.log(response.data.message); } } else { throw new Error('정의되지 않은 에러');