TsfPlanningController.java 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. package com.style24.front.biz.web;
  2. import java.util.Collection;
  3. import org.apache.commons.lang3.StringUtils;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.mobile.device.Device;
  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.style24.core.biz.service.TscCustomerService;
  15. import com.style24.core.support.env.TscConstants;
  16. import com.style24.core.support.message.TscMessageByLocale;
  17. import com.style24.front.biz.service.TsfPlanningService;
  18. import com.style24.front.support.controller.TsfBaseController;
  19. import com.style24.front.support.security.session.TsfSession;
  20. import com.style24.persistence.domain.Coupon;
  21. import com.style24.persistence.domain.Customer;
  22. import com.style24.persistence.domain.Plan;
  23. import com.style24.persistence.domain.Review;
  24. import lombok.extern.slf4j.Slf4j;
  25. import com.gagaframework.web.parameter.GagaMap;
  26. import com.gagaframework.web.rest.server.GagaResponseStatus;
  27. /**
  28. * 기획전 Controller
  29. *
  30. * @author gagamel
  31. * @since 2020. 12. 29
  32. */
  33. @Controller
  34. @RequestMapping("/planning")
  35. @Slf4j
  36. public class TsfPlanningController extends TsfBaseController {
  37. @Autowired
  38. private TscMessageByLocale message;
  39. @Autowired
  40. private TsfPlanningService planningService;
  41. @Autowired
  42. private TscCustomerService coreCustomerService;
  43. /**
  44. * 기획전 메인 화면
  45. * @param cateNo - 카테고리번호
  46. * @return
  47. * @author sowon
  48. * @since 2021. 3. 5
  49. */
  50. @GetMapping("/main/form")
  51. public ModelAndView planningMainForm(@RequestParam(value = "cateNo", required = false) Integer cateNo) {
  52. ModelAndView mav = new ModelAndView(super.getDeviceViewName("planning/PlanningMainForm"));
  53. Plan plan = new Plan();
  54. plan.setSiteCd(TscConstants.Site.STYLE24.value());
  55. plan.setFrontGb(TsfSession.getFrontGb());
  56. // 기획전 카테고리 목록
  57. mav.addObject("cateList", planningService.getPlanningCategoryList(plan));
  58. mav.addObject("cateNo", cateNo);
  59. return mav;
  60. }
  61. /**
  62. * 기획전 메인 목록
  63. * @param plan - 기획전 정보
  64. * @param device - 디바이스 정보
  65. * @return
  66. * @author gagamel
  67. * @since 2021. 3. 29
  68. */
  69. @GetMapping("/main/list")
  70. @ResponseBody
  71. public Collection<Plan> getPlanningMainList(Plan plan, Device device) {
  72. plan.setSiteCd(TscConstants.Site.STYLE24.value());
  73. plan.setFrontGb(TsfSession.getFrontGb());
  74. plan.setCustGb(TsfSession.getCustGb());
  75. plan.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
  76. if (device.isNormal()) {
  77. plan.setMaxRow(2); // PC웹은 2개
  78. } else {
  79. plan.setMaxRow(3); // 모바일은 3개
  80. }
  81. return planningService.getPlanningMainList(plan);
  82. }
  83. // /**
  84. // * 기획전 접근확인
  85. // *
  86. // * @return
  87. // * @author sowon
  88. // * @since 2021. 3. 22
  89. // */
  90. // @PostMapping("/access")
  91. // @ResponseBody
  92. // public GagaMap PlanningAccessConfrim(@RequestBody Plan plan) throws Exception {
  93. // GagaMap result = new GagaMap();
  94. // // 접근 가능 고객 등급 확인
  95. // planningService.accessCustGrade(plan);
  96. // result.set("status", "200");
  97. //
  98. // return result;
  99. // }
  100. /**
  101. * 기획전 상세화면
  102. *
  103. * @return
  104. * @author sowon
  105. * @since 2021. 3. 9
  106. */
  107. @GetMapping("/detail/form")
  108. public ModelAndView PlanningDetailForm(Plan plan) {
  109. ModelAndView mav = new ModelAndView();
  110. // 접근 불가능한 기획전 메시지 조회
  111. String inaccessibleMsg = planningService.getInaccessiblePlanningMessage(plan.getPlanSq());
  112. if (StringUtils.isNotBlank(inaccessibleMsg)) {
  113. mav.addObject("inaccessibleMsg", inaccessibleMsg);
  114. mav.setViewName(super.getDeviceViewName("error/Inaccess"));
  115. return mav;
  116. }
  117. Review review = new Review();
  118. Coupon coupon = new Coupon();
  119. plan.setSiteCd(TscConstants.Site.STYLE24.value());
  120. plan.setFrontGb(TsfSession.getFrontGb());
  121. plan.setCustGb(TsfSession.getCustGb());
  122. plan.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
  123. // 기본 set
  124. plan.setExceptPlanSq(plan.getPlanSq());
  125. plan.setPlanSq(plan.getPlanSq());
  126. review.setPlanSq(plan.getPlanSq());
  127. coupon.setPlanSq(plan.getPlanSq());
  128. //plan.setSiteCd(TscConstants.Site.STYLE24.value());
  129. plan.setFrontGb(TsfSession.getFrontGb());
  130. Plan planInfo = planningService.getPlanDetailInfo(plan);
  131. mav.addObject("planInfo", planInfo);
  132. mav.addObject("planCount", planningService.getPlanAllCount(plan));
  133. // 상단소스
  134. plan.setFrontGb("T");
  135. mav.addObject("fsrcInfoTop", planningService.getPlanFsrcInfo(plan));
  136. // 하단소스
  137. plan.setFrontGb("B");
  138. mav.addObject("fsrcInfoBtm", planningService.getPlanFsrcInfo(plan));
  139. // 템플릿 순서
  140. mav.addObject("templateOrd", planningService.templateDispOrdInfo(plan));
  141. // 리뷰
  142. mav.addObject("reviewInfo", planningService.getPlanReviewInfo(review));
  143. // 쿠폰
  144. mav.addObject("couponInfo", planningService.getPlanCouponInfo(coupon));
  145. // 이미지
  146. mav.addObject("imageInfo", planningService.getPlanImageInfo(plan));
  147. // 상품1열 전시
  148. plan.setTmplType("G082_50");
  149. mav.addObject("goods1Info", planningService.getPlanGoods1Info(plan));
  150. // 상품2열 전시
  151. plan.setTmplType("G082_51");
  152. mav.addObject("goods2Info", planningService.getPlanGoods1Info(plan));
  153. //상품4열 전시
  154. plan.setTmplType("G082_52");
  155. mav.addObject("goods4Info", planningService.getPlanGoods1Info(plan));
  156. // 다른기획전 보기
  157. mav.addObject("planList", planningService.getPlanningList(plan));
  158. //
  159. // mav.addObject("couponList", planningService.getPlusCouponList(plan));
  160. //
  161. // // 기획전 상세 및 코너 목록
  162. // mav.addObject("planCornerList", planningService.getPlanCornerList(plan));
  163. //
  164. // // 특가세일 기준
  165. // mav.addObject("specialPriceSaleRate", policyService.getSpecialPriceSaleDisplayRate(TsfConstants.SITE_CD));
  166. //
  167. // if ("E".equals(planInfo.getPlanGb())) { // 기획전 일 떄
  168. // if (planInfo.getPrivacyPolicy() != null && !planInfo.getPrivacyPolicy().equals("")) {
  169. // mav.addObject("planQuestionList", planningService.getPlanQuestionList(plan));
  170. // }
  171. // }
  172. // Popup Parameter
  173. mav.addObject("preview", plan.getPreview());
  174. mav.addObject("viewDt", plan.getViewDt());
  175. mav.addObject("viewPage", "G037_40");
  176. mav.addObject("popupPlanSq", plan.getPlanSq());
  177. mav.setViewName(super.getDeviceViewName("planning/PlanningDetailForm"));
  178. return mav;
  179. }
  180. /**
  181. * 기획전 쿠폰 다운로드. 고객이 상품쿠폰 다운로드 시 발급됨.
  182. *
  183. * @param params
  184. * @return
  185. * @throws Exception
  186. * @author sowon
  187. * @since 2021. 3. 24.
  188. */
  189. @PostMapping(value = "/coupon/download")
  190. @ResponseBody
  191. public GagaMap createPlanCoupon(@RequestBody Coupon coupon) throws Exception {
  192. GagaMap result = new GagaMap();
  193. // 고객정보 조회
  194. Customer customer = new Customer();
  195. customer.setSiteCd(TscConstants.Site.STYLE24.value());
  196. customer.setCustNo(TsfSession.getInfo().getCustNo());
  197. customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
  198. customer = coreCustomerService.getCustomerInfo(customer);
  199. // 고객정보 설정
  200. coupon.setCustGb(customer.getCustGb());
  201. coupon.setCustGrade(customer.getCustGrade());
  202. coupon.setCustNo(customer.getCustNo());
  203. // 등급쿠폰 다운 처리
  204. int count = planningService.getPlanCouponDownInfo(coupon);
  205. result.set("status", GagaResponseStatus.SUCCESS.getCode());
  206. if (count == 0) {
  207. result.set("message", message.getMessage("COUPON_0002"));
  208. } else {
  209. result.set("message", message.getMessage("COUPON_0001", new Object[] {count}));
  210. }
  211. return result;
  212. }
  213. /**
  214. * 이벤트 메인 화면
  215. *
  216. * @return
  217. * @author sowon
  218. * @since 2021. 3. 8
  219. */
  220. @GetMapping("/event/main/form")
  221. public ModelAndView PlanningEventMainForm(Plan plan) throws Exception {
  222. ModelAndView mav = new ModelAndView();
  223. plan.setSiteCd(TscConstants.Site.STYLE24.value());
  224. plan.setFrontGb(TsfSession.getFrontGb());
  225. mav.setViewName(super.getDeviceViewName("planning/PlanningEventMainForm"));
  226. return mav;
  227. }
  228. /**
  229. * 이벤트 메인 목록
  230. * @param plan - 이벤트 정보
  231. * @return
  232. * @author sowon
  233. * @since 2021. 3. 29
  234. */
  235. @GetMapping("/event/main/list")
  236. @ResponseBody
  237. public Collection<Plan> getPlanningEventMainList(Plan plan) {
  238. plan.setSiteCd(TscConstants.Site.STYLE24.value());
  239. plan.setFrontGb(TsfSession.getFrontGb());
  240. plan.setCustGb(TsfSession.getCustGb());
  241. plan.setCustNo(TsfSession.isLogin() ? TsfSession.getInfo().getCustNo() : 0);
  242. return planningService.getPlanEventList(plan);
  243. }
  244. /**
  245. * 총알배송 메인 화면
  246. *
  247. * @return
  248. * @author sowon
  249. * @since 2021. 3. 30
  250. */
  251. @GetMapping("/shot/delivery/guide/form")
  252. public ModelAndView planningShotDeliveryForm(Plan plan) throws Exception {
  253. ModelAndView mav = new ModelAndView();
  254. plan.setSiteCd(TscConstants.Site.STYLE24.value());
  255. plan.setFrontGb(TsfSession.getFrontGb());
  256. mav.addObject("shotHtml", planningService.getShotDeliveryHtml(plan));
  257. mav.setViewName(super.getDeviceViewName("planning/PlanningShotGuideForm"));
  258. return mav;
  259. }
  260. }