TsfOrderController.java 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309
  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 com.gagaframework.web.parameter.GagaMap;
  16. import com.style24.core.biz.service.TscFreegiftService;
  17. import com.style24.core.biz.service.TscOrderService;
  18. import com.style24.core.support.env.TscConstants;
  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, @RequestParam(value = "sEncData", required = false) String sEncData
  63. , @RequestParam(value = "authMethod", required = false) String authMethod) {
  64. ModelAndView mav = new ModelAndView();
  65. // 비회원 주문시 로직 정리
  66. // @ WEB 인 경우에는 고객정보 입력 화면 후 주문서 이동 후 본인인중
  67. // @ WEB 의 경우에는 입력한 고객정보와 인증받은 고객정보가 다른경우 고객정보 업데이트
  68. // @ MOBILE 인 경우에는 본인인증 후 주문서 이동
  69. // 1. 카트시퀀스가 정보가 없을때 처리 장바구니로 이동
  70. if (order.getCartSqArr() == null) {
  71. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  72. return mav;
  73. }
  74. // 2. 선물하기주문 체크 후 비 로그인 상태면 장바구니로 강제 이동
  75. if (coreOrderService.getGiftOrderCheck(order) > 0) {
  76. if (TsfSession.isLogin() == false) {
  77. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  78. return mav;
  79. }
  80. }
  81. mav.addObject("order" , order); // 주문정보
  82. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  83. mav.addObject("sEncData" , sEncData);
  84. mav.addObject("authMethod" , authMethod);
  85. mav.setViewName(super.getDeviceViewName("order/OrderNoMember")); // 비회원주문서화면
  86. return mav;
  87. }
  88. /**
  89. * 비회원 - 개명본인인증, 휴대폰 본인인증
  90. *
  91. * @return GagaMap - 결과
  92. * @param customer - 본인인증 값
  93. * @author jsh77b
  94. * @since 2021. 03. 30
  95. */
  96. @PostMapping("/customer/auth")
  97. @ResponseBody
  98. public GagaMap updateCustomerAuth(@RequestBody Customer customer) {
  99. GagaMap authInfo = niceCertify.getCertifyCellPhoneResultInfo(customer);
  100. return authInfo;
  101. }
  102. /**
  103. * 주문페이지
  104. *
  105. * @param
  106. * @return
  107. * @author jsh77b
  108. * @since 2021. 02. 02
  109. */
  110. @RequestMapping(value = "/form")
  111. public ModelAndView orderForm(HttpServletRequest request, Order order) {
  112. ModelAndView mav = new ModelAndView();
  113. // 1.1 referer 체크 (order/noMember)
  114. String refererStr = "";
  115. if (request.getHeader("referer") != null) {
  116. refererStr = request.getHeader("referer").toString();
  117. if (refererStr.indexOf("/order/noMember") < 0) {
  118. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  119. return mav;
  120. }
  121. } else {
  122. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  123. return mav;
  124. }
  125. // 1.2 카트시퀀스가 정보가 없을때 처리 장바구니로 이동
  126. if (order.getCartSqArr() == null) {
  127. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  128. return mav;
  129. }
  130. // 선물받기여부
  131. String giftPackYn = "N";
  132. // 1.3. 선물하기주문 체크 후 비 로그인 상태면 장바구니로 강제 이동
  133. if (coreOrderService.getGiftOrderCheck(order) > 0) {
  134. // 비 로그인 상태면 장바구니로 강제 이동
  135. if (TsfSession.isLogin() == false) {
  136. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  137. return mav;
  138. }
  139. // 선물받기여부
  140. giftPackYn = "Y";
  141. // 선물하기일때 PC 로 접근하면
  142. if ("P".equals(TsfSession.getFrontGb())) {
  143. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  144. return mav;
  145. }
  146. }
  147. // 1.4 로그인체크 후 custNo 설정
  148. if (TsfSession.isLogin()) {
  149. order.setCustNo(TsfSession.getInfo().getCustNo());
  150. } else {
  151. order.setJsessionId(TsfSession.getSessionId());
  152. order.setCustNo(0);
  153. }
  154. // 2. 로그인정보 체크 후 비회원 고객정보 설정
  155. if (TsfSession.isLogin()) {
  156. order.setCustNm("");
  157. order.setCellPhnno("");
  158. order.setEmail("");
  159. order.setDelvAddrNm("없음");
  160. order.setRecipNm("배송지명없음");
  161. order.setRecipZipcode("00000");
  162. order.setRecipBaseAddr("기본주소없음");
  163. order.setRecipDtlAddr("상제주소없음");
  164. } else {
  165. // 2021.04.08 휴대폰번호 하이픈 처리 (비회원인경우)
  166. order.setHypenCellPhone();
  167. }
  168. // 2.1 총알배송여부가 null 이면 Y로 설정
  169. if (order.getShotDelvUseYn() == null || "".equals(order.getShotDelvUseYn())) {
  170. order.setShotDelvUseYn("Y");
  171. }
  172. // 2.2 선물받기 Y 이면 총알배송 불가
  173. if ("Y".equals(giftPackYn)) {
  174. order.setShotDelvUseYn("N");
  175. }
  176. order.setShotDelvYn(order.getShotDelvUseYn());
  177. order.setGiftPackYn(giftPackYn);
  178. // 3. 장바구니상품시퀀스 상품목록조회
  179. // 3.1 즉시할인, 다다익선 할인금액 정보 적용 상품 정보
  180. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  181. // 3.2 상품조회목록이 없으면 장바구니이동
  182. if (tmtbGoodsApplyList.size() < 1) {
  183. mav.setViewName("redirect:/cart/list/form"); // 장바구니화면이동
  184. return mav;
  185. }
  186. // 3.3 배송정보조회(장바구니상품목록)
  187. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  188. // 3.4 할인정보조회(상품금액, 선포인트, 다다익선할인금액)
  189. GagaMap goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  190. // 4. 화면설정
  191. // 4.1 배송정보설정
  192. mav.addObject("cartGoodsList" , tmtbGoodsApplyList); // 장바구니상품목록(즉시할인, 다다익선적용)
  193. mav.addObject("delvFeeCdCnt" , delvOrderMap.get("delvFeeCdCnt")); // 배송정책단위건수
  194. mav.addObject("shotCnt" , delvOrderMap.get("shotCnt")); // 자사총알배송상품건수
  195. mav.addObject("wmsCnt" , delvOrderMap.get("wmsCnt")); // 자사일반상품건수
  196. mav.addObject("shotWmsCnt" , delvOrderMap.get("shotWmsCnt")); // 자사총알,일반상품건수
  197. mav.addObject("resCnt" , delvOrderMap.get("resCnt")); // 자사예약상품건수
  198. mav.addObject("delvCnt" , delvOrderMap.get("delvCnt")); // 입점업체상품건수
  199. mav.addObject("goodsTotCnt" , delvOrderMap.get("goodsTotCnt")); // 총상품건수
  200. mav.addObject("delvAllCartList" , delvOrderMap.get("delvAllCartList")); // 전체배송목록
  201. mav.addObject("delvFeeCdList" , delvOrderMap.get("delvFeeCdList")); // 배송단위목록
  202. mav.addObject("sumDelvFee" , delvOrderMap.get("sumDelvFee")); // 배송비합계
  203. // 4.2 할인정보(상품금액, 즉시할인, 다다익선, 선포인트, 적립예정포인트)
  204. mav.addObject("listSumAmt" , goodsDcAmtMap.get("listSumAmt")); // 상품금액합계(정상가)
  205. mav.addObject("orgGoodsSumAmt" , goodsDcAmtMap.get("orgGoodsSumAmt")); // 상품금액합계(판매가)
  206. mav.addObject("goodsDcSumAmt" , goodsDcAmtMap.get("goodsDcSumAmt")); // 상품할인금액(정상가-판매가)
  207. mav.addObject("cpn1DcSumAmt" , goodsDcAmtMap.get("cpn1DcSumAmt")); // 즉시할인금액합계
  208. mav.addObject("tmtbDcSumAmt" , goodsDcAmtMap.get("tmtbDcSumAmt")); // 다다익선할인금액합계
  209. mav.addObject("prePntDcAmt" , goodsDcAmtMap.get("prePntDcAmt")); // 선포인트사용가능금액
  210. mav.addObject("savePntSumAmt" , goodsDcAmtMap.get("savePntSumAmt")); // 적립예정포인트합계
  211. // 4.3 주문정보
  212. mav.addObject("order" , order); // 주문정보(고객정보, 배송지정보, 총알배송사용여부)
  213. // 4.4 해외구매대행, 주문제작
  214. mav.addObject("foreignBuyYn" , delvOrderMap.get("foreignBuyYn")); // 해외구매대행여부
  215. mav.addObject("orderMadeYn" , delvOrderMap.get("orderMadeYn")); // 주문제작여부
  216. // 4.5 로그인여부
  217. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  218. // 4.6 선물받기여부
  219. mav.addObject("giftPackYn" , giftPackYn); // 선물받기여부
  220. // 2021.05.07 jsh77b id만 개발자모드허용
  221. boolean devTempYn = false;
  222. if (TsfSession.isLogin()) {
  223. if ("jsh77b".equals(TsfSession.getInfo().getCustId())) {
  224. devTempYn = true;
  225. }
  226. }
  227. mav.addObject("devTempYn" , devTempYn); // 개발자모드가능여부
  228. mav.setViewName(super.getDeviceViewName("order/OrderForm"));
  229. return mav;
  230. }
  231. /**
  232. * 고객정보조회
  233. *
  234. * @param
  235. * @return
  236. * @author jsh77b
  237. * @since 2021. 02. 17
  238. */
  239. @ResponseBody
  240. @PostMapping("/custemerInfo")
  241. public ModelAndView custemerInfo(@RequestBody Order order) {
  242. Order custemerInfo = new Order();
  243. // 1. 로그인체크 후 custNo 설정
  244. if (TsfSession.isLogin()) {
  245. order.setCustNo(TsfSession.getInfo().getCustNo());
  246. } else {
  247. order.setCustNo(0);
  248. order.setJsessionId(TsfSession.getSessionId());
  249. }
  250. // 2. 로그인체크 후 고객정보 설정
  251. if (TsfSession.isLogin()) {
  252. // 2.1 주문고객 정보조회 (회원정보)
  253. custemerInfo = coreOrderService.getCustemerInfo(order);
  254. } else {
  255. // 2.1 주문고객 정보조회 (비회원주문서화면정보)
  256. custemerInfo.setCustNm(order.getCustNm());
  257. custemerInfo.setCellPhnno(order.getCellPhnno());
  258. custemerInfo.setEmail(order.getEmail());
  259. custemerInfo.setSexGb(order.getSexGb());
  260. custemerInfo.setBirthYmd(order.getBirthYmd());
  261. }
  262. ModelAndView mav = new ModelAndView();
  263. mav.addObject("custemerInfo" , custemerInfo); // 고객정보
  264. mav.addObject("order" , order); // 파라미터
  265. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  266. mav.setViewName(super.getDeviceViewName("order/OrderCustemerInfo"));
  267. return mav;
  268. }
  269. /**
  270. * 배송정보조회
  271. *
  272. * @param
  273. * @return
  274. * @author jsh77b
  275. * @since 2021. 02. 17
  276. */
  277. @ResponseBody
  278. @PostMapping("/deliveryAddrInfo")
  279. public ModelAndView deliveryAddrInfo(@RequestBody Order order) {
  280. Order deliveryAddrInfo = new Order();
  281. // 1. 로그인체크 후 custNo 설정
  282. if (TsfSession.isLogin()) {
  283. order.setCustNo(TsfSession.getInfo().getCustNo());
  284. } else {
  285. order.setCustNo(0);
  286. order.setJsessionId(TsfSession.getSessionId());
  287. }
  288. // 2. 로그인체크 후 고객정보 설정
  289. if (TsfSession.isLogin()) {
  290. // 2.1 주문고객 배송지정보조회
  291. Collection<Order> deliveryAddrList = coreOrderService.getDeliveryAddrInfo(order);
  292. int index = 0;
  293. for (Order deliveryAddr : deliveryAddrList) {
  294. // 회원 배송지 번호가 존재하면 실행
  295. if (order.getCustDelvAddrSq() > 0) {
  296. if (order.getCustDelvAddrSq() == deliveryAddr.getCustDelvAddrSq()) {
  297. deliveryAddrInfo = deliveryAddr;
  298. }
  299. }
  300. // 회원 배송지 번호가 존재하지 않으면 기본배송지 설정
  301. else {
  302. if (index == 0) {
  303. deliveryAddrInfo = deliveryAddr;
  304. // 배송지목록에 정보가 없으면 아래의 문구 노출
  305. if (deliveryAddrInfo.getRecipZipcode() == null || "".equals(deliveryAddrInfo.getRecipZipcode())) {
  306. deliveryAddrInfo.setDelvAddrNm(deliveryAddrInfo.getCustNm());
  307. // 회원 배송지명이 없으면 설정
  308. if (deliveryAddrInfo.getRecipNm() == null || "".equals(deliveryAddrInfo.getRecipNm())) {
  309. deliveryAddrInfo.setRecipNm(deliveryAddrInfo.getCustNm());
  310. }
  311. deliveryAddrInfo.setRecipZipcode("00000");
  312. deliveryAddrInfo.setRecipBaseAddr("기본주소정보없음");
  313. deliveryAddrInfo.setRecipDtlAddr("상세주소정보없음");
  314. deliveryAddrInfo.setDelvMemo("직접 받고 부재 시 문 앞");
  315. deliveryAddrInfo.setRecipNm(deliveryAddrInfo.getCustNm());
  316. }
  317. }
  318. }
  319. index++;
  320. }
  321. } else {
  322. // 2.2 비회원 주문고객 정보조회
  323. if (order.getRecipNm() == null || "".equals(order.getRecipNm())) {
  324. deliveryAddrInfo.setRecipNm(order.getCustNm());
  325. } else {
  326. deliveryAddrInfo.setRecipNm(order.getRecipNm());
  327. }
  328. if (order.getRecipPhnno() == null || "".equals(order.getRecipPhnno())) {
  329. deliveryAddrInfo.setRecipPhnno(order.getCellPhnno());
  330. } else {
  331. deliveryAddrInfo.setRecipPhnno(order.getRecipPhnno());
  332. }
  333. deliveryAddrInfo.setRecipZipcode(order.getRecipZipcode());
  334. deliveryAddrInfo.setRecipBaseAddr(order.getRecipBaseAddr());
  335. deliveryAddrInfo.setRecipDtlAddr(order.getRecipDtlAddr());
  336. if (order.getDelvMemo() == null || "".equals(order.getDelvMemo())) {
  337. deliveryAddrInfo.setDelvMemo("직접받고 부재시 문 앞");
  338. } else {
  339. deliveryAddrInfo.setDelvMemo(order.getDelvMemo());
  340. }
  341. }
  342. ModelAndView mav = new ModelAndView();
  343. mav.addObject("deliveryAddrInfo" , deliveryAddrInfo); // 배송지정보
  344. mav.addObject("order" , order); // 파라미터
  345. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  346. // 2021.04.29 해외구매대행, 주문제작
  347. mav.addObject("foreignBuyYn" , order.getForeignBuyYn()); // 해외구매대행여부
  348. mav.addObject("orderMadeYn" , order.getOrderMadeYn()); // 주문제작여부
  349. mav.setViewName(super.getDeviceViewName("order/OrderDeliveryAddrInfo"));
  350. return mav;
  351. }
  352. /**
  353. * 해외통관번호등록화면
  354. *
  355. * @param
  356. * @return
  357. * @author jsh77b
  358. * @since 2021. 04. 01
  359. */
  360. @ResponseBody
  361. @PostMapping("/entryInfo")
  362. public ModelAndView entryInfo(@RequestBody Order order) {
  363. ModelAndView mav = new ModelAndView();
  364. mav.addObject("order" , order); // 파라미터
  365. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  366. mav.setViewName(super.getDeviceViewName("order/OrderEntryInfo"));
  367. return mav;
  368. }
  369. /**
  370. * 주문제작상품동의화면
  371. *
  372. * @param
  373. * @return
  374. * @author jsh77b
  375. * @since 2021. 04. 01
  376. */
  377. @ResponseBody
  378. @PostMapping("/madeInfo")
  379. public ModelAndView madeInfo(@RequestBody Order order) {
  380. ModelAndView mav = new ModelAndView();
  381. mav.addObject("order" , order); // 파라미터
  382. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  383. mav.setViewName(super.getDeviceViewName("order/OrderMadeInfo"));
  384. return mav;
  385. }
  386. /**
  387. * 선물받기여부정보로드
  388. *
  389. * @param
  390. * @return
  391. * @author jsh77b
  392. * @since 2021. 04. 01
  393. */
  394. @ResponseBody
  395. @PostMapping("/orderGiftInfo")
  396. public ModelAndView orderGiftInfo(@RequestBody Order order) {
  397. ModelAndView mav = new ModelAndView();
  398. mav.addObject("order" , order); // 파라미터
  399. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  400. mav.setViewName(super.getDeviceViewName("order/OrderGiftInfo"));
  401. return mav;
  402. }
  403. /**
  404. * 주문내역정보조회
  405. *
  406. * @param
  407. * @return
  408. * @author jsh77b
  409. * @since 2021. 02. 17
  410. */
  411. @ResponseBody
  412. @PostMapping("/orderListInfo")
  413. public ModelAndView orderListInfo(@RequestBody Order order) {
  414. // 1. 로그인체크 후 custNo 설정
  415. if (TsfSession.isLogin()) {
  416. order.setCustNo(TsfSession.getInfo().getCustNo());
  417. } else {
  418. order.setCustNo(0);
  419. order.setJsessionId(TsfSession.getSessionId());
  420. }
  421. // 2. 즉시할인, 다다익선 할인금액 정보 적용 상품 정보 (2021.05.07 화면에서전송)
  422. //Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  423. Collection<Order> tmtbGoodsApplyList = order.getCartGoodsList();
  424. // 3. 배송정보조회(장바구니상품목록)
  425. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  426. // 4. 할인정보조회(상품금액, 선포인트, 다다익선할인금액)
  427. GagaMap goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  428. ModelAndView mav = new ModelAndView();
  429. mav.addObject("goodsTotCnt" , delvOrderMap.get("goodsTotCnt")); // 총상품건수
  430. mav.addObject("delvAllCartList" , delvOrderMap.get("delvAllCartList")); // 전체배송목록
  431. mav.addObject("delvFeeCdCnt" , delvOrderMap.get("delvFeeCdCnt")); // 자사총알배송상품건수
  432. mav.addObject("shotCnt" , delvOrderMap.get("shotCnt")); // 자사총알배송상품건수
  433. mav.addObject("wmsCnt" , delvOrderMap.get("wmsCnt")); // 자사일반상품건수
  434. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  435. mav.addObject("IMG_PATH" , env.getProperty("upload.goods.view")); // 이미지경로
  436. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  437. // 4.2 할인정보(상품금액, 즉시할인, 다다익선, 선포인트, 적립예정포인트)
  438. mav.addObject("orgGoodsSumAmt" , goodsDcAmtMap.get("orgGoodsSumAmt")); // 상품금액합계
  439. mav.addObject("goodsDcSumAmt" , goodsDcAmtMap.get("goodsDcSumAmt")); // 상품할인금액(정상가-판매가)
  440. mav.addObject("cpn1DcSumAmt" , goodsDcAmtMap.get("cpn1DcSumAmt")); // 즉시할인금액합계
  441. mav.addObject("tmtbDcSumAmt" , goodsDcAmtMap.get("tmtbDcSumAmt")); // 다다익선할인금액합계
  442. mav.addObject("prePntDcAmt" , goodsDcAmtMap.get("prePntDcAmt")); // 선포인트사용가능금액
  443. mav.addObject("savePntSumAmt" , goodsDcAmtMap.get("savePntSumAmt")); // 적립예정포인트합계
  444. mav.addObject("order" , order); // 파라미터
  445. mav.setViewName(super.getDeviceViewName("order/OrderListInfo"));
  446. return mav;
  447. }
  448. /**
  449. * 사은품정보조회
  450. *
  451. * @param
  452. * @return
  453. * @author jsh77b
  454. * @since 2021. 02. 17
  455. */
  456. @ResponseBody
  457. @PostMapping("/freegiftInfo")
  458. public ModelAndView freegiftInfo(@RequestBody Order order) {
  459. GagaMap resultMap = new GagaMap();
  460. // 1. 로그인체크 후 custNo 설정
  461. if (TsfSession.isLogin()) {
  462. order.setCustNo(TsfSession.getInfo().getCustNo());
  463. } else {
  464. order.setCustNo(0);
  465. order.setJsessionId(TsfSession.getSessionId());
  466. }
  467. // 2. 로그인체크 후 정보 설정 로그인후 사은품정보조회
  468. if (TsfSession.isLogin()) {
  469. resultMap = coreFreegiftService.getOrderFreegift(order);
  470. }
  471. ModelAndView mav = new ModelAndView();
  472. mav.addObject("freegiftApplyAmtList" , resultMap.get("freegiftApplyAmtList")); // 사은품장바구니목록
  473. mav.addObject("freegiftGoodsList" , resultMap.get("freegiftGoodsList")); // 사은품상품정보 목록
  474. mav.addObject("freegiftList" , resultMap.get("freegiftList")); // 사은품정보 목록
  475. mav.addObject("order" , order); // 파라미터
  476. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  477. mav.setViewName(super.getDeviceViewName("order/OrderFreegiftInfo"));
  478. return mav;
  479. }
  480. /**
  481. * 할인정보조회
  482. *
  483. * @param
  484. * @return
  485. * @author jsh77b
  486. * @since 2021. 02. 17
  487. */
  488. @SuppressWarnings("unchecked")
  489. @ResponseBody
  490. @PostMapping("/dcAmtInfo")
  491. public ModelAndView dcAmtInfo(@RequestBody Order order) {
  492. GagaMap goodsDcAmtMap = new GagaMap();
  493. Collection<Order> goodsApplyCpnList = new ArrayList<Order>();
  494. Collection<Order> goodsCpnList = new ArrayList<Order>();
  495. Collection<Order> cartCpnList = new ArrayList<Order>();
  496. Collection<Order> delvCpnList = new ArrayList<Order>();
  497. Collection<Order> delvFeeCdList = new ArrayList<Order>();
  498. int rmPntAmt = 0;
  499. int rmGfcdAmt = 0;
  500. // 1. 로그인체크 후 custNo 설정
  501. if (TsfSession.isLogin()) {
  502. order.setCustNo(TsfSession.getInfo().getCustNo());
  503. } else {
  504. order.setCustNo(0);
  505. order.setJsessionId(TsfSession.getSessionId());
  506. }
  507. // 2. 로그인체크 후 정보 설정 (할인구간정보조회)
  508. if (TsfSession.isLogin()) {
  509. // 2.1 배송단위별 상품 목록 조회 (장바구니) (2021.05.07 화면에서전송)
  510. //Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  511. Collection<Order> tmtbGoodsApplyList = order.getCartGoodsList();
  512. // 2.2 상품금액, 선포인트, 다다익선할인금액
  513. goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  514. // 2.3 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
  515. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  516. // 2.4 상품쿠폰, 장바구니쿠폰 목록 조회
  517. GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
  518. goodsCpnList = (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
  519. cartCpnList = (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
  520. // 2.5 상품쿠폰 적용된 상품 목록(상품기준)
  521. goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
  522. // 2.6 장바구니쿠폰(장바구니기준 상품목록)
  523. cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
  524. // 2.7 배송비쿠폰목록 조회
  525. delvCpnList = coreOrderService.getDelvCpnList(order);
  526. delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
  527. // 2.8 배송비쿠폰(배송업체기준)
  528. delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
  529. // 2.9 고객 보유 포인트 정보 조회
  530. rmPntAmt = coreOrderService.getCustPointInfo(order);
  531. // 2.10 고객 보유 상품권 정보 조회
  532. rmGfcdAmt = coreOrderService.getGiftcardInfo(order);
  533. }
  534. // 2021.04.29 포인트사용정보조회
  535. Order pointUseEnvset = coreOrderService.getPointUseEnvset();
  536. // 주문시포인트설정정보조회
  537. ModelAndView mav = new ModelAndView();
  538. mav.addObject("goodsApplyCpnList" , goodsApplyCpnList); // 상품적용쿠폰
  539. mav.addObject("cartCpnList" , cartCpnList); // 장바구니쿠폰목록
  540. mav.addObject("delvCpnList" , delvCpnList); // 배송비쿠폰목록
  541. mav.addObject("orgGoodsSumAmt" , goodsDcAmtMap.getInt("orgGoodsSumAmt")); // 상품금액합계
  542. mav.addObject("cpn1DcSumAmt" , goodsDcAmtMap.getInt("cpn1DcSumAmt")); // 즉시할인금액합계
  543. mav.addObject("tmtbDcSumAmt" , goodsDcAmtMap.getInt("tmtbDcSumAmt")); // 다다익선할인금액합계
  544. mav.addObject("prePntDcAmt" , goodsDcAmtMap.getInt("prePntDcAmt")); // 선포인트사용가능금액
  545. mav.addObject("rmPntAmt" , rmPntAmt); // 고객포인트정보
  546. mav.addObject("rmGfcdAmt" , rmGfcdAmt); // 고객상품권정보
  547. mav.addObject("savePntSumAmt" , goodsDcAmtMap.get("savePntSumAmt")); // 적립예정포인트합계
  548. mav.addObject("order" , order); // 파라미터
  549. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  550. mav.addObject("pointUseEnvset" , pointUseEnvset); // 포인트사용정보조회
  551. mav.setViewName(super.getDeviceViewName("order/OrderDcAmtInfo"));
  552. return mav;
  553. }
  554. /**
  555. * 결제정보조회
  556. *
  557. * @param
  558. * @return
  559. * @author jsh77b
  560. * @since 2021. 02. 17
  561. */
  562. @ResponseBody
  563. @PostMapping("/paymentInfo")
  564. public ModelAndView paymentInfo(@RequestBody Order order) {
  565. // 1. 로그인체크 후 custNo 설정
  566. if (TsfSession.isLogin()) {
  567. order.setCustNo(TsfSession.getInfo().getCustNo());
  568. } else {
  569. order.setCustNo(0);
  570. order.setJsessionId(TsfSession.getSessionId());
  571. }
  572. // 2. TODO 로그인체크 후 정보 설정 자주사용하는 결제정보조회
  573. if (TsfSession.isLogin()) {
  574. }
  575. ModelAndView mav = new ModelAndView();
  576. mav.addObject("order" , order); // 파라미터
  577. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  578. mav.setViewName(super.getDeviceViewName("order/OrderPaymentInfo"));
  579. return mav;
  580. }
  581. /**
  582. * 주문 데이터 생성 (주문접수)
  583. *
  584. * @param
  585. * @return
  586. * @author xodud1202
  587. * @since 2021. 03. 04
  588. */
  589. @PostMapping("/create/preOrder")
  590. @ResponseBody
  591. public ModelAndView createOrder(@RequestBody Order order) {
  592. ModelAndView mav = new ModelAndView();
  593. // 2021.03.09 주문데이타 등록
  594. // 1. 로그인체크 후 custNo 설정
  595. if (TsfSession.isLogin()) {
  596. order.setCustNo(TsfSession.getInfo().getCustNo());
  597. } else {
  598. order.setCustNo(0);
  599. }
  600. order.setFrontGb(TsfSession.getFrontGb());
  601. // 2. 주문정보유효성체크
  602. String resultStr = orderService.orderValidationCheck(order);
  603. // 주문정보 유효성체크 실패
  604. if (!"SUCCESS".equals(resultStr)) {
  605. mav.addObject("message", resultStr);
  606. mav.setViewName(super.getDeviceViewName("order/OrderEmpty"));
  607. return mav;
  608. }
  609. // 3. 주문기본정보등록(주문접수)
  610. coreOrderService.createPreOrder(order);
  611. // 4. 2021.05.10 장바구니정보 주문번호 업데이트
  612. orderService.insertCartHstOrdNo(order);
  613. Payment payment = orderService.setPgDataInfo(order);
  614. // 2021.05.10 추가
  615. payment.setPayUrl("/create/preOrder");
  616. payment.setRetUrl("/pay/result/response");
  617. mav.addObject("payment" , payment);
  618. mav.addObject("orderDetailList" , order.getOrderDetailList());
  619. mav.addObject("message" , resultStr);
  620. mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
  621. return mav;
  622. }
  623. /**
  624. * 결제 PG 요청 완료
  625. *
  626. * @param
  627. * @return
  628. * @author xodud1202
  629. * @since 2021. 03. 05
  630. */
  631. @ResponseBody
  632. @RequestMapping(value = "/pay/result/response")
  633. public ModelAndView payResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
  634. ModelAndView mav = new ModelAndView();
  635. Order order = new Order();
  636. // 1. 로그인체크 후 custNo 설정
  637. if (TsfSession.isLogin()) {
  638. param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  639. order.setCustNo(TsfSession.getInfo().getCustNo());
  640. } else {
  641. param.setCustNo(0);
  642. order.setCustNo(0);
  643. }
  644. param.setRegNo(param.getCustNo());
  645. param.setUpdNo(param.getCustNo());
  646. // 2. 결재정보등록(TB_PAYMENT)
  647. param = orderService.orderPgPayResult(param, request, response);
  648. order.setOrdNo(param.getOrdNo());
  649. order.setSellGb("10");
  650. order.setPgGb(param.getPgGb());
  651. order.setPayMeans(param.getPayMeans());
  652. // 3. 주문정보 업데이트
  653. coreOrderService.updateOrderInfo(order);
  654. // 4. 2021.05.10 장바구니정보 삭제
  655. boolean cartDelTemp = true;
  656. if (TsfSession.isLogin()) {
  657. if ("jsh77b".equals(TsfSession.getInfo().getCustId()) || "xodud1202".equals(TsfSession.getInfo().getCustId()) || "card007".equals(TsfSession.getInfo().getCustId())) {
  658. cartDelTemp = false;
  659. }
  660. }
  661. if (cartDelTemp) {
  662. orderService.deleteCartOrdNo(order);
  663. }
  664. // TODO 5. 2021.05.10 보증보험 API 연동
  665. orderService.updateInsurance(order);
  666. // 2021.03.16 주문완료화면이동처리
  667. mav.setViewName("redirect:/order/complete?ordNo=" + order.getOrdNo());
  668. return mav;
  669. }
  670. /**
  671. * 주문완료페이지
  672. *
  673. * @param
  674. * @return
  675. * @author jsh77b
  676. * @since 2021. 03. 16
  677. */
  678. @ResponseBody
  679. @RequestMapping(value = "/complete")
  680. public ModelAndView orderComplete(Order order) {
  681. ModelAndView mav = new ModelAndView();
  682. // 1. 주문번호 체크
  683. if (order.getOrdNo() == null) {
  684. mav.setViewName("redirect:/");
  685. return mav;
  686. }
  687. // 2. 로그인체크 후 custNo 설정
  688. if (TsfSession.isLogin()) {
  689. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  690. } else {
  691. order.setCustNo(0);
  692. }
  693. // 3. 결제완료정보조회
  694. GagaMap resultMap = coreOrderService.getOrderCompleteInfo(order);
  695. // 3.1 본인회원인 경우 체크
  696. Order orderInfo = (Order) resultMap.get("orderInfo");
  697. if (orderInfo.getCustNo() != 0) {
  698. if (TsfSession.isLogin()) {
  699. if (!TsfSession.getInfo().getCustNo().equals(orderInfo.getCustNo())) {
  700. mav.setViewName("redirect:/");
  701. return mav;
  702. }
  703. } else {
  704. mav.setViewName("redirect:/");
  705. return mav;
  706. }
  707. }
  708. // 3.2 상품주문금액이 없는 경우 체크
  709. int goodsSumAmt = (Integer) resultMap.get("goodsSumAmt");
  710. if (goodsSumAmt < 1) {
  711. mav.setViewName("redirect:/");
  712. return mav;
  713. }
  714. // TODO 주문정보 알림톡전송
  715. // 2021.04.27 마일리지, 제휴할인정보
  716. Order payOrder = orderService.getPaymentInfoForMypage(order);
  717. int mileageDcAmt = payOrder.getNpayPntAmt();
  718. int allianceDcAmt = payOrder.getPgCpnAmt();
  719. int realOrdSumAmt = (int) resultMap.get("realOrdSumAmt");
  720. realOrdSumAmt = realOrdSumAmt - mileageDcAmt - allianceDcAmt;
  721. // 4. 화면전송변수설정
  722. mav.addObject("orderInfo" , resultMap.get("orderInfo")); // 주문기본정보
  723. mav.addObject("ordSumAmt" , resultMap.get("ordSumAmt")); // 주문금액합계
  724. mav.addObject("dcSumAmt" , resultMap.get("dcSumAmt")); // 할인금액합계
  725. mav.addObject("realOrdSumAmt" , realOrdSumAmt); // 결제금액합계
  726. mav.addObject("listSumAmt" , resultMap.get("listSumAmt")); // 상품금액합계(정상가)
  727. mav.addObject("goodsSumAmt" , resultMap.get("goodsSumAmt")); // 상품금액합계(판매가)
  728. mav.addObject("goodsDcSumAmt" , resultMap.get("goodsDcSumAmt")); // 상품금액합계(정상가 - 판매가)
  729. mav.addObject("delvFeeSumAmt" , resultMap.get("delvFeeSumAmt")); // 배송비합계
  730. mav.addObject("cpn1DcSumAmt" , resultMap.get("cpn1DcSumAmt")); // 즉시할인합계
  731. mav.addObject("tmtbSumAmt" , resultMap.get("tmtbSumAmt")); // 다다익선합계
  732. mav.addObject("cpnDcSumAmt" , resultMap.get("cpnDcSumAmt")); // 쿠폰할인합계
  733. mav.addObject("prePntDcSumAmt" , resultMap.get("prePntDcSumAmt")); // 선포인트할인합계
  734. mav.addObject("pntDcSumAmt" , resultMap.get("pntDcSumAmt")); // 포인트사용합계
  735. mav.addObject("gfcdUseSumAmt" , resultMap.get("gfcdUseSumAmt")); // 상품권사용합계
  736. mav.addObject("savePntSumAmt" , resultMap.get("savePntSumAmt")); // 적립예정포인트합계
  737. mav.addObject("mileageDcAmt" , mileageDcAmt); // 마일리지사용합계
  738. mav.addObject("allianceDcAmt" , allianceDcAmt); // 제휴할인합계
  739. mav.addObject("isLogin" , TsfSession.isLogin()); // 로그인여부
  740. mav.addObject("delvAddrSq" , resultMap.get("delvAddrSq")); // 배송지번호
  741. mav.setViewName(super.getDeviceViewName("order/OrderComplete"));
  742. return mav;
  743. }
  744. /**
  745. * 선물받기완료페이지
  746. *
  747. * @param
  748. * @return
  749. * @author jsh77b
  750. * @since 2021. 04. 15
  751. */
  752. @ResponseBody
  753. @RequestMapping(value = "/giftComplete")
  754. public ModelAndView orderGiftComplete(Order order) {
  755. ModelAndView mav = new ModelAndView();
  756. // 0. 주문번호 체크
  757. if (order.getOrdNo() == null) {
  758. mav.setViewName("redirect:/");
  759. return mav;
  760. }
  761. // 2. 결제완료정보조회
  762. GagaMap resultMap = coreOrderService.getOrderGiftCompleteInfo(order);
  763. // 4. 화면전송변수설정
  764. mav.addObject("orderInfo" , resultMap.get("orderInfo")); // 주문기본정보
  765. mav.addObject("orderList" , resultMap.get("orderList")); // 주문목록정보
  766. mav.addObject("orderListCnt" , resultMap.get("orderListCnt")); // 주문목록갯수
  767. mav.addObject("giftAddrInpYn" , resultMap.get("giftAddrInpYn")); // 선물받기배송지등록여부
  768. mav.addObject("delvRegYn" , resultMap.get("delvRegYn")); // 배송지등록여부
  769. mav.setViewName(super.getDeviceViewName("order/OrderGiftComplete"));
  770. return mav;
  771. }
  772. /**
  773. * 선물주문배송신청완료
  774. *
  775. * @param
  776. * @return
  777. * @author jsh77b
  778. * @since 2021. 04. 15
  779. */
  780. @ResponseBody
  781. @PostMapping(value = "/giftDelvComplete")
  782. public int updateDeliveryAddr(@RequestBody Order order) {
  783. int rtn = coreOrderService.updateOrderDetailGiftAddrInpYn(order);
  784. return rtn;
  785. }
  786. /**
  787. * 총알배송 가능 지역 체크
  788. *
  789. * @param
  790. * @return
  791. * @author jsh77b
  792. * @since 2021. 02. 08
  793. */
  794. @ResponseBody
  795. @PostMapping(value = "/getDailyDeliveryCheck")
  796. public int getDailyDeliveryCheck(Order order) {
  797. // 1. 총알배송가능 지역, 총알배송 가능 시간 체크
  798. int rtn = coreOrderService.getDailyDeliveryCheck(order);
  799. return rtn;
  800. }
  801. /**
  802. * 사은품안내팝업 (사용하는지확인)
  803. *
  804. * @param
  805. * @return
  806. * @author jsh77b
  807. * @since 2021. 02. 17
  808. */
  809. @ResponseBody
  810. @RequestMapping(value = "/freegiftInfoPop")
  811. public ModelAndView freegiftInfoPop(Order order) {
  812. ModelAndView mav = new ModelAndView();
  813. mav.setViewName(super.getDeviceViewName("order/OrderFreegiftInfoPop"));
  814. return mav;
  815. }
  816. /**
  817. * 쿠폰변경팝업 (상품, 장바구니 쿠폰)
  818. *
  819. * @param
  820. * @return
  821. * @author jsh77b
  822. * @since 2021. 02. 17
  823. */
  824. @SuppressWarnings({ "unused", "unchecked" })
  825. @ResponseBody
  826. @PostMapping(value = "/couponApplyPop")
  827. public ModelAndView couponApplyPop(@RequestBody Order order) {
  828. ModelAndView mav = new ModelAndView();
  829. GagaMap goodsDcAmtMap = new GagaMap();
  830. Collection<Order> goodsApplyCpnList = new ArrayList<Order>();
  831. Collection<Order> goodsCpnList = new ArrayList<Order>();
  832. Collection<Order> cartCpnList = new ArrayList<Order>();
  833. // 1. 로그인체크 후 custNo 설정
  834. if (TsfSession.isLogin()) {
  835. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  836. } else {
  837. order.setJsessionId(TsfSession.getSessionId());
  838. }
  839. // 2. 로그인체크 후 정보 설정 (할인구간정보조회)
  840. if (TsfSession.isLogin()) {
  841. // 2.1 배송단위별 상품 목록 조회 (장바구니)
  842. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  843. // 2.2 상품금액, 선포인트, 다다익선할인금액
  844. goodsDcAmtMap = coreOrderService.getGoodsDcAmt(tmtbGoodsApplyList);
  845. // 2.3 배송단위별 장바구니 상품 건수 조회 (장바구니상품)
  846. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  847. // 2.4 상품쿠폰, 장바구니쿠폰 목록 조회
  848. GagaMap goodsCartCpnMap = coreOrderService.getGoodsCartCpnApplyGoodsList(order);
  849. goodsCpnList = (Collection<Order>) goodsCartCpnMap.get("goodsCpnList");
  850. cartCpnList = (Collection<Order>) goodsCartCpnMap.get("cartCpnList");
  851. // 2.5 상품쿠폰 적용된 상품 목록(상품기준)
  852. goodsApplyCpnList = coreOrderService.getGoodsCpnApplyList(tmtbGoodsApplyList, goodsCpnList);
  853. // 2.6 장바구니쿠폰(장바구니기준 상품목록)
  854. cartCpnList = coreOrderService.getCartCpnApplyList(tmtbGoodsApplyList, cartCpnList);
  855. }
  856. mav.addObject("goodsApplyCpnList" , goodsApplyCpnList); // 상품적용쿠폰
  857. mav.addObject("cartCpnList" , cartCpnList); // 장바구니쿠폰목록
  858. mav.addObject("order" , order); // 파라미터
  859. mav.setViewName(super.getDeviceViewName("order/OrderCouponApplyPop"));
  860. return mav;
  861. }
  862. /**
  863. * 쿠폰변경팝업 (배송비쿠폰)
  864. *
  865. * @param
  866. * @return
  867. * @author jsh77b
  868. * @since 2021. 02. 17
  869. */
  870. @SuppressWarnings({ "unused", "unchecked" })
  871. @ResponseBody
  872. @PostMapping(value = "/delvCouponApplyPop")
  873. public ModelAndView delvCouponApplyPop(@RequestBody Order order) {
  874. ModelAndView mav = new ModelAndView();
  875. GagaMap goodsDcAmtMap = new GagaMap();
  876. Collection<Order> delvCpnList = new ArrayList<Order>();
  877. Collection<Order> delvFeeCdList = new ArrayList<Order>();
  878. // 1. 로그인체크 후 custNo 설정
  879. if (TsfSession.isLogin()) {
  880. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  881. } else {
  882. order.setJsessionId(TsfSession.getSessionId());
  883. }
  884. // 2. 로그인체크 후 정보 설정 (할인구간정보조회)
  885. if (TsfSession.isLogin()) {
  886. // 2.1 배송단위별 상품 목록 조회 (장바구니)
  887. Collection<Order> tmtbGoodsApplyList = cartService.getMoreBetterAmtList(order);
  888. GagaMap delvOrderMap = coreOrderService.getCartDelvGoodsCntList(tmtbGoodsApplyList, order);
  889. // 2.2 배송비쿠폰목록 조회
  890. delvCpnList = coreOrderService.getDelvCpnList(order);
  891. // 2.3 배송정책단위목록
  892. delvFeeCdList = (Collection<Order>) delvOrderMap.get("delvFeeCdList");
  893. // 2.4 배송비쿠폰(배송업체기준)
  894. delvCpnList = coreOrderService.getDelvCpnApplyList(delvFeeCdList, delvCpnList);
  895. }
  896. mav.addObject("delvCpnList" , delvCpnList); // 배송비쿠폰목록
  897. mav.addObject("order" , order); // 파라미터
  898. mav.setViewName(super.getDeviceViewName("order/OrderDelvCouponApplyPop"));
  899. return mav;
  900. }
  901. /**
  902. * 카카오페이 결제 요청 처리
  903. *
  904. * @param String
  905. * @return ModelAndView
  906. * @author card007
  907. * @since 2021. 03. 04
  908. */
  909. @RequestMapping(value = "/kakao/payment/request")
  910. @ResponseBody
  911. public ModelAndView kakaoPaymentRequest(@RequestParam(value = "pg_token", required = false) String pgToken) {
  912. ModelAndView mav = new ModelAndView();
  913. mav.addObject("pgToken", pgToken);
  914. mav.setViewName(super.getDeviceViewName("/pg/KakaoPaymentRequest"));
  915. return mav;
  916. }
  917. /**
  918. * 네이버페이 결제 요청 처리
  919. *
  920. * @param String
  921. * @return ModelAndView
  922. * @author card007
  923. * @since 2021. 03. 04
  924. */
  925. @RequestMapping(value = "/naver/payment/request")
  926. @ResponseBody
  927. public ModelAndView naverPaymentRequest(@RequestParam(value = "paymentId", required = false) String paymentId) {
  928. ModelAndView mav = new ModelAndView();
  929. mav.addObject("paymentId", paymentId);
  930. mav.setViewName(super.getDeviceViewName("/pg/NaverPaymentRequest"));
  931. return mav;
  932. }
  933. /**
  934. * 주문 데이터 생성
  935. *
  936. * @param
  937. * @return
  938. * @author xodud1202
  939. * @since 2021. 03. 04
  940. */
  941. @RequestMapping(value = "/test")
  942. public ModelAndView test() {
  943. ModelAndView mav = new ModelAndView();
  944. mav.setViewName("web/order/test");
  945. return mav;
  946. }
  947. /**
  948. * 취소,반품,교환 추가결제화면
  949. *
  950. * @param : ordChgSq
  951. * @return
  952. * @author jsh77b
  953. * @since 2021. 04. 16
  954. */
  955. @ResponseBody
  956. @RequestMapping(value = "/addPaymentForm")
  957. public ModelAndView orderAddPaymentForm(Order order) {
  958. ModelAndView mav = new ModelAndView();
  959. // 1. 주문번호 체크
  960. if (order.getOrdChgSq() == null) {
  961. mav.setViewName("redirect:/");
  962. return mav;
  963. }
  964. // 2. 추가결제 상품목록
  965. GagaMap resultMap = coreOrderService.getAddPayOrderListInfo(order);
  966. // 추가결제 목록이 없으면 메인으로 이동
  967. @SuppressWarnings("unchecked")
  968. Collection<Order> orderAddPayGoodsList = (Collection<Order>) resultMap.get("orderAddPayGoodsList");
  969. if (orderAddPayGoodsList.size() < 1) {
  970. mav.setViewName("redirect:/");
  971. return mav;
  972. }
  973. // TODO 주문정보 알림톡전송
  974. // 3. 화면전송변수설정
  975. mav.addObject("orderAddPayGoodsList" , orderAddPayGoodsList); // 주문목록정보
  976. mav.addObject("ordNo" , resultMap.get("ordNo")); // 주문번호
  977. mav.addObject("refundAmt" , resultMap.get("refundAmt")); // 상품환불금액
  978. mav.addObject("addPayCost" , resultMap.get("addPayCost")); // 추가결제금액
  979. mav.addObject("ordChgSq" , resultMap.get("ordChgSq")); // 주문취소신청번호
  980. mav.addObject("chgGb" , resultMap.get("chgGb")); // 변경구분
  981. mav.addObject("chgerNm" , resultMap.get("chgerNm")); // 변경신청인
  982. mav.addObject("chgerPhnno" , resultMap.get("chgerPhnno")); // 변경신청핸드폰번호
  983. mav.addObject("goodsNm" , resultMap.get("goodsNm")); // 상품명
  984. mav.setViewName(super.getDeviceViewName("order/OrderAddPaymentForm"));
  985. return mav;
  986. }
  987. /**
  988. * 추가결제실행
  989. *
  990. * @param
  991. * @return
  992. * @author xodud1202
  993. * @since 2021. 03. 04
  994. */
  995. @PostMapping("/addPayment")
  996. @ResponseBody
  997. public ModelAndView orderAddPayment(@RequestBody Order order) {
  998. ModelAndView mav = new ModelAndView();
  999. // 1. 로그인체크 후 custNo 설정
  1000. if (TsfSession.isLogin()) {
  1001. order.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  1002. } else {
  1003. order.setJsessionId(TsfSession.getSessionId());
  1004. order.setCustNo(0);
  1005. }
  1006. order.setPayAmt(order.getAddPayCost());
  1007. order.setOrdNm(order.getChgerNm());
  1008. order.setOrdPhnno(order.getChgerPhnno());
  1009. // 필수 데이터
  1010. // pgGb = 결제타입, payMeans = 결제수단, ordNo = 주문번호, goodsNm = 상품명, payAmt = 실결제금액, ordNm = 주문자명, ordPhnno = 휴대폰번호, custNo = 고객번호
  1011. // 선택 데이터
  1012. // ordEmail = 주문자메일, ordTelno = 전화번호
  1013. /*
  1014. === 카카오페이 & 네이버페이 파라메터 ===
  1015. ordNo = 주문번호
  1016. custNo = 고객번호
  1017. goodsNm = 상품명
  1018. ordGoodsQty = 주문상품수량
  1019. payAmt = 결제금액
  1020. ======================
  1021. */
  1022. Payment payment = orderService.setPgDataInfo(order);
  1023. payment.setOrdChgSq(order.getOrdChgSq());
  1024. // 2021.05.10 추가
  1025. payment.setPayUrl("/addPayment");
  1026. payment.setRetUrl("/addPay/result/response");
  1027. mav.addObject("payment", payment);
  1028. mav.setViewName(super.getDeviceViewName("pg/kcpOrder"));
  1029. return mav;
  1030. }
  1031. /**
  1032. * 결제 PG 요청 완료
  1033. *
  1034. * @param
  1035. * @return
  1036. * @author xodud1202
  1037. * @since 2021. 03. 05
  1038. */
  1039. @ResponseBody
  1040. @RequestMapping(value = "/addPay/result/response")
  1041. public ModelAndView addPayResultResponse(Payment param, HttpServletRequest request, HttpServletResponse response) {
  1042. ModelAndView mav = new ModelAndView();
  1043. Order order = new Order();
  1044. // 1. 로그인체크 후 custNo 설정
  1045. if (TsfSession.isLogin()) {
  1046. param.setCustNo(TsfSession.getInfo().getCustNo()); // 고객번호등록
  1047. order.setCustNo(TsfSession.getInfo().getCustNo());
  1048. order.setRegNo(TsfSession.getInfo().getCustNo());
  1049. order.setUpdNo(TsfSession.getInfo().getCustNo());
  1050. } else {
  1051. param.setCustNo(0);
  1052. order.setCustNo(0);
  1053. order.setRegNo(0);
  1054. order.setUpdNo(0);
  1055. }
  1056. param.setPayGb(TscConstants.PaymentGb.DELIVERY.value());
  1057. param.setUpdNo(param.getCustNo());
  1058. log.info("CHECK CHG_SQ ::: {}", param.getOrdChgSq());
  1059. // 2. 결재정보등록(TB_PAYMENT)
  1060. param = orderService.orderPgPayResult(param, request, response);
  1061. order.setOrdNo(param.getOrdNo());
  1062. order.setOrdChgSq(param.getOrdChgSq());
  1063. // 3. 추가결제 상품목록
  1064. GagaMap resultMap = coreOrderService.getAddPayOrderListInfo(order);
  1065. // 4. 화면전송변수설정
  1066. mav.addObject("refundAmt" , resultMap.get("refundAmt")); // 상품환불금액
  1067. mav.addObject("addPayCost" , resultMap.get("addPayCost")); // 추가결제금액
  1068. mav.addObject("ordChgSq" , resultMap.get("ordChgSq")); // 주문취소신청번호
  1069. mav.addObject("chgerNm" , resultMap.get("chgerNm")); // 변경신청인
  1070. mav.addObject("chgerPhnno" , resultMap.get("chgerPhnno")); // 변경신청핸드폰번호
  1071. // TODO 3. 주문정보 업데이트
  1072. coreOrderService.updateOrderChangeDetail(order);
  1073. // 2021.03.16 주문완료화면이동처리
  1074. mav.setViewName(super.getDeviceViewName("order/OrderAddPaymentComplete"));
  1075. return mav;
  1076. }
  1077. }