commit 0ffaba5d91675e7b490ea8338d57eeb6e183eab3 Author: wlals Date: Tue Feb 28 17:50:12 2023 +0900 init setting diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0369289 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.idea/ +.DS_Store +clfd-shop-web.iml +target/ +.settings/ +.classpath +.project +src/main/resources/rebel.xml \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d30bd7f --- /dev/null +++ b/pom.xml @@ -0,0 +1,274 @@ + + 4.0.0 + kr.co.jinwoosi.clfd + clfd-shop-web + 1.0 + war + Color food SaaS system + 사용자 맞춤형 컬러푸드 샾 + + + + mvn2 + https://repo1.maven.org/maven2/ + + true + + + true + + + + egovframe + https://maven.egovframe.go.kr/maven/ + + true + + + false + + + + + + 3.6.0 + 1.2 + 3.0.5 + 1.7.21 + 1.1.7 + 2.7.3 + 1.2.5 + 1.4 + 1.2 + 5.1.38 + + UTF-8 + UTF-8 + + + + + egovframework.rte + egovframework.rte.ptl.mvc + ${egovframework.rte.version} + + + commons-logging + commons-logging + + + log4j-slf4j-impl + org.apache.logging.log4j + + + + + egovframework.rte + egovframework.rte.psl.dataaccess + ${egovframework.rte.version} + + + log4j-slf4j-impl + org.apache.logging.log4j + + + + + egovframework.rte + egovframework.rte.fdl.security + ${egovframework.rte.version} + + + + javax.servlet + jstl + ${jstl.version} + + + + org.apache.tiles + tiles-jsp + ${tiles.version} + + + + commons-dbcp + commons-dbcp + ${commons-dbcp.version} + + + org.mybatis + mybatis-spring + ${mybatis.spring.version} + + + + commons-fileupload + commons-fileupload + 1.3.1 + + + commons-io + commons-io + 2.5 + + + + net.sourceforge.jexcelapi + jxl + 2.6.10 + + + org.apache.poi + poi + 3.14 + + + org.apache.poi + poi-ooxml + 3.14 + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.databind.version} + + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + com.googlecode.log4jdbc + log4jdbc + ${log4jdbc.version} + + + + + + org.springframework + spring-test + 4.3.20.RELEASE + + + + junit + junit + 4.12 + test + + + + com.oracle + ojdbc6 + 11.2.0.4 + system + ${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + + javax.servlet.jsp + javax.servlet.jsp-api + 2.3.3 + provided + + + + + org.projectlombok + lombok + 1.18.18 + provided + + + + + org.mybatis + mybatis-typehandlers-jsr310 + 1.0.0 + + + javax.mail + javax.mail-api + 1.6.2 + + + com.sun.mail + javax.mail + 1.6.2 + + + + + org.json + json + 20210307 + + + + + com.google.code.gson + gson + 2.8.7 + + + + + org.apache.logging.log4j + log4j-core + 2.17.0 + + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.17.0 + test + + + + + + + + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + maven-war-plugin + 2.4 + + false + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.12.4 + + true + + + + + diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/base/model/ClfdBaseModel.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/base/model/ClfdBaseModel.java new file mode 100644 index 0000000..2098d80 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/base/model/ClfdBaseModel.java @@ -0,0 +1,46 @@ +package kr.co.jinwoosi.clfd.clfd.base.model; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import kr.co.jinwoosi.clfd.clfd.util.LocalDateTimeDeserializer; +import kr.co.jinwoosi.clfd.clfd.util.LocalDateTimeSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@SuperBuilder +public class ClfdBaseModel { + private Long regId; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime regDt; + private Long updId; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime updDt; + private Long delId; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss") + @JsonDeserialize(using = LocalDateTimeDeserializer.class) + @JsonSerialize(using = LocalDateTimeSerializer.class) + private LocalDateTime delDt; + private String recSt; + + private Integer start; + private Integer length; + private String sort; + private String sortOrd; + private Boolean pagingYn; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/bod/web/ClfdBodController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/bod/web/ClfdBodController.java new file mode 100644 index 0000000..b29381a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/bod/web/ClfdBodController.java @@ -0,0 +1,41 @@ +package kr.co.jinwoosi.clfd.clfd.bod.web; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodArtiSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodArtiService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; + +@Controller +public class ClfdBodController { + + @Autowired + private BodArtiService bodArtiService; + + @RequestMapping(value = "/clfd/bod/notice/list.do") + public String noticeList() { + return "clfd/bod/notice/list"; + } + + @RequestMapping(value = "/clfd/bod/list.json") + @ResponseBody + public HashMap boardListJson(BodArtiSearch bodArtiSearch) { + HashMap result = new HashMap<>(); + result.put("boardList", bodArtiService.selectList(bodArtiSearch)); + result.put("result", "success"); + return result; + } + + @RequestMapping(value = "/clfd/bod/notice/dtl.do") + public String noticeDtl(Model model, HttpServletRequest request, BodArtiSearch bodArtiSearch) { + bodArtiService.updateHit(Long.parseLong(request.getParameter("artiId"))); + model.addAttribute("bodArti", bodArtiService.select(bodArtiSearch)); + return "clfd/bod/notice/dtl"; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsAnsMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsAnsMapper.java new file mode 100644 index 0000000..4772da0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsAnsMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAns; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAnsSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper +public interface DgnsAnsMapper extends BaseMapper { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsAskMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsAskMapper.java new file mode 100644 index 0000000..189cdd0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsAskMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAsk; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAskSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper +public interface DgnsAskMapper extends BaseMapper { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsDtlMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsDtlMapper.java new file mode 100644 index 0000000..e76eae5 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsDtlMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsDtl; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsDtlSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper +public interface DgnsDtlMapper extends BaseMapper { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsListMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsListMapper.java new file mode 100644 index 0000000..e137809 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsListMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsList; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsListSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper +public interface DgnsListMapper extends BaseMapper { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsMapper.java new file mode 100644 index 0000000..565790c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/DgnsMapper.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.Dgns; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +import java.util.List; + +@Mapper +public interface DgnsMapper extends BaseMapper { + + List skinTypeStats(DgnsSearch dgnsSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/SkTyMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/SkTyMapper.java new file mode 100644 index 0000000..c22e87a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/mapper/SkTyMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTy; +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTySearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper +public interface SkTyMapper extends BaseMapper { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/Dgns.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/Dgns.java new file mode 100644 index 0000000..390ee2d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/Dgns.java @@ -0,0 +1,46 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import kr.co.jinwoosi.clfd.clfd.base.model.ClfdBaseModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString(callSuper = true) +public class Dgns extends ClfdBaseModel { + private Long dgnsId; + private Long userId; + private Long skTyId; + private Integer dgnsCnt; + private Double odTotalScore; + private Double srTotalScore; + private Double pnTotalScore; + private Double wtTotalScore; + private Long odDgnsDtlId; + private Long srDgnsDtlId; + private Long pnDgnsDtlId; + private Long wtDgnsDtlId; + + // 진단 상세 + private DgnsDtl odDgnsDtl; + private DgnsDtl srDgnsDtl; + private DgnsDtl pnDgnsDtl; + private DgnsDtl wtDgnsDtl; + // 피부타입 + private SkTy skTy; + private Long skTyCount; + private String skTyCd; + + private String dgnsCntRct; // Y:사용자의 최근 피부테스트 결과 조회 + + public List getDgnsDtlList() { + return new ArrayList<>(Arrays.asList(odDgnsDtl, srDgnsDtl, pnDgnsDtl, wtDgnsDtl)); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAns.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAns.java new file mode 100644 index 0000000..eca40d6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAns.java @@ -0,0 +1,18 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.*; + +@ToString +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class DgnsAns { + private Long dgnsAnsId; + private Long dgnsAskId; + private String dgnsAnsCont; + private int dgnsAnsOrd; + @JsonIgnore + private Double dgnsScore; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAnsSearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAnsSearch.java new file mode 100644 index 0000000..7053c41 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAnsSearch.java @@ -0,0 +1,8 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.*; + +@ToString +@NoArgsConstructor +public class DgnsAnsSearch extends DgnsAns { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAsk.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAsk.java new file mode 100644 index 0000000..cd67049 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAsk.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.*; + +import java.util.List; + +@ToString +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class DgnsAsk { + private Long dgnsAskId; + private String dgnsAskCont; + private String dgnsTyCd; + private int dgnsAskOrd; + + private List dgnsAnsList; + + public DgnsAsk(Long dgnsAskId) { + this.dgnsAskId = dgnsAskId; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAskSearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAskSearch.java new file mode 100644 index 0000000..672ab0c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsAskSearch.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.*; + +@ToString(callSuper = true) +@NoArgsConstructor +public class DgnsAskSearch extends DgnsAsk { + public DgnsAskSearch(Long dgnsAskId) { + super(dgnsAskId); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsDtl.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsDtl.java new file mode 100644 index 0000000..c82af09 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsDtl.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DgnsDtl { + private Long dgnsDtlId; + private String dgnsTyCd; + private String dgnsCont; + private Double dgnsMin; + private Double dgnsMax; + private String dgnsSkTyDtlCd; + private String dgnsSkTyDtlContKr; + private String dgnsSkTyDtlContEn; + + public boolean isBetweenWithDgnsDtl(Double totalDgnsScore) { + return dgnsMin <= totalDgnsScore && totalDgnsScore <= dgnsMax; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsDtlSearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsDtlSearch.java new file mode 100644 index 0000000..9ff8f8a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsDtlSearch.java @@ -0,0 +1,12 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ToString(callSuper = true) +@NoArgsConstructor +public class DgnsDtlSearch extends DgnsDtl { + public DgnsDtlSearch(Long dgnsDtlId) { + super.setDgnsDtlId(dgnsDtlId); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsList.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsList.java new file mode 100644 index 0000000..21713d3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsList.java @@ -0,0 +1,18 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import kr.co.jinwoosi.clfd.clfd.base.model.ClfdBaseModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString(callSuper = true) +public class DgnsList extends ClfdBaseModel { + private Long dgnsListId; + private Long dgnsAskId; + private Long dgnsAnsId; + private Long dgnsId; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsListSearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsListSearch.java new file mode 100644 index 0000000..bbac2fc --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsListSearch.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ToString(callSuper = true) +@NoArgsConstructor +public class DgnsListSearch extends DgnsList { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsSearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsSearch.java new file mode 100644 index 0000000..6ccb3fe --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/DgnsSearch.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ToString(callSuper = true) +@NoArgsConstructor +public class DgnsSearch extends Dgns { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/SkTy.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/SkTy.java new file mode 100644 index 0000000..1d435e7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/SkTy.java @@ -0,0 +1,17 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.*; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class SkTy { + private Long skTyId; + private String skTyCd; + private String skTyNm; + private String skTyDtl; + + public SkTy(String skTyCd) { + this.skTyCd = skTyCd; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/SkTySearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/SkTySearch.java new file mode 100644 index 0000000..6fd277b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/model/SkTySearch.java @@ -0,0 +1,12 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.model; + +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ToString(callSuper = true) +@NoArgsConstructor +public class SkTySearch extends SkTy{ + public SkTySearch(String skTyCd) { + super(skTyCd); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsAnsService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsAnsService.java new file mode 100644 index 0000000..871b750 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsAnsService.java @@ -0,0 +1,25 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.mapper.DgnsAnsMapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAns; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAnsSearch; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DgnsAnsService { + + @Autowired + private DgnsAnsMapper dgnsAnsMapper; + + public List selectList(DgnsAnsSearch dgnsAnsSearch) { + return dgnsAnsMapper.selectList(dgnsAnsSearch); + } + + public DgnsAns select(DgnsAnsSearch dgnsAnsSearch) { + return dgnsAnsMapper.select(dgnsAnsSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsAskService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsAskService.java new file mode 100644 index 0000000..50e7236 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsAskService.java @@ -0,0 +1,54 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.mapper.DgnsAskMapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAns; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAnsSearch; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAsk; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsAskSearch; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class DgnsAskService { + + public static List cashedDgnsAskList = null; + + @Autowired + private DgnsAskMapper dgnsAskMapper; + + @Autowired + private DgnsAnsService dgnsAnsService; + + public List selectList(DgnsAskSearch dgnsAskSearch) { + return dgnsAskMapper.selectList(dgnsAskSearch); + } + + public DgnsAsk select(DgnsAskSearch dgnsAskSearch) { + return dgnsAskMapper.select(dgnsAskSearch); + } + + public List selectListWithDgnsAns(DgnsAskSearch dgnsAskSearch) { + List dgnsAskList = selectList(dgnsAskSearch); + List dgnsAnsList = dgnsAnsService.selectList(new DgnsAnsSearch()); + dgnsAskList.forEach(dgnsAsk -> + dgnsAsk.setDgnsAnsList( + dgnsAnsList + .stream() + .filter(dgnsAns -> dgnsAsk.getDgnsAskId() == dgnsAns.getDgnsAskId()) + .collect(Collectors.toList()) + ) + ); + return dgnsAskList; + } + + public List getCashedDgnsAskList(boolean refresh) { + if (refresh || cashedDgnsAskList == null) { + cashedDgnsAskList = selectListWithDgnsAns(new DgnsAskSearch()); + } + return cashedDgnsAskList; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsDtlService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsDtlService.java new file mode 100644 index 0000000..e463f1e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsDtlService.java @@ -0,0 +1,33 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.mapper.DgnsDtlMapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsDtl; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsDtlSearch; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DgnsDtlService { + + public static List cashedDgnsDtlList = null; + + @Autowired + private DgnsDtlMapper dgnsDtlMapper; + + public List selectList(DgnsDtlSearch dgnsDtlSearch) { + return dgnsDtlMapper.selectList(dgnsDtlSearch); + } + + public DgnsDtl select(DgnsDtlSearch dgnsDtlSearch) { + return dgnsDtlMapper.select(dgnsDtlSearch); + } + + public List getCashedDgnsDtlList(boolean refresh) { + if (refresh || cashedDgnsDtlList == null) { + cashedDgnsDtlList = selectList(new DgnsDtlSearch()); + } + return cashedDgnsDtlList; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsListService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsListService.java new file mode 100644 index 0000000..e546905 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsListService.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.mapper.DgnsListMapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsList; +import kr.co.jinwoosi.clfd.clfd.dgns.vo.DgnsSelection; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DgnsListService { + + @Autowired + private DgnsListMapper dgnsListMapper; + + public void saveDgnsList(Long userId, Long dgnsId, List dgnsSelectionList) { + for(DgnsSelection dgnsSelection : dgnsSelectionList) { + DgnsList dgnsList = new DgnsList(); + dgnsList.setRegId(userId); + dgnsList.setDgnsId(dgnsId); + dgnsList.setDgnsAskId(Long.parseLong(dgnsSelection.getDgnsAskId())); + dgnsList.setDgnsAnsId(Long.parseLong(dgnsSelection.getDgnsAnsId())); + dgnsListMapper.insert(dgnsList); + } + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsService.java new file mode 100644 index 0000000..02d7dfc --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/DgnsService.java @@ -0,0 +1,210 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.mapper.DgnsMapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.*; +import kr.co.jinwoosi.clfd.clfd.dgns.vo.DgnsSelection; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class DgnsService { + + @Autowired + private DgnsMapper dgnsMapper; + @Autowired + private DgnsAskService dgnsAskService; + @Autowired + private DgnsDtlService dgnsDtlService; + @Autowired + private SkTyService skTyService; + + public List selectList(DgnsSearch dgnsSearch) { + List dgnsList = dgnsMapper.selectList(dgnsSearch); + List dgnsDtlList = dgnsDtlService.getCashedDgnsDtlList(false); + List skTyList = skTyService.getCashedSkTyList(false); + for (Dgns dgns : dgnsList) { + // 진단 상세 저장 + for (DgnsDtl dgnsDtl : dgnsDtlList) { + Long dgnsDtlId = dgnsDtl.getDgnsDtlId(); + if (dgnsDtlId.equals(dgns.getOdDgnsDtlId())) { + dgns.setOdDgnsDtl(dgnsDtl); + } else if (dgnsDtlId.equals(dgns.getSrDgnsDtlId())) { + dgns.setSrDgnsDtl(dgnsDtl); + } else if (dgnsDtlId.equals(dgns.getPnDgnsDtlId())) { + dgns.setPnDgnsDtl(dgnsDtl); + } else if (dgnsDtlId.equals(dgns.getWtDgnsDtlId())) { + dgns.setWtDgnsDtl(dgnsDtl); + } + } + // 피부타입 저장 + for (SkTy skTy : skTyList) { + if (dgns.getSkTyId().equals(skTy.getSkTyId())) { + dgns.setSkTy(skTy); + break; + } + } + } + return dgnsList; + } + + public Dgns select(DgnsSearch dgnsSearch) { + Dgns dgns = dgnsMapper.select(dgnsSearch); + if (dgns==null) { + return null; + } + // 피부타입 저장 + SkTySearch skTySearch = new SkTySearch(); + skTySearch.setSkTyId(dgns.getSkTyId()); + SkTy skTy = skTyService.select(skTySearch); + dgns.setSkTy(skTy); + // 진단상세 저장 + List dgnsDtlList = dgnsDtlService.getCashedDgnsDtlList(false); + dgns.setOdDgnsDtl(findDgnsDtlById(dgnsDtlList, dgns.getOdDgnsDtlId())); + dgns.setSrDgnsDtl(findDgnsDtlById(dgnsDtlList, dgns.getSrDgnsDtlId())); + dgns.setPnDgnsDtl(findDgnsDtlById(dgnsDtlList, dgns.getPnDgnsDtlId())); + dgns.setWtDgnsDtl(findDgnsDtlById(dgnsDtlList, dgns.getWtDgnsDtlId())); + return dgns; + } + + // 진단 결과를 저장 + public void saveDgns(Long userId, Dgns dgns) { + dgns.setUserId(userId); + dgns.setRegId(userId); + DgnsSearch dgnsCountSearch = new DgnsSearch(); + dgnsCountSearch.setUserId(userId); + dgnsCountSearch.setRecSt("Y"); + dgns.setDgnsCnt(dgnsMapper.count(dgnsCountSearch) + 1); // 진단회차 저장 + dgnsMapper.insert(dgns); + } + + public Dgns examDgns(List dgnsSelectionList) { + Dgns dgns = new Dgns(); + List dgnsAskList = dgnsAskService.getCashedDgnsAskList(false); + List dgnsDtlList = dgnsDtlService.getCashedDgnsDtlList(false); + dgns.setOdTotalScore(calculateDgnsTotalScore("OD", dgnsAskList, dgnsSelectionList)); + dgns.setSrTotalScore(calculateDgnsTotalScore("SR", dgnsAskList, dgnsSelectionList)); + dgns.setPnTotalScore(calculateDgnsTotalScore("PN", dgnsAskList, dgnsSelectionList)); + dgns.setWtTotalScore(calculateDgnsTotalScore("WT", dgnsAskList, dgnsSelectionList)); + dgns.setOdDgnsDtl(findDgnsDtlByScore("OD", dgnsDtlList, dgns.getOdTotalScore())); + dgns.setSrDgnsDtl(findDgnsDtlByScore("SR", dgnsDtlList, dgns.getSrTotalScore())); + dgns.setPnDgnsDtl(findDgnsDtlByScore("PN", dgnsDtlList, dgns.getPnTotalScore())); + dgns.setWtDgnsDtl(findDgnsDtlByScore("WT", dgnsDtlList, dgns.getWtTotalScore())); + dgns.setOdDgnsDtlId(dgns.getOdDgnsDtl().getDgnsDtlId()); + dgns.setSrDgnsDtlId(dgns.getSrDgnsDtl().getDgnsDtlId()); + dgns.setPnDgnsDtlId(dgns.getPnDgnsDtl().getDgnsDtlId()); + dgns.setWtDgnsDtlId(dgns.getWtDgnsDtl().getDgnsDtlId()); + dgns.setSkTy(skTyService.selectSkTyByDgnsDtlList(dgns.getDgnsDtlList())); + dgns.setSkTyId(dgns.getSkTy().getSkTyId()); + return dgns; + } + + public Dgns examDgnsByScore(String odScore, String srScore, String pnScore, String wtScore) { + Dgns dgns = new Dgns(); + List dgnsDtlList = dgnsDtlService.getCashedDgnsDtlList(false); + dgns.setOdTotalScore(Double.parseDouble(odScore)); + dgns.setSrTotalScore(Double.parseDouble(srScore)); + dgns.setPnTotalScore(Double.parseDouble(pnScore)); + dgns.setWtTotalScore(Double.parseDouble(wtScore)); + dgns.setOdDgnsDtl(findDgnsDtlByScore("OD", dgnsDtlList, dgns.getOdTotalScore())); + dgns.setSrDgnsDtl(findDgnsDtlByScore("SR", dgnsDtlList, dgns.getSrTotalScore())); + dgns.setPnDgnsDtl(findDgnsDtlByScore("PN", dgnsDtlList, dgns.getPnTotalScore())); + dgns.setWtDgnsDtl(findDgnsDtlByScore("WT", dgnsDtlList, dgns.getWtTotalScore())); + dgns.setOdDgnsDtlId(dgns.getOdDgnsDtl().getDgnsDtlId()); + dgns.setSrDgnsDtlId(dgns.getSrDgnsDtl().getDgnsDtlId()); + dgns.setPnDgnsDtlId(dgns.getPnDgnsDtl().getDgnsDtlId()); + dgns.setWtDgnsDtlId(dgns.getWtDgnsDtl().getDgnsDtlId()); + dgns.setSkTy(skTyService.selectSkTyByDgnsDtlList(dgns.getDgnsDtlList())); + dgns.setSkTyId(dgns.getSkTy().getSkTyId()); + return dgns; + } + + public Double calculateDgnsTotalScore(String dgnsTyCd, List dgnsAskList, List dgnsSelectionList) { + Double totalScore = 0.0; + List filteredDgnsAskList = dgnsAskList.stream().filter(dgnsAsk -> dgnsAsk.getDgnsTyCd().equals(dgnsTyCd)).collect(Collectors.toList()); + for (DgnsAsk dgnsAsk : filteredDgnsAskList) { + DgnsSelection dgnsSelection = dgnsSelectionList + .stream() + .filter(ds -> ds.getDgnsAskId().equals(String.valueOf(dgnsAsk.getDgnsAskId()))) + .collect(Collectors.toList()) + .stream() + .findFirst().orElseThrow(RuntimeException::new); + DgnsAns dgnsAns = dgnsAsk.getDgnsAnsList() + .stream() + .filter(da -> String.valueOf(da.getDgnsAnsId()).equals(dgnsSelection.getDgnsAnsId())) + .collect(Collectors.toList()) + .stream() + .findFirst().orElseThrow(RuntimeException::new); + totalScore += dgnsAns.getDgnsScore(); + } + return totalScore; + } + + public DgnsDtl findDgnsDtlByScore(String dgnsTyCd, List dgnsDtlList, Double totalScore) { + return dgnsDtlList.stream() + .filter(dgnsDtl -> dgnsDtl.getDgnsTyCd().equals(dgnsTyCd)) + .collect(Collectors.toList()) + .stream() + .filter(dgnsDtl -> dgnsDtl.isBetweenWithDgnsDtl(totalScore)) + .findFirst() + .orElseThrow(RuntimeException::new); + } + + public DgnsDtl findDgnsDtlById(List dgnsDtlList, Long dgnsDtlId) { + return dgnsDtlList.stream() + .filter(dgnsDtl -> dgnsDtl.getDgnsDtlId().equals(dgnsDtlId)) + .findFirst() + .orElseThrow(RuntimeException::new); + } + + public String getDgnsResultText(User user, Dgns dgns) { + StringBuilder result = new StringBuilder(); + if (user!= null && user.getUserNm() !=null) { + result.append(user.getUserNm()).append("님은 "); + } else { + result.append("당신은 "); + } + + result.append(dgns.getSkTy().getSkTyCd()).append(" 타입으로 "); + result.append(dgns.getOdDgnsDtl().getDgnsCont()).append(", "); + result.append(dgns.getSrDgnsDtl().getDgnsCont()).append(", "); + result.append(dgns.getPnDgnsDtl().getDgnsCont()).append(", "); + result.append(dgns.getWtDgnsDtl().getDgnsCont()).append("입니다.\n"); + + result.append(dgns.getSkTy().getSkTyDtl()); + + return result.toString(); + } + + public String getDgnsResultTitleText(Dgns dgns) { + Integer cnt = dgns.getDgnsCnt(); + if (cnt != null) { + return cnt+"회차 테스트 종합분석 결과"; + } else { + return "진단 종합분석 결과"; + } + } + + public String getDgnsResultTime(Dgns dgns) { + LocalDateTime regDt = dgns.getRegDt(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH시 mm분"); + if (regDt == null) { + ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Seoul")); + return now.format(dateTimeFormatter); + } else { + return regDt.format(dateTimeFormatter); + } + } + + public List skinTypeStats(DgnsSearch dgnsSearch) { + return dgnsMapper.skinTypeStats(dgnsSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/SkTyService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/SkTyService.java new file mode 100644 index 0000000..a28b993 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/service/SkTyService.java @@ -0,0 +1,47 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.mapper.SkTyMapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsDtl; +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTy; +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTySearch; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SkTyService { + + public static List cashedSkTyList = null; + + @Autowired + private SkTyMapper skTyMapper; + + public List selectList(SkTySearch skTySearch) { + return skTyMapper.selectList(skTySearch); + } + + public SkTy select(SkTySearch skTySearch) { + return skTyMapper.select(skTySearch); + } + + public SkTy selectSkTyByDgnsDtlList(List dgnsDtlList) { + StringBuilder skTyCdSb = new StringBuilder(); + for(DgnsDtl dgnsDtl : dgnsDtlList) { + skTyCdSb.append(dgnsDtl.getDgnsSkTyDtlCd()); + } + String skTyCd = skTyCdSb.toString(); + List skTyList = getCashedSkTyList(false); + return skTyList.stream() + .filter(skTy -> skTy.getSkTyCd().equals(skTyCd)) + .findFirst() + .orElse(null); + } + + public List getCashedSkTyList(boolean refresh) { + if (refresh || cashedSkTyList == null) { + cashedSkTyList = selectList(new SkTySearch()); + } + return cashedSkTyList; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/vo/DgnsSelection.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/vo/DgnsSelection.java new file mode 100644 index 0000000..3858d97 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/vo/DgnsSelection.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DgnsSelection { + private String dgnsTyCd; + private String dgnsAskId; + private String dgnsAskOrd; + private String dgnsAnsId; + private String dgnsAnsOrd; + + public DgnsSelection(String dgnsAskId, String dgnsAnsId) { + this.dgnsAskId = dgnsAskId; + this.dgnsAnsId = dgnsAnsId; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/vo/DgnsSelectionWrapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/vo/DgnsSelectionWrapper.java new file mode 100644 index 0000000..25740dc --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/vo/DgnsSelectionWrapper.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class DgnsSelectionWrapper { + private List dgnsSelectionList; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/web/DgnsController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/web/DgnsController.java new file mode 100644 index 0000000..4d54d00 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/dgns/web/DgnsController.java @@ -0,0 +1,243 @@ +package kr.co.jinwoosi.clfd.clfd.dgns.web; + +import kr.co.jinwoosi.clfd.clfd.dgns.model.Dgns; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsSearch; +import kr.co.jinwoosi.clfd.clfd.dgns.service.DgnsAskService; +import kr.co.jinwoosi.clfd.clfd.dgns.service.DgnsListService; +import kr.co.jinwoosi.clfd.clfd.dgns.service.DgnsService; +import kr.co.jinwoosi.clfd.clfd.dgns.vo.DgnsSelection; +import kr.co.jinwoosi.clfd.clfd.site.service.ClfdSiteService; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Controller +public class DgnsController { + @Autowired + private ClfdSiteService clfdSiteService; + @Autowired + private DgnsAskService dgnsAskService; + @Autowired + private DgnsService dgnsService; + @Autowired + private DgnsListService dgnsListService; + @Autowired + private CdDtlService cdDtlService; + + @RequestMapping("/clfd/main.do") + public String diagnosisMainPage(HttpServletRequest request, HttpServletResponse response, Model model) { + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + return "clfd/main"; + } + + @RequestMapping(value = "/clfd/dgns/survey.do", method = RequestMethod.GET) + public String dgnsPageGet(HttpServletRequest request, HttpServletResponse response, Model model) { + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + return "clfd/dgns/survey"; + } + + @RequestMapping("/clfd/dgns/survey.json") + @ResponseBody + public HashMap dgnsSurvey() { + HashMap result = new HashMap<>(); + try { + result.put("result", "success"); + result.put("dgnsAskList", dgnsAskService.getCashedDgnsAskList(false)); + result.put("dgnsTyCdList", cdDtlService.selectList(new CdDtl("dgnsTyCd"))); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", "진단항목을 가져오는 중 에러가 발생하였습니다."); + } + return result; + } + + @RequestMapping(value = "/clfd/dgns/surveyExam.do",method = RequestMethod.GET) + public String dgnsSurveyExamDoGet() { + return "/"; + } + + @RequestMapping(value = "/clfd/dgns/surveyExam.do", method = RequestMethod.POST) + @ResponseBody + public HashMap dgnsSurveyExamDo(HttpServletRequest request, @RequestBody List dgnsSelectionList) { + HashMap result = new HashMap<>(); + String userRole= (String) request.getSession().getAttribute("userRole"); + User user = (User) request.getSession().getAttribute("user"); + + Dgns dgns = dgnsService.examDgns(dgnsSelectionList); + + if (user != null && userRole.equals("ROLE_USER")) { + dgnsService.saveDgns(user.getUserId(), dgns); + dgnsListService.saveDgnsList(user.getUserId(), dgns.getDgnsId(), dgnsSelectionList); + } + + result.put("result", "success"); + result.put("odScore", dgns.getOdTotalScore()); + result.put("srScore", dgns.getSrTotalScore()); + result.put("pnScore", dgns.getPnTotalScore()); + result.put("wtScore", dgns.getWtTotalScore()); + return result; + } + + @RequestMapping(value = "/clfd/dgns/list.do") + public String dgnsList (HttpServletRequest request, HttpServletResponse response, Model model) { + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + + return "clfd/dgns/list"; + } + + @RequestMapping(value = "/clfd/dgns/list.json") + @ResponseBody + public HashMap dgnsListJson(HttpServletRequest request, HttpServletResponse response, DgnsSearch dgnsSearch) { + HashMap result = new HashMap<>(); + + User user = (User)request.getSession().getAttribute("user"); + if (user == null) { + result.put("result", "fail"); + result.put("message", "사용자를 찾을 수 없습니다."); + return result; + } + dgnsSearch.setUserId(user.getUserId()); + dgnsSearch.setSortOrd("DESC"); + dgnsSearch.setRecSt("Y"); + dgnsSearch.setSort("DGNS_CNT"); + List dgnsList = dgnsService.selectList(dgnsSearch); + result.put("result", "success"); + result.put("dgnsList", dgnsList); + + return result; + } + + @RequestMapping(value = "/clfd/dgns/dtl.do") + public String dgnsDtl(@RequestParam("dgns") String dgnsId, HttpServletRequest request, HttpServletResponse response, Model model) { + User user = (User)request.getSession().getAttribute("user"); + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + + DgnsSearch dgnsSearch = new DgnsSearch(); + dgnsSearch.setUserId(user.getUserId()); + dgnsSearch.setDgnsId(Long.parseLong(dgnsId)); + Dgns dgns = dgnsService.select(dgnsSearch); + + model.addAttribute("dgnsTitle", dgnsService.getDgnsResultTitleText(dgns)); + model.addAttribute("dgnsTime", dgnsService.getDgnsResultTime(dgns)); + model.addAttribute("user", user); + model.addAttribute("skTy", dgns.getSkTy()); + model.addAttribute("odScore", dgns.getOdTotalScore()); + model.addAttribute("srScore", dgns.getSrTotalScore()); + model.addAttribute("pnScore", dgns.getPnTotalScore()); + model.addAttribute("wtScore", dgns.getWtTotalScore()); + if(dgns.getOdTotalScore() < 11) { + model.addAttribute("odScorePercent", String.format("%.2f", (dgns.getOdTotalScore()-4)*2/13*50)); + } else { + model.addAttribute("odScorePercent", String.format("%.2f", 50 + (dgns.getOdTotalScore()-10.5)*2/11*50)); + } + if(dgns.getSrTotalScore() < 11) { + model.addAttribute("srScorePercent", String.format("%.2f", (dgns.getSrTotalScore()-4)*2/9*50)); + } else { + model.addAttribute("srScorePercent", String.format("%.2f", 50 + (dgns.getSrTotalScore()-10.5)*2/27*50)); + } + if(dgns.getPnTotalScore() < 11) { + model.addAttribute("pnScorePercent", String.format("%.2f", (dgns.getPnTotalScore()-4)*2/13*50)); + } else { + model.addAttribute("pnScorePercent", String.format("%.2f", 50 + (dgns.getPnTotalScore()-10.5)*2/11*50)); + } + if(dgns.getWtTotalScore() < 23) { + model.addAttribute("wtScorePercent", String.format("%.2f", (dgns.getWtTotalScore()-9)*2/27*50)); + } else { + model.addAttribute("wtScorePercent", String.format("%.2f", 50 + (dgns.getWtTotalScore()-22.5)*2/27*50)); + } + model.addAttribute("resultText", dgnsService.getDgnsResultText(user, dgns)); + return "clfd/dgns/dtl"; + } + + @RequestMapping(value = "/clfd/dgns/result.do") + public String dgnsResult(@RequestParam Map params, HttpServletRequest request, Model model) { + User user = (User) request.getSession().getAttribute("user"); + + String odScore = params.get("od"); + String srScore = params.get("sr"); + String pnScore = params.get("pn"); + String wtScore = params.get("wt"); + + if (odScore == null || srScore == null || pnScore == null || wtScore == null) { + return ""; + } + + Dgns dgns = dgnsService.examDgnsByScore(odScore, srScore, pnScore, wtScore); + + if (dgns == null || dgns.getSkTy() == null) { + return ""; + } + + model.addAttribute("dgnsTitle", dgnsService.getDgnsResultTitleText(dgns)); + model.addAttribute("dgnsTime", dgnsService.getDgnsResultTime(dgns)); + model.addAttribute("user", user); + model.addAttribute("skTy", dgns.getSkTy()); + model.addAttribute("odScore", dgns.getOdTotalScore()); + model.addAttribute("srScore", dgns.getSrTotalScore()); + model.addAttribute("pnScore", dgns.getPnTotalScore()); + model.addAttribute("wtScore", dgns.getWtTotalScore()); + if(dgns.getOdTotalScore() < 11) { + model.addAttribute("odScorePercent", String.format("%.2f", (dgns.getOdTotalScore()-4)*2/13*50)); + } else { + model.addAttribute("odScorePercent", String.format("%.2f", 50 + (dgns.getOdTotalScore()-10.5)*2/11*50)); + } + if(dgns.getSrTotalScore() < 11) { + model.addAttribute("srScorePercent", String.format("%.2f", (dgns.getSrTotalScore()-4)*2/9*50)); + } else { + model.addAttribute("srScorePercent", String.format("%.2f", 50 + (dgns.getSrTotalScore()-10.5)*2/27*50)); + } + if(dgns.getPnTotalScore() < 11) { + model.addAttribute("pnScorePercent", String.format("%.2f", (dgns.getPnTotalScore()-4)*2/13*50)); + } else { + model.addAttribute("pnScorePercent", String.format("%.2f", 50 + (dgns.getPnTotalScore()-10.5)*2/11*50)); + } + if(dgns.getWtTotalScore() < 23) { + model.addAttribute("wtScorePercent", String.format("%.2f", (dgns.getWtTotalScore()-9)*2/27*50)); + } else { + model.addAttribute("wtScorePercent", String.format("%.2f", 50 + (dgns.getWtTotalScore()-22.5)*2/27*50)); + } + model.addAttribute("resultText", dgnsService.getDgnsResultText(user, dgns)); + + return "clfd/dgns/dtl"; + } + + @RequestMapping (value="/system/stats/skinType.mng", method=RequestMethod.GET) + public String skinTypeList(){ + return "system/satis/skinTypeList"; + } + + @RequestMapping (value="/system/stats/skinType.json", method=RequestMethod.POST) + @ResponseBody + public Map skinTypeList(DgnsSearch dgnsSearch){ + Map result = new HashMap(); + try { + result.put("data", dgnsService.skinTypeStats(dgnsSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/intro/web/IntroController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/intro/web/IntroController.java new file mode 100644 index 0000000..7ac9659 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/intro/web/IntroController.java @@ -0,0 +1,19 @@ +package kr.co.jinwoosi.clfd.clfd.intro.web; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Controller +public class IntroController { + + @RequestMapping("/clfd/intro.do") + public String diagnosisMainPage(HttpServletRequest request, HttpServletResponse response, Model model) { + String userRole = (String) request.getSession().getAttribute("userRole"); + model.addAttribute("loginYn", userRole); + return "clfd/intro"; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/mapper/ProdLikeMapper.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/mapper/ProdLikeMapper.java new file mode 100644 index 0000000..e3fe43c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/mapper/ProdLikeMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.clfd.prod.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.prod.model.ProdLike; +import kr.co.jinwoosi.clfd.clfd.prod.model.ProdLikeSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper +public interface ProdLikeMapper extends BaseMapper { + int deleteAndReturnCount(ProdLike prodLike); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/model/ProdLike.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/model/ProdLike.java new file mode 100644 index 0000000..8a01279 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/model/ProdLike.java @@ -0,0 +1,26 @@ +package kr.co.jinwoosi.clfd.clfd.prod.model; + +import kr.co.jinwoosi.clfd.clfd.base.model.ClfdBaseModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class ProdLike extends ClfdBaseModel { + private Long prodLikeId; + private Long prodId; + private Long userId; + + public ProdLike(Long prodLikeId) { + this.prodLikeId = prodLikeId; + } + + public ProdLike(Long prodId, Long userId) { + this.prodId = prodId; + this.userId = userId; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/model/ProdLikeSearch.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/model/ProdLikeSearch.java new file mode 100644 index 0000000..9deb2ec --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/model/ProdLikeSearch.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.clfd.prod.model; + +import lombok.NoArgsConstructor; +import lombok.ToString; + +@ToString +@NoArgsConstructor +public class ProdLikeSearch extends ProdLike{ +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/service/ClfdProdService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/service/ClfdProdService.java new file mode 100644 index 0000000..51295c2 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/service/ClfdProdService.java @@ -0,0 +1,75 @@ +package kr.co.jinwoosi.clfd.clfd.prod.service; + +import kr.co.jinwoosi.clfd.clfd.prod.model.ProdLike; +import kr.co.jinwoosi.clfd.conts.prod.mapper.ProdMapper; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ClfdProdService { + + @Autowired + private ProdMapper prodMapper; + @Autowired + private CdDtlService cdDtlService; + @Autowired + private ProdLikeService prodLikeService; + + public List selectList(ProdSearch prodSearch) { + return prodMapper.selectList(prodSearch); + } + + public List selectListWithLike(ProdSearch prodSearch, Long userId) { + List prodList = this.selectList(prodSearch); + prodList.forEach(prod -> { + ProdLike prodLike = prodLikeService.select(prod.getProdId(), userId); + prod.setLike(prodLike != null); + }); + return prodList; + } + + public Prod select(ProdSearch prodSearch) { + return prodMapper.select(prodSearch); + } + + public Prod selectWithLike(ProdSearch prodSearch, Long userId) { + Prod prod = prodMapper.select(prodSearch); + if (prod!=null) { + ProdLike prodLike = prodLikeService.select(prod.getProdId(), userId); + prod.setLike(prodLike != null); + } + return prod; + } + + public void update(Prod prod) { + prodMapper.update(prod); + } + + public List getProdTyCdDtlList() { + CdDtl cdDtl = new CdDtl(); + cdDtl.setCdId("prodTy"); + return cdDtlService.selectList(cdDtl); + } + + public void plusRcmdNo(Prod prod) { + Long rcmdNo = prod.getRcmdNo(); + if (rcmdNo==null || rcmdNo < 0) { + rcmdNo = 0L; + } + prod.setRcmdNo(++rcmdNo); + } + + public void minusRcmdNo(Prod prod) { + Long rcmdNo = prod.getRcmdNo(); + if (rcmdNo==null || rcmdNo-1 < 0) { + return; + } + prod.setRcmdNo(--rcmdNo); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/service/ProdLikeService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/service/ProdLikeService.java new file mode 100644 index 0000000..b759ebd --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/service/ProdLikeService.java @@ -0,0 +1,50 @@ +package kr.co.jinwoosi.clfd.clfd.prod.service; + +import kr.co.jinwoosi.clfd.clfd.prod.mapper.ProdLikeMapper; +import kr.co.jinwoosi.clfd.clfd.prod.model.ProdLike; +import kr.co.jinwoosi.clfd.clfd.prod.model.ProdLikeSearch; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DuplicateKeyException; +import org.springframework.stereotype.Service; + +@Service +public class ProdLikeService { + @Autowired + private ProdLikeMapper prodLikeMapper; + @Autowired + private ClfdProdService clfdProdService; + + public ProdLike select(Long prodId, Long userId) { + ProdLikeSearch prodLikeSearch = new ProdLikeSearch(); + prodLikeSearch.setProdId(prodId); + prodLikeSearch.setUserId(userId); + return prodLikeMapper.select(prodLikeSearch); + } + + public void insert(Long prodId, Long userId) { + try { + prodLikeMapper.insert(new ProdLike(prodId, userId)); + ProdSearch prodSearch = new ProdSearch(); + prodSearch.setProdId(prodId); + Prod prod = clfdProdService.select(prodSearch); + clfdProdService.plusRcmdNo(prod); + clfdProdService.update(prod); + } catch (DuplicateKeyException e) { + throw new RuntimeException("이미 좋아요를 하였습니다."); + } + } + + public void delete(Long prodId, Long userId) { + if (prodLikeMapper.deleteAndReturnCount(new ProdLike(prodId, userId)) < 1) { + throw new RuntimeException("일지하는 항목이 없습니다."); + } + + ProdSearch prodSearch = new ProdSearch(); + prodSearch.setProdId(prodId); + Prod prod = clfdProdService.select(prodSearch); + clfdProdService.minusRcmdNo(prod); + clfdProdService.update(prod); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/web/ClfdProdController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/web/ClfdProdController.java new file mode 100644 index 0000000..aaa6247 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/web/ClfdProdController.java @@ -0,0 +1,166 @@ +package kr.co.jinwoosi.clfd.clfd.prod.web; + +import kr.co.jinwoosi.clfd.clfd.dgns.model.Dgns; +import kr.co.jinwoosi.clfd.clfd.dgns.model.DgnsSearch; +import kr.co.jinwoosi.clfd.clfd.dgns.service.DgnsService; +import kr.co.jinwoosi.clfd.clfd.prod.service.ClfdProdService; +import kr.co.jinwoosi.clfd.clfd.site.service.ClfdSiteService; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; + +@Controller +public class ClfdProdController { + + @Autowired + private ClfdSiteService clfdSiteService; + @Autowired + private ClfdProdService clfdProdService; + @Autowired + private DgnsService dgnsService; + @Resource(name = "cdDtlService") + private CdDtlService cdDtlService; + + @RequestMapping(value = "/clfd/prod/list.do") + public String clfdProdListPage(HttpServletRequest request, HttpServletResponse response, Model model, + @RequestParam(value = "searchText", required = false) String searchText) { + HttpSession session = request.getSession(); + User user = (User) session.getAttribute("user"); + model.addAttribute("user", user); + + if(user != null) { + DgnsSearch dgnsSearch = new DgnsSearch(); + dgnsSearch.setUserId(user.getUserId()); + dgnsSearch.setDgnsCntRct("Y"); + // 사용자의 최근 테스트 결과 정보 + Dgns dgns = dgnsService.select(dgnsSearch); + model.addAttribute("dgnsRct", dgns); + } + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + + if (searchText == null) { + searchText = ""; + } + model.addAttribute("searchText", searchText); + + String[] prodTyArray = request.getParameterValues("prodTyArray"); + + if (prodTyArray != null) { + model.addAttribute("mProdTyList", new ArrayList(Arrays.asList(prodTyArray))); + } + + String mSkTyCus = request.getParameter("skTyCus"); + model.addAttribute("mSkTyCus", mSkTyCus); + + String mSkTy = request.getParameter("skTy"); + model.addAttribute("mSkTy", mSkTy); + + String sortToken = request.getParameter("sortToken"); + if (sortToken == null) { + sortToken = ""; + } + model.addAttribute("sortToken", sortToken); + + String mSideBar = request.getParameter("mSideBar"); + if (mSideBar == null) { + mSideBar = "off"; + } + model.addAttribute("mSideBar", mSideBar); + + try { + model.addAttribute("prodTyCdDtlList", cdDtlService.selectList(new CdDtl("prodTy"))); + model.addAttribute("skTyList", cdDtlService.selectList(new CdDtl("baumanTy"))); + } catch (RuntimeException e) { + e.printStackTrace(); + } + return "clfd/prod/list"; + } + + @RequestMapping(value = "/clfd/prod/list.json") + @ResponseBody + public HashMap clfdProdListJson(HttpServletRequest request, ProdSearch prodSearch) { + User user = (User) request.getSession().getAttribute("user"); + HashMap result = new HashMap<>(); + String[] prodTyArray = request.getParameterValues("prodTyArray[]"); + + if (prodTyArray != null) { + prodSearch.setProdTyList(new ArrayList(Arrays.asList(prodTyArray))); + } + + prodSearch.setShowSt("Y"); + if (user == null) { + result.put("prodList", clfdProdService.selectList(prodSearch)); + } else { + result.put("prodList", clfdProdService.selectListWithLike(prodSearch, user.getUserId())); + } + result.put("result", "success"); + return result; + } + + @RequestMapping(value = "/clfd/prod/dtl.do") + public String clfdProdDtlPage(HttpServletRequest request, HttpServletResponse response, Model model, + @RequestParam(value = "prod", required = false) Long prodId) { + + User user = (User) request.getSession().getAttribute("user"); + + if (prodId == null) { + return ""; + } + + ProdSearch prodSearch = new ProdSearch(); + prodSearch.setProdId(prodId); + Prod prod; + if (user == null) { + prod = clfdProdService.select(prodSearch); + } else { + prod = clfdProdService.selectWithLike(prodSearch, user.getUserId()); + } + + if (prod == null) { + return ""; + } + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + try { + model.addAttribute("prodTyCdDtlList", cdDtlService.selectList(new CdDtl("prodTy"))); + model.addAttribute("skTyList", cdDtlService.selectList(new CdDtl("baumanTy"))); + model.addAttribute("prod", prod); + } catch (RuntimeException e) { + e.printStackTrace(); + } + return "clfd/prod/dtl"; + } + + @RequestMapping(value = "/clfd/recommend/prod/list.json", method = RequestMethod.GET) + @ResponseBody + public HashMap recommendProductList(ProdSearch prodSearch) { + HashMap result = new HashMap<>(); + result.put("productGbn", cdDtlService.selectList(new CdDtl("prodTy"))); + result.put("recommendList", clfdProdService.selectList(prodSearch)); + result.put("result", "success"); + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/web/ProdLikeController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/web/ProdLikeController.java new file mode 100644 index 0000000..f961bae --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/prod/web/ProdLikeController.java @@ -0,0 +1,54 @@ +package kr.co.jinwoosi.clfd.clfd.prod.web; + +import kr.co.jinwoosi.clfd.clfd.prod.service.ProdLikeService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; + +@Controller +public class ProdLikeController { + + @Autowired + private ProdLikeService prodLikeService; + + @RequestMapping(value = "/clfd/prod/like.json", method = RequestMethod.POST) + @ResponseBody + public HashMap prodLike(HttpServletRequest request, + @RequestParam(value = "prodId") String prodId, + @RequestParam(value = "like") Boolean like) { + HashMap result = new HashMap<>(); + User user = (User) request.getSession().getAttribute("user"); + if (user == null) { + result.put("result", "fail"); + result.put("message", "회원만 이용 가능한 서비스입니다."); + return result; + } + + if (like) { + try { + prodLikeService.insert(Long.parseLong(prodId), user.getUserId()); + } catch (RuntimeException e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + } else { + try { + prodLikeService.delete(Long.parseLong(prodId), user.getUserId()); + } catch (RuntimeException e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + } + result.put("result", "success"); + result.put("like", like); + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/site/service/ClfdSiteService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/site/service/ClfdSiteService.java new file mode 100644 index 0000000..2aa6731 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/site/service/ClfdSiteService.java @@ -0,0 +1,169 @@ +package kr.co.jinwoosi.clfd.clfd.site.service; + +import kr.co.jinwoosi.clfd.clfd.user.service.ClfdUserService; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHist; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuConnHistService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.util.HttpUtil; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.ui.Model; +import org.springframework.util.StringUtils; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.support.RequestContextUtils; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.List; +import java.util.Locale; + +@Service +public class ClfdSiteService { + + @Resource (name="siteService") + private SiteService siteService; + + @Resource (name="cmsMenuService") + private MenuService menuService; + + @Resource (name="cmsMenuConnHistService") + private MenuConnHistService menuConnHistService; + + @Autowired + private ClfdUserService clfdUserService; + + public String visitClfdSite(HttpServletRequest request, HttpServletResponse response, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + Menu menu = getMenu(site, request, model); + return forwardMenu(site, menu, model, request); + } + + private Site getSite(HttpServletRequest request, HttpServletResponse response, Model model) { + Site result = null; + + if (request != null && response != null && model != null) { + String servletPath = request.getServletPath(); + String domain = request.getServerName(); + if(request.getServerPort() != 80) { + domain += ":"+request.getServerPort(); + } + + String[] urlArray = servletPath.split("/"); + String contextPath = urlArray[1]; + + List siteList = siteService.selectJson(); + + /* 멀티 사이트 */ + for(Site site : siteList) { + String[] domainArray = site.getDomain().split(","); + for(int i=0;i params = new LinkedHashMap<>(); + params.put("api_key", smsApiKey); + params.put("msg", msg); + params.put("callback", smsApiSendNumber); + params.put("dstaddr", receiveNumber); + params.put("send_reserve", "0"); + + StringBuilder postData = new StringBuilder(); + for (Map.Entry param : params.entrySet()) { + if (postData.length() != 0) postData.append('&'); + postData.append(URLEncoder.encode(param.getKey(), "UTF-8")); + postData.append('='); + postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8")); + } + byte[] postDataBytes = postData.toString().getBytes("UTF-8"); + + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length)); + conn.setDoOutput(true); + + conn.getOutputStream().write(postDataBytes); + + Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); + + StringBuilder sb = new StringBuilder(); + for (int c; (c = in.read()) >= 0; ) { + sb.append((char) c); + } + String response = sb.toString(); + + ObjectMapper mapper = new ObjectMapper(); + JsonNode root = mapper.readTree(response); + String returnCode = root.get("result").asText(); + if (returnCode.equals("100")) { + return SmsVo.builder() + .smsState(SmsState.SUCCESS) + .smsAuthKey(smsAuthKey) + .message("인증번호를 전송하였습니다.") + .build(); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + message = "휴대폰 번호를 입력해주세요."; + } + + return SmsVo.builder() + .smsState(SmsState.FAIL) + .message(message) + .build(); + } + + /** + * SMS 인증 번호를 생성한다. + * @return SMS 인증번호 + */ + public String getSmsAuthKey() { + int AUTH_KEY_LENGTH = 6; + Random rand = new Random(); + String numStr = ""; + for(int i=0;i smsSend(HttpServletRequest request, @RequestParam("phone") String phone) { + Map result = new HashMap(); + HttpSession session = request.getSession(); + + SmsVo smsVo = smsService.sendSmsAuthKey(phone); + if (smsVo.getSmsState() == SmsState.SUCCESS) { + session.setAttribute("smsAuthKey", smsVo.getSmsAuthKey()); + session.setAttribute("phone", phone); + result.put("result", "success"); + } else { + result.put("result", "fail"); + } + result.put("message", smsVo.getMessage()); + + return result; + } + + @RequestMapping(value = "/clfd/sms/check.json", method = RequestMethod.POST) + @ResponseBody + public Map smsCheck(HttpServletRequest request, @RequestParam("smsAuthKey") String smsAuthKey, + @RequestParam("phone") String phone) { + Map result = new HashMap(); + HttpSession session = request.getSession(); + String sessionSmsAuthKey = (String) session.getAttribute("smsAuthKey"); + String sessionPhone = (String) session.getAttribute("phone"); + + if (sessionSmsAuthKey != null && sessionSmsAuthKey.equals(smsAuthKey) && + sessionPhone != null && sessionPhone.equals(phone)) { + result.put("result", "success"); + result.put("message", "인증이 완료되었습니다."); + } else if (sessionPhone == null || !sessionPhone.equals(phone)) { + result.put("result", "fail"); + result.put("message", "인증 휴대폰 번호가 다릅니다."); + } else { + result.put("result", "fail"); + result.put("message", "인증 번호가 다릅니다."); + } + return result; + } + + @RequestMapping(value = "/clfd/sms/find/id.json", method = RequestMethod.POST) + @ResponseBody + public Map smsFindId(HttpServletRequest request, @RequestParam("smsAuthKey") String smsAuthKey, + @RequestParam("phone") String phone) { + Map result = new HashMap(); + HttpSession session = request.getSession(); + String sessionSmsAuthKey = (String) session.getAttribute("smsAuthKey"); + String sessionPhone = (String) session.getAttribute("phone"); + + if (sessionSmsAuthKey != null && sessionSmsAuthKey.equals(smsAuthKey) && + sessionPhone != null && sessionPhone.equals(phone)) { + + List findIds = clfdUserService.findLoginIdByPhone(phone); + if (findIds.size() == 0) { + result.put("result", "fail"); + result.put("message", "해당 휴대폰 번호로 가입된 아이디가 없습니다."); + } else { + result.put("result", "success"); + result.put("data", findIds); + result.put("message", "아이디 찾기를 완료하였습니다."); + } + + } else if (sessionPhone == null || !sessionPhone.equals(phone)) { + result.put("result", "fail"); + result.put("message", "인증 휴대폰 번호가 다릅니다."); + } else { + result.put("result", "fail"); + result.put("message", "인증 번호가 다릅니다."); + } + return result; + } + + @RequestMapping(value = "/clfd/sms/find/pw.json", method = RequestMethod.POST) + @ResponseBody + public Map smsFindPw(HttpServletRequest request, + @RequestParam("smsAuthKey") String smsAuthKey, + @RequestParam("phone") String phone, + @RequestParam("loginId") String loginId + ) { + Map result = new HashMap(); + HttpSession session = request.getSession(); + String sessionSmsAuthKey = (String) session.getAttribute("smsAuthKey"); + String sessionPhone = (String) session.getAttribute("phone"); + + if (sessionSmsAuthKey != null && sessionSmsAuthKey.equals(smsAuthKey) && + sessionPhone != null && sessionPhone.equals(phone)) { + + Map pwResult = clfdUserService.findPasswordForSms(loginId, phone); + Boolean isFind = (Boolean) pwResult.get("isFind"); + if (!isFind) { + result.put("result", "fail"); + result.put("message", pwResult.get("message")); + } else { + result.put("result", "success"); + result.put("data", pwResult); + result.put("message", pwResult.get("message")); + } + } else if (sessionPhone == null || !sessionPhone.equals(phone)) { + result.put("result", "fail"); + result.put("message", "인증 휴대폰 번호가 다릅니다."); + } else { + result.put("result", "fail"); + result.put("message", "인증 번호가 다릅니다."); + } + return result; + } + + @RequestMapping(value = "/clfd/sms/update-phone.json", method = RequestMethod.POST) + @ResponseBody + public Map smsUpdatePhone(HttpServletRequest request, + @RequestParam("smsAuthKey") String smsAuthKey, + @RequestParam("phone") String phone) { + Map result = new HashMap(); + User loginUser = (User) request.getSession().getAttribute("user"); + HttpSession session = request.getSession(); + String sessionSmsAuthKey = (String) session.getAttribute("smsAuthKey"); + String sessionPhone = (String) session.getAttribute("phone"); + + if (loginUser == null || StringUtils.isEmpty(loginUser.getUserId())) { + result.put("result", "fail"); + result.put("message", "로그인 확인에 실패하였습니다."); + return result; + } + + if (sessionSmsAuthKey != null && sessionSmsAuthKey.equals(smsAuthKey) && + sessionPhone != null && sessionPhone.equals(phone)) { + User updateUser = new User(); + updateUser.setUserId(loginUser.getUserId()); + updateUser.setPhone(phone); + try { + clfdUserService.updateUser(updateUser); + result.put("result", "success"); + result.put("message", "휴대폰 번호를 수정하였습니다."); + } catch (RuntimeException e) { + result.put("result", "success"); + result.put("message", "인증은 하였지만 휴대폰 번호 수정에 실패하였습니다."); + } + } else if (sessionPhone == null || !sessionPhone.equals(phone)) { + result.put("result", "fail"); + result.put("message", "인증 휴대폰 번호가 다릅니다."); + } else { + result.put("result", "fail"); + result.put("message", "인증 번호가 다릅니다."); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/user/service/ClfdUserService.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/user/service/ClfdUserService.java new file mode 100644 index 0000000..6f5916a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/user/service/ClfdUserService.java @@ -0,0 +1,350 @@ +package kr.co.jinwoosi.clfd.clfd.user.service; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import kr.co.jinwoosi.clfd.framework.mail.MailService; +import kr.co.jinwoosi.clfd.framework.security.mapper.UserMapper; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class ClfdUserService { + + @Autowired + private UserService userService; + @Autowired + private UserRoleService userRoleService; + @Autowired + private UserMapper userMapper; + @Autowired + private PasswordEncoder passwordEncoder; + @Autowired + private MailService mailService; + + public Map selectUser(UserSearch userSearch) { + Map result = new HashMap(); + User user = userMapper.select(userSearch); + + if (user == null) { + result.put("result", "fail"); + result.put("message", "사용자를 찾을 수 없습니다."); + return result; + } + + UserRole userRole = new UserRole(); + userRole.setUserId(user.getUserId()); + userRole = userRoleService.select(userRole); + + result.put("result", "success"); + result.put("user", user); + result.put("role", userRole.getRoleAuth()); + + return result; + } + + public void updateUser(User user) { + userMapper.update(user); + } + + public Map updatePwd(Long userId, String userLoginId, String password, String newPassword) throws Exception { + Map result = new HashMap<>(); + + String encryptPassword = StrUtil.encryptSha512(password, userLoginId); + String encryptNewPassword = StrUtil.encryptSha512(newPassword, userLoginId); + + if (userPwdCheck(new UserSearch(userId, encryptPassword)) < 1) { + result.put("result", "fail"); + result.put("message", "기존 비밀번호가 일치하지 않습니다."); + return result; + } + + if (encryptPassword.equals(encryptNewPassword)) { + result.put("result", "fail"); + result.put("message", "이전 비밀번호와 같은 비밀번호 입니다."); + return result; + } + + User user = new User(); + user.setUserId(userId); + user.setUpdId(userId); + user.setUserPwd(encryptNewPassword); + + try { + updateUser(user); + } catch (RuntimeException e) { + result.put("result", "fail"); + result.put("message", "비밀번호를 변경하는 중 오류가 발생하였습니다."); + } + + + result.put("result", "success"); + result.put("message", "비밀번호가 변경되었습니다."); + return result; + } + + public int userPwdCheck(UserSearch userSearch) { + return userMapper.userPwdCheck(userSearch); + } + + public void join(User user) { + UserSearch userSearch = new UserSearch(); + userSearch.setUserLoginId(user.getUserLoginId()); + + if (userService.checkIdDuplicate(userSearch) > 0) { + throw new RuntimeException("사용자를 등록하는 도중 오류가 발생하였습니다."); + } + + /* + * SMS 인증 일 경우 authStCd를 1로 처리 + */ + user.setAuthStCd("1"); + + /* + * 이메일 인증 부분 주석처리 + */ +// String authKey = StrUtil.getRandomPassword(16); +// String authCode = passwordEncoder.encode(authKey); +// user.setAuthKey(authKey); + + userService.insert(user); + + Long userId = user.getUserId(); + + UserRole userRole = new UserRole(); + userRole.setUserId(userId); + String userTyCd = user.getUserTyCd(); + + if (userTyCd != null) { + if (userTyCd.equals("U")) { + userRole.setRoleAuth("ROLE_USER"); + userRoleService.insert(userRole); + } else if (userTyCd.equals("M")) { + userRole.setRoleAuth("ROLE_MANAGER"); + userRoleService.insert(userRole); + } else { + throw new RuntimeException("사용자 타입 코드가 명시되지 않았습니다."); + } + } else { + throw new RuntimeException("사용자 타입 코드가 명시되지 않았습니다."); + } + + /* + * 이메일 인증 부분 주석처리 + */ +// String email = null; +// if (userTyCd.equals("J")) { +// email = user.getManagerEmail(); +// } else if (userTyCd.equals("U")) { +// email = user.getEmail(); +// } +// if (email != null) { +// mailService.gmailSend( +// email, +// MailService.EmailTitle.JOIN_AUTH.getTitle(), +// mailService.getLoginMailText(user.getUserLoginId(), authCode) +// ); +// } + + } + + /** + * 접속 사용자 아이디(번호)를 가져 온다. + * + * @return + */ + public Long getUserId() { + if ("anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser())) return null; + + User user = (User) EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserId(); + } + + return null; + } + + /** + * 접속 사용자의 로그인 아이디를 가져온다. + * + * @return + */ + public String getUserLoginId() { + User user = + (User) EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserLoginId(); + } + return null; + } + + /** + * 접속한 사용자의 이름을 가져온다. + * + * @return + */ + public String getUserName() { + User user = + (User) EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserNm(); + } + return null; + } + + /** + * 이메일 인증을 처리 + * + * @return 이메일 인증에 성공하면 true, 실패하면 false + */ + public boolean emailAuth(String id, String authCode) { + UserSearch userSearch = new UserSearch(); + userSearch.setUserLoginId(id); + User user = userMapper.select(userSearch); + // 인증할 사용자가 없는 경우 + if (user == null) { + return false; + } + + if (user.getAuthStCd() == null) { + if (passwordEncoder.matches(user.getAuthKey(), authCode)) { + User updateUser = new User(); + updateUser.setUserId(user.getUserId()); + updateUser.setUserLoginId(id); + updateUser.setAuthStCd("1"); + userMapper.update(updateUser); + return true; + } else { + return false; + } + } else if (user.getAuthStCd().equals("1")) { + return false; + } else { + return false; + } + } + + /** + * 아이디 찾기를 처리 (휴대폰 인증 시 사용) + * + * @return 찾은 아이디 목록을 반환 + */ + public List findLoginIdByPhone(String phone) { + UserSearch userSearch = new UserSearch(); + userSearch.setFindIdByPhoneFlag(true); + userSearch.setPhone(phone); + List users = userMapper.selectList(userSearch); + List loginIdList = users.stream().map(User::getUserLoginId).collect(Collectors.toList()); + return loginIdList; + } + + /** + * 비밀번호 찾기를 처리 (휴대폰 인증 시 사용) + * + * @return Map + * isFind: true, false + * loginId: - + * password: - + * message: - + */ + public Map findPasswordForSms(String loginId, String phone) { + Map result = new HashMap<>(); + UserSearch userSearch = new UserSearch(); + userSearch.setFindPwByPhoneAndIdFlag(true); + userSearch.setPhone(phone); + userSearch.setUserLoginId(loginId); + List users = userMapper.selectList(userSearch); + if (users.size() == 0) { + result.put("isFind", Boolean.FALSE); + result.put("message", "아이디와 휴대폰 번호를 확인하세요."); + return result; + } + User user = users.get(0); + String tempPassword = StrUtil.getRandomPassword(10); + + String encryptPassword = null; + try { + encryptPassword = StrUtil.encryptSha512(tempPassword, user.getUserLoginId()); + } catch (Exception e) { + result.put("isFind", Boolean.FALSE); + result.put("message", "비밀번호 찾기중 문제가 발생하였습니다."); + return result; + } + + result.put("isFind", Boolean.TRUE); + result.put("loginId", user.getUserLoginId()); + result.put("password", tempPassword); + result.put("message", "비밀번호 찾기를 완료하였습니다."); + + User updateUser = new User(); + Long userId = user.getUserId(); + updateUser.setUserId(userId); + updateUser.setUpdId(userId); + updateUser.setUserPwd(encryptPassword); + updateUser(updateUser); + return result; + } + + /** + * 아이디 찾기를 처리 (이메일 인증 시 사용) + * + * @return 아이디를 찾으면 true, 아이디를 못찾으면 false + */ + public boolean findIdByEmail(String email) { + UserSearch userSearch = new UserSearch(); + userSearch.setEmail(email); + List users = userMapper.selectList(userSearch); + if (users.size() == 0) { + return false; + } + List loginIdList = users.stream().map(User::getUserLoginId).collect(Collectors.toList()); + mailService.gmailSend( + email, + MailService.EmailTitle.FIND_ID.getTitle(), + mailService.getFindIdText(loginIdList) + ); + return true; + } + + /** + * 비밀번호 찾기를 처리 (이메일 인증 시 사용) + * + * @return 입력한 아이디가 존재하고 해당 아이디의 이메일과 입력한 이메일이 동일하면 true, 아이디를 못찾거나 이메일이 다르면 false + */ + public boolean findPassword(String userLoginId, String email) throws Exception { + UserSearch userSearch = new UserSearch(); + userSearch.setUserLoginId(userLoginId); + List userLoginIdList = userMapper.selectList(userSearch); + if (userLoginIdList.size() == 0) { + return false; + } else if (!userLoginIdList.get(0).getEmail().equals(email)) { + return false; + } + String tempPassword = StrUtil.getRandomPassword(10); + mailService.gmailSend( + email, + MailService.EmailTitle.FIND_PW.getTitle(), + mailService.getFindPasswordText(tempPassword) + ); + + String encryptPassword = StrUtil.encryptSha512(tempPassword, userLoginId); + User user = new User(); + Long userId = userLoginIdList.get(0).getUserId(); + user.setUserId(userId); + user.setUpdId(userId); + user.setUserPwd(encryptPassword); + updateUser(user); + return true; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/user/web/ClfdUserController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/user/web/ClfdUserController.java new file mode 100644 index 0000000..94716ff --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/user/web/ClfdUserController.java @@ -0,0 +1,245 @@ +package kr.co.jinwoosi.clfd.clfd.user.web; + +import kr.co.jinwoosi.clfd.clfd.site.service.ClfdSiteService; +import kr.co.jinwoosi.clfd.clfd.user.service.ClfdUserService; +import kr.co.jinwoosi.clfd.conts.company.model.Company; +import kr.co.jinwoosi.clfd.conts.company.service.CompanyService; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class ClfdUserController { + + @Autowired + private UserService userService; + + @Autowired + private ClfdUserService clfdUserService; + + @Autowired + private ClfdSiteService clfdSiteService; + + @Autowired + private CompanyService companyService; + + @Autowired + private CdDtlService cdDtlService; + + @RequestMapping("/clfd/user/join.do") + public String joinPage(HttpServletRequest request, HttpServletResponse response, Model model) { + if (clfdUserService.getUserId() != null) { + return "redirect:/"; + } + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + return "clfd/user/join"; + } + + @RequestMapping("/clfd/user/joinCorp.do") + public String joinCorpPage(HttpServletRequest request, HttpServletResponse response, Model model) { + model.addAttribute("companyGbnList", cdDtlService.selectList(new CdDtl("companyGbn"))); + if (clfdUserService.getUserId() != null) { + return "redirect:/"; + } + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + return "clfd/user/joinCorp"; + } + + @RequestMapping("/clfd/pr/myPage.do") + public String myPage(HttpServletRequest request, HttpServletResponse response, Model model) { + User user = (User) request.getSession().getAttribute("user"); + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + model.addAttribute("user", user); + return "clfd/pr/myPage"; + } + + @RequestMapping(value = "/clfd/pr/pwd/update.json", method = RequestMethod.POST) + @ResponseBody + public Map pwdUpdate(HttpServletRequest request, @RequestBody HashMap requestParam) throws Exception { + Map result = new HashMap(); + + User sessionUser = (User) request.getSession().getAttribute("user"); + if (sessionUser == null) { + result.put("result", "fail"); + result.put("message", "사용자를 찾을 수 없습니다."); + return result; + } + + Long userId = sessionUser.getUserId(); + String userLoginId = sessionUser.getUserLoginId(); + String password = (String) requestParam.get("password"); + String newPassword = (String) requestParam.get("newPassword"); + + return clfdUserService.updatePwd(userId, userLoginId, password, newPassword); + } + + @RequestMapping("/clfd/pr/myPage.json") + @ResponseBody + public Map myPageApi(HttpServletRequest request) { + Map result = new HashMap(); + + User sessionUser = (User) request.getSession().getAttribute("user"); + if (sessionUser == null) { + result.put("result", "fail"); + result.put("message", "사용자를 찾을 수 없습니다."); + return result; + } + + return clfdUserService.selectUser(new UserSearch(sessionUser.getUserId())); + } + + @RequestMapping("/clfd/pr/myPage/update.json") + @ResponseBody + public Map myPageUpdateApi(HttpServletRequest request, User user) { + Map result = new HashMap(); + User sessionUser = (User) request.getSession().getAttribute("user"); + if (sessionUser == null) { + result.put("result", "fail"); + result.put("message", "사용자를 찾을 수 없습니다."); + return result; + } + + user.setUpdId(sessionUser.getUserId()); + user.setUserId(sessionUser.getUserId()); + clfdUserService.updateUser(user); + + result.put("result", "success"); + result.put("message", "정보가 수정되었습니다."); + return result; + } + + @RequestMapping(value = "/clfd/user/join/duplicate.json", method = RequestMethod.POST) + @ResponseBody + public Map checkIdDuplicate(UserSearch userSearch) { + Map result = new HashMap(); + if (userService.checkIdDuplicate(userSearch) > 0) { + result.put("result", "exist"); + result.put("message", "사용 중인 아이디입니다. 다른 아이디를 입력해주세요."); + } else { + result.put("result", "nonExist"); + result.put("message", "사용 가능합니다."); + } + return result; + + } + + @RequestMapping(value = "/clfd/user/join/join.json", method = RequestMethod.POST) + @ResponseBody + public Map join(HttpServletRequest request, User user) { + Map result = new HashMap(); + + /* + * SMS 인증 시 적용 + */ + HttpSession session = request.getSession(); + String sessionSmsAuthKey = (String) session.getAttribute("smsAuthKey"); + if (sessionSmsAuthKey == null && !sessionSmsAuthKey.equals(user.getSmsAuthKey())) { + result.put("result", "fail"); + result.put("message", "인증 번호가 다릅니다."); + return result; + } + + try { + user.setUserTyCd("U"); + clfdUserService.join(user); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/clfd/user/join/joinCorp.json", method = RequestMethod.POST) + @ResponseBody + public Map joinCorp(HttpServletRequest request, User user, Company company) { + Map result = new HashMap(); + + /* + * SMS 인증 시 적용 + */ + HttpSession session = request.getSession(); + String sessionSmsAuthKey = (String) session.getAttribute("smsAuthKey"); + if (sessionSmsAuthKey == null && !sessionSmsAuthKey.equals(user.getSmsAuthKey())) { + result.put("result", "fail"); + result.put("message", "인증 번호가 다릅니다."); + return result; + } + + try { + user.setUserTyCd("M"); + companyService.insert(company); + clfdUserService.join(user); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping("/clfd/user/findId.do") + public String findId(HttpServletRequest request, HttpServletResponse response, Model model) { + if (clfdUserService.getUserId() != null) { + return "redirect:/"; + } + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + return "clfd/user/findId"; + } + + @RequestMapping("/clfd/user/findPassword.do") + public String findPassword(HttpServletRequest request, HttpServletResponse response, Model model) { + if (clfdUserService.getUserId() != null) { + return "redirect:/"; + } + + if (clfdSiteService.visitClfdSite(request, response, model) == null) { + return ""; + } + return "clfd/user/findPassword"; + } + + @RequestMapping(value = "/clfd/company/list.json", method = RequestMethod.GET) + @ResponseBody + public Map list(Company company) { + Map result = new HashMap(); + try { + result.put("data", companyService.select(company)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/user/web/MailAuthController.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/user/web/MailAuthController.java new file mode 100644 index 0000000..e79b6d2 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/user/web/MailAuthController.java @@ -0,0 +1,74 @@ +package kr.co.jinwoosi.clfd.clfd.user.web; + +import kr.co.jinwoosi.clfd.clfd.user.service.ClfdUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.HashMap; +import java.util.Map; + +@Controller +public class MailAuthController { + + @Autowired + private ClfdUserService clfdUserService; + + @RequestMapping(value="/clfd/join/auth.json", method= RequestMethod.GET) + @ResponseBody + public String joinAuth(@RequestParam("id") String id, @RequestParam("authCode") String authCode) { + boolean isAuth = false; + try { + isAuth = clfdUserService.emailAuth(id, authCode); + } catch (Exception e) { + return "처리중 예외가 발생하였습니다."; + } + + if (isAuth) { + return "인증이 완료되었습니다."; + } else { + return "인증값이 올바르지 않습니다."; + } + } + + /** + * 이메일 인증시 아이디 찾기 + */ + @RequestMapping(value = "/clfd/find/id.json", method = RequestMethod.GET) + @ResponseBody + public Map findId(@RequestParam("email") String email) { + Map result = new HashMap(); + boolean isFindId = clfdUserService.findIdByEmail(email); + + if (isFindId) { + result.put("result", "success"); + result.put("message", "해당 이메일로 가입한 아이디를 보내드렸습니다."); + } else { + result.put("result", "fail"); + result.put("message", "등록되지 않은 이메일입니다."); + } + return result; + } + + /** + * 이메일 인증시 비밀번호 찾기 + */ + @RequestMapping(value = "/clfd/find/password.json", method = RequestMethod.GET) + @ResponseBody + public Map findPassword(@RequestParam("userLoginId") String userLoginId, @RequestParam("email") String email) throws Exception { + Map result = new HashMap(); + boolean isFindPassword = clfdUserService.findPassword(userLoginId, email); + + if (isFindPassword) { + result.put("result", "success"); + result.put("message", "해당 이메일로 임시 비밀번호를 보내드렸습니다."); + } else { + result.put("result", "fail"); + result.put("message", "아이디나 이메일 정보를 확인해주세요."); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/util/LocalDateTimeDeserializer.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/util/LocalDateTimeDeserializer.java new file mode 100644 index 0000000..692e47e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/util/LocalDateTimeDeserializer.java @@ -0,0 +1,19 @@ +package kr.co.jinwoosi.clfd.clfd.util; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeDeserializer extends JsonDeserializer { + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public LocalDateTime deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + return LocalDateTime.parse(jsonParser.getText(), DATE_FORMAT); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/clfd/util/LocalDateTimeSerializer.java b/src/main/java/kr/co/jinwoosi/clfd/clfd/util/LocalDateTimeSerializer.java new file mode 100644 index 0000000..71eb7c7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/clfd/util/LocalDateTimeSerializer.java @@ -0,0 +1,19 @@ +package kr.co.jinwoosi.clfd.clfd.util; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +public class LocalDateTimeSerializer extends JsonSerializer { + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + + @Override + public void serialize(LocalDateTime localDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { + jsonGenerator.writeString(localDateTime.format(DATE_FORMAT)); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/banner/mapper/BannerMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/mapper/BannerMapper.java new file mode 100644 index 0000000..e47d15c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/mapper/BannerMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.banner.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.banner.model.Banner; +import kr.co.jinwoosi.clfd.conts.banner.model.BannerSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="bannerMapper") +public interface BannerMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/banner/model/Banner.java b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/model/Banner.java new file mode 100644 index 0000000..e9e2aba --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/model/Banner.java @@ -0,0 +1,103 @@ +package kr.co.jinwoosi.clfd.conts.banner.model; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Banner extends BaseModel{ + + private Long bannerId; + private String bannerTp; + private String bannerNm; + private String bannerAlt; + private String linkUrl; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDt; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDt; + + private Long fileId; + private Long siteId; + private Boolean useSt; + + private String bannerTpNm; + private String bannerTpLabel; + + public Long getBannerId() { + return bannerId; + } + public void setBannerId(Long bannerId) { + this.bannerId = bannerId; + } + public String getBannerTp() { + return bannerTp; + } + public void setBannerTp(String bannerTp) { + this.bannerTp = bannerTp; + } + public String getBannerNm() { + return bannerNm; + } + public void setBannerNm(String bannerNm) { + this.bannerNm = bannerNm; + } + public String getBannerAlt() { + return bannerAlt; + } + public void setBannerAlt(String bannerAlt) { + this.bannerAlt = bannerAlt; + } + public String getLinkUrl() { + return linkUrl; + } + public void setLinkUrl(String linkUrl) { + this.linkUrl = linkUrl; + } + public Date getStartDt() { + return startDt; + } + public void setStartDt(Date startDt) { + this.startDt = startDt; + } + public Date getEndDt() { + return endDt; + } + public void setEndDt(Date endDt) { + this.endDt = endDt; + } + + public Long getFileId() { + return fileId; + } + public void setFileId(Long fileId) { + this.fileId = fileId; + } + + public Long getSiteId() { + return siteId; + } + public void setSiteId(Long siteId) { + this.siteId = siteId; + } + public Boolean getUseSt() { + return useSt; + } + public void setUseSt(Boolean useSt) { + this.useSt = useSt; + } + public String getBannerTpNm() { + return bannerTpNm; + } + public void setBannerTpNm(String bannerTpNm) { + this.bannerTpNm = bannerTpNm; + } + public String getBannerTpLabel() { + return bannerTpLabel; + } + public void setBannerTpLabel(String bannerTpLabel) { + this.bannerTpLabel = bannerTpLabel; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/banner/model/BannerSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/model/BannerSearch.java new file mode 100644 index 0000000..e18fd41 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/model/BannerSearch.java @@ -0,0 +1,65 @@ +package kr.co.jinwoosi.clfd.conts.banner.model; + +import java.util.Date; +import java.util.List; + +import org.springframework.format.annotation.DateTimeFormat; + +public class BannerSearch extends Banner{ + + private List bannerIdIn; + private String bannerNmLike; + private String linkUrlLike; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDtThanOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDtLessOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDtThanOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDtLessOrEquals; + + public List getBannerIdIn() { + return bannerIdIn; + } + public void setBannerIdIn(List bannerIdIn) { + this.bannerIdIn = bannerIdIn; + } + public String getBannerNmLike() { + return bannerNmLike; + } + public void setBannerNmLike(String bannerNmLike) { + this.bannerNmLike = bannerNmLike; + } + public String getLinkUrlLike() { + return linkUrlLike; + } + public void setLinkUrlLike(String linkUrlLike) { + this.linkUrlLike = linkUrlLike; + } + public Date getStartDtThanOrEquals() { + return startDtThanOrEquals; + } + public void setStartDtThanOrEquals(Date startDtThanOrEquals) { + this.startDtThanOrEquals = startDtThanOrEquals; + } + public Date getStartDtLessOrEquals() { + return startDtLessOrEquals; + } + public void setStartDtLessOrEquals(Date startDtLessOrEquals) { + this.startDtLessOrEquals = startDtLessOrEquals; + } + public Date getEndDtThanOrEquals() { + return endDtThanOrEquals; + } + public void setEndDtThanOrEquals(Date endDtThanOrEquals) { + this.endDtThanOrEquals = endDtThanOrEquals; + } + public Date getEndDtLessOrEquals() { + return endDtLessOrEquals; + } + public void setEndDtLessOrEquals(Date endDtLessOrEquals) { + this.endDtLessOrEquals = endDtLessOrEquals; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/banner/service/BannerService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/service/BannerService.java new file mode 100644 index 0000000..2c7fabd --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/service/BannerService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.conts.banner.service; + +import kr.co.jinwoosi.clfd.conts.banner.model.Banner; +import kr.co.jinwoosi.clfd.conts.banner.model.BannerSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface BannerService extends BaseService { + + void insert(Banner banner, Long itemId); + + void update(Banner banner, Long itemId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/banner/service/impl/BannerServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/service/impl/BannerServiceImpl.java new file mode 100644 index 0000000..d6d092d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/service/impl/BannerServiceImpl.java @@ -0,0 +1,60 @@ +package kr.co.jinwoosi.clfd.conts.banner.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.banner.mapper.BannerMapper; +import kr.co.jinwoosi.clfd.conts.banner.model.Banner; +import kr.co.jinwoosi.clfd.conts.banner.model.BannerSearch; +import kr.co.jinwoosi.clfd.conts.banner.service.BannerService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; + +@Service(value="bannerService") +public class BannerServiceImpl extends BaseServiceImpl implements BannerService { + + @Resource (name="fileItemService") + private FileItemService fileItemService; + + @Resource (name="fileService") + private FileService fileService; + + + @Override + @Resource (name="bannerMapper") + protected void setMapper (BannerMapper mapper) { + super.setMapper (mapper); + } + + @Override + public void insert(Banner banner, Long itemId) { + FileInfo file = new FileInfo(); + fileService.insert(file); + + FileItem fileItem = new FileItem(); + fileItem.setFileId(file.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + + banner.setFileId(file.getFileId()); + insert(banner); + } + + @Override + public void update(Banner banner, Long itemId) { + if(itemId != null) { //첨부파일 교체 시 + fileService.deleteFileItem(banner.getFileId()); + + FileItem fileItem = new FileItem(); + fileItem.setFileId(banner.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + } + + update(banner); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/banner/web/BannerController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/web/BannerController.java new file mode 100644 index 0000000..0341bae --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/banner/web/BannerController.java @@ -0,0 +1,145 @@ +package kr.co.jinwoosi.clfd.conts.banner.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.banner.model.Banner; +import kr.co.jinwoosi.clfd.conts.banner.model.BannerSearch; +import kr.co.jinwoosi.clfd.conts.banner.service.BannerService; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class BannerController extends BaseController { + + @Value("#{prop['AppConf.filePath.popup']}") + private String filePath; + + @Resource (name="fileService") + private FileService fileService; + + @Resource (name="bannerService") + private BannerService bannerService; + + @Resource (name="siteService") + private SiteService siteService; + + @RequestMapping (value="/system/banner/list.mng", method=RequestMethod.GET) + public String list(Model model) { + model.addAttribute("siteList", siteService.selectJson()); + + return "system/banner/list"; + } + + @RequestMapping (value="/system/banner/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, BannerSearch bannerSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + bannerSearch.setSort(sort); + bannerSearch.setSortOrd(sortOder); + bannerSearch.setPagingYn(true); + + int totalCount = bannerService.count(bannerSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", bannerService.selectList(bannerSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/banner/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, BannerSearch bannerSearch) { + Map result = new HashMap(); + try { + result.put("data", bannerService.select(bannerSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/banner/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Banner banner, Long itemId) { + Map result = new HashMap(); + try { + banner.setRegId(getUserId()); + bannerService.insert(banner, itemId); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/banner/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Banner banner, Long itemId) { + Map result = new HashMap(); + try { + banner.setUpdId(getUserId()); + bannerService.update(banner, itemId); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/banner/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete (HttpServletRequest request, BannerSearch bannerSearch) { + Map result = new HashMap(); + try { + bannerSearch.setDelId(getUserId()); + bannerService.delete(bannerSearch); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("massge", e.getMessage()); + } + + return result; + } + + @RequestMapping (value="/public/banner/list.json", method=RequestMethod.POST) + @ResponseBody + public Map bannerList(HttpServletRequest request, BannerSearch bannerSearch){ + Map result = new HashMap(); + try { + result.put("data", bannerService.selectList(bannerSearch)); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodArtiMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodArtiMapper.java new file mode 100644 index 0000000..fb332e3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodArtiMapper.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.conts.bod.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArti; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArtiSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="bodArtiMapper") +public interface BodArtiMapper extends BaseMapper { + + void updateHit(Long artiId); + + void updateArtiGrp(BodArti bodArti); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodCmntMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodCmntMapper.java new file mode 100644 index 0000000..7f24ee7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodCmntMapper.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.conts.bod.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmnt; +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmntSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="bodCmntMapper") +public interface BodCmntMapper extends BaseMapper { + + void updateCmntGrp(BodCmnt bodCmnt); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodMapper.java new file mode 100644 index 0000000..38b0374 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodMapper.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.conts.bod.mapper; + +import java.util.List; + +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.conts.bod.model.BodSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.security.model.Role; +import egovframework.rte.psl.dataaccess.mapper.Mapper; + +@Mapper (value="bodMapper") +public interface BodMapper extends BaseMapper { + + List selectRoleList(Role role); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodRoleMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodRoleMapper.java new file mode 100644 index 0000000..2c192bb --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/mapper/BodRoleMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.bod.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.bod.model.BodRole; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="bodRoleMapper") +public interface BodRoleMapper extends BaseMapper { + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/Bod.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/Bod.java new file mode 100644 index 0000000..85d22cf --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/Bod.java @@ -0,0 +1,175 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +import java.util.List; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; + +public class Bod extends BaseModel{ + + private Long bodId; + private String bodTp; + private String bodNm; + private String bodHeader; + private String bodFooter; + private Integer bodOrder; + private Boolean cmntYn; + private Boolean answYn; + private Boolean scrtYn; + private Integer artiCnt; + private Integer fileUploadCnt; + private String newArtiDt; + private Boolean useSt; + + List notiRoleList; + List writeRoleList; + List scrtRoleList; + List answRoleList; + + private CdDtl bodTpCd; + + public CdDtl getBodTpCd() { + return bodTpCd; + } + + public void setBodTpCd(CdDtl bodTpCd) { + this.bodTpCd = bodTpCd; + } + + public List getNotiRoleList() { + return notiRoleList; + } + + public void setNotiRoleList(List notiRoleList) { + this.notiRoleList = notiRoleList; + } + + public List getWriteRoleList() { + return writeRoleList; + } + + public void setWriteRoleList(List writeRoleList) { + this.writeRoleList = writeRoleList; + } + + public List getScrtRoleList() { + return scrtRoleList; + } + + public void setScrtRoleList(List scrtRoleList) { + this.scrtRoleList = scrtRoleList; + } + + public List getAnswRoleList() { + return answRoleList; + } + + public void setAnswRoleList(List answRoleList) { + this.answRoleList = answRoleList; + } + + public Integer getArtiCnt() { + return artiCnt; + } + + public void setArtiCnt(Integer artiCnt) { + this.artiCnt = artiCnt; + } + + public Long getBodId() { + return bodId; + } + + public void setBodId(Long bodId) { + this.bodId = bodId; + } + + public String getBodTp() { + return bodTp; + } + + public void setBodTp(String bodTp) { + this.bodTp = bodTp; + } + + public String getBodNm() { + return bodNm; + } + + public void setBodNm(String bodNm) { + this.bodNm = bodNm; + } + + public String getBodHeader() { + return bodHeader; + } + + public void setBodHeader(String bodHeader) { + this.bodHeader = bodHeader; + } + + public String getBodFooter() { + return bodFooter; + } + + public void setBodFooter(String bodFooter) { + this.bodFooter = bodFooter; + } + + public Boolean getCmntYn() { + return cmntYn; + } + + public void setCmntYn(Boolean cmntYn) { + this.cmntYn = cmntYn; + } + + public Boolean getAnswYn() { + return answYn; + } + + public void setAnswYn(Boolean answYn) { + this.answYn = answYn; + } + + public Boolean getScrtYn() { + return scrtYn; + } + + public void setScrtYn(Boolean scrtYn) { + this.scrtYn = scrtYn; + } + + public Integer getFileUploadCnt() { + return fileUploadCnt; + } + + public void setFileUploadCnt(Integer fileUploadCnt) { + this.fileUploadCnt = fileUploadCnt; + } + + public Boolean getUseSt() { + return useSt; + } + + public void setUseSt(Boolean useSt) { + this.useSt = useSt; + } + + public Integer getBodOrder() { + return bodOrder; + } + + public void setBodOrder(Integer bodOrder) { + this.bodOrder = bodOrder; + } + + public String getNewArtiDt() { + return newArtiDt; + } + + public void setNewArtiDt(String newArtiDt) { + this.newArtiDt = newArtiDt; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodArti.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodArti.java new file mode 100644 index 0000000..bdc19b9 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodArti.java @@ -0,0 +1,30 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import lombok.*; + +@ToString +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class BodArti extends BaseModel{ + private Long artiId; + private Long bodId; + private Integer depth; + private String title; + private String cont; + private Boolean scrtYn; + private Boolean notiYn; + private Long fileId; + private Integer filePrview; + private Long hit; + private String bodNm; + private String regDate; + private String regNm; + + private User user; + private Bod bod; + private Integer fileCnt; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodArtiSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodArtiSearch.java new file mode 100644 index 0000000..32c8222 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodArtiSearch.java @@ -0,0 +1,24 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +public class BodArtiSearch extends BodArti{ + + private String titleLike; + private String contLike; + + public String getContLike() { + return contLike; + } + + public void setContLike(String contLike) { + this.contLike = contLike; + } + + public String getTitleLike() { + return titleLike; + } + + public void setTitleLike(String titleLike) { + this.titleLike = titleLike; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodCmnt.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodCmnt.java new file mode 100644 index 0000000..18a6eef --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodCmnt.java @@ -0,0 +1,52 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.security.model.User; + +public class BodCmnt extends BaseModel{ + + private Long cmntId; + private Long artiId; + private Long cmntGrp; + private Integer depth; + private String cont; + + private User user; + + public User getUser() { + return user; + } + public void setUser(User user) { + this.user = user; + } + public Integer getDepth() { + return depth; + } + public void setDepth(Integer depth) { + this.depth = depth; + } + public Long getCmntId() { + return cmntId; + } + public void setCmntId(Long cmntId) { + this.cmntId = cmntId; + } + public Long getArtiId() { + return artiId; + } + public void setArtiId(Long artiId) { + this.artiId = artiId; + } + public String getCont() { + return cont; + } + public void setCont(String cont) { + this.cont = cont; + } + public Long getCmntGrp() { + return cmntGrp; + } + public void setCmntGrp(Long cmntGrp) { + this.cmntGrp = cmntGrp; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodCmntSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodCmntSearch.java new file mode 100644 index 0000000..f9e1a50 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodCmntSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +public class BodCmntSearch extends BodCmnt{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodRole.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodRole.java new file mode 100644 index 0000000..4cdfc14 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodRole.java @@ -0,0 +1,28 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +public class BodRole { + + private Long bodId; + private String roleAuth; + private String authTp; + + public Long getBodId() { + return bodId; + } + public void setBodId(Long bodId) { + this.bodId = bodId; + } + public String getRoleAuth() { + return roleAuth; + } + public void setRoleAuth(String roleAuth) { + this.roleAuth = roleAuth; + } + public String getAuthTp() { + return authTp; + } + public void setAuthTp(String authTp) { + this.authTp = authTp; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodSearch.java new file mode 100644 index 0000000..4887e2a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/model/BodSearch.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.conts.bod.model; + +public class BodSearch extends Bod{ + + private String bodNmLike; + + public String getBodNmLike() { + return bodNmLike; + } + + public void setBodNmLike(String bodNmLike) { + this.bodNmLike = bodNmLike; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodArtiService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodArtiService.java new file mode 100644 index 0000000..c9f2aaa --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodArtiService.java @@ -0,0 +1,25 @@ +package kr.co.jinwoosi.clfd.conts.bod.service; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodArti; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArtiSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface BodArtiService extends BaseService { + + void updateHit(Long artiId); + + void insert(BodArti bodArti, Long[] itemIdList); + + void update(BodArti bodArti, Long[] itemIdList); + + void insert(BodArti bodArti, Long itemId); + + void update(BodArti bodArti, Long itemId); + + boolean isAuthScrt(Long artiId, Long userId); + + boolean isAuthUpdate(Long artiId, Long userId); + + boolean isAuthUpdate(BodArti bodArti, Long userId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodCmntService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodCmntService.java new file mode 100644 index 0000000..d25c7ec --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodCmntService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.conts.bod.service; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmntSearch; +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmnt; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface BodCmntService extends BaseService { + + boolean isAuthUpdate(Long cmntId, Long userId); + + boolean isAuthUpdate(BodCmnt bodCmnt, Long userId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodRoleService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodRoleService.java new file mode 100644 index 0000000..82cf0d1 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodRoleService.java @@ -0,0 +1,8 @@ +package kr.co.jinwoosi.clfd.conts.bod.service; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodRole; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface BodRoleService extends BaseService { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodService.java new file mode 100644 index 0000000..20fa2c6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/BodService.java @@ -0,0 +1,28 @@ +package kr.co.jinwoosi.clfd.conts.bod.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodSearch; +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.Role; + +public interface BodService extends BaseService { + + void insert(Bod bod, String[] writeRole, String[] notiRole, String[] scrtRole, String[] answRole); + void update(Bod bod, String[] writeRole, String[] notiRole, String[] scrtRole, String[] answRole); + + List selectJson(); + Bod selectJson(Long bodId); + void initJson(); + + boolean isAuthInsert(Bod bod, Long userId); + boolean isAuthInsert(Long bodId, Long userId); + + boolean isAuthNoti(Bod bod, Long userId); + boolean isAuthNoti(Long bodId, Long userId); + + boolean isAuthAnsw(Bod bod, Long userId); + boolean isAuthAnsw(Long bodId, Long userId); + List selectRoleList(Role role); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodArtiServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodArtiServiceImpl.java new file mode 100644 index 0000000..4e7ffcf --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodArtiServiceImpl.java @@ -0,0 +1,218 @@ +package kr.co.jinwoosi.clfd.conts.bod.service.impl; + +import kr.co.jinwoosi.clfd.conts.bod.mapper.BodArtiMapper; +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArti; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArtiSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodArtiService; +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +@Service(value="bodArtiService") +public class BodArtiServiceImpl extends BaseServiceImpl implements BodArtiService { + + @Resource (name="userService") + private UserService userService; + + @Resource (name="userRoleService") + private UserRoleService userRoleService; + + @Resource (name="bodService") + private BodService bodService; + + @Resource (name="fileItemService") + private FileItemService fileItemService; + + @Resource (name="fileService") + private FileService fileService; + + @Override + @Resource (name="bodArtiMapper") + protected void setMapper (BodArtiMapper mapper) { + super.setMapper (mapper); + } + + @Override + public BodArti select(BodArtiSearch bodArtiSearch) { + BodArti bodArti = super.select(bodArtiSearch); + + UserSearch userSearch; + List bodList = bodService.selectJson(); + for(Bod bod : bodList) { + if(bodArti.getBodId().equals(bod.getBodId())) { + bodArti.setBod(bod); + break; + } + } + userSearch = new UserSearch(); + userSearch.setUserId(bodArti.getRegId()); + bodArti.setUser(userService.select(userSearch)); + return bodArti; + } + + @Override + public List selectList(BodArtiSearch bodArtiSearch) { + List result = new ArrayList(); + List bodArtiList = super.selectList(bodArtiSearch); + + UserSearch userSearch; + List bodList = bodService.selectJson(); + for(BodArti bodArti : bodArtiList) { + for(Bod bod : bodList) { + if(bodArti.getBodId().equals(bod.getBodId())) { + bodArti.setBod(bod); + break; + } + } + userSearch = new UserSearch(); + userSearch.setUserId(bodArti.getRegId()); + bodArti.setUser(userService.select(userSearch)); + + result.add(bodArti); + } + return result; + } + + + @Override + public void updateHit(Long artiId) { + mapper.updateHit(artiId); + } + + + + @Override + public void insert(BodArti bodArti) { + super.insert(bodArti); + } + + @Override + public void insert(BodArti bodArti, Long[] itemIdList) { + FileInfo file = new FileInfo(); + fileService.insert(file); + + FileItem fileItem; + for(Long itemId : itemIdList) { + fileItem = new FileItem(); + fileItem.setFileId(file.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + } + + bodArti.setFileId(file.getFileId()); + insert(bodArti); + } + + + @Override + public void update(BodArti bodArti, Long[] itemIdList) { + for(Long itemId : itemIdList) { + FileItem fileItem = new FileItem(); + fileItem.setFileId(bodArti.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + } + + update(bodArti); + } + + + @Override + public void insert(BodArti bodArti, Long itemId) { + FileInfo file = new FileInfo(); + fileService.insert(file); + + FileItem fileItem = new FileItem(); + fileItem.setFileId(file.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + + bodArti.setFileId(file.getFileId()); + insert(bodArti); + } + + + @Override + public void update(BodArti bodArti, Long itemId) { + if(itemId != null) { //첨부파일 교체 시 + fileService.deleteFileItem(bodArti.getFileId()); + + FileItem fileItem = new FileItem(); + fileItem.setFileId(bodArti.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + } + + update(bodArti); + } + + /** + * 비밀글 보기 권한이 있는지 조회한다. + */ + @Override + public boolean isAuthScrt(Long artiId, Long userId) { + if(userId != null) { + BodArtiSearch bodArtiSearch = new BodArtiSearch(); + bodArtiSearch.setArtiId(artiId); + BodArti bodArti = select(bodArtiSearch); + if(bodArti.getRegId().compareTo(userId) == 0) { + return true; + }else { + Bod bod = bodArti.getBod(); + List scrtRoleList = bod.getScrtRoleList(); + if(scrtRoleList.size() > 0) { + List roleList = new ArrayList(); + UserRole userRoleSearch = new UserRole(); + userRoleSearch.setUserId(userId); + List userRoleList = userRoleService.selectList(userRoleSearch); + for(UserRole userRole : userRoleList) { + roleList.add(userRole.getRoleAuth()); + } + for(String role : roleList) { + if(scrtRoleList.contains(role)) { + return true; + } + } + } + } + } + return false; + } + + /** + * 수정권한이 있는지 조회한다. + */ + @Override + public boolean isAuthUpdate(Long artiId, Long userId) { + if(userId != null) { + BodArtiSearch bodArtiSearch = new BodArtiSearch(); + bodArtiSearch.setArtiId(artiId); + BodArti bodArti = select(bodArtiSearch); + return isAuthUpdate(bodArti, userId); + } + return false; + } + @Override + public boolean isAuthUpdate(BodArti bodArti, Long userId) { + if(userId != null) { + if(bodArti.getRegId().compareTo(userId) == 0) { + return true; + } + } + return false; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodCmntServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodCmntServiceImpl.java new file mode 100644 index 0000000..1887e38 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodCmntServiceImpl.java @@ -0,0 +1,84 @@ +package kr.co.jinwoosi.clfd.conts.bod.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.bod.mapper.BodCmntMapper; +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmnt; +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmntSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodCmntService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; + +@Service(value="bodCmntService") +public class BodCmntServiceImpl extends BaseServiceImpl implements BodCmntService { + + @Resource (name="userService") + private UserService userService; + + @Override + @Resource (name="bodCmntMapper") + protected void setMapper (BodCmntMapper mapper) { + super.setMapper (mapper); + } + + @Override + public List selectList(BodCmntSearch s) { + List result = new ArrayList(); + + UserSearch userSearch; + List bodCmntList = super.selectList(s); + for(BodCmnt bodCmnt : bodCmntList) { + userSearch = new UserSearch(); + userSearch.setUserId(bodCmnt.getRegId()); + bodCmnt.setUser(userService.select(userSearch)); + result.add(bodCmnt); + } + return result; + } + + @Override + public BodCmnt select(BodCmntSearch s) { + BodCmnt bodCmnt = super.select(s); + UserSearch userSearch = new UserSearch(); + userSearch.setUserId(bodCmnt.getRegId()); + bodCmnt.setUser(userService.select(userSearch)); + return bodCmnt; + } + + @Override + public void insert(BodCmnt bodCmnt) { + super.insert(bodCmnt); + if(bodCmnt.getCmntGrp() == null) { + bodCmnt.setCmntGrp(bodCmnt.getCmntId()); + mapper.updateCmntGrp(bodCmnt); + } + } + + @Override + public boolean isAuthUpdate(Long cmntId, Long userId) { + if(userId != null) { + BodCmntSearch bodCmntSearch = new BodCmntSearch(); + bodCmntSearch.setCmntId(cmntId); + BodCmnt bodCmnt = select(bodCmntSearch); + return isAuthUpdate(bodCmnt, userId); + } + return false; + } + + @Override + public boolean isAuthUpdate(BodCmnt bodCmnt, Long userId) { + if(userId != null) { + if(bodCmnt.getRegId().compareTo(userId) == 0) { + return true; + } + } + return false; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodRoleImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodRoleImpl.java new file mode 100644 index 0000000..4225eee --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodRoleImpl.java @@ -0,0 +1,20 @@ +package kr.co.jinwoosi.clfd.conts.bod.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.bod.mapper.BodRoleMapper; +import kr.co.jinwoosi.clfd.conts.bod.model.BodRole; +import kr.co.jinwoosi.clfd.conts.bod.service.BodRoleService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="bodRoleService") +public class BodRoleImpl extends BaseServiceImpl implements BodRoleService { + + @Override + @Resource (name="bodRoleMapper") + protected void setMapper (BodRoleMapper mapper) { + super.setMapper (mapper); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodServiceImpl.java new file mode 100644 index 0000000..6fbf540 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/service/impl/BodServiceImpl.java @@ -0,0 +1,306 @@ +package kr.co.jinwoosi.clfd.conts.bod.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.bod.mapper.BodMapper; +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.conts.bod.model.BodRole; +import kr.co.jinwoosi.clfd.conts.bod.model.BodSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodRoleService; +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.util.ApplicationHelper; +import kr.co.jinwoosi.clfd.framework.util.CdUtil; +import kr.co.jinwoosi.clfd.framework.util.Constants; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.security.model.Role; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; + +@Service(value="bodService") +public class BodServiceImpl extends BaseServiceImpl implements BodService { + + @Resource (name="bodRoleService") + private BodRoleService bodRoleService; + + @Resource (name="userRoleService") + private UserRoleService userRoleService; + + @Override + @Resource (name="bodMapper") + protected void setMapper (BodMapper mapper) { + super.setMapper (mapper); + } + + @Override + public Bod select(BodSearch bodSearch) { + Bod bod = super.select(bodSearch); + + List cdDtlList = CdUtil.cdDtlList("board"); + for(CdDtl cdDtl : cdDtlList) { + if(cdDtl.getCdDtlId().equals(bod.getBodTp())) { + bod.setBodTpCd(cdDtl); + break; + } + } + + BodRole bodRoleSearch = new BodRole(); + bodRoleSearch.setBodId(bodSearch.getBodId()); + List bodRoleList = bodRoleService.selectList(bodRoleSearch); + + List notiRoleList = new ArrayList(); + List writeRoleList = new ArrayList(); + List scrtRoleList = new ArrayList(); + List answRoleList = new ArrayList(); + for(BodRole bodRole : bodRoleList) { + if(Constants.BOD_ROLE_TYPE_NOTI.equals(bodRole.getAuthTp())) notiRoleList.add(bodRole.getRoleAuth()); + if(Constants.BOD_ROLE_TYPE_WRITE.equals(bodRole.getAuthTp())) writeRoleList.add(bodRole.getRoleAuth()); + if(Constants.BOD_ROLE_TYPE_SCRT.equals(bodRole.getAuthTp())) scrtRoleList.add(bodRole.getRoleAuth()); + if(Constants.BOD_ROLE_TYPE_ANSW.equals(bodRole.getAuthTp())) answRoleList.add(bodRole.getRoleAuth()); + } + + bod.setNotiRoleList(notiRoleList); + bod.setWriteRoleList(writeRoleList); + bod.setScrtRoleList(scrtRoleList); + bod.setAnswRoleList(answRoleList); + + return bod; + } + + @Override + public List selectList(BodSearch bodSearch) { + List writeRoleList,scrtRoleList,answRoleList; + + BodRole bodRoleSearch; + List bodRoleList; + + List cdDtlList = CdUtil.cdDtlList("board"); + List resultList = new ArrayList(); + List bodList = super.selectList(bodSearch); + for(Bod bod : bodList) { + bodRoleSearch = new BodRole(); + bodRoleSearch.setBodId(bod.getBodId()); + bodRoleList = bodRoleService.selectList(bodRoleSearch); + + List notiRoleList = new ArrayList(); + writeRoleList = new ArrayList(); + scrtRoleList = new ArrayList(); + answRoleList = new ArrayList(); + for(BodRole bodRole : bodRoleList) { + if(Constants.BOD_ROLE_TYPE_NOTI.equals(bodRole.getAuthTp())) notiRoleList.add(bodRole.getRoleAuth()); + if(Constants.BOD_ROLE_TYPE_WRITE.equals(bodRole.getAuthTp())) writeRoleList.add(bodRole.getRoleAuth()); + if(Constants.BOD_ROLE_TYPE_SCRT.equals(bodRole.getAuthTp())) scrtRoleList.add(bodRole.getRoleAuth()); + if(Constants.BOD_ROLE_TYPE_ANSW.equals(bodRole.getAuthTp())) answRoleList.add(bodRole.getRoleAuth()); + } + bod.setNotiRoleList(notiRoleList); + bod.setWriteRoleList(writeRoleList); + bod.setScrtRoleList(scrtRoleList); + bod.setAnswRoleList(answRoleList); + + for(CdDtl cdDtl : cdDtlList) { + if(cdDtl.getCdDtlId().equals(bod.getBodTp())) { + bod.setBodTpCd(cdDtl); + break; + } + } + + resultList.add(bod); + } + + return resultList; + } + + @Override + public void insert(Bod bod, String[] writeRole, String[] notiRole, String[] scrtRole, String[] answRole) { + insert(bod); + updateBodRole(bod.getBodId(), writeRole, notiRole, scrtRole, answRole); + } + + @Override + public void update(Bod bod, String[] writeRole, String[] notiRole, String[] scrtRole, String[] answRole) { + update(bod); + updateBodRole(bod.getBodId(), writeRole, notiRole, scrtRole, answRole); + } + + public void updateBodRole(Long bodId, String[] writeRole, String[] notiRole, String[] scrtRole, String[] answRole) { + BodRole bodRole = new BodRole(); + bodRole.setBodId(bodId); + bodRoleService.delete(bodRole); + + if(writeRole != null) { //쓰기그룹 + for(String roleAuth : writeRole) { + bodRole.setAuthTp(Constants.BOD_ROLE_TYPE_WRITE); + bodRole.setRoleAuth(roleAuth); + bodRoleService.insert(bodRole); + } + } + if(notiRole != null) { //공지관리그룹 + for(String roleAuth : notiRole) { + bodRole.setAuthTp(Constants.BOD_ROLE_TYPE_NOTI); + bodRole.setRoleAuth(roleAuth); + bodRoleService.insert(bodRole); + } + } + if(scrtRole != null) { //비밀글관리그룹 + for(String roleAuth : scrtRole) { + bodRole.setAuthTp(Constants.BOD_ROLE_TYPE_SCRT); + bodRole.setRoleAuth(roleAuth); + bodRoleService.insert(bodRole); + } + } + if(answRole != null) { //답변관리 그룹 + for(String roleAuth : answRole) { + bodRole.setAuthTp(Constants.BOD_ROLE_TYPE_ANSW); + bodRole.setRoleAuth(roleAuth); + bodRoleService.insert(bodRole); + } + } + } + + @Override + public List selectJson() { + if(ApplicationHelper.getBodList() == null) { + initJson(); + } + + return ApplicationHelper.getBodList(); + } + + @Override + public Bod selectJson(Long bodId) { + List bodList = selectJson(); + + Bod bod = null; + for(Bod bd : bodList) { + if(bd.getBodId().compareTo(bodId) == 0) { + bod = bd; + break; + } + } + return bod; + } + + @Override + public void initJson() { + BodSearch bodSearch = new BodSearch(); + List bodList = selectList(bodSearch); + + ApplicationHelper.setBodList(bodList); + } + + /** + * 등록 권한이 있는지 체크한다. + */ + @Override + public boolean isAuthInsert(Long bodId, Long userId) { + if(userId != null) { + Bod bod = selectJson(bodId); + return isAuthInsert(bod, userId); + } + return false; + } + @Override + public boolean isAuthInsert(Bod bod, Long userId) { + if(userId != null) { + List writeRoleList = bod.getWriteRoleList(); +// if(writeRoleList.size() > 0) { + List roleList = new ArrayList(); + UserRole userRoleSearch = new UserRole(); + userRoleSearch.setUserId(userId); + List userRoleList = userRoleService.selectList(userRoleSearch); + for(UserRole userRole : userRoleList) { + roleList.add(userRole.getRoleAuth()); + } + for(String role : roleList) { + if(writeRoleList.contains(role)) { + return true; + } + } +// }else { +// return true; +// } + } + return false; + } + + /** + * 공지글 게시권한이 있는지 체크한다. + */ + @Override + public boolean isAuthNoti(Long bodId, Long userId) { + if(userId != null) { + Bod bod = selectJson(bodId); + return isAuthNoti(bod, userId); + } + return false; + } + + @Override + public boolean isAuthNoti(Bod bod, Long userId) { + if(userId != null) { + List notiRoleList = bod.getNotiRoleList(); + if(notiRoleList.size() > 0) { + List roleList = new ArrayList(); + UserRole userRoleSearch = new UserRole(); + userRoleSearch.setUserId(userId); + List userRoleList = userRoleService.selectList(userRoleSearch); + for(UserRole userRole : userRoleList) { + roleList.add(userRole.getRoleAuth()); + } + for(String role : roleList) { + if(notiRoleList.contains(role)) { + return true; + } + } + } + } + return false; + } + + /** + * 답변 권한이 있는지 체크한다. + */ + @Override + public boolean isAuthAnsw(Long bodId, Long userId) { + if(userId != null) { + Bod bod = selectJson(bodId); + return isAuthAnsw(bod, userId); + } + return false; + } + + @Override + public boolean isAuthAnsw(Bod bod, Long userId) { + if(userId != null && bod.getAnswYn() != null && bod.getAnswYn()) { + List answRoleList = bod.getAnswRoleList(); +// if(answRoleList.size() > 0) { + List roleList = new ArrayList(); + UserRole userRoleSearch = new UserRole(); + userRoleSearch.setUserId(userId); + List userRoleList = userRoleService.selectList(userRoleSearch); + for(UserRole userRole : userRoleList) { + roleList.add(userRole.getRoleAuth()); + } + for(String role : roleList) { + if(answRoleList.contains(role)) { + return true; + } + } +// }else { +// return true; +// } + } + return false; + } + + @Override + public List selectRoleList(Role role) { + return mapper.selectRoleList(role); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodArtiController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodArtiController.java new file mode 100644 index 0000000..817b8ad --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodArtiController.java @@ -0,0 +1,271 @@ +package kr.co.jinwoosi.clfd.conts.bod.web; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodArti; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArtiSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodArtiService; +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class BodArtiController extends BaseController { + + @Resource (name="bodArtiService") + private BodArtiService bodArtiService; + + @Resource (name="bodService") + private BodService bodService; + + @Resource (name="userService") + private UserService userService; + + @RequestMapping (value="/system/bodArti/list.mng", method=RequestMethod.GET) + public String list(Model model) { + model.addAttribute("bodList", bodService.selectJson()); + return "system/bodArti/list"; + } + + @RequestMapping (value={"/public/bodArti/list.json","/system/bodArti/list.json"}) + @ResponseBody + public Map list(HttpServletRequest request, BodArtiSearch bodArtiSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + bodArtiSearch.setSort(sort); + bodArtiSearch.setSortOrd(sortOder); + bodArtiSearch.setPagingYn(true); + + User user = (User) request.getSession().getAttribute("user"); + + if(user.getUserTyCd().equals("J")){ + bodArtiSearch.setRegId(user.getUserId()); + } + + int totalCount = bodArtiService.count(bodArtiSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", bodArtiService.selectList(bodArtiSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/bodArti/noticeList.json", method=RequestMethod.POST) + @ResponseBody + public Map noticeList(HttpServletRequest request, BodArtiSearch bodArtiSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + bodArtiSearch.setSort(sort); + bodArtiSearch.setSortOrd(sortOder); + bodArtiSearch.setPagingYn(true); + bodArtiSearch.setNotiYn(true); + + int totalCount = bodArtiService.count(bodArtiSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", bodArtiService.selectList(bodArtiSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/bodArti/insert.json", method = RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, BodArti bodArti) { + Map result = new HashMap<>(); + try{ + bodArti.setRegId(getUserId()); + User user = (User) request.getSession().getAttribute("user"); + bodArti.setRegNm(user.getUserNm()); + bodArti.setNotiYn(true); + bodArtiService.insert(bodArti); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/system/bodArti/view.json"}) + @ResponseBody + public Map view(BodArtiSearch bodArtiSearch) { + Map result = new HashMap(); + try { + result.put("data", bodArtiService.select(bodArtiSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/bodArti/update.json", method = RequestMethod.POST) + @ResponseBody + public Map update(BodArtiSearch bodArtiSearch){ + Map result = new HashMap<>(); + try { + bodArtiService.update(bodArtiSearch); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 답변 등록 + */ + @RequestMapping (value={"/public/bodArti/multi/insertAnsw.json"}, method=RequestMethod.POST) + @ResponseBody + public Map insertAnsw(BodArti bodArti, Long[] itemIdList) { + Map result = new HashMap(); + try { + if(bodService.isAuthAnsw(bodArti.getBodId(), getUserId())) { //게시물 등록 권한이 존재하는지 확인 + bodArti.setRegId(getUserId()); + bodArtiService.insert(bodArti, itemIdList); + + result.put("result", "success"); + }else { + result.put("result", "fail"); + result.put("message", "등록 권한이 없습니다."); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/public/bodArti/multi/insert.json"}, method=RequestMethod.POST) + @ResponseBody + public Map insert( BodArti bodArti, Long[] itemIdList) { + Map result = new HashMap(); + try { + bodArti.setRegId(getUserId()); + bodArtiService.insert(bodArti, itemIdList); + result.put("fileId", bodArti.getFileId()); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/public/bodArti/one/insert.json"}, method=RequestMethod.POST) + @ResponseBody + public Map insert(BodArti bodArti, Long itemId) { + Map result = new HashMap(); + try { + bodArti.setRegId(getUserId()); + bodArtiService.insert(bodArti, itemId); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/public/bodArti/multi/update.json"}, method=RequestMethod.POST) + @ResponseBody + public Map update(BodArti bodArti, Long[] itemIdList) { + Map result = new HashMap(); + try { + bodArti.setUpdId(getUserId()); + bodArtiService.update(bodArti, itemIdList); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/public/bodArti/one/update.json"}, method=RequestMethod.POST) + @ResponseBody + public Map update(BodArti bodArti, Long itemId) { + Map result = new HashMap(); + try { + bodArti.setUpdId(getUserId()); + bodArtiService.update(bodArti, itemId); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/system/bodArti/delete.json"}, method=RequestMethod.POST) + @ResponseBody + public Map delete(BodArti bodArti) { + Map result = new HashMap(); + try { + bodArti.setDelId(getUserId()); + bodArtiService.delete(bodArti); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 비밀글 조회권한이 있는지 체크한다. + */ + @RequestMapping (value={"/public/bodArti/isScrt.json"}) + @ResponseBody + public Map isScrt(@RequestParam(required=true) Long artiId) { + Map result = new HashMap(); + try { + if(bodArtiService.isAuthScrt(artiId, getUserId())) { + result.put("result", "success"); + }else { + result.put("result", "noAuth"); + result.put("message", "조회 권한이 없습니다."); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodCmntController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodCmntController.java new file mode 100644 index 0000000..67186cd --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodCmntController.java @@ -0,0 +1,91 @@ +package kr.co.jinwoosi.clfd.conts.bod.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmnt; +import kr.co.jinwoosi.clfd.conts.bod.model.BodCmntSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodCmntService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class BodCmntController extends BaseController { + + @Resource (name="bodCmntService") + private BodCmntService bodCmntService; + + @RequestMapping (value="/public/bodCmnt/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, BodCmnt bodCmnt) { + Map result = new HashMap(); + try { + bodCmnt.setRegId(getUserId()); + bodCmnt.setUpdId(getUserId()); + bodCmntService.insert(bodCmnt); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/public/bodCmnt/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, BodCmntSearch bodCmntSearch) { + Map result = new HashMap(); + try { + result.put("data", bodCmntService.selectList(bodCmntSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/public/bodCmnt/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, BodCmnt bodCmnt) { + Map result = new HashMap(); + try { + bodCmnt.setRegId(getUserId()); + bodCmnt.setUpdId(getUserId()); + bodCmntService.delete(bodCmnt); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/public/bodCmnt/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, BodCmnt bodCmnt) { + Map result = new HashMap(); + try { + bodCmnt.setRegId(getUserId()); + bodCmnt.setUpdId(getUserId()); + bodCmntService.update(bodCmnt); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodController.java new file mode 100644 index 0000000..b51b87e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/bod/web/BodController.java @@ -0,0 +1,139 @@ +package kr.co.jinwoosi.clfd.conts.bod.web; + +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.conts.bod.model.BodSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.security.model.Role; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class BodController extends BaseController { + + @Resource (name="bodService") + private BodService bodService; + + @Resource(name="cdDtlService") + private CdDtlService cdDtlService; + + @RequestMapping (value="/system/bod/list.mng", method=RequestMethod.GET) + public String list(Model model) { + model.addAttribute("cdDtlBodTypeList", cdDtlService.selectCdDtlList("board")); + return "system/bod/list"; + } + + @RequestMapping (value="/system/bod/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, BodSearch bodSearch, Boolean pagingYn) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + bodSearch.setSort(sort); + bodSearch.setSortOrd(sortOder); + bodSearch.setPagingYn(pagingYn); + + int totalCount = bodService.count(bodSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", bodService.selectList(bodSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/bod/view.mng", method=RequestMethod.GET) + public String view(Model model, BodSearch bodSearch) { + Bod bod = bodService.select(bodSearch); + model.addAttribute("bod", bod); + + Role role = new Role(); + model.addAttribute("roleList", bodService.selectRoleList(role)); + return "system/bod/view"; + } + + @RequestMapping (value="/system/bod/insert.mng", method=RequestMethod.GET) + public String insert(Model model) { + Role role = new Role(); + model.addAttribute("roleList", bodService.selectRoleList(role)); + return "system/bod/insert"; + } + + @RequestMapping (value="/system/bod/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Bod bod) { + Map result = new HashMap(); + try { + String[] writeRole = request.getParameterValues("writeRole"); + String[] notiRole = request.getParameterValues("notiRole"); + String[] scrtRole = request.getParameterValues("scrtRole"); + String[] answRole = request.getParameterValues("answRole"); + + bod.setRegId(getUserId()); + bodService.insert(bod, writeRole, notiRole, scrtRole, answRole); + + bodService.initJson(); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/bod/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Bod bod) { + Map result = new HashMap(); + try { + String[] writeRole = request.getParameterValues("writeRole"); + String[] notiRole = request.getParameterValues("notiRole"); + String[] scrtRole = request.getParameterValues("scrtRole"); + String[] answRole = request.getParameterValues("answRole"); + + bod.setUpdId(getUserId()); + bodService.update(bod, writeRole, notiRole, scrtRole, answRole); + + bodService.initJson(); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/bod/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(Bod bod) { + Map result = new HashMap(); + try { + bod.setDelId(getUserId()); + bodService.delete(bod); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/company/mapper/CompanyMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/company/mapper/CompanyMapper.java new file mode 100644 index 0000000..ee43a62 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/company/mapper/CompanyMapper.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.conts.company.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.company.model.Company; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper(value="companyMapper") +public interface CompanyMapper extends BaseMapper { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/company/model/Company.java b/src/main/java/kr/co/jinwoosi/clfd/conts/company/model/Company.java new file mode 100644 index 0000000..3921e60 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/company/model/Company.java @@ -0,0 +1,26 @@ +package kr.co.jinwoosi.clfd.conts.company.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Company extends BaseModel { + + private Long companyId; + private String companyGbn; + private String companyNm; + private String saupjaNo; + private String ownerName; + private String telNo; + private String faxNo; + private String companySiteUrl; + private String addrM; + private String addrD; + private String imageDir; + private String companyLogo; + + private String companyGbnNm; + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/company/service/CompanyService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/company/service/CompanyService.java new file mode 100644 index 0000000..03937af --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/company/service/CompanyService.java @@ -0,0 +1,7 @@ +package kr.co.jinwoosi.clfd.conts.company.service; + +import kr.co.jinwoosi.clfd.conts.company.model.Company; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface CompanyService extends BaseService { +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/company/service/impl/CompanyServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/company/service/impl/CompanyServiceImpl.java new file mode 100644 index 0000000..7b2e456 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/company/service/impl/CompanyServiceImpl.java @@ -0,0 +1,20 @@ +package kr.co.jinwoosi.clfd.conts.company.service.impl; + +import kr.co.jinwoosi.clfd.conts.company.mapper.CompanyMapper; +import kr.co.jinwoosi.clfd.conts.company.model.Company; +import kr.co.jinwoosi.clfd.conts.company.service.CompanyService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service(value = "companyService") +public class CompanyServiceImpl extends BaseServiceImpl implements CompanyService { + + @Override + @Resource(name="companyMapper") + protected void setMapper (CompanyMapper mapper) { + super.setMapper(mapper); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/company/web/CompanyController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/company/web/CompanyController.java new file mode 100644 index 0000000..d13d54f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/company/web/CompanyController.java @@ -0,0 +1,92 @@ +package kr.co.jinwoosi.clfd.conts.company.web; + +import kr.co.jinwoosi.clfd.conts.company.model.Company; +import kr.co.jinwoosi.clfd.conts.company.service.CompanyService; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +@Controller +public class CompanyController extends BaseController { + + @Value("#{prop['AppConf.filePath.image']}") + private String imgUrl; + + @Resource(name = "companyService") + private CompanyService companyService; + + @RequestMapping(value = "/system/company/list.mng", method = RequestMethod.GET) + public String list(Model model, Company company) { + model.addAttribute("companyInfo", companyService.select(company)); + return "system/company/list"; + } + + @RequestMapping(value = "/system/company/list.json", method = RequestMethod.POST) + @ResponseBody + public Map list(Company company) { + Map result = new HashMap(); + try { + result.put("data", companyService.select(company)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/company/update.json", method = RequestMethod.POST) + @ResponseBody + public Map update(@RequestParam(required = false, value = "uploadFile") MultipartFile multipartFile, Company company) { + Map result = new HashMap<>(); + try { + if (multipartFile == null || multipartFile.isEmpty()) { + } else { + File dirPath = new File(imgUrl); + if (!dirPath.isDirectory()) { + dirPath.mkdir(); + } + Company fileInfo = companyService.select(company); + if (fileInfo.getImageDir() != null && fileInfo.getCompanyLogo() != null) { + String filePath = imgUrl + fileInfo.getImageDir() + '_' + fileInfo.getCompanyLogo(); + File deleteFile = new File(filePath); + deleteFile.delete(); + } + String uuidPath = UUID.randomUUID().toString(); + String fileName = multipartFile.getOriginalFilename().replaceAll(" ", "_"); + company.setImageDir(uuidPath); + company.setCompanyLogo(fileName); + + File file = new File(imgUrl + uuidPath + '_' + fileName); + try { + multipartFile.transferTo(file); + } catch (Exception e) { + e.printStackTrace(); + } + } + company.setUpdId(getUserId()); + companyService.update(company); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContBkmakMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContBkmakMapper.java new file mode 100644 index 0000000..17349d6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContBkmakMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.cont.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmak; +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmakSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="contBkmakMapper") +public interface ContBkmakMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContItemHistMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContItemHistMapper.java new file mode 100644 index 0000000..75ba80f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContItemHistMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.cont.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHist; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHistSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="contItemHistMapper") +public interface ContItemHistMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContItemMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContItemMapper.java new file mode 100644 index 0000000..18ce696 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContItemMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.cont.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItem; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="contItemMapper") +public interface ContItemMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContMapper.java new file mode 100644 index 0000000..397759c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/mapper/ContMapper.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.conts.cont.mapper; + +import java.util.List; +import java.util.Map; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContSearch; +import kr.co.jinwoosi.clfd.conts.cont.model.Cont; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="contMapper") +public interface ContMapper extends BaseMapper { + + List> dynamic(ContSearch contSearch); + String selectSerial(); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/Cont.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/Cont.java new file mode 100644 index 0000000..0d4ffea --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/Cont.java @@ -0,0 +1,38 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Cont extends BaseModel{ + + private Long contId; + private String contNm; + + private ContItem contItem; + private Boolean bookmarkYn; + + public Long getContId() { + return contId; + } + public void setContId(Long contId) { + this.contId = contId; + } + public String getContNm() { + return contNm; + } + public void setContNm(String contNm) { + this.contNm = contNm; + } + public ContItem getContItem() { + return contItem; + } + public void setContItem(ContItem contItem) { + this.contItem = contItem; + } + public Boolean getBookmarkYn() { + return bookmarkYn; + } + public void setBookmarkYn(Boolean bookmarkYn) { + this.bookmarkYn = bookmarkYn; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContBkmak.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContBkmak.java new file mode 100644 index 0000000..13f2e3b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContBkmak.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class ContBkmak extends BaseModel{ + + private Long contId; + private Long userId; + + public Long getContId() { + return contId; + } + public void setContId(Long contId) { + this.contId = contId; + } + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContBkmakSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContBkmakSearch.java new file mode 100644 index 0000000..12c97fd --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContBkmakSearch.java @@ -0,0 +1,6 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +public class ContBkmakSearch extends ContBkmak{ + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItem.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItem.java new file mode 100644 index 0000000..a78363e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItem.java @@ -0,0 +1,44 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class ContItem extends BaseModel{ + + private Long contItemId; + private String contItemNm; + private Long contId; + private String cont; + private Long langId; + + public Long getContItemId() { + return contItemId; + } + public void setContItemId(Long contItemId) { + this.contItemId = contItemId; + } + public String getContItemNm() { + return contItemNm; + } + public void setContItemNm(String contItemNm) { + this.contItemNm = contItemNm; + } + public Long getContId() { + return contId; + } + public void setContId(Long contId) { + this.contId = contId; + } + public String getCont() { + return cont; + } + public void setCont(String cont) { + this.cont = cont; + } + public Long getLangId() { + return langId; + } + public void setLangId(Long langId) { + this.langId = langId; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemHist.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemHist.java new file mode 100644 index 0000000..aa19df1 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemHist.java @@ -0,0 +1,66 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.security.model.User; + +public class ContItemHist extends BaseModel{ + + private Long contItemHistId; + private String contItemNm; + private Long contId; + private String cont; + private Long langId; + private String contRegId; + private String contRegNm; + + private User user; + + public User getUser() { + return user; + } + public void setUser(User user) { + this.user = user; + } + public Long getContItemHistId() { + return contItemHistId; + } + public void setContItemHistId(Long contItemHistId) { + this.contItemHistId = contItemHistId; + } + public String getContItemNm() { + return contItemNm; + } + public void setContItemNm(String contItemNm) { + this.contItemNm = contItemNm; + } + public Long getContId() { + return contId; + } + public void setContId(Long contId) { + this.contId = contId; + } + public String getCont() { + return cont; + } + public void setCont(String cont) { + this.cont = cont; + } + public Long getLangId() { + return langId; + } + public void setLangId(Long langId) { + this.langId = langId; + } + public String getContRegId() { + return contRegId; + } + public void setContRegId(String contRegId) { + this.contRegId = contRegId; + } + public String getContRegNm() { + return contRegNm; + } + public void setContRegNm(String contRegNm) { + this.contRegNm = contRegNm; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemHistSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemHistSearch.java new file mode 100644 index 0000000..6824d8f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemHistSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +public class ContItemHistSearch extends ContItemHist{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemSearch.java new file mode 100644 index 0000000..79e6f72 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContItemSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +public class ContItemSearch extends ContItem{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContSearch.java new file mode 100644 index 0000000..a7c8b2a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/model/ContSearch.java @@ -0,0 +1,4 @@ +package kr.co.jinwoosi.clfd.conts.cont.model; + +public class ContSearch extends Cont{ +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContBkmakService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContBkmakService.java new file mode 100644 index 0000000..5f07d2f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContBkmakService.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.conts.cont.service; + +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmakSearch; +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmak; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface ContBkmakService extends BaseService { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContItemHistService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContItemHistService.java new file mode 100644 index 0000000..e8026b4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContItemHistService.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.conts.cont.service; + +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHist; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHistSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface ContItemHistService extends BaseService { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContItemService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContItemService.java new file mode 100644 index 0000000..3f9db1b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContItemService.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.cont.service; + +import kr.co.jinwoosi.clfd.conts.cont.model.ContItem; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface ContItemService extends BaseService { + + ContItem selectLast(ContItemSearch contItemSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContService.java new file mode 100644 index 0000000..561b2b4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/ContService.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.conts.cont.service; + +import java.util.List; +import java.util.Map; + +import kr.co.jinwoosi.clfd.conts.cont.model.ContItem; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHist; +import kr.co.jinwoosi.clfd.conts.cont.model.ContSearch; +import kr.co.jinwoosi.clfd.conts.cont.model.Cont; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface ContService extends BaseService { + + Cont select(ContSearch contSearch, Long langId); + + void insert (Cont cont, List contItemList, List contItemHistList); + + void update (Cont cont, List contItemList, List contItemHistList); + + List> dynamic(ContSearch contSearch); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContBkmakServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContBkmakServiceImpl.java new file mode 100644 index 0000000..3fb1185 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContBkmakServiceImpl.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.conts.cont.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.cont.mapper.ContBkmakMapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmak; +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmakSearch; +import kr.co.jinwoosi.clfd.conts.cont.service.ContBkmakService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="contBkmakService") +public class ContBkmakServiceImpl extends BaseServiceImpl implements ContBkmakService { + + @Override + @Resource (name="contBkmakMapper") + protected void setMapper (ContBkmakMapper mapper) { + super.setMapper (mapper); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContItemHistServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContItemHistServiceImpl.java new file mode 100644 index 0000000..5a2b7b4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContItemHistServiceImpl.java @@ -0,0 +1,43 @@ +package kr.co.jinwoosi.clfd.conts.cont.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.cont.mapper.ContItemHistMapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHist; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHistSearch; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemHistService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; + +@Service(value="contItemHistService") +public class ContItemHistServiceImpl extends BaseServiceImpl implements ContItemHistService { + + @Resource (name="userService") + private UserService userService; + + @Override + @Resource (name="contItemHistMapper") + protected void setMapper (ContItemHistMapper mapper) { + super.setMapper (mapper); + } + + @Override + public List selectList(ContItemHistSearch contItemHistSearch) { + List result = new ArrayList(); + List contItemHistList = super.selectList(contItemHistSearch); + UserSearch userSearch; + for(ContItemHist contItemHist : contItemHistList) { + userSearch = new UserSearch(); + userSearch.setUserId(contItemHist.getRegId()); + contItemHist.setUser(userService.select(userSearch)); + result.add(contItemHist); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContItemServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContItemServiceImpl.java new file mode 100644 index 0000000..89392a3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContItemServiceImpl.java @@ -0,0 +1,36 @@ +package kr.co.jinwoosi.clfd.conts.cont.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.cont.mapper.ContItemMapper; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItem; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemSearch; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="contItemService") +public class ContItemServiceImpl extends BaseServiceImpl implements ContItemService { + + @Override + @Resource (name="contItemMapper") + protected void setMapper (ContItemMapper mapper) { + super.setMapper (mapper); + } + + @Override + public ContItem selectLast(ContItemSearch contItemSearch) { + contItemSearch.setSort("REG_DT"); + contItemSearch.setSortOrd("DESC"); + List contItemList = super.selectList(contItemSearch); + if(contItemList.size() > 0) { + return contItemList.get(0); + }else { + return null; + } + } + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContServiceImpl.java new file mode 100644 index 0000000..7674f86 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/service/impl/ContServiceImpl.java @@ -0,0 +1,109 @@ +package kr.co.jinwoosi.clfd.conts.cont.service.impl; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.cont.mapper.ContMapper; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemHistService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.conts.cont.model.Cont; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItem; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHist; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemSearch; +import kr.co.jinwoosi.clfd.conts.cont.model.ContSearch; + +@Service(value="contService") +public class ContServiceImpl extends BaseServiceImpl implements ContService { + + @Resource (name="contItemService") + private ContItemService contItemService; + + @Resource (name="contItemHistService") + private ContItemHistService contItemHistService; + + @Override + @Resource (name="contMapper") + protected void setMapper (ContMapper mapper) { + super.setMapper (mapper); + } + + @Override + public Cont select(ContSearch contSearch, Long langId) { + Cont cont = super.select(contSearch); + + ContItemSearch contItemSearch = new ContItemSearch(); + contItemSearch.setContId(cont.getContId()); + contItemSearch.setLangId(langId); + cont.setContItem(contItemService.select(contItemSearch)); + + return cont; + } + + @Override + public List> dynamic(ContSearch contSearch) { + return mapper.dynamic(contSearch); + } + + @Override + public void insert(Cont cont, List contItemList, List contItemHistList) { + long contId = Long.parseLong(mapper.selectSerial()); + cont.setContId(contId); + super.insert(cont); + + ContItemSearch contItemSearch; + ContItem contItem2; + for(ContItem contItem : contItemList) { + contItem.setContId(contId); + + contItemSearch = new ContItemSearch(); + contItemSearch.setContId(contId); + contItemSearch.setLangId(contItem.getLangId()); + contItem2 = contItemService.select(contItemSearch); + if(contItem2 == null) { + contItemService.insert(contItem); + }else { + contItem.setContItemId(contItem2.getContItemId()); + contItemService.update(contItem); + } + } + + for(ContItemHist contItemHist : contItemHistList) { + contItemHist.setContId(contId); + contItemHistService.insert(contItemHist); + } + } + + @Override + public void update(Cont cont, List contItemList, List contItemHistList) { + super.update(cont); + + ContItemSearch contItemSearch; + ContItem contItem2; + for(ContItem contItem : contItemList) { + contItem.setContId(cont.getContId()); + + contItemSearch = new ContItemSearch(); + contItemSearch.setContId(cont.getContId()); + contItemSearch.setLangId(contItem.getLangId()); + contItem2 = contItemService.select(contItemSearch); + if(contItem2 == null) { + contItemService.insert(contItem); + }else { + contItem.setContItemId(contItem2.getContItemId()); + contItemService.update(contItem); + } + } + + for(ContItemHist contItemHist : contItemHistList) { + contItemHist.setContId(cont.getContId()); + contItemHistService.insert(contItemHist); + } + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/web/ContController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/web/ContController.java new file mode 100644 index 0000000..efc8575 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/web/ContController.java @@ -0,0 +1,226 @@ +package kr.co.jinwoosi.clfd.conts.cont.web; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.cont.service.ContBkmakService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContService; +import kr.co.jinwoosi.clfd.conts.lang.model.Lang; +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.conts.lang.service.LangService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.conts.cont.model.Cont; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItem; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHist; +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemSearch; +import kr.co.jinwoosi.clfd.conts.cont.model.ContBkmak; +import kr.co.jinwoosi.clfd.conts.cont.model.ContSearch; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class ContController extends BaseController { + + @Resource (name="contService") + private ContService contService; + + @Resource (name="contItemService") + private ContItemService contItemService; + + @Resource (name="contBkmakService") + private ContBkmakService contBkmakService; + + @Resource (name="langService") + private LangService langService; + + @RequestMapping (value="/system/cont/list.mng", method=RequestMethod.GET) + public String list(Model model, ContSearch contSearch) { + List langList = langService.selectList(new LangSearch()); + model.addAttribute("langList", langList); + + List selectList = new ArrayList(); + selectList.add("CONT_ID"); + selectList.add("CONT_NM"); + + /* Mysql + selectList.add("(SELECT CASE WHEN COUNT(CONT_ID) > 0 THEN true ELSE false END FROM CMS_CONT_BKMAK WHERE CMS_CONT_BKMAK.CONT_ID = CMS_CONT.CONT_ID) AS BOOKMARK_YN"); + + for(Lang lang : langList) { + selectList.add("IFNULL((SELECT DATE_FORMAT(B.REG_DT,'%Y-%m-%d %H:%i') FROM CMS_CONT_ITEM B WHERE CMS_CONT.CONT_ID = B.CONT_ID AND B.LANG_ID = '"+lang.getLangId()+"'),'') AS ID_"+lang.getLangId()); + } + */ + + /* Oracle */ + selectList.add("(SELECT CASE WHEN COUNT(CONT_ID) > 0 THEN 1 ELSE 0 END FROM JCMS_CONT_BKMAK WHERE JCMS_CONT_BKMAK.CONT_ID = JCMS_CONT.CONT_ID) AS BOOKMARK_YN"); + + for(Lang lang : langList) { + //selectList.add("NVL((SELECT TO_CHAR(B.REG_DT,'YYYY-MM-DD HH24:MI') FROM CMS_CONT_ITEM B WHERE CMS_CONT.CONT_ID = B.CONT_ID AND B.LANG_ID = '"+lang.getLangId()+"'),'') AS ID_"+lang.getLangId()); + selectList.add("NVL((SELECT TO_CHAR(B.REG_DT,'YYYY-MM-DD HH24:MI') FROM JCMS_CONT_ITEM B WHERE JCMS_CONT.CONT_ID = B.CONT_ID AND B.LANG_ID = '"+lang.getLangId()+"'),'') AS ID_"+lang.getLangId()); + } + + contSearch.setSelectList(selectList); + + model.addAttribute("diffList", contService.dynamic(contSearch)); + return "system/cont/list"; + } + + @RequestMapping (value="/system/cont/view.mng", method=RequestMethod.GET) + public String view(Model model, ContSearch contSearch) { + Cont cont = contService.select(contSearch); + model.addAttribute("cont", cont); + + ContItemSearch contItemSearch = new ContItemSearch(); + contItemSearch.setContId(cont.getContId()); + contItemSearch.setSort("REG_DT"); + contItemSearch.setSortOrd("ASC"); + model.addAttribute("contItemList", contItemService.selectList(contItemSearch)); + model.addAttribute("emptyContItem", new ContItem()); + + LangSearch langSearch = new LangSearch(); + List langList = langService.selectList(langSearch); + + List basicList = new ArrayList(); + List etcList = new ArrayList(); + for(Lang lang : langList) { + if(lang.getBasicYn()) basicList.add(lang); + else etcList.add(lang); + } + model.addAttribute("langList", langList); + model.addAttribute("basicList", basicList); + model.addAttribute("etcList", etcList); + return "system/cont/view"; + } + + @RequestMapping (value="/system/cont/insert.mng", method=RequestMethod.GET) + public String insert(Model model) { + LangSearch langSearch = new LangSearch(); + List langList = langService.selectList(langSearch); + + List basicList = new ArrayList(); + List etcList = new ArrayList(); + for(Lang lang : langList) { + if(lang.getBasicYn()) basicList.add(lang); + else etcList.add(lang); + } + model.addAttribute("langList", langList); + model.addAttribute("basicList", basicList); + model.addAttribute("etcList", etcList); + return "system/cont/insert"; + } + + @RequestMapping (value="/system/cont/insert.mng", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Cont cont) { + Map result = new HashMap(); + try { + String[] langIdList = request.getParameterValues("langIdList[]"); + String[] contItemNmList = request.getParameterValues("contItemNmList[]"); + String[] contItemContList = request.getParameterValues("contItemContList[]"); + + List contItemList = new ArrayList(); + List contItemHistList = new ArrayList(); + ContItem contItem; + ContItemHist contItemHist; + if(langIdList != null) { + for(int i=0; i update(HttpServletRequest request, Cont cont) { + Map result = new HashMap(); + try { + String[] langIdList = request.getParameterValues("langIdList[]"); + String[] contItemNmList = request.getParameterValues("contItemNmList[]"); + String[] contItemContList = request.getParameterValues("contItemContList[]"); + + List contItemList = new ArrayList(); + List contItemHistList = new ArrayList(); + ContItem contItem; + ContItemHist contItemHist; + if(langIdList != null) { + for(int i=0; i updateBookmark(HttpServletRequest request, ContBkmak contBkmak, boolean bookmarkYn) { + Map result = new HashMap(); + try { + contBkmak.setUserId(getUserId()); + if(bookmarkYn) { + contBkmakService.insert(contBkmak); + }else { + contBkmakService.delete(contBkmak); + } + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/cont/web/ContItemController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/web/ContItemController.java new file mode 100644 index 0000000..7527aee --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/cont/web/ContItemController.java @@ -0,0 +1,60 @@ +package kr.co.jinwoosi.clfd.conts.cont.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.cont.model.ContItemHistSearch; +import kr.co.jinwoosi.clfd.conts.cont.service.ContBkmakService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemHistService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class ContItemController extends BaseController { + + @Resource (name="contService") + private ContService contService; + + @Resource (name="contItemService") + private ContItemService contItemService; + + @Resource (name="contItemHistService") + private ContItemHistService contItemHistService; + + @Resource (name="contBkmakService") + private ContBkmakService contBkmakService; + + @RequestMapping (value="/system/contItemHist/list.json") + @ResponseBody + public Map list(HttpServletRequest request, ContItemHistSearch contItemHistSearch) { + Map result = new HashMap(); + try { + + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + contItemHistSearch.setSort(sort); + contItemHistSearch.setSortOrd(sortOder); + contItemHistSearch.setPagingYn(true); + + int totalCount = contItemHistService.count(contItemHistSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", contItemHistService.selectList(contItemHistSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/lang/mapper/LangMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/mapper/LangMapper.java new file mode 100644 index 0000000..ca9bf02 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/mapper/LangMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.lang.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.lang.model.Lang; +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="langMapper") +public interface LangMapper extends BaseMapper { + int checkIdDuplicate(Lang lang); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/lang/model/Lang.java b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/model/Lang.java new file mode 100644 index 0000000..77dfb09 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/model/Lang.java @@ -0,0 +1,46 @@ +package kr.co.jinwoosi.clfd.conts.lang.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; + +public class Lang extends BaseModel{ + + private Long langId; + private String langTp; + private String dispNm; + private Boolean basicYn; + + private CdDtl langTpCd; + + public Boolean getBasicYn() { + return basicYn; + } + public void setBasicYn(Boolean basicYn) { + this.basicYn = basicYn; + } + public CdDtl getLangTpCd() { + return langTpCd; + } + public void setLangTpCd(CdDtl langTpCd) { + this.langTpCd = langTpCd; + } + public Long getLangId() { + return langId; + } + public void setLangId(Long langId) { + this.langId = langId; + } + public String getLangTp() { + return langTp; + } + public void setLangTp(String langTp) { + this.langTp = langTp; + } + public String getDispNm() { + return dispNm; + } + public void setDispNm(String dispNm) { + this.dispNm = dispNm; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/lang/model/LangSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/model/LangSearch.java new file mode 100644 index 0000000..568a69f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/model/LangSearch.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.conts.lang.model; + +public class LangSearch extends Lang { + + private String langIdLike; + private String langNmLike; + private String dispNmLike; + + public String getLangIdLike() { + return langIdLike; + } + public void setLangIdLike(String langIdLike) { + this.langIdLike = langIdLike; + } + public String getLangNmLike() { + return langNmLike; + } + public void setLangNmLike(String langNmLike) { + this.langNmLike = langNmLike; + } + public String getDispNmLike() { + return dispNmLike; + } + public void setDispNmLike(String dispNmLike) { + this.dispNmLike = dispNmLike; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/lang/service/LangService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/service/LangService.java new file mode 100644 index 0000000..a9f1972 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/service/LangService.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.conts.lang.service; + +import kr.co.jinwoosi.clfd.conts.lang.model.Lang; +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface LangService extends BaseService { + + /*List selectJson(); + + void initJson();*/ + int checkIdDuplicate(Lang lang); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/lang/service/impl/LangServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/service/impl/LangServiceImpl.java new file mode 100644 index 0000000..f604db0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/service/impl/LangServiceImpl.java @@ -0,0 +1,70 @@ +package kr.co.jinwoosi.clfd.conts.lang.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.lang.mapper.LangMapper; +import kr.co.jinwoosi.clfd.conts.lang.model.Lang; +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.conts.lang.service.LangService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; + +@Service(value="langService") +public class LangServiceImpl extends BaseServiceImpl implements LangService { + + @Resource (name="cdDtlService") + private CdDtlService cdDtlService; + + @Override + @Resource (name="langMapper") + protected void setMapper (LangMapper mapper) { + super.setMapper (mapper); + } + + + @Override + public Lang select(LangSearch s) { + Lang lang = super.select(s); + + List cdDtlList = cdDtlService.selectJson("lang"); + for(CdDtl cdDtl : cdDtlList) { + if(cdDtl.getCdDtlId().equals(lang.getLangTp())) { + lang.setLangTpCd(cdDtl); + break; + } + } + + return lang; + } + + @Override + public List selectList(LangSearch s) { + List result = new ArrayList(); + List langList = super.selectList(s); + + List cdDtlList = cdDtlService.selectJson("lang"); + + for(Lang lang : langList) { + for(CdDtl cdDtl : cdDtlList) { + if(cdDtl.getCdDtlId().equals(lang.getLangTp())) { + lang.setLangTpCd(cdDtl); + break; + } + } + + result.add(lang); + } + return result; + } + + @Override + public int checkIdDuplicate (Lang s) { + return mapper.checkIdDuplicate (s); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/lang/web/LangController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/web/LangController.java new file mode 100644 index 0000000..729fa25 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/lang/web/LangController.java @@ -0,0 +1,133 @@ +package kr.co.jinwoosi.clfd.conts.lang.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.lang.model.Lang; +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.conts.lang.service.LangService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class LangController extends BaseController { + + @Resource (name="langService") + private LangService langService; + + @RequestMapping (value="/system/lang/list.mng", method=RequestMethod.GET) + public String list() { + return "system/lang/list"; + } + + @RequestMapping (value="/system/lang/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, LangSearch langSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + langSearch.setSort(sort); + langSearch.setSortOrd(sortOder); + langSearch.setPagingYn(true); + + int totalCount = langService.count(langSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", langService.selectList(langSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/lang/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, LangSearch langSearch) { + Map result = new HashMap(); + try { + result.put("data", langService.select(langSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/lang/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Lang lang) { + Map result = new HashMap(); + try { + lang.setRegId(getUserId()); + langService.insert(lang); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/lang/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Lang lang) { + Map result = new HashMap(); + try { + lang.setUpdId(getUserId()); + langService.update(lang); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/lang/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Lang lang) { + Map result = new HashMap(); + try { + lang.setDelId(getUserId()); + langService.delete(lang); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + @RequestMapping (value="/system/lang/duplecheck.json", method=RequestMethod.POST) + @ResponseBody + public Map checkIdDuplicate(HttpServletRequest request, Lang lang) { + Map result = new HashMap(); + try { + //System.out.println("lang:::" +lang.getDispNm()); + result.put("data", langService.checkIdDuplicate(lang)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/media/mapper/MediaMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/media/mapper/MediaMapper.java new file mode 100644 index 0000000..054a5fa --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/media/mapper/MediaMapper.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.conts.media.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.media.model.Media; +import kr.co.jinwoosi.clfd.conts.media.model.MediaSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="mediaMapper") +public interface MediaMapper extends BaseMapper { + + void updateFile(Media media); + void updateHash(Media media); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/media/model/Media.java b/src/main/java/kr/co/jinwoosi/clfd/conts/media/model/Media.java new file mode 100644 index 0000000..c9a1704 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/media/model/Media.java @@ -0,0 +1,100 @@ +package kr.co.jinwoosi.clfd.conts.media.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Media extends BaseModel{ + + private Long mediaId; //미디어 아이디 + private String mediaNm; //미디어명 + private String hash; //해쉬값 + private Long fileId; //파일 아이디 + private String fileNm; //파일명 + private Integer fileSize; //파일사이즈 + private String fileExt; //파일 확장자 + private String mediaTp; //파일 형태 + private String savePath; //저장 경로 + private String saveFileNm; //저장 파일명 + private String useSt; //사용여부 + + private String mediaRegId; //등록자아이디 + private String mediaRegNm; //등록자이름 + + public Integer getFileSize() { + return fileSize; + } + public void setFileSize(Integer fileSize) { + this.fileSize = fileSize; + } + public String getFileNm() { + return fileNm; + } + public void setFileNm(String fileNm) { + this.fileNm = fileNm; + } + public Long getFileId() { + return fileId; + } + public void setFileId(Long fileId) { + this.fileId = fileId; + } + public Long getMediaId() { + return mediaId; + } + public void setMediaId(Long mediaId) { + this.mediaId = mediaId; + } + public String getMediaNm() { + return mediaNm; + } + public void setMediaNm(String mediaNm) { + this.mediaNm = mediaNm; + } + public String getHash() { + return hash; + } + public void setHash(String hash) { + this.hash = hash; + } + public String getFileExt() { + return fileExt; + } + public void setFileExt(String fileExt) { + this.fileExt = fileExt; + } + public String getMediaTp() { + return mediaTp; + } + public void setMediaTp(String mediaTp) { + this.mediaTp = mediaTp; + } + public String getSavePath() { + return savePath; + } + public void setSavePath(String savePath) { + this.savePath = savePath; + } + public String getSaveFileNm() { + return saveFileNm; + } + public void setSaveFileNm(String saveFileNm) { + this.saveFileNm = saveFileNm; + } + public String getUseSt() { + return useSt; + } + public void setUseSt(String useSt) { + this.useSt = useSt; + } + public String getMediaRegId() { + return mediaRegId; + } + public void setMediaRegId(String mediaRegId) { + this.mediaRegId = mediaRegId; + } + public String getMediaRegNm() { + return mediaRegNm; + } + public void setMediaRegNm(String mediaRegNm) { + this.mediaRegNm = mediaRegNm; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/media/model/MediaSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/media/model/MediaSearch.java new file mode 100644 index 0000000..865d009 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/media/model/MediaSearch.java @@ -0,0 +1,20 @@ +package kr.co.jinwoosi.clfd.conts.media.model; + +public class MediaSearch extends Media{ + + private String mediaNmLike; + private String hashUrlLike; + + public String getMediaNmLike() { + return mediaNmLike; + } + public void setMediaNmLike(String mediaNmLike) { + this.mediaNmLike = mediaNmLike; + } + public String getHashUrlLike() { + return hashUrlLike; + } + public void setHashUrlLike(String hashUrlLike) { + this.hashUrlLike = hashUrlLike; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/media/service/MediaService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/media/service/MediaService.java new file mode 100644 index 0000000..3bf6e1c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/media/service/MediaService.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.media.service; + +import kr.co.jinwoosi.clfd.conts.media.model.Media; +import kr.co.jinwoosi.clfd.conts.media.model.MediaSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface MediaService extends BaseService { + + void updateFile(Media media); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/media/service/impl/MediaServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/media/service/impl/MediaServiceImpl.java new file mode 100644 index 0000000..96efd4e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/media/service/impl/MediaServiceImpl.java @@ -0,0 +1,34 @@ +package kr.co.jinwoosi.clfd.conts.media.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.media.mapper.MediaMapper; +import kr.co.jinwoosi.clfd.conts.media.model.Media; +import kr.co.jinwoosi.clfd.conts.media.model.MediaSearch; +import kr.co.jinwoosi.clfd.conts.media.service.MediaService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.springframework.stereotype.Service; + +@Service(value="mediaService") +public class MediaServiceImpl extends BaseServiceImpl implements MediaService { + + @Override + @Resource (name="mediaMapper") + protected void setMapper (MediaMapper mapper) { + super.setMapper (mapper); + } + + @Override + public void insert(Media media) { + super.insert(media); + media.setHash(StrUtil.getDigits(media.getMediaId())); + mapper.updateHash(media); + } + + @Override + public void updateFile(Media media) { + mapper.updateFile(media); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/media/web/MediaController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/media/web/MediaController.java new file mode 100644 index 0000000..e57f144 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/media/web/MediaController.java @@ -0,0 +1,217 @@ +package kr.co.jinwoosi.clfd.conts.media.web; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.UUID; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.media.model.Media; +import kr.co.jinwoosi.clfd.conts.media.model.MediaSearch; +import kr.co.jinwoosi.clfd.conts.media.service.MediaService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.util.FileUtil; +import kr.co.jinwoosi.clfd.framework.util.PathUtil; +import kr.co.jinwoosi.clfd.framework.util.PropertiesUtil; + +import org.apache.commons.io.IOUtils; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +@Controller +public class MediaController extends BaseController { + + @Resource (name="mediaService") + private MediaService mediaService; + + @RequestMapping (value="/system/media/list.mng", method=RequestMethod.GET) + public String list(Model model) { + + return "system/media/list"; + } + + @RequestMapping (value="/system/media/image.mng", method=RequestMethod.GET) + public String image(Model model) { + MediaSearch mediaSearch = new MediaSearch(); + model.addAttribute("totalCnt", mediaService.count(mediaSearch)); + return "page/media/image"; + } + + @RequestMapping (value="/system/media/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, MediaSearch mediaSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + mediaSearch.setSort(sort); + mediaSearch.setSortOrd(sortOder); + mediaSearch.setPagingYn(true); + + int totalCount = mediaService.count(mediaSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", mediaService.selectList(mediaSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 미디어 상세조회 + * @param request + * @param mediaSearch + * @return + */ + @RequestMapping (value="/system/media/view.json", method=RequestMethod.POST) + @ResponseBody + public Map view(HttpServletRequest request, MediaSearch mediaSearch) { + Map result = new HashMap(); + try { + result.put("data", mediaService.select(mediaSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/media/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(MultipartHttpServletRequest request, Media media) { + Map result = new HashMap(); + try { + String filePath = PropertiesUtil.getProperty("AppConf.filePath.media"); + + Iterator itr = request.getFileNames(); + MultipartFile mpf = null; + if(itr.hasNext()){ + mpf = request.getFile(itr.next()); + + String[] extension = mpf.getOriginalFilename().split("[.]"); + String saveFileName = UUID.randomUUID().toString(); + + media.setFileNm(mpf.getOriginalFilename()); + media.setFileExt(extension[extension.length-1]); + media.setMediaTp(mpf.getContentType()); + media.setFileSize((int)(mpf.getSize()/1024)); + media.setSavePath(filePath); + media.setSaveFileNm(saveFileName); + + FileUtil.createFile(mpf, filePath, saveFileName); + } + + media.setRegId(getUserId()); + mediaService.insert(media); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/media/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(MultipartHttpServletRequest request, Media media) { + Map result = new HashMap(); + try { + String filePath = PropertiesUtil.getProperty("AppConf.filePath.media"); + + Iterator itr = request.getFileNames(); + MultipartFile mpf = null; + if(itr.hasNext()){ + mpf = request.getFile(itr.next()); + + String[] extension = mpf.getOriginalFilename().split("[.]"); + String saveFileName = UUID.randomUUID().toString(); + + media.setFileNm(mpf.getOriginalFilename()); + media.setFileExt(extension[extension.length-1]); + media.setMediaTp(mpf.getContentType()); + media.setFileSize((int)(mpf.getSize()/1024)); + media.setSavePath(filePath); + media.setSaveFileNm(saveFileName); + + FileUtil.createFile(mpf, filePath, saveFileName); + + mediaService.updateFile(media); + } + mediaService.update(media); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/public/media/image.json", method=RequestMethod.GET) + public ResponseEntity image(HttpServletRequest request, @RequestParam(value = "hash", required = true) String hash) throws Exception { + final HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.IMAGE_PNG); + + MediaSearch mediaSearch = new MediaSearch(); + mediaSearch.setHash(hash); + Media media = mediaService.select(mediaSearch); + + String imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + if(media != null) { + imgPath = media.getSavePath()+media.getSaveFileNm(); + MediaType mediaType = new MediaType(media.getMediaTp().split("/")[0], media.getMediaTp().split("/")[1]); + headers.setContentType(mediaType); + } + + File file = new File(imgPath); + if(!file.exists()) { //파일이 존재하지 않을 경우 + imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + } + InputStream in = new FileInputStream(imgPath); + + return new ResponseEntity(IOUtils.toByteArray(in), headers, HttpStatus.CREATED); + } + + @RequestMapping (value="/system/media/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Media media) { + Map result = new HashMap(); + try{ + + media.setDelId(getUserId()); + mediaService.delete(media); + result.put("result", "success"); + }catch (Exception e){ + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuConnHistMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuConnHistMapper.java new file mode 100644 index 0000000..8372bf0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuConnHistMapper.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.conts.menu.mapper; + +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHist; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHistSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="cmsMenuConnHistMapper") +public interface MenuConnHistMapper extends BaseMapper { + + List siteStats(MenuConnHistSearch menuConnHistSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuContMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuContMapper.java new file mode 100644 index 0000000..d0ee73b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuContMapper.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.conts.menu.mapper; + +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.cont.model.Cont; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuCont; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuContSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="cmsMenuContMapper") +public interface MenuContMapper extends BaseMapper { + + public List selectCont(MenuContSearch menuContSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuMapper.java new file mode 100644 index 0000000..72c19f3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuMapper.java @@ -0,0 +1,17 @@ +package kr.co.jinwoosi.clfd.conts.menu.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="cmsMenuMapper") +public interface MenuMapper extends BaseMapper { + + int selectMaxMenuOrder(MenuSearch menuSearch); + + void updateOrder(Menu menu); + + void updateUseSt(Menu menu); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuPopupMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuPopupMapper.java new file mode 100644 index 0000000..686d601 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuPopupMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.menu.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopup; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopupSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="cmsMenuPopupMapper") +public interface MenuPopupMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuSatisMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuSatisMapper.java new file mode 100644 index 0000000..b645be5 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/mapper/MenuSatisMapper.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.conts.menu.mapper; + +import java.util.List; +import java.util.Map; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatis; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatisSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import egovframework.rte.psl.dataaccess.mapper.Mapper; + +@Mapper (value="menuSatisMapper") +public interface MenuSatisMapper extends BaseMapper{ + List> selectSatisfaction(MenuSatisSearch satisfactionSearch); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/Menu.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/Menu.java new file mode 100644 index 0000000..430a8c7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/Menu.java @@ -0,0 +1,173 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +import java.util.List; + +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRole; + +public class Menu extends BaseModel{ + + private Long menuId; + private Long siteId; + private String menuNm; + private Long upperMenuId; + private String menuUrl; + private String menuUrl2; + private Integer menuOrd; + private String menuDesc; + private String menuTp; + private String linkUrl; + private String linkType; + private String contDispType; + private Long bodId; + private String useSt; + + private Site site; + private Menu upperMenu; + private List childList; + private CdDtl menuTpCd; + + private Long fileId; + List menuRoleList; + + public CdDtl getMenuTpCd() { + return menuTpCd; + } + public void setMenuTpCd(CdDtl menuTpCd) { + this.menuTpCd = menuTpCd; + } + public String getUseSt() { + return useSt; + } + public void setUseSt(String useSt) { + this.useSt = useSt; + } + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + public Long getSiteId() { + return siteId; + } + public void setSiteId(Long siteId) { + this.siteId = siteId; + } + public String getMenuNm() { + return menuNm; + } + public void setMenuNm(String menuNm) { + this.menuNm = menuNm; + } + public Long getUpperMenuId() { + return upperMenuId; + } + public void setUpperMenuId(Long upperMenuId) { + this.upperMenuId = upperMenuId; + } + public String getMenuUrl() { + return menuUrl; + } + public void setMenuUrl(String menuUrl) { + this.menuUrl = menuUrl; + } + + public String getMenuUrl2() { + return menuUrl2; + } + public void setMenuUrl2(String menuUrl2) { + this.menuUrl2 = menuUrl2; + } + public String getMenuDesc() { + return menuDesc; + } + public void setMenuDesc(String menuDesc) { + this.menuDesc = menuDesc; + } + public Integer getMenuOrd() { + return menuOrd; + } + public void setMenuOrd(Integer menuOrd) { + this.menuOrd = menuOrd; + } + public Site getSite() { + return site; + } + public void setSite(Site site) { + this.site = site; + } + public Menu getUpperMenu() { + return upperMenu; + } + public void setUpperMenu(Menu upperMenu) { + this.upperMenu = upperMenu; + } + public List getChildList() { + return childList; + } + public void setChildList(List childList) { + this.childList = childList; + } + public String getMenuTp() { + return menuTp; + } + public void setMenuTp(String menuTp) { + this.menuTp = menuTp; + } + public String getLinkUrl() { + return linkUrl; + } + public void setLinkUrl(String linkUrl) { + this.linkUrl = linkUrl; + } + public String getLinkType() { + return linkType; + } + public void setLinkType(String linkType) { + this.linkType = linkType; + } + public String getContDispType() { + return contDispType; + } + public void setContDispType(String contDispType) { + this.contDispType = contDispType; + } + public Long getBodId() { + return bodId; + } + public void setBodId(Long bodId) { + this.bodId = bodId; + } + public Long getFileId () { + return fileId; + } + public void setFileId ( + Long fileId) { + this.fileId = fileId; + } + public List getMenuRoleList() { + return menuRoleList; + } + public void setMenuRoleList(List menuRoleList) { + this.menuRoleList = menuRoleList; + } + public Menu getRootMenu(){ + try { + Menu menu = upperMenu; + + while(true){ + if(menu.upperMenu != null){ + menu = menu.upperMenu; + } else { + return menu; + } + } + } catch (Exception e) { + return null; + } + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuConnHist.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuConnHist.java new file mode 100644 index 0000000..eefdc0a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuConnHist.java @@ -0,0 +1,88 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class MenuConnHist extends BaseModel{ + + private Long menuConnHistId; + private Long menuId; + private String menuConnIp; + private int menuCount; + private float percent; + private Date regDt; + private String startRegDt; + private String endRegDt; + private Long siteId; + + + public String getrRegDtString() { + if(regDt == null) { + return null; + }else { + DateFormat sdFormat = new SimpleDateFormat("yyyy-MM-dd"); + return sdFormat.format(regDt); + } + } + public Long getMenuConnHistId() { + return menuConnHistId; + } + public void setMenuConnHistId(Long menuConnHistId) { + this.menuConnHistId = menuConnHistId; + } + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + public String getMenuConnIp() { + return menuConnIp; + } + public void setMenuConnIp(String menuConnIp) { + this.menuConnIp = menuConnIp; + } + public int getMenuCount() { + return menuCount; + } + public void setMenuCount(int menuCount) { + this.menuCount = menuCount; + } + public float getPercent() { + return percent; + } + public void setPercent(float percent) { + this.percent = percent; + } + public Date getRegDt() { + return regDt; + } + public void setRegDt(Date regDt) { + this.regDt = regDt; + } + public Long getSiteId() { + return siteId; + } + public void setSiteId(Long siteId) { + this.siteId = siteId; + } + public String getStartRegDt() { + return startRegDt; + } + public void setStartRegDt(String startRegDt) { + this.startRegDt = startRegDt; + } + public String getEndRegDt() { + return endRegDt; + } + public void setEndRegDt(String endRegDt) { + this.endRegDt = endRegDt; + } + + + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuConnHistSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuConnHistSearch.java new file mode 100644 index 0000000..b82a418 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuConnHistSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +public class MenuConnHistSearch extends MenuConnHist{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuCont.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuCont.java new file mode 100644 index 0000000..fb10d31 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuCont.java @@ -0,0 +1,31 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +import kr.co.jinwoosi.clfd.conts.cont.model.Cont; + +public class MenuCont { + + private Long menuId; + private Long contId; + + private Cont cont; + + public Cont getCont() { + return cont; + } + public void setCont(Cont cont) { + this.cont = cont; + } + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + public Long getContId() { + return contId; + } + public void setContId(Long contId) { + this.contId = contId; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuContSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuContSearch.java new file mode 100644 index 0000000..93cbf1c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuContSearch.java @@ -0,0 +1,7 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +public class MenuContSearch extends MenuCont{ + + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuPopup.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuPopup.java new file mode 100644 index 0000000..d47412a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuPopup.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class MenuPopup extends BaseModel{ + + private Long menuId; + private Long popupId; + + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + public Long getPopupId() { + return popupId; + } + public void setPopupId(Long popupId) { + this.popupId = popupId; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuPopupSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuPopupSearch.java new file mode 100644 index 0000000..ad1566e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuPopupSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +public class MenuPopupSearch extends MenuSearch{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSatis.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSatis.java new file mode 100644 index 0000000..6583ed7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSatis.java @@ -0,0 +1,64 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +public class MenuSatis extends BaseModel{ + + private Long siteId; //사이트 아이디 + private Long menuId; //메뉴 아이디 + private Integer score; //점수 + private Integer cnt; //건수 + private String regNm; //등록 이름 + private String regIp; //등록 아이피 + private String opinion; //기타 의견 + + private String satisRegId; //등록자 아이디 + + public Long getSiteId() { + return siteId; + } + public void setSiteId(Long siteId) { + this.siteId = siteId; + } + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + public Integer getScore() { + return score; + } + public void setScore(Integer score) { + this.score = score; + } + public Integer getCnt() { + return cnt; + } + public void setCnt(Integer cnt) { + this.cnt = cnt; + } + public String getRegNm() { + return regNm; + } + public void setRegNm(String regNm) { + this.regNm = regNm; + } + public String getRegIp() { + return regIp; + } + public void setRegIp(String regIp) { + this.regIp = regIp; + } + public String getOpinion() { + return opinion; + } + public void setOpinion(String opinion) { + this.opinion = opinion; + } + public String getSatisRegId() { + return satisRegId; + } + public void setSatisRegId(String satisRegId) { + this.satisRegId = satisRegId; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSatisSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSatisSearch.java new file mode 100644 index 0000000..a265b56 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSatisSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +public class MenuSatisSearch extends MenuSatis{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSearch.java new file mode 100644 index 0000000..a6ba967 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/model/MenuSearch.java @@ -0,0 +1,17 @@ +package kr.co.jinwoosi.clfd.conts.menu.model; + +import java.util.List; + +public class MenuSearch extends Menu{ + + private List pgmIdIn; + + public List getPgmIdIn() { + return pgmIdIn; + } + + public void setPgmIdIn(List pgmIdIn) { + this.pgmIdIn = pgmIdIn; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuConnHistService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuConnHistService.java new file mode 100644 index 0000000..ad79182 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuConnHistService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.conts.menu.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHist; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHistSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface MenuConnHistService extends BaseService { + + List siteStats(MenuConnHistSearch menuConnHistSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuContService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuContService.java new file mode 100644 index 0000000..5c6c72b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuContService.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.conts.menu.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuCont; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuContSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface MenuContService extends BaseService { + + List selectList(MenuContSearch menuContSearch, Long langId); + + public void insert(Long menuId, Long[] contIdList); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuPopupService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuPopupService.java new file mode 100644 index 0000000..b9da341 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuPopupService.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.menu.service; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopupSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopup; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface MenuPopupService extends BaseService { + + public void insert(long menuId, long[] popupIdList); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuSatisService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuSatisService.java new file mode 100644 index 0000000..bcc5299 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuSatisService.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.conts.menu.service; + +import java.util.List; +import java.util.Map; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatis; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatisSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface MenuSatisService extends BaseService{ + + List> selectSatisfaction(MenuSatisSearch satisfactionSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuService.java new file mode 100644 index 0000000..ce102fa --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/MenuService.java @@ -0,0 +1,29 @@ +package kr.co.jinwoosi.clfd.conts.menu.service; + +import java.util.List; +import java.util.Map; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface MenuService extends BaseService { + + int selectMaxMenuOrder(MenuSearch menuSearch); + + Menu selectCurrentMenu(Long siteId, String servletPath); + + Menu selectParentMenu(Long siteId, Menu menu); + + void updateOrder(Menu menu); + + void updateUseSt(Menu menu); + + Map> selectJson(); + + List selectJson(Long siteId); + + void initJson(); + + void initJson(Long siteId); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuConnHistServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuConnHistServiceImpl.java new file mode 100644 index 0000000..f777f2b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuConnHistServiceImpl.java @@ -0,0 +1,29 @@ +package kr.co.jinwoosi.clfd.conts.menu.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.menu.mapper.MenuConnHistMapper; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHist; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHistSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuConnHistService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="cmsMenuConnHistService") +public class MenuConnHistServiceImpl extends BaseServiceImpl implements MenuConnHistService { + + @Override + @Resource (name="cmsMenuConnHistMapper") + protected void setMapper (MenuConnHistMapper mapper) { + super.setMapper (mapper); + } + + @Override + public List siteStats( + MenuConnHistSearch menuConnHistSearch) { + return mapper.siteStats (menuConnHistSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuContServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuContServiceImpl.java new file mode 100644 index 0000000..92c7614 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuContServiceImpl.java @@ -0,0 +1,74 @@ +package kr.co.jinwoosi.clfd.conts.menu.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.cont.model.ContSearch; +import kr.co.jinwoosi.clfd.conts.cont.service.ContService; +import kr.co.jinwoosi.clfd.conts.menu.mapper.MenuContMapper; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuCont; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuContSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuContService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="cmsMenuContService") +public class MenuContServiceImpl extends BaseServiceImpl implements MenuContService { + + @Resource (name="contService") + private ContService contService; + + @Override + @Resource (name="cmsMenuContMapper") + protected void setMapper (MenuContMapper mapper) { + super.setMapper (mapper); + } + + @Override + public void insert(Long menuId, Long[] contIdList) { + MenuCont menuCont = new MenuCont(); + menuCont.setMenuId(menuId); + delete(menuCont); + + if(contIdList != null) { + for(Long contId : contIdList) { + menuCont.setContId(contId); + insert(menuCont); + } + } + } + + @Override + public List selectList(MenuContSearch menuContSearch) { + List resultList = new ArrayList(); + List menuContList = super.selectList(menuContSearch); + ContSearch contSearch; + for(MenuCont menuCont : menuContList) { + contSearch = new ContSearch(); + contSearch.setContId(menuCont.getContId()); + menuCont.setCont(contService.select(contSearch)); + + resultList.add(menuCont); + } + return resultList; + } + + @Override + public List selectList(MenuContSearch menuContSearch, Long langId) { + List resultList = new ArrayList(); + List menuContList = super.selectList(menuContSearch); + ContSearch contSearch; + for(MenuCont menuCont : menuContList) { + contSearch = new ContSearch(); + contSearch.setContId(menuCont.getContId()); + menuCont.setCont(contService.select(contSearch, langId)); + + resultList.add(menuCont); + } + return resultList; + } + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuPopupServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuPopupServiceImpl.java new file mode 100644 index 0000000..3537693 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuPopupServiceImpl.java @@ -0,0 +1,34 @@ +package kr.co.jinwoosi.clfd.conts.menu.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.menu.mapper.MenuPopupMapper; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopup; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopupSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuPopupService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="cmsMenuPopupService") +public class MenuPopupServiceImpl extends BaseServiceImpl implements MenuPopupService { + + @Override + @Resource (name="cmsMenuPopupMapper") + protected void setMapper (MenuPopupMapper mapper) { + super.setMapper (mapper); + } + + @Override + public void insert(long menuId, long[] popupIdList) { + MenuPopup menuPopup = new MenuPopup(); + menuPopup.setMenuId(menuId); + super.delete(menuPopup); + if(popupIdList != null) { + for(long popupId : popupIdList) { + menuPopup.setPopupId(popupId); + super.insert(menuPopup); + } + } + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuSatisServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuSatisServiceImpl.java new file mode 100644 index 0000000..926ec7e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuSatisServiceImpl.java @@ -0,0 +1,30 @@ +package kr.co.jinwoosi.clfd.conts.menu.service.impl; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.menu.mapper.MenuSatisMapper; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatis; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatisSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuSatisService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; + +import org.springframework.stereotype.Service; + +@Service (value="menuSatisService") +public class MenuSatisServiceImpl extends BaseServiceImpl implements MenuSatisService { + + @Override + @Resource(name="menuSatisMapper") + protected void setMapper(MenuSatisMapper mapper){ + super.setMapper(mapper); + } + + @Override + public List> selectSatisfaction(MenuSatisSearch satisfactionSearch) { + return mapper.selectSatisfaction(satisfactionSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..8bdfdd8 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/service/impl/MenuServiceImpl.java @@ -0,0 +1,211 @@ +package kr.co.jinwoosi.clfd.conts.menu.service.impl; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.menu.mapper.MenuMapper; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopupSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuPopupService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.util.ApplicationHelper; +import kr.co.jinwoosi.clfd.framework.util.CdUtil; +import org.springframework.stereotype.Service; + +@Service(value="cmsMenuService") +public class MenuServiceImpl extends BaseServiceImpl implements MenuService { + + @Resource (name="siteService") + private SiteService siteService; + + @Resource (name="cmsMenuPopupService") + private MenuPopupService menuPopupService; + + @Override + @Resource (name="cmsMenuMapper") + protected void setMapper (MenuMapper mapper) { + super.setMapper (mapper); + } + + @Override + public Menu select(MenuSearch menuSearch) { + Menu menu = super.select(menuSearch); + if(menu.getUpperMenuId() != null) { + menuSearch = new MenuSearch(); + menuSearch.setMenuId(menu.getUpperMenuId()); + menu.setUpperMenu(super.select(menuSearch)); + } + + menu.setMenuTpCd(CdUtil.cdDtl("program", menu.getMenuTp().trim())); + + MenuPopupSearch menuPopupSearch = new MenuPopupSearch(); + menuPopupSearch.setMenuId(menu.getMenuId()); + //menu.setPopupCnt(menuPopupService.count(menuPopupSearch)); + return menu; + } + + @Override + public List selectList(MenuSearch menuSearch) { + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + List menuList = super.selectList(menuSearch); + + return setChildList(menuList); + } + + public List setChildList(List menuList) { + List resultList = new ArrayList(); + MenuSearch menuSearch; + MenuPopupSearch menuPopupSearch; + + for(Menu menu : menuList) { + menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getMenuId()); + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + menu.setChildList(setChildList(mapper.selectList(menuSearch))); + + menuPopupSearch = new MenuPopupSearch(); + menuPopupSearch.setMenuId(menu.getMenuId()); + //menu.setPopupCnt(menuPopupService.count(menuPopupSearch)); + + if(menu.getUpperMenuId() != null) { + menuSearch = new MenuSearch(); + menuSearch.setMenuId(menu.getUpperMenuId()); + menu.setUpperMenu(select(menuSearch)); + } + + menu.setMenuTpCd(CdUtil.cdDtl("program", menu.getMenuTp().trim())); + + resultList.add(menu); + } + return resultList; + } + + /** + * 해당 메뉴의 최상의 메뉴를 조회한다. + */ + @Override + public Menu selectParentMenu(Long siteId, Menu menu) { + if(menu.getUpperMenuId() == null) { //1depth 메뉴 + return menu; + }else { + List menuList = selectJson(siteId); + for(Menu m : menuList) { + for(Menu m2 : m.getChildList()) { + if(m2.getMenuId().compareTo(menu.getMenuId()) == 0) { + return m; + } + for(Menu m3 : m2.getChildList()) { + if(m3.getMenuId().compareTo(menu.getMenuId()) == 0) { + return m; + } + } + } + } + } + return null; + } + + @Override + public void updateOrder(Menu menu) { + mapper.updateOrder(menu); + } + + @Override + public void updateUseSt(Menu menu) { + mapper.updateUseSt(menu); + } + + @Override + public Map> selectJson() { + if(ApplicationHelper.getCmsMenuMap() == null) { + initJson(); + } + + return ApplicationHelper.getCmsMenuMap(); + } + + @Override + public List selectJson(Long siteId) { + Map> menuMap = selectJson(); + return menuMap.get(siteId); + } + + @Override + public void initJson() { + Map> menuMap = new HashMap>(); + + List siteList = siteService.selectJson(); + for(Site site : siteList) { + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setSiteId(site.getSiteId()); + menuMap.put(site.getSiteId(), selectList(menuSearch)); + } + ApplicationHelper.setCmsMenuMap(menuMap); + } + + @Override + public void initJson(Long siteId) { + Map> menuMap = selectJson(); + + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setSiteId(siteId); + menuMap.put(siteId, selectList(menuSearch)); + + ApplicationHelper.setCmsMenuMap(menuMap); + } + + + @Override + public Menu selectCurrentMenu(Long siteId, String servletPath) { + List menuList = selectJson(siteId); + String[] servletPathArray = servletPath.split("/"); + + Menu result = null; + + Menu topParentMenu = null; + for(Menu menu : menuList) { + if(menu.getMenuUrl().equals(servletPathArray[0])) { + result = menu; + topParentMenu = menu; + break; + } + } + + Menu parentMenu = null; + if(servletPathArray.length > 1) { + for(Menu menu : topParentMenu.getChildList()) { + if(menu.getMenuUrl().equals(servletPathArray[1])) { + result = menu; + parentMenu = menu; + break; + } + } + } + + if(servletPathArray.length > 2) { + for(Menu menu : parentMenu.getChildList()) { + if(menu.getMenuUrl().equals(servletPathArray[2])) { + return menu; + } + } + } + + return result; + } + + @Override + public int selectMaxMenuOrder(MenuSearch menuSearch) { + return mapper.selectMaxMenuOrder(menuSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/tag/MenuInfoTag.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/tag/MenuInfoTag.java new file mode 100644 index 0000000..c3a1ae5 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/tag/MenuInfoTag.java @@ -0,0 +1,87 @@ +package kr.co.jinwoosi.clfd.conts.menu.tag; + +import java.util.List; + +import javax.servlet.jsp.JspWriter; + +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.framework.base.tag.BaseTag; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; + +/** + * CMS 페이지의 메뉴정보를 생성한다. + */ + + +@SuppressWarnings("serial") +public class MenuInfoTag extends BaseTag{ + + private MenuService menuService; + private StringBuffer sb; + + @Override + protected int doProcessTag() throws Exception { + JspWriter out = pageContext.getOut (); + sb = new StringBuffer(); + + if(getSiteId() != null && !StrUtil.isEmpty(getMenuId())) { + menuService = getRequestContext().getWebApplicationContext().getBean(MenuService.class); + + List menuList = menuService.selectJson(Long.parseLong(getSiteId())); + Menu currentMenu = null; + for(Menu menu : menuList) { + currentMenu = getMenu(menu); + if(currentMenu != null) break; + } + if(currentMenu != null) { + sb.append(""); + sb.append("
"); + sb.append(""); + } + if(getSnsYn() != null && getSnsYn()) { + sb.append("
"); + sb.append(""); + sb.append(""); + sb.append("
"); + } + } + + out.print(sb.toString()); + return SKIP_BODY; + } + + public Menu getMenu(Menu menu) { + Menu result = null; + if(String.valueOf(menu.getMenuId()).equals(getMenuId())) { + return menu; + } + + for(Menu childMenu : menu.getChildList()) { + result = getMenu(childMenu); + if(result != null) return result; + } + return result; + } + + public String makeUpperCourse(Menu menu) { + StringBuffer result = new StringBuffer();; + if(menu.getUpperMenuId() != null) result.append(makeUpperCourse(menu.getUpperMenu())); + result.append(""); + result.append(menu.getMenuNm()); + result.append(""); + return result.toString(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/tag/MenuTag.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/tag/MenuTag.java new file mode 100644 index 0000000..43da26d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/tag/MenuTag.java @@ -0,0 +1,22 @@ +package kr.co.jinwoosi.clfd.conts.menu.tag; + +import javax.servlet.jsp.JspWriter; + +import kr.co.jinwoosi.clfd.framework.base.tag.BaseTag; + +@SuppressWarnings("serial") +public class MenuTag extends BaseTag{ + + private StringBuffer sb; + + @Override + protected int doProcessTag() throws Exception { + JspWriter out = pageContext.getOut (); + sb = new StringBuffer(); + + + + out.print(sb.toString()); + return SKIP_BODY; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuController.java new file mode 100644 index 0000000..dfd6bf2 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuController.java @@ -0,0 +1,359 @@ +package kr.co.jinwoosi.clfd.conts.menu.web; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopupSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuContService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuPopupService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.popup.model.Popup; +import kr.co.jinwoosi.clfd.conts.popup.model.PopupSearch; +import kr.co.jinwoosi.clfd.conts.popup.service.PopupService; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.conts.cont.model.ContSearch; +import kr.co.jinwoosi.clfd.conts.cont.service.ContService; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuContSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuPopup; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class CmsMenuController extends BaseController { + + @Resource (name="contService") + private ContService contService; + + @Resource (name="cmsMenuService") + private MenuService menuService; + + @Resource (name="cmsMenuContService") + private MenuContService menuContService; + + @Resource (name="siteService") + private SiteService siteService; + + @Resource (name="cmsMenuPopupService") + private MenuPopupService menuPopupService; + + @Resource (name="popupService") + private PopupService popupService; + + @Resource (name="bodService") + private BodService bodService; + + @RequestMapping (value="/system/cmsMenu/list.mng", method=RequestMethod.GET) + public String list(Model model, String siteId) { + model.addAttribute("siteId", siteId); + model.addAttribute("bodList", bodService.selectJson()); + model.addAttribute("contList", contService.selectList(new ContSearch())); + model.addAttribute("popupList", popupService.selectList(new PopupSearch())); + model.addAttribute("siteList", siteService.selectJson()); + return "system/cmsMenu/list"; + } + + @RequestMapping (value="/system/cmsMenu/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, Long siteId) { + Map result = new HashMap(); + try { + + result.put("data", menuService.selectJson(siteId)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, MenuSearch menuSearch) { + Map result = new HashMap(); + try { + result.put("data", menuService.select(menuSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Menu menu) { + Map result = new HashMap(); + try { + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setSiteId(menu.getSiteId()); + menuSearch.setMenuUrl(menu.getMenuUrl()); + int count = menuService.count(menuSearch); + if(count > 0) { //해당 사이트에 같은 URL이 존재할 경우 + result.put("result", "fail"); + result.put("message", "해당 사이트에 이미 등록되어있는 URL입니다."); + }else { + //메뉴순서를 마지막 순서로 지정 + menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getUpperMenuId()); + menu.setMenuOrd(menuService.selectMaxMenuOrder(menuSearch)); + + menu.setRegId(getUserId()); + menuService.insert(menu); + + menuService.initJson(menu.getSiteId()); + result.put("result", "success"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Menu menu) { + Map result = new HashMap(); + try { + menu.setUpdId(getUserId()); + menuService.update(menu); + + menuService.initJson(menu.getSiteId()); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/updateUseSt.json") + @ResponseBody + public Map updateUseSt(HttpServletRequest request, @RequestParam(required = true) Long menuId) { + Map result = new HashMap(); + try { + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setMenuId(menuId); + Menu menu = menuService.select(menuSearch); + if("Y".equals(menu.getUseSt())) { + menu.setUseSt("N"); + }else{ + menu.setUseSt("Y"); + } + menuService.updateUseSt(menu); + + menuService.initJson(menu.getSiteId()); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Menu menu, Long siteId) { + Map result = new HashMap(); + try { + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getMenuId()); + int count = menuService.count(menuSearch); + if(count > 0) { + result.put("message", "하위 메뉴가 존재하지 않을 경우에만 삭제 가능합니다."); + result.put("result", "alreay"); + }else { + menu.setDelId(getUserId()); + menuService.delete(menu); + + if(siteId != null) { + menuService.initJson(siteId); + } + result.put("result", "success"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/changeOrder.mng", method=RequestMethod.GET) + public String changeOrder(Model model, String siteId) { + model.addAttribute("siteId", siteId); + return "system/cmsMenu/changeOrder"; + } + + @RequestMapping (value={"/system/cmsMenu/changeOrder.json"}) + @ResponseBody + public Map changeOrder(HttpServletRequest request, Long siteId) { + Map result = new HashMap(); + try { + Map orderMap = request.getParameterMap(); + + Menu menu; + String parent = null; + Map depthMap = new HashMap(); + for(String key : orderMap.keySet()) { + if(!"siteId".equals(key)) { + String value = orderMap.get(key)[0]; + parent = value; + + int cnt = 0; + for(int i=0; i(); + depthMap.put(cnt/2, value); + break; + default : + for(int i=0; i popupList(MenuPopupSearch menuPopupSearch) { + Map result = new HashMap(); + try { + List menuPopupList = menuPopupService.selectList(menuPopupSearch); + + List popupList = new ArrayList(); + PopupSearch popupSearch = new PopupSearch(); + if(menuPopupList.size() > 0) { + List popupIdList = new ArrayList(); + for(MenuPopup menuPopup : menuPopupList) { + popupIdList.add(menuPopup.getPopupId()); + } + popupSearch.setPopupIdIn(popupIdList); + popupList = popupService.selectList(popupSearch); + } + result.put("data", popupList); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/cmsMenu/popupUpdate.json", method=RequestMethod.POST) + @ResponseBody + public Map popupInsert(HttpServletRequest request, Long siteId) { + Map result = new HashMap(); + try { + long menuId = Long.parseLong(request.getParameter("menuId")); + String[] popupIdList = request.getParameterValues("popupId"); + long[] popupIdArray; + if(popupIdList == null) { + popupIdArray = new long[0]; + }else { + popupIdArray = new long[popupIdList.length]; + for(int i=0; i contList(MenuContSearch menuContSearch) { + Map result = new HashMap(); + try { + result.put("data", menuContService.selectList(menuContSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value={"/system/cmsMenu/contUpdate.json"}, method=RequestMethod.POST) + @ResponseBody + public Map contUpdate(Long menuId, Long[] contIdList) { + Map result = new HashMap(); + try { + menuContService.insert(menuId, contIdList); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuSatisController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuSatisController.java new file mode 100644 index 0000000..5592121 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuSatisController.java @@ -0,0 +1,198 @@ +package kr.co.jinwoosi.clfd.conts.menu.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatis; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSatisSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuSatisService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.model.SiteSearch; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.util.HttpUtil; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class CmsMenuSatisController extends BaseController { + + @Resource (name="cmsMenuService") + private MenuService menuService; + + @Resource (name="siteService") + private SiteService siteService; + + @Resource (name="menuSatisService") + private MenuSatisService menuSatisService; + + /** + * 메뉴별 만족도 화면 이동 + * @param model + * @param menuConnHistSearch + * @return + */ + @RequestMapping (value="/system/satis/list.mng") + public String list(Model model){ + + MenuSearch menuSearch = new MenuSearch(); + + model.addAttribute("statsList",menuService.selectList(menuSearch)); + model.addAttribute("siteList", siteService.selectJson()); + //model.addAttribute("statList", menuService.selectJson()); + return "system/satis/menuSatisList"; + } + + /** + * 로그인 여부 확인 + * @return + */ + @RequestMapping (value="/public/menuSatis/idCheck.json", method=RequestMethod.POST) + @ResponseBody + public Map idCheck(MenuSatisSearch menuSatisSearch){ + Map result = new HashMap(); + + Long userId = getUserId(); + try { + if(userId != null && userId > 0){ + //satisfactionSearch.setSiteId(getSiteId()); + menuSatisSearch.setRegId(getUserId()); + if(menuSatisService.count(menuSatisSearch)>0){ + result.put("exist", "exist"); + }else{ + result.put("exist", "nonExist"); + } + result.put("result", "success"); + }else{ + result.put("result","fail"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + } + return result; + } + + /** + * 만족도 update + * @param request + * @param menuSatis + * @return + */ + @RequestMapping (value="/public/menuSatis/update.json", method=RequestMethod.POST) + @ResponseBody + public Map updateSatis(HttpServletRequest request, MenuSatis menuSatis){ + Map result = new HashMap(); + + try { + menuSatis.setRegId(getUserId()); + menuSatis.setRegNm(getUserName()); + menuSatis.setRegIp(HttpUtil.getClientIp(request)); + menuSatisService.update(menuSatis); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 만족도 insert + * @param request + * @param menuSatis + * @return + */ + @RequestMapping (value="/public/menuSatis/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insertSatis(HttpServletRequest request, MenuSatis menuSatis){ + Map result = new HashMap(); + + try { + menuSatis.setRegId(getUserId()); + menuSatis.setRegNm(getUserName()); + menuSatis.setRegIp(HttpUtil.getClientIp(request)); + menuSatisService.insert(menuSatis); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 사이트별 조회 + * @param request + * @param siteSearch + * @return + */ + @RequestMapping (value="/system/satis/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, SiteSearch siteSearch) { + Map result = new HashMap(); + try { + result.put("data", siteService.select(siteSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 만족도 집계 조회 + * @param menuSatisSearch + * @return + */ + @RequestMapping (value="/system/satis/list.json") + @ResponseBody + public Map list(MenuSatisSearch menuSatisSearch, Long siteId){ + Map result = new HashMap(); + try { + result.put("data", menuService.selectJson(siteId)); + result.put("satis", menuSatisService.selectSatisfaction(menuSatisSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 만족도 의견 조회 + * @param menuSatisSearch + * @return + */ + @RequestMapping(value="/system/satis/opinion.json") + @ResponseBody + public Map opnionList(MenuSatisSearch menuSatisSearch){ + Map result = new HashMap(); + try{ + //satisfactionSearch.setSiteId(getSiteId()); + result.put("data", menuSatisService.selectList(menuSatisSearch)); + result.put("result", "success"); + }catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuStatsController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuStatsController.java new file mode 100644 index 0000000..1a4bcee --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/menu/web/CmsMenuStatsController.java @@ -0,0 +1,105 @@ +package kr.co.jinwoosi.clfd.conts.menu.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHistSearch; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuConnHistService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.model.SiteSearch; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class CmsMenuStatsController extends BaseController { + + @Resource (name="cmsMenuConnHistService") + private MenuConnHistService cmsMenuConnHistService; + + @Resource (name="cmsMenuService") + private MenuService menuService; + + @Resource (name="siteService") + private SiteService siteService; + + @RequestMapping (value="/system/stats/list.mng", method=RequestMethod.GET) + public String list(Model model){ + + MenuSearch menuSearch = new MenuSearch(); + + //model.addAttribute("statsList",menuService.selectJson()); + model.addAttribute("siteList", siteService.selectJson()); + model.addAttribute("statsList",menuService.selectList(menuSearch)); + return "system/stats/menuStatsList"; + } + + @RequestMapping (value="/system/menuStats/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, SiteSearch siteSearch) { + Map result = new HashMap(); + try { + result.put("data", siteService.select(siteSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/menuStats/list.json",method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, MenuConnHistSearch menuConnHistSearch, Long siteId){ + Map result = new HashMap(); + try { + result.put("data", menuService.selectJson(siteId)); + result.put("stats", cmsMenuConnHistService.selectList(menuConnHistSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/siteStats/list.mng", method=RequestMethod.GET) + public String siteList(Model model){ + + MenuSearch menuSearch = new MenuSearch(); + SiteSearch siteSearch = new SiteSearch(); + + //model.addAttribute("statsList",menuService.selectJson()); + model.addAttribute("siteList", siteService.selectJson()); + + model.addAttribute("statsList",menuService.selectList(menuSearch)); + + return "system/stats/siteStatsList"; + } + + @RequestMapping (value="/system/siteStats/list.json", method=RequestMethod.POST) + @ResponseBody + public Map siteList(HttpServletRequest request, MenuConnHistSearch menuConnHistSearch){ + Map result = new HashMap(); + try { + result.put("data", cmsMenuConnHistService.siteStats(menuConnHistSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/plan/mapper/PlanMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/mapper/PlanMapper.java new file mode 100644 index 0000000..3229880 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/mapper/PlanMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.plan.mapper; + +import kr.co.jinwoosi.clfd.conts.plan.model.Plan; +import kr.co.jinwoosi.clfd.conts.plan.model.PlanSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import egovframework.rte.psl.dataaccess.mapper.Mapper; + +@Mapper (value="planMapper") +public interface PlanMapper extends BaseMapper{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/plan/model/Plan.java b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/model/Plan.java new file mode 100644 index 0000000..fb3aa16 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/model/Plan.java @@ -0,0 +1,115 @@ +package kr.co.jinwoosi.clfd.conts.plan.model; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Plan extends BaseModel { + + private Long planId; + private Long siteId; + private String planCtg; + private String planTitle; + private String planCont; + private String planAddr; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDt; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDt; + private String fileId; + private String imgMap; + private int imgWidth; + private int imgHeight; + private String dispYn; + private String planCtgLabel; + + public Long getPlanId() { + return planId; + } + public void setPlanId(Long planId) { + this.planId = planId; + } + public Long getSiteId() { + return siteId; + } + public void setSiteId(Long siteId) { + this.siteId = siteId; + } + public String getPlanCtg() { + return planCtg; + } + public void setPlanCtg(String planCtg) { + this.planCtg = planCtg; + } + public String getPlanTitle() { + return planTitle; + } + public void setPlanTitle(String planTitle) { + this.planTitle = planTitle; + } + public String getPlanCont() { + return planCont; + } + public void setPlanCont(String planCont) { + this.planCont = planCont; + } + public String getPlanAddr() { + return planAddr; + } + public void setPlanAddr(String planAddr) { + this.planAddr = planAddr; + } + public Date getStartDt() { + return startDt; + } + public void setStartDt(Date startDt) { + this.startDt = startDt; + } + public Date getEndDt() { + return endDt; + } + public void setEndDt(Date endDt) { + this.endDt = endDt; + } + public String getFileId() { + return fileId; + } + public void setFileId(String fileId) { + this.fileId = fileId; + } + public String getImgMap() { + return imgMap; + } + public void setImgMap(String imgMap) { + this.imgMap = imgMap; + } + public int getImgWidth() { + return imgWidth; + } + public void setImgWidth(int imgWidth) { + this.imgWidth = imgWidth; + } + public int getImgHeight() { + return imgHeight; + } + public void setImgHeight(int imgHeight) { + this.imgHeight = imgHeight; + } + public String getDispYn() { + return dispYn; + } + public void setDispYn(String dispYn) { + this.dispYn = dispYn; + } + public String getPlanCtgLabel() { + return planCtgLabel; + } + public void setPlanCtgLabel(String planCtgLabel) { + this.planCtgLabel = planCtgLabel; + } + + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/plan/model/PlanSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/model/PlanSearch.java new file mode 100644 index 0000000..d2c3458 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/model/PlanSearch.java @@ -0,0 +1,52 @@ +package kr.co.jinwoosi.clfd.conts.plan.model; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + + +public class PlanSearch extends Plan { + + private String planTitleLike; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDtThanOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDtLessOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDtThanOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDtLessOrEquals; + + public String getPlanTitleLike() { + return planTitleLike; + } + + public void setPlanTitleLike(String planTitleLike) { + this.planTitleLike = planTitleLike; + } + public Date getStartDtThanOrEquals() { + return startDtThanOrEquals; + } + public void setStartDtThanOrEquals(Date startDtThanOrEquals) { + this.startDtThanOrEquals = startDtThanOrEquals; + } + public Date getStartDtLessOrEquals() { + return startDtLessOrEquals; + } + public void setStartDtLessOrEquals(Date startDtLessOrEquals) { + this.startDtLessOrEquals = startDtLessOrEquals; + } + public Date getEndDtThanOrEquals() { + return endDtThanOrEquals; + } + public void setEndDtThanOrEquals(Date endDtThanOrEquals) { + this.endDtThanOrEquals = endDtThanOrEquals; + } + public Date getEndDtLessOrEquals() { + return endDtLessOrEquals; + } + public void setEndDtLessOrEquals(Date endDtLessOrEquals) { + this.endDtLessOrEquals = endDtLessOrEquals; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/plan/service/PlanService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/service/PlanService.java new file mode 100644 index 0000000..db8dbf0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/service/PlanService.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.conts.plan.service; + +import kr.co.jinwoosi.clfd.conts.plan.model.Plan; +import kr.co.jinwoosi.clfd.conts.plan.model.PlanSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface PlanService extends BaseService{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/plan/service/impl/PlanServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/service/impl/PlanServiceImpl.java new file mode 100644 index 0000000..f8ac333 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/service/impl/PlanServiceImpl.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.conts.plan.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.plan.mapper.PlanMapper; +import kr.co.jinwoosi.clfd.conts.plan.model.Plan; +import kr.co.jinwoosi.clfd.conts.plan.model.PlanSearch; +import kr.co.jinwoosi.clfd.conts.plan.service.PlanService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +@Service(value="planService") +public class PlanServiceImpl extends BaseServiceImpl implements PlanService { + + + @Override + @Resource (name="planMapper") + protected void setMapper (PlanMapper mapper) { + super.setMapper(mapper); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/plan/web/PlanController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/web/PlanController.java new file mode 100644 index 0000000..0d4ab31 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/plan/web/PlanController.java @@ -0,0 +1,137 @@ +package kr.co.jinwoosi.clfd.conts.plan.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.plan.model.Plan; +import kr.co.jinwoosi.clfd.conts.plan.model.PlanSearch; +import kr.co.jinwoosi.clfd.conts.plan.service.PlanService; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class PlanController extends BaseController{ + + @Value("#{prop['AppConf.filePath.popup']}") + private String filePath; + + @Resource (name="planService") + private PlanService planService; + + @Resource (name="fileService") + private FileService fileService; + + @Resource (name="siteService") + private SiteService siteService; + + @RequestMapping (value="/system/plan/list.mng", method=RequestMethod.GET) + public String list(Model model){ + + model.addAttribute("siteList", siteService.selectJson()); + + return "system/plan/list"; + } + + @RequestMapping (value="/system/plan/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, PlanSearch planSearch){ + Map result = new HashMap(); + try{ + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + planSearch.setSort(sort); + planSearch.setSortOrd(sortOder); + planSearch.setPagingYn(true); + + int totalCount = planService.count(planSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", planService.selectList(planSearch)); + result.put("result", "success"); + }catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/plan/view.json", method=RequestMethod.POST) + @ResponseBody + public Map view(HttpServletRequest request,PlanSearch planSearch) { + Map result = new HashMap(); + try { + + result.put("data", planService.select(planSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/plan/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Plan plan ) { + Map result = new HashMap(); + try{ + + plan.setRegId(getUserId()); + planService.insert(plan); + result.put("result", "success"); + }catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + + return result; + } + + @RequestMapping (value="/system/plan/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request,Plan plan){ + Map result = new HashMap(); + try{ + + plan.setUpdId(getUserId()); + planService.update(plan); + result.put("result", "success"); + }catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message",e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/plan/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request,Plan plan) { + Map result = new HashMap(); + try{ + + plan.setDelId(getUserId()); + planService.delete(plan); + result.put("result", "success"); + }catch (Exception e){ + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/popup/mapper/PopupMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/mapper/PopupMapper.java new file mode 100644 index 0000000..ee72768 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/mapper/PopupMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.popup.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.popup.model.Popup; +import kr.co.jinwoosi.clfd.conts.popup.model.PopupSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="popupMapper") +public interface PopupMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/popup/model/Popup.java b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/model/Popup.java new file mode 100644 index 0000000..1c646e5 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/model/Popup.java @@ -0,0 +1,141 @@ +package kr.co.jinwoosi.clfd.conts.popup.model; + +import java.util.Date; + +import org.springframework.format.annotation.DateTimeFormat; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Popup extends BaseModel{ + + private Long popupId; + private String popupNm; + private String popupTp; + private Integer width; + private Integer height; + private Long fileId; + private String imgMap; + private String alt; + private String linkUrl; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDt; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDt; + private Boolean useSt; + + private String popupTpNm; + private String popupTpLabel; + + public String getPopupTpNm() { + return popupTpNm; + } + + public void setPopupTpNm(String popupTpNm) { + this.popupTpNm = popupTpNm; + } + + public void setPopupTpLabel(String popupTpLabel) { + this.popupTpLabel = popupTpLabel; + } + + public String getPopupTpLabel() { + return popupTpLabel; + } + + public Long getPopupId() { + return popupId; + } + + public void setPopupId(Long popupId) { + this.popupId = popupId; + } + + public String getPopupNm() { + return popupNm; + } + + public void setPopupNm(String popupNm) { + this.popupNm = popupNm; + } + + public String getPopupTp() { + return popupTp; + } + + public void setPopupTp(String popupTp) { + this.popupTp = popupTp; + } + + public Integer getWidth() { + return width; + } + + public void setWidth(Integer width) { + this.width = width; + } + + public Integer getHeight() { + return height; + } + + public void setHeight(Integer height) { + this.height = height; + } + + public Long getFileId() { + return fileId; + } + + public void setFileId(Long fileId) { + this.fileId = fileId; + } + + public String getImgMap() { + return imgMap; + } + + public void setImgMap(String imgMap) { + this.imgMap = imgMap; + } + + public String getAlt() { + return alt; + } + + public void setAlt(String alt) { + this.alt = alt; + } + + public String getLinkUrl() { + return linkUrl; + } + + public void setLinkUrl(String linkUrl) { + this.linkUrl = linkUrl; + } + + public Date getStartDt() { + return startDt; + } + + public void setStartDt(Date startDt) { + this.startDt = startDt; + } + + public Date getEndDt() { + return endDt; + } + + public void setEndDt(Date endDt) { + this.endDt = endDt; + } + + public Boolean getUseSt() { + return useSt; + } + + public void setUseSt(Boolean useSt) { + this.useSt = useSt; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/popup/model/PopupSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/model/PopupSearch.java new file mode 100644 index 0000000..41fd1c4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/model/PopupSearch.java @@ -0,0 +1,65 @@ +package kr.co.jinwoosi.clfd.conts.popup.model; + +import java.util.Date; +import java.util.List; + +import org.springframework.format.annotation.DateTimeFormat; + +public class PopupSearch extends Popup{ + + private List popupIdIn; + private String popupNmLike; + private String linkUrlLike; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDtThanOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date startDtLessOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDtThanOrEquals; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date endDtLessOrEquals; + + public List getPopupIdIn() { + return popupIdIn; + } + public void setPopupIdIn(List popupIdIn) { + this.popupIdIn = popupIdIn; + } + public String getPopupNmLike() { + return popupNmLike; + } + public void setPopupNmLike(String popupNmLike) { + this.popupNmLike = popupNmLike; + } + public String getLinkUrlLike() { + return linkUrlLike; + } + public void setLinkUrlLike(String linkUrlLike) { + this.linkUrlLike = linkUrlLike; + } + public Date getStartDtThanOrEquals() { + return startDtThanOrEquals; + } + public void setStartDtThanOrEquals(Date startDtThanOrEquals) { + this.startDtThanOrEquals = startDtThanOrEquals; + } + public Date getStartDtLessOrEquals() { + return startDtLessOrEquals; + } + public void setStartDtLessOrEquals(Date startDtLessOrEquals) { + this.startDtLessOrEquals = startDtLessOrEquals; + } + public Date getEndDtThanOrEquals() { + return endDtThanOrEquals; + } + public void setEndDtThanOrEquals(Date endDtThanOrEquals) { + this.endDtThanOrEquals = endDtThanOrEquals; + } + public Date getEndDtLessOrEquals() { + return endDtLessOrEquals; + } + public void setEndDtLessOrEquals(Date endDtLessOrEquals) { + this.endDtLessOrEquals = endDtLessOrEquals; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/popup/service/PopupService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/service/PopupService.java new file mode 100644 index 0000000..aa52860 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/service/PopupService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.conts.popup.service; + +import kr.co.jinwoosi.clfd.conts.popup.model.Popup; +import kr.co.jinwoosi.clfd.conts.popup.model.PopupSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface PopupService extends BaseService { + + void insert(Popup popup, Long itemId); + + void update(Popup popup, Long itemId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/popup/service/impl/PopupServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/service/impl/PopupServiceImpl.java new file mode 100644 index 0000000..467772d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/service/impl/PopupServiceImpl.java @@ -0,0 +1,60 @@ +package kr.co.jinwoosi.clfd.conts.popup.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.popup.mapper.PopupMapper; +import kr.co.jinwoosi.clfd.conts.popup.model.Popup; +import kr.co.jinwoosi.clfd.conts.popup.model.PopupSearch; +import kr.co.jinwoosi.clfd.conts.popup.service.PopupService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; + +@Service(value="popupService") +public class PopupServiceImpl extends BaseServiceImpl implements PopupService { + + @Resource (name="fileItemService") + private FileItemService fileItemService; + + @Resource (name="fileService") + private FileService fileService; + + @Override + @Resource (name="popupMapper") + protected void setMapper (PopupMapper mapper) { + super.setMapper (mapper); + } + + @Override + public void insert(Popup popup, Long itemId) { + FileInfo file = new FileInfo(); + fileService.insert(file); + + FileItem fileItem = new FileItem(); + fileItem.setFileId(file.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + + popup.setFileId(file.getFileId()); + insert(popup); + } + + @Override + public void update(Popup popup, Long itemId) { + if(itemId != null) { //첨부파일 교체 시 + fileService.deleteFileItem(popup.getFileId()); + + FileItem fileItem = new FileItem(); + fileItem.setFileId(popup.getFileId()); + fileItem.setItemId(itemId); + fileItemService.updateFileId(fileItem); + } + + update(popup); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/popup/web/PopupController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/web/PopupController.java new file mode 100644 index 0000000..59505e8 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/popup/web/PopupController.java @@ -0,0 +1,126 @@ +package kr.co.jinwoosi.clfd.conts.popup.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.popup.model.Popup; +import kr.co.jinwoosi.clfd.conts.popup.model.PopupSearch; +import kr.co.jinwoosi.clfd.conts.popup.service.PopupService; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; + +@Controller +public class PopupController extends BaseController { + + @Value("#{prop['AppConf.filePath.popup']}") + private String filePath; + + @Resource (name="fileService") + private FileService fileService; + + @Resource (name="popupService") + private PopupService popupService; + + @RequestMapping (value="/system/popup/list.mng", method=RequestMethod.GET) + public String list() { + return "system/popup/list"; + } + + @RequestMapping (value="/system/popup/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, PopupSearch popupSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + popupSearch.setSort(sort); + popupSearch.setSortOrd(sortOder); + popupSearch.setPagingYn(true); + + int totalCount = popupService.count(popupSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", popupService.selectList(popupSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/popup/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, PopupSearch popupSearch) { + Map result = new HashMap(); + try { + result.put("data", popupService.select(popupSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/popup/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Popup popup, Long itemId) { + Map result = new HashMap(); + try { + popup.setRegId(getUserId()); + popupService.insert(popup, itemId); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/popup/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Popup popup, Long itemId) { + Map result = new HashMap(); + try { + popup.setUpdId(getUserId()); + popupService.update(popup, itemId); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/popup/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete (Popup popup) { + Map result = new HashMap (); + try { + popup.setDelId(getUserId()); + popupService.delete(popup); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/prod/mapper/ProdMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/mapper/ProdMapper.java new file mode 100644 index 0000000..1922c7b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/mapper/ProdMapper.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.conts.prod.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTy; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +import java.util.List; + +@Mapper (value = "prodMapper") +public interface ProdMapper extends BaseMapper { + + List skTyList(); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/prod/model/Prod.java b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/model/Prod.java new file mode 100644 index 0000000..b22d230 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/model/Prod.java @@ -0,0 +1,35 @@ +package kr.co.jinwoosi.clfd.conts.prod.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import lombok.*; + +@ToString +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class Prod extends BaseModel { + + private Long prodId; + private String prodCd; + private String prodNm; + private String prodTy; + private Double prodCpcty; + private Integer prodPrc; + private String prodSt; + private String showSt; + private String skTy; + private String prodIrdnt; + private String prodDtl; + private String prodHashtag; + private String imageDir; + private String prodImage; + private Long rcmdNo; + + private String regNm; + private String prodTyNm; + private String prodStNm; + + private boolean like; + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/prod/model/ProdSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/model/ProdSearch.java new file mode 100644 index 0000000..e5c17ae --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/model/ProdSearch.java @@ -0,0 +1,19 @@ +package kr.co.jinwoosi.clfd.conts.prod.model; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class ProdSearch extends Prod{ + + private String prodNmLike; + private String prodTyLike; + private String skTyLike; + private String prodIrdntLike; + private List skTyList; + private List prodTyList; + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/prod/service/ProdService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/service/ProdService.java new file mode 100644 index 0000000..2427140 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/service/ProdService.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.conts.prod.service; + +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTy; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +import java.util.List; + +public interface ProdService extends BaseService { + + List skTyList(); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/prod/service/impl/ProdServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/service/impl/ProdServiceImpl.java new file mode 100644 index 0000000..268c6f6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/service/impl/ProdServiceImpl.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.conts.prod.service.impl; + +import kr.co.jinwoosi.clfd.clfd.dgns.model.SkTy; +import kr.co.jinwoosi.clfd.conts.prod.mapper.ProdMapper; +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import kr.co.jinwoosi.clfd.conts.prod.service.ProdService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service("prodService") +public class ProdServiceImpl extends BaseServiceImpl implements ProdService { + + @Override + @Resource(name = "prodMapper") + protected void setMapper (ProdMapper mapper) { + super.setMapper(mapper); + } + + @Override + public List skTyList() { + return mapper.skTyList(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/prod/web/ProdController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/web/ProdController.java new file mode 100644 index 0000000..d051962 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/prod/web/ProdController.java @@ -0,0 +1,160 @@ +package kr.co.jinwoosi.clfd.conts.prod.web; + +import kr.co.jinwoosi.clfd.conts.prod.model.Prod; +import kr.co.jinwoosi.clfd.conts.prod.model.ProdSearch; +import kr.co.jinwoosi.clfd.conts.prod.service.ProdService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +@Controller +public class ProdController extends BaseController { + + @Value("#{prop['AppConf.filePath.image']}") + private String imgUrl; + + @Resource(name = "prodService") + private ProdService prodService; + + @Resource(name = "cdDtlService") + private CdDtlService cdDtlService; + + @RequestMapping (value = "/system/prod/list.mng", method = RequestMethod.GET) + public String list(Model model, HttpServletRequest request){ + User user = (User)request.getSession().getAttribute("user"); + model.addAttribute("user", user); + model.addAttribute("prodTyList", cdDtlService.selectList(new CdDtl("prodTy"))); + return "system/prod/prodlist"; + } + + @RequestMapping (value = "/system/prod/list.json", method = RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, ProdSearch prodSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + prodSearch.setSort(sort); + prodSearch.setSortOrd(sortOder); + prodSearch.setPagingYn(true); + + int totalCount = prodService.count(prodSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", prodService.selectList(prodSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value = "/system/prod/detail.json", method = RequestMethod.POST) + @ResponseBody + public Map detail(ProdSearch prodSearch) { + Map result = new HashMap(); + try { + result.put("data", prodService.select(prodSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/prod/insert.json", method = RequestMethod.POST) + @ResponseBody + public Map insert(@RequestParam(required = false, value = "uploadFile") MultipartFile multipartFile, Prod prod){ + Map result = new HashMap<>(); + try { + if(multipartFile == null || multipartFile.isEmpty()){ + } else { + File dirPath = new File(imgUrl); + if(!dirPath.isDirectory()){ + dirPath.mkdir(); + } + String uuidPath = UUID.randomUUID().toString(); + String fileName = multipartFile.getOriginalFilename().replaceAll(" ", "_"); + prod.setImageDir(uuidPath); + prod.setProdImage(fileName); + + File file = new File(imgUrl + uuidPath + '_' + fileName); + try { + multipartFile.transferTo(file); + } catch (Exception e) { + e.printStackTrace(); + } + } + prod.setRegId(getUserId()); + prodService.insert(prod); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/prod/update.json", method = RequestMethod.POST) + @ResponseBody + public Map update(@RequestParam(required = false, value = "uploadFile") MultipartFile multipartFile, Prod prod, ProdSearch prodSearch) { + Map result = new HashMap<>(); + try { + if (multipartFile == null || multipartFile.isEmpty()) { + } else { + File dirPath = new File(imgUrl); + if (!dirPath.isDirectory()) { + dirPath.mkdir(); + } + Prod fileInfo = prodService.select(prodSearch); + if (fileInfo.getImageDir() != null && fileInfo.getProdImage() != null) { + String filePath = imgUrl + fileInfo.getImageDir() + '_' + fileInfo.getProdImage(); + File deleteFile = new File(filePath); + deleteFile.delete(); + } + String uuidPath = UUID.randomUUID().toString(); + String fileName = multipartFile.getOriginalFilename().replaceAll(" ", "_"); + prod.setImageDir(uuidPath); + prod.setProdImage(fileName); + + File file = new File(imgUrl + uuidPath + '_' + fileName); + try { + multipartFile.transferTo(file); + } catch (Exception e) { + e.printStackTrace(); + } + } + prod.setUpdId(getUserId()); + prodService.update(prod); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/site/mapper/SiteMapper.java b/src/main/java/kr/co/jinwoosi/clfd/conts/site/mapper/SiteMapper.java new file mode 100644 index 0000000..5e4ce73 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/site/mapper/SiteMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.conts.site.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.model.SiteSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="siteMapper") +public interface SiteMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/site/model/Site.java b/src/main/java/kr/co/jinwoosi/clfd/conts/site/model/Site.java new file mode 100644 index 0000000..559ca51 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/site/model/Site.java @@ -0,0 +1,61 @@ +package kr.co.jinwoosi.clfd.conts.site.model; + +import kr.co.jinwoosi.clfd.conts.lang.model.Lang; +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Site extends BaseModel{ + + private Long siteId; + private Long langId; + private String siteNm; + private String domain; + private String startUrl; + private String copyright; + + private Lang lang; + + public Lang getLang() { + if(lang != null) return lang; + else return new Lang(); + } + + public String getCopyright() { + return copyright; + } + public void setCopyright(String copyright) { + this.copyright = copyright; + } + public void setLang(Lang lang) { + this.lang = lang; + } + public Long getSiteId() { + return siteId; + } + public void setSiteId(Long siteId) { + this.siteId = siteId; + } + public Long getLangId() { + return langId; + } + public void setLangId(Long langId) { + this.langId = langId; + } + public String getSiteNm() { + return siteNm; + } + public void setSiteNm(String siteNm) { + this.siteNm = siteNm; + } + public String getDomain() { + return domain; + } + public void setDomain(String domain) { + this.domain = domain; + } + public String getStartUrl() { + return startUrl; + } + public void setStartUrl(String startUrl) { + this.startUrl = startUrl; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/site/model/SiteSearch.java b/src/main/java/kr/co/jinwoosi/clfd/conts/site/model/SiteSearch.java new file mode 100644 index 0000000..803a272 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/site/model/SiteSearch.java @@ -0,0 +1,28 @@ +package kr.co.jinwoosi.clfd.conts.site.model; + +public class SiteSearch extends Site{ + + private String siteIdLike; + private String siteNmLike; + private String startUrlLike; + + public String getSiteIdLike() { + return siteIdLike; + } + public void setSiteIdLike(String siteIdLike) { + this.siteIdLike = siteIdLike; + } + public String getSiteNmLike() { + return siteNmLike; + } + public void setSiteNmLike(String siteNmLike) { + this.siteNmLike = siteNmLike; + } + public String getStartUrlLike() { + return startUrlLike; + } + public void setStartUrlLike(String startUrlLike) { + this.startUrlLike = startUrlLike; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/site/service/SiteService.java b/src/main/java/kr/co/jinwoosi/clfd/conts/site/service/SiteService.java new file mode 100644 index 0000000..60b01c9 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/site/service/SiteService.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.conts.site.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.model.SiteSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface SiteService extends BaseService { + + List selectJson(); + + void initJson(); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/site/service/impl/SiteServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/conts/site/service/impl/SiteServiceImpl.java new file mode 100644 index 0000000..9b244e9 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/site/service/impl/SiteServiceImpl.java @@ -0,0 +1,84 @@ +package kr.co.jinwoosi.clfd.conts.site.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.conts.lang.service.LangService; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.mapper.SiteMapper; +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.model.SiteSearch; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.util.ApplicationHelper; +import kr.co.jinwoosi.clfd.framework.util.Constants; +import org.springframework.stereotype.Service; + +@Service(value="siteService") +public class SiteServiceImpl extends BaseServiceImpl implements SiteService { + + @Resource (name="langService") + private LangService langService; + + @Resource (name="cmsMenuService") + private MenuService menuService; + + @Override + @Resource (name="siteMapper") + protected void setMapper (SiteMapper mapper) { + super.setMapper (mapper); + } + + @Override + public List selectList(SiteSearch s) { + List resultList = new ArrayList(); + List siteList = super.selectList(s); + LangSearch langSearch; + for(Site site : siteList) { + langSearch = new LangSearch(); + langSearch.setLangId(site.getLangId()); + site.setLang(langService.select(langSearch)); + resultList.add(site); + } + + return resultList; + } + + @Override + public List selectJson() { + if(ApplicationHelper.getSiteList() == null) { + initJson(); + } + + return ApplicationHelper.getSiteList(); + } + + @Override + public void initJson() { + SiteSearch siteSearch = new SiteSearch(); + ApplicationHelper.setSiteList(selectList(siteSearch)); + } + + @Override + public void insert(Site site) { + super.insert(site); + + //메인 메뉴 등록 + Menu menu = new Menu(); + menu.setSiteId(site.getSiteId()); + menu.setMenuNm("메인"); + menu.setMenuUrl("main"); + menu.setMenuOrd(0); + menu.setMenuTp(Constants.MENU_TYPE_PGM); + menu.setUseSt("Y"); + menu.setRegId(site.getRegId()); + + menuService.insert(menu); + menuService.initJson(site.getSiteId()); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/conts/site/web/SiteController.java b/src/main/java/kr/co/jinwoosi/clfd/conts/site/web/SiteController.java new file mode 100644 index 0000000..02e3324 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/conts/site/web/SiteController.java @@ -0,0 +1,199 @@ +package kr.co.jinwoosi.clfd.conts.site.web; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.model.SiteSearch; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + + + +import kr.co.jinwoosi.clfd.conts.lang.model.LangSearch; +import kr.co.jinwoosi.clfd.conts.lang.service.LangService; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.util.HttpUtil; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; + +@Controller +public class SiteController extends BaseController { + + @Resource (name="langService") + private LangService langService; + + @Resource (name="siteService") + private SiteService siteService; + + @RequestMapping (value="/system/site/list.mng", method=RequestMethod.GET) + public String list(Model model) { + LangSearch langSearch = new LangSearch(); + model.addAttribute("langList", langService.selectList(langSearch)); + return "system/site/list"; + } + + @RequestMapping (value="/system/site/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, SiteSearch siteSearch, Boolean pagingYn) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + + if (sort == null) sort = ""; + if (sortOder == null) sortOder = ""; + if (siteSearch == null) siteSearch = new SiteSearch(); + if (pagingYn == null) pagingYn = Boolean.FALSE; + + siteSearch.setSort(sort); + siteSearch.setSortOrd(sortOder); + siteSearch.setPagingYn(pagingYn); + + int totalCount = siteService.count(siteSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("domain", HttpUtil.getDomain(request)); + result.put("data", siteService.selectList(siteSearch)); + result.put("result", "success"); + } catch (Exception e) { + //e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/site/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, SiteSearch siteSearch) { + Map result = new HashMap(); + try { + if (siteSearch != null) { + result.put("data", siteService.select(siteSearch)); + result.put("result", "success"); + } + else { + result.put("result", "fail"); + result.put("message", "siteSearch is null"); + } + } catch (Exception e) { + //e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/site/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Site site) { + Map result = new HashMap(); + try { + //도메인, 시작URL 중복 방지 + int cnt = 0; + SiteSearch siteSearch = new SiteSearch(); + + if (site != null) { + siteSearch.setDomain(site.getDomain()); + List siteList = siteService.selectList(siteSearch); + for(Site st : siteList) { + if((StrUtil.isEmpty(site.getStartUrl()) && StrUtil.isEmpty(st.getStartUrl())) + || (!StrUtil.isEmpty(site.getStartUrl()) && site.getStartUrl().equals(st.getStartUrl()))) { //시작 URL이 수정되었으면 기존에 존재하는 URL인지 검사한다. + cnt ++; + break; + } + } + if(cnt > 0) { + result.put("result", "fail"); + result.put("message", "시작 URL이 이미 존재합니다."); + return result; + } + + site.setRegId(getUserId()); + siteService.insert(site); + + siteService.initJson(); + result.put("result", "success"); + } else { + result.put("result", "fail"); + result.put("message", "site is null"); + } + } catch (Exception e) { + //e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/site/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Site site) { + Map result = new HashMap(); + try { + //도메인, 시작URL 중복 방지 + int cnt = 0; + SiteSearch siteSearch = new SiteSearch(); + + if (site != null) { + siteSearch.setDomain(site.getDomain()); + List currentSiteList = siteService.selectList(siteSearch); + for(Site currentSite : currentSiteList) { + if(!currentSite.getSiteId().equals(site.getSiteId())) { + if((StrUtil.isEmpty(site.getStartUrl()) && StrUtil.isEmpty(currentSite.getStartUrl())) + || (!StrUtil.isEmpty(site.getStartUrl()) && site.getStartUrl().equals(currentSite.getStartUrl()))) { //시작 URL이 수정되었으면 기존에 존재하는 URL인지 검사한다. + cnt ++; + break; + } + } + } + if(cnt > 0) { + result.put("result", "fail"); + result.put("message", "시작 URL이 이미 존재합니다."); + return result; + } + + site.setUpdId(getUserId()); + siteService.update(site); + + siteService.initJson(); + result.put("result", "success"); + } else { + result.put("result", "fail"); + result.put("message", "site is null"); + } + + } catch (Exception e) { + //e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/site/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Site site) { + Map result = new HashMap(); + try { + //도메인, 시작URL 중복 방지 + siteService.delete(site); + + siteService.initJson(); + result.put("result", "success"); + } catch (Exception e) { + //e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/mapper/BaseMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/mapper/BaseMapper.java new file mode 100644 index 0000000..2d7fcde --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/mapper/BaseMapper.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.framework.base.mapper; + +import java.util.List; + +public interface BaseMapper { + List selectList (S s); + Integer count(S s); + T select (S s); + + void insert (T t); + void update (T t); + void delete (T t); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/model/BaseModel.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/model/BaseModel.java new file mode 100644 index 0000000..5893bd4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/model/BaseModel.java @@ -0,0 +1,136 @@ +package kr.co.jinwoosi.clfd.framework.base.model; + +import java.util.Date; +import java.util.List; + +public class BaseModel { + private Integer start; + private Integer length; + + private String sort; + private String sortOrd; + + private Boolean pagingYn; + private List groupbyList; + private List selectList; + + private Long regId; + private Date regDt; + private Long updId; + private Date updDt; + private Long delId; + private Date delDt; + private String recSt; + + public Integer getStart() { + return start; + } + + public void setStart(Integer start) { + this.start = start; + } + + public Integer getLength() { + return length; + } + + public void setLength(Integer length) { + this.length = length; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + public String getSortOrd() { + return sortOrd; + } + + public void setSortOrd(String sortOrd) { + this.sortOrd = sortOrd; + } + + public List getGroupbyList() { + return groupbyList; + } + + public void setGroupbyList(List groupbyList) { + this.groupbyList = groupbyList; + } + + public List getSelectList() { + return selectList; + } + + public void setSelectList(List selectList) { + this.selectList = selectList; + } + + public Date getRegDt() { + return regDt; + } + + public void setRegDt(Date regDt) { + this.regDt = regDt; + } + + public Date getUpdDt() { + return updDt; + } + + public void setUpdDt(Date updDt) { + this.updDt = updDt; + } + + public Date getDelDt() { + return delDt; + } + + public void setDelDt(Date delDt) { + this.delDt = delDt; + } + + public Boolean getPagingYn() { + return pagingYn; + } + + public void setPagingYn(Boolean pagingYn) { + this.pagingYn = pagingYn; + } + + public Long getRegId() { + return regId; + } + + public void setRegId(Long regId) { + this.regId = regId; + } + + public Long getUpdId() { + return updId; + } + + public void setUpdId(Long updId) { + this.updId = updId; + } + + public Long getDelId() { + return delId; + } + + public void setDelId(Long delId) { + this.delId = delId; + } + + public String getRecSt() { + return recSt; + } + + public void setRecSt(String recSt) { + this.recSt = recSt; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/service/BaseService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/service/BaseService.java new file mode 100644 index 0000000..2313e05 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/service/BaseService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.framework.base.service; + +import java.util.List; + +public interface BaseService { + List selectList (S s); + int count(S s); + T select (S s); + + void insert (T t); + void update (T t); + void delete (T t); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/service/impl/BaseServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/service/impl/BaseServiceImpl.java new file mode 100644 index 0000000..a7afa59 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/service/impl/BaseServiceImpl.java @@ -0,0 +1,65 @@ +package kr.co.jinwoosi.clfd.framework.base.service.impl; + +import java.util.List; + +import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.User; + +public class BaseServiceImpl> extends EgovAbstractServiceImpl implements BaseService { + + protected M mapper; + + protected void setMapper (M mapper) { + this.mapper = mapper; + } + + @Override + public List selectList (S s) { + return mapper.selectList (s); + } + + @Override + public int count(S s) { + return mapper.count(s); + } + + @Override + public T select (S s) { + return mapper.select (s); + } + + @Override + public void insert (T t) { + if(t instanceof BaseModel) ((BaseModel)t).setRegId(getUserId()); + mapper.insert (t); + } + + @Override + public void update (T t) { + if(t instanceof BaseModel) ((BaseModel)t).setUpdId(getUserId()); + mapper.update (t); + } + + @Override + public void delete (T t) { + if(t instanceof BaseModel) ((BaseModel)t).setDelId(getUserId()); + mapper.delete (t); + } + + /** + * 접속 사용자 아이디(번호)를 가져 온다. + */ + protected Long getUserId () { + if("anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser())) return null; + + User user = (User)EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserId (); + } + return null; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/tag/BaseTag.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/tag/BaseTag.java new file mode 100644 index 0000000..76694ad --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/tag/BaseTag.java @@ -0,0 +1,161 @@ +package kr.co.jinwoosi.clfd.framework.base.tag; + +import java.util.Locale; + +import org.springframework.beans.factory.config.AutowireCapableBeanFactory; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.servlet.tags.RequestContextAwareTag; + +@SuppressWarnings("serial") +public abstract class BaseTag extends RequestContextAwareTag { + + private String type; + private String id; + private String name; + private String value; + private String cd; + private String headerText; + private String headerValue; + private String styleClass; + private String labelYn; + private Boolean snsYn; + private String event; + + private String menuId; + private String siteId; + + public Boolean getSnsYn() { + return snsYn; + } + + public void setSnsYn(Boolean snsYn) { + this.snsYn = snsYn; + } + + public String getMenuId() { + return menuId; + } + + public void setMenuId(String menuId) { + this.menuId = menuId; + } + + public String getSiteId() { + return siteId; + } + + public void setSiteId(String siteId) { + this.siteId = siteId; + } + + public String getEvent() { + return event; + } + + public void setEvent(String event) { + this.event = event; + } + + public String getLabelYn() { + return labelYn; + } + + public void setLabelYn(String labelYn) { + this.labelYn = labelYn; + } + + public String getStyleClass() { + return styleClass; + } + + public void setStyleClass(String styleClass) { + this.styleClass = styleClass; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public WebApplicationContext getWac() { + return wac; + } + + public void setWac(WebApplicationContext wac) { + this.wac = wac; + } + + public void setValue(String value) { + this.value = value; + } + + public String getCd() { + return cd; + } + + public void setCd(String cd) { + this.cd = cd; + } + + public String getHeaderText() { + return headerText; + } + + public void setHeaderText(String headerText) { + this.headerText = headerText; + } + + public String getHeaderValue() { + return headerValue; + } + + public void setHeaderValue(String headerValue) { + this.headerValue = headerValue; + } + + + + + WebApplicationContext wac = null; + @Override + protected int doStartTagInternal () throws Exception { + wac = getRequestContext ().getWebApplicationContext (); + AutowireCapableBeanFactory acbf = wac.getAutowireCapableBeanFactory (); + acbf.autowireBean (this); + + return doProcessTag (); + } + + protected String getMessage (String code, Object[] args, String defaultMessage, Locale locale) { + if (wac != null) + return wac.getMessage (code, args, defaultMessage, locale); + + return defaultMessage; + } + + protected abstract int doProcessTag () throws Exception; + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/web/BaseController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/web/BaseController.java new file mode 100644 index 0000000..8f14824 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/web/BaseController.java @@ -0,0 +1,65 @@ +package kr.co.jinwoosi.clfd.framework.base.web; + +import kr.co.jinwoosi.clfd.framework.security.model.User; +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; + +public class BaseController { + + /** + * 빈 문자열의 파리미터인 경우 NULL 로 변경 + * + * @param binder + */ + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); + } + + + /** + * 접속 사용자 아이디(번호)를 가져 온다. + * @return + */ + protected Long getUserId () { + if("anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser())) return null; + + User user = (User)EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserId (); + } + + return null; + } + + /** + * 접속 사용자의 로그인 아이디를 가져온다. + * @return + */ + protected String getUserLoginId () { + User user = + (User)EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserLoginId (); + } + return null; + } + + + /** + * 접속한 사용자의 이름을 가져온다. + * + * @return + */ + protected String getUserName () { + User user = + (User)EgovUserDetailsHelper.getAuthenticatedUser(); + if (user != null) { + return user.getUserNm(); + } + return null; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/base/web/DummyController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/base/web/DummyController.java new file mode 100644 index 0000000..45ed612 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/base/web/DummyController.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.framework.base.web; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class DummyController { + + @RequestMapping ("/{step1}/{step2}/{step3}.mng") + public String forward (@PathVariable String step1, @PathVariable String step2, @PathVariable String step3) { + return step1 + "/" + step2 + "/" + step3; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdClsMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdClsMapper.java new file mode 100644 index 0000000..56b8032 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdClsMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.framework.cd.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.cd.model.CdCls; + +@Mapper (value="cdClsMapper") +public interface CdClsMapper extends BaseMapper { + Integer existCount (CdCls cdCls); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdDtlMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdDtlMapper.java new file mode 100644 index 0000000..d8ef263 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdDtlMapper.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.framework.cd.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; + +import java.util.List; + +@Mapper (value="cdDtlMapper") +public interface CdDtlMapper extends BaseMapper { + Integer existCount (CdDtl cdDtl); + + Integer countChek(CdDtl cdDtl); + + List selectCdDtlList(String cdId); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdMapper.java new file mode 100644 index 0000000..fd42712 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/mapper/CdMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.framework.cd.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.cd.model.Cd; + +@Mapper (value="cdMapper") +public interface CdMapper extends BaseMapper { + Integer existCount (Cd cd); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/Cd.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/Cd.java new file mode 100644 index 0000000..122e023 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/Cd.java @@ -0,0 +1,44 @@ +package kr.co.jinwoosi.clfd.framework.cd.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Cd extends BaseModel { + private String cdId; + private String cdClsId; + private String cdNm; + private String cdDesc; + private String useSt; + + + public String getCdId() { + return cdId; + } + public void setCdId(String cdId) { + this.cdId = cdId; + } + public String getCdClsId() { + return cdClsId; + } + public void setCdClsId(String cdClsId) { + this.cdClsId = cdClsId; + } + public String getCdNm() { + return cdNm; + } + public void setCdNm(String cdNm) { + this.cdNm = cdNm; + } + public String getCdDesc() { + return cdDesc; + } + public void setCdDesc(String cdDesc) { + this.cdDesc = cdDesc; + } + public String getUseSt() { + return useSt; + } + public void setUseSt(String useSt) { + this.useSt = useSt; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/CdCls.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/CdCls.java new file mode 100644 index 0000000..e2b4a76 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/CdCls.java @@ -0,0 +1,37 @@ +package kr.co.jinwoosi.clfd.framework.cd.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class CdCls extends BaseModel { + private String cdClsId; + private String cdClsNm; + private String cdClsDesc; + private String useSt; + + + public String getCdClsId() { + return cdClsId; + } + public void setCdClsId(String cdClsId) { + this.cdClsId = cdClsId; + } + public String getCdClsNm() { + return cdClsNm; + } + public void setCdClsNm(String cdClsNm) { + this.cdClsNm = cdClsNm; + } + public String getCdClsDesc() { + return cdClsDesc; + } + public void setCdClsDesc(String cdClsDesc) { + this.cdClsDesc = cdClsDesc; + } + public String getUseSt() { + return useSt; + } + public void setUseSt(String useSt) { + this.useSt = useSt; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/CdDtl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/CdDtl.java new file mode 100644 index 0000000..239e0da --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/model/CdDtl.java @@ -0,0 +1,36 @@ +package kr.co.jinwoosi.clfd.framework.cd.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import lombok.*; + +@Setter +@Getter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class CdDtl extends BaseModel implements Comparable{ + private String cdDtlId; + private String cdId; + private String cdDtlNm; + private String cdDtlLabel; + private String cdDtlDesc; + private String cdDtlOrd; + private String useSt; + + public CdDtl(String cdId) { + this.cdId = cdId; + } + + @Override + public int compareTo(CdDtl o) { + if (this.cdDtlOrd == null || o.cdDtlOrd == null) { + return 0; + } + + if (Integer.parseInt(this.cdDtlOrd) > Integer.parseInt(o.cdDtlOrd)) { + return 1; + } else { + return -1; + } + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdClsService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdClsService.java new file mode 100644 index 0000000..bf7aaff --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdClsService.java @@ -0,0 +1,8 @@ +package kr.co.jinwoosi.clfd.framework.cd.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.cd.model.CdCls; + +public interface CdClsService extends BaseService { + Integer existCount (CdCls cdCls); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdDtlService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdDtlService.java new file mode 100644 index 0000000..9a3ce8f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdDtlService.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.framework.cd.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; + +import java.util.List; +import java.util.Map; + +public interface CdDtlService extends BaseService { + + Integer existCount (CdDtl cdDtl); + + Map> selectJson(); + + List selectJson(String cdId); + + void initJson(); + + Integer countChek(CdDtl cdDtl); + + List selectCdDtlList(String cdId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdService.java new file mode 100644 index 0000000..1e67d71 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/CdService.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.framework.cd.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.cd.model.Cd; + +public interface CdService extends BaseService { + + Integer existCount (Cd cd); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdClsServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdClsServiceImpl.java new file mode 100644 index 0000000..298ed69 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdClsServiceImpl.java @@ -0,0 +1,25 @@ +package kr.co.jinwoosi.clfd.framework.cd.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.cd.mapper.CdClsMapper; +import kr.co.jinwoosi.clfd.framework.cd.model.CdCls; +import kr.co.jinwoosi.clfd.framework.cd.service.CdClsService; + +@Service(value="cdClsService") +public class CdClsServiceImpl extends BaseServiceImpl implements CdClsService{ + + @Override + @Resource (name="cdClsMapper") + protected void setMapper (CdClsMapper mapper) { + super.setMapper(mapper); + } + + @Override + public Integer existCount (CdCls cdCls) { + return mapper.existCount (cdCls); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdDtlServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdDtlServiceImpl.java new file mode 100644 index 0000000..1fbe7a7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdDtlServiceImpl.java @@ -0,0 +1,77 @@ +package kr.co.jinwoosi.clfd.framework.cd.service.impl; + + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.cd.mapper.CdDtlMapper; +import kr.co.jinwoosi.clfd.framework.cd.model.Cd; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.cd.service.CdService; +import kr.co.jinwoosi.clfd.framework.util.ApplicationHelper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +@Service(value="cdDtlService") +public class CdDtlServiceImpl extends BaseServiceImpl implements CdDtlService { + + @Resource (name="cdService") + private CdService cdService; + + @Override + @Resource (name="cdDtlMapper") + protected void setMapper (CdDtlMapper mapper) { + super.setMapper(mapper); + } + + @Override + public Integer existCount(CdDtl cdDtl) { + return mapper.existCount(cdDtl); + } + + @Override + public Map> selectJson() { + if(ApplicationHelper.getCdDtlMap() == null) { + initJson(); + } + + return ApplicationHelper.getCdDtlMap(); + } + + @Override + public List selectJson(String cdId) { + Map > cdDtlMap = selectJson(); + return cdDtlMap.get(cdId); + } + + @Override + public void initJson() { + Map> cdDtlMap = new HashMap>(); + Cd cdSearch = new Cd(); + CdDtl cdDtl; + List cdList = cdService.selectList(cdSearch); + for(Cd cd : cdList) { + cdDtl = new CdDtl(); + cdDtl.setCdId(cd.getCdId()); + cdDtl.setSort("CD_DTL_ORDER"); + cdDtlMap.put(cd.getCdId(), selectList(cdDtl)); + } + + ApplicationHelper.setCdDtlMap(cdDtlMap); + } + + @Override + public Integer countChek(CdDtl cdDtl) { + return mapper.countChek(cdDtl); + } + + @Override + public List selectCdDtlList(String cdId){ + return mapper.selectCdDtlList(cdId); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdServiceImpl.java new file mode 100644 index 0000000..c248d7e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/service/impl/CdServiceImpl.java @@ -0,0 +1,26 @@ +package kr.co.jinwoosi.clfd.framework.cd.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.cd.mapper.CdMapper; +import kr.co.jinwoosi.clfd.framework.cd.model.Cd; +import kr.co.jinwoosi.clfd.framework.cd.service.CdService; + +@Service(value="cdService") +public class CdServiceImpl extends BaseServiceImpl implements CdService{ + + @Override + @Resource (name="cdMapper") + protected void setMapper (CdMapper mapper) { + super.setMapper(mapper); + } + + @Override + public Integer existCount(Cd cd) { + return mapper.existCount(cd); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/tag/CdDtlTag.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/tag/CdDtlTag.java new file mode 100644 index 0000000..8483b23 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/tag/CdDtlTag.java @@ -0,0 +1,81 @@ +package kr.co.jinwoosi.clfd.framework.cd.tag; + +import java.util.List; +import java.util.Map; + +import javax.servlet.jsp.JspWriter; + +import kr.co.jinwoosi.clfd.framework.base.tag.BaseTag; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; + +public class CdDtlTag extends BaseTag { + + private CdDtlService cdDtlService; + + @Override + protected int doProcessTag() throws Exception { + cdDtlService = getRequestContext().getWebApplicationContext().getBean(CdDtlService.class); + + JspWriter out = pageContext.getOut (); + StringBuffer sb = new StringBuffer(); + Map> cdDtlMap = cdDtlService.selectJson(); + List cdDtlList = cdDtlMap.get(getCd()); + + if("radio".equals(getType())) { + for(CdDtl cdDtl : cdDtlList) { + sb.append(""); + } + }else { + sb.append(""); + if(!StrUtil.isEmpty(getHeaderText())) { + sb.append(""); + } + + for(CdDtl cdDtl : cdDtlList) { + sb.append(""); + } + sb.append(""); + } + + out.print(sb.toString()); + return SKIP_BODY; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdClsController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdClsController.java new file mode 100644 index 0000000..9a5fca2 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdClsController.java @@ -0,0 +1,120 @@ +package kr.co.jinwoosi.clfd.framework.cd.web; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.cd.model.Cd; +import kr.co.jinwoosi.clfd.framework.cd.model.CdCls; +import kr.co.jinwoosi.clfd.framework.cd.service.CdClsService; +import kr.co.jinwoosi.clfd.framework.cd.service.CdService; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class CdClsController extends BaseController { + + @Resource (name="cdClsService") + private CdClsService cdClsService; + + @Resource (name="cdService") + private CdService cdService; + + //화면전환 + @RequestMapping("/system/cd/mng.mng") + public String site(Model model, Cd cd) { + // model.addAttribute("cdClsList", cdClsService.selectList(cdCls)); + model.addAttribute("cdList", cdService.selectList(cd)); + return "system/cd/mng"; + } + + //리스트 재전송 + @RequestMapping(value="/system/cdCls/list.mng", method=RequestMethod.POST) + @ResponseBody + public Map> list(HttpServletRequest request, CdCls cdCls) { + Map> result = new HashMap>(); + result.put("result", cdClsService.selectList(cdCls)); + return result; + } + + //상세 내역 전송 + @RequestMapping(value="/system/cdCls/select.mng", method=RequestMethod.POST) + @ResponseBody + public Map select(HttpServletRequest request, CdCls cdCls) { + Map result = new HashMap(); + result.put("result", cdClsService.select(cdCls)); + return result; + } + + + //등록 + @RequestMapping(value="/system/cdCls/insert.mng", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, CdCls cdCls) { + Map result = new HashMap(); + try{ + if(cdClsService.existCount (cdCls) > 0) {//코드분류아이디 또는 코드분류이름이 중복된 경우 + result.put("result", "duplicate"); + result.put("message", "이미 등록된 코드 분류입니다. 다시 등록하여 주십시오."); + } else { + cdCls.setRegId(getUserId()); + cdClsService.insert(cdCls); + result.put("result", "success"); + } + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + //수정 + @RequestMapping(value="/system/cdCls/update.mng", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, CdCls cdCls) { + Map result = new HashMap(); + try{ + cdCls.setUpdId(getUserId()); + cdClsService.update(cdCls); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + //삭제 + @RequestMapping(value="/system/cdCls/delete.mng", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, CdCls cdCls) { + Map result = new HashMap(); + try{ + Cd cd = new Cd(); + cd.setCdClsId(cdCls.getCdClsId()); + int cdCnt = cdService.count(cd); + if(cdCnt > 0){ + result.put("result", "cntFail"); + }else{ + cdCls.setDelId(getUserId()); + //cdClsService.delete(cdCls); + result.put("result", "success"); + } + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdController.java new file mode 100644 index 0000000..5a0f7b5 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdController.java @@ -0,0 +1,147 @@ +package kr.co.jinwoosi.clfd.framework.cd.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.cd.model.Cd; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; +import kr.co.jinwoosi.clfd.framework.cd.service.CdService; + +@Controller +public class CdController extends BaseController { + + @Resource (name="cdService") + private CdService cdService; + + @Resource (name="cdDtlService") + private CdDtlService cdDtlService; + + @RequestMapping(value="/system/cd/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, Cd cd){ + Map result = new HashMap(); + try{ + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]" ); + String sortOder = request.getParameter("order[0][dir]"); + cd.setSort(sort); + cd.setSortOrd(sortOder); + cd.setPagingYn(true); + + String useSt = request.getParameter("search[value]"); + if(useSt.equals("사용")){ + cd.setUseSt("Y"); + }else if(useSt.equals("사용안함")){ + cd.setUseSt("N"); + } + + int totalCount = cdService.count(cd); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", cdService.selectList(cd)); + + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/cd/select.json", method=RequestMethod.POST) + @ResponseBody + public Map select(HttpServletRequest request, Cd cd){ + Map result = new HashMap(); + try{ + result.put("data", cdService.select(cd)); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + + @RequestMapping(value="/system/cd/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Cd cd) { + Map result = new HashMap(); + try{ + if(cdService.existCount(cd) > 0) {//코드분류아이디 또는 코드분류이름이 중복된 경우 + result.put("result", "duplicate"); + result.put("message", "이미 등록된 코드 입니다. 다시 등록하여 주십시오."); + } else { + cd.setRegId(getUserId()); + cdService.insert(cd); + + //cdDtlService.initJson(); + result.put("result", "success"); + } + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + //수정 + @RequestMapping(value="/system/cd/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Cd cd) { + Map result = new HashMap(); + try{ + cd.setUpdId(getUserId()); + cdService.update(cd); + + //cdDtlService.initJson(); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + //삭제 + @RequestMapping(value="/system/cd/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Cd cd) { + Map result = new HashMap(); + try{ + CdDtl cdDtl = new CdDtl(); + cdDtl.setCdId(cd.getCdId()); + int cdDtlCnt = cdDtlService.countChek(cdDtl); + if(cdDtlCnt > 0){ + result.put("result", "cntFail"); + }else{ + cd.setDelId(getUserId()); + cdService.delete(cd); + result.put("result", "success"); + } + //cdDtlService.initJson(); + + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdDtlController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdDtlController.java new file mode 100644 index 0000000..05411be --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/cd/web/CdDtlController.java @@ -0,0 +1,154 @@ +package kr.co.jinwoosi.clfd.framework.cd.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; + +/** + * 상세코드 관리 Controller + * + * @author machineguy + * + */ +@Controller +public class CdDtlController extends BaseController { + + @Resource (name="cdDtlService") + private CdDtlService cdDtlService; + + + /** + * 상세 코드 목록을 json 으로 반환 + * @param request + * @param cdDtl + * @return + */ + @RequestMapping(value="/system/cdDtl/list.json") + @ResponseBody + public Map list(HttpServletRequest request, CdDtl cdDtl){ + Map result = new HashMap(); + try{ + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]" ); + String sortOder = request.getParameter("order[0][dir]"); + cdDtl.setSort(sort); + cdDtl.setSortOrd(sortOder); + cdDtl.setPagingYn(true); + + String useSt = request.getParameter("search[value]"); + if(useSt.equals("사용")){ + cdDtl.setUseSt("Y"); + }else if(useSt.equals("사용안함")){ + cdDtl.setUseSt("N"); + } + + if(StrUtil.isEmpty(cdDtl.getCdId())) { + result.put("recordsTotal", 0); + result.put("recordsFiltered", 0); + result.put("data", ""); + } else { + int totalCount = cdDtlService.count(cdDtl); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", cdDtlService.selectList(cdDtl)); + } + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 상세코드 등록 + * + * @param request + * @param cdDtl + * @return + */ + @RequestMapping(value="/system/cdDtl/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, CdDtl cdDtl) { + Map result = new HashMap(); + try{ + if(cdDtlService.existCount(cdDtl) > 0) {//코드분류아이디 또는 코드분류이름이 중복된 경우 + result.put("result", "duplicate"); + result.put("message", "이미 등록된 코드 입니다. 다시 등록하여 주십시오."); + } else { + cdDtl.setRegId(getUserId()); + cdDtlService.insert(cdDtl); + + //cdDtlService.initJson(); + result.put("result", "success"); + } + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + + /** + * 상세코드 수정 + * @param request + * @param cdDtl + * @return + */ + @RequestMapping(value="/system/cdDtl/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, CdDtl cdDtl) { + Map result = new HashMap(); + try{ + cdDtl.setUpdId(getUserId()); + cdDtlService.update(cdDtl); + + //cdDtlService.initJson(); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + + /** + * 상세코드 삭제 + * @param request + * @param cdDtl + * @return + */ + @RequestMapping(value="/system/cdDtl/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, CdDtl cdDtl) { + Map result = new HashMap(); + try{ + cdDtl.setDelId(getUserId()); + cdDtlService.delete(cdDtl); + + //cdDtlService.initJson(); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/config/EncryptConfig.java b/src/main/java/kr/co/jinwoosi/clfd/framework/config/EncryptConfig.java new file mode 100644 index 0000000..6c95b13 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/config/EncryptConfig.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.framework.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; + +@Component +public class EncryptConfig { + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/config/SpringAsyncConfig.java b/src/main/java/kr/co/jinwoosi/clfd/framework/config/SpringAsyncConfig.java new file mode 100644 index 0000000..c9cce40 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/config/SpringAsyncConfig.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.framework.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +@Configuration +@EnableAsync +public class SpringAsyncConfig { + @Bean(name = "threadPoolTaskExecutor") + public ThreadPoolTaskExecutor threadPoolTaskExecutor() { + ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); + taskExecutor.setCorePoolSize(3); + taskExecutor.setMaxPoolSize(20); + taskExecutor.setQueueCapacity(7); + taskExecutor.setThreadNamePrefix("Executor-"); + taskExecutor.initialize(); + return taskExecutor; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/error/web/ErrorController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/error/web/ErrorController.java new file mode 100644 index 0000000..9fef9b6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/error/web/ErrorController.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.framework.error.web; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class ErrorController extends BaseController { + + @Resource (name="userRoleService") + private UserRoleService userRoleService; + + @RequestMapping("/error/error.mng") + public String error(@RequestParam ("errorCode") String errorCode, ModelMap modelMap,HttpServletRequest request) { + modelMap.addAttribute ("errorCode", errorCode); + + + return "error/error"; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/mapper/FileItemMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/mapper/FileItemMapper.java new file mode 100644 index 0000000..790e6d6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/mapper/FileItemMapper.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.framework.file.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.model.FileItemSearch; + +@Mapper (value="fileItemMapper") +public interface FileItemMapper extends BaseMapper { + + int selectSerial(String fileId); + + void updateFileId(FileItem fileItem); + + void updateDwnCnt(Long itemId); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/mapper/FileMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/mapper/FileMapper.java new file mode 100644 index 0000000..60631b7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/mapper/FileMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.file.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileSearch; + +@Mapper (value="fileMapper") +public interface FileMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileInfo.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileInfo.java new file mode 100644 index 0000000..a00e49b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileInfo.java @@ -0,0 +1,28 @@ +package kr.co.jinwoosi.clfd.framework.file.model; + +import java.util.List; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class FileInfo extends BaseModel { + + private Long fileId; + + private List fileList; + + public Long getFileId() { + return fileId; + } + + public void setFileId(Long fileId) { + this.fileId = fileId; + } + + public List getFileList() { + return fileList; + } + + public void setFileList(List fileList) { + this.fileList = fileList; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileItem.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileItem.java new file mode 100644 index 0000000..aa92e7d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileItem.java @@ -0,0 +1,72 @@ +package kr.co.jinwoosi.clfd.framework.file.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class FileItem extends BaseModel { + + private Long itemId; + private Long fileId; + private String fileNm; + private String fileExt; + private String mediaTp; + private Integer fileSize; + private String savePath; + private String saveFileNm; + private Long dwnCnt; + + public Long getItemId() { + return itemId; + } + public void setItemId(Long itemId) { + this.itemId = itemId; + } + public Long getFileId() { + return fileId; + } + public void setFileId(Long fileId) { + this.fileId = fileId; + } + public String getFileNm() { + return fileNm; + } + public void setFileNm(String fileNm) { + this.fileNm = fileNm; + } + public String getFileExt() { + return fileExt; + } + public void setFileExt(String fileExt) { + this.fileExt = fileExt; + } + public String getMediaTp() { + return mediaTp; + } + public void setMediaTp(String mediaTp) { + this.mediaTp = mediaTp; + } + public Integer getFileSize() { + return fileSize; + } + public void setFileSize(Integer fileSize) { + this.fileSize = fileSize; + } + public String getSavePath() { + return savePath; + } + public void setSavePath(String savePath) { + this.savePath = savePath; + } + public String getSaveFileNm() { + return saveFileNm; + } + public void setSaveFileNm(String saveFileNm) { + this.saveFileNm = saveFileNm; + } + public Long getDwnCnt() { + return dwnCnt; + } + public void setDwnCnt(Long dwnCnt) { + this.dwnCnt = dwnCnt; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileItemSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileItemSearch.java new file mode 100644 index 0000000..efc34e3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileItemSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.framework.file.model; + +public class FileItemSearch extends FileItem{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileSearch.java new file mode 100644 index 0000000..9be3cd1 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/model/FileSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.framework.file.model; + +public class FileSearch extends FileInfo{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/FileItemService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/FileItemService.java new file mode 100644 index 0000000..7be7f8a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/FileItemService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.framework.file.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.model.FileItemSearch; + +public interface FileItemService extends BaseService { + + void updateFileId(FileItem fileItem); + + void updateDwnCnt(Long itemId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/FileService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/FileService.java new file mode 100644 index 0000000..1aa4042 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/FileService.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.file.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileSearch; + +public interface FileService extends BaseService { + + void deleteFileItem(Long fileId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/impl/FileItemServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/impl/FileItemServiceImpl.java new file mode 100644 index 0000000..d217977 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/impl/FileItemServiceImpl.java @@ -0,0 +1,50 @@ +package kr.co.jinwoosi.clfd.framework.file.service.impl; + +import java.io.File; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.util.PropertiesUtil; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.file.mapper.FileItemMapper; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.model.FileItemSearch; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; + +@Service(value="fileItemService") +public class FileItemServiceImpl extends BaseServiceImpl implements FileItemService { + + @Override + @Resource (name="fileItemMapper") + protected void setMapper (FileItemMapper mapper) { + super.setMapper (mapper); + } + + @Override + public void delete(FileItem fileItem) { + File file = new File(fileItem.getSavePath()+fileItem.getSaveFileNm()); + if(file.exists()) file.delete(); + + if(MediaType.IMAGE_GIF_VALUE.equals(fileItem.getMediaTp()) + || MediaType.IMAGE_JPEG_VALUE.equals(fileItem.getMediaTp()) + || MediaType.IMAGE_PNG_VALUE.equals(fileItem.getMediaTp())) { + //이미지파일일 경우 썸네일이미지도 같이 삭제한다. + file = new File(fileItem.getSavePath()+ PropertiesUtil.getProperty("AppConf.filePath.thumb")+fileItem.getSaveFileNm()+PropertiesUtil.getProperty("AppConf.fileNm.thumb")); + if(file.exists()) file.delete(); + } + super.delete(fileItem); + } + + @Override + public void updateFileId(FileItem fileItem) { + mapper.updateFileId(fileItem); + } + + @Override + public void updateDwnCnt(Long itemId) { + mapper.updateDwnCnt(itemId); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/impl/FileServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/impl/FileServiceImpl.java new file mode 100644 index 0000000..e98ab18 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/service/impl/FileServiceImpl.java @@ -0,0 +1,50 @@ +package kr.co.jinwoosi.clfd.framework.file.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.file.mapper.FileMapper; +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.model.FileItemSearch; +import kr.co.jinwoosi.clfd.framework.file.model.FileSearch; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; + +@Service(value="fileService") +public class FileServiceImpl extends BaseServiceImpl implements FileService { + + @Resource (name="fileItemService") + private FileItemService fileItemService; + + @Override + @Resource (name="fileMapper") + protected void setMapper (FileMapper mapper) { + super.setMapper (mapper); + } + + + @Override + public FileInfo select(FileSearch fileSearch) { + FileInfo file = super.select(fileSearch); + FileItemSearch fileItemSearch = new FileItemSearch(); + fileItemSearch.setFileId(file.getFileId()); + file.setFileList(fileItemService.selectList(fileItemSearch)); + return file; + } + + @Override + public void deleteFileItem(Long fileId) { + FileItemSearch fileItemSearch = new FileItemSearch(); + fileItemSearch.setFileId(fileId); + List fileItemList = fileItemService.selectList(fileItemSearch); + for(FileItem fileItem : fileItemList) { + fileItemService.delete(fileItem); + } + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/file/web/FileController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/file/web/FileController.java new file mode 100644 index 0000000..3577dd3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/file/web/FileController.java @@ -0,0 +1,385 @@ +package kr.co.jinwoosi.clfd.framework.file.web; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.PrintWriter; +import java.io.RandomAccessFile; +import java.net.URLEncoder; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.file.model.FileInfo; +import kr.co.jinwoosi.clfd.framework.file.model.FileItem; +import kr.co.jinwoosi.clfd.framework.file.model.FileItemSearch; +import kr.co.jinwoosi.clfd.framework.file.model.FileSearch; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; +import kr.co.jinwoosi.clfd.framework.file.service.FileService; +import kr.co.jinwoosi.clfd.framework.util.Constants; +import kr.co.jinwoosi.clfd.framework.util.FileUtil; +import kr.co.jinwoosi.clfd.framework.util.PathUtil; +import kr.co.jinwoosi.clfd.framework.util.PropertiesUtil; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; + +@Controller +public class FileController extends BaseController { + + @Resource (name="fileService") + private FileService fileService; + + @Resource (name="fileItemService") + private FileItemService fileItemService; + + String filePathCommon = "C:/file/upload/"; + + /** + * 파일 업로드 + * @param fileId (파일 아이디) + * @param shift - 기존에 있는 파일을 지우고 새로운 파일로 교체를 원할 경우 true로 전달한다. + */ + @RequestMapping(value="/public/file/upload.json") + @ResponseBody + public Map upload(MultipartHttpServletRequest request, String filePath, HttpServletResponse response, Long fileId) { + Map result = new HashMap(); + try { + Iterator itr = request.getFileNames(); + MultipartFile mpf = null; + FileItem fileItem = null; + if(itr.hasNext()){ + mpf = request.getFile(itr.next()); + /* HttpSession session = request.getSession (); + User user = (User)session.getAttribute ("user");*/ + + String[] extension = mpf.getOriginalFilename().split("[.]"); + String saveFileName = UUID.randomUUID().toString(); + if(StrUtil.isEmpty(filePath)) { + if(! mpf.getContentType () .equals (Constants.MEDIA_TYPE_MP4)){ + filePath = filePathCommon; + System.out.println("111 = " + filePath); + fileItem = new FileItem(); + fileItem.setFileNm(mpf.getOriginalFilename()); + fileItem.setFileSize((int)(mpf.getSize()/1024)); + fileItem.setMediaTp(mpf.getContentType()); + fileItem.setFileExt(extension[extension.length-1]); + fileItem.setSavePath(filePath); + fileItem.setSaveFileNm(saveFileName); + fileItem.setRegId(getUserId()); + //fileItem.setRegId(user.getUserId ()); + }else{ + filePath = PropertiesUtil.getProperty("AppConf.filePath.video"); + System.out.println("222 = " + filePath); + fileItem = new FileItem(); + fileItem.setFileNm(mpf.getOriginalFilename()); + fileItem.setFileSize((int)(mpf.getSize()/1024)); + fileItem.setMediaTp(mpf.getContentType()); + fileItem.setFileExt(extension[extension.length-1]); + fileItem.setSavePath(filePath); + saveFileName += "."+fileItem.getFileExt (); + fileItem.setSaveFileNm(saveFileName); + fileItem.setRegId(getUserId()); + // fileItem.setRegId(user.getUserId ()); + + } + } + fileItem.setFileId(fileId); + fileItemService.insert(fileItem); + + FileUtil.createFile(mpf, filePath, saveFileName); + } + + result.put("fileItem", fileItem); + result.put("result", "success"); + }catch(Exception e) { + result.put("result", "exception"); + result.put("mess age", e.getMessage()); + + e.printStackTrace(); + } + return result; + } + + /** + * 파일 업로드 + * @param fileId (파일 아이디) + * @param shift - 기존에 있는 파일을 지우고 새로운 파일로 교체를 원할 경우 true로 전달한다. + */ + @RequestMapping(value="/file/ckeditor/upload.json") + public void ckeditorUpload(MultipartHttpServletRequest request, HttpServletResponse response) { + try { + String filePath = filePathCommon; + + FileInfo fileInfo = new FileInfo(); + fileService.insert(fileInfo); + + Iterator itr = request.getFileNames(); + MultipartFile mpf = null; + FileItem fileItem = null; + if(itr.hasNext()){ + mpf = request.getFile(itr.next()); + + String[] extension = mpf.getOriginalFilename().split("[.]"); + String saveFileName = UUID.randomUUID().toString(); + + fileItem = new FileItem(); + fileItem.setFileId(fileInfo.getFileId()); + fileItem.setFileNm(mpf.getOriginalFilename()); + fileItem.setFileSize((int)(mpf.getSize()/1024)); + fileItem.setMediaTp(mpf.getContentType()); + fileItem.setFileExt(extension[extension.length-1]); + fileItem.setSavePath(filePath); + fileItem.setSaveFileNm(saveFileName); + fileItem.setRegId(getUserId()); + + fileItemService.insert(fileItem); + + FileUtil.createFile(mpf, filePath, saveFileName); + } + + + PrintWriter printWriter = null; + printWriter = response.getWriter(); + String callback = request.getParameter("CKEditorFuncNum"); + String msg = "이미지를 업로드 하였습니다."; + + String message = URLEncoder.encode("이미지를 업로드 하였습니다.","UTF-8"); + + + String fileUrl = "/file/image.mng?fileId="+fileInfo.getFileId()+"&"+new Date().getTime(); + printWriter.println(""); + printWriter.flush(); + + }catch(Exception e) { + } + } + + + @RequestMapping (value="/public/file/view.json", method=RequestMethod.POST) + @ResponseBody + public Map view(HttpServletRequest request, FileSearch fileSearch) { + Map result = new HashMap(); + try { + result.put("data", fileService.select(fileSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 동영상 미리보기 이미지 + */ + @RequestMapping (value="/file/movie/preview.mng", method=RequestMethod.GET) + public ResponseEntity moviePreview(HttpServletRequest request, FileItemSearch fileItemSearch, @RequestParam(value = "order", required = true) String order) throws Exception { + final HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.IMAGE_PNG); + + List fileItemList = fileItemService.selectList(fileItemSearch); + + String imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + if(fileItemList.size() > 0) { + FileItem fileItem = fileItemList.get(0); + imgPath = fileItem.getSavePath()+PropertiesUtil.getProperty("AppConf.filePath.preview")+fileItem.getSaveFileNm()+System.getProperty("file.separator")+order+".png"; + } + + File file = new File(imgPath); + if(!file.exists()) { //파일이 존재하지 않을 경우 + imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + } + InputStream in = new FileInputStream(imgPath); + + return new ResponseEntity(IOUtils.toByteArray(in), headers, HttpStatus.CREATED); + } + + @RequestMapping (value="/file/movie/play.mng") + public void showMovie(FileItemSearch fileItemSearch, HttpServletRequest request, HttpServletResponse response) throws Exception { + List fileItemList = fileItemService.selectList(fileItemSearch); + + if(fileItemList.size() > 0) { + ServletOutputStream out = null; + RandomAccessFile rf = null; + try { + FileItem fileItem = fileItemList.get(0); + String range = request.getHeader("Range"); + int i = range.indexOf("="); + int j = range.indexOf("-"); + + long start = Long.parseLong(range.substring(i + 1, j)); + long end = 0; + if (j < range.length() - 1) { + end = Long.parseLong(range.substring(j + 1)); + } + if (end == 0) { + end = start + 1024 * 1024 - 1; + } + + File file = new File(fileItem.getSavePath()+fileItem.getSaveFileNm()); + if (end > file.length() - 1) { + end = file.length() - 1; + } + + response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); + response.setContentType(fileItem.getMediaTp()); + response.setHeader("Accept-Ranges", "bytes"); + response.setHeader("Content-Range", "bytes " + start + "-" + end + "/" + file.length()); + response.setContentLength((int) (end - start + 1)); + + rf = new RandomAccessFile(file, "r"); + rf.seek(start); + byte[] buffer = new byte[1024]; + int num = 0; + out = response.getOutputStream(); + while (start < end && (num = rf.read(buffer)) != -1) { + out.write(buffer, 0, num); + out.flush(); + start += 1024; + } + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + } finally { + if(out != null) out.close(); + if(rf != null) rf.close(); + } + } + } + + + /** + * 파일삭제 + */ + @RequestMapping (value="/file/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, FileItem fileItem) { + Map result = new HashMap(); + try { + fileItemService.delete(fileItem); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + /** + * 파일다운로드 + */ + @RequestMapping (value="/file/download.json", method=RequestMethod.GET) + public void download(HttpServletResponse response, FileItemSearch fileItemSearch) throws Exception{ + FileItem fileItem = fileItemService.select(fileItemSearch); + + fileItemService.updateDwnCnt(fileItem.getItemId()); //다운로드 수 증가 + + byte fileByte[] = FileUtils.readFileToByteArray(new File(fileItem.getSavePath()+fileItem.getSaveFileNm())); + + response.setContentType("application/octet-stream"); + response.setContentLength(fileByte.length); + response.setHeader("Content-Disposition", "attachment; fileName=\"" + URLEncoder.encode(fileItem.getFileNm(),"UTF-8")+"\";"); + response.setHeader("Content-Transfer-Encoding", "binary"); + response.getOutputStream().write(fileByte); + + response.getOutputStream().flush(); + response.getOutputStream().close(); + } + + /** + * 이미지 보기 + */ + @RequestMapping (value="/file/image.mng") + public ResponseEntity imageView(HttpServletRequest request, FileItemSearch fileItemSearch, boolean thumnail) throws Exception { + final HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.IMAGE_PNG); + + List fileItemList = fileItemService.selectList(fileItemSearch); + + String imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + if(fileItemList.size() > 0) { + FileItem fileItem = fileItemList.get(0); + if(thumnail) { + imgPath = fileItem.getSavePath()+PropertiesUtil.getProperty("AppConf.filePath.thumb")+fileItem.getSaveFileNm()+PropertiesUtil.getProperty("AppConf.fileNm.thumb"); + }else { + imgPath = fileItem.getSavePath()+fileItem.getSaveFileNm(); + } + MediaType mediaType = new MediaType(fileItem.getMediaTp().split("/")[0], fileItem.getMediaTp().split("/")[1]); + headers.setContentType(mediaType); + } + + File file = new File(imgPath); + if(!file.exists()) { //파일이 존재하지 않을 경우 + imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + } + InputStream in = new FileInputStream(imgPath); + + return new ResponseEntity(IOUtils.toByteArray(in), headers, HttpStatus.CREATED); + } + + @RequestMapping("/ckeditorImageUpload") + public String ckeditorImageUpload(final HttpServletRequest request,Model model){ + + return ""; + } + + /** + * 썸네일 이미지 보기 + */ + @RequestMapping (value="/image/thumbnail.json", method=RequestMethod.GET) + public ResponseEntity imageThumbnail(HttpServletRequest request, FileItemSearch fileItemSearch) throws Exception { + final HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.IMAGE_PNG); + + List fileItemList = fileItemService.selectList(fileItemSearch); + + String imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + if(fileItemList.size() > 0) { + FileItem fileItem = fileItemList.get(0); + imgPath = fileItem.getSavePath()+PropertiesUtil.getProperty("AppConf.filePath.thumb")+fileItem.getSaveFileNm()+PropertiesUtil.getProperty("AppConf.fileNm.thumb"); + MediaType mediaType = new MediaType(fileItem.getMediaTp().split("/")[0], fileItem.getMediaTp().split("/")[1]); + headers.setContentType(mediaType); + } + + File file = new File(imgPath); + if(!file.exists()) { //파일이 존재하지 않을 경우 + imgPath = PathUtil.getImagesPath(request)+"/noImage.png"; + } + InputStream in = new FileInputStream(imgPath); + + return new ResponseEntity(IOUtils.toByteArray(in), headers, HttpStatus.CREATED); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/interceptor/Init.java b/src/main/java/kr/co/jinwoosi/clfd/framework/interceptor/Init.java new file mode 100644 index 0000000..7623f5d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/interceptor/Init.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.framework.interceptor; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.mvc.WebContentInterceptor; + + +public class Init extends WebContentInterceptor { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { + try { + + }catch(Exception e) { + e.printStackTrace(); + return false; + } + return true; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/listener/InitJsonListener.java b/src/main/java/kr/co/jinwoosi/clfd/framework/listener/InitJsonListener.java new file mode 100644 index 0000000..b686e71 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/listener/InitJsonListener.java @@ -0,0 +1,39 @@ +package kr.co.jinwoosi.clfd.framework.listener; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; + +public class InitJsonListener implements ServletContextListener { + private CdDtlService cdDtlService; + private SiteService siteService; + private BodService bodService; + private MenuService cmsMenuService; + + @Override + public void contextDestroyed(ServletContextEvent arg0) {} + + @Override + public void contextInitialized(ServletContextEvent sce) { + // cdDtlService = WebApplicationContextUtils.getRequiredWebApplicationContext(sce.getServletContext()).getBean(CdDtlService.class); + // cdDtlService.initJson(); + + siteService = WebApplicationContextUtils.getRequiredWebApplicationContext( + sce.getServletContext()).getBean(SiteService.class); + siteService.initJson(); + + bodService = WebApplicationContextUtils.getRequiredWebApplicationContext( + sce.getServletContext()).getBean(BodService.class); + bodService.initJson(); + + cmsMenuService = WebApplicationContextUtils.getRequiredWebApplicationContext( + sce.getServletContext()).getBean(MenuService.class); + cmsMenuService.initJson(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/mail/MailService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/mail/MailService.java new file mode 100644 index 0000000..dcb03a0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/mail/MailService.java @@ -0,0 +1,86 @@ +package kr.co.jinwoosi.clfd.framework.mail; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.mail.*; +import javax.mail.internet.AddressException; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.util.List; +import java.util.Properties; + +@Service +public class MailService { + + @Value("${email.username}") + private String emailUsername; + @Value("${email.password}") + private String emailPassword; + @Value("${email.auth.home.url}") + private String emailAuthHomeUrl; + + @Async("threadPoolTaskExecutor") + public void gmailSend(String email, String subject, String text) { + Properties properties = new Properties(); + properties.put("mail.smtp.host", "smtp.gmail.com"); + properties.put("mail.smtp.port", "465"); //ssl로 보안설정(처음부터 암호화하여 보냄) + properties.put("mail.smtp.auth", "true"); + properties.put("mail.smtp.ssl.enable", "true"); + properties.put("mail.smtp.ssl.trust", "smtp.gmail.com"); + + Session session = Session.getDefaultInstance(properties, new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(emailUsername, emailPassword); + } + }); + + try { + MimeMessage mimeMessage = new MimeMessage(session); + mimeMessage.setFrom(new InternetAddress(emailUsername)); + mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); + mimeMessage.setSubject(subject); + mimeMessage.setText(text); + Transport.send(mimeMessage); + } catch (AddressException e) { + e.printStackTrace(); + } catch (MessagingException e) { + e.printStackTrace(); + } + } + + public String getLoginMailText(String userLoginId, String authCode) { + StringBuffer sb = new StringBuffer(); + sb.append("해당 링크를 클릭하시면 회원가입이 완료됩니다.\n"); + sb.append(emailAuthHomeUrl).append("/clfd/join/auth.json?id=").append(userLoginId); + sb.append("&authCode=").append(authCode); + return sb.toString(); + } + + public String getFindIdText(List loginIdList) { + StringBuffer sb = new StringBuffer(); + sb.append("해당 이메일로 가입한 아이디 입니다.\n"); + loginIdList.forEach(s -> sb.append(s).append("\n")); + return sb.toString(); + } + + public String getFindPasswordText(String tempPassword) { + StringBuffer sb = new StringBuffer(); + sb.append("해당 아이디로 발급된 임시비밀번호 입니다.\n"); + sb.append(tempPassword + "\n"); + return sb.toString(); + } + + @Getter + @AllArgsConstructor + public enum EmailTitle { + JOIN_AUTH("[컬러푸드] 회원인증"), + FIND_ID("[컬러푸드] 아이디 찾기"), + FIND_PW("[컬러푸드] 비밀번호 찾기"); + private String title; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/mapper/MenuMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/mapper/MenuMapper.java new file mode 100644 index 0000000..380069a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/mapper/MenuMapper.java @@ -0,0 +1,19 @@ +package kr.co.jinwoosi.clfd.framework.menu.mapper; + +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; + +@Mapper (value="menuMapper") +public interface MenuMapper extends BaseMapper { + + void updateOrder(Menu menu); + + List selectRoleMenuList(MenuSearch menuSearch); + + int selectMaxMenuOrder(MenuSearch menuSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/mapper/MenuRoleMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/mapper/MenuRoleMapper.java new file mode 100644 index 0000000..bb9af0e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/mapper/MenuRoleMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.menu.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRole; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRoleSearch; + +@Mapper (value="menuRoleMapper") +public interface MenuRoleMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/Menu.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/Menu.java new file mode 100644 index 0000000..58413af --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/Menu.java @@ -0,0 +1,113 @@ +package kr.co.jinwoosi.clfd.framework.menu.model; + +import java.util.List; + +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import kr.co.jinwoosi.clfd.framework.pgm.model.Pgm; + +public class Menu extends BaseModel{ + + private Long menuId; + private String menuNm; + private Long upperMenuId; + private Long pgmId; + private String menuDesc; + private Integer menuOrd; + private String icon; + + private Menu upperMenu; + private List childList; + private Pgm pgm; + private String pgmPath; + + public List roleAuth; + + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + public String getMenuNm() { + return menuNm; + } + public void setMenuNm(String menuNm) { + this.menuNm = menuNm; + } + public Long getUpperMenuId() { + return upperMenuId; + } + public void setUpperMenuId(Long upperMenuId) { + this.upperMenuId = upperMenuId; + } + public Long getPgmId() { + return pgmId; + } + public void setPgmId(Long pgmId) { + this.pgmId = pgmId; + } + public String getMenuDesc() { + return menuDesc; + } + public void setMenuDesc(String menuDesc) { + this.menuDesc = menuDesc; + } + public Integer getMenuOrd() { + return menuOrd; + } + public void setMenuOrd(Integer menuOrd) { + this.menuOrd = menuOrd; + } + public String getIcon() { + return icon; + } + public void setIcon(String icon) { + this.icon = icon; + } + public Menu getUpperMenu() { + return upperMenu; + } + public void setUpperMenu(Menu upperMenu) { + this.upperMenu = upperMenu; + } + public List getChildList() { + return childList; + } + public void setChildList(List childList) { + this.childList = childList; + } + public List getRoleAuth() { + return roleAuth; + } + public void setRoleAuth(List roleAuth) { + this.roleAuth = roleAuth; + } + + public Pgm getPgm() { + return pgm; + } + public void setPgm(Pgm pgm) { + this.pgm = pgm; + pgmPath = _getPgmPath(pgm); + } + private String _getPgmPath(Pgm pgm) { + if(pgm == null) return ""; + return getUrlPath(pgm.getPgmUrl()); + } + public static String getUrlPath(String url) { + if(StrUtil.isEmpty(url)) return ""; + int idx = url.lastIndexOf("/"); + if(idx < 1) return ""; + return url.substring(0, idx+1); + } + public static String getUrlExt(String url) { + if(StrUtil.isEmpty(url)) return ""; + int idx = url.lastIndexOf("."); + if(idx < 1) return ""; + return url.substring(idx); + } + public String getPgmPath() { + return pgmPath; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuRole.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuRole.java new file mode 100644 index 0000000..a2b95a4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuRole.java @@ -0,0 +1,23 @@ +package kr.co.jinwoosi.clfd.framework.menu.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class MenuRole extends BaseModel{ + + private String roleAuth; + private Long menuId; + + public String getRoleAuth() { + return roleAuth; + } + public void setRoleAuth(String roleAuth) { + this.roleAuth = roleAuth; + } + public Long getMenuId() { + return menuId; + } + public void setMenuId(Long menuId) { + this.menuId = menuId; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuRoleSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuRoleSearch.java new file mode 100644 index 0000000..436177b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuRoleSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.framework.menu.model; + +public class MenuRoleSearch extends MenuRole{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuSearch.java new file mode 100644 index 0000000..22b05dd --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/model/MenuSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.framework.menu.model; + +public class MenuSearch extends Menu{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/MenuRoleService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/MenuRoleService.java new file mode 100644 index 0000000..012889a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/MenuRoleService.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.framework.menu.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRole; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRoleSearch; + +public interface MenuRoleService extends BaseService { + + /*List selectJson(); + + void initJson();*/ + +} + \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/MenuService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/MenuService.java new file mode 100644 index 0000000..62caa46 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/MenuService.java @@ -0,0 +1,26 @@ +package kr.co.jinwoosi.clfd.framework.menu.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuSearch; + +public interface MenuService extends BaseService { + + void updateOrder(Menu menu); + + List selectJson(); + + void initJson(); + + List selectRoleMenuList(MenuSearch menuSearch); + + List selectRoleMenuList(Long uid, boolean refresh); + + boolean checkUrlAuth(String url); + + void initRoleMenuList(); + + int selectMaxMenuOrder(MenuSearch menuSearch); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/impl/MenuRoleServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/impl/MenuRoleServiceImpl.java new file mode 100644 index 0000000..76a8a4c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/impl/MenuRoleServiceImpl.java @@ -0,0 +1,22 @@ +package kr.co.jinwoosi.clfd.framework.menu.service.impl; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.menu.mapper.MenuRoleMapper; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRole; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuRoleSearch; +import kr.co.jinwoosi.clfd.framework.menu.service.MenuRoleService; + +@Service(value="menuRoleService") +public class MenuRoleServiceImpl extends BaseServiceImpl implements MenuRoleService { + + @Override + @Resource (name="menuRoleMapper") + protected void setMapper (MenuRoleMapper mapper) { + super.setMapper (mapper); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/impl/MenuServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..51564d9 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/service/impl/MenuServiceImpl.java @@ -0,0 +1,236 @@ +package kr.co.jinwoosi.clfd.framework.menu.service.impl; + +import java.util.ArrayList; +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.util.ApplicationHelper; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.menu.mapper.MenuMapper; +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; +import kr.co.jinwoosi.clfd.framework.pgm.mapper.PgmMapper; +import kr.co.jinwoosi.clfd.framework.pgm.model.Pgm; +import kr.co.jinwoosi.clfd.framework.pgm.model.PgmSearch; +import kr.co.jinwoosi.clfd.framework.pgm.service.PgmService; +import kr.co.jinwoosi.clfd.framework.security.mapper.RoleMapper; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; + +@Service(value="menuService") +public class MenuServiceImpl extends BaseServiceImpl implements MenuService { + + private static List userMenuList = null; + + @Resource (name="pgmService") + private PgmService pgmService; + + @Autowired + private UserRoleService userRoleService; + + + @Override + @Resource (name="menuMapper") + protected void setMapper (MenuMapper mapper) { + super.setMapper (mapper); + } + + @Resource (name="pgmMapper") + private PgmMapper pgmMapper; + + @Resource (name="roleMapper") + private RoleMapper roleMapper; + + @Override + public Menu select(MenuSearch menuSearch) { + //List pgmList = pgmService.selectJson(); + PgmSearch pgmSearch = new PgmSearch(); + List pgmList = pgmService.selectList(pgmSearch); + + Menu menu = super.select(menuSearch); + if(menu.getUpperMenuId() != null) { + menuSearch = new MenuSearch(); + menuSearch.setMenuId(menu.getUpperMenuId()); + menu.setUpperMenu(super.select(menuSearch)); + } + for(Pgm pgm : pgmList) { + if(pgm.getPgmId().compareTo(menu.getPgmId()) == 0) { + menu.setPgm(pgm); + break; + } + } + + return menu; + } + + @Override + public List selectList(MenuSearch menuSearch) { + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + List menuList = super.selectList(menuSearch); + return setChildList(menuList); + } + + public List setChildList(List menuList) { + PgmSearch pgmSearchList = new PgmSearch(); + //List pgmList = pgmService.selectJson(); + List pgmList = pgmService.selectList(pgmSearchList); + List resultList = new ArrayList(); + MenuSearch menuSearch; + for(Menu menu : menuList) { + menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getMenuId()); + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + menu.setChildList(setChildList(mapper.selectList(menuSearch))); + + PgmSearch pgmSearch = new PgmSearch (); + pgmSearch.setPgmId (menu.getPgmId ()); + menu.setPgm (pgmMapper.select (pgmSearch)); + + if(menu.getUpperMenuId() != null) { + menuSearch = new MenuSearch(); + menuSearch.setMenuId(menu.getUpperMenuId()); + menu.setUpperMenu(super.select(menuSearch)); + } + + /*for(Pgm pgm : pgmList) { + if(pgm.getPgmId().compareTo(menu.getPgmId()) == 0) { + menu.setPgm(pgm); + break; + } + }*/ + + resultList.add(menu); + } + return resultList; + } + + + @Override + public void updateOrder(Menu menu) { + mapper.updateOrder(menu); + } + + @Override + public List selectJson() { + if(ApplicationHelper.getMenuList() == null) { + initJson(); + } + + return ApplicationHelper.getMenuList(); + } + + @Override + public void initJson() { + MenuSearch menuSearch = new MenuSearch(); + ApplicationHelper.setMenuList(selectList(menuSearch)); + } + + public List selectRoleMenuList(MenuSearch menuSearch){ + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + List menuList = mapper.selectRoleMenuList(menuSearch); + return setChildRoleMenuList(menuList, menuSearch.getRoleAuth()); + } + + public List setChildRoleMenuList(List menuList, List rlist) { + List resultList = new ArrayList(); + MenuSearch menuSearch; + for(Menu menu : menuList) { + menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getMenuId()); + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + menuSearch.setRoleAuth(rlist); + menu.setChildList(setChildRoleMenuList(mapper.selectRoleMenuList(menuSearch), rlist)); + + PgmSearch pgmSearch = new PgmSearch (); + pgmSearch.setPgmId (menu.getPgmId ()); + menu.setPgm (pgmMapper.select (pgmSearch)); + + if(menu.getUpperMenuId() != null) { + menuSearch = new MenuSearch(); + menuSearch.setMenuId(menu.getUpperMenuId()); + menu.setUpperMenu(super.select(menuSearch)); + } + + resultList.add(menu); + } + return resultList; + } + + public void initRoleMenuList() { + /*Role role = new Role(); + List roleList = roleMapper.selectList(role); + + Map> menuMap = new HashMap>(); + for(Role roleAuth : roleList){ + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setRoleAuth(roleAuth.getRoleAuth()); + List result = this.selectRoleMenuList(menuSearch); + menuMap.put(roleAuth.getRoleAuth(), result); + } + ApplicationHelper.setMenuMap(menuMap);*/ + } + + public List selectRoleMenuList(Long uid, boolean refresh) { + if(uid>0 && refresh==false && userMenuList!=null) { + return userMenuList; + } + + UserRole userRole = new UserRole(); + userRole.setUserId(uid); + List userRoleList = userRoleService.selectList(userRole); + if((userRoleList.size()>0) && (userMenuList == null || refresh)) { + List rlist = new ArrayList(); + for(UserRole it : userRoleList) { + rlist.add(it.getRoleAuth()); + } + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setSort("MENU_ORD"); + menuSearch.setSortOrd("ASC"); + menuSearch.setRoleAuth(rlist); + userMenuList = setChildRoleMenuList(mapper.selectRoleMenuList(menuSearch), rlist); + } + + return userMenuList; + } + + + + @Override + public boolean checkUrlAuth(String url) { + if(StrUtil.isEmpty(url)) return false; + if(userMenuList == null || userMenuList.size()<1) return false; + + String upath = Menu.getUrlPath(url); + if(StrUtil.isEmpty(upath)) return false; + + for(Menu menu : userMenuList) { + if(_chkMenuAuth(menu, upath)) return true; + } + + return false; + } + + private boolean _chkMenuAuth(Menu menu, String upath) { + if(upath.equals(menu.getPgmPath())) return true; + for(Menu mn : menu.getChildList()) { + if(_chkMenuAuth(mn, upath)) return true; + } + return false; + } + + @Override + public int selectMaxMenuOrder(MenuSearch menuSearch) { + return mapper.selectMaxMenuOrder(menuSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/tag/MenuInfoTag.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/tag/MenuInfoTag.java new file mode 100644 index 0000000..a139222 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/tag/MenuInfoTag.java @@ -0,0 +1,82 @@ +package kr.co.jinwoosi.clfd.framework.menu.tag; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import javax.servlet.jsp.JspWriter; + +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import kr.co.jinwoosi.clfd.framework.base.tag.BaseTag; +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; + +public class MenuInfoTag extends BaseTag{ + + private MenuService menuService; + private Long currentMenuId = null; + + @Override + protected int doProcessTag() throws Exception { + menuService = getRequestContext().getWebApplicationContext().getBean(MenuService.class); + + JspWriter out = pageContext.getOut (); + StringBuffer sb = new StringBuffer(); + currentMenuId = null; + + HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest(); + HttpSession session = request.getSession(); + //현재 접속한 메뉴번호를 구한다. + if(request.getParameter("currentMenuId") != null) { + currentMenuId = Long.parseLong(this.pageContext.getRequest().getParameter("currentMenuId")); + session.setAttribute("currentMenuId", currentMenuId); + }else { + currentMenuId = (Long) session.getAttribute("currentMenuId"); + } + + if(currentMenuId != null) { + List menuList = menuService.selectJson(); + Menu currentMenu = null; + for(Menu menu : menuList) { + currentMenu = getMenu(menu); + if(currentMenu != null) break; + } + if(currentMenu != null) { + sb.append("

"+currentMenu.getMenuNm()+""); + if(!StrUtil.isEmpty(currentMenu.getMenuDesc())){ + sb.append(""+currentMenu.getMenuDesc()+""); + } + sb.append("

"); + sb.append(""); + } + } + + out.print(sb.toString()); + + return SKIP_BODY; + } + + public Menu getMenu(Menu menu) { + Menu result = null; + if(menu.getMenuId().compareTo(currentMenuId) == 0) { + return menu; + } + + for(Menu childMenu : menu.getChildList()) { + result = getMenu(childMenu); + if(result != null) return result; + } + return result; + } + + public String makeUpperCourse(Menu menu) { + String result = ""; + if(menu.getUpperMenuId() != null) result += makeUpperCourse(menu.getUpperMenu()); + result += "
  • "; + if(menu.getUpperMenuId() == null) result += "home "; + result += menu.getMenuNm()+"
  • "; + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/tag/SideMenuTag.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/tag/SideMenuTag.java new file mode 100644 index 0000000..18b2f1a --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/tag/SideMenuTag.java @@ -0,0 +1,157 @@ +package kr.co.jinwoosi.clfd.framework.menu.tag; + +import java.util.List; + +import javax.servlet.jsp.JspWriter; + +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.util.SessionHelper; +import org.springframework.beans.factory.annotation.Autowired; + +import kr.co.jinwoosi.clfd.framework.base.tag.BaseTag; +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; + +public class SideMenuTag extends BaseTag{ + + /*private UserRoleService userRoleService; + private MenuService menuService; + private MenuRoleService menuRoleService; + private StringBuffer sb; + private Long menuId;*/ + + @Autowired + private MenuService menuService; + + private Long menuId; + + @Override + protected int doProcessTag() throws Exception { + //userRoleService = getRequestContext().getWebApplicationContext().getBean(UserRoleService.class); + //menuService = getRequestContext().getWebApplicationContext().getBean(MenuService.class); + //menuRoleService = getRequestContext().getWebApplicationContext().getBean(MenuRoleService.class); + + //현재 접속한 메뉴번호를 구한다. + if(this.pageContext.getRequest().getParameter("currentMenuId") != null) + menuId = Long.parseLong(this.pageContext.getRequest().getParameter("currentMenuId")); + + JspWriter out = pageContext.getOut (); + StringBuffer sb = new StringBuffer(5000); + + /*if(!"anonymousUser".equals(EgovUserDetailsHelper.getAuthenticatedUser())) { + User user = (User)EgovUserDetailsHelper.getAuthenticatedUser(); + + List roleAuthList = new ArrayList(); + List userRoleList = userRoleService.selectJson(); + for(UserRole userRole : userRoleList) { + if(userRole.getUserId().compareTo(user.getUserId()) == 0) + roleAuthList.add(userRole.getRoleAuth()); + } + List menuIdList = new ArrayList(); + List menuRoleList = menuRoleService.selectJson(); + + for(MenuRole menuRole : menuRoleList) { + if(roleAuthList.contains(menuRole.getRoleAuth())) + menuIdList.add(menuRole.getMenuId()); + } + + List menuList = menuService.selectJson(); + for(Menu menu : menuList) { + makeChildMenu(menu, menuIdList); + } + }*/ + + if(SessionHelper.getUser() != null) { + User user = SessionHelper.getUser(); + if(user != null && user.getUserId() > 0) { + List menuList = menuService.selectRoleMenuList(user.getUserId(),false); + for(Menu menu : menuList) { + makeChildMenu(menu, sb); + } + } + + } + + out.print(sb.toString()); + return SKIP_BODY; + } + + + private void makeChildMenu(Menu menu, StringBuffer sb) { + if (menu == null) { + return; + } + if (menu.getChildList () == null) { + return; + } + + String root = this.getRequestContext().getContextPath(); + if(root == null) root=""; + + if(menu.getChildList().size() > 0) { + sb.append("
  • "); + sb.append(""); + sb.append(""+menu.getIcon()+" "+menu.getMenuNm()+" "); + sb.append(""); + sb.append("
      "); + for(Menu childMenu : menu.getChildList()) { + makeChildMenu(childMenu, sb); + } + sb.append("
    "); + sb.append("
  • "); + }else { + sb.append("
  • "); + sb.append(""); + sb.append(""+menu.getIcon()+" "+menu.getMenuNm()+""); + sb.append(""); + sb.append("
  • "); + } + } + /* + private void makeChildMenu(Menu menu, List menuIdList) { + if(menuIdList.contains(menu.getMenuId())) { + if(menu.getChildList().size() > 0) { + sb.append("
  • "); + sb.append(""); + sb.append(" "+menu.getMenuNm()+" "); + sb.append(""); + sb.append("
      "); + for(Menu childMenu : menu.getChildList()) { + makeChildMenu(childMenu, menuIdList); + } + sb.append("
    "); + sb.append("
  • "); + }else { + sb.append("
  • "); + sb.append(""); + sb.append(" "+menu.getMenuNm()+""); + sb.append(""); + sb.append("
  • "); + } + } + }*/ + + /** + * 하위메뉴중에 선택한 메뉴가 있는지 찾는다. + * @return true = 하위 메뉴중에 선택한 메뉴가 존재, false = 하위메뉴에 선택한 메뉴가 미존재 + */ + private boolean searchChildUrlEquals(Menu menu) { + boolean result = false; + if(menu.getMenuId().compareTo(menuId) == 0) { + return true; + } + for(Menu childMenu : menu.getChildList()) { + result = searchChildUrlEquals(childMenu); + if(result) return true; + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/menu/web/MenuController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/web/MenuController.java new file mode 100644 index 0000000..5ffa6c7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/menu/web/MenuController.java @@ -0,0 +1,248 @@ +package kr.co.jinwoosi.clfd.framework.menu.web; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; +import kr.co.jinwoosi.clfd.framework.menu.model.MenuSearch; +import kr.co.jinwoosi.clfd.framework.pgm.model.PgmSearch; +import kr.co.jinwoosi.clfd.framework.pgm.service.PgmService; + +@Controller +public class MenuController extends BaseController { + + @Resource (name="pgmService") + private PgmService pgmService; + + @Resource (name="menuService") + private MenuService menuService; + + @RequestMapping (value="/system/menu/list.mng", method=RequestMethod.GET) + public String list(Model model) { + //model.addAttribute("pgmList", pgmService.selectJson()); + PgmSearch pgmSearch = new PgmSearch(); + model.addAttribute("pgmList", pgmService.selectList(pgmSearch)); + return "system/menu/list"; + } + + @RequestMapping (value="/system/menu/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, MenuSearch menuSearch) { + Map result = new HashMap(); + try { + //result.put("data", menuService.selectJson()); + result.put("data", menuService.selectList(menuSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/menu/jstreeList.json") + @ResponseBody + public Map jstreeList(HttpServletRequest request, String roleAuth) { + Map result = new HashMap(); + try { + List> data = new ArrayList>(); + //List menuList = menuService.selectJson(); + MenuSearch menuSearch = new MenuSearch(); + List menuList = menuService.selectList(menuSearch); + + for(Menu menu : menuList) { + data = setChildList("#", menu, data); + } + + result.put ("data", data); + result.put ("result", "success"); + }catch (Exception e) { + e.printStackTrace(); + result.put ("result", "fail"); + result.put ("message", e.getMessage()); + } + return result; + } + public List> setChildList(String parentId, Menu menu, List> data) { + Map map = new HashMap(); + map.put("parent", parentId); + if(menu.getChildList() != null) { + for(Menu childMenu : menu.getChildList()) { + data = setChildList(String.valueOf(menu.getMenuId()), childMenu, data); + } + } + map.put("id", menu.getMenuId()); + map.put("text", menu.getMenuNm()); + Map status = new HashMap(); + status.put("opened", true); + map.put("state", status); + + data.add(map); + return data; + } + + @RequestMapping (value="/system/menu/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, MenuSearch menuSearch) { + Map result = new HashMap(); + try { + result.put("data", menuService.select(menuSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/menu/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Menu menu) { + Map result = new HashMap(); + try { + //메뉴순서를 마지막 순서로 지정 + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getUpperMenuId()); + menu.setMenuOrd(menuService.selectMaxMenuOrder(menuSearch)); + + menu.setRegId(getUserId()); + menuService.insert(menu); + + //menuService.initJson(); + menuService.initRoleMenuList(); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/menu/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Menu menu) { + Map result = new HashMap(); + try { + menu.setUpdId(getUserId()); + menuService.update(menu); + + //menuService.initJson(); + menuService.initRoleMenuList(); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/menu/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Menu menu) { + Map result = new HashMap(); + try { + MenuSearch menuSearch = new MenuSearch(); + menuSearch.setUpperMenuId(menu.getMenuId()); + int count = menuService.count(menuSearch); + if(count > 0) { + result.put("message", "하위 메뉴가 존재하지 않을 경우에만 삭제 가능합니다."); + result.put("result", "alreay"); + }else { + menu.setDelId(getUserId()); + menuService.delete(menu); + + //menuService.initJson(); + menuService.initRoleMenuList(); + result.put("result", "success"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/menu/changeOrder.mng", method=RequestMethod.GET) + public String changeOrder(Model model) { + return "system/menu/changeOrder"; + } + + @RequestMapping (value={"/system/menu/changeOrder.json"}) + @ResponseBody + public Map changeOrder(HttpServletRequest request) { + Map result = new HashMap(); + try { + Map orderMap = request.getParameterMap(); + + Menu menu; + String parent = null; + Map depthMap = new HashMap(); + for(String key : orderMap.keySet()) { + String value = orderMap.get(key)[0]; + parent = value; + + int cnt = 0; + for(int i=0; i(); + depthMap.put(cnt/2, value); + break; + default : + for(int i=0; i menuList(HttpServletRequest request, String roleAuth) { + Map result = new HashMap(); + try { + MenuRoleSearch menuRoleSearch = new MenuRoleSearch(); + menuRoleSearch.setRoleAuth(roleAuth); + + result.put ("data", menuRoleService.selectList(menuRoleSearch)); + result.put ("result", "success"); + }catch (Exception e) { + e.printStackTrace(); + result.put ("result", "fail"); + result.put ("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/menuRole/update.json") + @ResponseBody + public Map update(HttpServletRequest request) throws Exception{ + Map result = new HashMap(); + try { + String roleAuth = request.getParameter("roleAuth"); + MenuRole menuRole = new MenuRole(); + menuRole.setRoleAuth(roleAuth); + menuRoleService.delete(menuRole); + + String[] checkIdList = request.getParameterValues("checkIdList[]"); + if(checkIdList != null){ + for(String checkId : checkIdList) { + //최상위 메뉴만 있고 자식메뉴는 없을 때 처리 방안 + if(!"#".equals(checkId)){ + menuRole.setMenuId(Long.parseLong(checkId)); + menuRoleService.insert(menuRole); + } + } + } + + + //menuRoleService.initJson(); + menuService.initRoleMenuList(); + result.put ("result", "success"); + }catch (Exception e) { + e.printStackTrace(); + result.put ("result", "fail"); + result.put ("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/mapper/PgmMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/mapper/PgmMapper.java new file mode 100644 index 0000000..cae0d86 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/mapper/PgmMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.pgm.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.pgm.model.PgmSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.pgm.model.Pgm; + +@Mapper (value="pgmMapper") +public interface PgmMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/model/Pgm.java b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/model/Pgm.java new file mode 100644 index 0000000..8e03d06 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/model/Pgm.java @@ -0,0 +1,53 @@ +package kr.co.jinwoosi.clfd.framework.pgm.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Pgm extends BaseModel { + + private Long pgmId; + private String pgmNm; + private String pgmDesc; + private String pgmUrl; + private Boolean useSt; + + public Long getPgmId() { + return pgmId; + } + + public void setPgmId(Long pgmId) { + this.pgmId = pgmId; + } + + public String getPgmNm() { + return pgmNm; + } + + public void setPgmNm(String pgmNm) { + this.pgmNm = pgmNm; + } + + public String getPgmDesc() { + return pgmDesc; + } + + public void setPgmDesc(String pgmDesc) { + this.pgmDesc = pgmDesc; + } + + public String getPgmUrl() { + return pgmUrl; + } + + public void setPgmUrl(String pgmUrl) { + this.pgmUrl = pgmUrl; + } + + public Boolean getUseSt() { + return useSt; + } + + public void setUseSt(Boolean useSt) { + this.useSt = useSt; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/model/PgmSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/model/PgmSearch.java new file mode 100644 index 0000000..d5078ef --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/model/PgmSearch.java @@ -0,0 +1,24 @@ +package kr.co.jinwoosi.clfd.framework.pgm.model; + +public class PgmSearch extends Pgm{ + + private String pgmNmLike; + private String pgmUrlLike; + + public String getPgmNmLike() { + return pgmNmLike; + } + + public void setPgmNmLike(String pgmNmLike) { + this.pgmNmLike = pgmNmLike; + } + + public String getPgmUrlLike() { + return pgmUrlLike; + } + + public void setPgmUrlLike(String pgmUrlLike) { + this.pgmUrlLike = pgmUrlLike; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/service/PgmService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/service/PgmService.java new file mode 100644 index 0000000..9b86e75 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/service/PgmService.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.framework.pgm.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.pgm.model.Pgm; +import kr.co.jinwoosi.clfd.framework.pgm.model.PgmSearch; + +public interface PgmService extends BaseService { + + /*List selectJson(); + + void initJson();*/ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/service/impl/PgmServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/service/impl/PgmServiceImpl.java new file mode 100644 index 0000000..9b40846 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/service/impl/PgmServiceImpl.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.framework.pgm.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.pgm.mapper.PgmMapper; +import kr.co.jinwoosi.clfd.framework.pgm.model.Pgm; +import kr.co.jinwoosi.clfd.framework.pgm.model.PgmSearch; +import kr.co.jinwoosi.clfd.framework.pgm.service.PgmService; + +@Service(value="pgmService") +public class PgmServiceImpl extends BaseServiceImpl implements PgmService { + + @Override + @Resource (name="pgmMapper") + protected void setMapper (PgmMapper mapper) { + super.setMapper (mapper); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/web/PgmController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/web/PgmController.java new file mode 100644 index 0000000..6e71926 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/pgm/web/PgmController.java @@ -0,0 +1,135 @@ +package kr.co.jinwoosi.clfd.framework.pgm.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; +import kr.co.jinwoosi.clfd.framework.pgm.model.PgmSearch; +import kr.co.jinwoosi.clfd.framework.pgm.service.PgmService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.pgm.model.Pgm; + +@Controller +public class PgmController extends BaseController { + + @Resource (name="menuService") + private MenuService menuService; + + @Resource (name="pgmService") + private PgmService pgmService; + + @RequestMapping (value="/system/pgm/list.mng", method=RequestMethod.GET) + public String list(Model model) { + return "system/pgm/list"; + } + + @RequestMapping (value="/system/pgm/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, PgmSearch pgmSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + pgmSearch.setSort(sort); + pgmSearch.setSortOrd(sortOder); + pgmSearch.setPagingYn(true); + + int totalCount = pgmService.count(pgmSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", pgmService.selectList(pgmSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/pgm/view.json", method=RequestMethod.POST) + @ResponseBody + public Map detail(HttpServletRequest request, PgmSearch pgmSearch) { + Map result = new HashMap(); + try { + result.put("data", pgmService.select(pgmSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/pgm/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Pgm pgm) { + Map result = new HashMap(); + try { + pgm.setRegId(getUserId()); + pgmService.insert(pgm); + + //pgmService.initJson(); + //menuService.initJson(); + menuService.initRoleMenuList();; + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/pgm/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Pgm pgm) { + Map result = new HashMap(); + try { + pgm.setUpdId(getUserId()); + pgmService.update(pgm); + + //pgmService.initJson(); + //menuService.initJson(); + menuService.initRoleMenuList(); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/pgm/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Pgm pgm) { + Map result = new HashMap(); + try { + pgm.setDelId(getUserId()); + pgmService.delete(pgm); + + //pgmService.initJson(); + //menuService.initJson(); + menuService.initRoleMenuList(); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SessionFilter.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SessionFilter.java new file mode 100644 index 0000000..a9dfcee --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SessionFilter.java @@ -0,0 +1,102 @@ +package kr.co.jinwoosi.clfd.framework.security.filter; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Enumeration; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import kr.co.jinwoosi.clfd.framework.security.model.User; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SessionFilter implements Filter +{ + private static final Logger log = LoggerFactory.getLogger(SessionFilter.class); + private ArrayList urlList; + + public void destroy(){ + } + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + if (log.isDebugEnabled()) { + log.debug(" SessionFilter 시작 합니다. "); + } + HttpServletRequest request = (HttpServletRequest) req; + HttpServletResponse response = (HttpServletResponse) res; + + HttpSession hs = request.getSession(); + Enumeration enums = request.getAttributeNames(); + + User user = (User)hs.getAttribute("user"); + +// if (log.isDebugEnabled()) { +// log.info("@@@@@세션의 속성 정보 출력@@@@@"); +// while (enums.hasMoreElements()) { +// String attributeName = enums.nextElement(); +// log.info(attributeName + " : " + hs.getAttribute(attributeName)); +// } +// if(user != null){ +// log.info("user : " + user); +// log.info("UserLoginId : " + user.getUserLoginId()); +// log.info("RoleAuth : " + user.getRoleAuth()); +// } +// } + if (user == null) { + if (log.isDebugEnabled()) { log.debug(" 인증값이 없습니다. "); } + response.sendRedirect(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/login/loginForm.mng"); // 이동할 페이지.... + }else{ + chain.doFilter(req, res); + + } + + if (log.isDebugEnabled()) { log.debug(" SessionFilter 종료 합니다. "); } + } + @Override + public void init(FilterConfig arg0) throws ServletException { + + } + + + +// public void doFilter(ServletRequest req, ServletResponse res,FilterChain chain) throws IOException, ServletException{ +// HttpServletRequest request = (HttpServletRequest) req; +// HttpServletResponse response = (HttpServletResponse) res; +// String url = request.getServletPath(); +// +// if ( urlList.contains(url) ){ +// chain.doFilter(req, res); +// }else{ +// HttpSession session = request.getSession(false); +// +// if ( session == null || session.getAttribute("userId") == null ) +// { +// //System.out.println("## Filter Session Null - " + url); +// response.sendRedirect("/index.jsp"); +// } +// else +// { +// chain.doFilter(req, res); +// } +// } +// } +// +// public void init(FilterConfig config) throws ServletException{ +// String urls = config.getInitParameter("avoidUrls"); +// StringTokenizer token = new StringTokenizer(urls, ","); +// +// urlList = new ArrayList(); +// +// while ( token.hasMoreTokens() ){ +// urlList.add(token.nextToken()); +// } +// } +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SpringSecurityAjaxFilter.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SpringSecurityAjaxFilter.java new file mode 100644 index 0000000..3e704ea --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SpringSecurityAjaxFilter.java @@ -0,0 +1,68 @@ +package kr.co.jinwoosi.clfd.framework.security.filter; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.core.AuthenticationException; + +public class SpringSecurityAjaxFilter implements Filter { + private FilterConfig filterConfig; + + private static final Logger logger = LoggerFactory.getLogger(SpringSecurityAjaxFilter.class); + private String ajaxHeader; + public SpringSecurityAjaxFilter() { + } + + public void init(FilterConfig filterConfig) throws ServletException { + this.filterConfig = filterConfig; + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + HttpServletResponse res = (HttpServletResponse) response; + if (isAjaxRequest(req)) { + try { + chain.doFilter(req, res); + } catch (AccessDeniedException e) { + res.sendError(HttpServletResponse.SC_FORBIDDEN); + } catch (AuthenticationException e) { + res.sendError(HttpServletResponse.SC_UNAUTHORIZED); + } + }else{ + chain.doFilter(req, res); + } + + } + + private boolean isAjaxRequest(HttpServletRequest req) { + + return req.getHeader(ajaxHeader) != null && req.getHeader(ajaxHeader).equals(Boolean.TRUE.toString()); + } + + public void destroy() { + } + + + public String getAjaxHeader() { + return ajaxHeader; + } + + public void setAjaxHeader(String ajaxHeader) { + this.ajaxHeader = ajaxHeader; + } + + +} + diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SpringSecurityLoginFilter.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SpringSecurityLoginFilter.java new file mode 100644 index 0000000..fd471d2 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/filter/SpringSecurityLoginFilter.java @@ -0,0 +1,142 @@ +package kr.co.jinwoosi.clfd.framework.security.filter; + +import java.io.IOException; +import java.util.Map; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.web.context.support.WebApplicationContextUtils; + +import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper; +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; + +@WebFilter("/LoginFilter") +public class SpringSecurityLoginFilter implements Filter { + private FilterConfig filterConfig; + + private static final Logger logger = LoggerFactory.getLogger(SpringSecurityLoginFilter.class); + + public SpringSecurityLoginFilter() { + } + + public void init(FilterConfig filterConfig) throws ServletException { + this.filterConfig = filterConfig; + } + + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + // 로그인 URL + logger.debug ("------------------------- starting SpringSecurityLoginFilter-----------------------------"); + + String loginURL = filterConfig.getInitParameter("loginURL"); + loginURL = loginURL.replaceAll("\r", "").replaceAll("\n", ""); + String loginProcessURL = filterConfig.getInitParameter("loginProcessURL"); + loginProcessURL = loginProcessURL.replaceAll("\r", "").replaceAll("\n", ""); + + + HttpServletRequest httpRequest = (HttpServletRequest)request; + HttpServletResponse httpResponse = (HttpServletResponse)response; + HttpSession session = httpRequest.getSession(); + String requestURL = httpRequest.getRequestURI(); + + if (EgovUserDetailsHelper.getAuthenticatedUser() == null || requestURL.contains(loginProcessURL)) { + logger.debug ("------------------------- processing login SpringSecurityLoginFilter-----------------------------"); + + try { + ApplicationContext act = WebApplicationContextUtils.getRequiredWebApplicationContext(filterConfig.getServletContext()); + + UserService userService = (UserService) act.getBean ("userService"); + User user = new User (); + user.setUserLoginId (request.getParameter ("userLoginId")); + user.setUserPwd (request.getParameter ("userPwd")); + user = userService.login (user); + + UsernamePasswordAuthenticationFilter springSecurity = null; + + @SuppressWarnings("rawtypes") + Map beans = act.getBeansOfType(UsernamePasswordAuthenticationFilter.class); + if (beans.size() > 0) { + springSecurity = (UsernamePasswordAuthenticationFilter)beans.values().toArray()[0]; + } else { + logger.debug ("------------------------- fail to get authenticationProcssingFilter SpringSecurityLoginFilter-----------------------------"); + throw new IllegalStateException("No AuthenticationProcessingFilter"); + } + + if(user == null) { //로그인 실패 + springSecurity.doFilter (new RequestWrapperForSecurity(httpRequest, null, null), response, chain); + return; + }else { + session.setAttribute ("user", user); + session.setAttribute("isLogin", true); + UserRoleService userRoleService = (UserRoleService) act.getBean ("userRoleService"); + UserRole userRole = new UserRole(); + userRole.setUserId(user.getUserId()); + userRole = userRoleService.select(userRole); + session.setAttribute ("userRole" , userRole.getRoleAuth()); + + MenuService menuService = (MenuService) act.getBean ("menuService"); + menuService.selectRoleMenuList(user.getUserId(),true); + + springSecurity.doFilter (new RequestWrapperForSecurity(httpRequest, user.getUserLoginId(), user.getUserPwd ()), response, chain); + } + } catch (Exception ex) { + RequestDispatcher dispatcher = httpRequest.getRequestDispatcher(loginURL); + dispatcher.forward(httpRequest, httpResponse); + } + } + + chain.doFilter (request, response); + } + + public void destroy() { + } + +} + +class RequestWrapperForSecurity extends HttpServletRequestWrapper { + private String username = null; + private String password = null; + + public RequestWrapperForSecurity(HttpServletRequest request, String username, String password) { + super(request); + + this.username = username; + this.password = password; + } + + @Override + public String getRequestURI() { + return ((HttpServletRequest) super.getRequest()).getContextPath() + "/j_spring_security_check"; + } + + @Override + public String getParameter(String name) { + if (name.equals("j_username")) { + return username; + } + + if (name.equals("j_password")) { + return password; + } + + return super.getParameter(name); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/handler/LoginFailureHandler.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/handler/LoginFailureHandler.java new file mode 100644 index 0000000..d1c915c --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/handler/LoginFailureHandler.java @@ -0,0 +1,56 @@ +package kr.co.jinwoosi.clfd.framework.security.handler; + +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.authentication.AuthenticationFailureHandler; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + + +@Component("loginFailureHadler") +public class LoginFailureHandler implements AuthenticationFailureHandler { + + @Resource(name = "userService") + private UserService userService; + + @Override + public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException arg2) + throws IOException, ServletException { + + UserSearch userSearch = new UserSearch(); + userSearch.setUserLoginId(request.getParameter("userLoginId")); + User user = userService.select(userSearch); + + HttpServletRequest httpRequest = (HttpServletRequest) request; + HttpSession session = httpRequest.getSession(); + String URL = (String) session.getAttribute("loginRequestURL"); + + int error = -1; // 기본 로그인 실패 원인은 아이디/비밀번호 오류 + if (user == null) { + error = -1; + } else { + if (user.getFailCnt() > 5) { // 로그인 실패 횟수가 5회가 이상인 경우 + error = -2; + } + if (user.getAuthStCd() == "0") { + error = -3; + } + } + if (("login").equals(URL)) { + response.sendRedirect("/login.do?error=" + error); + return; + } else { + response.sendRedirect("/login/loginForm.mng?path=" + httpRequest.getParameter("path") + "&error=" + error); + return; + } + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/handler/LoginSucessHandler.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/handler/LoginSucessHandler.java new file mode 100644 index 0000000..30f9d79 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/handler/LoginSucessHandler.java @@ -0,0 +1,54 @@ +package kr.co.jinwoosi.clfd.framework.security.handler; + +import java.io.IOException; + +import javax.annotation.Resource; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import kr.co.jinwoosi.clfd.framework.security.service.LoginLogService; +import kr.co.jinwoosi.clfd.framework.util.HttpUtil; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; +import org.springframework.stereotype.Component; + +import kr.co.jinwoosi.clfd.framework.security.model.LoginLog; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; + +@Component("loginSuccessHadler") +public class LoginSucessHandler implements AuthenticationSuccessHandler { + + @Resource(name = "userService") + private UserService userService; + + @Resource(name = "loginLogService") + private LoginLogService loginLogService; + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { + + UserSearch userSearch = new UserSearch(); + userSearch.setUserLoginId(request.getParameter("userLoginId")); + User user = userService.select(userSearch); + + LoginLog loginLog = new LoginLog(); + //loginLog.setUserId(user.getUserId()); + loginLog.getUser().setUserId(user.getUserId()); + loginLog.setLoginIp(HttpUtil.getClientIp(request)); + loginLogService.insert(loginLog); + + HttpSession session = request.getSession(); + + session.setAttribute("loginLogId", loginLog.getLoginLogId()); + session.setAttribute("failCnt", 0); + + // 오라클은 주석 처리해야 실행 updateInitUserLoginFailCnt 확인 + user.setFailCnt(0); + userService.updateInitUserLoginFailCnt(user); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/LoginLogMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/LoginLogMapper.java new file mode 100644 index 0000000..94bf5b7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/LoginLogMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.security.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLog; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLogSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="loginLogMapper") +public interface LoginLogMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/RoleMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/RoleMapper.java new file mode 100644 index 0000000..3d64010 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/RoleMapper.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.framework.security.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.security.model.Role; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="roleMapper") +public interface RoleMapper extends BaseMapper{ + + Integer existCount(Role role); + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/ScurRscMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/ScurRscMapper.java new file mode 100644 index 0000000..2fab0c4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/ScurRscMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.framework.security.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRsc; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="scurRscMapper") +public interface ScurRscMapper extends BaseMapper{ + +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/ScurRscRoleMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/ScurRscRoleMapper.java new file mode 100644 index 0000000..344d15f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/ScurRscRoleMapper.java @@ -0,0 +1,10 @@ +package kr.co.jinwoosi.clfd.framework.security.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRscRole; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; + +@Mapper (value="scurRscRoleMapper") +public interface ScurRscRoleMapper extends BaseMapper{ + +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/UserMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/UserMapper.java new file mode 100644 index 0000000..6638a55 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/UserMapper.java @@ -0,0 +1,25 @@ +package kr.co.jinwoosi.clfd.framework.security.mapper; + +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; + +@Mapper (value="userMapper") +public interface UserMapper extends BaseMapper { + + User login (User user); + int checkIdDuplicate(UserSearch userSearch); + + void updateUserLoginFail(User user); + void updateInitUserLoginFailCnt(User user); + int userPwdCheck(UserSearch userSearch); + void updatePwd(User user); + int userTotalOutCount(); + int thisWeekInUserCount(); + int thisWeekOutUser(); + List thisWeekInUser(); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/UserRoleMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/UserRoleMapper.java new file mode 100644 index 0000000..a787b31 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapper/UserRoleMapper.java @@ -0,0 +1,17 @@ +package kr.co.jinwoosi.clfd.framework.security.mapper; + +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; + +@Mapper (value="userRoleMapper") +public interface UserRoleMapper extends BaseMapper{ + + Integer existCount(UserRole userRole); + + List selectRoleList(UserRole userRole); + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapping/UserDetailsMapping.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapping/UserDetailsMapping.java new file mode 100644 index 0000000..9e0c0f8 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/mapping/UserDetailsMapping.java @@ -0,0 +1,52 @@ +package kr.co.jinwoosi.clfd.framework.security.mapping; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import javax.sql.DataSource; + +import kr.co.jinwoosi.clfd.framework.security.model.User; +import egovframework.rte.fdl.security.userdetails.EgovUserDetails; +import egovframework.rte.fdl.security.userdetails.jdbc.EgovUsersByUsernameMapping; + +public class UserDetailsMapping extends EgovUsersByUsernameMapping { + + /** + * EgovUserDetailsMapping 생성자 + * @param ds + * @param usersByUsernameQuery + */ + public UserDetailsMapping(DataSource ds, String usersByUsernameQuery) { + super(ds, usersByUsernameQuery); + } + + /* + * (non-Javadoc) + * @see + * egovframework.rte.fdl.security.userdetails.jdbc + * .EgovUsersByUsernameMapping + * #mapRow(java.sql.ResultSet, int) + */ + /** + * EgovUsersByUsernameMapping 클래스를 상속받아 + * jdbc-user-service 에서 지정된 users-by-username-query + * 의 쿼리문을 조회하여 ResultSet에 매핑된다. + */ + @Override + protected EgovUserDetails mapRow(ResultSet rs, int rownum) throws SQLException { + Long userId = rs.getLong ("user_id"); + String userLoginId = rs.getString("user_login_id"); + boolean enabled = true; + String password = rs.getString("user_pwd"); + String username = rs.getString("user_nm"); + + User user = new User (); + user.setUserId (userId); + user.setUserLoginId (userLoginId); + user.setUserNm (username); + + return new EgovUserDetails(userLoginId, password, enabled, user); + } + +} + diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/LoginLog.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/LoginLog.java new file mode 100644 index 0000000..d62f0bb --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/LoginLog.java @@ -0,0 +1,65 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import java.util.Date; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +@SuppressWarnings ("serial") +public class LoginLog extends BaseModel { + + private Long userId; + private Long loginLogId; + private String loginIp; + private Date loginDt; + private Date logoutDt; + + private UserSearch user; + + + public LoginLog(){ + user = new UserSearch(); + } + + public UserSearch getUser () { + return user; + } + + public void setUser (UserSearch user) { + this.user = user; + } + + public Long getLoginLogId() { + return loginLogId; + } + public void setLoginLogId(Long loginLogId) { + this.loginLogId = loginLogId; + } + public String getLoginIp() { + return loginIp; + } + public void setLoginIp(String loginIp) { + this.loginIp = loginIp; + } + public Date getLoginDt() { + return loginDt; + } + public void setLoginDt(Date loginDt) { + this.loginDt = loginDt; + } + public Date getLogoutDt() { + return logoutDt; + } + public void setLogoutDt(Date logoutDt) { + this.logoutDt = logoutDt; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/LoginLogSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/LoginLogSearch.java new file mode 100644 index 0000000..f575ab7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/LoginLogSearch.java @@ -0,0 +1,29 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +public class LoginLogSearch extends LoginLog { + + private String userLoginIdLike; + private String userNmLike; + private String loginIpLike; + + public String getUserLoginIdLike() { + return userLoginIdLike; + } + public void setUserLoginIdLike(String userLoginIdLike) { + this.userLoginIdLike = userLoginIdLike; + } + public String getUserNmLike() { + return userNmLike; + } + public void setUserNmLike(String userNmLike) { + this.userNmLike = userNmLike; + } + public String getLoginIpLike() { + return loginIpLike; + } + public void setLoginIpLike(String loginIpLike) { + this.loginIpLike = loginIpLike; + } +} + + diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/Role.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/Role.java new file mode 100644 index 0000000..5520d49 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/Role.java @@ -0,0 +1,33 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Role extends BaseModel{ + private String roleAuth; + private String roleNm; + private String roleDesc; + + + public String getRoleAuth() { + return roleAuth; + } + public void setRoleAuth(String roleAuth) { + this.roleAuth = roleAuth; + } + + public String getRoleNm() { + return roleNm; + } + public void setRoleNm(String roleNm) { + this.roleNm = roleNm; + } + public String getRoleDesc() { + return roleDesc; + } + public void setRoleDesc(String roleDesc) { + this.roleDesc = roleDesc; + } + + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/ScurRsc.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/ScurRsc.java new file mode 100644 index 0000000..7060b1f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/ScurRsc.java @@ -0,0 +1,42 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class ScurRsc extends BaseModel{ + private String rscId; + private String rscNm; + private String rscTp; + private String rscPatn; + private String rscDesc; + + public String getRscId() { + return rscId; + } + public void setRscId(String rscId) { + this.rscId = rscId; + } + public String getRscNm() { + return rscNm; + } + public void setRscNm(String rscNm) { + this.rscNm = rscNm; + } + public String getRscTp() { + return rscTp; + } + public void setRscTp(String rscTp) { + this.rscTp = rscTp; + } + public String getRscPatn() { + return rscPatn; + } + public void setRscPatn(String rscPatn) { + this.rscPatn = rscPatn; + } + public String getRscDesc() { + return rscDesc; + } + public void setRscDesc(String rscDesc) { + this.rscDesc = rscDesc; + } +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/ScurRscRole.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/ScurRscRole.java new file mode 100644 index 0000000..7e78d81 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/ScurRscRole.java @@ -0,0 +1,49 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class ScurRscRole extends BaseModel{ + private String rscId; + private String rscName; + private String rscTp; + private String rscPatn; + private String rscDesc; + private String roleAuth; + + public String getRscId() { + return rscId; + } + public void setRscId(String rscId) { + this.rscId = rscId; + } + public String getRscName() { + return rscName; + } + public void setRscName(String rscName) { + this.rscName = rscName; + } + public String getRscTp() { + return rscTp; + } + public void setRscTp(String rscTp) { + this.rscTp = rscTp; + } + public String getRscPatn() { + return rscPatn; + } + public void setRscPatn(String rscPatn) { + this.rscPatn = rscPatn; + } + public String getRscDesc() { + return rscDesc; + } + public void setRscDesc(String rscDesc) { + this.rscDesc = rscDesc; + } + public String getRoleAuth() { + return roleAuth; + } + public void setRoleAuth(String roleAuth) { + this.roleAuth = roleAuth; + } +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/User.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/User.java new file mode 100644 index 0000000..1330d52 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/User.java @@ -0,0 +1,49 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import java.util.Date; + +@ToString +@Getter +@Setter +@NoArgsConstructor +public class User extends BaseModel { + private Long userId; + private String userLoginId; + private String userNm; + @JsonIgnore + private String userPwd; + private String gender; + private String birth; + private String phone; + private String email; + + private int failCnt; + private String userStCd; + private String userStCdNm; + private String userTyCd; + private Long regId; + private Date regDt; + private Long updId; + private Date updDt; + private Long delId; + private Date delDt; + private String recSt; + + private String userDi; + private String userOutRsn; + private String authKey; + private String authStCd; + + private String useSt; + private String smsAuthKey; + + private String roleAuth; + private String roleNm; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/UserRole.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/UserRole.java new file mode 100644 index 0000000..2de09e3 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/UserRole.java @@ -0,0 +1,16 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserRole extends BaseModel{ + + private Long userId; + private String roleAuth; + private String roleNm; + private String roleDesc; + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/UserSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/UserSearch.java new file mode 100644 index 0000000..06dcc94 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/model/UserSearch.java @@ -0,0 +1,31 @@ +package kr.co.jinwoosi.clfd.framework.security.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@AllArgsConstructor +@NoArgsConstructor +public class UserSearch extends User { + + private String userLoginIdLike; + private String userNmLike; + private Boolean findIdByPhoneFlag; + private Boolean findPwByPhoneAndIdFlag; + + public UserSearch(Long userId) { + super.setUserId(userId); + } + + public UserSearch(Long userId, String password) { + super.setUserId(userId); + super.setUserPwd(password); + } + + public UserSearch(String userLoginId) { + super.setUserLoginId(userLoginId); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/LoginLogService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/LoginLogService.java new file mode 100644 index 0000000..dfa0afb --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/LoginLogService.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.security.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLog; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLogSearch; + +public interface LoginLogService extends BaseService { + + public void logout(Long loginLogId); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/RoleService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/RoleService.java new file mode 100644 index 0000000..c8a3406 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/RoleService.java @@ -0,0 +1,8 @@ +package kr.co.jinwoosi.clfd.framework.security.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.Role; + +public interface RoleService extends BaseService { + Integer existCount (Role role); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/ScurRscRoleService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/ScurRscRoleService.java new file mode 100644 index 0000000..5f8e53e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/ScurRscRoleService.java @@ -0,0 +1,8 @@ +package kr.co.jinwoosi.clfd.framework.security.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRscRole; + +public interface ScurRscRoleService extends BaseService{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/ScurRscService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/ScurRscService.java new file mode 100644 index 0000000..dbe7e79 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/ScurRscService.java @@ -0,0 +1,8 @@ +package kr.co.jinwoosi.clfd.framework.security.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRsc; + +public interface ScurRscService extends BaseService{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/UserRoleService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/UserRoleService.java new file mode 100644 index 0000000..d5c74be --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/UserRoleService.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.framework.security.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; + +public interface UserRoleService extends BaseService { + Integer existCount (UserRole userRole); + + List selectRoleList(UserRole userRole); + + void insert(UserRole userRole); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/UserService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/UserService.java new file mode 100644 index 0000000..fc564a7 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/UserService.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.framework.security.service; + +import java.util.List; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; + +public interface UserService extends BaseService { + User login (User user); + void findPw(UserSearch userSearch); + int checkIdDuplicate(UserSearch userSearch); + void updateUserLoginFail(User user); + void updateInitUserLoginFailCnt(User user); + int userPwdCheck(UserSearch userSearch); + void updatePwd(User user); + int userTotalOutCount(); + int thisWeekInUserCount(); + int thisWeekOutUser(); + List thisWeekInUser(); +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/LoginLogServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/LoginLogServiceImpl.java new file mode 100644 index 0000000..48885bc --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/LoginLogServiceImpl.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.framework.security.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.mapper.LoginLogMapper; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLog; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLogSearch; +import kr.co.jinwoosi.clfd.framework.security.service.LoginLogService; + +@Service(value="loginLogService") +public class LoginLogServiceImpl extends BaseServiceImpl implements LoginLogService { + + @Override + @Resource (name="loginLogMapper") + protected void setMapper (LoginLogMapper mapper) { + super.setMapper (mapper); + } + + public void logout(Long loginLogId) { + LoginLog loginLogVO = new LoginLog(); + loginLogVO.setLoginLogId(loginLogId); + update(loginLogVO); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/RoleServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..5156340 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/RoleServiceImpl.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.framework.security.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.mapper.RoleMapper; +import kr.co.jinwoosi.clfd.framework.security.model.Role; +import kr.co.jinwoosi.clfd.framework.security.service.RoleService; + +@Service(value="roleService") +public class RoleServiceImpl extends BaseServiceImpl implements RoleService { + + @Override + @Resource(name = "roleMapper") + protected void setMapper(RoleMapper mapper) { + super.setMapper(mapper); + } + + @Override + public Integer existCount(Role role) { + return mapper.existCount(role); + } + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/ScurRscRoleServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/ScurRscRoleServiceImpl.java new file mode 100644 index 0000000..81acea9 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/ScurRscRoleServiceImpl.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.framework.security.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.mapper.ScurRscRoleMapper; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRscRole; +import kr.co.jinwoosi.clfd.framework.security.service.ScurRscRoleService; + +@Service(value="scurRscRoleService") +public class ScurRscRoleServiceImpl extends BaseServiceImpl implements ScurRscRoleService{ + + @Override + @Resource (name="scurRscRoleMapper") + protected void setMapper (ScurRscRoleMapper mapper) { + super.setMapper(mapper); + } + +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/ScurRscServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/ScurRscServiceImpl.java new file mode 100644 index 0000000..c9b4380 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/ScurRscServiceImpl.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.framework.security.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.mapper.ScurRscMapper; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRsc; +import kr.co.jinwoosi.clfd.framework.security.service.ScurRscService; + +@Service(value="scurRscService") +public class ScurRscServiceImpl extends BaseServiceImpl implements ScurRscService{ + + @Override + @Resource (name="scurRscMapper") + protected void setMapper (ScurRscMapper mapper) { + super.setMapper(mapper); + } + +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/UserRoleServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/UserRoleServiceImpl.java new file mode 100644 index 0000000..b486b20 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,38 @@ +package kr.co.jinwoosi.clfd.framework.security.service.impl; + +import java.util.List; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.security.mapper.UserRoleMapper; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; + +@Service(value="userRoleService") +public class UserRoleServiceImpl extends BaseServiceImpl implements UserRoleService { + + @Override + @Resource(name = "userRoleMapper") + protected void setMapper(UserRoleMapper mapper) { + super.setMapper(mapper); + } + + @Override + public Integer existCount(UserRole userRole) { + return mapper.existCount(userRole); + } + + @Override + public List selectRoleList(UserRole userRole) { + return mapper.selectRoleList(userRole); + } + + @Override + public void insert(UserRole userRole) { + super.delete(userRole); + super.insert(userRole); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/UserServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..bd38819 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/service/impl/UserServiceImpl.java @@ -0,0 +1,133 @@ +package kr.co.jinwoosi.clfd.framework.security.service.impl; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.framework.security.mapper.UserMapper; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service(value="userService") +public class UserServiceImpl extends BaseServiceImpl implements UserService { + + @Override + @Resource (name="userMapper") + protected void setMapper (UserMapper mapper) { + super.setMapper (mapper); + } + + @Override + public User login (User user) { + if (StringUtils.isEmpty (user.getUserLoginId ()) || StringUtils.isEmpty (user.getUserPwd ())) { + return null; + } + User temp = mapper.login (user); + + if (temp == null || StringUtils.isEmpty (temp.getUserPwd ())) { + return null; + } + + try { + if (temp.getAuthStCd().equals("0")) { + return null; + } + if (!temp.getUserPwd ().equals (StrUtil.encryptSha512 (user.getUserPwd (), user.getUserLoginId ()))) { + temp.setFailCnt (temp.getFailCnt () + 1); + mapper.updateUserLoginFail (temp); + return null; + } else if (temp.getFailCnt () > 5){ + return null; + } + } catch (Exception ex) { + ex.printStackTrace (); + return null; + } + return temp; + } + + @Override + public void findPw(UserSearch userSearch) { + + User user = super.select(userSearch); + + String pwd = StrUtil.tempPwd(10); + + user.setUserPwd(pwd); + updatePwd(user); + + try{ + String title = "임시비밀번호"; +/* EmailUtil emailUtil = new EmailUtil(); + emailUtil.RealSendMail(UserSearch.getUserEmail(), title ,pwd); +*/ }catch (Exception e){ + e.printStackTrace(); + } + + } + + + @Override + public int checkIdDuplicate(UserSearch userSearch) { + return mapper.checkIdDuplicate(userSearch); + } + + @Override + public void updateUserLoginFail(User user) { + mapper.updateUserLoginFail(user); + } + + @Override + public void updateInitUserLoginFailCnt(User user) { + mapper.updateInitUserLoginFailCnt(user); + } + + @Override + public int userPwdCheck(UserSearch userSearch) { + return mapper.userPwdCheck(userSearch); + } + + @Override + public void insert(User user) { + try { + user.setUserPwd(StrUtil.encryptSha512 (user.getUserPwd (), user.getUserLoginId ())); + super.insert(user); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void updatePwd(User user) { + try { + user.setUserPwd(StrUtil.encryptSha512 (user.getUserPwd (), user.getUserLoginId ())); + mapper.updatePwd(user); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public int userTotalOutCount() { + return mapper.userTotalOutCount(); + } + + @Override + public int thisWeekInUserCount() { + return mapper.thisWeekInUserCount(); + } + + @Override + public int thisWeekOutUser() { + return mapper.thisWeekOutUser(); + } + + @Override + public List thisWeekInUser() { + return mapper.thisWeekInUser(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/LoginLogController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/LoginLogController.java new file mode 100644 index 0000000..b2858d0 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/LoginLogController.java @@ -0,0 +1,54 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.security.model.LoginLogSearch; +import kr.co.jinwoosi.clfd.framework.security.service.LoginLogService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + + +@Controller +public class LoginLogController extends BaseController { + + @Resource (name="loginLogService") + private LoginLogService loginLogService; + + @RequestMapping (value="/system/scur/loginLogList.mng", method=RequestMethod.GET) + public String list() { + return "system/scur/loginLogList"; + } + + @RequestMapping (value="/system/scur/loginLogList.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, LoginLogSearch loginLogSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + loginLogSearch.setSort(sort); + loginLogSearch.setSortOrd(sortOder); + loginLogSearch.setPagingYn(true); + + int totalCount = loginLogService.count(loginLogSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", loginLogService.selectList(loginLogSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/RoleController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/RoleController.java new file mode 100644 index 0000000..a2da953 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/RoleController.java @@ -0,0 +1,122 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.security.model.Role; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRscRole; +import kr.co.jinwoosi.clfd.framework.security.service.RoleService; +import kr.co.jinwoosi.clfd.framework.security.service.ScurRscRoleService; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class RoleController extends BaseController { + + @Resource(name="roleService") + private RoleService roleService; + + @Resource (name="scurRscRoleService") + private ScurRscRoleService scurRscRoleService; + + @RequestMapping("/system/role/list.mng") + public String site(Model model, Role role){ + model.addAttribute("roleList", roleService.selectList(role)); + return "system/scur/roleList"; + } + + @RequestMapping(value = "/system/role/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, Role role) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOrd = request.getParameter("order[0][dir]"); + role.setSort(sort); + role.setSortOrd(sortOrd); + role.setPagingYn(true); + + int totalCount = roleService.count(role); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", roleService.selectList(role)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/role/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, Role role){ + Map result = new HashMap(); + try { + if(roleService.existCount(role) > 0){ + result.put("result", "duplicate"); + result.put("message", "이미 등록된 권한입니다. 다시 등록하여 주십시오."); + }else{ + role.setRegId(getUserId()); + roleService.insert(role); + result.put("result", "success"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/role/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, Role role){ + Map result = new HashMap(); + try { + ScurRscRole scurRscRole = new ScurRscRole(); + scurRscRole.setRoleAuth(role.getRoleAuth()); + int count = scurRscRoleService.count(scurRscRole); + if(count > 0) { + result.put("result", "duplicate"); + result.put("message", "사용중인 자원아이디 있습니다. 권한 롤 등록 여부를 확인하세요.("+count+")"); + } else { + roleService.delete(role); + result.put("result", "success"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + + return result; + } + @RequestMapping(value="/system/role/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, Role role){ + Map result = new HashMap(); + try { + role.setUpdId(getUserId()); + roleService.update(role); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/ScurRscController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/ScurRscController.java new file mode 100644 index 0000000..aa7c8f2 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/ScurRscController.java @@ -0,0 +1,123 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.security.model.ScurRsc; +import kr.co.jinwoosi.clfd.framework.security.model.ScurRscRole; +import kr.co.jinwoosi.clfd.framework.security.service.ScurRscRoleService; +import kr.co.jinwoosi.clfd.framework.security.service.ScurRscService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class ScurRscController extends BaseController { + + @Resource (name="scurRscService") + private ScurRscService scurRscService; + + @Resource (name="scurRscRoleService") + private ScurRscRoleService scurRscRoleService; + + @RequestMapping (value="/system/scurRsc/list.mng", method=RequestMethod.GET) + public String list() { + return "system/scur/scurRscList"; + } + + @RequestMapping(value="/system/scurRsc/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, ScurRsc scurRsc){ + Map result = new HashMap(); + try{ + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]" ); + String sortOder = request.getParameter("order[0][dir]"); + scurRsc.setSort(sort); + scurRsc.setSortOrd(sortOder); + scurRsc.setPagingYn(true); + + int totalCount = scurRscService.count(scurRsc); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", scurRscService.selectList(scurRsc)); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/scurRsc/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, ScurRsc scurRsc) { + Map result = new HashMap(); + try{ + int count = scurRscService.count(scurRsc); + if(count > 0) { + result.put("result", "duplicate"); + result.put("message", "이미 등록된 자원아이디 입니다. 다시 등록하여 주십시오."); + } else { + scurRsc.setRscId(request.getParameter("rscId")); + scurRsc.setRscNm(request.getParameter("rscNm")); + scurRsc.setRscTp(request.getParameter("rscTp")); + scurRsc.setRscPatn(request.getParameter("rscPatn")); + scurRsc.setRegId(getUserId()); + scurRscService.insert(scurRsc); + result.put("result", "success"); + } + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/scurRsc/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, ScurRsc scurRsc) { + Map result = new HashMap(); + try{ + scurRsc.setUpdId(getUserId()); + scurRscService.update(scurRsc); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/scurRsc/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, ScurRsc scurRsc) { + Map result = new HashMap(); + try { + ScurRscRole scurRscRole = new ScurRscRole(); + scurRscRole.setRscId(scurRsc.getRscId()); + int count = scurRscRoleService.count(scurRscRole); + if(count > 0) { + result.put("result", "duplicate"); + result.put("message", "사용중인 자원아이디 입니다. 롤 관리를 확인하세요.("+count+")"); + } else { + scurRscService.delete(scurRsc); + result.put("result", "success"); + } + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/ScurRscRoleController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/ScurRscRoleController.java new file mode 100644 index 0000000..62584f4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/ScurRscRoleController.java @@ -0,0 +1,80 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.security.model.ScurRscRole; +import kr.co.jinwoosi.clfd.framework.security.service.ScurRscRoleService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class ScurRscRoleController extends BaseController { + + @Resource (name="scurRscRoleService") + private ScurRscRoleService scurRscRoleService; + + @RequestMapping(value="/system/scurRscRole/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, ScurRscRole scurRscRole){ + Map result = new HashMap(); + try{ + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]" ); + String sortOder = request.getParameter("order[0][dir]"); + scurRscRole.setSort(sort); + scurRscRole.setSortOrd(sortOder); + scurRscRole.setPagingYn(true); + + int totalCount = scurRscRoleService.count(scurRscRole); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", scurRscRoleService.selectList(scurRscRole)); + + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/scurRscRole/insert.json", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, ScurRscRole scurRscRole) { + Map result = new HashMap(); + try { + scurRscRole.setRegId(getUserId()); + scurRscRoleService.insert(scurRscRole); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/scurRscRole/delete.json", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, ScurRscRole scurRscRole) { + Map result = new HashMap(); + try { + scurRscRoleService.delete(scurRscRole); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/SessonCheckController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/SessonCheckController.java new file mode 100644 index 0000000..e5c33f6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/SessonCheckController.java @@ -0,0 +1,43 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +public class SessonCheckController extends BaseController{ + + @Resource (name="userService") + private UserService userService; + + @RequestMapping (value="/system/login/sessionCheck.mng", method=RequestMethod.POST) + @ResponseBody + public Map sessionCheck(HttpServletRequest request){ + Map result = new HashMap(); + try{ + HttpSession session = request.getSession(); + User user = (User) session.getAttribute("user"); + + if(user == null){ + result.put("result","sessionOut"); + }else{ + result.put("result","sessionIn"); + } + + }catch (Exception e){ + + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/UserController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/UserController.java new file mode 100644 index 0000000..48be428 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/UserController.java @@ -0,0 +1,295 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.security.model.LoginLog; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.LoginLogService; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class UserController extends BaseController { + @Resource(name = "userService") + private UserService userService; + + @Resource(name = "loginLogService") + private LoginLogService loginLogService; + + @RequestMapping(value = "/system/user/list.mng", method = RequestMethod.GET) + public String list() { + return "system/user/list"; + } + + @RequestMapping(value = "/system/user/list.json", method = RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, UserSearch userSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + userSearch.setSort(sort); + userSearch.setSortOrd(sortOder); + userSearch.setPagingYn(true); + + int totalCount = userService.count(userSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", userService.selectList(userSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/login/loginForm.mng") + public String loginForm(HttpServletRequest request, Model model) throws URISyntaxException { + String path = request.getParameter("path"); + if (path != null) { + model.addAttribute("path", path); + } else if(request.getHeader("referer") != null){ + if (!request.getHeader("referer").contains("/clfd/user")) { + path = Paths.get(new URI(request.getHeader("referer")).getPath()).toString(); + model.addAttribute("path", path.replace("\\", "/")); + } + } + return "clfd/login"; + } + + @RequestMapping(value = "/login/login.mng", method = RequestMethod.POST) + public String systemLogin(HttpServletRequest request) { + String path = request.getParameter("path"); + String userRole = (String) request.getSession().getAttribute("userRole"); + + if (!userRole.equals("ROLE_USER")) { + return "redirect:/system/main.mng"; + } else if (!path.equals("") && !path.equals("null") && path != null) { + return "redirect:" + request.getParameter("path"); + } + return "redirect:/clfd/main.do"; + } + + @RequestMapping(value = "/logout.mng") + public String logoutPage(HttpServletRequest request, HttpServletResponse response) { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null) { + HttpSession session = request.getSession(); + LoginLog loginLog = new LoginLog(); + loginLog.setLoginLogId((Long) session.getAttribute("loginLogId")); + loginLogService.update(loginLog); + new SecurityContextLogoutHandler().logout(request, response, auth); + } + /** + * 2021-02-17 홍석진 + * 로그아웃 후 메인으로 리다이렉트 되도록 변경 + */ + return "redirect:/"; + } + + @RequestMapping(value = "/system/user/insert.json", method = RequestMethod.POST) + @ResponseBody + public Map insert(User user) { + Map result = new HashMap(); + try { + user.setRegId(getUserId()); + userService.insert(user); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/user/regist.json", method = RequestMethod.POST) + @ResponseBody + public Map regist(User user) { + Map result = new HashMap(); + try { + user.setUpdId(getUserId()); + userService.update(user); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/user/duplicate.json", method = RequestMethod.POST) + @ResponseBody + public Map checkIdDuplicate(UserSearch userSearch) { + Map result = new HashMap(); + if (userService.checkIdDuplicate(userSearch) > 0) { + result.put("result", "exist"); + result.put("message", "사용 중입니다."); + } else { + result.put("result", "nonExist"); + result.put("message", "사용 가능합니다."); + } + return result; + } + + @RequestMapping(value = "/system/user/delete.json", method = RequestMethod.POST) + @ResponseBody + public Map delete(User user) { + Map result = new HashMap(); + try { + user.setDelId(getUserId()); + userService.delete(user); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/user/initFailCnt.json", method = RequestMethod.POST) + @ResponseBody + public Map initFailCntUpdate(User user) { + Map result = new HashMap(); + try { + userService.updateInitUserLoginFailCnt(user); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value = "/system/user/mypage.mng", method = RequestMethod.GET) + public String mypage(HttpServletRequest request, Model model, UserSearch userSearch) { + HttpSession session = request.getSession(); + User user = (User) session.getAttribute("user"); + userSearch.setUserId(user.getUserId()); + model.addAttribute("Selectuser", userService.select(userSearch)); + return "system/user/mypage"; + } + + /*@RequestMapping (value="/system/user/password/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request,UserSearch userSearch) { + Map result = new HashMap(); + try { + User temp = userService.select(userSearch); + if(!temp.getUserPwd().equals (StrUtil.encryptSha512 (request.getParameter("nowUserPwd"), userSearch.getUserLoginId ()))){ + result.put("result", "exist"); + result.put("message", "현재 비밀번호가 틀립니다."); + } else { + userService.updatePwd(userSearch); + result.put("result", "success"); + } + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + }*/ + + /*@RequestMapping (value="/system/user/userOut.json", method=RequestMethod.POST) + @ResponseBody + public Map userOut(User user) { + Map result = new HashMap(); + try { + user.setUpdId(getUserId()); + user.setUserStCd("9"); + userService.update(user); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + }*/ + + /*@RequestMapping (value="/public/user/findId.json", method=RequestMethod.POST) + @ResponseBody + public Map findId(UserSearch userSearch) { + Map result = new HashMap(); + try { + result.put("data", userService.select(userSearch)); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + }*/ + + /*@RequestMapping (value="/public/user/findPw.json", method=RequestMethod.POST) + @ResponseBody + public Map findPw(UserSearch userSearch) { + Map result = new HashMap(); + try { + userService.findPw(userSearch); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + }*/ + + @RequestMapping(value = "/system/user/detailUser.json", method = RequestMethod.POST) + @ResponseBody + public Map detail(UserSearch userSearch) { + Map result = new HashMap(); + try { + result.put("data", userService.select(userSearch)); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + } + return result; + } + + /*@RequestMapping (value="/system/user/userStats.json", method=RequestMethod.POST) + @ResponseBody + public Map userStats(UserSearch userSearch) { + Map result = new HashMap(); + try { + int totalCount = userService.count(userSearch); + int userTotalOutCount = userService.userTotalOutCount(); + int thisWeekInUser = userService.thisWeekInUserCount(); + int thisWeekOutUser = userService.thisWeekOutUser(); + + result.put("totalCount", totalCount); + result.put("userTotalOutCount", userTotalOutCount); + result.put("thisWeekInUser", thisWeekInUser); + result.put("thisWeekOutUser", thisWeekOutUser); + result.put("data", userService.thisWeekInUser()); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + }*/ +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/UserRoleController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/UserRoleController.java new file mode 100644 index 0000000..087ebcf --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/security/web/UserRoleController.java @@ -0,0 +1,107 @@ +package kr.co.jinwoosi.clfd.framework.security.web; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.security.model.UserRole; +import kr.co.jinwoosi.clfd.framework.security.service.UserRoleService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +@Controller +public class UserRoleController extends BaseController { + + @Resource(name="userRoleService") + private UserRoleService userRoleService; + + @RequestMapping(value = "/system/userRole/list.json", method=RequestMethod.POST) + @ResponseBody + public Map list(HttpServletRequest request, UserRole userRole) { + Map result = new HashMap(); + try{ + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]" ); + String sortOder = request.getParameter("order[0][dir]"); + userRole.setSort(sort); + userRole.setSortOrd(sortOder); + userRole.setPagingYn(true); + + int totalCount = userRoleService.count(userRole); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + + result.put("data", userRoleService.selectRoleList(userRole)); + result.put("result", "success"); + } catch (Exception e){ + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/userRole/insert.mng", method=RequestMethod.POST) + @ResponseBody + public Map insert(HttpServletRequest request, UserRole userRole){ + Map result = new HashMap(); + try { + userRoleService.insert(userRole); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/userRole/update.mng", method=RequestMethod.POST) + @ResponseBody + public Map update(HttpServletRequest request, UserRole userRole){ + Map result = new HashMap(); + try { + userRoleService.update(userRole); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping(value="/system/userRole/update.json", method=RequestMethod.POST) + @ResponseBody + public Map update(UserRole userRole){ + Map result = new HashMap(); + try { + userRoleService.update(userRole); + result.put("result", "success"); + } catch (RuntimeException e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", "error"); + } + return result; + } + + @RequestMapping(value="/system/userRole/delete.mng", method=RequestMethod.POST) + @ResponseBody + public Map delete(HttpServletRequest request, UserRole userRole){ + Map result = new HashMap(); + try { + userRoleService.delete(userRole); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/ApplicationHelper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/ApplicationHelper.java new file mode 100644 index 0000000..e14a452 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/ApplicationHelper.java @@ -0,0 +1,68 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import java.util.List; +import java.util.Map; + +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; + +public class ApplicationHelper { + + private static List siteList; + private static Map> cmsMenuMap; + private static List bodList; + private static Map> cdDtlMap; + private static Map> menuMap; + private static List menuList; + + public static List getBodList() { + return bodList; + } + + public static void setBodList(List bodList) { + ApplicationHelper.bodList = bodList; + } + + public static Map> getCdDtlMap() { + return cdDtlMap; + } + + public static void setCdDtlMap(Map> cdDtlMap) { + ApplicationHelper.cdDtlMap = cdDtlMap; + } + + public static List getMenuList() { + return menuList; + } + + public static void setMenuList(List menuList) { + ApplicationHelper.menuList = menuList; + } + + public static List getSiteList() { + return siteList; + } + + public static void setSiteList(List siteList) { + ApplicationHelper.siteList = siteList; + } + + public static Map> getMenuMap() { + return menuMap; + } + + public static void setMenuMap(Map> menuMap) { + ApplicationHelper.menuMap = menuMap; + } + + public static Map> getCmsMenuMap() { + return cmsMenuMap; + } + + public static void setCmsMenuMap(Map> cmsMenuMap) { + ApplicationHelper.cmsMenuMap = cmsMenuMap; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/CdUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/CdUtil.java new file mode 100644 index 0000000..6ebf6b6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/CdUtil.java @@ -0,0 +1,45 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import kr.co.jinwoosi.clfd.framework.cd.model.CdDtl; +import kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService; + +@Component +public class CdUtil { + static private CdDtlService cdDtlSvc = null; + + @Autowired + public CdUtil(CdDtlService cdDtlSvc) { + CdUtil.cdDtlSvc = cdDtlSvc; + } + + public static CdDtl cdDtl(String cdId, String cdDtlId) { + if(StrUtil.isEmpty(cdId) || StrUtil.isEmpty(cdDtlId)) return null; + CdDtl cds = new CdDtl(); + cds.setCdId(cdId); + cds.setCdDtlId(cdDtlId); + return cdDtlSvc.select(cds); + } + + public static String cdDtlName(String cdId, String cdDtlId) { + if(StrUtil.isEmpty(cdId) || StrUtil.isEmpty(cdDtlId)) return null; + CdDtl cds = new CdDtl(); + cds.setCdId(cdId); + cds.setCdDtlId(cdDtlId); + return cdDtlSvc.select(cds).getCdDtlNm(); + } + + public static List cdDtlList(String cdId) { + if(StrUtil.isEmpty(cdId)) return null; + CdDtl cds = new CdDtl(); + cds.setPagingYn(false); + cds.setSort("CD_DTL_ORD"); + cds.setSortOrd("asc"); + cds.setCdId(cdId); + return cdDtlSvc.selectList(cds); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/Constants.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/Constants.java new file mode 100644 index 0000000..b5ba62d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/Constants.java @@ -0,0 +1,55 @@ +package kr.co.jinwoosi.clfd.framework.util; + +public class Constants { + + /** + * 게시판 권한 > 골지글 그룹 + */ + public static final String BOD_ROLE_TYPE_NOTI = "noti"; + /** + * 게시판 권한 > 쓰기그룹 + */ + public static final String BOD_ROLE_TYPE_WRITE = "write"; + /** + * 게시판 권한 > 뎃글그룹 + */ + public static final String BOD_ROLE_TYPE_CMNT = "cmnt"; + /** + * 게시판 권한 > 비밀글 그룹 + */ + public static final String BOD_ROLE_TYPE_SCRT = "scrt"; + /** + * 게시판 권한 > 답변 그룹 + */ + public static final String BOD_ROLE_TYPE_ANSW = "answ"; + + /** + * 미디어타입 > mp4 + */ + public static final String MEDIA_TYPE_MP4 = "video/mp4"; + + /** + * 메뉴타입 > 프로그램 + */ + public static final String MENU_TYPE_PGM = "pgm"; + /** + * 메뉴타입 > 게시판 + */ + public static final String MENU_TYPE_BOARD = "board"; + /** + * 메뉴타입 > 콘텐츠 + */ + public static final String MENU_TYPE_CONT = "cont"; + /** + * 메뉴타입 > 링크 + */ + public static final String MENU_TYPE_LINK = "link"; + /** + * 메뉴타입 > 준비중 + */ + public static final String MENU_TYPE_READY = "ready"; + /** + * PDF 타입 + */ + public static final String MEDIA_TYPE_PDF = "application/pdf"; +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/DateUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/DateUtil.java new file mode 100644 index 0000000..2431929 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/DateUtil.java @@ -0,0 +1,37 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class DateUtil { + + /** + * 현재 날짜를 yyyy-MM-dd 형식으로 리턴 + * + * @return + */ + public static String getCurrentDay() { + return getCurrentDay("yyyy-MM-dd"); + } + + /** + * 현재 날짜를 패턴형식으로 리턴 + * + * @param pattern + * @return + */ + public static String getCurrentDay(String pattern) { + SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(pattern, Locale.KOREA); + Date currentTime = new Date(); + String mTime = mSimpleDateFormat.format(currentTime); + return mTime; + } + + public static Date stringToDate(String date, String pattern) throws ParseException { + SimpleDateFormat transFormat = new SimpleDateFormat(pattern); + return transFormat.parse(date); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/FileUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/FileUtil.java new file mode 100644 index 0000000..590e191 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/FileUtil.java @@ -0,0 +1,148 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.OutputStreamWriter; + +import javax.imageio.ImageIO; + +import org.springframework.util.FileCopyUtils; +import org.springframework.web.multipart.MultipartFile; + +public class FileUtil { + + public static void createFile(MultipartFile mpf, String filePath, String saveFileName) { + try { + createFolder(filePath); + FileCopyUtils.copy(mpf.getBytes(), new FileOutputStream(filePath+saveFileName)); + + //이미지 파일일 경우 썸네일 이미지 생성 + /*if(MediaType.IMAGE_GIF_VALUE.equals(mpf.getContentType()) + || MediaType.IMAGE_JPEG_VALUE.equals(mpf.getContentType()) + || MediaType.IMAGE_PNG_VALUE.equals(mpf.getContentType())) { //이미지 파일의 경우 썸네일 생성 + String thumbPath = filePath+PropertiesUtil.getProperty("AppConf.filePath.thumb"); + createFolder(thumbPath); //썸네일 폴더생성 + + File originalFile = new File(filePath+saveFileName); + File thumbnailFile = new File(thumbPath+saveFileName+PropertiesUtil.getProperty("AppConf.fileNm.thumb")); + //썸네일 생성 + BufferedImage bi = ImageIO.read(originalFile); + BufferedImage biThumbnail = new BufferedImage(200, 200, BufferedImage.TYPE_3BYTE_BGR); + Graphics2D graphic = biThumbnail.createGraphics(); + graphic.drawImage(bi, 0, 0, 200, 200, null); + ImageIO.write(biThumbnail, "jpg", thumbnailFile); + }*/ + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 썸네일 이미지를 생성한다. + * @param originalFile (변환대상) + * @param thumbnailPath (썸네일이미지를 생성할 경로) + * @param thumbnailFileNm (썸네일이미지 파일명) + */ + public static void createThumbnail(File originalFile, String thumbnailPath, String thumbnailFileNm, int width, int height) { + try { + if(originalFile.exists()) { //변환할 파일이 존재하는지 확인 + File thumbnailFile = new File(thumbnailPath+thumbnailFileNm); + if(thumbnailFile.exists()) thumbnailFile.delete(); //썸네일을 만들 경로에 같은 파일이 존재하면 삭제 후 생성 + + //썸네일 생성 + BufferedImage bi = ImageIO.read(originalFile); + BufferedImage biThumbnail = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR); + Graphics2D graphic = biThumbnail.createGraphics(); + graphic.drawImage(bi, 0, 0, width, height, null); + ImageIO.write(biThumbnail, "jpg", thumbnailFile); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + public static void createThumbnail(File originalFile, String thumbnailPath, String thumbnailFileNm) { + createThumbnail(originalFile, thumbnailPath, thumbnailFileNm, 500, 500); + } + + /** + * 파일경로에 폴더가 존재하지 않을 경우 생성한다. + */ + public static void createFolder(String filePath) { + File folder = new File(filePath); + if(!folder.exists()) { + folder.mkdirs(); + } + } + + /** + * Json 파일을 생성한다. + * @throws IOException + */ + public static void createJson(String path, String fileNm, String json) throws IOException { + createFolder(path); //폴더가 없다면 새로 생성 + + File file = new File(path+fileNm); + BufferedWriter output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getPath()), "UTF-8")); + output.write(json); + output.close(); + } + + /** + * 대상파일의 한줄만 읽어 오기(경로에 파일이 없을 경우 파일만 생성) + * @param path 파일경로 + * @return + */ + public static String getFileOneLine(String path) { + BufferedReader br = null; + String line = ""; + + try { + File file = new File(path); + if(!file.exists()){ + file.createNewFile(); + } + + br = new BufferedReader(new FileReader(file)); + line = br.readLine(); + + } catch (Exception e) { + e.printStackTrace(); + if(br != null) try { br.close(); } catch (IOException ex) { ex.printStackTrace(); } + } finally { + if(br != null) try { br.close(); } catch (IOException e) { e.printStackTrace(); } + } + + return line; + } + + /** + * 대상파일에 내용 지우고 쓰기 + * @param text 내용 + * @param path 파일경로 + * @return + */ + public static void getFileWrite(String text, String path) { + FileWriter fw = null; + try { + fw = new FileWriter(new File(path), false); + if(text.isEmpty()){ + text=""; + } + fw.write(text); + } catch (IOException e) { + e.printStackTrace(); + if(fw != null) try{fw.close();}catch(IOException ex){ ex.printStackTrace();} + } finally { + if(fw != null) try{fw.close();}catch(IOException ex){ ex.printStackTrace();} + } + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/HttpUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/HttpUtil.java new file mode 100644 index 0000000..b81c190 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/HttpUtil.java @@ -0,0 +1,50 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import javax.servlet.http.HttpServletRequest; + +public class HttpUtil { + + /** + * 접속 아이디를 얻어온다. + */ + public static String getClientIp(HttpServletRequest request) { + + String clientIp = request.getHeader("X-Forwarded-For"); + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("Proxy-Client-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("WL-Proxy-Client-IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("HTTP_CLIENT_IP"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getHeader("HTTP_X_FORWARDED_FOR"); + } + if (clientIp == null || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { + clientIp = request.getRemoteAddr(); + } + return clientIp; + + /* + String clientIp = request.getHeader("HTTP_X_FORWARDED_FOR"); + if(null == clientIp || clientIp.length() == 0 || clientIp.toLowerCase().equals("unknown")){ + clientIp = request.getHeader("REMOTE_ADDR"); + } + + if(null == clientIp || clientIp.length() == 0 || clientIp.toLowerCase().equals("unknown")){ + clientIp = request.getRemoteAddr(); + } + return clientIp; + */ + } + + public static String getDomain(HttpServletRequest request) { + String domain = request.getServerName(); + if(request.getServerPort() != 80) { + domain += ":"+request.getServerPort(); + } + return domain; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/MessageUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/MessageUtil.java new file mode 100644 index 0000000..f21ebc4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/MessageUtil.java @@ -0,0 +1,25 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import java.util.Locale; + +import org.springframework.context.support.MessageSourceAccessor; + +/** + * message-common.properties에 있는 내용을 조회한다. + */ +public class MessageUtil { + + private static MessageSourceAccessor msAcc = null; + + public void setMessageSourceAccessor(MessageSourceAccessor msAcc) { + MessageUtil.msAcc = msAcc; + } + + public static String getMessage(String key) { + return msAcc.getMessage(key, Locale.getDefault()); + } + + public static String getMessage(String key, Object[] objs) { + return msAcc.getMessage(key, objs, Locale.getDefault()); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/PathUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/PathUtil.java new file mode 100644 index 0000000..3213353 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/PathUtil.java @@ -0,0 +1,15 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import javax.servlet.http.HttpServletRequest; + +public class PathUtil { + + public static String getWebRoot(HttpServletRequest request){ + return request.getSession().getServletContext().getRealPath(""); + } + + public static String getImagesPath(HttpServletRequest request){ + return getWebRoot(request)+"/images/"; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/PropertiesUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/PropertiesUtil.java new file mode 100644 index 0000000..d55d914 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/PropertiesUtil.java @@ -0,0 +1,44 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Properties; + +public class PropertiesUtil { + + public static final String RELATIVE_PATH_PREFIX = PropertiesUtil.class.getResource("").getPath() + System.getProperty("file.separator") + + ".." + System.getProperty("file.separator") + + ".." + System.getProperty("file.separator") + + ".." + System.getProperty("file.separator") + + ".." + System.getProperty("file.separator") + + ".." + System.getProperty("file.separator"); + + public static final String PROPERTY_PATH = RELATIVE_PATH_PREFIX+System.getProperty("file.separator")+"config"+System.getProperty("file.separator")+"properties"+System.getProperty("file.separator")+"globals.properties"; + + public static String getProperty(String keyName){ + String value = null; + FileInputStream fis = null; + try{ + Properties props = new Properties(); + fis = new FileInputStream(PROPERTY_PATH); + props.load(new java.io.BufferedInputStream(fis)); + value = props.getProperty(keyName).trim(); + }catch(FileNotFoundException fne){ + fne.printStackTrace(); + }catch(IOException ioe){ + ioe.printStackTrace(); + }catch(Exception e){ + e.printStackTrace(); + }finally{ + try { + if (fis != null) fis.close(); + } catch (Exception ex) { + ex.printStackTrace(); + } + + } + return value; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/SessionHelper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/SessionHelper.java new file mode 100644 index 0000000..6b83e16 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/SessionHelper.java @@ -0,0 +1,61 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import kr.co.jinwoosi.clfd.framework.security.model.User; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + + +/** + * 세션 정보 관리 + */ +public class SessionHelper { + + /** + * 사용자 정보를 읽어 온다. + */ + public static User getUser() { + return (User) RequestContextHolder.getRequestAttributes().getAttribute("user", RequestAttributes.SCOPE_SESSION); + } + + /** + * attribute 값을 가져 오기 위한 method + * + * @param String attribute key name + * @return Object attribute obj + */ + public static Object getSessionAttribute(String name) { + return RequestContextHolder.getRequestAttributes().getAttribute(name, RequestAttributes.SCOPE_SESSION); + } + + /** + * attribute 설정 method + * + * @param String attribute key name + * @param Object attribute obj + * @return void + */ + public static void setSessionAttribute(String name, Object object) { + RequestContextHolder.getRequestAttributes().setAttribute(name, object, RequestAttributes.SCOPE_SESSION); + } + + /** + * 설정한 attribute 삭제 + * + * @param String attribute key name + * @return void + */ + public static void removeAttribute(String name) throws Exception { + RequestContextHolder.getRequestAttributes().removeAttribute(name, RequestAttributes.SCOPE_SESSION); + } + + /** + * session id + * + * @param void + * @return String SessionId 값 + */ + public static String getSessionId() throws Exception { + return RequestContextHolder.getRequestAttributes().getSessionId(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/util/StrUtil.java b/src/main/java/kr/co/jinwoosi/clfd/framework/util/StrUtil.java new file mode 100644 index 0000000..97aadc1 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/util/StrUtil.java @@ -0,0 +1,224 @@ +package kr.co.jinwoosi.clfd.framework.util; + +import org.apache.commons.lang3.StringUtils; + +import java.security.MessageDigest; +import java.util.Random; + +public class StrUtil { + + /** + * String에서 HTML코드를 제거한다. + */ + public static String removeHtmlCd(String str) { + if(StrUtil.isEmpty(str))return ""; + return str.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", ""); + } + + /** + * null 혹은 empty인지 검사 + */ + public static boolean isEmpty(String str) { + if (str == null || str.trim().length() == 0) return true; + return false; + } + + public static boolean isNotEmpty(String s){ + return !isEmpty(s); + } + + /** + * (length - str.length) 만큼 앞에 0을 추가한다. + */ + public static String addZero(String str, int length) { + String temp = ""; + for (int i = str.length(); i < length; i++) + temp += "0"; + temp += str; + return temp; + } + + /** + * 숫자를 한글로 리턴한다. + */ + public static String convertHangul(String money){ + String[] han1 = {"","일","이","삼","사","오","육","칠","팔","구"}; + String[] han2 = {"","십","백","천"}; + String[] han3 = {"","만","억","조","경"}; + + StringBuffer result = new StringBuffer(); + int len = money.length(); + for(int i=len-1; i>=0; i--){ + result.append(han1[Integer.parseInt(money.substring(len-i-1, len-i))]); + if(Integer.parseInt(money.substring(len-i-1, len-i)) > 0) + result.append(han2[i%4]); + if(i%4 == 0) + result.append(han3[i/4]); + } + + return result.toString(); + } + + + /** + * 비밀번호를 암호화하는 기능(복호화가 되면 안되므로 SHA-512 인코딩 방식 적용) + * + * @param password 암호화될 패스워드 + * @param id salt로 사용될 사용자 ID 지정 + * @return + * @throws Exception + */ + public static String encryptSha512(String password, String id) throws Exception { + if (StringUtils.isBlank (password) || StringUtils.isBlank (id)) { // 아이디 또는 비밀번호가 제대로 입력되지 않은 경우 예외 처리 + throw new Exception ("id & password is blank"); + } + + MessageDigest md = MessageDigest.getInstance("SHA-512"); + md.reset(); + md.update(new StringBuffer (id).reverse ().append (id).toString ().getBytes()); + byte[] hashValue = md.digest(password.getBytes()); // 해쉬 값 + String result = ""; + for (int i = 0; i < hashValue.length; i++) { + byte temp = hashValue[i]; + String s = Integer.toHexString(new Byte(temp)); + while (s.length() < 2) { + s = "0" + s; + } + s = s.substring(s.length() - 2); + result += s; + } + return result; + } + + /* + final static char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', + 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', + 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + */ + + final static char[] digits = {'a', 'b', 'c', + 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', + 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + + /** + * 고유의 Hash값을 생성한다. + */ + public static String getDigits(Long v) { + if(v < 0) { + return ""; + } + char buf[] = new char[33]; + int charPos = buf.length - 1; + int radix = digits.length; + + while(v > -1) { + buf[charPos--] = digits[(int) (v % radix)]; + v = v / radix; + if(v == 0) { + break; + } + } + return new String(buf, charPos + 1, (buf.length - 1 - charPos)); + } + + public static String unescape(String inp) { + if(StrUtil.isEmpty(inp)) { + return ""; + }else { + String rtnStr = new String(); + char [] arrInp = inp.toCharArray(); + int i; + for(i=0;i2 ? 5 : 2); + } catch(Exception e) { + } + } else { + rtnStr += arrInp[i]; + } + } + + return rtnStr; + } + } + + public static String escape(String src) { + if(StrUtil.isEmpty(src)) { + return ""; + }else { + int i; + char j; + StringBuffer tmp = new StringBuffer(); + tmp.ensureCapacity(src.length() * 6); + for (i = 0; i < src.length(); i++) { + j = src.charAt(i); + if (Character.isDigit(j) || Character.isLowerCase(j) + || Character.isUpperCase(j)) + tmp.append(j); + else if (j < 256) { + tmp.append("%"); + if (j < 16) + tmp.append("0"); + tmp.append(Integer.toString(j, 16)); + } else { + tmp.append("%u"); + tmp.append(Integer.toString(j, 16)); + } + } + return tmp.toString(); + } + } + + + public static String tempPwd(int size) { + + StringBuffer buffer = new StringBuffer(); + Random random = new Random(); + + for (int i = 0; i < size; i++) { + buffer.append(digits[random.nextInt(digits.length)]); + } + + return buffer.toString(); + } + + public static String getRandomPassword(int len) { + char[] charSet = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', + 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'}; + int idx = 0; + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < len; i++) { + idx = (int) (charSet.length * Math.random()); + sb.append(charSet[idx]); + } + return sb.toString(); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/interceptor/WebLogInterceptor.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/interceptor/WebLogInterceptor.java new file mode 100644 index 0000000..25762d4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/interceptor/WebLogInterceptor.java @@ -0,0 +1,94 @@ +package kr.co.jinwoosi.clfd.framework.weblog.interceptor; + +import java.io.PrintWriter; +import java.util.Enumeration; + +import javax.annotation.Resource; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import kr.co.jinwoosi.clfd.framework.menu.service.MenuService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.util.HttpUtil; +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLog; +import kr.co.jinwoosi.clfd.framework.weblog.service.WebLogService; +import org.apache.commons.lang3.ArrayUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.mvc.WebContentInterceptor; + +import kr.co.jinwoosi.clfd.framework.menu.model.Menu; + +public class WebLogInterceptor extends WebContentInterceptor { + + @Autowired + private MenuService menuSvc; + + @Resource (name="webLogService") + private WebLogService webLogService; + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException { + try { + + WebLog webLog = new WebLog(); + + HttpSession session = request.getSession(); + webLog.getLoginLog ().setLoginLogId((Long) session.getAttribute("loginLogId")); + webLog.setReqUrl(request.getServletPath().replace("/system/", "")); + String[] reqUrl = webLog.getReqUrl().split("/"); + + String url = request.getServletPath(); + Long uid = ((User)session.getAttribute("user")).getUserId(); + + if(reqUrl[reqUrl.length-1].equals("list.mng") && request.getMethod().equals("GET")){ + } + else{ + Enumeration paramNames = request.getParameterNames (); + StringBuilder sb = new StringBuilder (1000); + while (paramNames.hasMoreElements ()) { + String paramName = paramNames.nextElement(); + String[] paramValues = request.getParameterValues (paramName); + if("search[regex]".equals(paramName)){ + sb.delete(0,sb.length()+1); + } + else if("userPwd".equals(paramName)){ + } + else if(!ArrayUtils.isEmpty (paramValues)) { + sb.append (paramName).append (":"); + for (String paramValue : paramValues) { + sb.append (paramValue).append (","); + } + } + } + if(sb.length() > 0) + webLog.setReqParam(sb.substring(0, sb.length()-1)); + else + webLog.setReqParam(""); + webLog.setReqMthd(request.getMethod()); + webLog.setReqTp("S"); + webLog.setReqIp(HttpUtil.getClientIp(request)); + webLogService.insert(webLog); + } + if(uid!=1 && menuSvc.checkUrlAuth(url)==false) { + String ext = Menu.getUrlExt(url); + if(ext.equals(".json")) { + response.setContentType("application/json"); + PrintWriter out = response.getWriter(); + String msg = "{ result:'file', message: '사용권한이 없습니다.' }"; + out.print(msg); + out.flush(); + } else { + response.sendRedirect("/error/error.mng?errorCode=401"); + } + return false; + } + }catch(Exception e) { + e.printStackTrace(); + return false; + } + return true; + } +} + diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/mapper/WebLogMapper.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/mapper/WebLogMapper.java new file mode 100644 index 0000000..826d5d5 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/mapper/WebLogMapper.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.framework.weblog.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLog; +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLogSearch; + +@Mapper (value="webLogMapper") +public interface WebLogMapper extends BaseMapper { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/model/WebLog.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/model/WebLog.java new file mode 100644 index 0000000..d55d567 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/model/WebLog.java @@ -0,0 +1,97 @@ +package kr.co.jinwoosi.clfd.framework.weblog.model; + +import kr.co.jinwoosi.clfd.framework.security.model.LoginLog; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +@SuppressWarnings ("serial") +public class WebLog extends BaseModel { + + private Long webLogId; + private String reqUrl; + private String reqMthd; + private String reqParam; + private String pgmId; + private String reqIp; + private String reqTp; + + private UserSearch user; + private LoginLog loginLog; + + public WebLog () { + user = new UserSearch (); + loginLog = new LoginLog (); + } + + public UserSearch getUser () { + return user; + } + + public void setUser (UserSearch user) { + this.user = user; + } + + public LoginLog getLoginLog () { + return loginLog; + } + + public void setLoginLog (LoginLog loginLog) { + this.loginLog = loginLog; + } + + public String getPgmId () { + return pgmId; + } + + public void setPgmId (String pgmId) { + this.pgmId = pgmId; + } + + public Long getWebLogId () { + return webLogId; + } + + public void setWebLogId (Long webLogId) { + this.webLogId = webLogId; + } + + public String getReqUrl () { + return reqUrl; + } + + public void setReqUrl (String reqUrl) { + this.reqUrl = reqUrl; + } + + public String getReqMthd () { + return reqMthd; + } + + public void setReqMthd (String reqMthd) { + this.reqMthd = reqMthd; + } + + public String getReqParam () { + return reqParam; + } + + public void setReqParam (String reqParam) { + this.reqParam = reqParam; + } + + public String getReqIp () { + return reqIp; + } + + public void setReqIp (String reqIp) { + this.reqIp = reqIp; + } + + public String getReqTp () { + return reqTp; + } + + public void setReqTp (String reqTp) { + this.reqTp = reqTp; + } +} \ No newline at end of file diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/model/WebLogSearch.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/model/WebLogSearch.java new file mode 100644 index 0000000..247e44e --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/model/WebLogSearch.java @@ -0,0 +1,27 @@ +package kr.co.jinwoosi.clfd.framework.weblog.model; + +public class WebLogSearch extends WebLog { + + private String userLoginIdLike; + private String userNmLike; + + public WebLogSearch () { + super (); + } + + public String getUserLoginIdLike() { + return userLoginIdLike; + } + public void setUserLoginIdLike(String userLoginIdLike) { + this.userLoginIdLike = userLoginIdLike; + } + public String getUserNmLike() { + return userNmLike; + } + public void setUserNmLike(String userNmLike) { + this.userNmLike = userNmLike; + } + +} + + diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/service/WebLogService.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/service/WebLogService.java new file mode 100644 index 0000000..24b5205 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/service/WebLogService.java @@ -0,0 +1,9 @@ +package kr.co.jinwoosi.clfd.framework.weblog.service; + +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLog; +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLogSearch; +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; + +public interface WebLogService extends BaseService { + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/service/impl/WebLogServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/service/impl/WebLogServiceImpl.java new file mode 100644 index 0000000..1d944b6 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/service/impl/WebLogServiceImpl.java @@ -0,0 +1,21 @@ +package kr.co.jinwoosi.clfd.framework.weblog.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import org.springframework.stereotype.Service; + +import kr.co.jinwoosi.clfd.framework.weblog.mapper.WebLogMapper; +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLog; +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLogSearch; +import kr.co.jinwoosi.clfd.framework.weblog.service.WebLogService; + +@Service(value="webLogService") +public class WebLogServiceImpl extends BaseServiceImpl implements WebLogService { + + @Override + @Resource (name="webLogMapper") + protected void setMapper (WebLogMapper mapper) { + super.setMapper (mapper); + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/web/WebLogController.java b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/web/WebLogController.java new file mode 100644 index 0000000..56b166f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/framework/weblog/web/WebLogController.java @@ -0,0 +1,69 @@ +package kr.co.jinwoosi.clfd.framework.weblog.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.framework.weblog.model.WebLogSearch; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.weblog.service.WebLogService; + + +@Controller +public class WebLogController extends BaseController { + + @Resource (name="webLogService") + private WebLogService webLogService; + + @RequestMapping (value="/system/webLog/list.mng") + public String list() { + return "system/webLog/list"; + } + + @RequestMapping (value="/system/webLog/list.json") + @ResponseBody + public Map list(HttpServletRequest request, WebLogSearch webLogSearch) { + Map result = new HashMap(); + try { + String sort = request.getParameter("columns[" + request.getParameter("order[0][column]") + "][name]"); + String sortOder = request.getParameter("order[0][dir]"); + webLogSearch.setSort(sort); + webLogSearch.setSortOrd(sortOder); + webLogSearch.setPagingYn(true); + + int totalCount = webLogService.count(webLogSearch); + result.put("recordsTotal", totalCount); + result.put("recordsFiltered", totalCount); + result.put("data", webLogService.selectList(webLogSearch)); + + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + + @RequestMapping (value="/system/webLog/selectOne.json") + @ResponseBody + public Map selectOne(HttpServletRequest request, WebLogSearch webLogSearch) { + Map result = new HashMap(); + try { + result.put("data", webLogService.select(webLogSearch)); + result.put("result", "success"); + } catch (Exception e) { + e.printStackTrace(); + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/front/front/mapper/FrontMapper.java b/src/main/java/kr/co/jinwoosi/clfd/front/front/mapper/FrontMapper.java new file mode 100644 index 0000000..07ea30d --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/front/front/mapper/FrontMapper.java @@ -0,0 +1,13 @@ +package kr.co.jinwoosi.clfd.front.front.mapper; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; +import kr.co.jinwoosi.clfd.front.front.model.FrontSearch; +import kr.co.jinwoosi.clfd.framework.base.mapper.BaseMapper; +import kr.co.jinwoosi.clfd.front.front.model.Front; + +@Mapper (value="frontMapper") +public interface FrontMapper extends BaseMapper { + + int testData(FrontSearch frontSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/front/front/model/Front.java b/src/main/java/kr/co/jinwoosi/clfd/front/front/model/Front.java new file mode 100644 index 0000000..7c73f2b --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/front/front/model/Front.java @@ -0,0 +1,7 @@ +package kr.co.jinwoosi.clfd.front.front.model; + +import kr.co.jinwoosi.clfd.framework.base.model.BaseModel; + +public class Front extends BaseModel{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/front/front/model/FrontSearch.java b/src/main/java/kr/co/jinwoosi/clfd/front/front/model/FrontSearch.java new file mode 100644 index 0000000..0ea3dcc --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/front/front/model/FrontSearch.java @@ -0,0 +1,5 @@ +package kr.co.jinwoosi.clfd.front.front.model; + +public class FrontSearch extends Front{ + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/front/front/service/FrontService.java b/src/main/java/kr/co/jinwoosi/clfd/front/front/service/FrontService.java new file mode 100644 index 0000000..c78c6d4 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/front/front/service/FrontService.java @@ -0,0 +1,11 @@ +package kr.co.jinwoosi.clfd.front.front.service; + +import kr.co.jinwoosi.clfd.framework.base.service.BaseService; +import kr.co.jinwoosi.clfd.front.front.model.Front; +import kr.co.jinwoosi.clfd.front.front.model.FrontSearch; + +public interface FrontService extends BaseService { + + int testData(FrontSearch frontSearch); + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/front/front/service/impl/FrontServiceImpl.java b/src/main/java/kr/co/jinwoosi/clfd/front/front/service/impl/FrontServiceImpl.java new file mode 100644 index 0000000..dc14376 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/front/front/service/impl/FrontServiceImpl.java @@ -0,0 +1,25 @@ +package kr.co.jinwoosi.clfd.front.front.service.impl; + +import javax.annotation.Resource; + +import kr.co.jinwoosi.clfd.framework.base.service.impl.BaseServiceImpl; +import kr.co.jinwoosi.clfd.front.front.mapper.FrontMapper; +import kr.co.jinwoosi.clfd.front.front.model.Front; +import kr.co.jinwoosi.clfd.front.front.model.FrontSearch; +import kr.co.jinwoosi.clfd.front.front.service.FrontService; +import org.springframework.stereotype.Service; + +@Service(value="frontService") +public class FrontServiceImpl extends BaseServiceImpl implements FrontService { + + @Override + @Resource (name="frontMapper") + protected void setMapper (FrontMapper mapper) { + super.setMapper (mapper); + } + @Override + public int testData(FrontSearch frontSearch) { + return mapper.testData(frontSearch); + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/front/front/web/FrontController.java b/src/main/java/kr/co/jinwoosi/clfd/front/front/web/FrontController.java new file mode 100644 index 0000000..add0f08 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/front/front/web/FrontController.java @@ -0,0 +1,38 @@ +package kr.co.jinwoosi.clfd.front.front.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import kr.co.jinwoosi.clfd.front.front.model.FrontSearch; +import kr.co.jinwoosi.clfd.front.front.service.FrontService; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class FrontController extends BaseController { + + @Resource (name="frontService") + private FrontService frontService; + + @RequestMapping (value="/front/front/data.json", method=RequestMethod.POST) + @ResponseBody + public Map data(HttpServletRequest request, FrontSearch frontSearch) { + Map result = new HashMap(); + try { + int data = frontService.testData(frontSearch); + result.put("data", data); + result.put("result", "success"); + } catch (Exception e) { + result.put("result", "fail"); + result.put("message", e.getMessage()); + } + return result; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/main/web/CmsController.java b/src/main/java/kr/co/jinwoosi/clfd/main/web/CmsController.java new file mode 100644 index 0000000..5bae33f --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/main/web/CmsController.java @@ -0,0 +1,510 @@ +package kr.co.jinwoosi.clfd.main.web; + +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import kr.co.jinwoosi.clfd.conts.banner.service.BannerService; +import kr.co.jinwoosi.clfd.conts.bod.model.Bod; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArti; +import kr.co.jinwoosi.clfd.conts.bod.model.BodArtiSearch; +import kr.co.jinwoosi.clfd.conts.bod.service.BodArtiService; +import kr.co.jinwoosi.clfd.conts.bod.service.BodRoleService; +import kr.co.jinwoosi.clfd.conts.bod.service.BodService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContItemService; +import kr.co.jinwoosi.clfd.conts.cont.service.ContService; +import kr.co.jinwoosi.clfd.conts.menu.model.Menu; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuConnHist; +import kr.co.jinwoosi.clfd.conts.menu.model.MenuContSearch; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuConnHistService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuContService; +import kr.co.jinwoosi.clfd.conts.menu.service.MenuService; +import kr.co.jinwoosi.clfd.conts.site.model.Site; +import kr.co.jinwoosi.clfd.conts.site.service.SiteService; +import kr.co.jinwoosi.clfd.framework.util.HttpUtil; +import kr.co.jinwoosi.clfd.framework.util.StrUtil; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.support.RequestContextUtils; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; +import kr.co.jinwoosi.clfd.framework.file.model.FileItemSearch; +import kr.co.jinwoosi.clfd.framework.file.service.FileItemService; +import kr.co.jinwoosi.clfd.framework.security.model.User; +import kr.co.jinwoosi.clfd.framework.security.model.UserSearch; +import kr.co.jinwoosi.clfd.framework.security.service.UserService; + +@Controller +public class CmsController extends BaseController { + + @Resource (name="siteService") + private SiteService siteService; + + @Resource (name="cmsMenuService") + private MenuService menuService; + + @Resource (name="cmsMenuConnHistService") + private MenuConnHistService menuConnHistService; + + @Resource (name="bodService") + private BodService bodService; + + @Resource (name="bodArtiService") + private BodArtiService bodArtiService; + + @Resource (name="bodRoleService") + private BodRoleService bodRoleService; + + @Resource (name="cmsMenuContService") + private MenuContService menuContService; + + @Resource(name = "contService") + private ContService contService; + + @Resource(name = "contItemService") + private ContItemService contItemService; + + @Resource(name = "userService") + private UserService userService; + + @Resource (name="bannerService") + private BannerService bannerService; + + @Resource (name="fileItemService") + private FileItemService fileItemService; + + @RequestMapping ("/login.do") + public String login (HttpServletRequest request, HttpServletResponse response, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + + HttpServletRequest httpRequest = (HttpServletRequest)request; + HttpSession session = httpRequest.getSession(); + session.setAttribute ("loginRequestURL","login"); + + return "cms/login/login"; + } + + /** + * 로그인 페이지 이동 + */ + @RequestMapping ("/{depth1}/login.do") + public String login (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + + HttpServletRequest httpRequest = (HttpServletRequest)request; + HttpSession session = httpRequest.getSession(); + session.setAttribute ("loginRequestURL","login"); + + return "cms/login/login"; + } + + @RequestMapping ("/findPw.do") + public String findPw (HttpServletRequest request, HttpServletResponse response, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/findPw"; + } + + @RequestMapping ("/{depth1}/findPw.do") + public String findPw (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/findPw"; + } + + @RequestMapping ("/findId.do") + public String findId (HttpServletRequest request, HttpServletResponse response, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/findId"; + } + + @RequestMapping ("/{depth1}/findId.do") + public String findId (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/findId"; + } + + @RequestMapping ("/{depth1}/terms.do") + public String terms (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/terms"; + } + + @RequestMapping ("/{depth1}/signUp.do") + public String signUp (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/signUp"; + } + + @RequestMapping (value="/public/user/duplicate.json", method=RequestMethod.POST) + @ResponseBody + public Map checkIdDuplicate (UserSearch userSearch) { + Map result = new HashMap (); + if (userService.checkIdDuplicate(userSearch) > 0) { + result.put("result", "exist"); + result.put("message", "사용 중입니다."); + } else { + result.put("result", "nonExist"); + result.put("message", "사용 가능합니다."); + } + return result; + + } + + @RequestMapping ("/user/insert.do") + public String userInsert (HttpServletRequest request, HttpServletResponse response, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/insert"; + } + + @RequestMapping ("/{depth1}/user/insert.do") + public String userInsert (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + return "cms/login/insert"; + } + + @RequestMapping ("/user/myPage.do") + public String myPage (HttpServletRequest request, HttpServletResponse response, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + HttpSession session = request.getSession(); + User user = (User) session.getAttribute("user"); + + UserSearch userSearch = new UserSearch(); + userSearch.setUserId(user.getUserId()); + model.addAttribute("Selectuser", userService.select(userSearch) ); + return "cms/login/myPage"; + } + + @RequestMapping ("/{depth1}/user/myPage.do") + public String myPage (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + + HttpSession session = request.getSession(); + User user = (User) session.getAttribute("user"); + UserSearch userSearch = new UserSearch(); + userSearch.setUserId(user.getUserId()); + model.addAttribute("Selectuser", userService.select(userSearch) ); + return "cms/login/myPage"; + } + + @RequestMapping ("/{depth1}.do") + public String dynamic (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, Model model) { + if (request != null && response != null && model != null) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + Menu menu = getMenu(site, request, model); + model.addAttribute ("menuId", menu.getMenuId ()); + return forwardMenu(site, menu, model, request); + } else { + return ""; + } + } + + @RequestMapping ("/{depth1}/{depth2}.do") + public String dynamic (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, @PathVariable String depth2, Model model) { + if (request != null && response != null && model != null) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + Menu menu = getMenu(site, request, model); + model.addAttribute ("menuId", menu.getMenuId ()); + return forwardMenu(site, menu, model, request); + } else { + return ""; + } + } + + @RequestMapping ("/{depth1}/{depth2}/{depth3}.do") + public String dynamic (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, @PathVariable String depth2, @PathVariable String depth3, Model model) { + if (request != null && response != null && model != null) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + Menu menu = getMenu(site, request, model); + return forwardMenu(site, menu, model, request); + } else { + return ""; + } + } + + @RequestMapping ("/{depth1}/{depth2}/{depth3}/{depth4}.do") + public String dynamic (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, @PathVariable String depth2, @PathVariable String depth3, @PathVariable String depth4, Model model) { + if (request != null && response != null && model != null) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + Menu menu = getMenu(site, request, model); + return forwardMenu(site, menu, model, request); + } else { + return ""; + } + } + + @RequestMapping ("/{depth1}/{depth2}/{depth3}/{depth4}/{depth5}.do") + public String dynamic (HttpServletRequest request, HttpServletResponse response, @PathVariable String depth1, @PathVariable String depth2, @PathVariable String depth3, @PathVariable String depth4, @PathVariable String depth5, Model model) { + if (request != null && response != null && model != null) { + Site site = getSite(request, response, model); + model.addAttribute("menuList", menuService.selectJson(site.getSiteId())); + Menu menu = getMenu(site, request, model); + return forwardMenu(site, menu, model, request); + } else { + return ""; + } + } + + /** + * 현재 접속 한 사이트를 얻어온다. + */ + public Site getSite(HttpServletRequest request, HttpServletResponse response, Model model) { + Site result = null; + + if (request != null && response != null && model != null) { + String servletPath = request.getServletPath(); + String domain = request.getServerName(); + if(request.getServerPort() != 80) { + domain += ":"+request.getServerPort(); + } + + String[] urlArray = servletPath.split("/"); + String contextPath = urlArray[1]; + + List siteList = siteService.selectJson(); + + /* 멀티 사이트 */ + for(Site site : siteList) { + String[] domainArray = site.getDomain().split(","); + for(int i=0;i bodList = bodService.selectJson(); + for(Bod bd : bodList) { + if(bd.getBodId().compareTo(menu.getBodId()) == 0) { + bod = bd; + break; + } + } + model.addAttribute("bod", bod); + + String action = request.getParameter("action"); + if(StrUtil.isEmpty(action)) action = "list"; + + if("answ".equals(action)) { //답변 + Long artiId = Long.parseLong(request.getParameter("upperArtiId")); + BodArtiSearch bodArtiSearch = new BodArtiSearch(); + bodArtiSearch.setArtiId(artiId); + BodArti upperBodArti = bodArtiService.select(bodArtiSearch); + model.addAttribute("upperBodArti", upperBodArti); + }else if("insert".equals(action)) { //등록화면 + model.addAttribute("isAuthNoti", bodService.isAuthNoti(bod.getBodId(), getUserId())); //공지글 게시권한이 있는지 조회 + }else if("view".equals(action) || "update".equals(action)) { //조회, 수정화면 + Long artiId = Long.parseLong(request.getParameter("artiId")); + BodArtiSearch bodArtiSearch = new BodArtiSearch(); + bodArtiSearch.setArtiId(artiId); + BodArti bodArti = bodArtiService.select(bodArtiSearch); + + if(bod.getBodTp ().equals ("movie") && action.equals ("view")){ + FileItemSearch fileItemSearch = new FileItemSearch (); + fileItemSearch.setFileId (bodArti.getFileId ()); + model.addAttribute("file",fileItemService.select (fileItemSearch)); + } + + /* + * 비밀글에 대해서 본인여부를 확인한다. + */ + if(bodArti.getScrtYn() != null){ + if(bodArti.getScrtYn().equals("Y")) { + if(!bodArtiService.isAuthScrt(bodArti.getArtiId(), getUserId())) { + return "cms/error/401"; + } + } + } + + model.addAttribute("bodArti", bodArti); + model.addAttribute("isAuthUpdate", bodArtiService.isAuthUpdate(bodArti, getUserId())); //수정 권한이 있는지 조회 + model.addAttribute("isAuthNoti", bodService.isAuthNoti(bod, getUserId())); //공지글 게시권한이 있는지 조회 + model.addAttribute("isAuthAnsw", bodService.isAuthAnsw(bod, getUserId())); //답변 권한이 있는지 조회 + + /* + * SNS 공유를 위해 Meta태그 설정 + */ + + String metaImage = ""; + if(request.isSecure()) { + metaImage += "https://"; + }else { + metaImage += "http://"; + } + + if("image".equals(bod.getBodTp())) { + model.addAttribute("metaImage", metaImage+site.getDomain()+"/file/image.do?fileId="+bodArti.getFileId()); + }else if("movie".equals(bod.getBodTp())) { + model.addAttribute("metaImage", metaImage+site.getDomain()+"/file/movie/preview.do?fileId="+bodArti.getFileId()+"&order="+bodArti.getFilePrview()); + } + + bodArtiService.updateHit(artiId); //조회수 증가 + }else if("list".equals(action)) { //목록 + BodArtiSearch bodArtiSearch = new BodArtiSearch(); + bodArtiSearch.setBodId(bod.getBodId()); + model.addAttribute("artiTotalCnt", bodArtiService.count(bodArtiSearch)); + + model.addAttribute("notiList", bodArtiService.selectList(bodArtiSearch)); + + model.addAttribute("isAuthInsert", bodService.isAuthInsert(bod, getUserId())); //등록 권한이 있는지 조회 + } + + return "front/bod/"+bod.getBodTp()+"/"+action; + } + + if("cont".equals(menu.getMenuTp().trim())){ + MenuContSearch menuContSearch = new MenuContSearch(); + menuContSearch.setMenuId(menu.getMenuId()); + //System.out.println("aaa="+menuContService.selectList(menuContSearch, site.getLangId())); + model.addAttribute("menuContList", menuContService.selectList(menuContSearch, site.getLangId())); + return "front/cont"; + } + + return "front/main"; + } + return null; + } + +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/main/web/MainController.java b/src/main/java/kr/co/jinwoosi/clfd/main/web/MainController.java new file mode 100644 index 0000000..672f292 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/main/web/MainController.java @@ -0,0 +1,20 @@ +package kr.co.jinwoosi.clfd.main.web; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import kr.co.jinwoosi.clfd.framework.base.web.BaseController; + +@Controller +public class MainController extends BaseController { + + @RequestMapping ("/system/main.mng") + public String systemMain () { + return "system/main"; + } + + @RequestMapping ("/system/init.mng") + public String systemInit () { + return "system/main"; + } +} diff --git a/src/main/java/kr/co/jinwoosi/clfd/main/web/WindowController.java b/src/main/java/kr/co/jinwoosi/clfd/main/web/WindowController.java new file mode 100644 index 0000000..82c2b18 --- /dev/null +++ b/src/main/java/kr/co/jinwoosi/clfd/main/web/WindowController.java @@ -0,0 +1,14 @@ +package kr.co.jinwoosi.clfd.main.web; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class WindowController { + + @RequestMapping ("/system/window/icons.mng") + public String icons() { + return "system/window/icons"; + } + +} diff --git a/src/main/java/org/apache/ibatis/scripting/xmltags/DynamicContext.java b/src/main/java/org/apache/ibatis/scripting/xmltags/DynamicContext.java new file mode 100644 index 0000000..5ca2bb3 --- /dev/null +++ b/src/main/java/org/apache/ibatis/scripting/xmltags/DynamicContext.java @@ -0,0 +1,167 @@ +package org.apache.ibatis.scripting.xmltags; + +import java.lang.reflect.Array; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.ibatis.ognl.OgnlContext; +import org.apache.ibatis.ognl.OgnlException; +import org.apache.ibatis.ognl.OgnlRuntime; +import org.apache.ibatis.ognl.PropertyAccessor; +import org.apache.ibatis.reflection.MetaObject; +import org.apache.ibatis.session.Configuration; + +public class DynamicContext { + + public static final String PARAMETER_OBJECT_KEY = "_parameter"; + public static final String DATABASE_ID_KEY = "_databaseId"; + + static { + OgnlRuntime.setPropertyAccessor(ContextMap.class, new ContextAccessor()); + } + + private final ContextMap bindings; + private final StringBuilder sqlBuilder = new StringBuilder(); + private int uniqueNumber = 0; + + public DynamicContext(final Configuration configuration, final Object parameterObject) { + if (parameterObject != null && !(parameterObject instanceof Map)) { + MetaObject metaObject = configuration.newMetaObject(parameterObject); + bindings = new ContextMap(metaObject); + } else { + bindings = new ContextMap(null); + } + bindings.put(PARAMETER_OBJECT_KEY, parameterObject); + bindings.put(DATABASE_ID_KEY, configuration.getDatabaseId()); + } + + public Map getBindings() { + return bindings; + } + + public void bind(final String name, final Object value) { + bindings.put(name, value); + } + + public void appendSql(final String sql) { + sqlBuilder.append(sql); + sqlBuilder.append(" "); + } + + public String getSql() { + return sqlBuilder.toString().trim(); + } + + public int getUniqueNumber() { + return uniqueNumber++; + } + + static class ContextMap extends HashMap { + private static final long serialVersionUID = 2977601501966151582L; + + private MetaObject parameterMetaObject; + + public ContextMap(final MetaObject parameterMetaObject) { + this.parameterMetaObject = parameterMetaObject; + } + + @Override + public Object put(final String key, final Object value) { + return super.put(key, value); + } + + @Override + public Object get(final Object key) { + String strKey = (String) key; + if (super.containsKey(strKey)) { + return super.get(strKey); + } + + if (parameterMetaObject != null) { + Object object = parameterMetaObject.getValue(strKey); + // issue #61 do not modify the context when reading + // if (object != null) { + // super.put(strKey, object); + // } + + return object; + } + + return null; + } + + @SuppressWarnings("rawtypes") + public boolean empty(final Object obj) { + if (obj == null) return true; + + if (obj instanceof String) { + if(((String)obj).trim().length()>0) return false; + return true; + } else if (obj instanceof Number ) { + try { + String str = String.valueOf(obj); + if(str.trim().length()>0) return false; + return true; + } + catch(Exception err) { return true; } + } else if (obj instanceof List) { + return ((List) obj).isEmpty(); + } else if (obj instanceof Map) { + return ((Map) obj).isEmpty(); + } else if (obj instanceof Object[]) { + return Array.getLength(obj) == 0; + } else { + try { + String str = obj.toString(); + if("undefined".equals(obj)) return true; + if("null".equals(str)) return true; + if(str.trim().length()>0) return false; + return true; + } + catch(Exception err) { return true; } + } + } + } + + @SuppressWarnings("rawtypes") + static class ContextAccessor implements PropertyAccessor { + + @Override + public Object getProperty(final Map context, final Object target, final Object name) throws OgnlException { + Map map = (Map) target; + + Object result = map.get(name); + if (result != null) { + return result; + } + + Object parameterObject = map.get(PARAMETER_OBJECT_KEY); + if (parameterObject instanceof Map) { + return ((Map) parameterObject).get(name); + } + + return null; + } + + @SuppressWarnings("unchecked") + @Override + public void setProperty(final Map context, final Object target, final Object name, final Object value) throws OgnlException { + Map map = (Map) target; + map.put(name, value); + } + + @Override + public String getSourceAccessor(OgnlContext arg0, Object arg1, Object arg2) { + // TODO Auto-generated method stub + return null; + } + + @Override + public String getSourceSetter(OgnlContext arg0, Object arg1, Object arg2) { + // TODO Auto-generated method stub + return null; + } + + } +} diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsAnsMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsAnsMapper.xml new file mode 100644 index 0000000..f6c97ed --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsAnsMapper.xml @@ -0,0 +1,21 @@ + + + + + + AND DGNS_ANS_ID = #{dgnsAnsId} + AND DGNS_ASK_ID = #{dgnsAskId} + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsAskMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsAskMapper.xml new file mode 100644 index 0000000..111caf0 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsAskMapper.xml @@ -0,0 +1,20 @@ + + + + + + AND DGNS_ASK_ID = #{dgnsAskId} + AND DGNS_TY_CD = #{dgnsTyCd} + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsDtlMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsDtlMapper.xml new file mode 100644 index 0000000..abbc8d6 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsDtlMapper.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsListMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsListMapper.xml new file mode 100644 index 0000000..a3dc144 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsListMapper.xml @@ -0,0 +1,60 @@ + + + + + + + select DGNS_LIST_ID_SEQ.NEXTVAL from DUAL + + INSERT INTO CF_DGNS_LIST ( + DGNS_LIST_ID, DGNS_ASK_ID, DGNS_ANS_ID, DGNS_ID, + REG_ID, REG_DT, REC_ST + ) VALUES ( + #{dgnsListId}, #{dgnsAskId}, #{dgnsAnsId}, #{dgnsId}, + #{regId}, SYSDATE, 'Y' + ) + + + + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsMapper.xml new file mode 100644 index 0000000..528eed9 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/DgnsMapper.xml @@ -0,0 +1,71 @@ + + + + + + + select DGNS_ID_SEQ.NEXTVAL from DUAL + + INSERT INTO CF_DGNS ( + DGNS_ID, USER_ID, SK_TY_ID, OD_TOTAL_SCORE, SR_TOTAL_SCORE, PN_TOTAL_SCORE, WT_TOTAL_SCORE, DGNS_CNT, + OD_DGNS_DTL_ID, SR_DGNS_DTL_ID, PN_DGNS_DTL_ID, WT_DGNS_DTL_ID, + REG_ID, REG_DT, REC_ST + ) VALUES ( + #{dgnsId}, #{userId}, #{skTyId}, #{odTotalScore}, #{srTotalScore}, #{pnTotalScore}, #{wtTotalScore}, #{dgnsCnt}, + #{odDgnsDtlId}, #{srDgnsDtlId}, #{pnDgnsDtlId}, #{wtDgnsDtlId}, + #{regId}, SYSDATE, 'Y' + ) + + + + + + + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/ProdLikeMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/ProdLikeMapper.xml new file mode 100644 index 0000000..c5d4578 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/ProdLikeMapper.xml @@ -0,0 +1,60 @@ + + + + + + AND PROD_LIKE_ID = #{prodLikeId} + AND PROD_ID = #{prodId} + AND USER_ID = #{userId} + + + + PROD_LIKE_ID = #{prodLikeId} + + (PROD_ID = #{prodId} AND USER_ID = #{userId}) + + + + + + + select PROD_LIKE_ID_SEQ.NEXTVAL from DUAL + + INSERT INTO CF_PROD_LIKE (PROD_LIKE_ID, PROD_ID, USER_ID, REG_DT) VALUES (#{prodLikeId}, #{prodId}, #{userId}, SYSDATE) + + + + DELETE + FROM CF_PROD_LIKE + WHERE + + + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/clfd/SkTyMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/clfd/SkTyMapper.xml new file mode 100644 index 0000000..e53d09d --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/clfd/SkTyMapper.xml @@ -0,0 +1,19 @@ + + + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/BannerMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/BannerMapper.xml new file mode 100644 index 0000000..63efd7c --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/BannerMapper.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + insert into JCMS_BANNER ( + BANNER_ID, + BANNER_NM, + BANNER_TP, + FILE_ID, + SITE_ID, + BANNER_ALT, + LINK_URL, + START_DT, + END_DT, + REG_ID, + REG_DT + ) values ( + BANNER_ID_SEQ.NEXTVAL + , #{bannerNm} + , #{bannerTp} + , #{fileId} + , #{siteId} + , #{bannerAlt,jdbcType=VARCHAR} + , #{linkUrl,jdbcType=VARCHAR} + , #{startDt} + , #{endDt} + , #{regId} + , SYSDATE + ) + + + + update JCMS_BANNER set + BANNER_NM = #{bannerNm} + ,BANNER_TP = #{bannerTp} + ,FILE_ID = #{fileId} + ,SITE_ID = #{siteId} + ,BANNER_ALT = #{bannerAlt,jdbcType=VARCHAR} + ,LINK_URL = #{linkUrl,jdbcType=VARCHAR} + ,START_DT = #{startDt} + ,END_DT = #{endDt} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + BANNER_ID = #{bannerId} + + + + update JCMS_BANNER set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + BANNER_ID = #{bannerId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/BodArtiMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/BodArtiMapper.xml new file mode 100644 index 0000000..0f3ff32 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/BodArtiMapper.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + select ARTI_ID_SEQ.NEXTVAL AS artiId from DUAL + + insert into JCMS_BOD_ARTI ( + ARTI_ID, + BOD_ID, + DEPTH, + TITLE, + CONT, + SCRT_YN, + NOTI_YN, + FILE_ID, + FILE_PRVIEW, + HIT, + REG_ID, + REG_DT, + REG_NM + ) values ( + #{artiId} + , #{bodId} + , #{depth} + , #{title} + , #{cont} + , #{scrtYn} + , #{notiYn} + , #{fileId} + , #{filePrview} + , 0 + , #{regId} + , SYSDATE + , #{regNm} + ) + + + + update JCMS_BOD_ARTI + set BOD_ID = #{bodId} + ,TITLE = #{title} + ,CONT = #{cont} + ,SCRT_YN = #{scrtYn} + ,NOTI_YN = #{notiYn} + ,FILE_PRVIEW = #{filePrview} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + ARTI_ID = #{artiId} + + + + update JCMS_BOD_ARTI set + HIT = HIT+1 + where + ARTI_ID = #{artiId} + + + + update JCMS_BOD_ARTI set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + ARTI_ID = #{artiId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/BodCmntMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/BodCmntMapper.xml new file mode 100644 index 0000000..069c079 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/BodCmntMapper.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + select CMNT_ID_SEQ.NEXTVAL AS cmntId from DUAL + + insert into JCMS_BOD_CMNT ( + CMNT_ID + , ARTI_ID + ,CMNT_GRP + ,DEPTH + ,CONT + ,REG_ID + ,REG_DT + ) values ( + #{cmntId} + , #{artiId} + , #{cmntGrp} + , #{depth} + , #{cont} + , #{regId} + , SYSDATE + ) + + + + update JCMS_BOD_CMNT set + CMNT_GRP = #{cmntGrp} + where + CMNT_ID = #{cmntId} + + + + update JCMS_BOD_CMNT set + CONT = #{cont} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + CMNT_ID = #{cmntId} + + + + update JCMS_BOD_CMNT set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + CMNT_ID = #{cmntId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/BodMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/BodMapper.xml new file mode 100644 index 0000000..76c6a7a --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/BodMapper.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + select BOD_ID_SEQ.NEXTVAL AS bodId from DUAL + + insert into JCMS_BOD ( + BOD_ID, + BOD_TP, + BOD_NM, + BOD_HEADER, + BOD_FOOTER, + CMNT_YN, + ANSW_YN, + SCRT_YN, + ARTI_CNT, + FILE_UPLOAD_CNT, + NEW_ARTI_DT, + USE_ST, + REG_ID, + REG_DT + ) values ( + #{bodId} + ,#{bodTp} + , #{bodNm} + , #{bodHeader,jdbcType=VARCHAR} + , #{bodFooter,jdbcType=VARCHAR} + , #{cmntYn,jdbcType=CHAR} + , #{answYn,jdbcType=CHAR} + , #{scrtYn,jdbcType=CHAR} + , #{artiCnt} + , #{fileUploadCnt} + , #{newArtiDt} + , #{useSt} + , #{regId} + , SYSDATE + ) + + + + update JCMS_BOD set + BOD_NM = #{bodNm} + ,BOD_HEADER = #{bodHeader,jdbcType=VARCHAR} + ,BOD_FOOTER = #{bodFooter,jdbcType=VARCHAR} + ,BOD_TP = #{bodTp} + ,CMNT_YN = #{cmntYn,jdbcType=CHAR} + ,ANSW_YN = #{answYn,jdbcType=CHAR} + ,SCRT_YN = #{scrtYn,jdbcType=CHAR} + ,ARTI_CNT = #{artiCnt} + ,FILE_UPLOAD_CNT = #{fileUploadCnt} + ,NEW_ARTI_DT = #{newArtiDt} + ,USE_ST = #{useSt} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + BOD_ID = #{bodId} + + + + + + update JCMS_BOD set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + BOD_ID = #{bodId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/BodRoleMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/BodRoleMapper.xml new file mode 100644 index 0000000..6939e0e --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/BodRoleMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + insert into JCMS_BOD_ROLE ( + BOD_ID, + ROLE_AUTH, + AUTH_TP + ) values ( + #{bodId} + , #{roleAuth} + , #{authTp} + ) + + + + delete from JCMS_BOD_ROLE + where + BOD_ID = #{bodId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/CompanyMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/CompanyMapper.xml new file mode 100644 index 0000000..3e7d0bd --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/CompanyMapper.xml @@ -0,0 +1,43 @@ + + + + + + + + + + SELECT COMPANY_ID_SEQ.NEXTVAL AS companyId FROM DUAL + + INSERT INTO CF_COMPANY( + COMPANY_ID, COMPANY_GBN, COMPANY_NM, SAUPJA_NO, OWNER_NAME, TEL_NO, FAX_NO, COMPANY_SITE_URL, ADDR_M, ADDR_D, IMAGE_DIR, COMPANY_LOGO, REG_ID, REG_DT, REC_ST + ) VALUES ( + #{companyId}, #{companyGbn}, #{companyNm}, #{saupjaNo}, #{ownerName}, #{telNo}, #{faxNo}, #{companySiteUrl}, #{addrM}, #{addrD}, #{imageDir}, #{companyLogo}, #{regId}, SYSDATE, 'Y' + ) + + + + UPDATE CF_COMPANY + SET UPD_ID = #{updId} + , UPD_DT = SYSDATE + , COMPANY_GBN = #{companyGbn} + , COMPANY_NM = #{companyNm} + , SAUPJA_NO = #{saupjaNo} + , OWNER_NAME = #{ownerName} + , TEL_NO = #{telNo} + , FAX_NO = #{faxNo} + , COMPANY_SITE_URL = #{companySiteUrl} + , ADDR_M = #{addrM} + , ADDR_D = #{addrD} + , IMAGE_DIR = #{imageDir} + , COMPANY_LOGO = #{companyLogo} + WHERE COMPANY_ID = #{companyId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/ContBkmakMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/ContBkmakMapper.xml new file mode 100644 index 0000000..3289982 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/ContBkmakMapper.xml @@ -0,0 +1,23 @@ + + + + + + + insert into JCMS_CONT_BKMAK ( + CONT_ID, + USER_ID + ) values ( + #{contId} + , #{userId} + ) + + + + delete from JCMS_CONT_BKMAK + where + CONT_ID = #{contId} + and USER_ID = #{userId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/ContItemHistMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/ContItemHistMapper.xml new file mode 100644 index 0000000..cad2531 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/ContItemHistMapper.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + insert into JCMS_CONT_ITEM_HIST ( + CONT_ITEM_HIST_ID, + CONT_ITEM_NM, + CONT_ID, + CONT, + LANG_ID, + REG_ID, + REG_DT + ) values ( + CONT_ITEM_HIST_ID_SEQ.NEXTVAL + , #{contItemNm} + , #{contId} + , #{cont ,jdbcType=CLOB} + , #{langId} + , #{regId} + , SYSDATE + ) + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/ContItemMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/ContItemMapper.xml new file mode 100644 index 0000000..e2323de --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/ContItemMapper.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + insert into JCMS_CONT_ITEM ( + CONT_ITEM_ID, + CONT_ITEM_NM, + CONT_ID, + CONT, + LANG_ID, + REG_ID, + REG_DT + ) values ( + CONT_ITEM_ID_SEQ.NEXTVAL + , #{contItemNm} + , #{contId} + , #{cont ,jdbcType=CLOB} + , #{langId} + , #{regId} + , SYSDATE + ) + + + + update JCMS_CONT_ITEM set + CONT_ITEM_NM = #{contItemNm} + ,CONT = #{cont ,jdbcType=CLOB} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + CONT_ITEM_ID = #{contItemId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/ContMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/ContMapper.xml new file mode 100644 index 0000000..cb3e19c --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/ContMapper.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + select MAX(CONT_ID) from JCMS_CONT + + insert into JCMS_CONT ( + CONT_ID, + CONT_NM + ) values ( + #{contId} + ,#{contNm} + ) + + + + update JCMS_CONT set + CONT_NM = #{contNm} + where + CONT_ID = #{contId} + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/LangMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/LangMapper.xml new file mode 100644 index 0000000..2a90856 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/LangMapper.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + insert into JCMS_LANG ( + LANG_ID, + LANG_TP, + DISP_NM, + REG_DT, + REG_ID + ) values ( + LANG_ID_SEQ.NEXTVAL + , #{langTp} + , #{dispNm} + , SYSDATE + , #{regId} + ) + + + + update JCMS_LANG set + LANG_TP = #{langTp} + ,DISP_NM = #{dispNm} + ,UPD_DT = SYSDATE + ,UPD_ID = #{updId} + where + LANG_ID = #{langId} + + + + update JCMS_LANG set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + LANG_ID = #{langId} + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/MediaMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/MediaMapper.xml new file mode 100644 index 0000000..9131c2e --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/MediaMapper.xml @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + select MEDIA_ID_SEQ.NEXTVAL from DUAL + + insert into JCMS_MEDIA ( + MEDIA_ID, + MEDIA_NM, + HASH, + FILE_NM, + FILE_SIZE, + FILE_EXT, + MEDIA_TP, + SAVE_PATH, + SAVE_FILE_NM, + REG_ID, + REG_DT + ) values ( + #{mediaId} + , #{mediaNm} + , #{hash,jdbcType=VARCHAR} + , #{fileNm} + , #{fileSize} + , #{fileExt} + , #{mediaType} + , #{savePath} + , #{saveFileNm} + , #{regId} + , SYSDATE + ) + + + + update JCMS_MEDIA set + MEDIA_NM = #{mediaNm} + where + MEDIA_ID = #{mediaId} + + + + update JCMS_MEDIA set + HASH = #{hash} + where + MEDIA_ID = #{mediaId} + + + + update JCMS_MEDIA set + FILE_NM = #{fileNm}, + FILE_SIZE = #{fileSize}, + FILE_EXT = #{fileExt}, + MEDIA_TP = #{mediaType}, + SAVE_PATH = #{savePath}, + SAVE_FILE_NM = #{saveFileNm} + where + MEDIA_ID = #{mediaId} + + + + update JCMS_MEDIA set + DEL_ID = #{delId}, + DEL_DT = SYSDATE + where + MEDIA_ID = #{mediaId} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/MenuConnHistMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuConnHistMapper.xml new file mode 100644 index 0000000..ea1e65f --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuConnHistMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + insert into JCMS_MENU_CON_HIST ( + MENU_CONN_HIST_ID, + MENU_ID, + MENU_CONN_IP, + REG_ID, + REG_DT + ) values ( + MENU_CONN_HIST_ID_SEQ.NEXTVAL + , #{menuId} + , #{menuConnIp} + , #{regId,jdbcType=NUMERIC} + , SYSDATE + ) + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/MenuContMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuContMapper.xml new file mode 100644 index 0000000..507acf1 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuContMapper.xml @@ -0,0 +1,32 @@ + + + + + + + + + insert into JCMS_MENU_CONT ( + MENU_ID, + CONT_ID + ) values ( + #{menuId} + , #{contId} + ) + + + + delete from JCMS_MENU_CONT + where + MENU_ID = #{menuId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/MenuMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuMapper.xml new file mode 100644 index 0000000..71e487e --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuMapper.xml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + insert into JCMS_MENU ( + MENU_ID, + SITE_ID, + MENU_NM, + UPPER_MENU_ID, + MENU_URL, + MENU_DESC, + MENU_ORD, + MENU_TP, + LINK_URL, + LINK_TP, + CONT_DISP_TP, + BOD_ID, + USE_ST, + REG_ID, + REG_DT + ) values ( + MENU_ID_SEQ.NEXTVAL + , #{siteId} + , #{menuNm} + , #{upperMenuId,jdbcType=NUMERIC} + , #{menuUrl} + , #{menuDesc,jdbcType=VARCHAR} + , #{menuOrd} + , #{menuTp} + , #{linkUrl,jdbcType=VARCHAR} + , #{linkType} + , #{contDispType} + , #{bodId} + , 'Y' + , #{regId} + , SYSDATE + ) + + + + update JCMS_MENU set + MENU_NM = #{menuNm} + ,MENU_URL = #{menuUrl} + ,MENU_DESC = #{menuDesc,jdbcType=VARCHAR} + ,MENU_TP = #{menuTp} + ,LINK_URL = #{linkUrl,jdbcType=VARCHAR} + ,LINK_TP = #{linkType} + ,CONT_DISP_TP = #{contDispType} + ,BOD_ID = #{bodId} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + MENU_ID = #{menuId} + + + + update JCMS_MENU set + UPPER_MENU_ID = #{upperMenuId,jdbcType=VARCHAR} + ,MENU_ORD = #{menuOrd} + where + MENU_ID = #{menuId} + + + + update JCMS_MENU set + USE_ST = #{useSt} + where + MENU_ID = #{menuId} + + + + update JCMS_MENU set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + MENU_ID = #{menuId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/MenuPopupMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuPopupMapper.xml new file mode 100644 index 0000000..f54c9e8 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuPopupMapper.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + insert into JCMS_MENU_POPUP ( + POPUP_ID, + MENU_ID + ) values ( + #{popupId} + , #{menuId} + ) + + + + delete from JCMS_MENU_POPUP + where + MENU_ID = #{menuId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/MenuSatisMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuSatisMapper.xml new file mode 100644 index 0000000..cc7b7bc --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/MenuSatisMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + insert into JCMS_SATISFACTION ( + SITE_ID, + MENU_ID, + SCORE, + REG_ID, + REG_NM, + REG_DT, + REG_IP, + OPINION + ) values ( + #{siteId}, + #{menuId}, + #{score}, + #{regId}, + #{regNm, jdbcType=VARCHAR}, + SYSDATE, + #{regIp, jdbcType=VARCHAR}, + #{opinion, jdbcType=VARCHAR} + ) + + + + update JCMS_SATISFACTION set + SCORE = #{score}, + REG_NM = #{regNm, jdbcType=VARCHAR}, + REG_DT = SYSDATE, + REG_IP = #{regIp}, + OPINION = #{opinion} + where + SITE_ID = #{siteId} + and MENU_ID = #{menuId} + and REG_ID = #{regId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/PopupMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/PopupMapper.xml new file mode 100644 index 0000000..72b6c7d --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/PopupMapper.xml @@ -0,0 +1,148 @@ + + + + + + + + + + + + + insert into JCMS_POPUP ( + POPUP_ID, + POPUP_NM, + POPUP_TP, + FILE_ID, + IMG_MAP, + ALT, + LINK_URL, + START_DT, + END_DT, + WIDTH, + HEIGHT, + REG_ID, + REG_DT + ) values ( + POPUP_ID_SEQ.NEXTVAL + , #{popupNm} + , #{popupTp} + , #{fileId} + , #{imgMap,jdbcType=VARCHAR} + , #{alt,jdbcType=VARCHAR} + , #{linkUrl,jdbcType=VARCHAR} + , #{startDt} + , #{endDt} + , #{width,jdbcType=NUMERIC} + , #{height,jdbcType=NUMERIC} + , #{regId} + , SYSDATE + ) + + + + update JCMS_POPUP set + POPUP_NM = #{popupNm} + ,POPUP_TP = #{popupTp,jdbcType=VARCHAR} + ,FILE_ID = #{fileId} + ,IMG_MAP = #{imgMap,jdbcType=VARCHAR} + ,ALT = #{alt,jdbcType=VARCHAR} + ,LINK_URL = #{linkUrl,jdbcType=VARCHAR} + ,START_DT = #{startDt} + ,END_DT = #{endDt} + ,WIDTH = #{width,jdbcType=NUMERIC} + ,HEIGHT = #{height,jdbcType=NUMERIC} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + POPUP_ID = #{popupId} + + + + update JCMS_POPUP set + DEL_ID = #{delId}, + DEL_DT = SYSDATE + where + POPUP_ID = #{popupId} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/ProdMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/ProdMapper.xml new file mode 100644 index 0000000..f8c900c --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/ProdMapper.xml @@ -0,0 +1,107 @@ + + + + + + + + AND ( + + PROD_TY = #{prodTy} + + ) + + AND SK_TY LIKE '%'||#{skTy}||'%' + AND LOWER(PROD_NM) LIKE LOWER('%'||#{prodNmLike}||'%') + AND PROD_TY LIKE '%'||#{prodTyLike}||'%' + AND SK_TY LIKE '%'||#{skTyLike}||'%' + AND LOWER(PROD_IRDNT) LIKE LOWER('%'||#{prodIrdntLike}||'%') + AND REC_ST = #{recSt} + AND SHOW_ST = #{showSt} + + + + + + + + + + + + + SELECT PROD_ID_SEQ.NEXTVAL AS prodId FROM DUAL + + INSERT INTO CF_PROD( + PROD_ID, PROD_CD, PROD_NM, PROD_TY, PROD_CPCTY, PROD_PRC, PROD_ST, SHOW_ST, SK_TY, + PROD_IRDNT, PROD_DTL, PROD_HASHTAG, IMAGE_DIR, PROD_IMAGE, RCMD_NO, REG_ID, REG_DT, REC_ST + ) VALUES ( + #{prodId}, #{prodCd}, #{prodNm}, #{prodTy}, #{prodCpcty}, #{prodPrc}, #{prodSt}, #{showSt}, #{skTy}, + #{prodIrdnt}, #{prodDtl}, #{prodHashtag}, #{imageDir}, #{prodImage}, 0, #{regId}, SYSDATE, #{recSt} + ) + + + + UPDATE CF_PROD + SET UPD_ID = #{updId} + ,UPD_DT = SYSDATE + , PROD_CD = #{prodCd} + , PROD_NM = #{prodNm} + , PROD_TY = #{prodTy} + , PROD_CPCTY = #{prodCpcty} + , PROD_PRC = #{prodPrc} + , PROD_ST = #{prodSt} + , SHOW_ST = #{showSt} + , SK_TY = #{skTy} + , PROD_IRDNT = #{prodIrdnt} + , PROD_DTL = #{prodDtl} + , PROD_HASHTAG = #{prodHashtag} + , IMAGE_DIR = #{imageDir} + , PROD_IMAGE = #{prodImage} + , RCMD_NO = #{rcmdNo} + , REC_ST = #{recSt} + WHERE PROD_ID = #{prodId} + + + + UPDATE CF_PROD + SET DEL_ID = #{delId} + ,DEL_DT = SYSDATE + WHERE PROD_ID = #{prodId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/cms/SiteMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/cms/SiteMapper.xml new file mode 100644 index 0000000..cac1810 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/cms/SiteMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + select SITE_ID_SEQ.NEXTVAL from DUAL + + insert into JCMS_SITE ( + SITE_ID, + LANG_ID, + SITE_NM, + DOMAIN, + START_URL, + COPYRIGHT, + REG_DT, + REG_ID + ) values ( + #{siteId} + , #{langId} + , #{siteNm} + , #{domain} + , #{startUrl} + , #{copyright} + , SYSDATE + , #{regId} + ) + + + + update JCMS_SITE set + LANG_ID = #{langId} + ,SITE_NM = #{siteNm} + ,DOMAIN = #{domain} + ,START_URL = #{startUrl} + ,COPYRIGHT = #{copyright, jdbcType = CLOB} + ,UPD_DT = SYSDATE + ,UPD_ID = #{updId} + where + SITE_ID = #{siteId} + + + + update JCMS_SITE set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + SITE_ID = #{siteId} + + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/BaseSql..xml b/src/main/resources/config/mybatis/mappers/oracle/framework/BaseSql..xml new file mode 100644 index 0000000..951e1aa --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/BaseSql..xml @@ -0,0 +1,37 @@ + + + + + + + and REC_ST = 'Y' + + and REC_ST != 'D' + and REC_ST = #{recSt} + + + + , REC_ST + + , 'Y' + , #{recSt} + + + , REG_ID, REG_DT + , #{regId}, SYSDATE + + , REG_ID, REG_DT + , #{regId}, SYSDATE + + + , UPD_ID = #{updId} + , UPD_DT = SYSDATE + + + + DEL_ID = #{delId} + , DEL_DT = SYSDATE + , REC_ST = 'D' + + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/CdClsMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/CdClsMapper.xml new file mode 100644 index 0000000..892149f --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/CdClsMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + insert into JCMS_CD_CLS ( + CD_CLS_ID, + CD_CLS_NM, + CD_CLS_DESC, + USE_ST, + REG_ID, + REG_DT + ) values ( + #{cdClsId}, + #{cdClsNm}, + #{cdClsDesc}, + #{useSt}, + #{regId}, + SYSDATE + ) + + + + update JCMS_CD_CLS set + CD_CLS_NM = #{cdClsNm}, + CD_CLS_DESC = #{cdClsDesc}, + USE_ST = #{useSt}, + UPD_ID = #{updId}, + UPD_DT = SYSDATE + where + CD_CLS_ID = #{cdClsId} and + DEL_DT IS NULL + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/CdDtlMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/CdDtlMapper.xml new file mode 100644 index 0000000..b587066 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/CdDtlMapper.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + insert into JCMS_CD_DTL ( + CD_DTL_ID, + CD_ID, + CD_DTL_NM, + CD_DTL_LABEL, + CD_DTL_ORD, + CD_DTL_DESC, + USE_ST, + REG_ID, + REG_DT + ) values ( + #{cdDtlId}, + #{cdId}, + #{cdDtlNm}, + #{cdDtlLabel}, + #{cdDtlOrd}, + #{cdDtlDesc}, + #{useSt}, + #{regId}, + SYSDATE + ) + + + + update JCMS_CD_DTL set + CD_DTL_NM = #{cdDtlNm}, + CD_DTL_LABEL = #{cdDtlLabel}, + CD_DTL_ORD = #{cdDtlOrd}, + CD_DTL_DESC = #{cdDtlDesc}, + USE_ST = #{useSt}, + UPD_ID = #{updId}, + UPD_DT = SYSDATE + where + CD_ID = #{cdId} and + CD_DTL_ID = #{cdDtlId} and + DEL_DT IS NULL + + + + delete from JCMS_CD_DTL + where + CD_ID = #{cdId} and + CD_DTL_ID = #{cdDtlId} + + + + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/CdMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/CdMapper.xml new file mode 100644 index 0000000..78b12be --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/CdMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + insert into JCMS_CD ( + CD_ID, + CD_CLS_ID, + CD_NM, + CD_DESC, + USE_ST, + REG_ID, + REG_DT + ) values ( + #{cdId}, + #{cdClsId}, + #{cdNm}, + #{cdDesc,jdbcType=VARCHAR}, + #{useSt}, + #{regId}, + SYSDATE + ) + + + + update JCMS_CD set + CD_NM = #{cdNm}, + CD_DESC = #{cdDesc,jdbcType=VARCHAR}, + USE_ST = #{useSt}, + UPD_ID = #{updId}, + UPD_DT = SYSDATE + where + CD_ID = #{cdId,jdbcType=VARCHAR} and + DEL_DT IS NULL + + + + delete from JCMS_CD + where + CD_ID = #{cdId} and + CD_CLS_ID = #{cdClsId} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/FileItemMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/FileItemMapper.xml new file mode 100644 index 0000000..1a2fbfb --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/FileItemMapper.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + select FILE_ITEM_ID_SEQ.NEXTVAL from DUAL + + insert into JCMS_FILE_ITEM ( + ITEM_ID, + FILE_ID, + FILE_NM, + FILE_EXT, + MEDIA_TP, + FILE_SIZE, + SAVE_PATH, + SAVE_FILE_NM, + REG_ID, + REG_DT + ) values ( + #{itemId} + , #{fileId,jdbcType=NUMERIC} + , #{fileNm} + , #{fileExt} + , #{mediaTp} + , #{fileSize} + , #{savePath} + , #{saveFileNm} + , #{regId} + , SYSDATE + ) + + + + delete from JCMS_FILE_ITEM + where + FILE_ID = #{fileId} + and ITEM_ID = #{itemId} + + + + update JCMS_FILE_ITEM set + FILE_ID = #{fileId} + where + ITEM_ID = #{itemId,jdbcType=VARCHAR} + + + + update JCMS_FILE_ITEM set + DWN_CNT = DWN_CNT+1 + where + ITEM_ID = #{itemId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/FileMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/FileMapper.xml new file mode 100644 index 0000000..fa4fa54 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/FileMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + select FILE_ID_SEQ.NEXTVAL from DUAL + + insert into JCMS_FILE ( + FILE_ID, + REG_ID, + REG_DT + ) values ( + #{fileId} + , #{regId,jdbcType=VARCHAR} + , SYSDATE + ) + + + + update JCMS_FILE set + UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + FILE_ID = #{fileId} + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/LoginLogMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/LoginLogMapper.xml new file mode 100644 index 0000000..35f00d2 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/LoginLogMapper.xml @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select LOGIN_LOG_ID_SEQ.NEXTVAL AS loginLogId from DUAL + + insert into JCMS_LOGIN_LOG ( + LOGIN_LOG_ID, + USER_ID, + LOGIN_IP, + LOGIN_DT + ) values ( + #{loginLogId}, + #{user.userId}, + #{loginIp}, + SYSDATE + ) + + + + update JCMS_LOGIN_LOG set + LOGOUT_DT = SYSDATE + where + LOGIN_LOG_ID = #{loginLogId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/MngrMenuMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/MngrMenuMapper.xml new file mode 100644 index 0000000..e332a1d --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/MngrMenuMapper.xml @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + insert into JCMS_MNGR_MENU ( + MENU_ID, + MENU_NM, + UPPER_MENU_ID, + PGM_ID, + MENU_DESC, + MENU_ORD, + ICON, + REG_ID, + REG_DT + ) values ( + JCMS_MNGR_MENU_ID_SEQ.NEXTVAL + , #{menuNm} + , #{upperMenuId} + , #{pgmId} + , #{menuDesc} + , #{menuOrd} + , #{icon} + , #{regId} + , SYSDATE + ) + + + + update JCMS_MNGR_MENU set + MENU_NM = #{menuNm} + ,PGM_ID = #{pgmId} + ,MENU_DESC = #{menuDesc,jdbcType=VARCHAR} + ,ICON = #{icon} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + MENU_ID = #{menuId} + + + + update JCMS_MNGR_MENU set + UPPER_MENU_ID = #{upperMenuId,jdbcType=NUMERIC} + ,MENU_ORD = #{menuOrd} + where + MENU_ID = #{menuId} + + + + update JCMS_MNGR_MENU set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + MENU_ID = #{menuId} + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/MngrMenuRoleMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/MngrMenuRoleMapper.xml new file mode 100644 index 0000000..f0c889a --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/MngrMenuRoleMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + insert into JCMS_MNGR_MENU_ROLE ( + ROLE_AUTH + ,MENU_ID + ) values ( + #{roleAuth} + , #{menuId} + ) + + + + delete from JCMS_MNGR_MENU_ROLE + where + ROLE_AUTH = #{roleAuth} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/PgmMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/PgmMapper.xml new file mode 100644 index 0000000..55f622c --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/PgmMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + insert into JCMS_PGM ( + PGM_ID + ,PGM_NM + ,PGM_DESC + ,PGM_URL + ,USE_ST + ,REG_ID + ,REG_DT + ) values ( + PGM_ID_SEQ.NEXTVAL + , #{pgmNm} + , #{pgmDesc} + , #{pgmUrl} + , #{useSt} + , #{regId} + , SYSDATE + ) + + + + update JCMS_PGM set + PGM_NM = #{pgmNm} + ,PGM_DESC = #{pgmDesc} + ,PGM_URL = #{pgmUrl} + ,USE_ST = #{useSt} + ,UPD_ID = #{updId} + ,UPD_DT = SYSDATE + where + PGM_ID = #{pgmId} + + + + update JCMS_PGM set + DEL_ID = #{delId} + ,DEL_DT = SYSDATE + where + PGM_ID = #{pgmId} + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/RoleMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/RoleMapper.xml new file mode 100644 index 0000000..b587595 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/RoleMapper.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + insert into JCMS_ROLE( + ROLE_AUTH, + ROLE_NM, + ROLE_DESC, + REG_ID, + REG_DT + ) values( + #{roleAuth}, + #{roleNm}, + #{roleDesc}, + #{regId}, + SYSDATE + ) + + + + update JCMS_ROLE set + ROLE_NM = #{roleNm}, + ROLE_DESC = #{roleDesc}, + UPD_ID = #{updId}, + UPD_DT = SYSDATE + where + ROLE_AUTH = #{roleAuth} + + + + delete from JCMS_ROLE + where + ROLE_AUTH = #{roleAuth} + and ROLE_NM =#{roleNm} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/ScurRscMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/ScurRscMapper.xml new file mode 100644 index 0000000..b5f366a --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/ScurRscMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + insert into JCMS_SCUR_RSC ( + RSC_ID, + RSC_NM, + RSC_TP, + RSC_PATN, + RSC_DESC, + REG_ID, + REG_DT + ) values ( + #{rscId}, + #{rscNm}, + #{rscTp}, + #{rscPatn}, + #{rscDesc}, + #{regId}, + SYSDATE + ) + + + + update JCMS_SCUR_RSC set + RSC_ID = #{rscId}, + RSC_NM = #{rscNm}, + RSC_TP = #{rscTp}, + RSC_PATN = #{rscPatn}, + RSC_DESC = #{rscDesc}, + UPD_ID = #{updId}, + UPD_DT = SYSDATE + where + RSC_ID = #{rscId} + + + + delete from JCMS_SCUR_RSC + where + RSC_ID = #{rscId} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/ScurRscRoleMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/ScurRscRoleMapper.xml new file mode 100644 index 0000000..2dea27d --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/ScurRscRoleMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + insert into JCMS_SCUR_RSC_ROLE( + RSC_ID, + ROLE_AUTH, + REG_ID, + REG_DT + ) values ( + #{rscId}, + #{roleAuth}, + #{regId}, + SYSDATE + ) + + + + delete from JCMS_SCUR_RSC_ROLE + where + RSC_ID = #{rscId} + and ROLE_AUTH = #{roleAuth} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/UserMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/UserMapper.xml new file mode 100644 index 0000000..0bb28b3 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/UserMapper.xml @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + SELECT USER_ID_SEQ.NEXTVAL FROM DUAL + + INSERT INTO JCMS_USER ( + USER_ID, USER_LOGIN_ID, USER_PWD, USER_NM, GENDER, BIRTH, PHONE, EMAIL, + FAIL_CNT, USER_ST_CD, USER_TY_CD, REG_ID, REG_DT, REC_ST, + USER_DI, AUTH_KEY, AUTH_ST_CD + ) VALUES ( + #{userId}, #{userLoginId}, #{userPwd}, #{userNm}, #{gender}, #{birth}, #{phone}, #{email}, + 0, 1, #{userTyCd}, #{userId}, SYSDATE, 'Y', + #{userDi}, #{authKey}, #{authStCd} + ) + + + + UPDATE JCMS_USER + SET + UPD_ID = #{updId} + , UPD_DT = SYSDATE + , USER_PWD = #{userPwd} + , USER_NM = #{userNm} + , GENDER = #{gender} + , BIRTH = #{birth} + , PHONE = #{phone} + , EMAIL = #{email} + + , USER_ST_CD = #{userStCd} + , AUTH_ST_CD = #{authStCd} + WHERE + USER_ID = #{userId} + + + + UPDATE JCMS_USER + SET + DEL_ID = #{delId}, + DEL_DT = SYSDATE + WHERE + USER_ID = #{userId} + + + + UPDATE JCMS_USER + SET + FAIL_CNT = #{failCnt} + WHERE + USER_ID = #{userId} + + + + UPDATE JCMS_USER + SET + FAIL_CNT = 0 + WHERE + USER_ID = #{userId} + + + + UPDATE JCMS_USER + SET + USER_PWD = #{userPwd} + WHERE + USER_ID = #{userId} + + + + + + + + + + + + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/UserRoleMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/UserRoleMapper.xml new file mode 100644 index 0000000..c8ac96f --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/UserRoleMapper.xml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + insert into JCMS_USER_ROLE( + USER_ID, + ROLE_AUTH + ) values( + #{userId}, + #{roleAuth} + ) + + + + UPDATE JCMS_USER_ROLE SET + USER_ID = #{userId}, + ROLE_AUTH = #{roleAuth} + WHERE + USER_ID = #{userId} + + + + delete from JCMS_USER_ROLE + where USER_ID = #{userId} + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mappers/oracle/framework/WebLogMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/framework/WebLogMapper.xml new file mode 100644 index 0000000..33c8bf8 --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/framework/WebLogMapper.xml @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select WEB_LOG_ID_SEQ.NEXTVAL from DUAL + + insert into JCMS_WEB_LOG ( + WEB_LOG_ID, + LOGIN_LOG_ID, + REQ_TP, + REQ_URL, + REQ_MTHD, + REQ_PARAM, + REQ_IP, + REG_DT + ) values ( + #{webLogId}, + #{loginLog.loginLogId,jdbcType=NUMERIC}, + #{reqTp}, + #{reqUrl}, + #{reqMthd}, + #{reqParam}, + #{reqIp}, + SYSDATE + ) + + diff --git a/src/main/resources/config/mybatis/mappers/oracle/front/FrontMapper.xml b/src/main/resources/config/mybatis/mappers/oracle/front/FrontMapper.xml new file mode 100644 index 0000000..7740c3f --- /dev/null +++ b/src/main/resources/config/mybatis/mappers/oracle/front/FrontMapper.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/mybatis/mybatis-config.xml b/src/main/resources/config/mybatis/mybatis-config.xml new file mode 100644 index 0000000..81cb3bd --- /dev/null +++ b/src/main/resources/config/mybatis/mybatis-config.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/properties/application.properties b/src/main/resources/config/properties/application.properties new file mode 100644 index 0000000..cbaa4a7 --- /dev/null +++ b/src/main/resources/config/properties/application.properties @@ -0,0 +1,7 @@ +# 메티스 API +Metis.api.hostUrl = http://101.101.216.193:8111 +Metis.api.cmsKey = eyJ0eXBlIjoiQ09MT1JfRk9PRCIsImlzc3VlRGF0ZSI6MTYyMzEyODEzODg5OSwiYWxnIjoiSFM1MTIifQ.eyJzdWIiOiJDT0xPUl9GT09EIn0.s8Xzghs699wKloQGhNEHT74WzpIjxKepzQKx72wYsRx3pMxu6unQ-dMgVcdqJAzUzUkzytwI1xykKEw9FQIBJQ +Metis.api.tokenValue = eyJ0eXBlIjoiQ09MT1JfRk9PRCIsImlzc3VlRGF0ZSI6MTYyNDI0MjYzOTIxNiwiYWxnIjoiSFM1MTIifQ.eyJzdWIiOiJDT0xPUl9GT09EIn0.duJkSN1q-b1v0zO3IE0KQhs45GI9nwgbA9zhJFyMcgdCLMSDUoTP9q_o1XUk5cv4zULUncH2iOi4UKsg1n8AzA + +#Metis.api.cmsKey = 123 +#Metis.api.tokenValue = eyJ0eXBlIjoiQ09MT1JfRk9PRCIsImlzc3VlRGF0ZSI6MTYyMTMwNTU1MDc4NywiYWxnIjoiSFM1MTIifQ.eyJzdWIiOiJDT0xPUl9GT09EIn0.exiU24AMjEbf1CIaHHmWZ8xyox085RU9buz5mG1b6QQXbRXWd3GUExbgSF8anczLmdC0h6DN7Tz8ip0o7PBZXw \ No newline at end of file diff --git a/src/main/resources/config/properties/globals.properties b/src/main/resources/config/properties/globals.properties new file mode 100644 index 0000000..ce153fa --- /dev/null +++ b/src/main/resources/config/properties/globals.properties @@ -0,0 +1,27 @@ +#oracle +AppConf.db.DbType = oracle +AppConf.db.DriverClassName=oracle.jdbc.driver.OracleDriver +AppConf.db.Url=jdbc:oracle:thin:@colorfd.kr:15211:xe +#AppConf.db.Url=jdbc:oracle:thin:@localhost:1521:XE +AppConf.db.UserName=clfdShop +AppConf.db.Password=clfdShop3593 + +AppConf.filePath.common=C:/temp/jcms/file/common/ +AppConf.filePath.media=C:/temp/jcms/file/media/ +AppConf.filePath.video=C:/temp/jcms/file/video/ +AppConf.filePath.image=C:/clfd/product/image/ + +AppConf.filePath.preview=preview/ +AppConf.filePath.thumb=thumb/ +AppConf.fileNm.thumb=_thumb +AppConf.fileNm.web=_web + +email.username=clfd.help@gmail.com +email.password=etrznpqtlplnffou +email.auth.home.url=http://clfd.jinwoosi.co.kr +#석진 테스트 URL +#email.auth.home.url=http://test.jinwoosi.co.kr:17000 + +sms.api.url=http://221.139.14.136/APIV2/API/sms_send +sms.api.key=AXP5QY0O43K1120 +sms.api.sendNumber=0647421816 \ No newline at end of file diff --git a/src/main/resources/config/spring/context-common.xml b/src/main/resources/config/spring/context-common.xml new file mode 100644 index 0000000..4b11602 --- /dev/null +++ b/src/main/resources/config/spring/context-common.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + classpath:/config/message/message-common + + + + 60 + + + + + + + + + + + + + + + + + + + + + + + + + * + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/spring/context-datasource.xml b/src/main/resources/config/spring/context-datasource.xml new file mode 100644 index 0000000..54e3998 --- /dev/null +++ b/src/main/resources/config/spring/context-datasource.xml @@ -0,0 +1,97 @@ + + + + + + + classpath:/config/properties/globals.properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/config/spring/context-mybatis.xml b/src/main/resources/config/spring/context-mybatis.xml new file mode 100644 index 0000000..b321704 --- /dev/null +++ b/src/main/resources/config/spring/context-mybatis.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/spring/context-security.xml b/src/main/resources/config/spring/context-security.xml new file mode 100644 index 0000000..fa658fe --- /dev/null +++ b/src/main/resources/config/spring/context-security.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/config/spring/context-transaction.xml b/src/main/resources/config/spring/context-transaction.xml new file mode 100644 index 0000000..091448e --- /dev/null +++ b/src/main/resources/config/spring/context-transaction.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/config/springmvc-servlet.xml b/src/main/resources/config/springmvc-servlet.xml new file mode 100644 index 0000000..820cdb5 --- /dev/null +++ b/src/main/resources/config/springmvc-servlet.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + /WEB-INF/config/tiles/*.xml + + + + + + + + + + text/json;charset=UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000..9abcc32 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,60 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n + + + + + + + + + ${LOG_HOME}/jhc.log + + + %d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n + + + + + + ${LOG_HOME}/archived/jhc.%d{yyyy-MM-dd}.%i.log + + + 50MB + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/src/main/webapp/WEB-INF/config/tiles/clfd-intro-layout.xml b/src/main/webapp/WEB-INF/config/tiles/clfd-intro-layout.xml new file mode 100644 index 0000000..4dbe0fb --- /dev/null +++ b/src/main/webapp/WEB-INF/config/tiles/clfd-intro-layout.xml @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/config/tiles/clfd-layout.xml b/src/main/webapp/WEB-INF/config/tiles/clfd-layout.xml new file mode 100644 index 0000000..a2f3b39 --- /dev/null +++ b/src/main/webapp/WEB-INF/config/tiles/clfd-layout.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/config/tiles/clfd-login-layout.xml b/src/main/webapp/WEB-INF/config/tiles/clfd-login-layout.xml new file mode 100644 index 0000000..e3dcbb8 --- /dev/null +++ b/src/main/webapp/WEB-INF/config/tiles/clfd-login-layout.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/config/tiles/front-layout.xml b/src/main/webapp/WEB-INF/config/tiles/front-layout.xml new file mode 100644 index 0000000..2f13fe0 --- /dev/null +++ b/src/main/webapp/WEB-INF/config/tiles/front-layout.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/config/tiles/onePage-layout.xml b/src/main/webapp/WEB-INF/config/tiles/onePage-layout.xml new file mode 100644 index 0000000..a91c470 --- /dev/null +++ b/src/main/webapp/WEB-INF/config/tiles/onePage-layout.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/config/tiles/system-layout.xml b/src/main/webapp/WEB-INF/config/tiles/system-layout.xml new file mode 100644 index 0000000..7bf7bf2 --- /dev/null +++ b/src/main/webapp/WEB-INF/config/tiles/system-layout.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/lib/commons-email-1.3.jar b/src/main/webapp/WEB-INF/lib/commons-email-1.3.jar new file mode 100644 index 0000000..b4a6746 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/commons-email-1.3.jar differ diff --git a/src/main/webapp/WEB-INF/lib/ojdbc6.jar b/src/main/webapp/WEB-INF/lib/ojdbc6.jar new file mode 100644 index 0000000..767eba7 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/ojdbc6.jar differ diff --git a/src/main/webapp/WEB-INF/lib/sqljdbc4.jar b/src/main/webapp/WEB-INF/lib/sqljdbc4.jar new file mode 100644 index 0000000..d6b7f6d Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/sqljdbc4.jar differ diff --git a/src/main/webapp/WEB-INF/tag/jcms.tld b/src/main/webapp/WEB-INF/tag/jcms.tld new file mode 100644 index 0000000..c8d5fba --- /dev/null +++ b/src/main/webapp/WEB-INF/tag/jcms.tld @@ -0,0 +1,105 @@ + + + + Web Custom Tags + Web Tags + 1.0 + TileTags + http://www.jcms.net/tags + + + Cms Menu Info tag + cmsMenuInfoTag + kr.co.jinwoosi.clfd.conts.menu.tag.MenuInfoTag + empty + + siteId + true + true + + + menuId + true + true + + + snsYn + false + false + + + + + Sub Menu tag + sideMenuTag + kr.co.jinwoosi.clfd.framework.menu.tag.SideMenuTag + empty + + + + Menu Info tag + menuInfoTag + kr.co.jinwoosi.clfd.framework.menu.tag.MenuInfoTag + empty + + + + Code Detail + cdDtl + kr.co.jinwoosi.clfd.framework.cd.tag.CdDtlTag + scriptless + + type + false + false + + + event + false + false + + + labelYn + false + false + + + headerText + false + false + + + headerValue + false + false + + + id + false + false + + + name + false + false + + + styleClass + false + false + + + cd + true + true + + + value + false + true + + + diff --git a/src/main/webapp/WEB-INF/view/clfd/bod/notice/dtl.jsp b/src/main/webapp/WEB-INF/view/clfd/bod/notice/dtl.jsp new file mode 100644 index 0000000..0855a6e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/bod/notice/dtl.jsp @@ -0,0 +1,52 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    제목${bodArti.title}
    기업${bodArti.regNm}
    등록일${bodArti.regDate}조회수${bodArti.hit}
    내용${bodArti.cont}
    +
    + +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/bod/notice/list.jsp b/src/main/webapp/WEB-INF/view/clfd/bod/notice/list.jsp new file mode 100644 index 0000000..66a602a --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/bod/notice/list.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + +
    +
    +
    +
    +
    +
    공지사항
    +
    + + + + + + + +
    번호게시물ID기업제목등록일조회수
    +
    +
    +
    + + +
    +
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/dgns/dtl.jsp b/src/main/webapp/WEB-INF/view/clfd/dgns/dtl.jsp new file mode 100644 index 0000000..3adee72 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/dgns/dtl.jsp @@ -0,0 +1,96 @@ +<%@ page import="kr.co.jinwoosi.clfd.clfd.dgns.model.SkTy" %> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + +<% + String skTyLowerCase = ((SkTy)request.getAttribute("skTy")).getSkTyCd().toLowerCase(); +%> + + + + +
    +
    +
    +
    + +
    +
    ${dgnsTitle}
    +
    ${dgnsTime}
    +
    + +
    + + +
    +
    +
    +
    + + + ${user.userNm}님
    + 피부타입 +
    + + 당신의
    + 피부타입 +
    +
    +
    +
    + +
    +
    +
    +
    style="font-weight: bold;">건성(D)
    +
    +
    +
    +
    style="font-weight: bold;">지성(O)
    +
    +
    +
    style="font-weight: bold;">저항성(R)
    +
    +
    +
    +
    style="font-weight: bold;">민감성(S)
    +
    +
    +
    style="font-weight: bold;">비색소(N)
    +
    +
    +
    +
    style="font-weight: bold;">색소(P)
    +
    +
    +
    style="font-weight: bold;">탱탱한(T)
    +
    +
    +
    +
    style="font-weight: bold;">주름진(W)
    +
    +
    + ${resultText} +
    +
    +
    + +
    + +
    +
    + + + + + + diff --git a/src/main/webapp/WEB-INF/view/clfd/dgns/list.jsp b/src/main/webapp/WEB-INF/view/clfd/dgns/list.jsp new file mode 100644 index 0000000..9d99883 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/dgns/list.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + +
    +
    +
    +
    +
    +
    테스트 결과
    +
    + + + + + +
    차수테스트일시피부타입기능
    +
    +
    + + +
    +
    diff --git a/src/main/webapp/WEB-INF/view/clfd/dgns/survey.jsp b/src/main/webapp/WEB-INF/view/clfd/dgns/survey.jsp new file mode 100644 index 0000000..b0bd9e6 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/dgns/survey.jsp @@ -0,0 +1,54 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/src/main/webapp/WEB-INF/view/clfd/intro.jsp b/src/main/webapp/WEB-INF/view/clfd/intro.jsp new file mode 100644 index 0000000..c8385bc --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/intro.jsp @@ -0,0 +1,34 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/login/login.jsp b/src/main/webapp/WEB-INF/view/clfd/login/login.jsp new file mode 100644 index 0000000..c2f6fce --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/login/login.jsp @@ -0,0 +1,133 @@ +<%@ page import="kr.co.jinwoosi.clfd.framework.util.SessionHelper" %> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/main.jsp b/src/main/webapp/WEB-INF/view/clfd/main.jsp new file mode 100644 index 0000000..fc2a528 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/main.jsp @@ -0,0 +1,50 @@ +<%@ page import="kr.co.jinwoosi.clfd.framework.util.SessionHelper" %> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/pr/myPage.jsp b/src/main/webapp/WEB-INF/view/clfd/pr/myPage.jsp new file mode 100644 index 0000000..e914e95 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/pr/myPage.jsp @@ -0,0 +1,166 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    이름
    +
    + +
    +
    +
    +
    성별
    +
    + + + + +
    +
    +
    +
    생년월일
    +
    + +
    +
    +
    +
    +
    +
    기 본 정 보 변 경
    +
    +
    + +
    +
    +
    + +
    +
    비밀번호
    +
    +
    비 밀 번 호 변 경
    +
    +
    + + +
    +
    +
    + +
    +
    휴대폰 번호
    +
    + +
    +
    +
    +
    +
    +
    휴대폰 번호 변경
    +
    +
    + +
    +
    + + diff --git a/src/main/webapp/WEB-INF/view/clfd/prod/dtl.jsp b/src/main/webapp/WEB-INF/view/clfd/prod/dtl.jsp new file mode 100644 index 0000000..5363bd7 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/prod/dtl.jsp @@ -0,0 +1,111 @@ +<%@ page import="kr.co.jinwoosi.clfd.conts.prod.model.Prod" %> +<%@ page import="java.text.DecimalFormat" %> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +<% + DecimalFormat df = new DecimalFormat("#,###"); + Integer prodPrc = ((Prod) request.getAttribute("prod")).getProdPrc(); + Double prodCpcty = ((Prod) request.getAttribute("prod")).getProdCpcty(); + String formattedProdPrice = "0"; + String formattedDotCpcty = "0"; + if (prodPrc != null) { + formattedProdPrice = df.format(((Prod) request.getAttribute("prod")).getProdPrc()); + } + if (prodCpcty != null) { + formattedDotCpcty = df.format(((Prod) request.getAttribute("prod")).getProdCpcty()); + } +%> + + + + + +
    +
    +
    +
    + +
    +
    +
    +
    + <%--error--%> +
    + + +
    +
    +
    +
    + error +
    +
    + error +
    +
    +
    +
    ${prod.prodNm}
    +
    +
    <%=formattedProdPrice%>원
    +
    / <%=formattedDotCpcty%>ml
    +
    +
    +
    +
    피부타입
    +
    +
    +
    +
    제형
    +
    ${prod.prodTyNm}
    +
    +
    +
    성분
    +
    + ${prod.prodIrdnt} +
    +
    +
    +
    +
    +
    +
    +
    + <%-- + + --%> +
    +
    +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/prod/list.jsp b/src/main/webapp/WEB-INF/view/clfd/prod/list.jsp new file mode 100644 index 0000000..ef1dd84 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/prod/list.jsp @@ -0,0 +1,112 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + <%--
    + error +
    --%> +
    + + 카테고리 +
    + +
    + +
    + +
    + +
    +
    +
    +
    + +

    더 보기

    +
    +
    +
    +
    +
    + +
    + + + + + + + + + + + +
    diff --git a/src/main/webapp/WEB-INF/view/clfd/user/findId.jsp b/src/main/webapp/WEB-INF/view/clfd/user/findId.jsp new file mode 100644 index 0000000..f3a3d82 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/user/findId.jsp @@ -0,0 +1,73 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + +
    +
    +
    + +
    +
    컬러푸드 아이디찾기
    +
    SMS 인증을 통해
    계정 아이디를 알려드립니다.
    +
    +
    +
    +<%-- --%> + +
    인증요청
    +
    +
    + +
    인증확인
    +
    +
    + 인증을 완료해주세요. +
    + +
    +<%--
    메일 발송
    --%> + +
    +
    +
    또는
    +
    +
    + + +
    +
    + +
    +
    + +
    +<%--
    소개
    --%> +<%--
    API
    --%> +<%--
    개인정보처리방침
    --%> +<%--
    정책
    --%> +<%--
    고객센터
    --%> +
    +
    +<%--
    --%> +<%-- --%> +<%--
    --%> +
    © 2021 Jinwoosoftinnovation
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/user/findPassword.jsp b/src/main/webapp/WEB-INF/view/clfd/user/findPassword.jsp new file mode 100644 index 0000000..d1a4529 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/user/findPassword.jsp @@ -0,0 +1,76 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + +
    +
    +
    + +
    +
    컬러푸드 비밀번호찾기
    +
    SMS 인증을 통해
    임시비밀번호를 알려드립니다.
    +
    +
    +
    + +<%-- --%> +
    +
    + <%-- --%> + +
    인증요청
    +
    +
    + +
    인증확인
    +
    +
    + 인증을 완료해주세요. +
    + +
    +<%--
    임시비밀번호 발송
    --%> + +
    +
    +
    또는
    +
    +
    + + +
    +
    + +
    +
    + +
    +<%--
    소개
    --%> +<%--
    API
    --%> +<%--
    개인정보처리방침
    --%> +<%--
    정책
    --%> +<%--
    고객센터
    --%> +
    +
    +<%--
    --%> +<%-- --%> +<%--
    --%> +
    © 2021 Jinwoosoftinnovation
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/clfd/user/join.jsp b/src/main/webapp/WEB-INF/view/clfd/user/join.jsp new file mode 100644 index 0000000..bf73f31 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/user/join.jsp @@ -0,0 +1,205 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + +
    +
    +
    + +
    +
    + +
    중복확인
    + + + + + +
    + +
    인증요청
    +<%-- --%> +
    +
    + +
    인증확인
    +
    +
    + 인증을 완료해주세요. +
    + +<%-- --%> +
    +
    +
    가입
    +
    취소
    + +
    +
    가입하면 COLOR FOOD의 + 약관, + 데이터 정책 및 + 쿠키 정책에 동의하게 됩니다.
    +
    +
    +
    +
    +
    계정이 있으신가요?
    + +
    +
    +
    + +
    +<%--
    소개
    --%> +<%--
    API
    --%> +<%--
    개인정보처리방침
    --%> +<%--
    정책
    --%> +<%--
    고객센터
    --%> +
    +
    +<%--
    --%> +<%-- --%> +<%--
    --%> +
    © 2021 Jinwoosoftinnovation
    +
    +
    +
    + + diff --git a/src/main/webapp/WEB-INF/view/clfd/user/joinCorp.jsp b/src/main/webapp/WEB-INF/view/clfd/user/joinCorp.jsp new file mode 100644 index 0000000..6c10236 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/clfd/user/joinCorp.jsp @@ -0,0 +1,259 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + +
    +
    +
    + +
    +
    +
    [ 관리자 정보 입력 ]
    + +
    중복확인
    + + + + + +
    + +
    인증요청
    +
    +
    + +
    인증확인
    +
    +
    + 인증을 완료해주세요. +
    + +
    +
    + +
    +
    [ 기업 정보 입력 ]
    + + + + + + + + + +
    +
    +
    가입
    +
    취소
    + +
    +
    가입하면 COLOR FOOD의 + 약관, + 데이터 정책 및 + 쿠키 정책에 동의하게 됩니다. +
    +
    +
    +
    +
    +
    계정이 있으신가요?
    + + + +
    +
    +
    + +
    + <%--
    소개
    --%> + <%--
    API
    --%> + <%--
    개인정보처리방침
    --%> + <%--
    정책
    --%> + <%--
    고객센터
    --%> +
    +
    + <%--
    + +
    --%> +
    © 2021 Jinwoosoftinnovation
    +
    + +
    +
    + + diff --git a/src/main/webapp/WEB-INF/view/error/error.jsp b/src/main/webapp/WEB-INF/view/error/error.jsp new file mode 100644 index 0000000..68feac2 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/error/error.jsp @@ -0,0 +1,67 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + +
    +
    + + +
    +

    error_outline 페이지를 찾을 수 없습니다.

    + +

    + 입력하신 주소가 정확한지 다시 한번 확인해 주시기 바랍니다.

    + + + 이전페이지로

    + 메인화면으로 이동 +
    + + 이전페이지로

    + 메인화면으로 이동 +
    +
    +

    +
    +
    + +
    +

    error_outline 접근권한이 없습니다..

    +

    + 귀하는 방문하시려는 페이지에 대한 접근 권한이 없습니다.
    + 입력하신 주소가 정확한지 다시 한번 확인해 주시기 바랍니다.

    + + + 이전페이지로

    + 메인화면으로 이동 +
    + + 이전페이지로

    + 메인화면으로 이동 +
    +
    +

    +
    +
    + + +
    +

    error_outline 프로그램 실행 중 오류가 발생하였습니다.

    +

    + 빠른 시일 내에 조치하도록 하겠습니다.

    + + + 이전페이지로

    + 메인화면으로 이동 +
    + + 이전페이지로

    + 메인화면으로 이동 +
    +
    +

    + + + +
    +
    diff --git a/src/main/webapp/WEB-INF/view/front/bod/cmnt.jsp b/src/main/webapp/WEB-INF/view/front/bod/cmnt.jsp new file mode 100644 index 0000000..bfe3eca --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/bod/cmnt.jsp @@ -0,0 +1,285 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + +

    댓글

    +
    + +
    + + +
    + + + + +
    +
    + +
    +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/bod/normal/answ.jsp b/src/main/webapp/WEB-INF/view/front/bod/normal/answ.jsp new file mode 100644 index 0000000..c709ddd --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/bod/normal/answ.jsp @@ -0,0 +1,116 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + +
    + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + 게시글 등록하기 +
    원본글 제목
    제목
    비밀글 여부
    내용
    + +
    첨부
    +
    업로드 + +
    +
    + +
    +
    +
    + + +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/bod/normal/insert.jsp b/src/main/webapp/WEB-INF/view/front/bod/normal/insert.jsp new file mode 100644 index 0000000..c5718cf --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/bod/normal/insert.jsp @@ -0,0 +1,120 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    게시글 등록하기

    +
    제목
    비밀글 여부checked>공지글 여부checked>
    + +
    첨부
    +
    업로드 + +
    + +
    + +
    +
    +
    + + +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/bod/normal/list.jsp b/src/main/webapp/WEB-INF/view/front/bod/normal/list.jsp new file mode 100644 index 0000000..8df0b05 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/bod/normal/list.jsp @@ -0,0 +1,187 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + +
    +
    +

    ${bod.bodNm} 게시판

    +
    +
    + + + + +
    +
    +
    +
    +
    + 총 게시물 : +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    + ${menu.menuNm} +
    번호제목첨부작성자등록일조회수
    + +
    + + + +
    + + +
    +
    + +
    +
    + ${bod.bodFooter} +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/bod/normal/update.jsp b/src/main/webapp/WEB-INF/view/front/bod/normal/update.jsp new file mode 100644 index 0000000..be54306 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/bod/normal/update.jsp @@ -0,0 +1,166 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + 게시글 수정하기 +
    제목
    비밀글 여부checked>공지글 여부checked>
    + +
    첨부
    +
    업로드 + +
    + +
    + +
    +
    +
    + + +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/bod/normal/view.jsp b/src/main/webapp/WEB-INF/view/front/bod/normal/view.jsp new file mode 100644 index 0000000..32ef041 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/bod/normal/view.jsp @@ -0,0 +1,122 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    제목
    작성자 등록일
    내용
    ${bodArti.cont}
    첨부
    첨부 + +
    +
    +
    + + +
    + +
    + + + +
    +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/cont.jsp b/src/main/webapp/WEB-INF/view/front/cont.jsp new file mode 100644 index 0000000..9b33089 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/cont.jsp @@ -0,0 +1,85 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + + +
    + + +
    +
    + 선택 +
      + + + +
    • +
      + +
    • +
      +
      +
      +
    +
    + + + +
    >
    +
    + +
    >
    +
    +
    +
    +
    + +
    + +
    +
    + 선택 +
      + + + +
    • +
      + +
    • +
      +
      +
      +
    +
    + + + +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/main.jsp b/src/main/webapp/WEB-INF/view/front/main.jsp new file mode 100644 index 0000000..4b72c56 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/main.jsp @@ -0,0 +1,23 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/menu1/sub1.jsp b/src/main/webapp/WEB-INF/view/front/menu1/sub1.jsp new file mode 100644 index 0000000..27a70f2 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/menu1/sub1.jsp @@ -0,0 +1,29 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> +
    + +
    ^
    ^
    ^
    ^
    ^
    ^
    ^
    ^
    ^
    ^
    ^
    ^
    눌러보세요~ +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/menu1/sub2.jsp b/src/main/webapp/WEB-INF/view/front/menu1/sub2.jsp new file mode 100644 index 0000000..0a2a0cc --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/menu1/sub2.jsp @@ -0,0 +1,2 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/menu1/sub3.jsp b/src/main/webapp/WEB-INF/view/front/menu1/sub3.jsp new file mode 100644 index 0000000..df46abb --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/menu1/sub3.jsp @@ -0,0 +1,3 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> +sub3 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/menu1/sub4.jsp b/src/main/webapp/WEB-INF/view/front/menu1/sub4.jsp new file mode 100644 index 0000000..b807a3c --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/menu1/sub4.jsp @@ -0,0 +1,3 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> +sub4 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/menu2/sub1.jsp b/src/main/webapp/WEB-INF/view/front/menu2/sub1.jsp new file mode 100644 index 0000000..e623cf6 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/menu2/sub1.jsp @@ -0,0 +1,3 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> +sub1 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/menu2/sub2.jsp b/src/main/webapp/WEB-INF/view/front/menu2/sub2.jsp new file mode 100644 index 0000000..d9e783f --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/menu2/sub2.jsp @@ -0,0 +1,3 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> +sub2 \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/front/preparing.jsp b/src/main/webapp/WEB-INF/view/front/preparing.jsp new file mode 100644 index 0000000..3426fba --- /dev/null +++ b/src/main/webapp/WEB-INF/view/front/preparing.jsp @@ -0,0 +1,5 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/include/tags.jspf b/src/main/webapp/WEB-INF/view/include/tags.jspf new file mode 100644 index 0000000..b8ab170 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/include/tags.jspf @@ -0,0 +1,9 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> +<%@ taglib prefix="tg" uri="http://www.jcms.net/tags" %> diff --git a/src/main/webapp/WEB-INF/view/login/login.jsp b/src/main/webapp/WEB-INF/view/login/login.jsp new file mode 100644 index 0000000..cfb32e7 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/login/login.jsp @@ -0,0 +1,13 @@ + +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + +Insert title here + + +test + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/page/media/image.jsp b/src/main/webapp/WEB-INF/view/page/media/image.jsp new file mode 100644 index 0000000..a4f2564 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/page/media/image.jsp @@ -0,0 +1,101 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    +
    +
    +
    +
    +
    +
    + 미디어명 + +
    +
    +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/banner/list.jsp b/src/main/webapp/WEB-INF/view/system/banner/list.jsp new file mode 100644 index 0000000..36d077f --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/banner/list.jsp @@ -0,0 +1,403 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + +
    +
    +
    +
    + 배너 타입 + + +
    +
    + +
    +
    + 배너명 + +
    +
    +
    +
    + 링크 URL + +
    +
    +
    +
    +
    +
    +
    + 시작일 +
    + + ~ + +
    +
    +
    +
    +
    + 종료일 +
    + + ~ + +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/bod/insert.jsp b/src/main/webapp/WEB-INF/view/system/bod/insert.jsp new file mode 100644 index 0000000..b1840f6 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/bod/insert.jsp @@ -0,0 +1,215 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +
    +

    play_arrow  등록

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    게시판명 *
    게시판 형태 * + +
    쓰기 그룹 + + + +
    + * 권한이 있는 경우에만 쓰기기능이 가능 +
    공지관리 그룹 + + + +
    + * 권한이 있는 경우에만 공지글 등록이 가능 +
    댓글 기능 + + * 게시판 댓글쓰기기능 사용여부 +
    비밀글 기능 + + * 게시판 비밀글기능 사용여부 +
    비밀글관리 그룹 + + + +
    + * 권한이 있는 경우에 비밀글 조회가 가능 +
    답변 기능 + + * 게시판 답변기능 사용여부 +
    답변관리 그룹 + + + +
    + * 권한이 있는 경우에만 답변 등록이 가능 +
    머리글 + * 게시판 머리글 쓰기 기능 + +
    바닥글 + * 게시판 바닥글 쓰기 기능 + +
    업로드 수 + + 새글 표시 일시 + +
    게시물 수 + + 사용유무 + +
    +
    + +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/bod/list.jsp b/src/main/webapp/WEB-INF/view/system/bod/list.jsp new file mode 100644 index 0000000..fc103b4 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/bod/list.jsp @@ -0,0 +1,174 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    +
    +
    +
    +
    + 게시판 형태 + +
    +
    +
    +
    + 게시판명 + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/bod/view.jsp b/src/main/webapp/WEB-INF/view/system/bod/view.jsp new file mode 100644 index 0000000..95a7db1 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/bod/view.jsp @@ -0,0 +1,232 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  수정

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    게시판명 *
    게시판 형태 * + +
    쓰기그룹 + + + + + + + + + +
    공지관리 그룹 + + + + + + + + + +
    + * 권한이 있는 경우에만 공지글 등록이 가능합니다. +
    뎃글 기능 + checked data-toggle="toggle" data-on="사용" data-off=" "> +
    비밀글 기능 + checked data-toggle="toggle" data-on="사용" data-off=" "> +
    비밀글관리 그룹 + + + + + + + + + +
    + * 권한이 있는 경우에 비밀글 조회가 가능합니다. +
    답변 기능 + checked data-toggle="toggle" data-on="사용" data-off=" "> +
    답변관리 그룹 + + + + + + + + + +
    + * 체크하지 않을 시 누구나 답변이 가능합니다. +
    머리글 + +
    바닥글 + +
    업로드 수 + + 새글 표시 일시 + +
    게시물 수 + + 사용유무 + checked data-toggle="toggle" data-on="사용" data-off=" "> +
    +
    + +
    +
    +
    +
    +
    + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/bodArti/list.jsp b/src/main/webapp/WEB-INF/view/system/bodArti/list.jsp new file mode 100644 index 0000000..be667df --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/bodArti/list.jsp @@ -0,0 +1,364 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    +
    +
    +
    +
    + 게시판구분 + +
    +
    +
    +
    + 제목 + +
    +
    +
    +
    + 내용 + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/cd/mng.jsp b/src/main/webapp/WEB-INF/view/system/cd/mng.jsp new file mode 100644 index 0000000..c397864 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/cd/mng.jsp @@ -0,0 +1,614 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  코드 분류

    +
    + +
    +
    +
    +
    + + +
    + +
    +
    + + +
    +
    +
    +
    + +
    +
    + + + + + +
    +
    +
    + +
    +
    + + +
    +
    +
    +

    play_arrow  상세 코드

    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/cmsMenu/changeOrder.jsp b/src/main/webapp/WEB-INF/view/system/cmsMenu/changeOrder.jsp new file mode 100644 index 0000000..a94e780 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/cmsMenu/changeOrder.jsp @@ -0,0 +1,125 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + + + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  메뉴 순서 변경

    +
    +
    +
    +
    +
    +
    +
      +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/cmsMenu/list.jsp b/src/main/webapp/WEB-INF/view/system/cmsMenu/list.jsp new file mode 100644 index 0000000..8252c5e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/cmsMenu/list.jsp @@ -0,0 +1,703 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  사이트별 메뉴 목록

    +
    +
    +
    +
    +
    + 사이트 구분 + + + + + + + +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + +
    메뉴명URL메뉴 타입기능
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/company/list.jsp b/src/main/webapp/WEB-INF/view/system/company/list.jsp new file mode 100644 index 0000000..5cbdd45 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/company/list.jsp @@ -0,0 +1,298 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  기업 정보

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    기업구분${companyInfo.companyGbnNm}기업명${companyInfo.companyNm}
    사업자번호 + + 대표자명${companyInfo.ownerName}
    전화번호 + + 팩스번호 + +
    도메인 주소${companyInfo.companySiteUrl}주소${companyInfo.addrM} ${companyInfo.addrD}
    +
    +
    + +
    +
    +
    + + +
    + + + diff --git a/src/main/webapp/WEB-INF/view/system/cont/insert.jsp b/src/main/webapp/WEB-INF/view/system/cont/insert.jsp new file mode 100644 index 0000000..6a17670 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/cont/insert.jsp @@ -0,0 +1,209 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +
    +

    play_arrow  등록

    +
    +
    + + + + + + + + +
    콘텐츠명 *
    +
    +
    + +
    + +
    +
    +
    + + + + + + + + +
    콘텐츠 항목명 + +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + +
    +
    +
    + + + + + + + + +
    콘텐츠 항목명 + +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + +
    콘텐츠 항목명 + +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/cont/list.jsp b/src/main/webapp/WEB-INF/view/system/cont/list.jsp new file mode 100644 index 0000000..2424171 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/cont/list.jsp @@ -0,0 +1,95 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  목록

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    즐겨찾기콘텐츠명${lang.langTpCd.cdDtlNm}기능
    + + bookmarks + + ${diff.CONT_NM} + + + + +
    +
    + +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/cont/view.jsp b/src/main/webapp/WEB-INF/view/system/cont/view.jsp new file mode 100644 index 0000000..311ca45 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/cont/view.jsp @@ -0,0 +1,392 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +
    +

    play_arrow  수정

    +
    + 즐겨찾기 +
    +
    +
    + + + + + + + + +
    콘텐츠명*
    +
    +
    + +
    + + + + + + + +
    +
    +
    + + + + + + + + +
    콘텐츠 항목명 + +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + + + + + + + +
    +
    +
    + + + + + + + + +
    콘텐츠 항목명 + +
    + + +
    +
    + +
    +
    +
    + +
    +
    +
    + + + + + + + + +
    콘텐츠 항목명 + +
    + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/efficacy/list.jsp b/src/main/webapp/WEB-INF/view/system/efficacy/list.jsp new file mode 100644 index 0000000..c43e660 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/efficacy/list.jsp @@ -0,0 +1,243 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    +
    +
    +
    +
    + 효능 구분 + +
    +
    +
    +
    + 효능명 + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    + diff --git a/src/main/webapp/WEB-INF/view/system/emailLog/emailSend.jsp b/src/main/webapp/WEB-INF/view/system/emailLog/emailSend.jsp new file mode 100644 index 0000000..8b0705f --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/emailLog/emailSend.jsp @@ -0,0 +1,300 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +

    play_arrow  Email 발송

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +
    Email 주소 *
    Email 제목 *
    수신자명
    +
    +
    +
    +
    +
    +
    +
    + * Email 내용입력 + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +

    play_arrow  Email 단체발송

    +
    + + + +
    +
    + +
    + + + + + + + + + + + + + + +
    수신자명Email삭제
    +
    + +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/emailLog/list.jsp b/src/main/webapp/WEB-INF/view/system/emailLog/list.jsp new file mode 100644 index 0000000..a3e85e3 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/emailLog/list.jsp @@ -0,0 +1,264 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + + +
    +
    + +
    +
    +
    +
    +
    + 발신자명 + +
    +
    +
    +
    + 수신자명 + +
    +
    +
    +
    + 수신자 Email + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/init.jsp b/src/main/webapp/WEB-INF/view/system/init.jsp new file mode 100644 index 0000000..2ad07ac --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/init.jsp @@ -0,0 +1,75 @@ + +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ page import="org.springframework.web.context.WebApplicationContext, org.springframework.web.context.support.WebApplicationContextUtils" %> +<%@ page import="kr.co.jinwoosi.clfd.framework.cd.service.CdDtlService" %> +<%@ page import="kr.co.jinwoosi.clfd.framework.menu.service.MenuService"%> +<%@ page import="kr.co.jinwoosi.clfd.conts.plan.service.PlanService"%> +<%@ page import="kr.co.jinwoosi.clfd.conts.bod.service.BodService"%> +<%@ page import="kr.co.jinwoosi.clfd.conts.menu.service.*" %> +<%@ page import="egovframework.rte.fdl.security.securedobject.impl.SecuredObjectServiceImpl"%> + + +<% + ServletContext servletContext = request.getSession ().getServletContext(); + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + + + CdDtlService cdDtlService = (CdDtlService) wac.getBean ("cdDtlService"); + cdDtlService.initJson(); + + /*PlanService planService = (PlanService) wac.getBean("planService"); + planService.initJson();*/ + + BodService bodService = (BodService) wac.getBean ("bodService"); + bodService.initJson(); + + MenuService menuService = (MenuService) wac.getBean ("menuService"); + menuService.initRoleMenuList(); + + kr.co.jinwoosi.clfd.conts.menu.service.MenuService cmsMenuService = (kr.co.jinwoosi.clfd.conts.menu.service.MenuService) wac.getBean ("cmsMenuService"); + cmsMenuService.initJson((long)13); + + System.out.println("################## 공통코드 조기화"); + System.out.println("################## 게시판목록 조기화"); + System.out.println("################## 권한별 메뉴 조기화"); + +// SecuredObjectServiceImpl service = (SecuredObjectServiceImpl) wac.getBean("securedObjectService"); +// Object obj2 = wac.getBean("requestMap"); + +// // System.out.println("################## "+obj2.getClass().toString()); +// // System.out.println("################## 값 : "+service.getRolesAndUrl()); +// System.out.println("################## 값(전) : "+obj2); +// obj2 = service.getRolesAndUrl(); +// System.out.println("################## 값(후) : "+obj2); + + + + + //wac.getBean("requestMap") = service.getRolesAndUrl(); + +// UrlResourcesMapFactoryBean urlbean = (UrlResourcesMapFactoryBean) wac.getBean("requestMap"); +// System.out.println("################## "+urlbean); + +%> + + + + +Title of the document + + + +관련정보가 재로드 되었습니다. + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/lang/list.jsp b/src/main/webapp/WEB-INF/view/system/lang/list.jsp new file mode 100644 index 0000000..0c01d3e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/lang/list.jsp @@ -0,0 +1,279 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + + +
    +
    + +
    +
    +
    +
    + 언어 구분 + + +
    +
    +
    +
    + 표시명 + +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/login.jsp b/src/main/webapp/WEB-INF/view/system/login.jsp new file mode 100644 index 0000000..2998036 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/login.jsp @@ -0,0 +1,188 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    +
    +
    +
    +
    +
    + + +
    + +
    + +
    +
    + +
    +
    + LOGIN +
    +
    +
    + +
    + +
    + + +
    +
    +
    +
    +
    + +
    + +
    + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/main.jsp b/src/main/webapp/WEB-INF/view/system/main.jsp new file mode 100644 index 0000000..17dfc18 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/main.jsp @@ -0,0 +1,327 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    +
    + +
    +
    +
    +

    play_arrow  시스템 공지사항

    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    +

    play_arrow  게시판 관리

    + +
    +
    +
    +
    + + + +
    +
    +
    +

    play_arrow  게시물 관리

    + +
    +
    +
    + + +
    +
    +
    +

    play_arrow  컬러푸드 사용자 접속자 통계

    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/media/list.jsp b/src/main/webapp/WEB-INF/view/system/media/list.jsp new file mode 100644 index 0000000..785549c --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/media/list.jsp @@ -0,0 +1,265 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + + +
    +
    + +
    +
    +
    +
    + 미디어명 + +
    +
    +
    +
    + 해쉬 URL + +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/menu/changeOrder.jsp b/src/main/webapp/WEB-INF/view/system/menu/changeOrder.jsp new file mode 100644 index 0000000..216badd --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/menu/changeOrder.jsp @@ -0,0 +1,124 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + + + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  메뉴 순서 변경

    +
    +
    +
    +
    +
    +
    +
      +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/menu/list.jsp b/src/main/webapp/WEB-INF/view/system/menu/list.jsp new file mode 100644 index 0000000..a0b653f --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/menu/list.jsp @@ -0,0 +1,311 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  메뉴 목록

    +
    + +
    +
    +
    + + + + + + + + + + +
    메뉴명프로그램명프로그램 URL기능
    +
    +
    +
    + + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/pgm/list.jsp b/src/main/webapp/WEB-INF/view/system/pgm/list.jsp new file mode 100644 index 0000000..ffb12c6 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/pgm/list.jsp @@ -0,0 +1,283 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + +
    +
    +
    +
    + 프로그램명 + +
    +
    +
    +
    + 프로그램 URL + +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/plan/list.jsp b/src/main/webapp/WEB-INF/view/system/plan/list.jsp new file mode 100644 index 0000000..a3fa2f3 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/plan/list.jsp @@ -0,0 +1,546 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +
    +
    +

    play_arrow  일정

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + + +
    +
    +
    +
    +
    +
    + 사이트 구분 + +
    +
    +
    +
    +
    +
    + 일정  구분      + +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/popup/list.jsp b/src/main/webapp/WEB-INF/view/system/popup/list.jsp new file mode 100644 index 0000000..63bae2e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/popup/list.jsp @@ -0,0 +1,420 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + +
    +
    +
    +
    + 팝업 타입 + + +
    +
    +
    +
    + 팝업명 + +
    +
    +
    +
    + 링크 URL + +
    +
    +
    +
    +
    +
    +
    + 시작일 +
    + + ~ + +
    +
    +
    +
    +
    + 종료일 +
    + + ~ + +
    +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/prod/prodlist.jsp b/src/main/webapp/WEB-INF/view/system/prod/prodlist.jsp new file mode 100644 index 0000000..f9cfcc0 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/prod/prodlist.jsp @@ -0,0 +1,501 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    +
    +
    +
    +
    + 제품명 + +
    +
    +
    +
    + 제형 + +
    +
    +
    +
    + 사용여부 + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    + + + + +
    + + diff --git a/src/main/webapp/WEB-INF/view/system/satis/menuSatisList.jsp b/src/main/webapp/WEB-INF/view/system/satis/menuSatisList.jsp new file mode 100644 index 0000000..c9f4662 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/satis/menuSatisList.jsp @@ -0,0 +1,267 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  메뉴별 만족도 통계

    +
    +
    +
    +
    +
    + 사이트 구분 + +
    +
    + +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    메뉴명URL점수카운트
    +
    + +
    + + + + + + + + + + + + + + + + +
    등록자등록시간점수의견
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/satis/skinTypeList.jsp b/src/main/webapp/WEB-INF/view/system/satis/skinTypeList.jsp new file mode 100644 index 0000000..ebc6b58 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/satis/skinTypeList.jsp @@ -0,0 +1,55 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  피부테스트 결과 피부타입 통계

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/scur/loginLogList.jsp b/src/main/webapp/WEB-INF/view/system/scur/loginLogList.jsp new file mode 100644 index 0000000..3360135 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/scur/loginLogList.jsp @@ -0,0 +1,311 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    +
    +
    +
    +
    +
    + 사용자 ID + +
    +
    +
    +
    + 사용자명 + +
    +
    +
    +
    + 로그인 IP + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/scur/roleList.jsp b/src/main/webapp/WEB-INF/view/system/scur/roleList.jsp new file mode 100644 index 0000000..da61ffa --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/scur/roleList.jsp @@ -0,0 +1,417 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  권한

    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/scur/scurRscList.jsp b/src/main/webapp/WEB-INF/view/system/scur/scurRscList.jsp new file mode 100644 index 0000000..09c8e5e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/scur/scurRscList.jsp @@ -0,0 +1,199 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  보안자원

    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/site/list.jsp b/src/main/webapp/WEB-INF/view/system/site/list.jsp new file mode 100644 index 0000000..8273439 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/site/list.jsp @@ -0,0 +1,287 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + +
    +
    +
    +
    + 사이트명 + +
    +
    +
    +
    + 시작 URL + +
    +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/stats/menuStatsList.jsp b/src/main/webapp/WEB-INF/view/system/stats/menuStatsList.jsp new file mode 100644 index 0000000..721c7b0 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/stats/menuStatsList.jsp @@ -0,0 +1,206 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  메뉴별 접속 통계

    +
    +
    +
    +
    +
    + 사이트 구분 + +
    +
    + +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + +
    메뉴명URL퍼센트카운트
    +
    +
    +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/stats/siteStatsList.jsp b/src/main/webapp/WEB-INF/view/system/stats/siteStatsList.jsp new file mode 100644 index 0000000..2631e45 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/stats/siteStatsList.jsp @@ -0,0 +1,108 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    +
    +
    +
    +
    + 사이트 구분 + +
    +
    +
    +
    + 일정기간 + + ~ + +
    +
    +
    +
    + + +
    +
    + +
    +
    +
    +

    사용자 접속통계

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/user/list.jsp b/src/main/webapp/WEB-INF/view/system/user/list.jsp new file mode 100644 index 0000000..1860439 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/user/list.jsp @@ -0,0 +1,402 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow 검색조건

    +
    +
    +
    +
    +
    +
    + 사용자구분 + +
    +
    +
    +
    + 사용자 ID + +
    +
    +
    +
    + 사용자명 + +
    +
    +
    +
    + 사용상태 + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/user/mypage.jsp b/src/main/webapp/WEB-INF/view/system/user/mypage.jsp new file mode 100644 index 0000000..1a3b79e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/user/mypage.jsp @@ -0,0 +1,184 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + + + + + + + +
    +
    +
    +
    +
    +

    play_arrow  마이페이지

    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/webLog/list.jsp b/src/main/webapp/WEB-INF/view/system/webLog/list.jsp new file mode 100644 index 0000000..4887b59 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/webLog/list.jsp @@ -0,0 +1,259 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + +
    + +
    + +
    +
    +
    +
    +
    +

    play_arrow  검색조건

    +
    + +
    +
    +
    +
    +
    + 사용자 ID + +
    +
    +
    +
    + 사용자명 + +
    +
    +
    + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/system/window/icons.jsp b/src/main/webapp/WEB-INF/view/system/window/icons.jsp new file mode 100644 index 0000000..5ac3a63 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/system/window/icons.jsp @@ -0,0 +1,67 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/clfd/footer.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/footer.jsp new file mode 100644 index 0000000..0ed7621 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/footer.jsp @@ -0,0 +1,6 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/clfd/header.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/header.jsp new file mode 100644 index 0000000..14e3f3f --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/header.jsp @@ -0,0 +1,83 @@ +<%@ page import="kr.co.jinwoosi.clfd.framework.util.SessionHelper" %> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/clfd/intro-layout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/intro-layout.jsp new file mode 100644 index 0000000..aa85323 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/intro-layout.jsp @@ -0,0 +1,40 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +<% + response.setHeader("pragma","No-cache"); + response.setHeader("Cache-Control","no-cache"); + response.addHeader("Cache-Control","No-store"); + response.setDateHeader("Expires",1L); +%> + + + + + + + + + + + + + + 컬러푸드 시스템 + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/clfd/layout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/layout.jsp new file mode 100644 index 0000000..627b6fe --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/layout.jsp @@ -0,0 +1,171 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +<% + response.setHeader("pragma","No-cache"); + response.setHeader("Cache-Control","no-cache"); + response.addHeader("Cache-Control","No-store"); + response.setDateHeader("Expires",1L); +%> + + + + + + + + + + + + + + + 컬러푸드 시스템 + + + + + + + + + +<%-- --%> +<%-- --%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + + diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/clfd/login-layout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/login-layout.jsp new file mode 100644 index 0000000..d30f78f --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/clfd/login-layout.jsp @@ -0,0 +1,100 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +<% + response.setHeader("pragma","No-cache"); + response.setHeader("Cache-Control","no-cache"); + response.addHeader("Cache-Control","No-store"); + response.setDateHeader("Expires",1L); +%> + + + + + + + + + + + + + + 컬러푸드 시스템 + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/banner.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/banner.jsp new file mode 100644 index 0000000..8f39113 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/banner.jsp @@ -0,0 +1,40 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf"%> + + +
    +
      +
    • +
    • +
    • +
    • +
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/footer.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/footer.jsp new file mode 100644 index 0000000..409385c --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/footer.jsp @@ -0,0 +1,26 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    +
    +
    + (주)진우소프트이노베이션

    + tel : 064-742-1816

    + address : 제주특별자치도 제주시 구남로 55 +
    +
    +
    + +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/header.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/header.jsp new file mode 100644 index 0000000..9a0badb --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/header.jsp @@ -0,0 +1,44 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + + + +
    + + + 로그인 + + + + 로그아웃 + / + 관리자페이지 + + + + + +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/layout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/layout.jsp new file mode 100644 index 0000000..d522870 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/layout.jsp @@ -0,0 +1,49 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + +Front + + + + + + + + + + + + + + + + +
    + +
    + +
    +
    + +
    + <%-- --%> +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/main-sidebar.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/main-sidebar.jsp new file mode 100644 index 0000000..2e3c6ed --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/main-sidebar.jsp @@ -0,0 +1,11 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + + +
      +
    • +
    +
    +
    +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/subHeader.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/subHeader.jsp new file mode 100644 index 0000000..ee13b73 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/subHeader.jsp @@ -0,0 +1,67 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + +
    + +
    +
    + + +
    +
    + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/front/subLayout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/front/subLayout.jsp new file mode 100644 index 0000000..a0f9fd7 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/front/subLayout.jsp @@ -0,0 +1,53 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + +Front + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + <%-- --%> +
    + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/onePage/layout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/onePage/layout.jsp new file mode 100644 index 0000000..0a26744 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/onePage/layout.jsp @@ -0,0 +1,65 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + + +Title of the document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/onePage/loginLayout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/onePage/loginLayout.jsp new file mode 100644 index 0000000..bdbf7e8 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/onePage/loginLayout.jsp @@ -0,0 +1,59 @@ +<%@ page import="kr.co.jinwoosi.clfd.framework.util.SessionHelper" %> +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +<% + response.setHeader("pragma","No-cache"); + response.setHeader("Cache-Control","no-cache"); + response.addHeader("Cache-Control","No-store"); + response.setDateHeader("Expires",1L); +%> + + + + + + + +Title of the document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/system/footer.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/system/footer.jsp new file mode 100644 index 0000000..2d3aa8e --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/system/footer.jsp @@ -0,0 +1,5 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> +
    + JCMS +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/system/header.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/system/header.jsp new file mode 100644 index 0000000..e50085b --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/system/header.jsp @@ -0,0 +1,28 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + +
    + +
    \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/system/layout.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/system/layout.jsp new file mode 100644 index 0000000..a24aa5d --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/system/layout.jsp @@ -0,0 +1,123 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + + + + + + +CMS + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<%-- + +--%> + + + + +
    + + + +
    + +
    + + + + +
    +
    + +
    + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/tilesLayout/system/main-sidebar.jsp b/src/main/webapp/WEB-INF/view/tilesLayout/system/main-sidebar.jsp new file mode 100644 index 0000000..59ea125 --- /dev/null +++ b/src/main/webapp/WEB-INF/view/tilesLayout/system/main-sidebar.jsp @@ -0,0 +1,9 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@ include file="/WEB-INF/view/include/tags.jspf" %> + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..1ddb35d --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,143 @@ + + + JCMS + + index.html + index.jsp + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + springSecurityFilterChain + /* + + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + utf-8 + + + + encodingFilter + * + + + + + + + + + + + + + + + + + contextConfigLocation + classpath*:/config/spring/context-*.xml + + + org.springframework.web.context.ContextLoaderListener + + + + org.springframework.security.web.session.HttpSessionEventPublisher + + + + kr.co.jinwoosi.clfd.framework.listener.InitJsonListener + + + + + action + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath*:/config/springmvc-servlet.xml + + 1 + + + action + / + + + + + + + + + + + + + + + + SpringSecurityLoginFilter + kr.co.jinwoosi.clfd.framework.security.filter.SpringSecurityLoginFilter + + 로그인 실패시 반활 될 URL설정 + loginURL + /login/loginForm.mng + + + 로그인 처리 URL설정 + loginProcessURL + /login/login.mng + + + + + + SessionFilter + kr.co.jinwoosi.clfd.framework.security.filter.SessionFilter + + 로그인 실패시 반활 될 URL설정 + loginURL + /login/loginForm.mng + + + + SessionFilter + /system/* + + + + SpringSecurityLoginFilter + *.mng + + + + 180 + + + + + + 404 + /error/error.mng?errorCode=404 + + + 405 + /error/error.mng?errorCode=405 + + + java.lang.Throwable + /error/error.mng?errorCode=unknown + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml_7 b/src/main/webapp/WEB-INF/web.xml_7 new file mode 100644 index 0000000..f47e431 --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml_7 @@ -0,0 +1,135 @@ + + + JCMS + + index.html + index.jsp + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + springSecurityFilterChain + /* + + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + utf-8 + + + + encodingFilter + *.mng + + + encodingFilter + *.json + + + encodingFilter + *.do + + + + + contextConfigLocation + classpath*:/config/spring/context-*.xml + + + org.springframework.web.context.ContextLoaderListener + + + + org.springframework.security.web.session.HttpSessionEventPublisher + + + + InitJsonListener + + + + + action + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath*:/config/springmvc-servlet.xml + + 1 + + + action + *.mng + + + action + *.json + + + action + *.do + + + + SpringSecurityLoginFilter + SpringSecurityLoginFilter + + 로그인 실패시 반활 될 URL설정 + loginURL + /login/loginForm.mng + + + 로그인 처리 URL설정 + loginProcessURL + /login/login.mng + + + + + + SessionFilter + SessionFilter + + 로그인 실패시 반활 될 URL설정 + loginURL + /login/loginForm.mng + + + + SessionFilter + /system/* + + + + SpringSecurityLoginFilter + *.mng + + + + 30 + + + + + + 404 + /error/error.mng?errorCode=404 + + + 405 + /error/error.mng?errorCode=405 + + + java.lang.Throwable + /error/error.mng?errorCode=unknown + + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/web.xml_8 b/src/main/webapp/WEB-INF/web.xml_8 new file mode 100644 index 0000000..684fe0e --- /dev/null +++ b/src/main/webapp/WEB-INF/web.xml_8 @@ -0,0 +1,135 @@ + + + JCMS + + index.html + index.jsp + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + springSecurityFilterChain + /* + + + + encodingFilter + org.springframework.web.filter.CharacterEncodingFilter + + encoding + utf-8 + + + + encodingFilter + *.mng + + + encodingFilter + *.json + + + encodingFilter + *.do + + + + + contextConfigLocation + classpath*:/config/spring/context-*.xml + + + org.springframework.web.context.ContextLoaderListener + + + + org.springframework.security.web.session.HttpSessionEventPublisher + + + + InitJsonListener + + + + + action + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + classpath*:/config/springmvc-servlet.xml + + 1 + + + action + *.mng + + + action + *.json + + + action + *.do + + + + SpringSecurityLoginFilter + SpringSecurityLoginFilter + + 로그인 실패시 반활 될 URL설정 + loginURL + /login/loginForm.mng + + + 로그인 처리 URL설정 + loginProcessURL + /login/login.mng + + + + + + SessionFilter + SessionFilter + + 로그인 실패시 반활 될 URL설정 + loginURL + /login/loginForm.mng + + + + SessionFilter + /system/* + + + + SpringSecurityLoginFilter + *.mng + + + + 30 + + + + + + 404 + /error/error.mng?errorCode=404 + + + 405 + /error/error.mng?errorCode=405 + + + java.lang.Throwable + /error/error.mng?errorCode=unknown + + + \ No newline at end of file diff --git a/src/main/webapp/ckeditor/CHANGES.md b/src/main/webapp/ckeditor/CHANGES.md new file mode 100644 index 0000000..f751de9 --- /dev/null +++ b/src/main/webapp/ckeditor/CHANGES.md @@ -0,0 +1,1065 @@ +CKEditor 4 Changelog +==================== + +## CKEditor 4.5.8 + +New Features: + +* [#12440](http://dev.ckeditor.com/ticket/12440): Added the [`config.colorButton_enableAutomatic`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-colorButton_enableAutomatic) option to allow hiding the "Automatic" option in the [color picker](http://ckeditor.com/addon/colorbutton). + +Fixed Issues: + +* [#10448](http://dev.ckeditor.com/ticket/10448): Fixed: Lack of scrollbar in the [right-to-left text direction](http://ckeditor.com/addon/bidi). +* [#12707](http://dev.ckeditor.com/ticket/12707): Fixed: The order of table elements does not comply with the HTML specification. +* [#13756](http://dev.ckeditor.com/ticket/13756): [Edge] Fixed: Context menus are cut-off. + +## CKEditor 4.5.7 + +New Features: + +* [#14327](http://dev.ckeditor.com/ticket/14327): Added Swiss German localization. Thanks to [Miro Grenda](https://twitter.com/mirogrenda)! + +Fixed Issues: + +* [#13816](http://dev.ckeditor.com/ticket/13816): Introduced a new strategy for Filling Character handling to avoid changes in DOM. This fixes the following issues: + * [#12727](http://dev.ckeditor.com/ticket/12727): [Blink] `IndexSizeError` when using the [Div Editing Area](http://ckeditor.com/addon/divarea) and [Content Templates](http://ckeditor.com/addon/templates) plugins. + * [#13377](http://dev.ckeditor.com/ticket/13377): [Widget](http://ckeditor.com/addon/widget) plugin issue when typing in Korean. + * [#13389](http://dev.ckeditor.com/ticket/13389): [Blink] [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) fails when the cursor is next to an `
    ` tag. + * [#13513](http://dev.ckeditor.com/ticket/13513): [Blink, WebKit] [Div Editing Area](http://ckeditor.com/addon/divarea) and [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) throw an error when an image is the only data in the editor. +* [#13884](http://dev.ckeditor.com/ticket/13884): [Firefox] Fixed: Copying and pasting a table results in just the first cell being pasted. +* [#14234](http://dev.ckeditor.com/ticket/14234): Fixed: URL input field is not marked as required in the [Media Embed](http://ckeditor.com/addon/embed) dialog. + +## CKEditor 4.5.6 + +New Features: + +* Introduced the [`CKEDITOR.tools.getCookie()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-getCookie) and [`CKEDITOR.tools.setCookie()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-setCookie) methods for accessing cookies. +* Introduced the [`CKEDITOR.tools.getCsrfToken()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-getCsrfToken) method. The CSRF token is now automatically sent by the [File Browser](http://ckeditor.com/addon/filebrowser) and [File Tools](http://ckeditor.com/addon/filetools) plugins during file uploads. The server-side upload handlers may check it and use it to additionally secure the communication. + +Other Changes: + +* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type): + - New features: + - CKEditor [Language](http://ckeditor.com/addon/language) plugin support. + - CKEditor [Placeholder](http://ckeditor.com/addon/placeholder) plugin support. + - [Drag&Drop](http://sdk.ckeditor.com/samples/fileupload.html) support. + - **Experimental** [GRAYT](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-grayt_autoStartup) (Grammar As You Type) functionality. + - Fixed issues: + * [#98](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/98): SCAYT affects dialog double-click. Fixed in SCAYT core. + * [#102](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/102): SCAYT core performance enhancements. + * [#104](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/104): SCAYT's spans leak into the clipboard and after pasting. + * [#105](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/105): A JavaScript error fired in case of multiple instances of CKEditor on one page. + * [#107](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/107): SCAYT should not check non-editable parts of content. + * [#108](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/108): Latest SCAYT copies the ID of the editor element to the iframe. + * SCAYT stops working when CKEditor [Undo plugin](http://ckeditor.com/addon/undo) not enabled. + * Issue with pasting SCAYT markup in CKEditor. + * SCAYT stops working after pressing the *Cancel* button in the WSC dialog. + +## CKEditor 4.5.5 + +Fixed Issues: + +* [#13887](https://dev.ckeditor.com/ticket/13887): Fixed: [Link](http://ckeditor.com/addon/link) plugin alters the `target` attribute value. Thanks to [SamZiemer](https://github.com/SamZiemer)! +* [#12189](http://dev.ckeditor.com/ticket/12189): Fixed: The [Link](http://ckeditor.com/addon/link) plugin dialog does not display the subject of email links if the subject parameter is not lowercase. +* [#9192](http://dev.ckeditor.com/ticket/9192): Fixed: An `undefined` string is appended to an email address added with the [Link](http://ckeditor.com/addon/link) plugin if subject and email body are empty and [`config.emailProtection`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-emailProtection) is set to `encode`. +* [#13790](https://dev.ckeditor.com/ticket/13790): Fixed: It is not possible to destroy the editor `