Skip to content

Commit

Permalink
마스터브랜치 커밋
Browse files Browse the repository at this point in the history
  • Loading branch information
mbk1991 committed Sep 24, 2022
1 parent 5f01c08 commit 4f11d8e
Show file tree
Hide file tree
Showing 19 changed files with 230 additions and 46 deletions.
16 changes: 11 additions & 5 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,6 @@
<version>5.5.13.1</version>
</dependency>






<!-- ojdbc6 -->
<!-- https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc6 -->
<dependency>
Expand Down Expand Up @@ -97,6 +92,17 @@
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>

<!-- 트랜잭션처리를 위한 스프링 트랜잭션 추가 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.22</version>
</dependency>



<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
Expand Down
77 changes: 61 additions & 16 deletions src/main/java/com/kh/tripply/point/controller/PointController.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,6 @@ public class PointController {
@Autowired
TradeService tService;

/**
* 포인트 충전 페이지 이동
* @param mv
* @return
*/
@RequestMapping(value="/point/chargeView.kh",method=RequestMethod.GET)
public ModelAndView pointChargeView(ModelAndView mv) {
mv.setViewName("/point/pointCharge");
return mv;
}

/**
* 포인트 내역 페이지 이동
* @param mv
Expand All @@ -54,12 +43,18 @@ public ModelAndView pointHistoryView(ModelAndView mv,
//2.paging처리를 위해 Paging 객체를 생성한다.
Paging paging = new Paging(pService.getHistoryTotalCount(point), currentPage, 10, 5);

//3.로그인한 유저의 아이디를 세션에서 가져온다.
Member loginMember = (Member)session.getAttribute("loginUser");
String loginUser = loginMember.getMemberId();
//3.로그인한 유저의 아이디를 이용하여 로그인 유저의 회원정보를 SELECT한다.
Member loginUserInfo =
pService.getMemberPoint((Member)session.getAttribute("loginUser"));

//3-1.세션에 저장된 loginUser를 변경한다.
session.removeAttribute("loginUser");
session.setAttribute("loginUser", loginUserInfo);


//4.SELECT 시 필요한 값들을 POINT객체에 담는다.
//로그인 유저아이디,
String loginUser = loginUserInfo.getMemberId();
point.setLoginUser(loginUser);

//5.페이징과 포인트 객체를 매개값으로 SELECT한다.
Expand All @@ -69,20 +64,20 @@ public ModelAndView pointHistoryView(ModelAndView mv,
//6.화면에 pList와 paging값을 전달한다.
mv.addObject("pList",pList)
.addObject("paging",paging)
.addObject("loginUserInfo",loginUserInfo)
.setViewName("/point/pointHistory");
}else {

}
return mv;
}


/**
* 포인트 전송 페이지 이동
* @param mv
* @return
*/
@RequestMapping(value="/point/send.kh",method=RequestMethod.GET)
@RequestMapping(value="/point/sendView.kh",method=RequestMethod.GET)
public ModelAndView pointSendView(ModelAndView mv,
HttpSession session) {

Expand All @@ -99,6 +94,56 @@ public ModelAndView pointSendView(ModelAndView mv,
return mv;
}

/**
* 채택된 게시물의 판매자에게 포인트를 전송하는 기능
* @param mv
* @param point
* @param boardNo
* @return
*/
@RequestMapping(value="/point/send.kh",method=RequestMethod.POST)
public ModelAndView pointSend(ModelAndView mv,
@ModelAttribute Point point,
@RequestParam("boardNo") Integer boardNo) {

//1. 1)보내는이 포인트 감소, 2) 받는이 포인트 증가 3) 게시물 판매완료 처리를 트랜잭션처리한다.
// service에서 3개의 DAO 메소드를 호출한다.
// 1)보내는 유저의 포인트를 가격만큼 뺀다.UPDATE
// 2)받는 유저의 포인트를 가격만큼 더한다.UPDATE
// 3)게시물의 soldOut 'Y'로 UPDATE
int sendPointResult = pService.modifySendPoint(point);
int getPointResult = pService.modifyGetPoint(point);
int soldOutResult = pService.modifyTradeSoldOut(boardNo);

if(sendPointResult > 0 && getPointResult> 0 && soldOutResult > 0) {

//2.성공 시 포인트히스토리에 INSERT한다.
int registerHistoryResult = pService.registerPointHistory(point);
if(registerHistoryResult>0) {
mv.addObject("message","충전")
.addObject("point",point)
.setViewName("/point/pointWorkSuccess");
}else {

}
}else {

}
return mv;
}


/**
* 포인트 충전 페이지 이동
* @param mv
* @return
*/
@RequestMapping(value="/point/chargeView.kh",method=RequestMethod.GET)
public ModelAndView pointChargeView(ModelAndView mv) {
mv.setViewName("/point/pointCharge");
return mv;
}

/**
* 포인트 충전
* @param mv
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/kh/tripply/point/service/PointService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,17 @@
import java.util.List;

import com.kh.tripply.common.Paging;
import com.kh.tripply.member.domain.Member;
import com.kh.tripply.point.domain.Point;

public interface PointService {
public List<Point> printAllPointHistory(Paging paging,Point point);
public int getHistoryTotalCount(Point point);
public int modifyChargePoint(Point point);
public int registerPointHistory(Point point);
public Member getMemberPoint(Member member);
public int modifySendPoint(Point point);
public int modifyGetPoint(Point point);
public int modifyTradeSoldOut(int boardNo);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.kh.tripply.common.Paging;
import com.kh.tripply.member.domain.Member;
import com.kh.tripply.point.domain.Point;
import com.kh.tripply.point.service.PointService;
import com.kh.tripply.point.store.PointStore;
Expand Down Expand Up @@ -37,5 +39,28 @@ public int getHistoryTotalCount(Point point) {
int result = pStore.getHistoryTotalCount(session,point);
return result;
}
@Override
public Member getMemberPoint(Member member) {
Member loginUserInfo = pStore.getMemberPoint(session,member);
return loginUserInfo;
}
@Transactional
@Override
public int modifySendPoint(Point point) {
return pStore.updateSendPoint(session, point);
}
@Transactional
@Override
public int modifyGetPoint(Point point) {
return pStore.updateGetPoint(session, point);
}
@Transactional
@Override
public int modifyTradeSoldOut(int boardNo) {
return pStore.updateTradeSoldOut(session, boardNo);
}




}
5 changes: 5 additions & 0 deletions src/main/java/com/kh/tripply/point/store/PointStore.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,16 @@
import org.apache.ibatis.session.SqlSession;

import com.kh.tripply.common.Paging;
import com.kh.tripply.member.domain.Member;
import com.kh.tripply.point.domain.Point;

public interface PointStore {
public List<Point> selectAllPointHistory(SqlSession session,Paging paging, Point point);
public int getHistoryTotalCount(SqlSession session,Point point);
public int updateChargePoint(SqlSession session, Point point);
public int insertPointHistory(SqlSession session,Point point);
public Member getMemberPoint(SqlSession session,Member member);
public int updateSendPoint(SqlSession session,Point point);
public int updateGetPoint(SqlSession session,Point point);
public int updateTradeSoldOut(SqlSession session,int boardNo);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.springframework.stereotype.Repository;

import com.kh.tripply.common.Paging;
import com.kh.tripply.member.domain.Member;
import com.kh.tripply.point.domain.Point;
import com.kh.tripply.point.store.PointStore;

Expand Down Expand Up @@ -37,4 +38,25 @@ public int getHistoryTotalCount(SqlSession session,Point point) {
return result;
}

@Override
public Member getMemberPoint(SqlSession session, Member member) {
Member loginUserInfo = session.selectOne("MemberMapper.getMemberPoint",member);
return loginUserInfo;
}

@Override
public int updateSendPoint(SqlSession session, Point point) {
return session.update("PointMapper.updateSendPoint", point);
}

@Override
public int updateGetPoint(SqlSession session, Point point) {
return session.update("PointMapper.updateGetPoint",point);
}

@Override
public int updateTradeSoldOut(SqlSession session, int boardNo) {
return session.update("TradeMapper.updateSoldOut", boardNo);
}

}
7 changes: 7 additions & 0 deletions src/main/resources/mappers/member-mapper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,11 @@
<select id="selectMemberIdByEmail" resultMap="memberResultMap">
SELECT MEMBER_ID FROM MEMBER_TBL WHERE MEMBER_EMAIL = #{memberEmail} AND M_STATUS = 'Y'
</select>

<!-- 포인트컨트롤러에서 사용, point잔액 갱신 용도. -->
<select id="getMemberPoint" resultMap="memberResultMap">
SELECT MEMBER_ID, MEMBER_NAME, MEMBER_NICKNAME, POINT_BALANCE
FROM MEMBER_TBL
WHERE MEMBER_ID=#{memberId}
</select>
</mapper>
12 changes: 12 additions & 0 deletions src/main/resources/mappers/point-mapper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,16 @@
WHERE MEMBER_ID = #{pointToUser}
</update>

<update id="updateSendPoint">
UPDATE MEMBER_TBL
SET POINT_BALANCE = POINT_BALANCE - #{pointAmount}
WHERE MEMBER_ID = #{pointFromUser}
</update>

<update id="updateGetPoint">
UPDATE MEMBER_TBL
SET POINT_BALANCE = POINT_BALANCE + #{pointAmount}
WHERE MEMBER_ID = #{pointToUser}
</update>

</mapper>
9 changes: 8 additions & 1 deletion src/main/resources/mappers/trade-mapper.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,11 +88,12 @@
SELECT BOARD_NO,TRADE_TITLE,TRADE_WRITER,FINAL_BIDDING_PRICE,SOLD_OUT
FROM TRADE_TBL
WHERE BUYER_ID=#{memberId}
ORDER BY T_CREATE_DATE DESC
</select>

<insert id="insertTrade">
INSERT INTO TRADE_TBL
VALUES(SEQ_BOARDNO.NEXTVAL,#{tradeTitle},#{tradeContents},#{tradeWriter},#{tLocationCode},#{tradeFileName},#{tradeFileReName},#{tradeFilePath},DEFAULT,DEFAULT,DEFAULT,DEFAULT,NULL,DEFAULT,#{thumbnailPath})
VALUES(SEQ_BOARDNO.NEXTVAL,#{tradeTitle},#{tradeContents},#{tradeWriter},#{tLocationCode},#{tradeFileName},#{tradeFileReName},#{tradeFilePath},DEFAULT,DEFAULT,DEFAULT,DEFAULT,NULL,DEFAULT,#{thumbnailPath},DEFAULT)
</insert>

<update id="updateBuyer">
Expand All @@ -115,6 +116,12 @@
WHERE BOARD_NO = #{boardNo}
</update>

<update id="updateSoldOut">
UPDATE TRADE_TBL
SET SOLD_OUT = 'Y'
WHERE BOARD_NO = #{boardNo}
</update>

<delete id="deleteTrade">
DELETE FROM TRADE_TBL WHERE BOARD_NO=#{boardNo}
</delete>
Expand Down
15 changes: 14 additions & 1 deletion src/main/webapp/WEB-INF/spring/root-context.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">

<!-- Root Context: defines shared resources visible to all other web components -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
Expand All @@ -25,4 +29,13 @@
<property name="maxInMemorySize" value="100000000"></property>
</bean>

<!-- 트랜젝션 관리 객체 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

<!-- @Transactional 어노테이션 처리 -->
<tx:annotation-driven transaction-manager="transactionManager" />

</beans>
2 changes: 1 addition & 1 deletion src/main/webapp/WEB-INF/views/member/myPage.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<div class="my-side-bar" onclick="location.href='#';">회원정보수정</div>
<div class="my-side-bar" onclick="location.href='/free/detail.kh';">작성글</div>
<div class="my-side-bar">북마크</div>
<div class="my-side-bar" onclick="location.href='/point/chargeView.kh';">포인트관리</div>
<div class="my-side-bar" onclick="location.href='/point/historyView.kh';">포인트관리</div>
</div>
<div class="profile-form">
<h1 align="center">회원정보수정</h1>
Expand Down
4 changes: 2 additions & 2 deletions src/main/webapp/WEB-INF/views/point/pointCharge.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
<!-- 사이드바 아코디언 -->
<div id="point-navi">
<ul>
<li onclick="location.href='/point/historyView.kh';">포인트 내역</li>
<li onclick="location.href='/point/chargeView.kh';">포인트 충전</li>
<li onclick="location.href='/point/historyView.kh';">포인트 내역확인</li>
<li onclick="location.href='/point/send.kh';">포인트 전송</li>
<li onclick="location.href='/point/sendView.kh';">채택된 상품 구매하기</li>
</ul>
</div>
</div>
Expand Down
Loading

0 comments on commit 4f11d8e

Please sign in to comment.