TsaOrderChangeController.java 16 KB

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