[Spring][쇼핑몰 프로젝트][42] 주문 구현 - 3

https://kimvampa.tistory.com/280
This commit is contained in:
SeoJin Kim
2021-12-16 01:02:50 +09:00
parent 82cf916c36
commit c98b4e9d8b
8 changed files with 237 additions and 7 deletions

View File

@@ -1,6 +1,7 @@
package com.vam.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import com.vam.model.MemberVO;
import com.vam.model.OrderDTO;
import com.vam.model.OrderPageDTO;
import com.vam.service.MemberService;
@@ -38,6 +40,23 @@ public class OrderController {
System.out.println(od);
orderService.order(od);
MemberVO member = new MemberVO();
member.setMemberId(od.getMemberId());
HttpSession session = request.getSession();
try {
MemberVO memberLogin = memberService.memberLogin(member);
memberLogin.setMemberPw("");
session.setAttribute("member", memberLogin);
} catch (Exception e) {
e.printStackTrace();
}
return "redirect:/main";
}

View File

@@ -2,6 +2,7 @@ package com.vam.service;
import java.util.List;
import com.vam.model.OrderDTO;
import com.vam.model.OrderPageItemDTO;
public interface OrderService {
@@ -9,4 +10,7 @@ public interface OrderService {
/* 주문 정보 */
public List<OrderPageItemDTO> getGoodsInfo(List<OrderPageItemDTO> orders);
/* 주문 */
public void order(OrderDTO orw);
}

View File

@@ -1,15 +1,25 @@
package com.vam.service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vam.mapper.AttachMapper;
import com.vam.mapper.BookMapper;
import com.vam.mapper.CartMapper;
import com.vam.mapper.MemberMapper;
import com.vam.mapper.OrderMapper;
import com.vam.model.AttachImageVO;
import com.vam.model.AttachImageVO;
import com.vam.model.BookVO;
import com.vam.model.CartDTO;
import com.vam.model.MemberVO;
import com.vam.model.OrderDTO;
import com.vam.model.OrderItemDTO;
import com.vam.model.OrderPageItemDTO;
@Service
@@ -21,6 +31,15 @@ public class OrderServiceImpl implements OrderService{
@Autowired
private AttachMapper attachMapper;
@Autowired
private MemberMapper memberMapper;
@Autowired
private CartMapper cartMapper;
@Autowired
private BookMapper bookMapper;
@Override
public List<OrderPageItemDTO> getGoodsInfo(List<OrderPageItemDTO> orders) {
@@ -45,6 +64,80 @@ public class OrderServiceImpl implements OrderService{
return result;
}
@Override
@Transactional
public void order(OrderDTO ord) {
/* 사용할 데이터가져오기 */
/* 회원 정보 */
MemberVO member = memberMapper.getMemberInfo(ord.getMemberId());
/* 주문 정보 */
List<OrderItemDTO> ords = new ArrayList<>();
for(OrderItemDTO oit : ord.getOrders()) {
OrderItemDTO orderItem = orderMapper.getOrderInfo(oit.getBookId());
// 수량 셋팅
orderItem.setBookCount(oit.getBookCount());
// 기본정보 셋팅
orderItem.initSaleTotal();
//List객체 추가
ords.add(orderItem);
}
/* OrderDTO 셋팅 */
ord.setOrders(ords);
ord.getOrderPriceInfo();
/*DB 주문,주문상품(,배송정보) 넣기*/
/* orderId만들기 및 OrderDTO객체 orderId에 저장 */
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("_yyyyMMddmm");
String orderId = member.getMemberId() + format.format(date);
ord.setOrderId(orderId);
/* db넣기 */
orderMapper.enrollOrder(ord); //vam_order 등록
for(OrderItemDTO oit : ord.getOrders()) { //vam_orderItem 등록
oit.setOrderId(orderId);
orderMapper.enrollOrderItem(oit);
}
/* 비용 포인트 변동 적용 */
/* 비용 차감 & 변동 돈(money) Member객체 적용 */
int calMoney = member.getMoney();
calMoney -= ord.getOrderFinalSalePrice();
member.setMoney(calMoney);
/* 포인트 차감, 포인트 증가 & 변동 포인트(point) Member객체 적용 */
int calPoint = member.getPoint();
calPoint = calPoint - ord.getUsePoint() + ord.getOrderSavePoint(); // 기존 포인트 - 사용 포인트 + 획득 포인트
member.setPoint(calPoint);
/* 변동 돈, 포인트 DB 적용 */
orderMapper.deductMoney(member);
/* 재고 변동 적용 */
for(OrderItemDTO oit : ord.getOrders()) {
/* 변동 재고 값 구하기 */
BookVO book = bookMapper.getGoodsInfo(oit.getBookId());
book.setBookStock(book.getBookStock() - oit.getBookCount());
/* 변동 값 DB 적용 */
orderMapper.deductStock(book);
}
/* 장바구니 제거 */
for(OrderItemDTO oit : ord.getOrders()) {
CartDTO dto = new CartDTO();
dto.setMemberId(ord.getMemberId());
dto.setBookId(oit.getBookId());
cartMapper.deleteOrderCart(dto);
}
}

View File

@@ -1,5 +1,5 @@
#Generated by Maven Integration for Eclipse
#Thu Dec 09 15:29:52 KST 2021
#Tue Dec 14 18:11:21 KST 2021
m2e.projectLocation=C\:\\Users\\sjinj\\git\\Blog_Project2\\VamPa
m2e.projectName=VamPa
groupId=com.vam

View File

@@ -1,6 +1,7 @@
package com.vam.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import com.vam.model.MemberVO;
import com.vam.model.OrderDTO;
import com.vam.model.OrderPageDTO;
import com.vam.service.MemberService;
@@ -38,7 +40,24 @@ public class OrderController {
System.out.println(od);
orderService.order(od);
MemberVO member = new MemberVO();
member.setMemberId(od.getMemberId());
HttpSession session = request.getSession();
try {
MemberVO memberLogin = memberService.memberLogin(member);
memberLogin.setMemberPw("");
session.setAttribute("member", memberLogin);
} catch (Exception e) {
e.printStackTrace();
}
return "redirect:/main";
}
}
}

View File

@@ -2,11 +2,15 @@ package com.vam.service;
import java.util.List;
import com.vam.model.OrderDTO;
import com.vam.model.OrderPageItemDTO;
public interface OrderService {
/* 주문 정보 */
public List<OrderPageItemDTO> getGoodsInfo(List<OrderPageItemDTO> orders);
public List<OrderPageItemDTO> getGoodsInfo(List<OrderPageItemDTO> orders);
/* 주문 */
public void order(OrderDTO orw);
}

View File

@@ -1,14 +1,25 @@
package com.vam.service;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vam.mapper.AttachMapper;
import com.vam.mapper.BookMapper;
import com.vam.mapper.CartMapper;
import com.vam.mapper.MemberMapper;
import com.vam.mapper.OrderMapper;
import com.vam.model.AttachImageVO;
import com.vam.model.BookVO;
import com.vam.model.CartDTO;
import com.vam.model.MemberVO;
import com.vam.model.OrderDTO;
import com.vam.model.OrderItemDTO;
import com.vam.model.OrderPageItemDTO;
@Service
@@ -18,7 +29,16 @@ public class OrderServiceImpl implements OrderService{
private OrderMapper orderMapper;
@Autowired
private AttachMapper attachMapper;
private AttachMapper attachMapper;
@Autowired
private MemberMapper memberMapper;
@Autowired
private CartMapper cartMapper;
@Autowired
private BookMapper bookMapper;
@Override
public List<OrderPageItemDTO> getGoodsInfo(List<OrderPageItemDTO> orders) {
@@ -44,6 +64,77 @@ public class OrderServiceImpl implements OrderService{
}
@Override
@Transactional
public void order(OrderDTO ord) {
/* 사용할 데이터가져오기 */
/* 회원 정보 */
MemberVO member = memberMapper.getMemberInfo(ord.getMemberId());
/* 주문 정보 */
List<OrderItemDTO> ords = new ArrayList<>();
for(OrderItemDTO oit : ord.getOrders()) {
OrderItemDTO orderItem = orderMapper.getOrderInfo(oit.getBookId());
// 수량 셋팅
orderItem.setBookCount(oit.getBookCount());
// 기본정보 셋팅
orderItem.initSaleTotal();
//List객체 추가
ords.add(orderItem);
}
/* OrderDTO 셋팅 */
ord.setOrders(ords);
ord.getOrderPriceInfo();
/*DB 주문,주문상품(,배송정보) 넣기*/
/* orderId만들기 및 OrderDTO객체 orderId에 저장 */
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("_yyyyMMddmm");
String orderId = member.getMemberId() + format.format(date);
ord.setOrderId(orderId);
/* db넣기 */
orderMapper.enrollOrder(ord); //vam_order 등록
for(OrderItemDTO oit : ord.getOrders()) { //vam_orderItem 등록
oit.setOrderId(orderId);
orderMapper.enrollOrderItem(oit);
}
/* 비용 포인트 변동 적용 */
/* 비용 차감 & 변동 돈(money) Member객체 적용 */
int calMoney = member.getMoney();
calMoney -= ord.getOrderFinalSalePrice();
member.setMoney(calMoney);
/* 포인트 차감, 포인트 증가 & 변동 포인트(point) Member객체 적용 */
int calPoint = member.getPoint();
calPoint = calPoint - ord.getUsePoint() + ord.getOrderSavePoint(); // 기존 포인트 - 사용 포인트 + 획득 포인트
member.setPoint(calPoint);
/* 변동 돈, 포인트 DB 적용 */
orderMapper.deductMoney(member);
/* 재고 변동 적용 */
for(OrderItemDTO oit : ord.getOrders()) {
/* 변동 재고 값 구하기 */
BookVO book = bookMapper.getGoodsInfo(oit.getBookId());
book.setBookStock(book.getBookStock() - oit.getBookCount());
/* 변동 값 DB 적용 */
orderMapper.deductStock(book);
}
/* 장바구니 제거 */
for(OrderItemDTO oit : ord.getOrders()) {
CartDTO dto = new CartDTO();
dto.setMemberId(ord.getMemberId());
dto.setBookId(oit.getBookId());
cartMapper.deleteOrderCart(dto);
}
}
}

View File

@@ -1,5 +1,5 @@
#Generated by Maven Integration for Eclipse
#Thu Dec 09 15:29:52 KST 2021
#Tue Dec 14 18:11:23 KST 2021
m2e.projectLocation=C\:\\Users\\sjinj\\git\\Blog_Project2\\VamPa_MySQL
m2e.projectName=VamPa_MySQL
groupId=com.vam