TsfOrderService.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587
  1. package com.style24.front.biz.service;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.List;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Transactional;
  10. import org.thymeleaf.util.StringUtils;
  11. import com.gagaframework.web.parameter.GagaMap;
  12. import com.style24.core.biz.dao.TscOrderDao;
  13. import com.style24.core.biz.service.TscKakaoPayService;
  14. import com.style24.core.biz.service.TscKcpService;
  15. import com.style24.core.biz.service.TscNaverPayService;
  16. import com.style24.core.support.env.TscConstants;
  17. import com.style24.front.biz.dao.TsfOrderDao;
  18. import com.style24.front.support.security.session.TsfSession;
  19. import com.style24.persistence.domain.Coupon;
  20. import com.style24.persistence.domain.GoodsStock;
  21. import com.style24.persistence.domain.KakaoPay;
  22. import com.style24.persistence.domain.NaverPay;
  23. import com.style24.persistence.domain.Order;
  24. import com.style24.persistence.domain.Payment;
  25. import lombok.extern.slf4j.Slf4j;
  26. /**
  27. * 주문 Service
  28. *
  29. * @author gagamel
  30. * @since 2020. 12. 29
  31. */
  32. @Service
  33. @Slf4j
  34. public class TsfOrderService {
  35. @Autowired
  36. private TsfOrderDao orderDao;
  37. @Autowired
  38. private TscKcpService coreKcpService;
  39. @Autowired
  40. private TscOrderDao coreOrderDao;
  41. @Autowired
  42. private TscKakaoPayService coreKakaoPayService;
  43. @Autowired
  44. private TscNaverPayService coreNaverPayService;
  45. @Autowired
  46. private TsfGoodsService goodsService;
  47. /**
  48. * 마이페이지 주문 정보 조회
  49. *
  50. * @param Order
  51. * @author card007
  52. * @since 2021. 02. 04
  53. */
  54. public Collection<GagaMap> getOrderListForMypage(Order order) {
  55. Collection<GagaMap> orderList = new ArrayList<>();
  56. Collection<Order> ordDtlList = new ArrayList<>();
  57. String allCanYn = "Y";
  58. int ordNo = 0;
  59. int index = 0;
  60. int ordReqChgQty = 0;
  61. for (Order tmpOrder : orderDao.getOrderListForMypage(order)) {
  62. // 세트상품 옵션별 배열로 담기
  63. if (tmpOrder.getItemNm().contains("!@!")) {
  64. tmpOrder.setItemNmArr(tmpOrder.getItemNm().split("!@!"));
  65. tmpOrder.setColorNmArr(tmpOrder.getColorNm().split(","));
  66. tmpOrder.setOptCd1Arr(tmpOrder.getOptCd1().split(","));
  67. tmpOrder.setOptCd2Arr(tmpOrder.getOptCd2().split(","));
  68. } else {
  69. String[] arr = {tmpOrder.getItemNm()}, arr2 = {tmpOrder.getColorNm()}, arr3 = {tmpOrder.getOptCd1()}, arr4 = {tmpOrder.getOptCd2()};
  70. tmpOrder.setItemNmArr(arr);
  71. tmpOrder.setColorNmArr(arr2);
  72. tmpOrder.setOptCd1Arr(arr3);
  73. tmpOrder.setOptCd2Arr(arr4);
  74. }
  75. // 주문 목록 데이터 설정
  76. if (index > 0 && ordNo != tmpOrder.getOrdNo()) {
  77. orderList.add(setOrderMap(ordDtlList, allCanYn, ordReqChgQty));
  78. ordDtlList = new ArrayList<>();
  79. ordDtlList.add(tmpOrder);
  80. allCanYn = "Y";
  81. ordReqChgQty = 0;
  82. } else {
  83. ordDtlList.add(tmpOrder);
  84. }
  85. // 전체취소 가능 여부 설정
  86. ordReqChgQty += tmpOrder.getOrdReqChgQty();
  87. if ("Y".equals(allCanYn)
  88. && !tmpOrder.getOrdDtlStat().equals(TscConstants.OrderDetailStat.DEPOSIT_WAIT.value())
  89. && !tmpOrder.getOrdDtlStat().equals(TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value())
  90. && !tmpOrder.getOrdDtlStat().equals(TscConstants.OrderDetailStat.GOODS_PREPARE.value())) {
  91. allCanYn = "N";
  92. }
  93. ordNo = tmpOrder.getOrdNo();
  94. index++;
  95. }
  96. if (ordDtlList.size() > 0) {
  97. orderList.add(setOrderMap(ordDtlList, allCanYn, ordReqChgQty));
  98. }
  99. return orderList;
  100. }
  101. private GagaMap setOrderMap(Collection<Order> ordDtlList, String allCanYn, int ordReqChgQty) {
  102. Order order = ordDtlList.iterator().next();
  103. GagaMap map = new GagaMap();
  104. map.set("giftPackYn", order.getGiftPackYn());
  105. map.set("ordNo", order.getOrdNo());
  106. map.set("ordDt", order.getOrdDt());
  107. map.set("freeGiftList", orderDao.getOrderFreeGiftListForMypage(order));
  108. map.set("allCanYn", allCanYn);
  109. map.set("ordReqChgQty", ordReqChgQty);
  110. map.set("oneData", order);
  111. map.set("ordDtlList", ordDtlList);
  112. return map;
  113. }
  114. public Collection<GagaMap> getOrderListForMypageBak(Order order) {
  115. Collection<GagaMap> mapList = new ArrayList<>();
  116. Collection<GagaMap> orderList = new ArrayList<>();
  117. List<Order> ordDtlList = new ArrayList<>();
  118. int ordNo = 0;
  119. String ordDt = "";
  120. String selfGoodsYn = "";
  121. String supplyCompCd = "";
  122. String shipCompNm = "";
  123. String shipCompCd = "";
  124. String invoiceNo = "";
  125. String giftPackYn = "";
  126. int index = 0;
  127. Boolean shotDelv = false;
  128. Boolean selfMall = false;
  129. Boolean supplyMall = false;
  130. Boolean review = true;
  131. for (Order tmpOrder : orderDao.getOrderListForMypage(order)) {
  132. if (ordNo != tmpOrder.getOrdNo()) {
  133. if (index > 0) {
  134. // 주문상세내역 목록 설정
  135. GagaMap ordDtlMap = new GagaMap();
  136. ordDtlMap.set("ordDtlList", ordDtlList);
  137. ordDtlMap.set("ordDtlStat", ordDtlList.iterator().next().getOrdDtlStat());
  138. ordDtlMap.set("shipCompCd", shipCompCd);
  139. ordDtlMap.set("shipCompNm", shipCompNm);
  140. ordDtlMap.set("invoiceNo", invoiceNo);
  141. ordDtlMap.set("recipBaseAddr", ordDtlList.iterator().next().getRecipBaseAddr());
  142. ordDtlMap.set("giftLimitDay", ordDtlList.iterator().next().getGiftLimitDay());
  143. ordDtlMap.set("recipNm", ordDtlList.iterator().next().getRecipNm());
  144. ordDtlMap.set("giftLimitDt", ordDtlList.iterator().next().getGiftLimitDt());
  145. ordDtlMap.set("purchaseConfirmDay", ordDtlList.iterator().next().getPurchaseConfirmDay());
  146. ordDtlMap.set("review", review);
  147. orderList.add(ordDtlMap);
  148. // 주문내역 목록 설정
  149. GagaMap map = new GagaMap();
  150. map.set("ordNo", ordNo); // 주문번호
  151. map.set("ordDt", ordDt); // 주문일시
  152. map.set("shotDelv", shotDelv); // 총알배송 아이콘
  153. map.set("selfMall", selfMall); // STYLE24 일반배송 아이콘
  154. map.set("supplyMall", supplyMall); // 업체직배송 아이콘
  155. map.set("giftPackYn", giftPackYn); // 선물하기여부
  156. map.set("orderList", orderList); // 주문내역
  157. mapList.add(map);
  158. }
  159. // 데이터 설정 후 초기화 진행
  160. ordNo = tmpOrder.getOrdNo();
  161. ordDt = tmpOrder.getOrdDt();
  162. selfGoodsYn = tmpOrder.getSelfGoodsYn();
  163. supplyCompCd = tmpOrder.getSupplyCompCd();
  164. giftPackYn = tmpOrder.getGiftPackYn();
  165. shotDelv = false;
  166. selfMall = false;
  167. supplyMall = false;
  168. ordDtlList = new ArrayList<>();
  169. orderList = new ArrayList<>();
  170. } else if (!selfGoodsYn.equals(tmpOrder.getSelfGoodsYn())
  171. || ("N".equals(tmpOrder.getSelfGoodsYn()) && !supplyCompCd.equals(tmpOrder.getSupplyCompCd()))) {
  172. // 주문내역 목록 설정
  173. GagaMap ordDtlMap = new GagaMap();
  174. ordDtlMap.set("ordDtlList", ordDtlList);
  175. ordDtlMap.set("ordDtlStat", ordDtlList.iterator().next().getOrdDtlStat());
  176. ordDtlMap.set("shipCompCd", shipCompCd);
  177. ordDtlMap.set("shipCompNm", shipCompNm);
  178. ordDtlMap.set("invoiceNo", invoiceNo);
  179. ordDtlMap.set("purchaseConfirmDay", ordDtlList.iterator().next().getPurchaseConfirmDay());
  180. ordDtlMap.set("recipBaseAddr", ordDtlList.iterator().next().getRecipBaseAddr());
  181. ordDtlMap.set("giftLimitDay", ordDtlList.iterator().next().getGiftLimitDay());
  182. ordDtlMap.set("recipNm", ordDtlList.iterator().next().getRecipNm());
  183. ordDtlMap.set("giftLimitDt", ordDtlList.iterator().next().getGiftLimitDt());
  184. ordDtlMap.set("review", review);
  185. orderList.add(ordDtlMap);
  186. // 상태 별 배너 설정 후 초기화 진행
  187. ordDtlList = new ArrayList<>();
  188. selfGoodsYn = tmpOrder.getSelfGoodsYn();
  189. supplyCompCd = tmpOrder.getSupplyCompCd();
  190. }
  191. // 주문내역 설정
  192. ordDtlList.add(tmpOrder);
  193. // 총알배송 아이콘 설정
  194. if (!shotDelv && "Y".equals(tmpOrder.getShotDelvYn())) {
  195. shotDelv = true;
  196. }
  197. // STYLE24 일반배송 아이콘 설정
  198. if (!selfMall && "Y".equals(tmpOrder.getSelfGoodsYn())) {
  199. selfMall = true;
  200. }
  201. // 업체직배송 아이콘 설정
  202. if (!supplyMall && "N".equals(tmpOrder.getSelfGoodsYn())) {
  203. supplyMall = true;
  204. }
  205. // 리뷰 작성 여부 설정
  206. if (review && tmpOrder.getReviewSq() == 0) {
  207. review = false;
  208. }
  209. // 배송정보 설정
  210. shipCompCd = tmpOrder.getShipCompCd();
  211. shipCompNm = tmpOrder.getShipCompNm();
  212. invoiceNo = tmpOrder.getInvoiceNo();
  213. // 인덱스 처리
  214. index++;
  215. }
  216. // 마지막 데이터 설정
  217. if (ordNo > 0) {
  218. // 주문상세내역 목록 설정
  219. GagaMap ordDtlMap = new GagaMap();
  220. ordDtlMap.set("ordDtlList", ordDtlList);
  221. ordDtlMap.set("ordDtlStat", ordDtlList.iterator().next().getOrdDtlStat());
  222. ordDtlMap.set("shipCompCd", shipCompCd);
  223. ordDtlMap.set("shipCompNm", shipCompNm);
  224. ordDtlMap.set("invoiceNo", invoiceNo);
  225. ordDtlMap.set("purchaseConfirmDay", ordDtlList.iterator().next().getPurchaseConfirmDay());
  226. ordDtlMap.set("recipBaseAddr", ordDtlList.iterator().next().getRecipBaseAddr());
  227. ordDtlMap.set("giftLimitDay", ordDtlList.iterator().next().getGiftLimitDay());
  228. ordDtlMap.set("recipNm", ordDtlList.iterator().next().getRecipNm());
  229. ordDtlMap.set("giftLimitDt", ordDtlList.iterator().next().getGiftLimitDt());
  230. ordDtlMap.set("review", review);
  231. orderList.add(ordDtlMap);
  232. // 주문내역 목록 설정
  233. GagaMap map = new GagaMap();
  234. map.set("ordNo", ordNo);
  235. map.set("ordDt", ordDt);
  236. map.set("shotDelv", shotDelv);
  237. map.set("selfMall", selfMall);
  238. map.set("supplyMall", supplyMall);
  239. map.set("giftPackYn", giftPackYn);
  240. map.set("orderList", orderList);
  241. mapList.add(map);
  242. }
  243. return mapList;
  244. }
  245. /**
  246. * PG 결제승인
  247. * @param param - 필수 : pgGb(결제수단 : KCP, KAKAO 등), payMeans(결제수단 : G014_30(신용카드) 등)
  248. * @param request
  249. * @param response
  250. * @return
  251. */
  252. @Transactional("shopTxnManager")
  253. public Payment orderPgPayResult(Payment param, HttpServletRequest request, HttpServletResponse response) {
  254. Payment result = new Payment();
  255. if(TscConstants.FrontGb.MOB.value().equals(TsfSession.getFrontGb()) && StringUtils.isEmpty(param.getPgGb())) {
  256. param.setPgGb(TscConstants.PgGb.KCP.value());
  257. param.setPayMeans(TscConstants.PayMeans.CREDIT_CARD.value());
  258. }
  259. try {
  260. if(StringUtils.isEmpty(param.getPgGb())) {
  261. throw new IllegalArgumentException("결제수단을 선택해주세요.");
  262. }
  263. if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
  264. result = coreKcpService.kcpPayRequest(param, request, response);
  265. } else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
  266. result = coreKakaoPayService.approveKakaoPayment(param);
  267. } else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {
  268. result = coreNaverPayService.approveNaverPayment(param);
  269. } else {
  270. throw new IllegalArgumentException("결제 수단이 잘못 입력되었습니다. 새로고침 후 다시 시도해주세요.");
  271. }
  272. // 결제 수단이 없는 경우(KAKAO, NAVER) CARD로 세팅
  273. if(StringUtils.isEmpty(param.getPayMeans())) {
  274. result.setPayMeans(TscConstants.PayMeans.CREDIT_CARD.value());
  275. }
  276. // 모바일 주문의 경우 result에서 고객 번호 보유중.
  277. if(TscConstants.FrontGb.PC.value().equals(TsfSession.getFrontGb())) {
  278. result.setUpdNo(param.getCustNo());
  279. result.setRegNo(param.getCustNo());
  280. }
  281. result.setPaySq(param.getPaySq());
  282. result.setPayGb("O");
  283. // TB_PAYMENT 등록. 실패시 PG 환불.
  284. if(coreOrderDao.insertPayment(result) < 1) {
  285. if(TscConstants.PgGb.KCP.value().equals(param.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(param.getPgGb())) {
  286. coreKcpService.kcpPayRollBack(result, request);
  287. } else if (TscConstants.PgGb.KAKAO.value().equals(param.getPgGb())) {
  288. coreKakaoPayService.cancelKakaoPayment(param);
  289. } else if (TscConstants.PgGb.NAVER.value().equals(param.getPgGb())) {
  290. coreNaverPayService.cancelNaverPayment(param);
  291. } else {
  292. throw new IllegalArgumentException("결제 정보 저장 실패. 새로고침 후 다시 시작해주세요.");
  293. }
  294. }
  295. } catch(Exception e) {
  296. e.printStackTrace();
  297. throw new IllegalArgumentException(e.getMessage());
  298. }
  299. return result;
  300. }
  301. @Transactional("shopTxnManager")
  302. public int updatePaymentForOrderFinished(Payment param) {
  303. return orderDao.updatePaymentForOrderFinished(param);
  304. }
  305. /**
  306. * 마이페이지 주문목록 페이징 처리 주문번호 수 조회
  307. *
  308. * @param Order
  309. * @return int
  310. * @author card007
  311. * @since 2021. 03. 16
  312. */
  313. public int getPagingOrdNoListCount(Order order) { return orderDao.getPagingOrdNoListCount(order); }
  314. /**
  315. * 마이페이지 주문목록 페이징 처리 주문번호 조회
  316. *
  317. * @param Order
  318. * @return Collection<Order>
  319. * @author card007
  320. * @since 2021. 02. 18
  321. */
  322. public Collection<Order> getPagingOrdNoList(Order order) { return orderDao.getPagingOrdNoList(order); }
  323. /**
  324. * 마이페이지 주문상세 금액정보 조회
  325. *
  326. * @param Order
  327. * @return Order
  328. * @author card007
  329. * @since 2021. 02. 16
  330. */
  331. public Order getOrderAmtForMypage(Order order) { return orderDao.getOrderAmtForMypage(order); }
  332. /**
  333. * 마이페이지 주문상세 결제정보 조회
  334. *
  335. * @param Order
  336. * @return Order
  337. * @author card007
  338. * @since 2021. 02. 16
  339. */
  340. public Order getPaymentInfoForMypage(Order order) {
  341. order.setPayStat(TscConstants.PaymentStat.PAYMENT_COMPLETE.value());
  342. return orderDao.getPaymentInfoForMypage(order);
  343. }
  344. /**
  345. * 마이페이지 주문상세 배송지 정보 조회
  346. *
  347. * @param Order
  348. * @return Order
  349. * @author card007
  350. * @since 2021. 02. 16
  351. */
  352. public Order getOrderDeliveryAddrInfo(Order order) { return orderDao.getOrderDeliveryAddrInfo(order); }
  353. /**
  354. * 마이페이지 주문상세 주문내역삭제 처리
  355. *
  356. * @param Order
  357. * @return int
  358. * @author card007
  359. * @since 2021. 02. 17
  360. */
  361. public int updateOrderDisplayYn(Order order) { return orderDao.updateOrderDisplayYn(order); }
  362. public Payment setPgDataInfo(Order order) {
  363. Payment payment;
  364. order.setFrontGb(TsfSession.getFrontGb());
  365. if(TscConstants.PgGb.KAKAO.value().equals(order.getPgGb())) { // 카카오페이
  366. KakaoPay kakaoPay = coreKakaoPayService.kakaoPaymentReady(order);
  367. payment = coreKakaoPayService.setKakaoOrderData(kakaoPay, order);
  368. } else if(TscConstants.PgGb.NAVER.value().equals(order.getPgGb())) { // 네이버페이
  369. NaverPay naverPay = coreNaverPayService.naverPaymentReady(order);
  370. payment = coreNaverPayService.setNaverOrderData(naverPay);
  371. } else if(TscConstants.PgGb.KCP.value().equals(order.getPgGb()) || TscConstants.PgGb.PAYCO.value().equals(order.getPgGb())){ // KCP, PAYCO
  372. payment = coreKcpService.setKcpOrderData(order);
  373. } else {
  374. throw new IllegalArgumentException("결제타입이 잘못 선택되었습니다. 새로고침 후 다시 시도해주세요.");
  375. }
  376. payment.setPgGb(order.getPgGb());
  377. payment.setPayMeans(order.getPayMeans());
  378. return payment;
  379. }
  380. /**
  381. * 고객 특정기간 첫구매 여부
  382. *
  383. * @param coupon
  384. * @return int
  385. * @author eskim
  386. * @since 2021.03.12
  387. */
  388. public int getCustFirstOrderCount(Coupon coupon) { return orderDao.getCustFirstOrderCount(coupon); }
  389. /**
  390. * 주문정보유효성체크
  391. * @param Order
  392. * @return Order
  393. * @author jsh77b
  394. * @since 2021. 03. 09
  395. */
  396. public void orderValidationCheck(Order order) {
  397. // 1. 주문상세체크
  398. Collection<Order> orderDetailList = order.getOrderDetailList();
  399. String goodsCd = "";
  400. String goodsType = "";
  401. String itemCd = "";
  402. String optCd = "";
  403. int goodsQty = 0;
  404. int custCpnSq = 0;
  405. int usPntAmt = 0;
  406. int usGfcdAmt = 0;
  407. for (Order orderDetail : orderDetailList) {
  408. // 2.1 상품 재고 확인
  409. GoodsStock checkParam = new GoodsStock();
  410. for (int i=0 ; i<orderDetail.getItemCdArr().length ; i++) {
  411. goodsCd = orderDetail.getGoodsCd();
  412. goodsType = orderDetail.getGoodsType();
  413. itemCd = orderDetail.getItemCdArr()[i];
  414. optCd = orderDetail.getOptCdArr()[i];
  415. goodsQty = orderDetail.getGoodsQty();
  416. checkParam.setGoodsCd(goodsCd);
  417. checkParam.setItemCd(itemCd);
  418. checkParam.setOptCd(optCd);
  419. checkParam.setGoodsQty(goodsQty);
  420. checkParam.setGoodsType(goodsType);
  421. String stockResult = goodsService.getCheckStock(checkParam);
  422. if (!"SUCCESS".equals(stockResult)) {
  423. throw new IllegalArgumentException(stockResult);
  424. }
  425. }
  426. // 2.2 보유 상품쿠폰체크
  427. custCpnSq = orderDetail.getGoodsCpnSq();
  428. if (custCpnSq > 0) {
  429. orderDetail.setCustCpnSq(custCpnSq);
  430. orderDetail.setCustNo(order.getCustNo());
  431. if (orderDao.getCheckCustCpnSq(orderDetail) < 1) {
  432. throw new IllegalArgumentException("보유하신 상품쿠폰이 존재하지 않습니다.");
  433. }
  434. }
  435. // 2.3 보유 장바구니쿠폰체크
  436. custCpnSq = orderDetail.getCartCpnSq();
  437. if (custCpnSq > 0) {
  438. orderDetail.setCustCpnSq(custCpnSq);
  439. orderDetail.setCustNo(order.getCustNo());
  440. if (orderDao.getCheckCustCpnSq(orderDetail) < 1) {
  441. throw new IllegalArgumentException("보유하신 장바구니쿠폰이 존재하지 않습니다.");
  442. }
  443. }
  444. // 2.4 사용포인트금액등록(구매사용포인트)
  445. usPntAmt = usPntAmt + orderDetail.getPntDcAmt();
  446. // 2.5 상품권사용금액등록
  447. usGfcdAmt = usGfcdAmt + orderDetail.getGfcdUseAmt();
  448. }
  449. // 2.6 사용포인트금액등록(사은품사용포인트)
  450. int usePoint = 0;
  451. if (order.getFreegiftUsePointArr().length > 0) {
  452. for (int i=0 ; i<order.getFreegiftUsePointArr().length ; i++) {
  453. if (order.getFreegiftUsePointArr()[i] != null && order.getFreegiftUsePointArr()[i] != "") {
  454. usePoint = Integer.parseInt(order.getFreegiftUsePointArr()[i]);
  455. if (usePoint > 0) {
  456. usPntAmt = usPntAmt + usePoint;
  457. }
  458. }
  459. }
  460. }
  461. // 3. 보유포인트금액 > 포인트사용금액 체크
  462. int rmPntAmt = coreOrderDao.getCustPointInfo(order);
  463. if (rmPntAmt < usPntAmt) {
  464. throw new IllegalArgumentException("보유하신 포인트 금액이 부족합니다.");
  465. }
  466. // 4. 보유상품권금액 > 상품권사용금액 체크
  467. int rmGfcdAmt = coreOrderDao.getGiftcardInfo(order);
  468. if (rmGfcdAmt < usGfcdAmt) {
  469. throw new IllegalArgumentException("보유하신 상품권 금액이 부족합니다.");
  470. }
  471. // 5. 장바구니 보유쿠폰 체크 (배송목록체크)
  472. Collection<Order> delvFeeCdList = order.getDelvFeeCdList();
  473. for (Order delvFeeCd : delvFeeCdList) {
  474. if (delvFeeCd.getDelvCpnSq() > 0) {
  475. custCpnSq = delvFeeCd.getDelvCpnSq();
  476. if (custCpnSq > 0) {
  477. delvFeeCd.setCustCpnSq(custCpnSq);
  478. delvFeeCd.setCustNo(order.getCustNo());
  479. if (orderDao.getCheckCustCpnSq(delvFeeCd) < 1) {
  480. throw new IllegalArgumentException("보유하신 배송비쿠폰이 존재하지 않습니다.");
  481. }
  482. }
  483. }
  484. }
  485. // TODO 5. 사은품채고체크
  486. }
  487. // public ModelAndView getOrderList(Order order) {
  488. // ModelAndView mav = new ModelAndView();
  489. // // 페이징 처리 및 주문정보 조회
  490. // List<Integer> ordNoList = new ArrayList<>();
  491. //
  492. // for (Order tmpOrder : this.getPagingOrdNoList(order)) {
  493. // ordNoList.add(tmpOrder.getOrdNo());
  494. // }
  495. //
  496. // if (ordNoList.size() > 0) {
  497. // order.setOrdNoList(ordNoList.stream().mapToInt(Integer::intValue).toArray());
  498. // }
  499. //
  500. // mav.addObject("orderList", this.getOrderListForMypage(order));
  501. // mav.addObject("orderInfo", order);
  502. //
  503. // mav.setViewName(super.getDeviceViewName("mypage/MypageOrderList"));
  504. // }
  505. }