TsaOrderChangeController.java 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554
  1. package com.style24.admin.biz.web;
  2. import java.util.Collection;
  3. import java.util.List;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.web.bind.annotation.GetMapping;
  7. import org.springframework.web.bind.annotation.PostMapping;
  8. import org.springframework.web.bind.annotation.RequestBody;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestParam;
  11. import org.springframework.web.bind.annotation.ResponseBody;
  12. import org.springframework.web.servlet.ModelAndView;
  13. import com.gagaframework.web.parameter.GagaMap;
  14. import com.gagaframework.web.rest.server.GagaResponse;
  15. import com.gagaframework.web.rest.server.GagaResponseStatus;
  16. import com.style24.admin.biz.service.TsaOrderChangeService;
  17. import com.style24.admin.biz.service.TsaOrderService;
  18. import com.style24.admin.biz.service.TsaRendererService;
  19. import com.style24.admin.support.controller.TsaBaseController;
  20. import com.style24.admin.support.security.session.TsaSession;
  21. import com.style24.core.biz.service.TscOrderChangeService;
  22. import com.style24.core.biz.service.TscOrderRefundService;
  23. import com.style24.core.support.env.TscConstants;
  24. import com.style24.core.support.message.TscMessageByLocale;
  25. import com.style24.persistence.domain.Order;
  26. import com.style24.persistence.domain.OrderChange;
  27. import lombok.extern.slf4j.Slf4j;
  28. /**
  29. * 취소관리 Controller
  30. *
  31. * @author jsh77b
  32. * @since 2020. 11. 16
  33. */
  34. @Controller
  35. @RequestMapping("/orderChange")
  36. @Slf4j
  37. public class TsaOrderChangeController extends TsaBaseController {
  38. @Autowired
  39. private TscMessageByLocale message;
  40. @Autowired
  41. private TsaRendererService rendererService;
  42. @Autowired
  43. private TsaOrderService orderService;
  44. @Autowired
  45. private TsaOrderChangeService orderChangeService;
  46. @Autowired
  47. private TscOrderChangeService coreOrderChangeService;
  48. @Autowired
  49. private TscOrderRefundService coreOrderRefundService;
  50. /**
  51. * 취소요청, 취소완료 통합 화면 (관리자)
  52. *
  53. * @param ordNo - 주문번호
  54. * @param cncWait - 취소대기요청 구분
  55. * @return ModelAndView
  56. * @author jsh77b
  57. * @since 2020. 12. 22
  58. */
  59. @GetMapping("/cncl/req/form")
  60. public ModelAndView cnclReqForm(@RequestParam(value = "ordNo") int ordNo, @RequestParam(value = "ordChgSq") int ordChgSq) {
  61. Order order = new Order();
  62. ModelAndView mav = new ModelAndView();
  63. order.setOrdNo(ordNo);
  64. // 2021.01.26 변경시퀀스가 있을때 담기
  65. if (ordChgSq > 0) {
  66. order.setOrdChgSq(ordChgSq);
  67. }
  68. // 취소가능 주문상세상탭값 설정
  69. String[] ordDtlStatArr = new String[4];
  70. ordDtlStatArr[0] = TscConstants.OrderDetailStat.DEPOSIT_WAIT.value();
  71. ordDtlStatArr[1] = TscConstants.OrderDetailStat.PAYMENT_COMPLETE.value();
  72. ordDtlStatArr[2] = TscConstants.OrderDetailStat.GOODS_PREPARE.value();
  73. ordDtlStatArr[3] = TscConstants.OrderDetailStat.DELIVERY_PREPARE.value();
  74. order.setOrdDtlStatArr(ordDtlStatArr);
  75. // 2021.01.26 취소요청 화면, 취소요청정보확인 화면 합
  76. mav.addObject("chgReasonList" , rendererService.getAvailCommonCodeList("G686")); // 취소사유
  77. mav.addObject("cancelRequestTargetList" , coreOrderChangeService.getCancelRequestTargetList(order)); // 취소요청대상목록
  78. mav.addObject("orderInfoList" , orderService.getOrderInfoList(order)); // 주문정보
  79. mav.addObject("ordNo" , ordNo); // 주문번호
  80. mav.addObject("ordChgSq" , ordChgSq); // 주문변경번호
  81. mav.addObject("orderChangeList" , orderService.getOrderChangeList(order)); // 취소/반품/교환 요청 정보
  82. String viewName = "";
  83. if (ordChgSq > 0) {
  84. viewName = "order/CnclReqViewForm"; // 변경요청정보화면 (취소요청정보화면)
  85. } else {
  86. viewName = "order/CnclReqForm"; // 변경요청화면 (취소요청화면)
  87. }
  88. mav.setViewName(viewName);
  89. return mav;
  90. }
  91. /**
  92. * 취소요청 (ADMIN, NAPY, 외부몰) (배치) (사용안함)
  93. *
  94. * @param OrderChange - 주문취소신청정보
  95. * @return
  96. * @author jsh77b
  97. * @since 2021. 01. 20
  98. */
  99. @PostMapping("/cnclReq")
  100. @ResponseBody
  101. public GagaResponse cnclReq(@RequestBody OrderChange cnclReq) {
  102. GagaMap mav = new GagaMap();
  103. if (cnclReq== null) {
  104. throw new IllegalStateException(message.getMessage("FAIL_1001"));
  105. }
  106. List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
  107. // To Do List
  108. // @ 결품취소로직 추가
  109. // @ 주문취소시 상태값 체크
  110. // @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
  111. // 1. 세션회원조회
  112. int userNo = TsaSession.getInfo().getUserNo();
  113. // 2. 환불금액계산
  114. // 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
  115. mav = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
  116. // 3. 주문변경 기본정보 설정
  117. mav.set("ordNo" , cnclReq.getOrdNo()); // 주문번호
  118. mav.set("chgReason" , cnclReq.getChgReason()); // 변경사유
  119. mav.set("chgMemo" , cnclReq.getChgMemo()); // 변경메모
  120. mav.set("accountNo" , cnclReq.getAccountNo()); // 환불계좌번호
  121. mav.set("accountNm" , cnclReq.getAccountNm()); // 환불계좌예금주명
  122. mav.set("bankCd" , cnclReq.getBankCd()); // 환불계좌은행코드
  123. mav.set("allCanYn" , cnclReq.getAllCanYn()); // 무통장입금전 전체취소 여부
  124. mav.set("isCustomer" , cnclReq.getIsCustomer()); // 변경사유 (고객, 회사)
  125. // 4. 주문변경 회수지정보 추가
  126. mav.set("chgerNm" , cnclReq.getChgerNm()); // 변경자명
  127. mav.set("chgerEmail" , cnclReq.getChgerEmail()); // 변경자이메일주소
  128. mav.set("chgerPhnno" , cnclReq.getChgerPhnno()); // 변경자핸드폰번호
  129. mav.set("chgerTelno" , cnclReq.getChgerTelno()); // 변경자전화번호
  130. mav.set("reqGbn" , cnclReq.getReqGbn()); // 신청구분
  131. // 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
  132. //coreOrderChangeService.cnclReq(mav, userNo);
  133. coreOrderChangeService.cnclComplete(mav, userNo);
  134. return super.ok("성공");
  135. }
  136. /**
  137. * 취소요청철회 (NAPY, 외부몰) (관리자)
  138. * @param OrderChange - 주문취소신청정보
  139. * @return
  140. * @author jsh77b
  141. * @since 2021. 01. 20
  142. */
  143. @PostMapping("/cnclReqCancel")
  144. @ResponseBody
  145. public GagaResponse cnclReqCancel(@RequestBody OrderChange cnclReq) {
  146. if (cnclReq== null) {
  147. throw new IllegalStateException(message.getMessage("FAIL_1001"));
  148. }
  149. // 1. 세션회원조회
  150. int userNo = TsaSession.getInfo().getUserNo();
  151. GagaMap mav = new GagaMap();
  152. mav.set("ordNo" , cnclReq.getOrdNo());
  153. mav.set("ordChgSq" , cnclReq.getOrdChgSq());
  154. // 2.취소요청철회
  155. mav = coreOrderChangeService.cnclReqCancel(mav, userNo);
  156. return super.ok("성공");
  157. }
  158. /**
  159. * 취소요청승인 (NAPY, 외부몰) (관리자)
  160. * @param OrderChange - 주문취소신청정보
  161. * @return
  162. * @author jsh77b
  163. * @since 2021. 01. 20
  164. */
  165. @PostMapping("/cnclReqComplete")
  166. @ResponseBody
  167. public GagaResponse cnclReqComplete(@RequestBody OrderChange cnclReq) {
  168. if (cnclReq== null) {
  169. throw new IllegalStateException(message.getMessage("FAIL_1001"));
  170. }
  171. return super.ok("성공");
  172. }
  173. /**
  174. * 취소 요청, 완료 통합 (관리자)
  175. * @param Collection<Order> - 주문취소신청목록
  176. * @return
  177. * @author jsh77b
  178. * @since 2020. 12. 29
  179. */
  180. @PostMapping("/cnclComplete")
  181. @ResponseBody
  182. public GagaResponse cnclComplete(@RequestBody OrderChange cnclReq) {
  183. if (cnclReq== null) {
  184. throw new IllegalStateException(message.getMessage("FAIL_1001"));
  185. }
  186. GagaMap mav = new GagaMap();
  187. List<Order> cnclReqList = cnclReq.getCancelReqList(); // 취소요청정보목록
  188. // To Do List
  189. // @ 결품취소로직 추가
  190. // @ 주문취소시 상태값 체크
  191. // @ 취소, 반품시 배송비 체크 로직 (선결제 로직)
  192. // 1. 세션회원조회
  193. int userNo = TsaSession.getInfo().getUserNo();
  194. // 2. 환불금액계산
  195. // 2021.01.19 취소신청정보를 목록 (주문상세번호, 취소/반품수량) 으로 표현
  196. mav = coreOrderRefundService.cnclRtnRefundAmt(cnclReqList);
  197. // 3. 주문변경 기본정보 설정
  198. mav.set("ordNo" , cnclReq.getOrdNo()); // 주문번호
  199. mav.set("chgReason" , cnclReq.getChgReason()); // 변경사유
  200. mav.set("chgMemo" , cnclReq.getChgMemo()); // 변경메모
  201. mav.set("accountNo" , cnclReq.getAccountNo()); // 환불계좌번호
  202. mav.set("accountNm" , cnclReq.getAccountNm()); // 환불계좌예금주명
  203. mav.set("bankCd" , cnclReq.getBankCd()); // 환불계좌은행코드
  204. mav.set("allCanYn" , cnclReq.getAllCanYn()); // 무통장입금전 전체취소 여부
  205. mav.set("isCustomer" , cnclReq.getIsCustomer()); // 변경사유 (고객, 회사)
  206. // 4. 주문변경 회수지정보 추가
  207. mav.set("chgerNm" , cnclReq.getChgerNm()); // 변경자명
  208. mav.set("chgerEmail" , cnclReq.getChgerEmail()); // 변경자이메일주소
  209. mav.set("chgerPhnno" , cnclReq.getChgerPhnno()); // 변경자핸드폰번호
  210. mav.set("chgerTelno" , cnclReq.getChgerTelno()); // 변경자전화번호
  211. mav.set("reqGbn" , cnclReq.getReqGbn()); // 신청구분
  212. // 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL)
  213. coreOrderChangeService.cnclComplete(mav, userNo);
  214. return super.ok("성공");
  215. }
  216. /**
  217. * 반품요청 화면 (관리자)
  218. *
  219. * @param ordNo - 주문번호
  220. * @param cncWait - 취소대기요청 구분
  221. * @return ModelAndView
  222. * @author jsh77b
  223. * @since 2020. 12. 22
  224. */
  225. @GetMapping("/rtn/req/form")
  226. public ModelAndView returnRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
  227. Order order = new Order();
  228. ModelAndView mav = new ModelAndView();
  229. order.setOrdNo(ordNo);
  230. // 반품가능 주문상세상탭값 설정
  231. String[] ordDtlStatArr = new String[3];
  232. ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
  233. ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
  234. ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
  235. order.setOrdDtlStatArr(ordDtlStatArr);
  236. mav.addObject("chgReasonList" , rendererService.getAvailCommonCodeList("G688")); // 취소사유
  237. mav.addObject("cancelRequestTargetList" , coreOrderChangeService.getCancelRequestTargetList(order)); // 취소요청대상 목록
  238. mav.addObject("orderInfoList" , orderService.getOrderInfoList(order)); // 주문정보
  239. mav.addObject("ordNo" , ordNo); // 주문번호
  240. mav.addObject("orderDelvRtnAddrInfo" , orderService.getDeliveryAddrList(order)); // 배송정보
  241. mav.addObject("TelExcNoList" , rendererService.getAvailCommonCodeList("G095")); // 전화번호국번
  242. mav.addObject("PhnExcNoList" , rendererService.getAvailCommonCodeList("G096")); // (휴대전화)번호국번
  243. mav.setViewName("order/ReturnRequestForm");
  244. return mav;
  245. }
  246. /**
  247. * 반품신청 (관리자)
  248. * @param Collection<Order> - 주문취소신청목록
  249. * @return
  250. * @author jsh77b
  251. * @since 2020. 12. 29
  252. */
  253. @PostMapping("/returnRequest")
  254. @ResponseBody
  255. public GagaResponse orderReturnRequest(@RequestBody OrderChange rtnReq) {
  256. GagaMap mav = new GagaMap();
  257. if (rtnReq== null) {
  258. throw new IllegalStateException(message.getMessage("FAIL_1001"));
  259. }
  260. List<Order> cancelReqList = rtnReq.getCancelReqList(); // 취소요청정보
  261. // 1. 세션회원조회
  262. int userNo = TsaSession.getInfo().getUserNo();
  263. // 2. 환불금액계산
  264. mav = coreOrderRefundService.cnclRtnRefundAmt(cancelReqList);
  265. // 3. 주문변경 기본정보 설정
  266. mav.set("ordNo" , rtnReq.getOrdNo()); // 주문번호
  267. mav.set("chgReason" , rtnReq.getChgReason()); // 변경사유
  268. mav.set("chgMemo" , rtnReq.getChgMemo()); // 변경메모
  269. mav.set("accountNo" , rtnReq.getAccountNo()); // 환불계좌번호
  270. mav.set("accountNm" , rtnReq.getAccountNm()); // 환불계좌예금주명
  271. mav.set("bankCd" , rtnReq.getBankCd()); // 환불계좌은행코드
  272. mav.set("allCanYn" , rtnReq.getAllCanYn()); // 무통장입금전 전체취소 여부
  273. mav.set("isCustomer" , rtnReq.getIsCustomer()); // 변경사유 (고객, 회사)
  274. // 4. 주문변경 회수지정보 추가
  275. mav.set("chgerNm" , rtnReq.getChgerNm()); // 변경자명
  276. mav.set("chgerEmail" , rtnReq.getChgerEmail()); // 변경자이메일주소
  277. mav.set("chgerZipcode" , rtnReq.getChgerZipcode()); // 회수지우편번호
  278. mav.set("chgerBaseAddr" , rtnReq.getChgerBaseAddr()); // 회수지기본주소
  279. mav.set("chgerDtlAddr" , rtnReq.getChgerDtlAddr()); // 회수지상세주소
  280. mav.set("chgerPhnno" , rtnReq.getChgerPhnno()); // 변경자핸드폰번호
  281. mav.set("chgerTelno" , rtnReq.getChgerTelno()); // 변경자전화번호
  282. // 5. 주문변경 DB 등록 (TB_ORDER_CHANGE, TB_ORDER_CHANGE_DETAIL, TB_REFUND)
  283. coreOrderChangeService.rtnReq(mav, userNo);
  284. return super.ok("성공");
  285. }
  286. /**
  287. * 주문 취소/반품 신청환불금액 계산
  288. * @param Collection<Order>- 주문취소신청목록
  289. * @return
  290. * @author jsh77b
  291. * @since 2020. 12. 29
  292. */
  293. @PostMapping("/cancel/refundAmt")
  294. @ResponseBody
  295. public GagaMap orderCancelRefundAmt(@RequestBody List<Order> cancelReqList) {
  296. GagaMap mav = new GagaMap();
  297. if (cancelReqList == null || cancelReqList.isEmpty()) {
  298. throw new IllegalStateException(message.getMessage("FAIL_1001"));
  299. }
  300. // 1. 환불금액정보 계산 & 조회
  301. mav = coreOrderRefundService.cnclRtnRefundAmt(cancelReqList);
  302. return mav;
  303. }
  304. /**
  305. * 환불계좌목록
  306. *
  307. * @param ordNo - 주문번호
  308. * @param custNo - 고객고유번호
  309. * @return Collection<TsaOrder>
  310. * @author jsshin
  311. * @since 2020. 10. 16.
  312. */
  313. @GetMapping("/refund/account/info/list")
  314. @ResponseBody
  315. public Collection<Order> getRefundAccountInfoList(@RequestParam(value = "ordNo") int ordNo) {
  316. Order order = new Order();
  317. order.setOrdNo(ordNo);
  318. Collection<Order> orderRfAccountInfo = orderChangeService.getRefundAccount(order);
  319. return orderRfAccountInfo;
  320. }
  321. /**
  322. * 환불계좌등록 화면
  323. *
  324. * @param ordNo - 주문번호
  325. * @param custNo - 고객고유번호
  326. * @return ModelAndView
  327. * @author jsh77b
  328. * @since 2021. 01. 04.
  329. */
  330. @GetMapping("/refund/account/create/form")
  331. public ModelAndView refundAccountCreateForm(@RequestParam(value = "ordNo") int ordNo) {
  332. ModelAndView mav = new ModelAndView();
  333. Order order = new Order();
  334. order.setOrdNo(ordNo);
  335. Collection<Order> orderBasic = orderService.getOrderInfoList(order);
  336. Collection<Order> orderRfAccountInfo = orderChangeService.getRefundAccount(order);
  337. mav.addObject("bankList" , rendererService.getCommonCodeList("G940"));
  338. mav.addObject("orderRfAccountInfo" , orderRfAccountInfo);
  339. mav.addObject("orderBasic" , orderBasic);
  340. mav.setViewName("order/RefundAccountRegistForm");
  341. return mav;
  342. }
  343. /**
  344. * 환불계좌등록
  345. *
  346. * @param order - 환불계좌정보
  347. * @return GagaResponse
  348. * @author jsh77b
  349. * @since 2021. 01. 04.
  350. */
  351. @PostMapping("/account/save")
  352. @ResponseBody
  353. public GagaResponse saveRefundAccount(@RequestBody Order order) {
  354. int userNo = TsaSession.getInfo().getUserNo();
  355. order.setUpdNo(userNo);
  356. order.setRegNo(userNo);
  357. String accountCheck = "Y";
  358. // To Do List
  359. // @ 환불계좌인증
  360. if ("Y".equals(accountCheck)) {
  361. orderChangeService.saveRefundAccount(order);
  362. } else {
  363. throw new IllegalStateException("환불계좌정보가 맞지 않습니다!");
  364. }
  365. return super.ok(message.getMessage("SUCC_0001"));
  366. }
  367. /**
  368. * 교환요청 화면
  369. *
  370. * @param ordNo - 주문번호
  371. * @return ModelAndView
  372. * @author card007
  373. * @since 2021. 01. 14
  374. */
  375. @GetMapping("/exchange/request/form")
  376. public ModelAndView exchangeRequestFrom(@RequestParam(value = "ordNo") int ordNo) {
  377. Order order = new Order();
  378. ModelAndView mav = new ModelAndView();
  379. order.setOrdNo(ordNo);
  380. // 교환가능 주문상세상탭값 설정
  381. String[] ordDtlStatArr = new String[3];
  382. ordDtlStatArr[0] = TscConstants.OrderDetailStat.SHIPPING.value();
  383. ordDtlStatArr[1] = TscConstants.OrderDetailStat.SHIP_COMPLETE.value();
  384. ordDtlStatArr[2] = TscConstants.OrderDetailStat.DELIVERY_COMPLETE.value();
  385. order.setOrdDtlStatArr(ordDtlStatArr);
  386. Collection<Order> cancelRequestTargetList = coreOrderChangeService.getCancelRequestTargetList(order);
  387. Collection<Order> orderInfoList = orderService.getOrderInfoList(order);
  388. mav.addObject("chgReasonList" , rendererService.getAvailCommonCodeList("G689")); // 교환사유
  389. mav.addObject("cancelRequestTargetList" , cancelRequestTargetList); // 교환요청대상 목록
  390. mav.addObject("orderInfoList" , orderInfoList); // 주문정보
  391. mav.addObject("ordNo" , ordNo);
  392. mav.addObject("orderDelvAddrInfo" , orderService.getDeliveryAddrList(order)); // 배송정보
  393. mav.addObject("TelExcNoList" , rendererService.getAvailCommonCodeList("G095")); // 전화번호국번
  394. mav.addObject("PhnExcNoList" , rendererService.getAvailCommonCodeList("G096")); // (휴대전화)번호국번
  395. mav.setViewName("order/ExchangeRequestForm");
  396. return mav;
  397. }
  398. /**
  399. * 교환신청 (관리자)
  400. *
  401. * @param Collection<OrderChange>
  402. * @return
  403. * @author card007
  404. * @since 2021. 01. 22
  405. */
  406. @PostMapping("/exchangeRequest")
  407. @ResponseBody
  408. public GagaMap orderExchangeRequest(@RequestBody OrderChange excReq) {
  409. GagaMap result = new GagaMap();
  410. result.set("status", GagaResponseStatus.FAIL.getCode());
  411. if (excReq == null) {
  412. result.set("message", message.getMessage("FAIL_1001"));
  413. return result;
  414. }
  415. log.info("excReq >>> {}", excReq);
  416. // orderChangeService.changeRequest()
  417. // result.set("status", GagaResponseStatus.SUCCESS.getCode());
  418. return result;
  419. }
  420. }