TsfOrderController.java 31 KB

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