TsfOrderController.java 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954
  1. package com.style24.front.biz.web;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.core.env.Environment;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.PostMapping;
  10. import org.springframework.web.bind.annotation.RequestBody;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import org.springframework.web.servlet.ModelAndView;
  15. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  16. import com.gagaframework.web.parameter.GagaMap;
  17. import com.style24.core.biz.service.TscFreegiftService;
  18. import com.style24.core.biz.service.TscOrderService;
  19. import com.style24.core.support.message.TscMessageByLocale;
  20. import com.style24.front.biz.service.TsfCartService;
  21. import com.style24.front.biz.service.TsfOrderService;
  22. import com.style24.front.support.controller.TsfBaseController;
  23. import com.style24.front.support.security.session.TsfSession;
  24. import com.style24.persistence.domain.Order;
  25. import com.style24.persistence.domain.Payment;
  26. import lombok.extern.slf4j.Slf4j;
  27. /**
  28. * 주문 Controller
  29. *
  30. * @author gagamel
  31. * @since 2020. 12. 29
  32. */
  33. @Controller
  34. @RequestMapping("/order")
  35. @Slf4j
  36. public class TsfOrderController extends TsfBaseController {
  37. @Autowired
  38. private TscMessageByLocale message;
  39. @Autowired
  40. private TscOrderService coreOrderService;
  41. @Autowired
  42. private TsfOrderService orderService;
  43. @Autowired
  44. private TscFreegiftService coreFreegiftService;
  45. @Autowired
  46. private TsfCartService cartService;
  47. @Autowired
  48. private Environment env;
  49. /**
  50. * 회원, 비회원 주문페이지
  51. *
  52. * @param
  53. * @return
  54. * @author jsh77b
  55. * @since 2021. 02. 02
  56. */
  57. @RequestMapping(value = "/noMember")
  58. public ModelAndView orderNoMember(Order order, RedirectAttributes redirectAttributes) {
  59. ModelAndView mav = new ModelAndView();
  60. // 비회원 주문시 로직 정리
  61. // @ web 인 경우에는 고객정보 입력 화면 후 주문서 이동 후 본인인중
  62. // @ web 의 경우에는 입력한 고객정보와 인증받은 고객정보가 다른경우 고객정보 업데이트
  63. // @ mobile 인 경우에는 본인인증 후 주문서 이동
  64. // 배송완료 후 14일 자동구매확정
  65. // TODO 임시 장바구니
  66. // 2. 장바구니시퀀스 배열 등록 (장바구니 상품 정보 조회)
  67. //int[] arr = {11,77,8};
  68. //order.setCartSqArr(arr); // 장바구니시퀀스
  69. //order.setShotDelvUseYn("Y"); // 장바구니총알배송사용여부
  70. mav.addObject("order" , order); // 주문정보
  71. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  72. mav.setViewName(super.getDeviceViewName("order/OrderNoMember")); // 비회원주문서화면
  73. return mav;
  74. }
  75. /**
  76. * 주문페이지
  77. *
  78. * @param
  79. * @return
  80. * @author jsh77b
  81. * @since 2021. 02. 02
  82. */
  83. @RequestMapping(value = "/form")
  84. public ModelAndView orderForm(Order order) {
  85. ModelAndView mav = new ModelAndView();
  86. // TODO
  87. // 1.비회주문, 회원 주문 판단 로직, 고객정보 세션 판단
  88. // 세션고객정보가 존재하면 회원주문 없으면 비회원 주문
  89. // 1. 로그인체크 후 custNo 설정
  90. if (TsfSession.isLogin()) {
  91. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  92. } else {
  93. order.setJsessionId(TsfSession.getSessionId());
  94. }
  95. // TODO
  96. // 1.1 카트시퀀스가 정보가 없을때 처리 장바구니로 이동
  97. if (order.getCartSqArr() == null) {
  98. mav.setViewName("redirect:/cart/list/form"); // 비회원주문서화면
  99. return mav;
  100. }
  101. // 2. 로그인정보 체크 후 비회원 고객정보 설정
  102. if (TsfSession.isLogin()) {
  103. order.setCustNm("");
  104. order.setCellPhnno("");
  105. order.setEmail("");
  106. order.setDelvAddrNm("");
  107. order.setRecipZipcode("00000");
  108. order.setRecipBaseAddr("기본주소정보없음");
  109. order.setRecipDtlAddr("상제주소정보없음");
  110. }
  111. // 2.1 총알배소여부가 null 이면 Y로 설정
  112. if (order.getShotDelvUseYn() == null || "".equals(order.getShotDelvUseYn())) {
  113. order.setShotDelvUseYn("Y");
  114. }
  115. // TODO 임시 장바구니
  116. // 3. 장바구니상품시퀀스 상품목록조회
  117. // 3.1 즉시할인, 다다익선 할인금액 정보 적용 정보
  118. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  119. // 3.2 배송정보조회(장바구니상품목록)
  120. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  121. // 3.3 할인정보조회(상품금액, 선포인트, 다다익선할인금액)
  122. GagaMap goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  123. // 4. 화면설정설정
  124. // 4.1 배송정보설정
  125. mav.addObject("cartGoodsList" , tmtbGoodsApplyList); // 장바구니상품목록(즉시할인, 다다익선적용)
  126. mav.addObject("delvFeeCdCnt" , delvOrderMap.get("delvFeeCdCnt")); // 배송정책단위건수
  127. mav.addObject("shotCnt" , delvOrderMap.get("shotCnt")); // 자사총알배송상품건수
  128. mav.addObject("wmsCnt" , delvOrderMap.get("wmsCnt")); // 자사일반상품건수
  129. mav.addObject("shotWmsCnt" , delvOrderMap.get("shotWmsCnt")); // 자사총알,일반상품건수
  130. mav.addObject("resCnt" , delvOrderMap.get("resCnt")); // 자사예약상품건수
  131. mav.addObject("delvCnt" , delvOrderMap.get("delvCnt")); // 입점업체상품건수
  132. mav.addObject("goodsTotCnt" , delvOrderMap.get("goodsTotCnt")); // 총상품건수
  133. mav.addObject("delvAllCartList" , delvOrderMap.get("delvAllCartList")); // 전체배송목록
  134. mav.addObject("delvFeeCdList" , delvOrderMap.get("delvFeeCdList")); // 배송단위목록
  135. mav.addObject("sumDelvFee" , delvOrderMap.get("sumDelvFee")); // 배송비합계
  136. // 4.2 할인정보(상품금액, 즉시할인, 다다익선, 선포인트, 적립예정포인트)
  137. mav.addObject("orgGoodsSumAmt" , goodsDcAmtMap.get("orgGoodsSumAmt")); // 상품금액합계
  138. mav.addObject("cpn1DcSumAmt" , goodsDcAmtMap.get("cpn1DcSumAmt")); // 즉시할인금액합계
  139. mav.addObject("tmtbDcSumAmt" , goodsDcAmtMap.get("tmtbDcSumAmt")); // 다다익선할인금액합계
  140. mav.addObject("prePntDcAmt" , goodsDcAmtMap.get("prePntDcAmt")); // 선포인트사용가능금액
  141. mav.addObject("savePntSumAmt" , goodsDcAmtMap.get("savePntSumAmt")); // 적립예정포인트합계
  142. // 4.3 주문정보
  143. mav.addObject("order" , order); // 주문정보(고객정보, 배송지정보, 총알배송사용여부)
  144. // 4.5 해외구매대행, 주문제작
  145. mav.addObject("foreignBuyYn" , delvOrderMap.get("foreignBuyYn")); // 해외구매대행여부
  146. mav.addObject("orderMadeYn" , delvOrderMap.get("orderMadeYn")); // 주문제작여부
  147. mav.setViewName(super.getDeviceViewName("order/OrderForm"));
  148. return mav;
  149. }
  150. /**
  151. * 고객정보조회
  152. *
  153. * @param
  154. * @return
  155. * @author jsh77b
  156. * @since 2021. 02. 17
  157. */
  158. @ResponseBody
  159. @PostMapping("/custemerInfo")
  160. public ModelAndView custemerInfo(@RequestBody Order order) {
  161. Order custemerInfo = new Order();
  162. // 1. 로그인체크 후 custNo 설정
  163. if (TsfSession.isLogin()) {
  164. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  165. } else {
  166. order.setJsessionId(TsfSession.getSessionId());
  167. }
  168. // 2. 로그인체크 후 고객정보 설정
  169. if (TsfSession.isLogin()) {
  170. // 2.1 주문고객 정보조회
  171. custemerInfo = coreOrderService.getCustemerInfo(order);
  172. } else {
  173. // 2.1 주문고객 정보조회
  174. custemerInfo.setCustNm(order.getCustNm());
  175. custemerInfo.setCellPhnno(order.getCellPhnno());
  176. custemerInfo.setEmail(order.getEmail());
  177. }
  178. ModelAndView mav = new ModelAndView();
  179. mav.addObject("custemerInfo" , custemerInfo); // 고객정보
  180. mav.addObject("order" , order); // 파라미터
  181. mav.setViewName(super.getDeviceViewName("order/OrderCustemerInfo"));
  182. return mav;
  183. }
  184. /**
  185. * 배송정보조회
  186. *
  187. * @param
  188. * @return
  189. * @author jsh77b
  190. * @since 2021. 02. 17
  191. */
  192. @ResponseBody
  193. @PostMapping("/deliveryAddrInfo")
  194. public ModelAndView deliveryAddrInfo(@RequestBody Order order) {
  195. Order deliveryAddrInfo = new Order();
  196. // 1. 로그인체크 후 custNo 설정
  197. if (TsfSession.isLogin()) {
  198. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  199. } else {
  200. order.setJsessionId(TsfSession.getSessionId());
  201. }
  202. // 2. 로그인체크 후 고객정보 설정
  203. if (TsfSession.isLogin()) {
  204. // 2.1 주문고객 배송지정보조회
  205. Collection<Order> deliveryAddrList = coreOrderService.getDeliveryAddrInfo(order);
  206. int index = 0;
  207. for (Order deliveryAddr : deliveryAddrList) {
  208. // 회원 배송지 번호가 존재하면 실행
  209. if (order.getCustDelvAddrSq() > 0) {
  210. if (order.getCustDelvAddrSq() == deliveryAddr.getCustDelvAddrSq()) {
  211. deliveryAddrInfo = deliveryAddr;
  212. }
  213. }
  214. // 회원 배송지 번가 존재하지 않으면 기본배송지 설정
  215. else {
  216. if (index == 0) {
  217. deliveryAddrInfo = deliveryAddr;
  218. if (deliveryAddrInfo.getRecipZipcode() == null || "".equals(deliveryAddrInfo.getRecipZipcode())) {
  219. deliveryAddrInfo.setDelvAddrNm(deliveryAddrInfo.getCustNm());
  220. deliveryAddrInfo.setRecipZipcode("00000");
  221. deliveryAddrInfo.setRecipBaseAddr("기본주소정보없음");
  222. deliveryAddrInfo.setRecipDtlAddr("상세주소정보없음");
  223. deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
  224. deliveryAddrInfo.setRecipNm(deliveryAddrInfo.getCustNm());
  225. }
  226. }
  227. }
  228. index++;
  229. }
  230. } else {
  231. // 2.1 주문고객 정보조회
  232. deliveryAddrInfo.setDelvAddrNm(order.getCustNm());
  233. deliveryAddrInfo.setRecipZipcode(order.getRecipZipcode());
  234. deliveryAddrInfo.setRecipBaseAddr(order.getRecipBaseAddr());
  235. deliveryAddrInfo.setRecipDtlAddr(order.getRecipDtlAddr());
  236. deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
  237. }
  238. ModelAndView mav = new ModelAndView();
  239. mav.addObject("deliveryAddrInfo", deliveryAddrInfo); // 배송지정보
  240. mav.addObject("order" , order); // 파라미터
  241. mav.setViewName(super.getDeviceViewName("order/OrderDeliveryAddrInfo"));
  242. return mav;
  243. }
  244. /**
  245. * 주문내역정보조회
  246. *
  247. * @param
  248. * @return
  249. * @author jsh77b
  250. * @since 2021. 02. 17
  251. */
  252. @ResponseBody
  253. @PostMapping("/orderListInfo")
  254. public ModelAndView orderListInfo(@RequestBody Order order) {
  255. // 1. 로그인체크 후 custNo 설정
  256. if (TsfSession.isLogin()) {
  257. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  258. } else {
  259. order.setJsessionId(TsfSession.getSessionId());
  260. }
  261. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  262. // 3.2 배송정보조회(장바구니상품목록)
  263. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  264. ModelAndView mav = new ModelAndView();
  265. mav.addObject("delvAllCartList" , delvOrderMap.get("delvAllCartList")); // 전체배송목록
  266. mav.setViewName(super.getDeviceViewName("order/OrderListInfo"));
  267. return mav;
  268. }
  269. /**
  270. * 사은품정보조회
  271. *
  272. * @param
  273. * @return
  274. * @author jsh77b
  275. * @since 2021. 02. 17
  276. */
  277. @ResponseBody
  278. @PostMapping("/freegiftInfo")
  279. public ModelAndView freegiftInfo(@RequestBody Order order) {
  280. GagaMap resultMap = new GagaMap();
  281. // 1. 로그인체크 후 custNo 설정
  282. if (TsfSession.isLogin()) {
  283. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  284. } else {
  285. order.setJsessionId(TsfSession.getSessionId());
  286. }
  287. // 2. 로그인체크 후 정보 설정
  288. if (TsfSession.isLogin()) {
  289. // 3. 사은품 정보 (장바구니상품 사음품 적용 정보 조회)
  290. resultMap = coreFreegiftService.getOrderFreegift(order);
  291. }
  292. ModelAndView mav = new ModelAndView();
  293. mav.addObject("freegiftApplyAmtList" , resultMap.get("freegiftApplyAmtList")); // 사은품장바구니목록
  294. mav.addObject("freegiftGoodsList" , resultMap.get("freegiftGoodsList")); // 사은품상품정보 목록
  295. mav.addObject("freegiftList" , resultMap.get("freegiftList")); // 사은품정보 목록
  296. mav.addObject("order" , order); // 파라미터
  297. mav.setViewName(super.getDeviceViewName("order/OrderFreegiftInfo"));
  298. return mav;
  299. }
  300. /**
  301. * 할인정보조회
  302. *
  303. * @param
  304. * @return
  305. * @author jsh77b
  306. * @since 2021. 02. 17
  307. */
  308. @SuppressWarnings("unchecked")
  309. @ResponseBody
  310. @PostMapping("/dcAmtInfo")
  311. public ModelAndView dcAmtInfo(@RequestBody Order order) {
  312. GagaMap goodsDcAmtMap = new GagaMap();
  313. Collection<Order> goodsApplyCpnList = new ArrayList<Order>();
  314. Collection<Order> goodsCpnList = new ArrayList<Order>();
  315. Collection<Order> cartCpnList = new ArrayList<Order>();
  316. Collection<Order> delvCpnList = new ArrayList<Order>();
  317. Collection<Order> delvFeeCdList = new ArrayList<Order>();
  318. int rmPntAmt = 0;
  319. int rmGfcdAmt = 0;
  320. // 1. 로그인체크 후 custNo 설정
  321. if (TsfSession.isLogin()) {
  322. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  323. } else {
  324. order.setJsessionId(TsfSession.getSessionId());
  325. }
  326. // 2. 로그인체크 후 정보 설정 (할인구간정보조회)
  327. if (TsfSession.isLogin()) {
  328. // 2.1 배송단위별 상품 목록 조회 (장바구니)
  329. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  330. // 2.2 상품금액, 선포인트, 다다익선할인금액
  331. goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  332. // 2.3 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
  333. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  334. // 2.4 상품쿠폰, 장바구니쿠폰 목록 조회
  335. GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
  336. goodsCpnList = (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
  337. cartCpnList = (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
  338. // 2.5 상품쿠폰 적용된 상품 목록(상품기준)
  339. goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
  340. // 2.6 장바구니쿠폰(장바구니기준 상품목록)
  341. cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
  342. // 2.7 배송비쿠폰목록 조회
  343. delvCpnList = coreOrderService.getDelvCpnList(order);
  344. delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
  345. // 2.8 배송비쿠폰(배송업체기준)
  346. delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
  347. // 2.9 고객 보유 포인트 정보 조회
  348. rmPntAmt = coreOrderService.getCustPointInfo(order);
  349. // 2.10 고객 보유 상품권 정보 조회
  350. rmGfcdAmt = coreOrderService.getGiftcardInfo(order);
  351. }
  352. ModelAndView mav = new ModelAndView();
  353. mav.addObject("goodsApplyCpnList" , goodsApplyCpnList); // 상품적용쿠폰
  354. mav.addObject("cartCpnList" , cartCpnList); // 장바구니쿠폰목록
  355. mav.addObject("delvCpnList" , delvCpnList); // 배송비쿠폰목록
  356. mav.addObject("orgGoodsSumAmt" , goodsDcAmtMap.get("orgGoodsSumAmt")); // 상품금액합계
  357. mav.addObject("cpn1DcSumAmt" , goodsDcAmtMap.get("cpn1DcSumAmt")); // 즉시할인금액합계
  358. mav.addObject("tmtbDcSumAmt" , goodsDcAmtMap.get("tmtbDcSumAmt")); // 다다익선할인금액합계
  359. mav.addObject("prePntDcAmt" , goodsDcAmtMap.get("prePntDcAmt")); // 선포인트사용가능금액
  360. mav.addObject("rmPntAmt" , rmPntAmt); // 고객포인트정보
  361. mav.addObject("rmGfcdAmt" , rmGfcdAmt); // 고객상품권정보
  362. mav.addObject("savePntSumAmt" , goodsDcAmtMap.get("savePntSumAmt")); // 적립예정포인트합계
  363. mav.addObject("order" , order); // 파라미터
  364. mav.setViewName(super.getDeviceViewName("order/OrderDcAmtInfo"));
  365. return mav;
  366. }
  367. /**
  368. * 결제정보조회
  369. *
  370. * @param
  371. * @return
  372. * @author jsh77b
  373. * @since 2021. 02. 17
  374. */
  375. @ResponseBody
  376. @PostMapping("/paymentInfo")
  377. public ModelAndView paymentInfo(@RequestBody Order order) {
  378. // 1. 로그인체크 후 custNo 설정
  379. if (TsfSession.isLogin()) {
  380. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  381. } else {
  382. order.setJsessionId(TsfSession.getSessionId());
  383. }
  384. // 2. 로그인체크 후 정보 설정
  385. if (TsfSession.isLogin()) {
  386. }
  387. ModelAndView mav = new ModelAndView();
  388. mav.addObject("order" , order); // 파라미터
  389. mav.setViewName(super.getDeviceViewName("order/OrderPaymentInfo"));
  390. return mav;
  391. }
  392. /**
  393. * 주문 데이터 생성 (주문접수)
  394. *
  395. * @param
  396. * @return
  397. * @author xodud1202
  398. * @since 2021. 03. 04
  399. */
  400. @PostMapping("/create/preOrder")
  401. @ResponseBody
  402. public ModelAndView createOrder(@RequestBody Order order) {
  403. ModelAndView mav = new ModelAndView();
  404. // TODO 주문 시작 데이터 처리
  405. // 2021.03.09 주문데이타 등록
  406. // 1. 로그인체크 후 custNo 설정
  407. if (TsfSession.isLogin()) {
  408. order.setCustNo(TsfSession.getInfo().getCustNo());
  409. } else {
  410. order.setCustNo(0);
  411. }
  412. order.setFrontGb(TsfSession.getFrontGb());
  413. // TODO
  414. // 2. 주문정보유효성체크
  415. //orderService.orderValidationCheck(order);
  416. // 3. 주문기본정보등록(주문접수)
  417. //coreOrderService.createPreOrder(order);
  418. log.info("order.getPgGb() ::: {}", order.getPgGb());
  419. log.info("order.getPayMeans() ::: {}", order.getPayMeans());
  420. log.info("order.getOrdNo() ::: {}", order.getOrdNo());
  421. log.info("order.getGoodsNm() ::: {}", order.getGoodsNm());
  422. log.info("order.getOrdGoodsQty() ::: {}", order.getOrdGoodsQty());
  423. log.info("order.getPayAmt() ::: {}", order.getPayAmt());
  424. log.info("order.getOrdNm() ::: {}", order.getOrdNm());
  425. log.info("order.getOrdPhnno() ::: {}", order.getOrdPhnno());
  426. log.info("order.getCustNo() ::: {}", order.getCustNo());
  427. log.info("order.getFreegiftValArr() ::: {}", order.getFreegiftValArr());
  428. log.info("order.getFreegiftValArr() ::: {}", order.getFreegiftValArr());
  429. log.info("order.getFreegiftSqArr() ::: {}", order.getFreegiftSqArr());
  430. //for(int i = 0 ; i < order.getFreegiftGoodsArr().length ; i++) {
  431. // log.info("order.getFreegiftGoodsArr() ::: {}", order.getFreegiftGoodsArr()[i]);
  432. //}
  433. // 필수 데이터
  434. // pgGb = 결제타입, payMeans = 결제수단, ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
  435. // 선택 데이터
  436. // ordEmail = 주문자메일, ordTelno = 전화번호
  437. /*
  438. === 카카오페이 & 네이버페이 파라메터 ===
  439. ordNo = 주문번호
  440. custNo = 고객번호
  441. goodsNm = 상품명
  442. ordGoodsQty = 주문상품수량
  443. payAmt = 결제금액
  444. ======================
  445. */
  446. Payment payment = orderService.setPgDataInfo(order);
  447. mav.addObject("payment" , payment);
  448. mav.addObject("orderDetailList" , order.getOrderDetailList());
  449. mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
  450. return mav;
  451. }
  452. /**
  453. * 결제 PG 요청 완료
  454. *
  455. * @param
  456. * @return
  457. * @author xodud1202
  458. * @since 2021. 03. 05
  459. */
  460. @ResponseBody
  461. @RequestMapping(value = "/pay/result/response")
  462. public ModelAndView payResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
  463. ModelAndView mav = new ModelAndView();
  464. Order order = new Order();
  465. // 1. 로그인체크 후 custNo 설정
  466. if (TsfSession.isLogin()) {
  467. param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  468. order.setCustNo(TsfSession.getInfo().getCustNo());
  469. } else {
  470. param.setCustNo(0);
  471. order.setCustNo(0);
  472. }
  473. param.setUpdNo(param.getCustNo());
  474. // 2. 결재정보등록(TB_PAYMENT)
  475. param = orderService.orderPgPayResult(param, request, response);
  476. order.setOrdNo(param.getOrdNo());
  477. order.setSellGb("10");
  478. order.setPgGb(param.getPgGb());
  479. order.setPayMeans(param.getPayMeans());
  480. // TODO 3. 주문정보 업데이트
  481. coreOrderService.updateOrderInfo(order);
  482. // 2021.03.16 주문완료화면이동처리
  483. //mav.addObject("payment", param);
  484. //mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
  485. mav.setViewName("redirect:/order/complete?ordNo=" + order.getOrdNo());
  486. return mav;
  487. }
  488. /**
  489. * 주문완료페이지
  490. *
  491. * @param
  492. * @return
  493. * @author jsh77b
  494. * @since 2021. 03. 16
  495. */
  496. @ResponseBody
  497. @RequestMapping(value = "/complete")
  498. public ModelAndView orderComplete(Order order) {
  499. ModelAndView mav = new ModelAndView();
  500. // 1. 로그인체크 후 custNo 설정
  501. if (TsfSession.isLogin()) {
  502. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  503. } else {
  504. order.setCustNo(0);
  505. }
  506. // 2. 결제완료정보조회
  507. GagaMap resultMap = coreOrderService.getOrderCompleteInfo(order);
  508. // 3. 화면전송변수설정
  509. mav.addObject("orderInfo" , resultMap.get("orderInfo")); // 주문기본정보
  510. mav.addObject("ordSumAmt" , resultMap.get("ordSumAmt")); // 주문금액합계
  511. mav.addObject("dcSumAmt" , resultMap.get("dcSumAmt")); // 할인금액합계
  512. mav.addObject("realOrdSumAmt" , resultMap.get("realOrdSumAmt")); // 결제금액합계
  513. mav.addObject("goodsSumAmt" , resultMap.get("goodsSumAmt")); // 상품금액합계
  514. mav.addObject("delvFeeSumAmt" , resultMap.get("delvFeeSumAmt")); // 배송비합계
  515. mav.addObject("cpn1DcSumAmt" , resultMap.get("cpn1DcSumAmt")); // 즉시할인합계
  516. mav.addObject("tmtbSumAmt" , resultMap.get("tmtbSumAmt")); // 다다익선합계
  517. mav.addObject("cpnDcSumAmt" , resultMap.get("cpnDcSumAmt")); // 쿠폰할인합계
  518. mav.addObject("prePntDcSumAmt" , resultMap.get("prePntDcSumAmt")); // 선포인트할인합계
  519. mav.addObject("pntDcSumAmt" , resultMap.get("pntDcSumAmt")); // 포인트사용합계
  520. mav.addObject("gfcdUseSumAmt" , resultMap.get("gfcdUseSumAmt")); // 상품권사용합계
  521. mav.addObject("savePntSumAmt" , resultMap.get("savePntSumAmt")); // 적립예정포인트합계
  522. mav.addObject("mileageDcAmt" , resultMap.get("mileageDcAmt")); // 마일리지사용합계
  523. mav.addObject("allianceDcAmt" , resultMap.get("allianceDcAmt")); // 제휴할인합계
  524. // TODO 주문정보조회
  525. mav.setViewName(super.getDeviceViewName("order/OrderComplete"));
  526. return mav;
  527. }
  528. /**
  529. * 총알배송 가능 지역 체크
  530. *
  531. * @param
  532. * @return
  533. * @author jsh77b
  534. * @since 2021. 02. 08
  535. */
  536. @ResponseBody
  537. @PostMapping(value = "/getDailyDeliveryCheck")
  538. public int getDailyDeliveryCheck(Order order) {
  539. // 1. 총알배송가능 지역, 총알배송 가능 시간 체크
  540. int rtn = coreOrderService.getDailyDeliveryCheck(order);
  541. return rtn;
  542. }
  543. /**
  544. * 배송지정보변경팝업
  545. *
  546. * @param
  547. * @return
  548. * @author jsh77b
  549. * @since 2021. 02. 17
  550. */
  551. @ResponseBody
  552. @PostMapping(value = "/delvAddrChangePop")
  553. public ModelAndView delvAddrChangePop(Order order) {
  554. ModelAndView mav = new ModelAndView();
  555. // 1. 로그인체크 후 custNo 설정
  556. if (TsfSession.isLogin()) {
  557. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  558. } else {
  559. order.setCustNo(0);
  560. }
  561. // 1.0 주문고객 배송지정보조회
  562. Collection<Order> deliveryAddrList = coreOrderService.getDeliveryAddrInfo(order);
  563. mav.addObject("deliveryAddrList", deliveryAddrList); // 배송지정보
  564. mav.setViewName(super.getDeviceViewName("order/OrderDelvAddrChangePop"));
  565. return mav;
  566. }
  567. /**
  568. * 배송지정보수정팝업
  569. *
  570. * @param
  571. * @return
  572. * @author jsh77b
  573. * @since 2021. 02. 17
  574. */
  575. @ResponseBody
  576. @RequestMapping(value = "/delvAddrModifyPop")
  577. public ModelAndView delvAddrModifyPop(@RequestBody Order order) {
  578. ModelAndView mav = new ModelAndView();
  579. Order deliveryAddrInfo = new Order();
  580. // 2. 로그인체크 후 고객정보 설정
  581. if (TsfSession.isLogin()) {
  582. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  583. // 2.1 주문고객 배송지정보조회
  584. Collection<Order> deliveryAddrList = coreOrderService.getDeliveryAddrInfo(order);
  585. for (Order deliveryAddr : deliveryAddrList) {
  586. // 회원 배송지 번호가 존재하면 실행
  587. if (order.getCustDelvAddrSq() > 0) {
  588. if (order.getCustDelvAddrSq() == deliveryAddr.getCustDelvAddrSq()) {
  589. deliveryAddrInfo = deliveryAddr;
  590. }
  591. }
  592. }
  593. }
  594. mav.addObject("deliveryAddrInfo", deliveryAddrInfo); // 배송지정보
  595. mav.setViewName(super.getDeviceViewName("order/OrderDelvAddrModifyPop"));
  596. return mav;
  597. }
  598. /**
  599. * 배송지정보수정
  600. *
  601. * @param
  602. * @return
  603. * @author jsh77b
  604. * @since 2021. 02. 17
  605. */
  606. @ResponseBody
  607. @PostMapping(value = "/updateCustDeliveryAddr")
  608. public String updateDeliveryAddr(@RequestBody Order order) {
  609. // 1. 로그인체크 후 custNo 설정
  610. if (TsfSession.isLogin()) {
  611. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  612. } else {
  613. order.setCustNo(0);
  614. }
  615. coreOrderService.updateCustDeliveryAddr(order);
  616. return message.getMessage("SUCC_0001");
  617. }
  618. /**
  619. * 배송지정보추가팝업
  620. *
  621. * @param
  622. * @return
  623. * @author jsh77b
  624. * @since 2021. 02. 17
  625. */
  626. @ResponseBody
  627. @RequestMapping(value = "/delvAddrAddPop")
  628. public ModelAndView delvAddrAddPop(Order order) {
  629. ModelAndView mav = new ModelAndView();
  630. mav.setViewName(super.getDeviceViewName("order/OrderDelvAddrAddPop"));
  631. return mav;
  632. }
  633. /**
  634. * 배송지정보추가
  635. *
  636. * @param
  637. * @return
  638. * @author jsh77b
  639. * @since 2021. 02. 17
  640. */
  641. @ResponseBody
  642. @PostMapping(value = "/createCustDeliveryAddr")
  643. public String createDeliveryAddr(@RequestBody Order order) {
  644. // 1. 로그인체크 후 custNo 설정
  645. if (TsfSession.isLogin()) {
  646. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  647. } else {
  648. order.setCustNo(0);
  649. }
  650. coreOrderService.createCustDeliveryAddr(order);
  651. return message.getMessage("SUCC_0001");
  652. }
  653. /**
  654. * 배송지메모변경팝업
  655. *
  656. * @param
  657. * @return
  658. * @author jsh77b
  659. * @since 2021. 02. 17
  660. */
  661. @ResponseBody
  662. @RequestMapping(value = "/delvMemoChangePop")
  663. public ModelAndView delvMemoChangePop(Order order) {
  664. ModelAndView mav = new ModelAndView();
  665. mav.setViewName(super.getDeviceViewName("order/OrderDelvMemoChangePop"));
  666. return mav;
  667. }
  668. /**
  669. * 사은품안내팝업
  670. *
  671. * @param
  672. * @return
  673. * @author jsh77b
  674. * @since 2021. 02. 17
  675. */
  676. @ResponseBody
  677. @RequestMapping(value = "/freegiftInfoPop")
  678. public ModelAndView freegiftInfoPop(Order order) {
  679. ModelAndView mav = new ModelAndView();
  680. mav.setViewName(super.getDeviceViewName("order/OrderFreegiftInfoPop"));
  681. return mav;
  682. }
  683. /**
  684. * 쿠폰변경팝업
  685. *
  686. * @param
  687. * @return
  688. * @author jsh77b
  689. * @since 2021. 02. 17
  690. */
  691. @SuppressWarnings({ "unused", "unchecked" })
  692. @ResponseBody
  693. @PostMapping(value = "/couponApplyPop")
  694. public ModelAndView couponApplyPop(@RequestBody Order order) {
  695. ModelAndView mav = new ModelAndView();
  696. GagaMap goodsDcAmtMap = new GagaMap();
  697. Collection<Order> goodsApplyCpnList = new ArrayList<Order>();
  698. Collection<Order> goodsCpnList = new ArrayList<Order>();
  699. Collection<Order> cartCpnList = new ArrayList<Order>();
  700. // 1. 로그인체크 후 custNo 설정
  701. if (TsfSession.isLogin()) {
  702. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  703. } else {
  704. order.setJsessionId(TsfSession.getSessionId());
  705. }
  706. // 2. 로그인체크 후 정보 설정 (할인구간정보조회)
  707. if (TsfSession.isLogin()) {
  708. // 2.1 배송단위별 상품 목록 조회 (장바구니)
  709. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  710. // 2.2 상품금액, 선포인트, 다다익선할인금액
  711. goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  712. // 2.3 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
  713. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  714. // 2.4 상품쿠폰, 장바구니쿠폰 목록 조회
  715. GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
  716. goodsCpnList = (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
  717. cartCpnList = (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
  718. // 2.5 상품쿠폰 적용된 상품 목록(상품기준)
  719. goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
  720. // 2.6 장바구니쿠폰(장바구니기준 상품목록)
  721. cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
  722. }
  723. mav.addObject("goodsApplyCpnList" , goodsApplyCpnList); // 상품적용쿠폰
  724. mav.addObject("cartCpnList" , cartCpnList); // 장바구니쿠폰목록
  725. mav.addObject("order" , order); // 파라미터
  726. mav.setViewName(super.getDeviceViewName("order/OrderCouponApplyPop"));
  727. return mav;
  728. }
  729. /**
  730. * 카카오페이 결제 요청 처리
  731. *
  732. * @param String
  733. * @return ModelAndView
  734. * @author card007
  735. * @since 2021. 03. 04
  736. */
  737. @RequestMapping(value = "/kakao/payment/request")
  738. @ResponseBody
  739. public ModelAndView kakaoPaymentRequest(@RequestParam(value = "pg_token", required = false) String pgToken) {
  740. ModelAndView mav = new ModelAndView();
  741. mav.addObject("pgToken", pgToken);
  742. mav.setViewName(super.getDeviceViewName("/pg/KakaoPaymentRequest"));
  743. return mav;
  744. }
  745. /**
  746. * 네이버페이 결제 요청 처리
  747. *
  748. * @param String
  749. * @return ModelAndView
  750. * @author card007
  751. * @since 2021. 03. 04
  752. */
  753. @RequestMapping(value = "/naver/payment/request")
  754. @ResponseBody
  755. public ModelAndView naverPaymentRequest(@RequestParam(value = "paymentId", required = false) String paymentId) {
  756. ModelAndView mav = new ModelAndView();
  757. mav.addObject("paymentId", paymentId);
  758. mav.setViewName(super.getDeviceViewName("/pg/NaverPaymentRequest"));
  759. return mav;
  760. }
  761. /**
  762. * 주문 데이터 생성
  763. *
  764. * @param
  765. * @return
  766. * @author xodud1202
  767. * @since 2021. 03. 04
  768. */
  769. @RequestMapping(value = "/test")
  770. public ModelAndView test() {
  771. ModelAndView mav = new ModelAndView();
  772. mav.setViewName("web/order/test");
  773. return mav;
  774. }
  775. }