Browse Source

cstmr 패키지 주석추가

pull/18/head
lkd9125(이경도) 10 months ago
parent
commit
e71de75916
  1. 43
      pav-server/src/main/java/com/palnet/biz/api/acnt/crtfyhp/controller/AcntCrtfyhpController.java
  2. 114
      pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java
  3. 106
      pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java
  4. 4
      pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java
  5. 41
      pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

43
pav-server/src/main/java/com/palnet/biz/api/acnt/crtfyhp/controller/AcntCrtfyhpController.java

@ -43,7 +43,12 @@ public class AcntCrtfyhpController {
@Autowired
private PtyCstmrQueryRepository ptyCstmrQueryRepository;
/**
* 인증번호를 발송하는 기능,
* hpno 값은 휴대폰번호입니다. 번호에 인증번호를 발송합니다.
* @param hpno
* @return
*/
@GetMapping(value = "/register/send")
@Tag(name = "휴대폰 인증 관리", description = "회원 휴대폰 인증 관련 API")
@ApiImplicitParam(name = "hnpo",value = "휴대폰번호", dataTypeClass = String.class)
@ -91,6 +96,12 @@ public class AcntCrtfyhpController {
/**
* 인증메세지를 받은 사용자가 인증번호를 입력하여 인증처리하는 기능입니다.
* @param hpno
* @param crtfyNo
* @return
*/
@GetMapping(value = "/register/confirm")
@Tag(name = "휴대폰 인증 관리", description = "회원 휴대폰 인증 관련 API")
@ApiImplicitParams({
@ -128,7 +139,12 @@ public class AcntCrtfyhpController {
}
//아이디 찾기 시 인증번호 발송 로직
/**
* 아이디 찾기 인증번호 발송 로직
* @param memberName
* @param hpno
* @return
*/
@GetMapping(value = "/find/sendForId")
@ApiOperation(value = "아이디 찾기 시 인증번호 발송")
@Tag(name = "휴대폰 인증 관리", description = "회원 휴대폰 인증 관련 API")
@ -167,7 +183,12 @@ public class AcntCrtfyhpController {
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
//아이디 찾기
/**
* 아이디 찾기
* @param memberName
* @param hpno
* @return
*/
@GetMapping(value = "/find/findUserId")
@ApiOperation(value = "회원 아이디 찾기")
@Tag(name = "휴대폰 인증 관리", description = "회원 휴대폰 인증 관련 API")
@ -201,7 +222,12 @@ public class AcntCrtfyhpController {
return ResponseEntity.ok().body( new SuccessResponse<Map>(resultMap));
}
//비밀번호 찾기 시 인증번호 발송 로직
/**
* 비밀번호 찾기 인증번호 발송 로직
* @param userId
* @param hpno
* @return
*/
@GetMapping(value = "/find/sendForPw")
@ApiOperation(value = "비밀번호 찾기 시 인증번호 발송")
@Tag(name = "휴대폰 인증 관리", description = "회원 휴대폰 인증 관련 API")
@ -241,7 +267,14 @@ public class AcntCrtfyhpController {
return ResponseEntity.ok().body( new SuccessResponse<Map>(resultMap));
}
/**
* 비밀번호 찾기 업데이트
* @param userId
* @param hpno
* @param newPw
* @return
* @throws Exception
*/
@GetMapping(value = "/find/updatePw")
@ApiOperation(value = "비밀번호 찾기 및 업데이트")
@Tag(name = "휴대폰 인증 관리", description = "회원 휴대폰 인증 관련 API")

114
pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/controller/AcntCstmrController.java

@ -32,6 +32,11 @@ public class AcntCstmrController {
private final AcntCstmrService service;
/**
* 회원가입 기능, AcntCstmrRqModel에 사용자가 입력한 회원 정보가 들어있음
* @param rq
* @return
*/
@PostMapping(value = "/register")
@ApiOperation(value = "회원 가입")
@Tag(name = "회원관리", description = "회원 관련 API")
@ -46,9 +51,16 @@ public class AcntCstmrController {
log.debug(">>> bd : {}", rq.getBrthdyDate().atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime());
// log.debug(">>> td : {}", rq.getTestDt());
// log.debug(">>> td : {}", rq.getTestDt().atZone(ZoneId.of("Asia/Seoul")).toLocalDateTime());
result = service.register(rq);
result = service.register(rq); // 회원정보를 데이터베이스에 추가[INSERT]함.
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -57,6 +69,12 @@ public class AcntCstmrController {
return ResponseEntity.ok().body(new SuccessResponse<AcntCstmrRsModel>(result));
}
/**
* 회원 조회하는 기능, cstmrSno는 회원 고유번호 입니다.
* 고유번호로 회원의 정보를 조회합니다.
* @param cstmrSno
* @return
*/
@GetMapping(value = "/profile/{cstmrSno}")
@ApiOperation(value = "회원 정보")
@Tag(name = "회원관리", description = "회원 관련 API")
@ -66,9 +84,16 @@ public class AcntCstmrController {
try {
result = service.list(cstmrSno);
result = service.list(cstmrSno); // 회원고유번호[cstmrSno]로 회원정보를 조회 함.
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -78,22 +103,43 @@ public class AcntCstmrController {
return ResponseEntity.ok().body(new SuccessResponse<List>(result));
}
/**
* 회원 계정 암호 변경하는 기능,
* AcntCstmrPwModel애 회원이 입력한 기존암호, 변경할 암호값이 있습니다.
* @param rq
* @return
*/
@PostMapping(value = "/profile/pswdupdate")
@ApiOperation(value = "회원 패스워드 변경")
@Tag(name = "회원관리", description = "회원 관련 API")
public ResponseEntity<? extends BasicResponse> passwordupdate(@RequestBody AcntCstmrPwModel rq){
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
PtyCstmrBas result = service.updatepas(rq);
PtyCstmrBas result = service.updatepas(rq); // 입력받은 값으로 회원계정 암호변경.
resultMap.put("result", result);
} catch (CustomException e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* CustomException은 개발자가 "의도적으로" 예외처리,
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNOE : {}", 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) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGONE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ErrorResponse("Server Error", "-1"));
}
@ -101,22 +147,43 @@ public class AcntCstmrController {
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
}
/**
* 회원 기존 패스워드 확인,
* userPswd 값에 있는 회원 암호가 맞는지 확인합니다.
* @param userPswdMap
* @return
*/
@PostMapping(value = "/profile/pwcheck")
@ApiOperation(value = "회원 기존 패스워드 확인")
@Tag(name = "회원관리", description = "회원 관련 API")
public ResponseEntity<? extends BasicResponse> extendpsw(@RequestBody Map<String,String> userPswdMap){
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
boolean result = service.extendpsw(userPswdMap.get("userPswd"));
boolean result = service.extendpsw(userPswdMap.get("userPswd")); // 기존 암호가 맞는지 확인하는 기능.
resultMap.put("result", result);
} catch (CustomException e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* CustomException은 개발자가 "의도적으로" 예외처리,
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNOE : {}", 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) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGONE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ErrorResponse("Server Error", "-1"));
}
@ -124,6 +191,12 @@ public class AcntCstmrController {
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
}
/**
* 회원정보 수정하는 기능,
* AcntCstmrEmModel에 회원이 입력한 수정할 정보들로 수정합니다.
* @param rq
* @return
*/
@PutMapping(value = "/profile/update")
@ApiOperation(value = "회원 정보 변경 (이메일,핸드폰)")
@Tag(name = "회원관리", description = "회원 관련 API")
@ -131,10 +204,18 @@ public class AcntCstmrController {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
PtyCstmrDtl result = service.updateEmail(rq);
PtyCstmrDtl result = service.updateEmail(rq); // 이메일과 휴대폰번호를 업데이트 하는 기능
resultMap.put("result", result);
} catch (CustomException e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* CustomException은 개발자가 "의도적으로" 예외처리,
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNOE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
@ -142,6 +223,13 @@ public class AcntCstmrController {
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGONE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new ErrorResponse("Server Error", "-1"));
@ -149,6 +237,12 @@ public class AcntCstmrController {
return ResponseEntity.ok().body(new SuccessResponse<>(resultMap));
}
/**
* 회원 탈퇴 처리하는 기능,
* 회원고유[cstmrSno] 값으로 회원탈퇴처리함.
* @param cstmrSno
* @return
*/
@PostMapping(value = "/profile/delete/{cstmrSno}")
@ApiOperation(value = "회원 탈퇴")
@Tag(name = "회원관리", description = "회원 관련 API")
@ -157,11 +251,19 @@ public class AcntCstmrController {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
boolean result = service.userDelete(cstmrSno);
boolean result = service.userDelete(cstmrSno); // 회원고유[cstmrSno] 값으로 회원탈퇴처리함.
resultMap.put("result", result);
} catch (CustomException e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* CustomException은 개발자가 "의도적으로" 예외처리,
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNOE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());

106
pav-server/src/main/java/com/palnet/biz/api/acnt/cstmr/service/AcntCstmrService.java

@ -5,15 +5,14 @@ import java.util.List;
import javax.persistence.EntityManagerFactory;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrEmModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrPwModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrEmModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrPwModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRqModel;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrRsModel;
import com.palnet.biz.api.acnt.cstmr.model.AnctCstmerRlModel;
@ -33,7 +32,6 @@ import com.palnet.biz.jpa.repository.pty.PtyGroupBasRepository;
import com.palnet.biz.jpa.repository.pty.PtyTermsAgreeTxnRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.DateUtils;
import com.palnet.comn.utils.EncryptUtils;
import com.palnet.comn.utils.HttpUtils;
@ -74,7 +72,7 @@ public class AcntCstmrService {
/**
*
*
* AcntCstmrRqModel에 담겨있는 회원정보를 데이터베이스에 추가하는 기능
* @param rq
* @return
*/
@ -89,7 +87,7 @@ public class AcntCstmrService {
//사전 체크. 동일한 ID 존재 여부 확인
isUserIdFind = query.findCstmrByUserId(rq.getUserId());
if(isUserIdFind) {
if(isUserIdFind) { // 중복되면 에러코드 반환
rs.setErrCode(-1);
return rs;
}
@ -119,7 +117,7 @@ public class AcntCstmrService {
}
}
//성공 파람 담기
//성공 데이터 담기
if(basEntity != null) {
rs.setErrCode(1);
rs.setLoginId(basEntity.getUserId());
@ -134,6 +132,12 @@ public class AcntCstmrService {
return rs;
}
/**
* AcntCstmrRqModel에 담겨있는 회원정보를 데이터베이스에 추가[INSERT]하는 기능.
* @param rq
* @return
* @throws Exception
*/
public PtyCstmrBas savePtyCstmrBas(AcntCstmrRqModel rq) throws Exception{
@ -153,6 +157,13 @@ public class AcntCstmrService {
}
/**
* AcntCstmrRqModel에 담겨있는 상세정보를 데이터베이스에 추가[INSERT].
* @param rq
* @param basEntity
* @return
* @throws Exception
*/
public PtyCstmrDtl savePtyCstmrDtl(AcntCstmrRqModel rq , PtyCstmrBas basEntity) throws Exception{
if(rq.getCntryCd() == null || rq.getCntryCd().equals("")){
@ -194,20 +205,30 @@ public class AcntCstmrService {
return ptyTermsAgreeTxnRepository.save(agreeEntity);
}
/**
* 회원 고유번호[cstmrSno] 회원정보를 조회하는 기능.
* @param cstmrSno
* @return
*/
public List<AnctCstmerRlModel> list(int cstmrSno) {
List<AnctCstmerRlModel> resultList = query.list(cstmrSno);
List<AnctCstmerRlModel> resultList = query.list(cstmrSno); // 회원고유번호[cstmrSno]로 회원정보를 조회 함.
for(AnctCstmerRlModel model : resultList) {
model.setEmail(EncryptUtils.decrypt(model.getEmail()));
model.setHpno(EncryptUtils.decrypt(model.getHpno()));
model.setEmail(EncryptUtils.decrypt(model.getEmail())); // 이메일은 회원추가할 때 암호화하기에 다시 복호화를 함
model.setHpno(EncryptUtils.decrypt(model.getHpno())); // 휴대폰 번호는 회원추가할 때 암호화하기에 다시 복호화를 함
}
return resultList;
}
/**
* 회원에게 입력받은 암호로 변경하는 기능
* @param rq
* @return
*/
public PtyCstmrBas updatepas(AcntCstmrPwModel rq) {
// 1. 토큰 유저 정보 불러오기
Integer userId = jwtTokenUtil.getCstmrSnoByToken();
@ -233,6 +254,11 @@ public class AcntCstmrService {
return updateUserEntity;
}
/**
* 기존 암호가 맞는지 확인하는 기능.
* @param userPswd
* @return
*/
public boolean extendpsw(String userPswd){
boolean result = false;
// 1. 토큰 유저 정보 불러오기
@ -263,36 +289,57 @@ public class AcntCstmrService {
return result;
}
/**
* 이메일과 휴대폰번호를 업데이트 하는 기능.
* @param rq
* @return
*/
public PtyCstmrDtl updateEmail(AcntCstmrEmModel rq) {
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken();
String userId = jwtTokenUtil.getUserIdByToken();
String newEmail = EncryptUtils.encrypt(rq.getEmail());
String newHpno = EncryptUtils.encrypt(rq.getHpno());
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); // 회원 인가할 정보에 있는 회원 고유번호
String userId = jwtTokenUtil.getUserIdByToken(); // 회원 인가할 정보에 있는 회원 아이디
String newEmail = EncryptUtils.encrypt(rq.getEmail()); // 바뀔 이메일 암호화
String newHpno = EncryptUtils.encrypt(rq.getHpno()); // 바뀔 휴대폰번호 암호화
// 회원 고유번호로 회원정보를 데이터베이스에서 가져옴
PtyCstmrDtl userEntity = ptyCstmrDtlRepository.findById(cstmrSno).orElse(null);
// 바뀔 내용 넣어줌
userEntity.setEmail(newEmail);
userEntity.setUpdateDt(Instant.now() );
userEntity.setUpdateUserId(userId);
userEntity.setHpno(newHpno);
// 바뀔 내용을 데이터베이스에 수정함
PtyCstmrDtl updateEmailEntity = ptyCstmrDtlRepository.save(userEntity);
return updateEmailEntity;
}
/**
* 회원고유[cstmrSno] 값으로 회원탈퇴처리 하는 기능.
* @param cstmrSno
* @return
*/
public boolean userDelete(int cstmrSno) {
List<JwtGroupModel> groupInfo = jwtTokenUtil.getGroupAuthByToken();
List<JwtGroupModel> groupInfo = jwtTokenUtil.getGroupAuthByToken(); // 회원의 속한 그룹을 조회
for(JwtGroupModel group : groupInfo) {
// if(group.getGroupAuthCd().equals("CREATER")) {
// 회원의 그룹 권한이 MASTER 일 경우
if(group.getGroupAuthCd().equals("MASTER")) {
PtyGroupBas groupEntity = ptyGroupBasRepository.findByGroupId(group.getGroupId());
PtyGroupBas groupEntity = ptyGroupBasRepository.findByGroupId(group.getGroupId());
// 그룹이 있을경우 그룹의 사용여부 "N" 값으로 저장
if(!(groupEntity == null)) {
groupEntity.setUseYn("N");
ptyGroupBasRepository.save(groupEntity);
}
List<PtyCstmrGroup> cstmrEntity = ptyCstmrGroupRepository.changeGroupJoinYn(group.getGroupId());
List<PtyCstmrGroup> cstmrEntity = ptyCstmrGroupRepository.changeGroupJoinYn(group.getGroupId());
// cstmrEntity 값이 있을 경우 참여여부 "N" 값으로 저장
if(!(cstmrEntity == null)) {
for(PtyCstmrGroup cstmr : cstmrEntity) {
cstmr.setJoinYn("N");
@ -300,20 +347,29 @@ public class AcntCstmrService {
}
}
}
// 회원 고유번호로 데이터베이스에서 그룹참여정보 가져옴
List<PtyCstmrGroup> AprvlEntity = ptyCstmrGroupRepository.changeGroupAprvlYn(cstmrSno);
// AprvlEntity[그룹참여 정보가] 있을경우
if(!(AprvlEntity == null)) {
// 그룹 승인여부를 "N"값으로 저장
for(PtyCstmrGroup Aprvl : AprvlEntity) {
Aprvl.setAprvlYn("N");
Aprvl.setAprvlDt(null);
ptyCstmrGroupRepository.save(Aprvl);
}
PtyCstmrGroup cstmrEntity = ptyCstmrGroupRepository.findGroupId(group.getGroupId(), cstmrSno);
if(!(cstmrEntity == null)) {
cstmrEntity.setJoinYn("N");
ptyCstmrGroupRepository.save(cstmrEntity);
// 그룹 참여여부를 "N"값으로 저장
PtyCstmrGroup cstmrEntity = ptyCstmrGroupRepository.findGroupId(group.getGroupId(), cstmrSno);
if(!(cstmrEntity == null)) {
cstmrEntity.setJoinYn("N");
ptyCstmrGroupRepository.save(cstmrEntity);
}
}
}
}
// 데이터베이스에 있는 회원 정보를 탈퇴처리 후 저장함
PtyCstmrBas userEntity = ptyCstmrBasRepository.findByUserGroupId(cstmrSno);
userEntity.setCstmrStatusCd("W");
userEntity.setCstmrStatusCngDt(Instant.now() );

4
pav-server/src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java

@ -146,6 +146,10 @@ public class JwtTokenUtil implements Serializable {
return cstmrSno;
}
/**
* 회원 인가정보로 그룹
* @return
*/
public List<JwtGroupModel> getGroupAuthByToken() {
HttpServletRequest rq = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String token = rq.getHeader("Authorization");

41
pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

@ -26,6 +26,13 @@ public class PtyCstmrQueryRepository {
private final JPAQueryFactory query;
/**
* 입력받은 회원 아이디가 데이터베이스에 있는지 조회하는 SQL기능.
* ID가 있으면 중복되는 , true 반환
* ID가 없으면 중복되지 않는 , false 반환
* @param userId
* @return
*/
public boolean findCstmrByUserId(String userId) {
boolean result = false;
@ -38,6 +45,15 @@ public class PtyCstmrQueryRepository {
builder.and(basEntity.cstmrStatusCd.eq("A")); //활성화 상태
builder.and(basEntity.userId.eq(userId));
/**
* 회원 아이디[USER_ID],
* 회원활성화 여부[CSTMR_STATUS_CD] 값이 조건에 맞으면 회원정보를 가져오는 SQL입니다.
* SELECT
* *
* FROM PTY_CSTMR_BAS PCB
* WHERE PCB.CSTMR_STATUS_CD = 'A'
* AND PCB.USER_ID = #{id}
*/
PtyCstmrBas entity = query.select(basEntity)
.from(basEntity)
.where(builder)
@ -340,11 +356,34 @@ public class PtyCstmrQueryRepository {
} else {
return null;
}
}
}
/**
* 회원 고유번호로 데이터베이스에서 회원정보를 조회하는 SQL 기능.
* @param cstmrSno
* @return
*/
public List<AnctCstmerRlModel> list(int cstmrSno) {
QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas;
QPtyCstmrDtl dtl = QPtyCstmrDtl.ptyCstmrDtl;
/**
* 회원 고유번호로 데이터베이스에서 회원정보를 조회하는 SQL 입니다.
* SELECT
* PCD.MEMBER_NAME ,
* PCD.BRTHDY_DATE ,
* PCD.GENDER_CD ,
* PCD.CNTRY_CD ,
* PCD.EMAIL ,
* PCD.HPNO ,
* PCD.UPDATE_DT ,
* PCB.CPT_AUTH_CODE ,
* PCB.USER_ID
* FROM PTY_CSTMR_BAS PCB
* LEFT OUTER JOIN PTY_CSTMR_DTL PCD
* ON PCB.CSTMR_SNO = PCD.CSTMR_SNO
* WHERE PCB.CSTMR_SNO = #{cstmrSno}
*/
List<AnctCstmerRlModel> list = query
.select(Projections.bean(
AnctCstmerRlModel.class,

Loading…
Cancel
Save