TsaPlanService.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898
  1. package com.style24.admin.biz.service;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import org.apache.commons.lang3.StringUtils;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.core.env.Environment;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Transactional;
  10. import com.fasterxml.jackson.databind.ObjectMapper;
  11. import com.gagaframework.web.parameter.GagaMap;
  12. import com.gagaframework.web.util.GagaFileUtil;
  13. import com.gagaframework.web.util.GagaStringUtil;
  14. import com.style24.admin.biz.dao.TsaPlanDao;
  15. import com.style24.admin.support.security.session.TsaSession;
  16. import com.style24.persistence.domain.Plan;
  17. import lombok.extern.slf4j.Slf4j;
  18. /**
  19. * 기획전 Service
  20. *
  21. * @author sowon
  22. * @since 2021. 02. 04
  23. */
  24. @Service
  25. @Slf4j
  26. public class TsaPlanService {
  27. @Autowired
  28. private TsaPlanDao planDao;
  29. @Autowired
  30. private Environment env;
  31. @Autowired
  32. private ObjectMapper mapper;
  33. /**
  34. * 기획전 코너 전체 조회
  35. *
  36. * @param
  37. * @return
  38. * @author sowon
  39. * @since 2021. 2. 4
  40. */
  41. public Collection<Plan> getPlanAllList(Plan param) {
  42. return planDao.getPlanAllList(param);
  43. }
  44. /**
  45. * 기획전 웹 등록
  46. *
  47. * @param
  48. * @return
  49. * @author sowon
  50. * @since 2021. 2. 8
  51. */
  52. @Transactional("shopTxnManager")
  53. public void createPlanInfo(Plan param) {
  54. Plan plan = new Plan();
  55. param.setRegNo(TsaSession.getInfo().getUserNo());
  56. param.setUpdNo(TsaSession.getInfo().getUserNo());
  57. planDao.createPlanInfo(param);
  58. String[] brand = param.getMultiBrand();
  59. // 기획전 브랜드 insert
  60. for (int j = 0; j < brand.length; j++) {
  61. plan.setBrandGroupNo(brand[j]);
  62. plan.setPlanSq(param.getPlanSq());
  63. plan.setRegNo(TsaSession.getInfo().getUserNo());
  64. plan.setUpdNo(TsaSession.getInfo().getUserNo());
  65. planDao.createPlanBrand(plan);
  66. }
  67. String[] cate = param.getMultiCate();
  68. // 기획전 카테고리insert
  69. for (int j = 0; j < cate.length; j++) {
  70. plan.setCateNo(cate[j]);
  71. plan.setPlanSq(param.getPlanSq());
  72. plan.setRegNo(TsaSession.getInfo().getUserNo());
  73. plan.setUpdNo(TsaSession.getInfo().getUserNo());
  74. planDao.createPlanCate(plan);
  75. }
  76. // 기획전 회원구분 insert
  77. String[] custGb = param.getUsableCustGbArr();
  78. for (int j = 0; j < custGb.length; j++) {
  79. plan.setCustGb(custGb[j]);
  80. plan.setPlanSq(param.getPlanSq());
  81. plan.setRegNo(TsaSession.getInfo().getUserNo());
  82. planDao.createPlanCustGb(plan);
  83. }
  84. // 기획전 회원등급 insert
  85. String[] custGrade = param.getUsableCustGradeArr();
  86. for (int j = 0; j < custGrade.length; j++) {
  87. plan.setCustGrade(custGrade[j]);
  88. plan.setPlanSq(param.getPlanSq());
  89. plan.setRegNo(TsaSession.getInfo().getUserNo());
  90. planDao.createPlanCustGrade(plan);
  91. }
  92. log.debug("planSq : {}", param.getPlanSq());
  93. // 웹용 소스
  94. // if (StringUtils.isNotBlank(param.getFsrcPc())) {
  95. // createPlanFsrcPc(param);
  96. // }
  97. //
  98. // // 모바일용 소스
  99. // if (StringUtils.isNotBlank(param.getFsrcMobile())) {
  100. // createPlanFsrcMobile(param);
  101. // }
  102. //기획전 응모이벤트
  103. // if (StringUtils.isNotBlank(param.getPrivacyPolicy())) {
  104. // int i = 0;
  105. // for (String planQtitle : param.getPlanQtitle()) {
  106. // PlanQuestAnswer planQuestAnswer = new PlanQuestAnswer();
  107. // planQuestAnswer.setPlanSq(param.getPlanSq());
  108. // planQuestAnswer.setPlanQtitle(planQtitle);
  109. // planQuestAnswer.setAttachYn(param.getAttachYn()[i]);
  110. // planQuestAnswer.setQuestNo(i);
  111. // planQuestAnswer.setRegNo(param.getRegNo());
  112. // planQuestAnswer.setUpdNo(param.getUpdNo());
  113. // planDao.savePlanQuestion(planQuestAnswer);
  114. // i++;
  115. // }
  116. // }
  117. }
  118. /*
  119. * 기획전 웹용 소스 등록
  120. */
  121. @Transactional("shopTxnManager")
  122. public Plan createPlanFsrcPc(Plan param) {
  123. int fsrcPcTotalCnt = param.getFsrcPc().toCharArray().length;
  124. int byteCnt = 1500;
  125. // 기존 소스 삭제
  126. param.setFrontGb("P");
  127. //planDao.deletePlanFsrcInfo(param);
  128. if (fsrcPcTotalCnt > byteCnt) { // 4000 바이트 이상 일 때 파싱.
  129. StringBuilder sbStr = new StringBuilder(4000);
  130. int cnt = 0;
  131. int getCnt = 0;
  132. int tempCnt = 1500;
  133. for (char ch : param.getFsrcPc().toCharArray()) {
  134. getCnt++;
  135. sbStr.append(ch);
  136. if (getCnt == tempCnt || getCnt == fsrcPcTotalCnt) {
  137. Plan planPc = new Plan();
  138. planPc.setPlanSq(param.getPlanSq());
  139. planPc.setFrontGb("P");
  140. planPc.setSeq(cnt + 1);
  141. planPc.setRegNo(param.getRegNo());
  142. planPc.setFsrc(sbStr.toString());
  143. // 초기화
  144. sbStr.delete(0, tempCnt);
  145. cnt++;
  146. tempCnt += byteCnt;
  147. planDao.savePlanFsrcInfo(planPc);
  148. }
  149. }
  150. } else {
  151. Plan planPc = new Plan();
  152. planPc.setPlanSq(param.getPlanSq());
  153. planPc.setFrontGb("P");
  154. planPc.setSeq(1);
  155. planPc.setRegNo(param.getRegNo());
  156. planPc.setFsrc(param.getFsrcPc());
  157. planDao.savePlanFsrcInfo(planPc);
  158. }
  159. return param;
  160. }
  161. /*
  162. * 기획전 모바일 소스 등록
  163. */
  164. @Transactional("shopTxnManager")
  165. public Plan createPlanFsrcMobile(Plan param) {
  166. int fsrcMobileTotalCnt = param.getFsrcMobile().toCharArray().length;
  167. int byteCnt = 1500;
  168. // 기존 소스 삭제
  169. param.setFrontGb("M");
  170. //planDao.deletePlanFsrcInfo(param);
  171. if (fsrcMobileTotalCnt > byteCnt) { // 4000 바이트 이상 일 때 파싱.
  172. StringBuilder sbStr = new StringBuilder(4000);
  173. int cnt = 0;
  174. int getCnt = 0;
  175. int tempCnt = 1500;
  176. for (char ch : param.getFsrcMobile().toCharArray()) {
  177. getCnt++;
  178. sbStr.append(ch);
  179. if (getCnt == tempCnt || getCnt == fsrcMobileTotalCnt) {
  180. Plan planMobile = new Plan();
  181. planMobile.setPlanSq(param.getPlanSq());
  182. planMobile.setFrontGb("M");
  183. planMobile.setSeq(++cnt);
  184. planMobile.setRegNo(param.getRegNo());
  185. planMobile.setFsrc(sbStr.toString());
  186. // 초기화
  187. sbStr.delete(0, tempCnt);
  188. // cnt++;
  189. tempCnt += byteCnt;
  190. planDao.savePlanFsrcInfo(planMobile);
  191. }
  192. }
  193. } else {
  194. Plan planMobile = new Plan();
  195. planMobile.setPlanSq(param.getPlanSq());
  196. planMobile.setFrontGb("M");
  197. planMobile.setSeq(1);
  198. planMobile.setRegNo(param.getRegNo());
  199. planMobile.setFsrc(param.getFsrcMobile());
  200. planDao.savePlanFsrcInfo(planMobile);
  201. }
  202. return param;
  203. }
  204. /**
  205. * 기획전 목록
  206. *
  207. * @param
  208. * @return
  209. * @author sowon
  210. * @since 2021. 2. 5
  211. */
  212. public Collection<Plan> getPlanList(Plan param) {
  213. return planDao.getPlanList(param);
  214. }
  215. /**
  216. * 기획전 목록 카운트 조회
  217. * @param param
  218. * @return int
  219. * @author sowon
  220. * @since 2021. 2. 5
  221. */
  222. public int getPlanListCount(Plan param) {
  223. return planDao.getPlanListCount(param);
  224. }
  225. /**
  226. * 기획전 삭제 처리
  227. *
  228. * @param
  229. * @return
  230. * @author rladbwnd5
  231. * @since 2021. 2. 5
  232. */
  233. @Transactional("shopTxnManager")
  234. public void deletePlan(Collection<Plan> paramList) {
  235. for (Plan plan : paramList) {
  236. plan.setUpdNo(TsaSession.getInfo().getUserNo());
  237. planDao.deletePlan(plan);
  238. }
  239. }
  240. /**
  241. * 기획전 상세 정보
  242. *
  243. * @param
  244. * @return
  245. * @author sowon
  246. * @since 2021. 2. 8
  247. */
  248. public Plan getPlanDetailInfo(Plan param) {
  249. Collection<Plan> planList = planDao.getPlanList(param);
  250. Plan planInfo = new Plan();
  251. if (!planList.isEmpty()) {
  252. for (Plan plan : planList) {
  253. planInfo = plan;
  254. }
  255. }
  256. // 날짜 설정
  257. String[] stDate = planInfo.getDispStdt().split(" ");
  258. planInfo.setStartSearchDate(stDate[0]);
  259. planInfo.setStartSearchTime(GagaStringUtil.replace(stDate[1], ":", "").substring(0, 6));
  260. String[] edDate = planInfo.getDispEddt().split(" ");
  261. planInfo.setEndSearchDate(edDate[0]);
  262. planInfo.setEndSearchTime(GagaStringUtil.replace(edDate[1], ":", "").substring(0, 6));
  263. return planInfo;
  264. }
  265. /**
  266. * 기획전 웹용 소스 조회
  267. *
  268. * @param
  269. * @return
  270. * @author sowon
  271. * @since 2021. 2. 8
  272. */
  273. public Plan getPlanFsrcPcList(Plan param) {
  274. param.setFrontGb("P");
  275. Collection<Plan> planFsrcList = planDao.getPlanFsrcList(param);
  276. Plan planPc = new Plan();
  277. for (Plan pcTemp : planFsrcList) {
  278. if (StringUtils.isNotBlank(planPc.getFsrc())) {
  279. planPc.setFsrc(planPc.getFsrc() + pcTemp.getFsrc());
  280. } else {
  281. planPc.setFsrc(pcTemp.getFsrc());
  282. }
  283. }
  284. log.debug("fsrcPc = {}", planPc.getFsrcPc());
  285. return planPc;
  286. }
  287. /**
  288. * 기획전 모바일용 소스 조회
  289. *
  290. * @param
  291. * @return
  292. * @author sowon
  293. * @since 2021. 2. 8
  294. */
  295. public Plan getPlanFsrcMobileList(Plan param) {
  296. param.setFrontGb("M");
  297. Collection<Plan> planFsrcList = planDao.getPlanFsrcList(param);
  298. Plan planMobile = new Plan();
  299. for (Plan mobileTemp : planFsrcList) {
  300. if (StringUtils.isNotBlank(planMobile.getFsrc())) {
  301. planMobile.setFsrc(planMobile.getFsrc() + mobileTemp.getFsrc());
  302. } else {
  303. planMobile.setFsrc(mobileTemp.getFsrc());
  304. }
  305. }
  306. return planMobile;
  307. }
  308. /**
  309. * 기획전 웹 수정
  310. *
  311. * @param
  312. * @return
  313. * @author sowon
  314. * @since 2021. 2. 8
  315. */
  316. @Transactional("shopTxnManager")
  317. public void updatePlanInfo(Plan param) {
  318. Plan plan = new Plan();
  319. log.debug("param {}", param);
  320. String targetPath = env.getProperty("upload.default.target.path") + "/planning";
  321. param.setRegNo(TsaSession.getInfo().getUserNo());
  322. param.setUpdNo(TsaSession.getInfo().getUserNo());
  323. // 이미지 삭제 여부에 따른 이미지 삭제 처리
  324. if (("Y").equals(param.getOrgMainPimgDelYn())) {
  325. deleteFile(targetPath, param.getOrgMainPimg());
  326. }
  327. if (("Y").equals(param.getOrgMainMimgDelYn())) {
  328. deleteFile(targetPath, param.getOrgMainMimg());
  329. }
  330. if (("Y").equals(param.getOrgDtlPimgDelYn())) {
  331. deleteFile(targetPath, param.getOrgDtlPimg());
  332. }
  333. if (("Y").equals(param.getOrgDtlMimgDelYn())) {
  334. deleteFile(targetPath, param.getOrgDtlMimg());
  335. }
  336. if (("Y").equals(param.getOrgReplyImgDelYn())) {
  337. //param.setReplyImg(null);
  338. deleteFile(targetPath, param.getOrgReplyImg());
  339. }
  340. // 기존 기획전 카테고리 삭제
  341. planDao.deletePlanCate(param);
  342. // for (int i = 0; i < param.getMultiCate().length; i++) {
  343. // planDao.deletePlanCate(param);
  344. // }
  345. String[] cate = param.getMultiCate();
  346. // 기획전 카테고리insert
  347. for (int j = 0; j < cate.length; j++) {
  348. plan.setCateNo(cate[j]);
  349. plan.setPlanSq(param.getPlanSq());
  350. plan.setRegNo(TsaSession.getInfo().getUserNo());
  351. plan.setUpdNo(TsaSession.getInfo().getUserNo());
  352. planDao.createPlanCate(plan);
  353. }
  354. // 기존 기획전 카테고리 삭제
  355. planDao.deletePlanCate(param);
  356. // for (int i = 0; i < param.getMultiCate().length; i++) {
  357. // planDao.deletePlanCate(param);
  358. // }
  359. String[] brand = param.getMultiBrand();
  360. // 기획전 브랜드 insert
  361. for (int j = 0; j < brand.length; j++) {
  362. plan.setBrandGroupNo(brand[j]);
  363. plan.setPlanSq(param.getPlanSq());
  364. plan.setRegNo(TsaSession.getInfo().getUserNo());
  365. plan.setUpdNo(TsaSession.getInfo().getUserNo());
  366. planDao.createPlanBrand(plan);
  367. }
  368. // 최종업데이트
  369. planDao.updatePlanInfo(param);
  370. // 웹용 소스
  371. // if (StringUtils.isNotBlank(param.getFsrcPc())) {
  372. // createPlanFsrcPc(param);
  373. // } else {
  374. // param.setFrontGb("P");
  375. // planDao.deletePlanFsrcInfo(param);
  376. // }
  377. //
  378. // // 모바일용 소스
  379. // if (StringUtils.isNotBlank(param.getFsrcMobile())) {
  380. // createPlanFsrcMobile(param);
  381. // } else {
  382. // param.setFrontGb("M");
  383. // planDao.deletePlanFsrcInfo(param);
  384. // }
  385. //기획전 응모이벤트
  386. // if (StringUtils.isNotBlank(param.getPrivacyPolicy())) {
  387. // int i = 0;
  388. // for (String planQtitle : param.getPlanQtitle()) {
  389. // PlanQuestAnswer planQuestAnswer = new TsaPlanQuestAnswer();
  390. // planQuestAnswer.setPlanSq(param.getPlanSq());
  391. // planQuestAnswer.setPlanQtitle(planQtitle);
  392. // planQuestAnswer.setAttachYn(param.getAttachYn()[i]);
  393. // planQuestAnswer.setQuestNo(i);
  394. // planQuestAnswer.setRegNo(param.getRegNo());
  395. // planQuestAnswer.setUpdNo(param.getUpdNo());
  396. // planDao.savePlanQuestion(planQuestAnswer);
  397. // i++;
  398. // }
  399. // }
  400. }
  401. /**
  402. * 기획전 복사
  403. *
  404. * @param 복사대상 기획전 번호
  405. * @return 복사된 기획전 번호
  406. * @author rladbwnd5
  407. * @since 2021. 02. 09
  408. */
  409. @Transactional("shopTxnManager")
  410. public Plan copyPlan(Plan param) {
  411. Plan plan = new Plan();
  412. int userNo = TsaSession.getInfo().getUserNo();
  413. // 01. 기획전 복사
  414. param.setRegNo(userNo);
  415. param.setUpdNo(userNo);
  416. planDao.createPlanCopy(param);
  417. // 02. 기획전 브랜드 복사
  418. plan.setPlanSq(param.getCopyPlanSq());
  419. Collection <Plan> brandList = planDao.getPlanBrandList(plan);
  420. for(Plan brandCd : brandList){
  421. plan.setPlanSq(param.getPlanSq());
  422. plan.setBrandGroupNo(brandCd.getBrandGroupNo());
  423. plan.setCopyPlanSq(param.getCopyPlanSq());
  424. planDao.createPlanBrandCopy(plan);
  425. }
  426. // 02. 기획전 브랜드 복사
  427. plan.setPlanSq(param.getCopyPlanSq());
  428. Collection <Plan> cateList = planDao.getPlanCateList(plan);
  429. for(Plan cateNo : cateList){
  430. plan.setPlanSq(param.getPlanSq());
  431. plan.setCateNo(cateNo.getCateNo());
  432. plan.setCopyPlanSq(param.getCopyPlanSq());
  433. planDao.createPlanCateCopy(plan);
  434. }
  435. // 02. 기획전 코너 목록 조회
  436. // Plan serchCorner = new Plan();
  437. // serchCorner.setPlanSq(param.getCopyPlanSq());
  438. // Collection<TsaPlan> cornerList = marketingDao.getPlanCornerList(serchCorner);
  439. //
  440. // for (TsaPlan cornerInfo : cornerList) {
  441. // // 03. 기획전 코너 복사
  442. // TsaPlan copyCorner = new TsaPlan();
  443. // copyCorner.setPlanSq(plan.getPlanSq());
  444. // copyCorner.setCopyPlanDtlSq(cornerInfo.getPlanDtlSq());
  445. // copyCorner.setRegId(userId);
  446. // copyCorner.setUpdId(userId);
  447. // marketingDao.createPlanCornerCopy(copyCorner);
  448. // plan.setPlanDtlSq(copyCorner.getPlanDtlSq());
  449. //
  450. // // 04. 상품 조회
  451. // TsaPlan searchGoods = new TsaPlan();
  452. // searchGoods.setPlanDtlSq(cornerInfo.getPlanDtlSq());
  453. // Collection<TsaPlan> goodsList = marketingDao.getPlanGoodsList(searchGoods);
  454. //
  455. // // 05. 상품 복사
  456. // for (TsaPlan goodsInfo : goodsList) {
  457. // goodsInfo.setPlanDtlSq(plan.getPlanDtlSq());
  458. // goodsInfo.setRegId(userId);
  459. // goodsInfo.setUpdId(userId);
  460. // marketingDao.createPlanGoodsCopy(goodsInfo);
  461. // }
  462. // }
  463. return plan;
  464. }
  465. /**
  466. * 파일 삭제
  467. *
  468. * @param targetPath
  469. * @param excelFilename
  470. * @author sowon
  471. * @since 2021. 2. 8
  472. */
  473. private void deleteFile(String targetPath, String excelFilename) {
  474. // 파일 삭제
  475. try {
  476. GagaFileUtil.deleteFile(GagaFileUtil.getConcatenationPath(targetPath, excelFilename));
  477. } catch (IOException e) {
  478. // Nothing Do
  479. }
  480. }
  481. /**
  482. * 기획전 브랜드 목록
  483. *
  484. * @param
  485. * @return
  486. * @author sowon
  487. * @since 2021. 2. 9
  488. */
  489. public Collection<Plan> getPlanBrandList(Plan param){
  490. return planDao.getPlanBrandList(param);
  491. }
  492. /**
  493. * 기획전 카테고리 목록
  494. *
  495. * @param
  496. * @return
  497. * @author sowon
  498. * @since 2021. 2. 15
  499. */
  500. public Collection<Plan> getPlanCateList(Plan param){
  501. return planDao.getPlanCateList(param);
  502. }
  503. /**
  504. * 기획전 코너 목록 조회
  505. *
  506. * @param
  507. * @return
  508. * @author sowon
  509. * @since 2021. 2. 17
  510. */
  511. public Collection<Plan> getPlanCornerList(Plan param) {
  512. Collection<Plan> cornerList = planDao.getPlanCornerList(param);
  513. for (Plan corner : cornerList) {
  514. // 날짜 설정
  515. String[] stDate = corner.getDispStdt().split(" ");
  516. corner.setStartSearchDate(stDate[0]);
  517. corner.setStartSearchTime(stDate[1].substring(0, 8));
  518. String[] edDate = corner.getDispEddt().split(" ");
  519. corner.setEndSearchDate(edDate[0]);
  520. corner.setEndSearchTime(edDate[1].substring(0, 8));
  521. }
  522. return cornerList;
  523. }
  524. /**
  525. * 기획전 코너 시퀀스 조회
  526. *
  527. * @param
  528. * @return
  529. * @author sowon
  530. * @since 2021. 2. 15
  531. */
  532. public Integer getPlanDtlSq(Plan param) {
  533. return planDao.getPlanDtlSq(param);
  534. }
  535. /**
  536. * 기획전 코너 삭제 처리
  537. *
  538. * @param
  539. * @return
  540. * @author sowon
  541. * @since 2021. 2. 17
  542. */
  543. @Transactional("shopTxnManager")
  544. public void deletePlanCornerInfo(Collection<Plan> paramList) {
  545. for (Plan cornerInfo : paramList) {
  546. planDao.deletePlanCornerInfo(cornerInfo);
  547. planDao.deletePlanCornerGoods(cornerInfo);
  548. }
  549. }
  550. /**
  551. * 기획전 코너 상품 삭제 처리
  552. *
  553. * @param
  554. * @return
  555. * @author rladbwnd5
  556. * @since 2021. 2. 18
  557. */
  558. @Transactional("shopTxnManager")
  559. public void deletePlanCornerGoods(Collection<Plan> paramList) {
  560. for (Plan cornerInfo : paramList) {
  561. planDao.deletePlanCornerGoods(cornerInfo);
  562. }
  563. }
  564. /**
  565. * 기획전 코너 저장
  566. *
  567. * @param
  568. * @return
  569. * @author sowon
  570. * @since 2021. 2. 17
  571. */
  572. @Transactional("shopTxnManager")
  573. public void savePlanCornerInfo(Collection<Plan> paramList) {
  574. for (Plan cornerInfo : paramList) {
  575. cornerInfo.setRegNo(TsaSession.getInfo().getUserNo());
  576. cornerInfo.setUpdNo(TsaSession.getInfo().getUserNo());
  577. planDao.savePlanCornerInfo(cornerInfo);
  578. }
  579. }
  580. /**
  581. * 기획전 코너 상품 조회
  582. *
  583. * @param
  584. * @return
  585. * @author sowon
  586. * @since 2021. 2. 17
  587. */
  588. public Collection<Plan> getPlanGoodsList(Plan param) {
  589. return planDao.getPlanGoodsList(param);
  590. }
  591. /**
  592. * 기획전 코너 상품 조회 건수
  593. *
  594. * @param
  595. * @return
  596. * @author sowon
  597. * @since 2021. 2. 17
  598. */
  599. public int getPlanGoodsListCount(Plan param) {
  600. return planDao.getPlanGoodsListCount(param);
  601. }
  602. /**
  603. * 기획전 코너 상품 추가
  604. *
  605. * @param
  606. * @return
  607. * @author sowon
  608. * @since 2021. 2. 17
  609. */
  610. @Transactional("shopTxnManager")
  611. public void savePlanGoods(Collection<Plan> paramList) {
  612. for (Plan param : paramList) {
  613. savePlanCornerGoods(param);
  614. }
  615. }
  616. /**
  617. * 기획전 코너 상품 저장
  618. *
  619. * @param
  620. * @return
  621. * @author sowon
  622. * @since 2021. 2. 17
  623. */
  624. @Transactional("shopTxnManager")
  625. public void savePlanCornerGoods(Plan param) {
  626. Plan plan = new Plan();
  627. plan.setRegNo(TsaSession.getInfo().getUserNo());
  628. plan.setUpdNo(TsaSession.getInfo().getUserNo());
  629. plan.setGoodsCd(param.getGoodsCd());
  630. plan.setPlanDtlSq(param.getPlanDtlSq());
  631. planDao.savePlanCornerGoods(plan);
  632. }
  633. /**
  634. * 기획전 코너 복사
  635. *
  636. * @param
  637. * @return
  638. * @author sowon
  639. * @since 2021. 2. 18
  640. */
  641. @Transactional("shopTxnManager")
  642. public void copyPlanCorner(Collection<Plan> paramList) {
  643. try {
  644. for (Plan planInfo : paramList) {
  645. planInfo.setRegNo(TsaSession.getInfo().getUserNo());
  646. planInfo.setUpdNo(TsaSession.getInfo().getUserNo());
  647. planInfo.setPlanDtlSq(planDao.getPlanDtlSq(planInfo));
  648. // 코너 복사
  649. planDao.createPlanCornerCopy(planInfo);
  650. // 상품 복사 시 적용 할 상세일련번호
  651. Integer planDtlSq = planInfo.getPlanDtlSq();
  652. // 상품 조회
  653. Plan planSearch = new Plan();
  654. planSearch.setPlanDtlSq(planInfo.getCopyPlanDtlSq());
  655. Collection<Plan> goodsList = planDao.getPlanGoodsList(planSearch);
  656. // 상품 복사
  657. if (goodsList != null && !goodsList.isEmpty()) {
  658. for (Plan goodsInfo : goodsList) {
  659. goodsInfo.setPlanDtlSq(planDtlSq);
  660. goodsInfo.setRegNo(planInfo.getRegNo());
  661. goodsInfo.setUpdNo(planInfo.getUpdNo());
  662. planDao.createPlanGoodsCopy(goodsInfo);
  663. }
  664. }
  665. }
  666. } catch (Exception e) {
  667. log.info("[기획전 복사 중 Error] {}", e.toString());
  668. throw new IllegalStateException("기획전 복사 실패");
  669. }
  670. }
  671. /**
  672. * 기획전 코너 상품 엑셀 저장
  673. *
  674. * @param
  675. * @return
  676. * @author sowon
  677. * @since 2021. 2. 18
  678. */
  679. @Transactional("shopTxnManager")
  680. public void createExceluploadGoods(Collection<GagaMap> ecxelGoodsList, Plan param) {
  681. String targetPath = env.getProperty("upload.excel.target.path");
  682. if ((ecxelGoodsList == null || ecxelGoodsList.isEmpty())) {
  683. deleteFile(targetPath, param.getExcelFileNm());
  684. throw new IllegalStateException("저장 할 데이터가 없습니다.");
  685. }
  686. Collection<Plan> dtlPlan = new ArrayList<>();
  687. Collection<Plan> goodsList = new ArrayList<>();
  688. long tempPlanDtlSq = 0;
  689. for (GagaMap gagaMap : ecxelGoodsList) {
  690. Plan planGoods = mapper.convertValue(gagaMap, Plan.class);
  691. planGoods.setPlanSq(param.getPlanSq());
  692. String planDtlSq = String.valueOf(planGoods.getPlanDtlSq());
  693. if (StringUtils.isBlank(planDtlSq)) {
  694. throw new IllegalStateException("상품코드 : " + planGoods.getGoodsCd() + " 기획전 코너 번호가 없습니다.");
  695. }
  696. if (StringUtils.isBlank(planGoods.getGoodsCd())) {
  697. throw new IllegalStateException("비어 있는 상품코드가 존재합니다.");
  698. }
  699. // 중복 확인 위한 데이터 적제
  700. if (tempPlanDtlSq != planGoods.getPlanDtlSq()) {
  701. dtlPlan.add(planGoods);
  702. }
  703. // 상품 데이터 적제
  704. goodsList.add(planGoods);
  705. }
  706. // 기획전 유효성 체크
  707. for (Plan plan : dtlPlan) {
  708. Plan searchCorner = new Plan();
  709. searchCorner.setPlanSq(plan.getPlanSq());
  710. searchCorner.setPlanDtlSq(plan.getPlanDtlSq());
  711. Collection<Plan> cornerList = planDao.getPlanCornerList(searchCorner);
  712. if (cornerList == null || cornerList.isEmpty()) {
  713. throw new IllegalStateException("상품코드 : " + plan.getGoodsCd() + "의 " + plan.getPlanDtlSq() + " 기획전 코너가 존재 하지 않습니다.");
  714. }
  715. }
  716. // 기획전 상품 저장
  717. for (Plan goods : goodsList) {
  718. savePlanCornerGoods(goods);
  719. }
  720. }
  721. /**
  722. * 기획전 회원구분 조회
  723. *
  724. * @param
  725. * @return
  726. * @author sowon
  727. * @since 2021. 2. 23
  728. */
  729. public Collection<Plan> getPlanCustGbList(Plan param) {
  730. return planDao.getPlanCustGbList(param);
  731. }
  732. /**
  733. * 기획전 회원등급 조회
  734. *
  735. * @param
  736. * @return
  737. * @author sowon
  738. * @since 2021. 2. 23
  739. */
  740. public Collection<Plan> getPlanCustGradeList(Plan param) {
  741. return planDao.getPlanCustGradeList(param);
  742. }
  743. /**
  744. * 기획전 템플릿 등록
  745. *
  746. * @param
  747. * @return
  748. * @author sowon
  749. * @since 2021. 2. 25
  750. */
  751. public void createPlanContents(Plan param) {
  752. Integer regNo = TsaSession.getInfo().getUserNo();
  753. // 리뷰 등록
  754. Plan rePlan = new Plan();
  755. String[] reviewData = param.getAllReviewData();
  756. //리뷰 등록 - tb_plan_contents
  757. rePlan.setRegNo(regNo);
  758. rePlan.setUpdNo(regNo);
  759. rePlan.setTmplType("G082_20");
  760. rePlan.setTitle(param.getReTitle());
  761. rePlan.setDispYn(param.getReDispYn());
  762. rePlan.setDispOrd(param.getReDispOrd());
  763. }
  764. /**
  765. * 기획전 템플릿 목록 카운트 조회
  766. * @param param
  767. * @return int
  768. * @author sowon
  769. * @since 2021. 2. 25
  770. */
  771. public int getPlanContentsCount(Plan param) {
  772. return planDao.getPlanContentsCount(param);
  773. }
  774. /**
  775. * 기획전 템플릿 아이템 등록
  776. *
  777. * @param
  778. * @return
  779. * @author sowon
  780. * @since 2021. 2. 25
  781. */
  782. void createPlanContentsItem(Plan param) {
  783. }
  784. }