TsfOrderController.java 32 KB

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