Browse Source

Merge commit '49c2798356cf0525e6a6972e4252ed93510df6f5' into feature/laanc/sun-vaildation

pull/10/head
lkd9125(이경도) 11 months ago
parent
commit
76a4aa0e63
  1. 138
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/controller/CnsFaqController.java
  2. 2
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/model/FaqListModel.java
  3. 31
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqMapper.java
  4. 76
      pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqService.java
  5. 177
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java
  6. 5
      pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java
  7. 4
      pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java
  8. 35
      pav-server/src/main/java/com/palnet/biz/api/comn/sunriseset/controller/ComnSunrisesetController.java
  9. 5
      pav-server/src/main/java/com/palnet/biz/api/comn/sunriseset/model/ComnSunrisesetCoordRq.java
  10. 9
      pav-server/src/main/java/com/palnet/biz/api/comn/sunriseset/service/ComnSunrisesetService.java
  11. 8
      pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsFaqBas.java
  12. 16
      pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java
  13. 6
      pav-server/src/main/java/com/palnet/biz/jpa/repository/cns/CnsFaqQueryRepository.java
  14. 51
      pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComRiseSetQueryRepository.java

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

@ -1,13 +1,17 @@
package com.palnet.biz.api.cns.faq.controller;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.comn.exception.CustomException;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
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.RestController;
import org.springframework.web.bind.annotation.*;
import com.palnet.biz.api.cns.faq.model.FaqListRQModel;
import com.palnet.biz.api.cns.faq.model.FaqListModel;
@ -20,6 +24,7 @@ import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@Tag(name = "FAQ API", description = "FAQ 관련 API")
@RequiredArgsConstructor
@RequestMapping(value = "/api/bas/cns/faq")
public class CnsFaqController {
@ -27,48 +32,121 @@ public class CnsFaqController {
private final CnsFaqService service;
/*FAQ 목록 조회*/
@PostMapping("/list")
public ResponseEntity<? extends BasicResponse> getFaqList(@RequestBody FaqListRQModel model) {
@Tag(name = "FAQ API", description = "FAQ 관련 API")
@GetMapping
public ResponseEntity<? extends BasicResponse> getFaqList(FaqListRQModel model) {
List<FaqListModel> result = null;
result = service.getFaqList(model);
try {
result = service.getFaqList(model);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
/*FAQ 상세 조회*/
@GetMapping("/detail")
public ResponseEntity<FaqListModel> getFaqDetail(int sno) {
@Tag(name = "FAQ API", description = "FAQ 관련 API")
@GetMapping("/{sno}")
public ResponseEntity<? extends BasicResponse> getFaqDetail(@PathVariable("sno") int sno) {
FaqListModel result = null;
result = service.getFaqDetail(sno);
return ResponseEntity.ok().body(result);
try {
result = service.getFaqDetail(sno);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
/*FAQ 작성*/
@PostMapping("/insert")
public void insertFaq(@RequestBody FaqListModel model) {
service.insertFaq(model);
@Tag(name = "FAQ API", description = "FAQ 관련 API")
@PostMapping
public ResponseEntity<? extends BasicResponse> insertFaq(@RequestBody FaqListModel model) {
boolean result = false;
try {
result = service.insertFaq(model);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
/*FAQ 업데이트*/
@PostMapping("/update")
public void updateFaq(@RequestBody FaqListModel model) {
service.updateFaq(model);
@Tag(name = "FAQ API", description = "FAQ 관련 API")
@PutMapping
public ResponseEntity<? extends BasicResponse> updateFaq(@RequestBody FaqListModel model) {
boolean result = false;
try {
result = service.updateFaq(model);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
/*FAQ 논리 삭제*/
@PostMapping("/delete")
public void deleteFaq(int sno) {
service.deleteFaq(sno);
@Tag(name = "FAQ API", description = "FAQ 관련 API")
@DeleteMapping("/{sno}")
public ResponseEntity<? extends BasicResponse> deleteFaq(@PathVariable("sno") int sno) {
// TODO 성공/실패 상태값 전송
try {
service.deleteFaq(sno);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().build();
}
}

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

@ -19,7 +19,7 @@ public class FaqListModel {
private String expsrYn;
private String delYn;
// private String delYn;
private String createUserId;

31
pav-server/src/main/java/com/palnet/biz/api/cns/faq/service/CnsFaqMapper.java

@ -0,0 +1,31 @@
package com.palnet.biz.api.cns.faq.service;
import com.palnet.biz.api.cns.faq.model.FaqListModel;
import com.palnet.biz.jpa.entity.CnsFaqBas;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
/**
* packageName : com.palnet.biz.api.cns.faq.service
* fileName : CnsFaqMapper
* author : dhji
* date : 2023-10-17(017)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-17(017) dhji 최초 생성
*/
@Mapper(unmappedSourcePolicy = ReportingPolicy.IGNORE, unmappedTargetPolicy = ReportingPolicy.IGNORE, nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface CnsFaqMapper {
CnsFaqMapper MAPPER = Mappers.getMapper(CnsFaqMapper.class);
FaqListModel toModel(CnsFaqBas updateEntity);
CnsFaqBas toEntity(FaqListModel model);
void mergeEntity(@MappingTarget CnsFaqBas prevData, FaqListModel model);
}

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

@ -1,12 +1,6 @@
package com.palnet.biz.api.cns.faq.service;
import java.time.Instant;
import java.util.List;
import javax.transaction.Transactional;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.cns.faq.model.FaqListModel;
import com.palnet.biz.api.cns.faq.model.FaqListRQModel;
import com.palnet.biz.jpa.entity.CnsFaqBas;
@ -14,9 +8,13 @@ import com.palnet.biz.jpa.repository.cns.CnsFaqBasRepository;
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.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
@ -24,79 +22,79 @@ import lombok.extern.slf4j.Slf4j;
public class CnsFaqService {
private final CnsFaqQueryRepository query;
private final CnsFaqBasRepository cnsFaqBasRepository;
private final JwtTokenUtil jwtTokenUtil;
public List<FaqListModel> getFaqList(FaqListRQModel model){
List<FaqListModel> result = query.getFaqList(model.getCategory(), model.getWord());
if(result == null || result.size() < 1) throw new CustomException(ErrorCode.DATA_NO);
if(result == null) result = new ArrayList<>();
return result;
}
public FaqListModel getFaqDetail(int sno){
cnsFaqBasRepository.updateViewCnt(sno);
cnsFaqBasRepository.updateViewCnt(sno);
FaqListModel result = query.getFaqDetail(sno);
if(result == null) throw new CustomException(ErrorCode.DATA_NO);
return result;
}
@Transactional
public void insertFaq(FaqListModel model){
public boolean insertFaq(FaqListModel model){
String userId = jwtTokenUtil.getUserIdByToken();
CnsFaqBas bas = new CnsFaqBas();
bas.setCreateDt(Instant.now());
bas.setUpdateDt(Instant.now());
bas.setCreateUserId(userId);
bas.setUpdateUserId(userId);
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.setDelYn("N");
bas.setViewCnt(0);
try {
cnsFaqBasRepository.save(bas);
CnsFaqBas saveEntity = cnsFaqBasRepository.save(bas);
if(saveEntity != null) return true;
else return false;
} catch(Exception e) {
// TODO parameter validate...??
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);
public boolean updateFaq(FaqListModel model) {
String userId = jwtTokenUtil.getUserIdByToken();
CnsFaqBas prevData = cnsFaqBasRepository.findById(model.getFaqSno()).orElseThrow(() -> 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());
prevData.setUpdateUserId(userId);
try {
query.updateFaq(prevData);
CnsFaqBas saveEntity = cnsFaqBasRepository.save(prevData);
if(saveEntity != null) return true;
else return false;
} catch(Exception e) {
// TODO parameter validate...??
throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
}
}
public void deleteFaq(int sno) {
// TODO 반환값이 실행한 갯수인지 확인 필요
int delCnt = cnsFaqBasRepository.deleteFaq(sno);
if(delCnt == 0) throw new CustomException(ErrorCode.DATA_NO);

177
pav-server/src/main/java/com/palnet/biz/api/cns/qna/controller/CnsQnaController.java

@ -1,30 +1,30 @@
package com.palnet.biz.api.cns.qna.controller;
import java.util.List;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
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.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.cns.qna.model.QnaBasModel;
import com.palnet.biz.api.cns.qna.model.QnaDetailRSModel;
import com.palnet.biz.api.cns.qna.model.QnaInsertRQModel;
import com.palnet.biz.api.cns.qna.model.QnaRSModel;
import com.palnet.biz.api.cns.qna.model.QnaSelectListRQ;
import com.palnet.biz.api.cns.qna.service.CnsQnaService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.exception.CustomException;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@Slf4j
@Tag(name = "QNA", description = "QNA 관련 API")
@RequiredArgsConstructor
@RequestMapping("/api/cns/qna")
public class CnsQnaController {
@ -32,55 +32,123 @@ public class CnsQnaController {
private final CnsQnaService cnsQnaService;
@PostMapping(value = "/insert", consumes = "multipart/form-data")
// TODO json 가능 여부
@PostMapping(consumes = "multipart/form-data")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 등록[답변추가]")
public ResponseEntity<Boolean> insertQna(QnaInsertRQModel rq){
boolean result = cnsQnaService.insertQna(rq);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> insertQna(QnaInsertRQModel rq){
boolean result = false;
try {
result = cnsQnaService.insertQna(rq);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
@GetMapping("/select")
@GetMapping
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 리스트 조회")
public ResponseEntity<List<QnaBasModel>> selectQna(QnaSelectListRQ rq){
List<QnaBasModel> result = cnsQnaService.selectQnaList(rq);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> selectQna(QnaSelectListRQ rq){
List<QnaBasModel> result = new ArrayList<>();
try {
result = cnsQnaService.selectQnaList(rq);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
@GetMapping("/{qnaSno}/detail")
@GetMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 상세보기")
public ResponseEntity<List<QnaDetailRSModel>> detailQna(@PathVariable int qnaSno){
List<QnaDetailRSModel> reulst = cnsQnaService.getQnaDetail(qnaSno);
return ResponseEntity.ok().body(reulst);
public ResponseEntity<? extends BasicResponse> detailQna(@PathVariable int qnaSno){
List<QnaDetailRSModel> result = null;
try {
result = cnsQnaService.getQnaDetail(qnaSno);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
@PostMapping("/{qnaSno}/update")
@PutMapping
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 업데이트")
public ResponseEntity<Boolean> updateQna(@PathVariable int qnaSno, QnaInsertRQModel rq){
boolean result = cnsQnaService.updateQna(qnaSno, rq);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> updateQna(QnaInsertRQModel rq){
boolean result = false;
try {
result = cnsQnaService.updateQna(rq);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
@GetMapping("/{qnaSno}/delete")
@DeleteMapping("/{qnaSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 삭제하기")
public ResponseEntity<Boolean> deleteQna(@PathVariable int qnaSno){
boolean result = cnsQnaService.deleteQna(qnaSno);
return ResponseEntity.ok().body(result);
public ResponseEntity<? extends BasicResponse> deleteQna(@PathVariable int qnaSno){
boolean result = false;
try {
result = cnsQnaService.deleteQna(qnaSno);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
}
/**
@ -89,14 +157,29 @@ public class CnsQnaController {
* @param fileSno
* @return
*/
@GetMapping("/{qnaSno}/{fileSno}/delete")
@DeleteMapping("/file/{qnaSno}/{fileSno}")
@Tag(name = "QNA", description = "QNA 관련 API")
@ApiOperation(value = "QnA 파일 개별삭제")
public ResponseEntity<Boolean> deleteQnaFile(@PathVariable int qnaSno, @PathVariable int fileSno){
public ResponseEntity<? extends BasicResponse> deleteQnaFile(@PathVariable int qnaSno, @PathVariable int fileSno){
log.warn("CnsQnaController - deleteQnaFile()");
boolean result = cnsQnaService.deleteQnaFile(fileSno);
boolean result = false;
try {
result = cnsQnaService.deleteQnaFile(fileSno);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(result));
return ResponseEntity.ok().body(result);
}
}

5
pav-server/src/main/java/com/palnet/biz/api/cns/qna/service/CnsQnaService.java

@ -89,14 +89,13 @@ public class CnsQnaService {
/**
* Qna 업데이트하기 TODO :: File 업데이트 기능 아직 구현안함
* @param qnaSno
* @param rq
* @return
*/
@Transactional
public boolean updateQna(int qnaSno, QnaInsertRQModel rq){
public boolean updateQna(QnaInsertRQModel rq){
CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(qnaSno, 0, "N", "Y");
CnsQnaBas entity = cnsQnaBasRepository.findFirstByQnaSnoAndTargetSnoAndDelYnAndExpsrYn(rq.getQnaSno(), 0, "N", "Y");
if(entity == null) throw new CustomException(ErrorCode.DATA_NOTFIND);
List<MultipartFile> files = rq.getFiles();

4
pav-server/src/main/java/com/palnet/biz/api/comn/file/service/ComnFileService.java

@ -359,8 +359,8 @@ public class ComnFileService {
file.setDelYn("Y");
file.setDelUserId(userId);
file.setDelDt(Instant.now());
file.setDelDt(Instant.now());
comFileBasRepository.save(file);
return true;

35
pav-server/src/main/java/com/palnet/biz/api/comn/sunriseset/controller/ComnSunrisesetController.java

@ -8,6 +8,8 @@ import com.palnet.biz.api.comn.sunriseset.model.ComnSunrisesetRq;
import com.palnet.biz.api.comn.sunriseset.model.ComnSunrisesetRs;
import com.palnet.biz.api.comn.sunriseset.service.ComnSunrisesetService;
import com.palnet.comn.exception.CustomException;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
@ -17,6 +19,7 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
import java.util.HashMap;
import java.util.List;
@ -72,8 +75,38 @@ public class ComnSunrisesetController {
@ApiOperation(value = "일출/일몰 조회(좌표)", notes = "기간내 근접한 지역의 일출/일몰 조회")
@Tag(name = "공통 API", description = "공통 API")
@GetMapping("/coord")
public ResponseEntity<? extends BasicResponse> getSunRiseSetByCoord(ComnSunrisesetCoordRq rq) {
public ResponseEntity<? extends BasicResponse> getSunRiseSetByCoordAndDate(ComnSunrisesetCoordRq rq) {
ComnSunrisesetRs rs = null;
try {
log.debug(">>> rq : {}", rq);
rs = comnSunrisesetService.getSunRiseSetByCoordAndDate(rq);
// log.debug(">>> rs : {}", rs);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<String, Object>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<>(rs));
}
@ApiOperation(value = "일출/일몰 조회(좌표-6개월치)", notes = "근접한 지역의 현재~6개월치의 일출/일몰 데이터 조회")
@Tag(name = "공통 API", description = "공통 API")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "lat", value = "위도", required = true, dataType = "double", paramType = "query", example = "37.5665", defaultValue = "37.5665"),
@ApiImplicitParam(name = "lon", value = "경도", required = true, dataType = "double", paramType = "query", example = "126.9780", defaultValue = "126.9780"),
})
@GetMapping("/coord/list")
public ResponseEntity<? extends BasicResponse> getSunRiseSetByCoord(@ApiIgnore ComnSunrisesetCoordRq rq) {
List<ComnSunrisesetRs> rs = null;
try {
log.debug(">>> rq : {}", rq);
rs = comnSunrisesetService.getSunRiseSetByCoord(rq);

5
pav-server/src/main/java/com/palnet/biz/api/comn/sunriseset/model/ComnSunrisesetCoordRq.java

@ -36,4 +36,9 @@ public class ComnSunrisesetCoordRq {
public boolean hasAllData() {
return (locStDate != null && !locStDate.isEmpty()) && (locEndDate != null && !locEndDate.isEmpty()) && lat != null && lon != null;
}
@JsonIgnore
public boolean hasCoord() {
return lat != null && lon != null;
}
}

9
pav-server/src/main/java/com/palnet/biz/api/comn/sunriseset/service/ComnSunrisesetService.java

@ -36,8 +36,13 @@ public class ComnSunrisesetService {
}
public ComnSunrisesetRs getSunRiseSetByCoord(ComnSunrisesetCoordRq rq) {
public ComnSunrisesetRs getSunRiseSetByCoordAndDate(ComnSunrisesetCoordRq rq) {
if(rq == null || !rq.hasAllData()) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
return comRiseSetQueryRepository.findBySearchCoordTransform(rq);
return comRiseSetQueryRepository.findBySearchCoordDateTransform(rq);
}
public List<ComnSunrisesetRs> getSunRiseSetByCoord(ComnSunrisesetCoordRq rq) {
if(rq == null || !rq.hasCoord()) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
return comRiseSetQueryRepository.findAllBySearchCoordTransform(rq);
}
}

8
pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsFaqBas.java

@ -6,6 +6,8 @@ import java.time.Instant;
import javax.persistence.*;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
@Entity
@Data
@ -41,13 +43,15 @@ public class CnsFaqBas implements Serializable {
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="CREATE_DT")
@CreationTimestamp
@Column(name="CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="UPDATE_DT")
@UpdateTimestamp
@Column(name="UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
}

16
pav-server/src/main/java/com/palnet/biz/jpa/entity/CnsQnaBas.java

@ -1,12 +1,12 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import java.time.Instant;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import lombok.Builder;
import lombok.Data;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Data
@ -48,13 +48,15 @@ public class CnsQnaBas implements Serializable {
@Column(name="CREATE_USER_ID")
private String createUserId;
@Column(name="CREATE_DT")
@CreationTimestamp
@Column(name="CREATE_DT", columnDefinition = "TIMESTAMP", updatable = false)
private Instant createDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="UPDATE_DT")
@UpdateTimestamp
@Column(name="UPDATE_DT", columnDefinition = "TIMESTAMP")
private Instant updateDt;
}

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

@ -45,7 +45,6 @@ public class CnsFaqQueryRepository {
bas.content,
bas.viewCnt,
bas.expsrYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
@ -65,7 +64,9 @@ public class CnsFaqQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.faqSno.eq(sno));
builder.and(bas.expsrYn.eq("Y"));
builder.and(bas.delYn.eq("N"));
FaqListModel r = query
.select(Projections.bean(
FaqListModel.class,
@ -75,7 +76,6 @@ public class CnsFaqQueryRepository {
bas.content,
bas.viewCnt,
bas.expsrYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,

51
pav-server/src/main/java/com/palnet/biz/jpa/repository/com/ComRiseSetQueryRepository.java

@ -13,6 +13,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
/**
@ -64,10 +66,10 @@ public class ComRiseSetQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
if (rq != null) {
if (rq.getLocStDate() != null) {
builder.and(bas.id.locDate.loe(rq.getLocStDate()));
builder.and(bas.id.locDate.goe(rq.getLocStDate()));
}
if (rq.getLocEndDate() != null) {
builder.and(bas.id.locDate.goe(rq.getLocEndDate()));
builder.and(bas.id.locDate.loe(rq.getLocEndDate()));
}
if (rq.getLocation() != null) {
builder.and(bas.id.location.eq(rq.getLocation()));
@ -93,7 +95,7 @@ public class ComRiseSetQueryRepository {
}
public ComnSunrisesetRs findBySearchCoordTransform(ComnSunrisesetCoordRq rq) {
public ComnSunrisesetRs findBySearchCoordDateTransform(ComnSunrisesetCoordRq rq) {
QComRiseSetBas bas = QComRiseSetBas.comRiseSetBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.id.locDate.goe(rq.getLocStDate()));
@ -123,4 +125,47 @@ public class ComRiseSetQueryRepository {
).asc())
.fetchFirst();
}
public List<ComnSunrisesetRs> findAllBySearchCoordTransform(ComnSunrisesetCoordRq rq) {
QComRiseSetBas bas = QComRiseSetBas.comRiseSetBas;
BooleanBuilder builder = new BooleanBuilder();
LocalDate stDate = LocalDate.now();
LocalDate endDate = stDate.plusMonths(6);
String stDateStr = stDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
String endDateStr = endDate.format(DateTimeFormatter.ofPattern("yyyyMMdd"));
builder.and(bas.id.locDate.goe(stDateStr));
builder.and(bas.id.locDate.loe(endDateStr));
String location = query.select(bas.id.location)
.from(bas)
.where(builder)
.groupBy(bas.id.location)
.orderBy(Expressions.stringTemplate("ST_Distance_Sphere({0}, {1})",
Expressions.stringTemplate("POINT({0}, {1})",
rq.getLon(),
rq.getLat()
),
Expressions.stringTemplate("POINT({0}, {1})",
bas.lon,
bas.lat
)
).asc())
.fetchFirst();
builder.and(bas.id.location.eq(location));
List<ComnSunrisesetRs> rs = query.select(Projections.bean(
ComnSunrisesetRs.class,
bas.id.locDate,
bas.id.location,
bas.sunrise,
bas.sunset,
bas.civilm,
bas.civile))
.from(bas)
.where(builder)
.orderBy(bas.id.locDate.asc())
.fetch();
return rs;
}
}

Loading…
Cancel
Save