Browse Source

faq crud

pull/9/head
qkr7828(박재우) 11 months ago
parent
commit
82d69eb940
  1. 47
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/controller/CnsFaqController.java
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/model/FaqListModel.java
  3. 73
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqService.java
  4. 7
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqBasRepository.java
  5. 33
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqQueryRepository.java

47
pav-server/src/main/java/com/palnet/biz/api/cns/faq/controller/CnsFaqController.java

@ -2,44 +2,73 @@ package com.palnet.biz.api.cns.faq.controller;
import java.util.List; import java.util.List;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.cns.faq.model.FaqListRQModel; import com.palnet.biz.api.cns.faq.model.FaqListRQModel;
import com.palnet.biz.api.cns.faq.model.FaqListRSModel; import com.palnet.biz.api.cns.faq.model.FaqListModel;
import com.palnet.biz.api.cns.faq.service.CnsFaqService; import com.palnet.biz.api.cns.faq.service.CnsFaqService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@RestController @RestController
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping(value = "/api/bas/cns") @RequestMapping(value = "/api/bas/cns/faq")
public class CnsFaqController { public class CnsFaqController {
private final CnsFaqService service; private final CnsFaqService service;
/*FAQ 목록 조회*/
@PostMapping("/list") @PostMapping("/list")
public List<FaqListRSModel> getFaqList(@RequestBody FaqListRQModel model) { public ResponseEntity<? extends BasicResponse> getFaqList(@RequestBody FaqListRQModel model) {
List<FaqListRSModel> result = null; List<FaqListModel> result = null;
result = service.getFaqList(model); result = service.getFaqList(model);
return result; return ResponseEntity.ok().body(new SuccessResponse<>(result));
} }
/*FAQ 상세 조회*/
@GetMapping("/detail") @GetMapping("/detail")
public FaqListRSModel getFaqDetail(int sno) { public ResponseEntity<FaqListModel> getFaqDetail(int sno) {
FaqListRSModel result = null; FaqListModel result = null;
result = service.getFaqDetail(sno); result = service.getFaqDetail(sno);
return result; return ResponseEntity.ok().body(result);
}
/*FAQ 작성*/
@PostMapping("/insert")
public void insertFaq(@RequestBody FaqListModel model) {
service.insertFaq(model);
}
/*FAQ 업데이트*/
@PostMapping("/update")
public void updateFaq(@RequestBody FaqListModel model) {
service.updateFaq(model);
}
/*FAQ 논리 삭제*/
@PostMapping("/delete")
public void deleteFaq(int sno) {
service.deleteFaq(sno);
} }
} }

4
pav-server/src/main/java/com/palnet/biz/api/cns/faq/model/FaqListRSModel.java → pav-server/src/main/java/com/palnet/biz/api/cns/faq/model/FaqListModel.java

@ -5,9 +5,9 @@ import java.time.Instant;
import lombok.Data; import lombok.Data;
@Data @Data
public class FaqListRSModel { public class FaqListModel {
private int qnaSno; private int faqSno;
private String category; private String category;

73
pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqService.java

@ -1,13 +1,19 @@
package com.palnet.biz.api.cns.faq.service; package com.palnet.biz.api.cns.faq.service;
import java.time.Instant;
import java.util.List; import java.util.List;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.palnet.biz.api.cns.faq.model.FaqListModel;
import com.palnet.biz.api.cns.faq.model.FaqListRQModel; import com.palnet.biz.api.cns.faq.model.FaqListRQModel;
import com.palnet.biz.api.cns.faq.model.FaqListRSModel; import com.palnet.biz.jpa.entity.CnsFaqBas;
import com.palnet.biz.jpa.repository.cns.CnsFaqBasRepository; import com.palnet.biz.jpa.repository.cns.CnsFaqBasRepository;
import com.palnet.biz.jpa.repository.cns.CnsFaqQueryRepository; import com.palnet.biz.jpa.repository.cns.CnsFaqQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -21,22 +27,79 @@ public class CnsFaqService {
private final CnsFaqBasRepository cnsFaqBasRepository; private final CnsFaqBasRepository cnsFaqBasRepository;
public List<FaqListRSModel> getFaqList(FaqListRQModel model){ public List<FaqListModel> getFaqList(FaqListRQModel model){
List<FaqListModel> result = query.getFaqList(model.getCategory(), model.getWord());
List<FaqListRSModel> result = query.getFaqList(model.getCategory(), model.getWord()); if(result == null || result.size() < 1) throw new CustomException(ErrorCode.DATA_NO);
return result; return result;
} }
public FaqListRSModel getFaqDetail(int sno){ public FaqListModel getFaqDetail(int sno){
cnsFaqBasRepository.updateViewCnt(sno); cnsFaqBasRepository.updateViewCnt(sno);
FaqListRSModel result = query.getFaqDetail(sno); FaqListModel result = query.getFaqDetail(sno);
if(result == null) throw new CustomException(ErrorCode.DATA_NO);
return result; return result;
} }
@Transactional
public void insertFaq(FaqListModel model){
CnsFaqBas bas = new CnsFaqBas();
bas.setCreateDt(Instant.now());
bas.setUpdateDt(Instant.now());
bas.setCategory(model.getCategory());
bas.setContent(model.getContent());
bas.setCreateUserId(model.getCreateUserId());
bas.setDelYn(model.getDelYn());
bas.setExpsrYn(model.getExpsrYn());
bas.setTitle(model.getTitle());
bas.setUpdateUserId(model.getUpdateUserId());
bas.setViewCnt(0);
try {
cnsFaqBasRepository.save(bas);
} catch(Exception e) {
throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
}
}
@Transactional
public void updateFaq(FaqListModel model) {
FaqListModel prevData = query.getFaqDetail(model.getFaqSno());
if(prevData == null) throw new CustomException(ErrorCode.DATA_NO);
if(model.getCategory() != null) prevData.setCategory(model.getCategory());
if(model.getTitle() != null) prevData.setTitle(model.getTitle());
if(model.getContent() != null) prevData.setContent(model.getContent());
if(model.getExpsrYn() != null) prevData.setExpsrYn(model.getExpsrYn());
if(model.getUpdateUserId() != null) prevData.setUpdateUserId(model.getUpdateUserId());
prevData.setUpdateDt(Instant.now());
try {
query.updateFaq(prevData);
} catch(Exception e) {
throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
}
}
public void deleteFaq(int sno) {
int delCnt = cnsFaqBasRepository.deleteFaq(sno);
if(delCnt == 0) throw new CustomException(ErrorCode.DATA_NO);
}
} }

7
pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqBasRepository.java

@ -17,6 +17,11 @@ public interface CnsFaqBasRepository extends JpaRepository<CnsFaqBas, Integer>{
@Transactional @Transactional
@Query("update CnsFaqBas c set c.viewCnt = c.viewCnt + 1" + @Query("update CnsFaqBas c set c.viewCnt = c.viewCnt + 1" +
"where c.faqSno = :sno") "where c.faqSno = :sno")
void updateViewCnt(@Param("sno") int sno); int updateViewCnt(@Param("sno") int sno);
@Modifying
@Transactional
@Query("update CnsFaqBas c set c.delYn = 'Y' " +
"where c.faqSno = :sno")
int deleteFaq(@Param("sno") int sno);
} }

33
pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqQueryRepository.java

@ -4,7 +4,7 @@ import java.util.List;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.palnet.biz.api.cns.faq.model.FaqListRSModel; import com.palnet.biz.api.cns.faq.model.FaqListModel;
import com.palnet.biz.jpa.entity.QCnsFaqBas; import com.palnet.biz.jpa.entity.QCnsFaqBas;
import com.querydsl.core.BooleanBuilder; import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.types.Projections; import com.querydsl.core.types.Projections;
@ -20,7 +20,7 @@ public class CnsFaqQueryRepository {
private final JPAQueryFactory query; private final JPAQueryFactory query;
public List<FaqListRSModel> getFaqList(String category, String word) { public List<FaqListModel> getFaqList(String category, String word) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas; QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
@ -36,9 +36,9 @@ public class CnsFaqQueryRepository {
builder.and(bas.title.contains(word)); builder.and(bas.title.contains(word));
} }
List<FaqListRSModel> r = query List<FaqListModel> r = query
.select(Projections.bean( .select(Projections.bean(
FaqListRSModel.class, FaqListModel.class,
bas.faqSno, bas.faqSno,
bas.category, bas.category,
bas.title, bas.title,
@ -59,16 +59,16 @@ public class CnsFaqQueryRepository {
return r; return r;
} }
public FaqListRSModel getFaqDetail(int sno) { public FaqListModel getFaqDetail(int sno) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas; QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
BooleanBuilder builder = new BooleanBuilder(); BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(sno)); builder.and(bas.faqSno.eq(sno));
FaqListRSModel r = query FaqListModel r = query
.select(Projections.bean( .select(Projections.bean(
FaqListRSModel.class, FaqListModel.class,
bas.faqSno, bas.faqSno,
bas.category, bas.category,
bas.title, bas.title,
@ -89,4 +89,23 @@ public class CnsFaqQueryRepository {
return r; return r;
} }
public void updateFaq(FaqListModel model) {
QCnsFaqBas bas = QCnsFaqBas.cnsFaqBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(model.getFaqSno()));
query.update(bas)
.set(bas.category, model.getCategory())
.set(bas.title, model.getTitle())
.set(bas.content, model.getContent())
.set(bas.viewCnt, model.getViewCnt())
.set(bas.expsrYn, model.getExpsrYn())
.set(bas.updateUserId, model.getUpdateUserId())
.set(bas.updateDt, model.getUpdateDt())
.where(builder)
.execute();
}
} }
Loading…
Cancel
Save