초기소스
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
package com.wb.domainserver.domain.sopmal.adscript.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.gcone.setup.adscript.service.BOAdScriptService;
|
||||
import com.wb.domainserver.domain.gcone.setup.adscript.vo.BOAdScriptVO;
|
||||
import com.wb.domainserver.domain.sopmal.adscript.vo.AdScriptVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 광고스크립트 controller
|
||||
* @author 개발자 성명을 입력해주세요.
|
||||
* @since 2024-03-06
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-09-22 유재현. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/adscript")
|
||||
public class AdScriptController {
|
||||
|
||||
@Autowired
|
||||
private BOAdScriptService service;
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 광고스크립트 목록 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectAdScriptList")
|
||||
public ResponseEntity<?> selectAdScriptList(@RequestBody BOAdScriptVO vo) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
vo.setSopmalCd(user.getSopmalCd());
|
||||
}
|
||||
|
||||
Map<String, Object> content = new HashMap<>();
|
||||
|
||||
//광고 스크립트 목록조회
|
||||
List<DataMap> selectAdScriptList = service.selectBOAdScriptList(vo);
|
||||
|
||||
//배송그룹 목록조회 결과 설정
|
||||
content.put("BOAdScriptVO", vo);
|
||||
content.put("selectAdScriptList", selectAdScriptList);
|
||||
|
||||
// return responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/setup/adscript/selectBOAdScriptList", vo),
|
||||
// ReplyFromResrc::getReply
|
||||
// );
|
||||
|
||||
return ResponseEntity.ok(
|
||||
WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(content))
|
||||
.build()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.wb.domainserver.domain.sopmal.adscript.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class AdScriptVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/*쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,163 @@
|
||||
package com.wb.domainserver.domain.sopmal.app.controller;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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.RequestParam;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.domain.sopmal.app.vo.AppMbrDvcVO;
|
||||
import com.wb.domainserver.domain.sopmal.app.vo.AppPushVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 앱 연동 controller
|
||||
* @author 이훈영
|
||||
* @since 2024-11-26
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-11-26 이훈영. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/app")
|
||||
public class AppController {
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
/**
|
||||
* 앱 디바이스 정보 입력
|
||||
* @param vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertAppDeviceInfo", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> insertAppDeviceInfo(HttpServletRequest request, @RequestBody AppMbrDvcVO vo) {
|
||||
log.debug("insertAppMbrDvcInfo AppMbrDvcVO ::: {}", vo);
|
||||
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("appDvcId", vo.getDeviceId());
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/insertBOAppDeviceInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 앱 디바이스-회원 정보 입력
|
||||
* @param vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertAppMbrDvcInfo", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> insertAppMbrDvcInfo(HttpServletRequest request, @RequestBody AppMbrDvcVO vo) {
|
||||
log.debug("insertAppMbrDvcInfo AppMbrDvcVO ::: {}", vo);
|
||||
|
||||
HttpSession session = request.getSession();
|
||||
session.setAttribute("appDvcId", vo.getDeviceId());
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/insertBOAppMbrDvcInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 앱오픈
|
||||
* @param vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/openApp")
|
||||
public String openApp(AppMbrDvcVO vo,
|
||||
@RequestParam("linkType") String linkType,
|
||||
@RequestParam("bnfDvCd") String bnfDvCd,
|
||||
@RequestParam("strInnb") String strInnb,
|
||||
ModelMap model) {
|
||||
|
||||
vo.setSopmalCd(MemberJwtContextHolder.getMemberInfo().getSopmalCd());
|
||||
vo.setLinkType(linkType);
|
||||
vo.setBnfDvCd(bnfDvCd);
|
||||
vo.setStrInnb(strInnb);
|
||||
|
||||
log.debug("@@@@@@@@@ openApp vo is {}", vo);
|
||||
|
||||
model.addAttribute("sopmalCd", vo.getSopmalCd());
|
||||
model.addAttribute("linkType", vo.getLinkType());
|
||||
model.addAttribute("bnfDvCd", vo.getBnfDvCd());
|
||||
model.addAttribute("strInnb", vo.getStrInnb());
|
||||
|
||||
return "sopmal_m/bnft/openApp";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 푸시알림 테스트 발송
|
||||
*
|
||||
* @param BnftPushVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/procTestPushNotification")
|
||||
public ResponseEntity<WnbtResponse> procTestPushNoti(@RequestBody AppPushVO vo, ModelMap model, HttpSession session){
|
||||
|
||||
vo.setSopmalCd(MemberJwtContextHolder.getMemberInfo().getSopmalCd());
|
||||
|
||||
String pushData = dataToJson(vo.getDataUrl(), vo.getDataKey(), vo.getDataExt());
|
||||
vo.setPushData(pushData);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/app/procPushNotificationImsi",vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
public String dataToJson(String str1, String str2, String str3) {
|
||||
try {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Map<String, Object> dataMap = new HashMap<>();
|
||||
dataMap.put("url", str1);
|
||||
dataMap.put("key", str2);
|
||||
dataMap.put("ext", str3);
|
||||
|
||||
// JSON 문자열로 변환
|
||||
return objectMapper.writeValueAsString(dataMap);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return null; // 예외 발생 시 null 반환
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.wb.domainserver.domain.sopmal.app.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AppMbrDvcVO {
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 회원 디바이스 고유번호 */
|
||||
private Long mbrDeviceInnb;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 회원 ID */
|
||||
private String mbrId;
|
||||
/** FCM 토큰 */
|
||||
private String fcmToken;
|
||||
/** 알림 동의 여부 */
|
||||
private String pushAgreAt;
|
||||
/** 신체활동접근 동의 여부 */
|
||||
private String phacAgreAt;
|
||||
/** 디바이스 고유 ID */
|
||||
private String deviceId;
|
||||
/** 운영체제 이름 */
|
||||
private String deviceOsNm;
|
||||
/** 운영체제 버전 */
|
||||
private String deviceOsVer;
|
||||
/** 앱 버전 */
|
||||
private String deviceAppVer;
|
||||
|
||||
/** 딥링크 타입 */
|
||||
private String linkType;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 스토어 고유번호 */
|
||||
private String strInnb;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.wb.domainserver.domain.sopmal.app.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AppPushVO {
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 회원 디바이스 고유번호 */
|
||||
private Long mbrDeviceInnb;
|
||||
/** 회원 디바이스 고유번호 배열 */
|
||||
private Long[] arrMbrDeviceInnb;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 회원 ID */
|
||||
private String mbrId;
|
||||
|
||||
/** FCM 토큰 */
|
||||
private String fcmToken;
|
||||
/** FCM 토큰 배열 */
|
||||
private String[] arrFcmToken;
|
||||
|
||||
/** 알림 제목 */
|
||||
private String pushSj;
|
||||
/** 알림 내용 */
|
||||
private String pushCn;
|
||||
/** 알림 유형 */
|
||||
private String pushType;
|
||||
/** callback 데이터 */
|
||||
private String pushData;
|
||||
/** callback 데이터 - url */
|
||||
private String dataUrl;
|
||||
/** callback 데이터 - key */
|
||||
private String dataKey;
|
||||
/** callback 데이터 - ext */
|
||||
private String dataExt;
|
||||
/** 이미지파일경로 */
|
||||
private String imgFilCours;
|
||||
/** 이미지파일명 */
|
||||
private String imgFilNm;
|
||||
}
|
||||
@@ -0,0 +1,202 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.atend.controller;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
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.RequestMethod;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.atend.vo.AtendVO;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.common.controller.BnftCommonController;
|
||||
import com.wb.domainserver.domain.sopmal.mbr.vo.MbrVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class AtendController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private BnftCommonController commonController;
|
||||
|
||||
/**
|
||||
* 출석체크 메인 화면
|
||||
*
|
||||
* @param model
|
||||
* @param atendVO
|
||||
* @param response
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/attendanceCheckMain")
|
||||
public String attendanceCheckMain(ModelMap model, AtendVO atendVO) {
|
||||
|
||||
// 혜택 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectBOBenefitScreenInfo", atendVO),
|
||||
model,
|
||||
"mainScreenInfo"
|
||||
);
|
||||
|
||||
// 출석 횟수 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectCurrentMonthAttendanceInfo", atendVO),
|
||||
model,
|
||||
"attendanceInfo"
|
||||
);
|
||||
|
||||
// 누적 출석 마일리지 조회 (기존 코드 유지)
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectTotalAttendanceMileage", atendVO),
|
||||
model,
|
||||
"attendanceMileageInfo"
|
||||
);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/atend/Atend";
|
||||
}
|
||||
|
||||
/**
|
||||
* 출석체크 참여
|
||||
*
|
||||
* @param atendVO
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/participateAttendanceCheck", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> participateAttendanceCheck(@RequestBody AtendVO atendVO) {
|
||||
|
||||
log.debug("participateAttendanceCheck atendVO: {}", atendVO);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/participateAttendanceCheck", atendVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 최신 출석 정보 조회 (출석 날짜 포함)
|
||||
*
|
||||
* @param atendVO
|
||||
* @return ResponseEntity<Map<String, Object>>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getLatestAttendanceInfo", method = RequestMethod.POST)
|
||||
public ResponseEntity<Map<String, Object>> getLatestAttendanceInfo(@RequestBody AtendVO atendVO) {
|
||||
|
||||
// 출석 횟수 정보 조회
|
||||
Map<String, Object> attendanceCountInfo = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectCurrentMonthAttendanceInfo", atendVO)
|
||||
);
|
||||
|
||||
// 누적 출석 마일리지 조회
|
||||
Map<String, Object> attendanceMileageInfo = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectTotalAttendanceMileage", atendVO)
|
||||
);
|
||||
|
||||
// 결과를 Map에 담아 반환
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("attendanceCount", attendanceCountInfo.get("attendanceCount"));
|
||||
result.put("totalAttendanceMileage", attendanceMileageInfo.get("totalAttendanceMileage"));
|
||||
|
||||
// 🆕 출석 날짜 목록 추가
|
||||
List<Map<String, Object>> monthlyAttendance = (List<Map<String, Object>>) attendanceCountInfo.get("monthlyAttendance");
|
||||
if (monthlyAttendance != null) {
|
||||
List<String> attendanceDays = monthlyAttendance.stream()
|
||||
.map(attendance -> (String) attendance.get("attendanceDate"))
|
||||
.collect(Collectors.toList());
|
||||
result.put("attendanceDays", attendanceDays);
|
||||
}
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 알림 상태 조회
|
||||
*
|
||||
* @param atendVO 알림 상태 조회 조건을 담고 있는 VO
|
||||
* @param session HTTP 세션
|
||||
* @return ResponseEntity<Map<String, Object>> 알림 상태 정보를 포함한 ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@PostMapping("/getNotificationStatus")
|
||||
public ResponseEntity<Map<String, Object>> getNotificationStatus(
|
||||
@RequestBody AtendVO atendVO,
|
||||
HttpSession session) {
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getNotificationStatus", atendVO),
|
||||
result->ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 알림 신청
|
||||
*
|
||||
* @param atendVO 알림 신청 정보를 담고 있는 VO
|
||||
* @param session HTTP 세션
|
||||
* @return ResponseEntity<Map<String, Object>> 알림 신청 결과를 포함한 ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@PostMapping("/applyNotification")
|
||||
public ResponseEntity<Map<String, Object>> applyNotification(
|
||||
@RequestBody AtendVO atendVO,
|
||||
HttpSession session) {
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/saveAtendAlarmSettings", atendVO),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 알림 취소
|
||||
*
|
||||
* @param atendVO 알림 취소 정보를 담고 있는 VO
|
||||
* @param session HTTP 세션
|
||||
* @return ResponseEntity<Map<String, Object>> 알림 취소 결과를 포함한 ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@PostMapping("/cancelNotification")
|
||||
public ResponseEntity<Map<String, Object>> cancelNotification(
|
||||
@RequestBody AtendVO atendVO,
|
||||
HttpSession session) {
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/saveAtendAlarmSettings", atendVO),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.atend.vo;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class AtendVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private String bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 진행기간 시작일시 */
|
||||
private String bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private String bnfEndDt;
|
||||
/** 충전 필요 금액 */
|
||||
private String amtForChg;
|
||||
/** 회원 고유번호 */
|
||||
private int mbrInnb;
|
||||
/** 등록자 */
|
||||
private int regUsr;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 수정자 */
|
||||
private int updusr;
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private String bnfPrtDt;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 참여 내용 1 */
|
||||
private String prtCont1;
|
||||
/** 참여 내용 2 */
|
||||
private String prtCont2;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 요청 페이지 구분 */
|
||||
private String reqPageDv;
|
||||
/** 출석 횟수 */
|
||||
private Integer currentMonthAttendanceCount;
|
||||
/** 누적 출석 마일리지 */
|
||||
private Double totalAttendanceMileage;
|
||||
/** 대표 이미지 */
|
||||
private String reprsntImg;
|
||||
/** 대표 링크 URL */
|
||||
private String reprsntLinkUrl;
|
||||
/** 보상 이미지 */
|
||||
private String rewardImg;
|
||||
/** 보상 링크 URL */
|
||||
private String rewardLinkUrl;
|
||||
/** 혜택 문구 */
|
||||
private String bnfWordsCn;
|
||||
/** 출석 일자 목록 */
|
||||
private String attendanceDays;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
/** 마일리지 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
/** 혜택 동의 고유번호 */
|
||||
private Long bnfAgreInnb;
|
||||
/** 동의 여부 */
|
||||
private String agreAt;
|
||||
/** 초록잎 지급량 */
|
||||
private Integer paidLeafCnt;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.bnftMain.controller;
|
||||
|
||||
import java.util.Enumeration;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.bnftMain.vo.BnftMainVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class BnftMainController {
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
/**
|
||||
* 혜택 메인 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param BnftMainVO BnftMainVO 객체
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/bnftMain")
|
||||
public String bnftMain(ModelMap model, BnftMainVO vo, HttpSession session) {
|
||||
|
||||
// 세션에서 deviceId 조회 (null-safe)
|
||||
Object sessDvcIdObj = session.getAttribute("sessDvcId");
|
||||
String deviceId = (sessDvcIdObj != null) ? sessDvcIdObj.toString() : null;
|
||||
vo.setDeviceId(deviceId);
|
||||
|
||||
log.debug("bnftMain vo (1차 요청): {}", vo);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/bnftMainInfo", vo),
|
||||
model,
|
||||
"bnftMain"
|
||||
);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
// deviceId가 없었는지 프론트엔드에 알려주기
|
||||
model.addAttribute("needDeviceIdCheck", deviceId == null);
|
||||
|
||||
return "sopmal_m/bnft/bnftMain/BnftMain";
|
||||
}
|
||||
|
||||
/**
|
||||
* deviceId를 받아서 혜택 정보 재조회하는 AJAX API
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/devicePermission", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> getBnftMainInfoWithDevice(@RequestBody BnftMainVO vo) {
|
||||
|
||||
log.debug("bnftMainInfoWithDevice vo (2차 요청): {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/devicePermission", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.bnftMain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class BnftMainVO {
|
||||
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 혜택 설정 고유번호 */
|
||||
private String bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 화면 대표 이미지 */
|
||||
private String scrReprsntImg;
|
||||
/** 화면 대표 링크 URL */
|
||||
private String scrReprsntLinkUrl;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
/** 내용 제목 */
|
||||
private String cnSj;
|
||||
/** 내용 설명 */
|
||||
private String cnDc;
|
||||
/** 라이브 여부 (라이브쇼핑 참여일 경우만) */
|
||||
private String isLive;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 디바이스 아이디 */
|
||||
private String deviceId;
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
// === QR 이벤트 관련 필드 추가 ===
|
||||
/** 매장 고유번호 (QR이 설치된 매장) */
|
||||
private Long strInnb;
|
||||
/** QR 코드 */
|
||||
private String qrCd;
|
||||
/** QR 고유번호 */
|
||||
private String qrInnb;
|
||||
/** QR 이벤트 타입 */
|
||||
private String qrEventType;
|
||||
/** 이벤트 파라미터 (JSON 형태 등) */
|
||||
private String eventParam;
|
||||
/** 보상 타입 (마일리지, 쿠폰 등) */
|
||||
private String rewardType;
|
||||
/** 보상 금액/수량 */
|
||||
private String rewardAmount;
|
||||
/** 처리 결과 코드 */
|
||||
private String resultCode;
|
||||
/** 처리 결과 메시지 */
|
||||
private String resultMessage;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.bnftMain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class BnftRecptLogVO {
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private String bnfRcvInnb;
|
||||
/** 혜택 보상수령 내용 */
|
||||
private String bnfRcvCn;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
|
||||
/** 마일리지구분 : 01 지급, 02 차감*/
|
||||
private String mlgDvCd;
|
||||
/** 마일리지적립구분 : add 적립, dn 차감, exp 소멸, up 지급, use 사용*/
|
||||
private String mlgAccmlDvCd;
|
||||
/** 마일리지적용구분 : 01 상품구매,02 상품구매 취소,03 일반리뷰,04 한달리뷰,05 포토리뷰,06 리뷰삭제,07 이벤트,08 기간만료,09 주문환불,10 결제취소 */
|
||||
private String mlgApplcDvCd;
|
||||
/** 마일리지적용사유 */
|
||||
private String mlgApplcResn;
|
||||
/** 적립금액 */
|
||||
private BigDecimal accmlmnyAmt;
|
||||
/** 마일리지 유효개월수 */
|
||||
private Integer mlgValidPd;
|
||||
|
||||
/** 쿠폰 고유번호 */
|
||||
private Integer couponInnb;
|
||||
/** 쿠폰 발송 고유번호 */
|
||||
private Integer couponSndngInnb;
|
||||
/** 쿠폰 발송 유형코드 : 01 직접발급,02 다운로드,03 인증번호 */
|
||||
private String couponSndngTyCd;
|
||||
|
||||
/** 구매식별 고유번호 */
|
||||
private Long purchsInnb;
|
||||
/** 구매금액 */
|
||||
private Double purchsAmt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.common.controller;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
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.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class BnftCommonController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
// E 드라이브의 특정 폴더를 기본 경로로 설정
|
||||
private static final String IMAGE_BASE_PATH = "E:";
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 로그인 정보
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/bnftChkLoginStatus")
|
||||
public ResponseEntity<Map<String, Object>> checkLoginStatus() {
|
||||
Map<String, Object> content = new HashMap<String, Object>();
|
||||
|
||||
int mbrInnb = MemberJwtContextHolder.getMemberInfo().getUserInnb();
|
||||
String mbrDvCd = MemberJwtContextHolder.getMemberInfo().getMbrDvCd();
|
||||
String sopmalCD = MemberJwtContextHolder.getMemberInfo().getSopmalCd();
|
||||
|
||||
if (mbrDvCd != null && mbrInnb > 0) {
|
||||
content.put("userInnb", mbrInnb);
|
||||
content.put("sopmalCd", sopmalCD);
|
||||
content.put("mbrDvCd", mbrDvCd);
|
||||
content.put("isLoggedIn", true);
|
||||
} else {
|
||||
content.put("isLoggedIn", false);
|
||||
}
|
||||
return ResponseEntity.ok(content);
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
public Map<String, Object> checkLoginStatusBl() {
|
||||
Map<String, Object> content = new HashMap<String, Object>();
|
||||
|
||||
int mbrInnb = MemberJwtContextHolder.getMemberInfo().getUserInnb();
|
||||
String mbrDvCd = MemberJwtContextHolder.getMemberInfo().getMbrDvCd();
|
||||
String sopmalCD = MemberJwtContextHolder.getMemberInfo().getSopmalCd();
|
||||
|
||||
if (mbrDvCd != null && mbrInnb > 0) {
|
||||
content.put("userInnb", mbrInnb);
|
||||
content.put("sopmalCd", sopmalCD);
|
||||
content.put("mbrDvCd", mbrDvCd);
|
||||
content.put("isLoggedIn", true);
|
||||
} else {
|
||||
content.put("isLoggedIn", false);
|
||||
}
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 외부경로 이미지파일 반환
|
||||
* @param path 이미지 파일의 상대 경로
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/image", method = RequestMethod.GET)
|
||||
public ResponseEntity<Resource> getImage(@RequestParam String path) throws IOException {
|
||||
Path fullPath = Paths.get(IMAGE_BASE_PATH, path).normalize();
|
||||
File file = fullPath.toFile();
|
||||
|
||||
// 간단한 보안 검사: 요청된 파일이 기본 경로 외부에 있는지 확인
|
||||
if (!file.getCanonicalPath().startsWith(new File(IMAGE_BASE_PATH).getCanonicalPath())) {
|
||||
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
|
||||
}
|
||||
|
||||
if (!file.exists()) {
|
||||
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
|
||||
}
|
||||
|
||||
ByteArrayResource resource = new ByteArrayResource(Files.readAllBytes(file.toPath()));
|
||||
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.add(HttpHeaders.CONTENT_DISPOSITION, "inline; filename=\"" + file.getName() + "\"");
|
||||
|
||||
String mimeType = Files.probeContentType(file.toPath());
|
||||
if (mimeType == null) {
|
||||
mimeType = "application/octet-stream";
|
||||
} else if (path.endsWith(".svg")) {
|
||||
mimeType = "image/svg+xml";
|
||||
}
|
||||
|
||||
return ResponseEntity.ok()
|
||||
.headers(headers)
|
||||
.contentLength(file.length())
|
||||
.contentType(MediaType.parseMediaType(mimeType))
|
||||
.body(resource);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.conrev.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.conrev.vo.ConrevVO;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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 java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class ConrevController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 베스트 리뷰 보기 메인 화면을 표시합니다.
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo ConrevVO 객체
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/conrevMain")
|
||||
public String conrevMain(ModelMap model, ConrevVO vo, HttpSession session) {
|
||||
// 베스트 리뷰 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectBestReviewList", vo),
|
||||
model,
|
||||
"reviewList"
|
||||
);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/conrev/Conrev";
|
||||
}
|
||||
|
||||
/**
|
||||
* 베스트 리뷰 보기 메인 화면을 표시합니다.
|
||||
*
|
||||
* @param vo ConrevVO 객체
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/awardConrevMileage", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> awardConrevMileage(@RequestBody ConrevVO vo, HttpSession session) {
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/awardConrevMileage", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 베스트 리뷰 보기 메인 화면을 표시합니다.
|
||||
*
|
||||
* @param vo ConrevVO 객체
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getReviewTime", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> getReviewTime(@RequestBody ConrevVO vo, HttpSession session) {
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getReviewTime", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마일리지 보상 정보 조회
|
||||
*
|
||||
* @param vo ConrevVO 객체
|
||||
* @return ResponseEntity<Map<String, Object>> 마일리지 보상 정보
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getRewardInfo", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> getRewardInfo(@RequestBody ConrevVO vo, HttpSession session) {
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getRewardInfo", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.conrev.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class ConrevVO {
|
||||
|
||||
// 혜택 설정 고유번호
|
||||
private Long bnfInnb;
|
||||
// 회원 고유번호
|
||||
private Long mbrInnb;
|
||||
// 회원 구분 코드
|
||||
private String mbrDvCd;
|
||||
// 페이지 크기
|
||||
private int pageSize;
|
||||
// 오프셋
|
||||
private int offset;
|
||||
// 마일리지 보상 금액
|
||||
private Double mlgRwdAmt;
|
||||
// 리뷰 내용
|
||||
private String reviewContent;
|
||||
// 리뷰 링크
|
||||
private String reviewLink;
|
||||
// 이미지 파일 경로
|
||||
private String imgFilCours;
|
||||
// 이미지 파일명
|
||||
private String imgFilNm;
|
||||
// 열람 시간(초)
|
||||
private Integer tmeSecnd;
|
||||
//쇼핑몰 코드
|
||||
public String sopmalCd;
|
||||
}
|
||||
@@ -0,0 +1,345 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.cpslmkn.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.cpslmkn.vo.CpslmknVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class CpslmknController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCapsule")
|
||||
public String selectRewardProductList(ModelMap model, CpslmknVO vo, HttpSession session) {
|
||||
// 보상 상품 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/rewardProductInfo", vo),
|
||||
model,
|
||||
"rewardInfo"
|
||||
);
|
||||
|
||||
// rewardInfo에서 데이터 추출
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> rewardInfo = (Map<String, Object>) model.get("rewardInfo");
|
||||
if (rewardInfo != null) {
|
||||
model.addAttribute("productList", rewardInfo.get("productList"));
|
||||
model.addAttribute("importantNotice", rewardInfo.get("importantNotice"));
|
||||
|
||||
// 디버깅 로그 추가
|
||||
log.debug("rewardInfo: {}", rewardInfo);
|
||||
log.debug("productList: {}", rewardInfo.get("productList"));
|
||||
log.debug("importantNotice: {}", rewardInfo.get("importantNotice"));
|
||||
}
|
||||
|
||||
log.debug("model: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/cpslmkn/CpslmknSelectCapsule";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/createGame")
|
||||
public String createGame(ModelMap model, @RequestParam Long bnfInnb) {
|
||||
CpslmknVO vo = new CpslmknVO();
|
||||
vo.setBnfInnb(bnfInnb); // 이전 화면에서 전달받은 bnfInnb 설정
|
||||
|
||||
// 게임 데이터 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/gameData", vo),
|
||||
model,
|
||||
"cpslmknStatus"
|
||||
);
|
||||
|
||||
log.debug("cpslmknStatus: {}", model.get("cpslmknStatus"));
|
||||
|
||||
// 현재 진행 상태와 보상 정보 조회 추가
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/rewardProductInfo", vo),
|
||||
model,
|
||||
"rewardInfo"
|
||||
);
|
||||
|
||||
log.debug("rewardInfo: {}", model.get("rewardInfo"));
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/sopmalCd", vo),
|
||||
model,
|
||||
"sopmalCd"
|
||||
);
|
||||
|
||||
log.debug("sopmalCd: {}", model.get("sopmalCd"));
|
||||
|
||||
// cpslmknStatus에서 필요한 데이터 추출
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> cpslmknStatus = (Map<String, Object>) model.get("cpslmknStatus");
|
||||
if (cpslmknStatus != null) {
|
||||
model.addAttribute("bnfInnb", bnfInnb);
|
||||
model.addAttribute("bnfSttusInnb", cpslmknStatus.get("bnfSttusInnb"));
|
||||
model.addAttribute("leafCount", cpslmknStatus.get("ownedLeafCount"));
|
||||
|
||||
if (cpslmknStatus.get("progrsStep") != null) {
|
||||
model.addAttribute("progressStep", Integer.valueOf(String.valueOf(cpslmknStatus.get("progrsStep"))));
|
||||
model.addAttribute("currentStep", Integer.valueOf(String.valueOf(cpslmknStatus.get("progrsStep"))));
|
||||
}
|
||||
|
||||
if (cpslmknStatus.get("stepProgressPercentage") != null) {
|
||||
model.addAttribute("stepProgressPercentage", Double.valueOf(String.valueOf(cpslmknStatus.get("stepProgressPercentage"))));
|
||||
}
|
||||
|
||||
// 추가 데이터들도 model에 추가
|
||||
if (cpslmknStatus.get("leafInCurrentStep") != null) {
|
||||
model.addAttribute("leafInCurrentStep", Integer.valueOf(String.valueOf(cpslmknStatus.get("leafInCurrentStep"))));
|
||||
}
|
||||
|
||||
if (cpslmknStatus.get("totalLeafNeeded") != null) {
|
||||
model.addAttribute("totalLeafNeeded", Integer.valueOf(String.valueOf(cpslmknStatus.get("totalLeafNeeded"))));
|
||||
}
|
||||
|
||||
if (cpslmknStatus.get("leafPerStep") != null) {
|
||||
model.addAttribute("leafPerStep", Integer.valueOf(String.valueOf(cpslmknStatus.get("leafPerStep"))));
|
||||
}
|
||||
}
|
||||
|
||||
// rewardInfo에서 보상 정보 추출
|
||||
@SuppressWarnings("unchecked")
|
||||
Map<String, Object> rewardInfo = (Map<String, Object>) model.get("rewardInfo");
|
||||
log.debug("Model rewardInfo: {}", rewardInfo); // 모델 디버깅 로그 추가
|
||||
if (rewardInfo != null) {
|
||||
List<Map<String, Object>> productList = (List<Map<String, Object>>) rewardInfo.get("productList");
|
||||
if (!productList.isEmpty()) {
|
||||
Map<String, Object> product = productList.get(0); // 첫 번째 제품 정보 사용
|
||||
String productName = (String) product.get("cnSj");
|
||||
String productDesc = (String) product.get("cnDc");
|
||||
String thumbnailPath = (String) product.get("imgFilCours");
|
||||
|
||||
log.debug("Product Name: {}", productName);
|
||||
log.debug("Product Description: {}", productDesc);
|
||||
log.debug("Thumbnail Path: {}", thumbnailPath);
|
||||
|
||||
model.addAttribute("productName", productName);
|
||||
model.addAttribute("productDesc", productDesc);
|
||||
model.addAttribute("thumbnailPath", thumbnailPath);
|
||||
}
|
||||
model.addAttribute("importantNotice", rewardInfo.get("importantNotice"));
|
||||
|
||||
// 디버깅 로그 추가
|
||||
log.debug("productList: {}", productList);
|
||||
log.debug("importantNotice: {}", rewardInfo.get("importantNotice"));
|
||||
}
|
||||
|
||||
return "sopmal_m/bnft/cpslmkn/CpslmknCreateGame";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/useLeaf", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> useLeaf(
|
||||
@Validated @RequestBody CpslmknVO cpslmknVO,
|
||||
HttpSession session) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/useLeaf", cpslmknVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/cpslmknCollectList")
|
||||
public String showCollectList(ModelMap model) {
|
||||
// 초록잎/도토리 모으기 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/leafEventList", new CpslmknVO()),
|
||||
model,
|
||||
"cpslmknCollectList"
|
||||
);
|
||||
|
||||
// sopmalCd 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/sopmalCd", new CpslmknVO()),
|
||||
model,
|
||||
"sopmalCd"
|
||||
);
|
||||
|
||||
// 디버깅 로그 추가
|
||||
log.debug("cpslmknCollectList: {}", model.get("cpslmknCollectList"));
|
||||
|
||||
log.debug("sopmalCd: {}", model.get("sopmalCd"));
|
||||
|
||||
return "sopmal_m/bnft/cpslmkn/CpslmknCollectList";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getGameStatus", method = RequestMethod.GET)
|
||||
public ResponseEntity<WnbtResponse> getGameStatus(
|
||||
@RequestParam Long bnfInnb) {
|
||||
CpslmknVO vo = new CpslmknVO();
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/gameData", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getProgressStatus", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getProgressStatus(@RequestParam Long bnfInnb) {
|
||||
CpslmknVO vo = new CpslmknVO();
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/currentProgress", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/settings")
|
||||
public String showSettings(@RequestParam Long bnfInnb, ModelMap model, CpslmknVO vo) {
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
|
||||
// 안내문 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/importantNotice", vo),
|
||||
model,
|
||||
"importantNotice"
|
||||
);
|
||||
|
||||
// 알림 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/notificationSettings", vo),
|
||||
model,
|
||||
"notificationSettings"
|
||||
);
|
||||
|
||||
// sopmalCd 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/sopmalCd", vo),
|
||||
model,
|
||||
"sopmalCd"
|
||||
);
|
||||
|
||||
// bnfInnb 모델에 추가
|
||||
model.addAttribute("bnfInnb", bnfInnb);
|
||||
|
||||
log.debug("importantNotice: {}", model);
|
||||
log.debug("notificationSettings: {}", model);
|
||||
log.debug("sopmalCd: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/cpslmkn/CpslmknSettings";
|
||||
}
|
||||
|
||||
/**
|
||||
* 캡슐 만들기 알림 설정 변경 API
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED) // 로그인 필요
|
||||
@RequestMapping(value = "/notification", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateNotificationSetting(
|
||||
@Validated @RequestBody CpslmknVO cpslmknVO, // agreAt 필드 필요
|
||||
HttpSession session) {
|
||||
|
||||
// BO Controller 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/notification", cpslmknVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 초록잎 보유 내역 페이지 (초기 로딩)
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/leafHistory")
|
||||
public String showLeafHistory(ModelMap model, CpslmknVO vo, @RequestParam String sopmalCd) {
|
||||
log.debug("CpslmknVO: {}", vo);
|
||||
log.debug("sopmalCd: {}", sopmalCd);
|
||||
|
||||
model.addAttribute("sopmalCd", sopmalCd);
|
||||
|
||||
// 첫 페이지만 조회하도록 페이징 설정
|
||||
vo.setOffset(0);
|
||||
vo.setLimit(20);
|
||||
|
||||
// 초록잎 보유 내역 조회 (첫 페이지)
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/leafStatusAndHistory", vo),
|
||||
model,
|
||||
"leafHistory"
|
||||
);
|
||||
|
||||
log.debug("leafHistory: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/cpslmkn/CpslmknOwnedList";
|
||||
}
|
||||
|
||||
/**
|
||||
* 초록잎 보유 내역 추가 로딩 (AJAX)
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/leafHistory/more", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getMoreLeafHistory(
|
||||
@RequestParam(defaultValue = "1") int page,
|
||||
@RequestParam(defaultValue = "20") int size) {
|
||||
|
||||
CpslmknVO vo = new CpslmknVO();
|
||||
vo.setOffset((page - 1) * size);
|
||||
vo.setLimit(size);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/leafStatusAndHistory", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 캡슐 만들기 게임 안내 조회
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/capsuleGameInfo", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> showCapsuleGameInfo(ModelMap model, CpslmknVO vo) {
|
||||
// 게임 안내 조회
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/capsuleGameInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 캡슐 만들기 게임 안내 조회
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/resetCapsule", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> capsuleGameReset(ModelMap model, @RequestBody CpslmknVO vo) {
|
||||
|
||||
log.debug("CpslmknVO: {}", vo.getBnfInnb());
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/resetCapsule", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.cpslmkn.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class CpslmknVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
|
||||
/** 혜택 진행 상태 고유번호 */
|
||||
private Long bnfSttusInnb;
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 진행 여부 */
|
||||
private String progrsAt;
|
||||
|
||||
/** 진행 단계 */
|
||||
private Integer progrsStep;
|
||||
|
||||
/** 총 사용 초록잎 개수 */
|
||||
private Integer totUseLeafCnt;
|
||||
|
||||
/** 사용 초록잎 개수 */
|
||||
private Integer useLeafCnt;
|
||||
|
||||
/** 상품 고유번호 */
|
||||
private Long goodsInnb;
|
||||
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
|
||||
/** 마일리지 금액 */
|
||||
private Double mlgRwdAmt;
|
||||
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
|
||||
/** 화면표시여부 */
|
||||
private String indictAt;
|
||||
|
||||
/** 스페셜 여부 */
|
||||
private String specialAt;
|
||||
|
||||
/** 지급 개수 */
|
||||
private Integer pymntCnt;
|
||||
|
||||
/** 스페셜 개수 */
|
||||
private Integer specialCnt;
|
||||
|
||||
/** 동의 여부 */
|
||||
private String agreAt;
|
||||
|
||||
/** 페이징 - 오프셋 */
|
||||
private Integer offset;
|
||||
|
||||
/** 페이징 - 리미트 */
|
||||
private Integer limit;
|
||||
|
||||
/** 등록자 */
|
||||
private int regusr;
|
||||
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
|
||||
/** 수정자 */
|
||||
private int updusr;
|
||||
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.discshar.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.discshar.vo.DiscsharVO;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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 java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class DiscsharController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 할인소식 공유 메인 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param DiscsharVO DiscSharVO 객체
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/discsharMain")
|
||||
public String discSharMain(ModelMap model, DiscsharVO vo, HttpSession session) {
|
||||
log.debug("discSharMain DiscsharVO chk ::: {}", vo);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectDiscsharBenefitInfo", vo),
|
||||
model,
|
||||
"currentDiscshar"
|
||||
);
|
||||
|
||||
Map<String, Object> resultMap = (Map<String, Object>) model.getAttribute("currentDiscshar");
|
||||
|
||||
// 사용 여부 검증
|
||||
if (resultMap == null || resultMap.get("list") == null ||
|
||||
((List<Map<String, Object>>) resultMap.get("list")).isEmpty()) {
|
||||
model.addAttribute("alertMessage", "현재 할인소식 공유 서비스를 이용할 수 없습니다.");
|
||||
model.addAttribute("goBack", "Y");
|
||||
return "sopmal_m/bnft/discshar/Discshar";
|
||||
}
|
||||
|
||||
// 사용 기간 검증
|
||||
try {
|
||||
Map<String, Object> firstBenefitInfo = ((List<Map<String, Object>>) resultMap.get("list")).get(0);
|
||||
Date now = new Date();
|
||||
Date beginDate = null;
|
||||
Date endDate = null;
|
||||
|
||||
if (firstBenefitInfo.get("bnfBgnDt") != null) {
|
||||
LocalDateTime localDateTime = LocalDateTime.parse(
|
||||
firstBenefitInfo.get("bnfBgnDt").toString(),
|
||||
DateTimeFormatter.ISO_LOCAL_DATE_TIME
|
||||
);
|
||||
beginDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
|
||||
if (firstBenefitInfo.get("bnfEndDt") != null) {
|
||||
LocalDateTime localDateTime = LocalDateTime.parse(
|
||||
firstBenefitInfo.get("bnfEndDt").toString(),
|
||||
DateTimeFormatter.ISO_LOCAL_DATE_TIME
|
||||
);
|
||||
endDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
|
||||
if (beginDate != null && now.before(beginDate) ||
|
||||
(endDate != null && now.after(endDate))) {
|
||||
model.addAttribute("alertMessage", "할인소식 공유 서비스 이용 기간이 아닙니다.");
|
||||
model.addAttribute("goBack", "Y");
|
||||
return "sopmal_m/bnft/discshar/Discshar";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("날짜 변환 중 오류 발생: ", e);
|
||||
model.addAttribute("alertMessage", "서비스 이용기간 확인 중 오류가 발생했습니다.");
|
||||
model.addAttribute("goBack", "Y");
|
||||
return "sopmal_m/bnft/discshar/Discshar";
|
||||
}
|
||||
|
||||
return "sopmal_m/bnft/discshar/Discshar";
|
||||
}
|
||||
|
||||
/**
|
||||
* 할인소식 링크 복사
|
||||
*
|
||||
* @param DiscsharVO DiscSharVO 객체
|
||||
* @return ResponseEntity<Map<String, Object>> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/copyDiscsharLink", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> copyDiscsharLink(@RequestBody DiscsharVO vo, HttpSession session) {
|
||||
log.debug("copyDiscsharLink DiscsharVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/copyDiscsharLink", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 할인소식 공유 결과 확인
|
||||
*
|
||||
* @param DiscsharVO DiscSharVO 객체
|
||||
* @return ResponseEntity<Map<String, Object>> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/checkDiscsharResult", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> checkDiscSharResult(@RequestBody DiscsharVO vo, HttpSession session) {
|
||||
log.debug("checkDiscSharResult DiscsharVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/checkDiscsharResult", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.discshar.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class DiscsharVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 진행기간 시작일시 */
|
||||
private Date bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private Date bnfEndDt;
|
||||
/** 화면 대표 이미지 */
|
||||
private String scrReprsntImg;
|
||||
/** 화면 대표 링크 URL */
|
||||
private String scrReprsntLinkUrl;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
/** 내용 제목 */
|
||||
private String cnSj;
|
||||
/** 내용 설명 */
|
||||
private String cnDc;
|
||||
/** 링크 */
|
||||
private String linkUrl;
|
||||
/** 이미지파일경로 */
|
||||
private String imgFilCours;
|
||||
/** 이미지파일명 */
|
||||
private String imgFilNm;
|
||||
/** 유효일시 */
|
||||
private Date validDt;
|
||||
/** 시간(초) */
|
||||
private Integer tmeSecnd;
|
||||
/** 할인구분코드 */
|
||||
private String dscntUnitDvCd;
|
||||
/** 할인금액 */
|
||||
private Double dscntAmt;
|
||||
/** 할인율 */
|
||||
private Double dscntRt;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 마일리지 금액 */
|
||||
private String mlgRwdAmt;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.envset.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.stepcnt.vo.StepcntVO;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class EnvsetController {
|
||||
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 환경설정 메인 화면
|
||||
*
|
||||
* @param model
|
||||
* @param vo
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/envsetMain")
|
||||
public String envsetMain(ModelMap model, StepcntVO vo) {
|
||||
|
||||
log.debug("envsetMain StepcntVO chk ::: {}", vo);
|
||||
|
||||
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/envset/Envset";
|
||||
}
|
||||
|
||||
/**
|
||||
* 오픈소스 라이선스 화면
|
||||
*
|
||||
* @param model
|
||||
* @param vo
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/openLicense")
|
||||
public String openLicense(ModelMap model, StepcntVO vo) {
|
||||
|
||||
log.debug("openLicense StepcntVO chk ::: {}", vo);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/envset/OpenSourceLicense";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.envset.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class EnvsetVO {
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 진행기간 시작일시 */
|
||||
private String bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private String bnfEndDt;
|
||||
/** 충전 필요 금액 */
|
||||
private String amtForChg;
|
||||
/** 등록자 */
|
||||
private int regUsr;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 수정자 */
|
||||
private int updusr;
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private String bnfPrtDt;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 참여 내용 1 */
|
||||
private String prtCont1;
|
||||
/** 참여 내용 2 */
|
||||
private String prtCont2;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 요청 페이지 구분 */
|
||||
private String reqPageDv;
|
||||
/** 출석 횟수 */
|
||||
private Integer currentMonthAttendanceCount;
|
||||
/** 누적 출석 마일리지 */
|
||||
private Double totalAttendanceMileage;
|
||||
/** 대표 이미지 */
|
||||
private String reprsntImg;
|
||||
/** 대표 링크 URL */
|
||||
private String reprsntLinkUrl;
|
||||
/** 보상 이미지 */
|
||||
private String rewardImg;
|
||||
/** 보상 링크 URL */
|
||||
private String rewardLinkUrl;
|
||||
/** 혜택 문구 */
|
||||
private String bnfWordsCn;
|
||||
/** 출석 일자 목록 */
|
||||
private String attendanceDays;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
/** 마일리지 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
}
|
||||
@@ -0,0 +1,133 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.evntview.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.evntview.vo.EvntviewVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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 java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class EvntviewController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 이벤트 보기 페이지
|
||||
*
|
||||
* @param model 모델맵
|
||||
* @param vo EvntviewVO
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/evntviewMain")
|
||||
public String eventView(ModelMap model, EvntviewVO vo, HttpSession session) {
|
||||
log.debug("eventView EvntviewVO chk ::: {}", vo);
|
||||
|
||||
// 이벤트 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getEventDetail", vo),
|
||||
model,
|
||||
"eventInfo"
|
||||
);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/evntview/Evntview";
|
||||
}
|
||||
|
||||
/**
|
||||
* 이벤트 참여 가능 여부 확인
|
||||
*
|
||||
* @param vo EvntviewVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 참여 가능 여부 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/checkParticipationAvailable", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> checkParticipationAvailable(@RequestBody EvntviewVO vo, HttpSession session) {
|
||||
Long bnfInnb = (Long) session.getAttribute("eventBnfInnb");
|
||||
|
||||
if (bnfInnb != null) {
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
}
|
||||
|
||||
log.debug("checkParticipationAvailable EvntviewVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/checkParticipationAvailable", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이벤트 참여 및 마일리지 적립
|
||||
*
|
||||
* @param vo EvntviewVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 참여 결과 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/participateEvent", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> participateEvent(@RequestBody EvntviewVO vo, HttpSession session) {
|
||||
Long bnfInnb = (Long) session.getAttribute("eventBnfInnb");
|
||||
|
||||
if (bnfInnb != null) {
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
}
|
||||
|
||||
log.debug("participateEvent EvntviewVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/participateEvent", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이벤트 정보 조회 (AJAX용)
|
||||
*
|
||||
* @param vo EvntviewVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 이벤트 정보 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getEventDetail", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getEventDetail(@RequestBody EvntviewVO vo, HttpSession session) {
|
||||
Long bnfInnb = (Long) session.getAttribute("eventBnfInnb");
|
||||
|
||||
if (bnfInnb != null) {
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
}
|
||||
|
||||
log.debug("getEventDetail EvntviewVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getEventDetail", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.evntview.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class EvntviewVO {
|
||||
|
||||
/** 혜택 화면 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 진행기간 시작일시 */
|
||||
private Date bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private Date bnfEndDt;
|
||||
/** 화면 대표 이미지 */
|
||||
private String scrReprsntImg;
|
||||
/** 화면 대표 링크 URL */
|
||||
private String scrReprsntLinkUrl;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
/** 내용 제목 */
|
||||
private String cnSj;
|
||||
/** 내용 설명 */
|
||||
private String cnDc;
|
||||
/** 링크 */
|
||||
private String linkUrl;
|
||||
/** 이미지파일경로 */
|
||||
private String imgFilCours;
|
||||
/** 이미지파일명 */
|
||||
private String imgFilNm;
|
||||
/** 유효일시 */
|
||||
private Date validDt;
|
||||
/** 시간(초) */
|
||||
private Integer tmeSecnd;
|
||||
/** 안내내용 */
|
||||
private String wordsCn;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 클라이언트에서 측정한 이벤트 지속 시간 (초) */
|
||||
private Long duration;
|
||||
/** 서버에서 측정한 이벤트 지속 시간 (초) */
|
||||
private Long serverDuration;
|
||||
/** 마일리지 금액 */
|
||||
private String mlgRwdAmt;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
//쇼핑몰코드
|
||||
public String sopmalCd;
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.hlthset.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.hlthset.vo.HlthsetVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class HlthsetController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 관심건강분야 설정 메인 페이지
|
||||
*
|
||||
* @param model Spring ModelMap 객체
|
||||
* @param vo 관심건강분야 설정 VO
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/hlthsetMain")
|
||||
public String hlthsetMain(ModelMap model, HlthsetVO vo, HttpSession session) {
|
||||
log.debug("hlthsetMain called with vo: {}", vo);
|
||||
|
||||
|
||||
return "sopmal_m/bnft/hlthset/Hlthset";
|
||||
}
|
||||
|
||||
/**
|
||||
* 관심건강분야 설정 정보 조회
|
||||
*
|
||||
* @param vo 관심건강분야 설정 VO
|
||||
* @return ResponseEntity<WnbtResponse> 관심건강분야 설정 정보
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectHealthInterestInfo", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> selectHealthInterestInfo(@RequestBody HlthsetVO vo, HttpSession session) {
|
||||
log.debug("selectHealthInterestInfo called with vo: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectHealthInterestInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 관심분야 저장
|
||||
*
|
||||
* @param vo 관심건강분야 설정 VO
|
||||
* @return ResponseEntity<WnbtResponse> 저장 결과
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/saveUserInterests", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> saveUserInterests(@RequestBody HlthsetVO vo, HttpSession session) {
|
||||
log.debug("saveUserInterests called with vo: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/saveUserInterests", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 관심분야 수정
|
||||
*
|
||||
* @param vo 관심 건강분야 설정 VO
|
||||
* @return ResponseEntity<WnbtResponse> 수정 결과
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateUserInterests", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> updateUserInterests(@RequestBody HlthsetVO vo, HttpSession session) {
|
||||
log.debug("updateUserInterests called with vo: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/saveUserInterests", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 관심분야 삭제
|
||||
*
|
||||
* @param vo 관심건강분야 설정 VO
|
||||
* @return ResponseEntity<WnbtResponse> 삭제 결과
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/deleteUserInterests", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> deleteUserInterests(@RequestBody HlthsetVO vo, HttpSession session) {
|
||||
log.debug("deleteUserInterests called with vo: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/deleteUserInterests", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 관심분야 조회
|
||||
*
|
||||
* @param vo 관심건강분야 설정 VO
|
||||
* @return ResponseEntity<WnbtResponse> 사용자 관심분야 목록
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectUserInterests", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> selectUserInterests(@RequestBody HlthsetVO vo, HttpSession session) {
|
||||
log.debug("selectUserInterests called with vo: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectUserInterests", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 사용자 관심분야 저장 상태 및 마일리지 적립 여부 조회
|
||||
*
|
||||
* @param vo 관심건강분야 설정 VO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectUserInterestSaveStatus", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> selectUserInterestSaveStatus(@RequestBody HlthsetVO vo, HttpSession session) {
|
||||
log.debug("selectUserInterestSaveStatus called with vo: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectUserInterestSaveStatus", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.hlthset.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class HlthsetVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 마일리지 보상 금액 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 동의 여부 */
|
||||
private String agreAt;
|
||||
/** 선택된 관심분야 목록 */
|
||||
private List<InterestArea> interestAreas;
|
||||
|
||||
@Data
|
||||
public static class InterestArea {
|
||||
private Long bnfIntrstInnb;
|
||||
private boolean selected;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,468 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.intakchl.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.intakchl.vo.IntakchlVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class IntakchlController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 처음 추가시, 제품 사용시 화면
|
||||
*
|
||||
* @param model
|
||||
* @param IntakchlVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchlMain")
|
||||
public String intakchlMain(ModelMap model, IntakchlVO vo) {
|
||||
log.debug("intakchlMain IntakchlVO chk ::: {}", vo);
|
||||
|
||||
// 섭취 챌린지 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectIntakchlInfo", vo),
|
||||
model,
|
||||
"intakchscreenInfo"
|
||||
);
|
||||
|
||||
// 구매확정상품 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw", vo),
|
||||
model,
|
||||
"purchasedProductsInfo"
|
||||
);
|
||||
|
||||
// 위시리스트 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", vo),
|
||||
model,
|
||||
"wishlistInfo"
|
||||
);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/Intakchl";
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 추가
|
||||
*
|
||||
* @param IntakchlVO
|
||||
* @return WnbtResponse
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/addSelectedProducts", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> addSelectedProducts(@Validated @RequestBody IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/addSelectedProducts", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 처음 추가시, 제품 사용시 화면
|
||||
*
|
||||
* @param model
|
||||
* @param IntakchlVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchlDailyRecordMain")
|
||||
public String IntakchlDailyRecordMain(ModelMap model, IntakchlVO vo) {
|
||||
|
||||
log.debug("IntakchlDailyRecordMain IntakchlVO chk ::: {}", vo);
|
||||
|
||||
// 섭취 챌린지 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectDailyIntakeRecordsDetail", vo),
|
||||
model,
|
||||
"dailyIntakeRecordsDetail"
|
||||
);
|
||||
|
||||
log.debug("IntakchlDailyRecordMain ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/IntakchlDailyRecord";
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭선택한 날짜의 전체 섭취 기록 및 총 섭취율 조회
|
||||
*
|
||||
* @param IntakchlVO
|
||||
* @return WnbtResponse
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectDailyTotalIntakeRecord", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> selectDailyTotalIntakeRecord(@Validated @RequestBody IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectDailyTotalIntakeRecord", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 선택한 날짜의 전체 섭취 기록 및 총 섭취율 조회
|
||||
*
|
||||
* @param IntakchlVO
|
||||
* @return WnbtResponse
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateIntakeStatus", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateIntakeStatus(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/updateIntakeStatus", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 마일리지 적립
|
||||
*
|
||||
* @param IntakchlVO
|
||||
* @return WnbtResponse
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/awardIntakeChallengesMileage", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> awardIntakeChallengesMileage(@Validated @RequestBody IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/awardIntakeChallengesMileage", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 종합 대시보드 페이지
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchlMileageSummary")
|
||||
public String intakchlMileageSummary(ModelMap model, IntakchlVO vo) {
|
||||
|
||||
// 섭취 챌린지 종합 대시보드 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getIntakechallengeDashboard", vo),
|
||||
model,
|
||||
"dashboardInfo"
|
||||
);
|
||||
|
||||
log.debug("intakchlMileageSummary ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/IntakchlMileageSummary";
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 대시보드 데이터 조회 (AJAX용)
|
||||
*
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 대시보드 정보를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getIntakechallengeDashboard", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getIntakechallengeDashboard(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
log.debug("getIntakechallengeDashboard IntakchlVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getIntakechallengeDashboard", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 날짜별 상태 정보 조회
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getStatsDateClasses", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> getStatsDateClasses(@Validated @RequestBody IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getStatsDateClasses", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 현재 챌린지 중인 제품을 조회
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCurrentChallengeProducts", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> selectCurrentChallengeProducts(@Validated @RequestBody IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectCurrentChallengeProducts", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 처음 추가시, 제품 사용시 화면
|
||||
*
|
||||
* @param model
|
||||
* @param intakchlVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchlChallengeSettings")
|
||||
public String intakchlChallengeSettings(ModelMap model, IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
// 섭취 챌린지 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectIntakchlInfo", vo),
|
||||
model,
|
||||
"settingInfo"
|
||||
);
|
||||
|
||||
log.debug("intakchlChallengeSettings ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/IntakchlChallengeSettings";
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 처음 추가시, 제품 사용시 화면
|
||||
*
|
||||
* @param model
|
||||
* @param intakchlVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchlChallengeProductManagement")
|
||||
public String intakchlChallengeProductManagement(ModelMap model, IntakchlVO vo) {
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
// 섭취 챌린지 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getIntakeChallengeProductManagement", vo),
|
||||
model,
|
||||
"screenInfo"
|
||||
);
|
||||
|
||||
log.debug("intakchlChallengeProductManagement ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/IntakchlChallengeProductManagement";
|
||||
}
|
||||
|
||||
/**
|
||||
* 제품 상세 화면
|
||||
*
|
||||
* @param model
|
||||
* @param intakchlVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchlProductDetail")
|
||||
public String intakchlProductDetail(ModelMap model, IntakchlVO vo, @RequestParam(required = false) Long bnfNtkInnb) {
|
||||
|
||||
vo.setBnfNtkInnb(bnfNtkInnb);
|
||||
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
// 섭취 챌린지 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectIntakeChallengeProductDetail", vo),
|
||||
model,
|
||||
"screenInfo"
|
||||
);
|
||||
|
||||
log.debug("intakchlProductDetail ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/IntakchlProductDetail";
|
||||
}
|
||||
|
||||
/**
|
||||
* 일일 섭취 횟수 및 메모 업데이트
|
||||
*
|
||||
* @param IntakchlVO
|
||||
* @return WnbtResponse
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateDailyIntakeAndMemo", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateDailyIntakeAndMemo(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/updateDailyIntakeAndMemo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 선택된 제품 삭제
|
||||
*
|
||||
* @param IntakchlVO
|
||||
* @return WnbtResponse
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/deleteIntakeChallengeProduct", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteIntakeChallengeProduct(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
log.debug("intakchlVO content: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/deleteIntakeChallengeProduct", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 알림 설정 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/intakchllAlarmSettings")
|
||||
public String intakchllAlarmSettings(ModelMap model, IntakchlVO vo) {
|
||||
|
||||
// 섭취 챌린지 알림 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getIntakeChallengeNotificationSettings", vo),
|
||||
model,
|
||||
"notificationSettings"
|
||||
);
|
||||
|
||||
log.debug("intakchllAlarmSettings ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/intakchl/IntakchlAlarmSettings";
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취 챌린지 알림 설정 정보 조회 (AJAX용)
|
||||
*
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 알림 설정 정보를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getIntakeChallengeNotificationSettings", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getIntakeChallengeNotificationSettings(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
log.debug("getIntakeChallengeNotificationSettings IntakchlVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getIntakeChallengeNotificationSettings", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 섭취시간 알림 설정 업데이트
|
||||
*
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 업데이트 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateIntakeChallengeNotification", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateIntakeChallengeNotification(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/updateIntakeChallengeNotification", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 미완료 알림 설정 업데이트
|
||||
*
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 업데이트 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateIntakeChallengeIncompleteNotification", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateIntakeChallengeIncompleteNotification(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/updateIntakeChallengeIncompleteNotification", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 기본 알림 시간 재설정
|
||||
*
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 재설정 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/resetDefaultNotificationTimes", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> resetDefaultNotificationTimes(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
log.debug("resetDefaultNotificationTimes IntakchlVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/resetDefaultNotificationTimes", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 개별 알림 설정 삭제
|
||||
*
|
||||
* @param vo IntakchlVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 삭제 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/deleteNotification", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteNotification(@Validated @RequestBody IntakchlVO vo) {
|
||||
|
||||
log.debug("deleteNotification IntakchlVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/deleteNotification", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.intakchl.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class IntakchlVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 섭취챌린지 고유번호 */
|
||||
private Long bnfNtkInnb;
|
||||
/** 회원 고유번호 */
|
||||
private String mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 섭취 상품 고유번호 */
|
||||
private Long goodsInnb;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 섭취 상태 구분 코드 */
|
||||
private String bnfNtkSttusDvCd;
|
||||
/** 섭취 횟수 */
|
||||
private Integer ntkCnt;
|
||||
/** 메모 */
|
||||
private String memo;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private Date bnfPrtDt;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 마일리지 금액 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 상품 고유번호 리스트 */
|
||||
private List<ProductVO> products;
|
||||
|
||||
private String selectedDate;
|
||||
|
||||
private String intakeStatus;
|
||||
|
||||
/** 보너스까지 남은 일수 */
|
||||
private int daysUntilBonus;
|
||||
/** 동의여부 */
|
||||
private String agreAt;
|
||||
|
||||
private String ntcnTme;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
private String bnfNtkNtcnInnb;
|
||||
/** 상품번호 */
|
||||
private int productId;
|
||||
/** 제품 섭취 날짜 */
|
||||
private String intakeDate;
|
||||
|
||||
/** 섭취 시작일자 */
|
||||
private Date startDate;
|
||||
|
||||
@Data
|
||||
public static class ProductVO {
|
||||
private Long goodsInnb;
|
||||
private String sopmalCd;
|
||||
private String originDvCd;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,188 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.lucklott.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.ZoneId;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.lucklott.vo.LucklottVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.BoResultMapConverter;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class LucklottController {
|
||||
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 행운복권 혜택 기본 정보 조회
|
||||
*
|
||||
* @param model
|
||||
* @param vo
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/lucklottMain")
|
||||
public String luckyLotteryMain(ModelMap model, LucklottVO vo) {
|
||||
log.debug("luckyLotteryMain LucklottVO chk ::: {}", vo);
|
||||
|
||||
// 혜택 기본 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectLucklottBenefitInfo", vo),
|
||||
model,
|
||||
"screenInfo"
|
||||
);
|
||||
|
||||
// 응답 데이터 로깅
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
// benefitInfo 특별 확인
|
||||
Object screenInfo = model.get("screenInfo");
|
||||
if (screenInfo instanceof Map) {
|
||||
Map<String, Object> screenInfoMap = (Map<String, Object>) screenInfo;
|
||||
Object benefitInfo = screenInfoMap.get("benefitInfo");
|
||||
log.debug("benefitInfo: {}", benefitInfo);
|
||||
|
||||
if (benefitInfo instanceof Map) {
|
||||
Map<String, Object> benefitInfoMap = (Map<String, Object>) benefitInfo;
|
||||
Object bnfInnb = benefitInfoMap.get("bnfInnb");
|
||||
log.debug("bnfInnb from benefitInfo: {}", bnfInnb);
|
||||
}
|
||||
}
|
||||
|
||||
return "sopmal_m/bnft/lucklott/Lucklott";
|
||||
}
|
||||
|
||||
/**
|
||||
* 행운복권 참여
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/participateLuckyLottery", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> participateLuckyLottery(@Validated @RequestBody LucklottVO vo) {
|
||||
log.debug("participateLuckyLottery LucklottVO chk ::: {}", vo);
|
||||
|
||||
// 혜택 참여 정보 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/participateLuckyLottery", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 최신 행운복권 참여 정보 조회
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<Map<String, Object>>
|
||||
*/
|
||||
@RequestMapping(value = "/getLatestLuckyLotteryInfo", method = RequestMethod.POST)
|
||||
public ResponseEntity<Map<String, Object>> getLatestLuckyLotteryInfo(@RequestBody LucklottVO vo) {
|
||||
log.debug("getLatestLuckyLotteryInfo LucklottVO chk ::: {}", vo);
|
||||
// 참여 횟수 정보 조회
|
||||
Map<String, Object> participationCountInfo = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectCurrentMonthParticipationCount", vo)
|
||||
);
|
||||
|
||||
// 누적 참여 마일리지 조회
|
||||
Map<String, Object> participationMileageInfo = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectTotalParticipationMileage", vo)
|
||||
);
|
||||
|
||||
// 결과를 Map에 담아 반환
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("participationCount", participationCountInfo.get("currentMonthParticipationCount"));
|
||||
result.put("totalParticipationMileage", participationMileageInfo.get("totalParticipationMileage"));
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK).body(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 행운복권 당첨 결과 미리보기
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/previewLuckyLotteryResult", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> previewLuckyLotteryResult(@Validated @RequestBody LucklottVO vo) {
|
||||
log.debug("previewLuckyLotteryResult LucklottVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/previewLuckyLotteryResult", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 행운복권 실제 참여 확정
|
||||
*
|
||||
* @param requestData
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/confirmLuckyLotteryParticipation", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> confirmLuckyLotteryParticipation(@Validated @RequestBody Map<String, Object> requestData, HttpSession session) {
|
||||
log.debug("confirmLuckyLotteryParticipation requestData chk ::: {}", requestData);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/confirmLuckyLotteryParticipation", requestData),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 행운복권 남은 수량 조회
|
||||
*
|
||||
* @param requestData
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/checkRemainingGoodsQuantity", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> checkRemainingGoodsQuantity(@Validated @RequestBody LucklottVO vo) {
|
||||
log.debug("checkRemainingGoodsQuantity requestData chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/checkRemainingGoodsQuantity", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.lucklott.vo;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LucklottVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 진행기간 시작일시 */
|
||||
private String bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private String bnfEndDt;
|
||||
/** 충전 필요 금액 */
|
||||
private String amtForChg;
|
||||
/** 등록자 */
|
||||
private int regusr;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 수정자 */
|
||||
private int updusr;
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private String bnfPrtDt;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 참여 내용 1 */
|
||||
private String prtCont1;
|
||||
/** 참여 내용 2 */
|
||||
private String prtCont2;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 요청 페이지 구분 */
|
||||
private String reqPageDv;
|
||||
/** 참여 횟수 */
|
||||
private Integer currentMonthParticipationCount;
|
||||
/** 누적 참여 마일리지 */
|
||||
private Double totalParticipationMileage;
|
||||
/** 대표 이미지 */
|
||||
private String reprsntImg;
|
||||
/** 대표 링크 URL */
|
||||
private String reprsntLinkUrl;
|
||||
/** 보상 이미지 */
|
||||
private String rewardImg;
|
||||
/** 보상 링크 URL */
|
||||
private String rewardLinkUrl;
|
||||
/** 혜택 문구 */
|
||||
private String bnfWordsCn;
|
||||
/** 참여 일자 목록 */
|
||||
private String participationDays;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
/** 마일리지 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
/** 상품 고유번호 */
|
||||
private Long goodsInnb;
|
||||
/** 상품 고유번호 */
|
||||
private Long przwinQy;
|
||||
/** 남은 당첨 수량 */
|
||||
private Long remaininggoodsquantity;
|
||||
/** 등록자 */
|
||||
private Long regUsr;
|
||||
}
|
||||
@@ -0,0 +1,146 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.lvshop.controller;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.lvshop.vo.LvshopVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.BoResultMapConverter;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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 java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class LvshopController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 라이브쇼핑 메인 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo LvshopVO 객체
|
||||
* @return String 뷰 이름
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/lvshopMain", method = RequestMethod.GET)
|
||||
public String lvshopMain(ModelMap model, LvshopVO vo, HttpSession session) {
|
||||
log.debug("lvshopMain LvshopVO chk ::: {}", vo);
|
||||
|
||||
// 라이브쇼핑 정보 조회 (현재 방송 + 예고)
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getLiveShoppingInfo", vo),
|
||||
model,
|
||||
"liveShoppingInfo" // 모델에 liveShoppingInfo 키로 데이터 저장
|
||||
);
|
||||
|
||||
log.debug("ModelMap content after getLiveShoppingInfo: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/lvshop/Lvshop"; // 라이브쇼핑 메인 뷰 반환
|
||||
}
|
||||
|
||||
/**
|
||||
* 라이브 쇼핑 정보 조회 (AJAX 호출용)
|
||||
* @param vo LvshopVO 객체 (sopmalCd 필수)
|
||||
* @return ResponseEntity<WnbtResponse> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC) // 회원/비회원 접근 가능
|
||||
@RequestMapping(value = "/getInfo", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getLiveShoppingInfo(@RequestBody LvshopVO vo) {
|
||||
log.debug("getLiveShoppingInfo LvshopVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getLiveShoppingInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 라이브 쇼핑 알림 신청/취소 토글
|
||||
* @param vo LvshopVO 객체 (bnfInnb, agreeYn 필수)
|
||||
* @return ResponseEntity<WnbtResponse> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED) // 회원만 접근 가능
|
||||
@RequestMapping(value = "/toggleNotification", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> toggleLiveShoppingNotification(@RequestBody LvshopVO vo) {
|
||||
log.debug("toggleLiveShoppingNotification LvshopVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/toggleLiveShoppingNotification", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 라이브 쇼핑 참여 기록 (시청 시작)
|
||||
* @param vo LvshopVO 객체 (bnfInnb 필수)
|
||||
* @return ResponseEntity<WnbtResponse> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED) // 회원만 접근 가능
|
||||
@RequestMapping(value = "/recordParticipation", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> recordLiveShoppingParticipation(@RequestBody LvshopVO vo) {
|
||||
log.debug("recordLiveShoppingParticipation LvshopVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/recordLiveShoppingParticipation", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 라이브 쇼핑 마일리지 보상 지급 (시청 완료)
|
||||
* @param vo LvshopVO 객체 (bnfPrtInnb, mlgRwdAmt 필수)
|
||||
* @return ResponseEntity<WnbtResponse> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED) // 회원만 접근 가능
|
||||
@RequestMapping(value = "/awardReward", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> awardLiveShoppingReward(@RequestBody LvshopVO vo) {
|
||||
log.debug("awardLiveShoppingReward LvshopVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/awardLiveShoppingReward", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 라이브 쇼핑 참여 기록 및 마일리지 보상 지급 통합 처리
|
||||
* @param vo LvshopVO 객체 (bnfInnb, mlgRwdAmt 필수)
|
||||
* @return ResponseEntity<WnbtResponse> 응답 엔티티
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED) // 회원만 접근 가능
|
||||
@RequestMapping(value = "/recordAndReward", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> recordAndRewardLiveShopping(@RequestBody LvshopVO vo) {
|
||||
log.debug("recordAndRewardLiveShopping LvshopVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/recordAndRewardLiveShopping", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.lvshop.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class LvshopVO {
|
||||
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 진행기간 시작일시 */
|
||||
private Date bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private Date bnfEndDt;
|
||||
/** 혜택 동의 구분 코드 */
|
||||
private String bnfAgreDvCd;
|
||||
/** 화면 대표 이미지 */
|
||||
private String scrReprsntImg;
|
||||
/** 화면 대표 링크 URL */
|
||||
private String scrReprsntLinkUrl;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
/** 내용 제목 (방송명) */
|
||||
private String cnSj;
|
||||
/** 내용 설명 */
|
||||
private String cnDc;
|
||||
/** 링크 (방송링크URL) */
|
||||
private String linkUrl;
|
||||
/** 이미지파일경로 (방송썸네일파일 경로) */
|
||||
private String imgFilCours;
|
||||
/** 이미지파일명 (방송썸네일파일 명) */
|
||||
private String imgFilNm;
|
||||
/** 유효일시 (방송일시) */
|
||||
private Date validDt;
|
||||
/** 시간(초) (필수열람시간) */
|
||||
private Integer tmeSecnd;
|
||||
/** 안내내용 (방송소개) */
|
||||
private String wordsCn;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 마일리지 금액 */
|
||||
private String mlgRwdAmt;
|
||||
/** 서버에서 측정한 이벤트 지속 시간 (초) */
|
||||
private Long serverDuration;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 동의 여부 */
|
||||
private String agreAt;
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.oxquiz.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.oxquiz.vo.OxquizVO;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class OxquizController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* OX 퀴즈 메인 화면
|
||||
*
|
||||
* @param model ModelMap
|
||||
* @param vo OxquizVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/oxquizMain")
|
||||
public String oxquizMain(ModelMap model, OxquizVO vo, HttpSession session) {
|
||||
log.debug("oxquizMain OxquizVO chk ::: {}", vo);
|
||||
|
||||
// OX 퀴즈 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectOxquizInfo", vo),
|
||||
model,
|
||||
"screenInfo"
|
||||
);
|
||||
log.debug(" content: {}", model);
|
||||
|
||||
// 사용 여부 검증
|
||||
Map<String, Object> screenInfo = (Map<String, Object>) model.getAttribute("screenInfo");
|
||||
|
||||
// 정보가 없거나 사용 여부가 'N'인 경우
|
||||
if (screenInfo == null || screenInfo.get("basicInfo") == null ||
|
||||
!"Y".equals(((Map<String, Object>)screenInfo.get("basicInfo")).get("useAt"))) {
|
||||
model.addAttribute("alertMessage", "현재 OX 퀴즈 서비스를 이용할 수 없습니다.");
|
||||
model.addAttribute("goBack", "Y");
|
||||
return "sopmal_m/bnft/oxquiz/Oxquiz";
|
||||
}
|
||||
|
||||
// 사용 기간 검증
|
||||
try {
|
||||
Map<String, Object> basicInfo = (Map<String, Object>) screenInfo.get("basicInfo");
|
||||
Date now = new Date();
|
||||
Date beginDate = null;
|
||||
Date endDate = null;
|
||||
|
||||
if (basicInfo.get("bnfBgnDt") != null) {
|
||||
LocalDateTime localDateTime = LocalDateTime.parse(
|
||||
basicInfo.get("bnfBgnDt").toString(),
|
||||
DateTimeFormatter.ISO_LOCAL_DATE_TIME
|
||||
);
|
||||
beginDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
|
||||
if (basicInfo.get("bnfEndDt") != null) {
|
||||
LocalDateTime localDateTime = LocalDateTime.parse(
|
||||
basicInfo.get("bnfEndDt").toString(),
|
||||
DateTimeFormatter.ISO_LOCAL_DATE_TIME
|
||||
);
|
||||
endDate = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
}
|
||||
|
||||
if (beginDate != null && now.before(beginDate) ||
|
||||
(endDate != null && now.after(endDate))) {
|
||||
model.addAttribute("alertMessage", "OX 퀴즈 서비스 이용 기간이 아닙니다.");
|
||||
model.addAttribute("goBack", "Y");
|
||||
return "sopmal_m/bnft/oxquiz/Oxquiz";
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("날짜 변환 중 오류 발생: ", e);
|
||||
model.addAttribute("alertMessage", "서비스 이용기간 확인 중 오류가 발생했습니다.");
|
||||
model.addAttribute("goBack", "Y");
|
||||
return "sopmal_m/bnft/oxquiz/Oxquiz";
|
||||
}
|
||||
|
||||
return "sopmal_m/bnft/oxquiz/Oxquiz";
|
||||
}
|
||||
|
||||
/**
|
||||
* OX 퀴즈 참여
|
||||
*
|
||||
* @param vo OxquizVO
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/participate", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> participateOxquiz(@RequestBody OxquizVO vo, HttpSession session) {
|
||||
log.debug("participateOxquiz OxquizVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/participateOxquiz", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 알림 상태 조회
|
||||
*
|
||||
* @param vo OxquizVO
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getoxquizNotificationStatus", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> getNotificationStatus(@RequestBody OxquizVO vo, HttpSession session) {
|
||||
log.debug("getNotificationStatus OxquizVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getoxquizNotificationStatus", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 알림 상태 변경
|
||||
*
|
||||
* @param vo OxquizVO
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateoxquizNotificationStatus", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> updateNotificationStatus(@RequestBody OxquizVO vo, HttpSession session) {
|
||||
log.debug("updateNotificationStatus OxquizVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/updateoxquizNotificationStatus", vo),
|
||||
result -> ResponseEntity.ok().body(result)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.oxquiz.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class OxquizVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 진행기간 시작일시 */
|
||||
private Date bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private Date bnfEndDt;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
/** 시간(초) */
|
||||
private Integer tmeSecnd;
|
||||
/** 혜택 퀴즈 고유번호 */
|
||||
private Long bnfQuizInnb;
|
||||
/** 퀴즈 내용 */
|
||||
private String quizCn;
|
||||
/** 퀴즈 정답 */
|
||||
private String quizCnsr;
|
||||
/** 힌트보기 링크 */
|
||||
private String hintUrl;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 답변내용 */
|
||||
private String answCn;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 동의여부 */
|
||||
private String agreAt;
|
||||
/** 현재 퀴즈 일차 */
|
||||
private Integer currentQuizDay;
|
||||
/** 대표 이미지 */
|
||||
private String reprsntImg;
|
||||
/** 대표 링크 URL */
|
||||
private String reprsntLinkUrl;
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.purstmp.controller;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.purstmp.vo.PurstmpVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.BoResultMapConverter;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
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 java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class PurstmpController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 스탬프카드 메인 화면
|
||||
*
|
||||
* @param model
|
||||
* @param vo
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/purstmpMain")
|
||||
public String purstmpMain(ModelMap model, PurstmpVO vo, HttpSession session) {
|
||||
log.debug("purstmpMain PurstmpVO chk ::: {}", vo);
|
||||
|
||||
// 스탬프카드 초기 정보조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStampCards", vo),
|
||||
model,
|
||||
"rewardProductInfo"
|
||||
);
|
||||
|
||||
log.debug("Model values: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/purstmp/PurstmpStampInProgress";
|
||||
}
|
||||
|
||||
/**
|
||||
* 스탬프카드 정보 새로고침
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/refreshStamps", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> refreshStamps(@RequestBody PurstmpVO vo, HttpSession session) {
|
||||
log.debug("refreshStamps PurstmpVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/refreshStampCard", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 스탬프 적립내역 화면
|
||||
*
|
||||
* @param model
|
||||
* @param vo
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/purstmpHistory")
|
||||
public String purstmpHistory(ModelMap model, PurstmpVO vo, HttpSession session) {
|
||||
log.debug("purstmpHistory PurstmpVO chk ::: {}", vo);
|
||||
|
||||
// 스탬프 적립내역 및 교환권 갯수 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStampAndPurchaseData", vo),
|
||||
model,
|
||||
"rewardProductInfo"
|
||||
);
|
||||
|
||||
log.debug("Stamp History Model values: {}", model);
|
||||
return "sopmal_m/bnft/purstmp/PurstmpStampHistory";
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax로 스탬프 데이터 조회
|
||||
* BO 서버의 selectStampCards API를 호출하여 JSON 형태로 반환
|
||||
*
|
||||
* @param vo 스탬프 조회 조건
|
||||
* @return ResponseEntity<Map<String, Object>>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getStampData", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> getStampData(@RequestBody PurstmpVO vo, HttpSession session) {
|
||||
log.debug("getStampData PurstmpVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStampCards", vo),
|
||||
result -> {
|
||||
Map<String, Object> response = new HashMap<>();
|
||||
response.put("success", true);
|
||||
response.put("data", result);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajax로 스탬프 적립내역 데이터 조회
|
||||
* BO 서버의 selectStampAndPurchaseData API를 호출하여 JSON 형태로 반환
|
||||
*
|
||||
* @param vo 스탬프 조회 조건
|
||||
* @return ResponseEntity<Map<String, Object>>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/getStampHistoryData", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<Map<String, Object>> getStampHistoryData(@RequestBody PurstmpVO vo, HttpSession session) {
|
||||
log.debug("getStampHistoryData PurstmpVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStampAndPurchaseData", vo),
|
||||
result -> {
|
||||
Map<String, Object> response = new HashMap<>();
|
||||
response.put("success", true);
|
||||
response.put("data", result);
|
||||
return ResponseEntity.ok(response);
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.purstmp.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class PurstmpVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private String bnfInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 매장고유번호 */
|
||||
private String strInnb;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 구매식별 고유번호 */
|
||||
private Long purchsInnb;
|
||||
/** 구매금액 */
|
||||
private Double purchsAmt;
|
||||
/** 적립 스탬프 수 */
|
||||
private Integer stmpCnt;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 혜택 교환권 고유번호 */
|
||||
private Long bnfExtiketInnb;
|
||||
/** 교환권 스탬프 수 */
|
||||
private Integer extiketStmpCnt;
|
||||
/** 교환여부 */
|
||||
private String exchngAt;
|
||||
/** 교환일시 */
|
||||
private Date exchngDt;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.qrevnt.controller;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.bnft.qrevnt.vo.QREvntVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class QREvntController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* QR 이벤트 메인 화면 (통합)
|
||||
* - 일반 접근과 딥링크 진입 모두 처리
|
||||
* - QR 링크 접속 시 자동 참여 처리
|
||||
*
|
||||
* @param vo QR 이벤트 처리를 위한 VO
|
||||
* @param model ModelMap
|
||||
* @return String 화면 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = {"/qrEventMain", "/rewardProc"}, method = RequestMethod.GET)
|
||||
public String qrEventMain(QREvntVO vo, ModelMap model) {
|
||||
log.info("=== QR 이벤트 화면 진입 ===");
|
||||
log.info("요청 파라미터: {}", vo);
|
||||
|
||||
try {
|
||||
// QR이벤트 통합 처리 (정보 조회 + 자동 참여)
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/processQREventAccess", vo),
|
||||
model,
|
||||
"qrEventData"
|
||||
);
|
||||
|
||||
// VO 정보를 모델에 추가 (JS에서 사용)
|
||||
model.addAttribute("vo", vo);
|
||||
|
||||
log.debug("QR 이벤트 ModelMap content: {}", model);
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("QR 이벤트 처리 중 오류 발생", e);
|
||||
model.addAttribute("errorMessage", "이벤트 정보 조회 중 오류가 발생했습니다.");
|
||||
}
|
||||
|
||||
return "sopmal_m/bnft/qrevnt/QREvntMain";
|
||||
}
|
||||
|
||||
/**
|
||||
* QR이벤트 당첨 정보 상세 조회 (AJAX)
|
||||
*
|
||||
* @param vo QREvntVO
|
||||
* @return ResponseEntity<Map<String, Object>>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getWinningDetail", method = RequestMethod.POST)
|
||||
public ResponseEntity<Map<String, Object>> getWinningDetail(@RequestBody QREvntVO vo) {
|
||||
|
||||
Map<String, Object> winningDetail = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectWinningDetail", vo)
|
||||
);
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK).body(winningDetail);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,129 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.qrevnt.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
@Data
|
||||
public class QREvntVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private String bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 진행기간 시작일시 */
|
||||
private String bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private String bnfEndDt;
|
||||
/** 화면 대표 이미지 */
|
||||
private String scrReprsntImg;
|
||||
/** 화면 대표 이미지명 */
|
||||
private String scrReprsntImgNm;
|
||||
/** 화면 대표 링크 URL */
|
||||
private String scrReprsntLinkUrl;
|
||||
/** 화면 보상 이미지 */
|
||||
private String scrRwdImg;
|
||||
/** 화면 보상 이미지명 */
|
||||
private String scrRwdImgNm;
|
||||
/** 화면 보상 링크 URL */
|
||||
private String scrRwdLinkUrl;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
|
||||
/** 회원 고유번호 */
|
||||
private int mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 매장 고유번호 */
|
||||
private Long strInnb;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private String bnfPrtDt;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
/** 마일리지 보상 금액 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
/** 상품 고유번호 */
|
||||
private Long goodsInnb;
|
||||
/** 표시명 */
|
||||
private String itmNm;
|
||||
/** 당첨수량 */
|
||||
private Integer przwinQy;
|
||||
/** 당첨확률 */
|
||||
private Double przwinPrc;
|
||||
|
||||
/** QR 코드 */
|
||||
private String qrCd;
|
||||
/** 매장명 */
|
||||
private String strNm;
|
||||
/** 매장 주소 */
|
||||
private String strAdres;
|
||||
/** 매장 도로명 주소 */
|
||||
private String strRnmAdres;
|
||||
/** 매장 전화번호 */
|
||||
private String strTelnb;
|
||||
/** 시도 */
|
||||
private String ctyDo;
|
||||
/** 시군구 */
|
||||
private String ctyGunGu;
|
||||
|
||||
/** 쿠폰명 */
|
||||
private String couponNm;
|
||||
/** 쿠폰번호 */
|
||||
private String couponNb;
|
||||
/** 사용유효기간유형 */
|
||||
private String useValidTermTy;
|
||||
/** 사용유효기간일수 */
|
||||
private Integer useValidTermDaycnt;
|
||||
/** 사용유효시작일 */
|
||||
private String useValidBgnDt;
|
||||
/** 사용유효종료일 */
|
||||
private String useValidEndDt;
|
||||
/** 사용조건내용 */
|
||||
private String useCndtnCn;
|
||||
/** 유효기간 (날짜+시간) */
|
||||
private String expiryDateTime;
|
||||
|
||||
/** 참여 여부 */
|
||||
private boolean isParticipated;
|
||||
/** 당첨 여부 */
|
||||
private boolean isWinner;
|
||||
/** 참여 횟수 */
|
||||
private Integer participationCount;
|
||||
/** 전체 참여 횟수 */
|
||||
private Integer totalParticipationCount;
|
||||
|
||||
/** 안내문 1 */
|
||||
private String wordsCn1;
|
||||
/** 안내문 2 */
|
||||
private String wordsCn2;
|
||||
/** 안내문 3 */
|
||||
private String wordsCn3;
|
||||
|
||||
/** 등록자 */
|
||||
private int regusr;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 수정자 */
|
||||
private int updusr;
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
|
||||
/** 요청 페이지 구분 */
|
||||
private String reqPageDv;
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.rougame.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.rougame.vo.RougameVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.BoResultMapConverter;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class RougameController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 룰렛 게임 메인 화면
|
||||
*
|
||||
* @param model
|
||||
* @param vo
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/rougameMain")
|
||||
public String rougameMain(ModelMap model, RougameVO vo, HttpSession session) {
|
||||
log.debug("Initial bnfDvCd value: {}", vo.getBnfDvCd());
|
||||
|
||||
// 혜택 화면 설정 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectRougameBenefitInfo", vo),
|
||||
model,
|
||||
"screenInfo"
|
||||
);
|
||||
|
||||
// 남은 게임 참여 기회 횟수 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectRemainingGameChances", vo),
|
||||
model,
|
||||
"remainingChancesInfo"
|
||||
);
|
||||
|
||||
log.debug("ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/rougame/Rougame";
|
||||
}
|
||||
|
||||
/**
|
||||
* 룰렛 게임 참여
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/playRougame", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> playRoulette(@RequestBody RougameVO vo, HttpSession session) {
|
||||
log.debug("saveAlarmSettings RougameVO chk ::: {}", vo);
|
||||
|
||||
// 참여 가능 여부 확인
|
||||
Map<String, Object> participationCountInfo = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectRemainingGameChances", vo)
|
||||
);
|
||||
|
||||
int remainingChances = (int) participationCountInfo.get("remainingGameChances");
|
||||
if (remainingChances <= 0) {
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
.body(WnbtResponse.builder().resBody(new WnbtResponseBody(0)).build());
|
||||
}
|
||||
|
||||
// 룰렛 결과 계산 및 참여 로직
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/calculateRouletteResult", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 룰렛 게임 확률 계산
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/calculateRouletteResult", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> calculateRouletteResult(@RequestBody RougameVO vo, HttpSession session) {
|
||||
log.debug("calculateRouletteResult RougameVO chk ::: {}", vo);
|
||||
// 룰렛 게임 확률 계산 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/calculateRouletteResult", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 지급 가능한 보상이 있는지 확인
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/checkRewardAvailability", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> checkRewardAvailability(@RequestBody RougameVO vo) {
|
||||
log.debug("checkRewardAvailability RougameVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/checkRewardAvailability", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.rougame.vo;
|
||||
|
||||
import java.sql.Date;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class RougameVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 진행기간 시작일시 */
|
||||
private String bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private String bnfEndDt;
|
||||
/** 충전 필요 금액 */
|
||||
private String amtForChg;
|
||||
/** 등록자 */
|
||||
private int regusr;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 수정자 */
|
||||
private int updusr;
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 보상수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private String bnfPrtDt;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 참여 내용 1 */
|
||||
private String prtCont1;
|
||||
/** 참여 내용 2 */
|
||||
private String prtCont2;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 요청 페이지 구분 */
|
||||
private String reqPageDv;
|
||||
/** 참여 횟수 */
|
||||
private Integer currentMonthParticipationCount;
|
||||
/** 누적 참여 마일리지 */
|
||||
private Double totalParticipationMileage;
|
||||
/** 대표 이미지 */
|
||||
private String reprsntImg;
|
||||
/** 대표 링크 URL */
|
||||
private String reprsntLinkUrl;
|
||||
/** 보상 이미지 */
|
||||
private String rewardImg;
|
||||
/** 보상 링크 URL */
|
||||
private String rewardLinkUrl;
|
||||
/** 혜택 문구 */
|
||||
private String bnfWordsCn;
|
||||
/** 참여 일자 목록 */
|
||||
private String participationDays;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
/** 마일리지 */
|
||||
private Double mlgRwdAmt;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
/** 상품 고유번호 */
|
||||
private Long goodsInnb;
|
||||
/** 남은 게임 참여 기회 횟수 */
|
||||
private Integer remainingGameChances;
|
||||
/** 아이템 이름 */
|
||||
private String ItmNm;
|
||||
/** 참여 대상 고유번호 */
|
||||
private String prtTargetInnb;
|
||||
/** 참여 대상 내용 */
|
||||
private String prtTargetCn;
|
||||
}
|
||||
@@ -0,0 +1,421 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.stepcnt.controller;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
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 com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.bnft.stepcnt.vo.StepcntVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.BoResultMapConverter;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/bnft")
|
||||
public class StepcntController {
|
||||
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 만보기 메인 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/stepcntMain")
|
||||
public String stepcntMain(ModelMap model, StepcntVO vo, HttpSession session) {
|
||||
log.debug("stepcntMain StepcntVO chk ::: {}", vo);
|
||||
|
||||
// 만보기 혜택 기본 정보조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStepcntBenefitInfo", vo),
|
||||
model,
|
||||
"stepcntInfo"
|
||||
);
|
||||
|
||||
log.debug("stepcntMain ModelMap content: {}", model);
|
||||
|
||||
// stepcntInfo의 baseInfo에서 bnfInnb 값을 가져와서 세션에 저장
|
||||
if (model.containsAttribute("stepcntInfo")) {
|
||||
Map<String, Object> stepcntInfo = (Map<String, Object>) model.getAttribute("stepcntInfo");
|
||||
if (stepcntInfo != null && stepcntInfo.containsKey("baseInfo")) {
|
||||
Map<String, Object> baseInfo = (Map<String, Object>) stepcntInfo.get("baseInfo");
|
||||
if (baseInfo != null && baseInfo.containsKey("bnfInnb")) {
|
||||
Object bnfInnbObj = baseInfo.get("bnfInnb");
|
||||
if (bnfInnbObj != null) {
|
||||
Long bnfInnb = Long.valueOf(bnfInnbObj.toString());
|
||||
session.setAttribute("bnfInnb", bnfInnb);
|
||||
log.debug("baseInfo에서 bnfInnb 값을 세션에 저장: {}", bnfInnb);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return "sopmal_m/bnft/stepcnt/Stepcnt";
|
||||
}
|
||||
|
||||
/**
|
||||
* 만보기 혜택 동의 상태 저장/업데이트
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 처리 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertStepcntAgreement", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> insertStepcntAgreement(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("insertStepcntAgreement StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/insertStepcntAgreement", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 걸음 수 데이터 저장
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 처리 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/saveStepCount", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> saveStepCount(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("saveStepCount StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/saveStepCount", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 이번 달 만보 달성 현황 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/stepcntMonthlyView")
|
||||
public String stepcntMonthlyView(ModelMap model, StepcntVO vo, HttpSession session) {
|
||||
log.debug("stepcntMonthlyView StepcntVO chk ::: {}", vo);
|
||||
|
||||
// 이번 달 만보 달성 횟수 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getMonthlySuccessCount", vo),
|
||||
model,
|
||||
"monthlySuccessCount"
|
||||
);
|
||||
|
||||
// 월별 걸음 수 데이터 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getMonthlyStepData", vo),
|
||||
model,
|
||||
"monthlyStepData"
|
||||
);
|
||||
|
||||
log.debug("stepcntMonthlyView ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/stepcnt/StepcntMonthlyView";
|
||||
}
|
||||
|
||||
/**
|
||||
* 이번 달 만보 달성 횟수 조회 (AJAX용)
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 달성 횟수 정보를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getMonthlySuccessCount", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getMonthlySuccessCount(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("getMonthlySuccessCount StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getMonthlySuccessCount", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 월별 걸음 수 데이터 조회 (AJAX용)
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 월별 걸음 수 데이터를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getMonthlyStepData", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getMonthlyStepData(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("getMonthlyStepData StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getMonthlyStepData", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마일리지 및 보상 요약 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/stepcntRewardSummary")
|
||||
public String stepcntRewardSummary(ModelMap model, StepcntVO vo, HttpSession session) {
|
||||
log.debug("stepcntRewardSummary StepcntVO chk ::: {}", vo);
|
||||
|
||||
// 이번 달 마일리지 획득 현황 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getCurrentMonthMileageSum", vo),
|
||||
model,
|
||||
"mileageInfo"
|
||||
);
|
||||
|
||||
// 이번 달 깜짝선물 수령 횟수 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getMonthlyGiftReceiptCount", vo),
|
||||
model,
|
||||
"giftInfo"
|
||||
);
|
||||
|
||||
log.debug("stepcntRewardSummary ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/stepcnt/StepcntRewardSummary";
|
||||
}
|
||||
|
||||
/**
|
||||
* 이번 달 마일리지 획득 현황 조회 (AJAX용)
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 마일리지 획득 현황을 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/getCurrentMonthMileageSum", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> getCurrentMonthMileageSum(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("getCurrentMonthMileageSum StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getCurrentMonthMileageSum", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 깜짝선물 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/stepcntSurpriseGift")
|
||||
public String stepcntSurpriseGift(ModelMap model, StepcntVO vo, HttpSession session) {
|
||||
log.debug("stepcntSurpriseGift StepcntVO chk ::: {}", vo);
|
||||
|
||||
// 오늘의 깜짝선물 보상 조건 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/getTodayGiftRewardStepCondition", vo),
|
||||
model,
|
||||
"giftCondition"
|
||||
);
|
||||
|
||||
// 현재 걸음 수 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStepcntBenefitInfo", vo),
|
||||
model,
|
||||
"currentStepInfo"
|
||||
);
|
||||
|
||||
log.debug("stepcntSurpriseGift ModelMap content: {}", model);
|
||||
|
||||
return "sopmal_m/bnft/stepcnt/StepcntSurpriseGift";
|
||||
}
|
||||
|
||||
/**
|
||||
* 깜짝선물 수령
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 수령 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/receiveGift", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> receiveGift(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("receiveGift StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/receiveGift", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마일리지 수령
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 수령 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/receiveMileage", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> receiveMileage(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("receiveMileage StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/receiveMileage", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 만보기 서비스 정보 조회 (AJAX용)
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 만보기 서비스 정보를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectStepcntBenefitInfo", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> selectStepcntBenefitInfo(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("selectStepcntBenefitInfo StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStepcntBenefitInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 만보기 세팅팅 화면
|
||||
*
|
||||
* @param model ModelMap 객체
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 뷰 경로
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping("/stepcntSettings")
|
||||
public String stepcntSettings(ModelMap model, StepcntVO vo) {
|
||||
|
||||
// BNF_INNB 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectBnfInnb", vo),
|
||||
model,
|
||||
"bnfInnb"
|
||||
);
|
||||
|
||||
return "sopmal_m/bnft/stepcnt/StepcntSettings";
|
||||
}
|
||||
|
||||
/**
|
||||
* 만보기 참여 안내 조회(AJAX용)
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 만보기 참여 안내를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectStepcntGuide", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> selectStepcntGuide(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("selectStepcntGuide StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/selectStepcntGuide", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 만보기 동의 상태 확인 (AJAX용)
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 동의 상태 정보를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/checkCurrentStepcntAgreement", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> checkCurrentStepcntAgreement(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
log.debug("checkCurrentStepcntAgreement StepcntVO chk ::: {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/checkCurrentStepcntAgreement", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 만보기 혜택 동의 상태 저장/업데이트
|
||||
*
|
||||
* @param vo StepcntVO 객체
|
||||
* @param session HttpSession 객체
|
||||
* @return 처리 결과를 포함한 응답
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateStepcntAgreement", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateStepcntAgreement(@Validated @RequestBody StepcntVO vo, HttpSession session) {
|
||||
|
||||
long bnfInnb = (long) session.getAttribute("bnfInnb");
|
||||
vo.setBnfInnb(bnfInnb);
|
||||
|
||||
log.debug("updateStepcntAgreement StepcntVO chk ::: {}", vo);
|
||||
|
||||
log.debug("updateStepcntAgreement 요청 전송: {}", vo);
|
||||
ResponseEntity<WnbtResponse> response = responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bnft/insertStepcntAgreement", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
log.debug("updateStepcntAgreement 응답 결과: {}", response.getBody());
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.wb.domainserver.domain.sopmal.bnft.stepcnt.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Date;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class StepcntVO {
|
||||
|
||||
/** 혜택 설정 고유번호 */
|
||||
private Long bnfInnb;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 혜택 구분 코드 */
|
||||
private String bnfDvCd;
|
||||
/** 혜택 제목 */
|
||||
private String bnfSj;
|
||||
/** 화면 대표 이미지 */
|
||||
private String scrReprsntImg;
|
||||
/** 화면 대표 링크 URL */
|
||||
private String scrReprsntLinkUrl;
|
||||
/** 화면 보상 이미지 */
|
||||
private String scrRwdImg;
|
||||
/** 화면 보상 링크 URL */
|
||||
private String scrRwdLinkUrl;
|
||||
/** 혜택 안내 */
|
||||
private String bnfWordsCn;
|
||||
/** 진행기간 시작일시 */
|
||||
private String bnfBgnDt;
|
||||
/** 진행기간 종료일시 */
|
||||
private String bnfEndDt;
|
||||
/** 사용 여부 */
|
||||
private String useAt;
|
||||
/** 충전 필요 금액 */
|
||||
private String amtForChg;
|
||||
/** 보상 항목 구분 코드 */
|
||||
private String bnfRwdCateDvCd;
|
||||
/** 보상 상품 구분 코드 */
|
||||
private String bnfRwdGodsDvCd;
|
||||
/** 마일리지 금액 */
|
||||
private BigDecimal mlgRwdAmt;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Long couponInnb;
|
||||
/** 표시명 */
|
||||
private String itmNm;
|
||||
/** 당첨 수량 */
|
||||
private Integer przwinQy;
|
||||
/** 당첨 확률 */
|
||||
private BigDecimal przwinPrc;
|
||||
/** 할인 금액 */
|
||||
private BigDecimal dscntAmt;
|
||||
/** 할인 비율 */
|
||||
private BigDecimal dscntRt;
|
||||
/** 보상 조건 횟수 */
|
||||
private Integer rwdCndCnt;
|
||||
/** 혜택 참여 고유번호 */
|
||||
private Long bnfPrtInnb;
|
||||
/** 혜택 참여 일시 */
|
||||
private Date bnfPrtDt;
|
||||
/** 회원 고유번호 */
|
||||
private Long mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 참여 대상 내용 */
|
||||
private String prtTargetCn;
|
||||
/** 혜택 보상 수령 고유번호 */
|
||||
private Long bnfRcvInnb;
|
||||
/** 상품 고유번호 */
|
||||
private Long goodsInnb;
|
||||
/** 혜택 동의 고유번호 */
|
||||
private Long bnfAgreInnb;
|
||||
/** 혜택 동의 구분 코드 */
|
||||
private String bnfAgreDvCd;
|
||||
/** 동의 여부 */
|
||||
private String agreeYn;
|
||||
/** 걸음 수 */
|
||||
private Integer stepCount;
|
||||
/** 총 걸음 수 */
|
||||
private Integer totalSteps;
|
||||
/** 등록자 */
|
||||
private Integer regUsr;
|
||||
/** 등록일시 */
|
||||
private Date registDt;
|
||||
/** 수정자 */
|
||||
private Integer updUsr;
|
||||
/** 수정일시 */
|
||||
private Date updtDt;
|
||||
/** 걸음 수 데이터 */
|
||||
private Integer stepCnt;
|
||||
/** 년월 */
|
||||
private String yearMonth;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,897 @@
|
||||
package com.wb.domainserver.domain.sopmal.csc.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.csc.vo.CmVO;
|
||||
import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.*;
|
||||
import com.wb.domainserver.util.cookie.CookieUtil;
|
||||
import com.wb.domainserver.util.file.service.FileStorageService;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 고객센터 사용자 controller
|
||||
* @author 개발자 성명을 입력해주세요.
|
||||
* @since 2024-03-06
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-06 김혜인. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/csc")
|
||||
public class CscController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
/** 파일 업로드 */
|
||||
@Autowired
|
||||
private FileStorageService filestore;
|
||||
/************************************************************
|
||||
고객센터 목록 폼
|
||||
* **********************************************************/
|
||||
/**
|
||||
* 모바일 고객센터 메인
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCscMainForm")
|
||||
public String selectCscMainForm(HttpServletRequest request, ModelMap model, GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//공지사항과 자주묻는 질문 게시글 조회 , 고객센터 정보 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOCscMainForm", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/csc/CscMain";
|
||||
}
|
||||
/**
|
||||
* 모바일 인피니티 스크롤 리스트 조회
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectAjaxListInqire")
|
||||
public ResponseEntity<?> selectAjaxListInqire(GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 공지사항,FAQ (고객센터 사이드 O)
|
||||
*
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCscListForm")
|
||||
public String selectCscListForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/CscListRForm";
|
||||
}
|
||||
/**
|
||||
* 이벤트, 매거진, 일반게시판 (고객센터 사이드 X)
|
||||
*
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectSubPageListForm")
|
||||
public String selectSubPageListForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/SubPageListRForm";
|
||||
}
|
||||
/************************************************************
|
||||
게시글 목록
|
||||
* **********************************************************/
|
||||
/**공지사항 목록 조회
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectNoticeListInqire")
|
||||
public String selectNoticeListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/NoticeListR";
|
||||
}
|
||||
/**FAQ 목록 조회
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectFaqListInqire")
|
||||
public String selectFaqListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("pageIndex", bbsctt.getPageIndex());
|
||||
return Util.getDeviceType(request)+"/csc/FaqListR";
|
||||
}
|
||||
/**이벤트 목록 조회
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectEvtListInqire")
|
||||
public String selectEvtListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/EvtListR";
|
||||
}
|
||||
/**이벤트 결과
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectEvtResultListInqire")
|
||||
public String selectEvtResultListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/EvtResultListR";
|
||||
}
|
||||
/**매거진
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectMgznListInqire")
|
||||
public String selectMgznListInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/MgznListR";
|
||||
}
|
||||
/************************************************************
|
||||
일반 게시글 > 리스트형,갤러리형,아코디언형 목록
|
||||
* **********************************************************/
|
||||
/**리스트형 목록
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCscListTy")
|
||||
public String selectCscListTySrch(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/CscListTyR";
|
||||
}
|
||||
/**아코디언형 목록
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCscAcordionTy")
|
||||
public String selectCscAcordionTySrch(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/CscAcordionTyR";
|
||||
}
|
||||
|
||||
/**갤러리형 목록
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCscGalaryTy")
|
||||
public String selectCscGalaryTySrch(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/CscGalaryTyR";
|
||||
}
|
||||
/************************************************************
|
||||
게시글 목록 메소드
|
||||
* **********************************************************/
|
||||
/**
|
||||
* 게시글 비밀번호 조회
|
||||
* @param bbsctt 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectBbscttComparPassword" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> selectBbscttComparPassword(GnrlBbscttVO bbsctt){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttComparPassword", bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 게시글 추천,비추천
|
||||
* @param bbsctt 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateBbscttRecomendUpdt" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateBbscttRecomendUpdt( GnrlBbscttVO bbsctt){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttRecomendUpdt", bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/************************************************************
|
||||
게시글 상세
|
||||
* **********************************************************/
|
||||
/**게시글 상세 조회
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectBbscttDtlInqire")
|
||||
public String selectBbscttDtlInqire(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlSopmalInqirePopup", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/BbscttDtlR";
|
||||
}
|
||||
|
||||
|
||||
/**아코디언형 상세 조회
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity<?>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectBbscttCn")
|
||||
public ResponseEntity<?> selectBbscttCn(GnrlBbscttVO bbsctt) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttCn", bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/************************************************************
|
||||
이용안내
|
||||
***********************************************************/
|
||||
/**이용안내 조회 폼
|
||||
* @param model,bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectUseGuidanceForm")
|
||||
public String selectUseGuidanceForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/UseGuidanceR";
|
||||
}
|
||||
|
||||
/**이용안내 조회
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity<?>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectUseGuidanceInqire")
|
||||
public ResponseEntity<?> selectUseGuidanceInqire(GnrlBbscttVO bbsctt) {
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOUseGuidanceCn", bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/*******************************************************************************
|
||||
* 댓글 서비스 시작
|
||||
*********************************************************************************/
|
||||
/**
|
||||
* 댓글 조회
|
||||
* @param vo 파라미터 vo
|
||||
* @param model
|
||||
* @return GnrlBbscttDtlPopupR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectCmList")
|
||||
public String selectCmList(HttpServletRequest request, ModelMap model ,CmVO vo){
|
||||
vo.setReqPageDv("sopmal");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/CmListR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 댓글 조회 ajax
|
||||
* @param vo 파라미터 vo
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectCmListAjax")
|
||||
public ResponseEntity<WnbtResponse> selectCmListAjax(CmVO vo){
|
||||
vo.setReqPageDv("sopmal");
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmList", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 댓글 내용 조회(비밀댓글 일시)
|
||||
* @param cm 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectCmRegusrCnfirm")
|
||||
public ResponseEntity<WnbtResponse> selectCmRegusrCnfirm(CmVO cm){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOCmRegusrCnfirm", cm),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 댓글 등록
|
||||
* @param cm 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/insertBbscttCmRegist")
|
||||
public ResponseEntity<WnbtResponse> insertBbscttCmRegist(HttpServletRequest request , @Validated CmVO cm, BindingResult bindingResult){
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}else if(true) {
|
||||
//작성자구분이 99 이고 비밀번호 없을 시
|
||||
if("99".equals(cm.getRegusrDvCd())) {
|
||||
if(StringUtil.isEmpty(cm.getPassword())){
|
||||
errorList.add(ValidateResultConverter.setErrorMap("password", gconeMessageSource.getMessage("errors.required", new Object[]{"비밀번호"})));
|
||||
}
|
||||
}
|
||||
}
|
||||
if(errorList != null && errorList.size() > 0) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
cm.setReqPageDv("sopmal");
|
||||
|
||||
//ip주소 get
|
||||
Map<String, String> req = new HashMap<>();
|
||||
req = Util.getRequestInfo(request);
|
||||
String ip = (String) req.get("XForwardedFor");
|
||||
cm.setIp(ip);
|
||||
|
||||
String agentId = "";
|
||||
// 쿠키를 가져옴
|
||||
Cookie[] cookies = request.getCookies();
|
||||
|
||||
//gc_agent_id 쿠키 있을 경우 가져옴
|
||||
if (CookieUtil.hasAgentCookie(request.getCookies())) {
|
||||
agentId = CookieUtil.getAgentCookieValue(request.getCookies());
|
||||
cm.setAgentId(agentId);
|
||||
}
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/insertBOCmRegist", cm),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 댓글 수정
|
||||
* @param cm 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateBbscttCmUpdt" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateBbscttCmUpdt(@Validated CmVO cm, BindingResult bindingResult){
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
cm.setReqPageDv("sopmal");
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/updateBOCmUpdt", cm),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 댓글 논리 삭제
|
||||
* @param cm 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/deleteBbscttCmDel" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteBbscttCmDel(CmVO cm, BindingResult bindingResult){
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
cm.setReqPageDv("sopmal");
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/deleteBOCmDel", cm),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 댓글 비밀번호 조회
|
||||
* @param cm 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectComparPassword" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> selectComparPassword(CmVO cm){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/selectBOComparPassword", cm),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 댓글 추천,비추천
|
||||
* @param cm 파라미터 vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateCmRecomendUpdt" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateCmRecomendUpdt(CmVO cm){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cm/updateBOCmRecomendUpdt", cm),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* 게시글 등록 서비스 시작
|
||||
*********************************************************************************/
|
||||
/**
|
||||
* 게시글 작성 등록 폼 페이지 이동
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectBbscttRegistForm")
|
||||
public String selectBbscttRegistForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/BbscttRegistC";
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시글 작성 등록 폼 모달
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectBbscttRegistPopupForm")
|
||||
public String selectBbscttRegistPopupForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",bbsctt)
|
||||
);
|
||||
model.addAttribute("resultMap", resultMap);
|
||||
model.addAttribute("bbscttVO", resultMap);
|
||||
return Util.getDeviceType(request)+"/csc/BbscttRegistPopupC";
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시글 등록
|
||||
*
|
||||
* @param bbscttVO 파라미터 vo
|
||||
* @param bindingResult
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertBbscttRegist", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> insertBbscttRegist(HttpServletRequest request, @Validated GnrlBbscttVO bbscttVO, BindingResult bindingResult) {
|
||||
/*bbsTyCD가 리뷰혹은 한달리뷰인경우*/
|
||||
if ("06".equals(bbscttVO.getBbsTyCd()) || "07".equals(bbscttVO.getBbsTyCd())) {
|
||||
bbscttVO.setRvwBbscttDv("rvw");
|
||||
}
|
||||
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
//validation체크
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
} else if (true) {
|
||||
//작성자가 비회원일때 비밀번호 없을 시
|
||||
if ("99".equals(bbscttVO.getRegusrDvCd())) {
|
||||
if (StringUtil.isEmpty(bbscttVO.getPassword())) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("password", gconeMessageSource.getMessage("errors.required", new Object[]{"비밀번호"})));
|
||||
}
|
||||
}
|
||||
|
||||
//필수 입력 여부설정이 Y 이고 입력 여부가 N일 시 validation 체크(추가입력항목,입력항목)
|
||||
if (bbscttVO.getQesitmEssntlAtArr() != null) {
|
||||
for (int idx = 0; idx < bbscttVO.getQesitmEssntlAtArr().length; idx++) {
|
||||
if ("Y".equals(bbscttVO.getQesitmEssntlAtArr()[idx]) && "N".equals(bbscttVO.getQesitmAtArr()[idx])) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("answCnArr", gconeMessageSource.getMessage("errors.required", new Object[]{bbscttVO.getQesitmNmArr()[idx]})));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*한달리뷰 작성시 사진첨부 안할경우 validation 체크됨*/
|
||||
if ("goods_review_month".equals(bbscttVO.getBbsId())) {
|
||||
if ("N".equals(bbscttVO.getFilExtAt())) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("files", gconeMessageSource.getMessage("errors.required", new Object[]{"사진첨부"})));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(errorList)) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
/*에이전트 get*/
|
||||
String agentId = "";
|
||||
|
||||
// 쿠키를 가져옴
|
||||
Cookie[] cookies = request.getCookies();
|
||||
|
||||
//gc_agent_id 쿠키 있을 경우 가져옴
|
||||
if (CookieUtil.hasAgentCookie(request.getCookies())) {
|
||||
agentId = CookieUtil.getAgentCookieValue(request.getCookies());
|
||||
bbscttVO.setAgentId(agentId);
|
||||
}
|
||||
|
||||
//ip주소 get
|
||||
Map<String, String> req = new HashMap<>();
|
||||
req = Util.getRequestInfo(request);
|
||||
String ip = (String) req.get("XForwardedFor");
|
||||
bbscttVO.setIp(ip);
|
||||
|
||||
/*서버구분 set*/
|
||||
bbscttVO.setServerDv("sopmal");
|
||||
bbscttVO.setExpsrAt("Y");
|
||||
|
||||
|
||||
//파일 경로 설정
|
||||
String sopmalCd = bbscttVO.getSopmalCd();
|
||||
if(bbscttVO.getSopmalCd().isEmpty()){
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
sopmalCd = user.getSopmalCd();
|
||||
}
|
||||
if (StringUtil.isEmpty(sopmalCd)) {
|
||||
log.info("게시글 등록 쇼핑몰 코드 누락 됌!!!!!!! : {}", sopmalCd);
|
||||
}
|
||||
request.setAttribute("shopCd", sopmalCd);
|
||||
request.setAttribute("pathGubun", "BDIG");//게시판 일반첨부파일 구분
|
||||
request.setAttribute("subPathId", bbscttVO.getBbsId()); //게시판일 경우에만 셋팅
|
||||
request.setAttribute("validExp", bbscttVO.getAcceptFileExtensions()); //게시판 중 BDFL 일경우만 셋팅
|
||||
|
||||
//파일 업로드
|
||||
if ("Y".equals(bbscttVO.getFilAtch())) {
|
||||
List<HashMap<String, Object>> ulpladFileMap = new ArrayList<HashMap<String, Object>>();
|
||||
ulpladFileMap = filestore.fileUpload(request);
|
||||
bbscttVO.setFileInfo(ulpladFileMap);
|
||||
bbscttVO.setFilDvCd("01");
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/insertBOBbscttRegist", bbscttVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시글 수정 폼 페이지 이동
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectBbscttUpdtForm")
|
||||
public String selectBbscttUpdtForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/BbscttUpdtU";
|
||||
}
|
||||
/**
|
||||
* 게시글 수정 폼 팝업 이동
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectBbscttUpdtPopupForm")
|
||||
public String selectBbscttUpdtPopupForm(HttpServletRequest request, ModelMap model , GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/csc/BbscttUpdtPopupU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 게시글 수정
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateBbscttupdt" , method = RequestMethod.POST)
|
||||
public ResponseEntity<?> updateBbscttupdt(HttpServletRequest request, @Validated GnrlBbscttVO bbsctt, BindingResult bindingResult) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
//validation체크
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
} else if (true) {
|
||||
//작성자가 비회원일때 비밀번호 없을 시
|
||||
if("99".equals(bbsctt.getRegusrDvCd()) ) {
|
||||
if(StringUtil.isEmpty(bbsctt.getPassword())){
|
||||
errorList.add(ValidateResultConverter.setErrorMap("password", gconeMessageSource.getMessage("errors.required", new Object[]{"비밀번호"})));
|
||||
}
|
||||
}
|
||||
//필수 입력 여부설정이 Y 이고 입력 여부가 N일 시 validation 체크(추가입력항목,입력항목)
|
||||
if (bbsctt.getQesitmEssntlAtArr() != null) {
|
||||
for (int idx = 0; idx < bbsctt.getQesitmEssntlAtArr().length; idx++) {
|
||||
if ("Y".equals(bbsctt.getQesitmEssntlAtArr()[idx]) && "N".equals(bbsctt.getQesitmAtArr()[idx])) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("answCnArr", gconeMessageSource.getMessage("errors.required", new Object[]{bbsctt.getQesitmNmArr()[idx]})));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (errorList != null
|
||||
&& errorList.size() > 0) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
/*에이전트 get*/
|
||||
String agentId = "";
|
||||
|
||||
// 쿠키를 가져옴
|
||||
Cookie[] cookies = request.getCookies();
|
||||
|
||||
//gc_agent_id 쿠키 있을 경우 가져옴
|
||||
if (CookieUtil.hasAgentCookie(request.getCookies())) {
|
||||
agentId = CookieUtil.getAgentCookieValue(request.getCookies());
|
||||
bbsctt.setAgentId(agentId);
|
||||
}
|
||||
|
||||
|
||||
//ip주소 get
|
||||
Map<String, String> req = new HashMap<>();
|
||||
req = Util.getRequestInfo(request);
|
||||
String ip = (String) req.get("XForwardedFor");
|
||||
bbsctt.setIp(ip);
|
||||
|
||||
//사용자 서버구분
|
||||
bbsctt.setServerDv("sopmal");
|
||||
|
||||
//사용자 게시글은 항시 상시 노출
|
||||
bbsctt.setExpsrAt("Y");
|
||||
|
||||
//파일 경로 설정
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
request.setAttribute("shopCd", user.getSopmalCd());
|
||||
request.setAttribute("pathGubun", "BDIG");//게시판 일반첨부파일 구분
|
||||
request.setAttribute("subPathId", bbsctt.getBbsId()); //게시판일 경우에만 셋팅
|
||||
request.setAttribute("validExp", bbsctt.getAcceptFileExtensions()); //게시판 중 BDFL 일경우만 셋팅
|
||||
if ("Y".equals(bbsctt.getFilAtch())) {
|
||||
List<HashMap<String, Object>> ulpladFileMap = new ArrayList<HashMap<String, Object>>();
|
||||
ulpladFileMap = filestore.fileUpload(request);
|
||||
bbsctt.setFileInfo(ulpladFileMap);
|
||||
bbsctt.setFilDvCd("01");
|
||||
}
|
||||
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttUpdt",bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**ㄴ
|
||||
* 게시글 삭제
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/deleteBbscttDel" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteBbscttDel(GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시글 권한 체크 및 상세 조회
|
||||
* @param request
|
||||
* @param model
|
||||
* @param seq
|
||||
* @param bbsId
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = {"/selectBbscttAuth", "/selectBbscttAuth/{seq}/{bbsId}"})
|
||||
public String selectBbscttAuth(HttpServletRequest request,
|
||||
ModelMap model,
|
||||
GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
// seq와 bbsId가 있는 경우 설정
|
||||
if (bbsctt.getAuthDv() == null) {
|
||||
// 기본 설정
|
||||
bbsctt.setPageIndex(1);
|
||||
bbsctt.setUseAt("Y");
|
||||
bbsctt.setExpsrAt("Y");
|
||||
bbsctt.setReqUrl("subPage");
|
||||
bbsctt.setAuthDv("CM");
|
||||
|
||||
// 외부 API 호출 및 처리
|
||||
Map<String,Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/bbs/selectBOBbscttSetupInfo",bbsctt)
|
||||
);
|
||||
|
||||
if (resultMap != null && resultMap.containsKey("bbsTyCd")) {
|
||||
bbsctt.setBbsTyCd((String) resultMap.get("bbsTyCd"));
|
||||
}
|
||||
}
|
||||
|
||||
// 권한 체크 로직 호출
|
||||
String url = selectAuth(request, model, bbsctt);
|
||||
|
||||
return url;
|
||||
}
|
||||
|
||||
/*권한체크 공통*/
|
||||
public String selectAuth (HttpServletRequest request,ModelMap model,GnrlBbscttVO bbsctt) {
|
||||
//BO에서 API 호출
|
||||
Map<String,Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttAuth",bbsctt)
|
||||
);
|
||||
bbsctt.setAuthResult((String) resultMap.get("resultAuth"));
|
||||
bbsctt.setBbsNm((String) resultMap.get("bbsNm"));
|
||||
|
||||
String url = null;
|
||||
if ("Y".equals(bbsctt.getAuthResult())) {
|
||||
if ("REDNG".equals(bbsctt.getAuthDv())) {//목록 이동
|
||||
if ("csc".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectCscListForm(request, model, bbsctt); //고객센터
|
||||
} else if ("subPage".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectSubPageListForm(request, model, bbsctt); //서브페이지
|
||||
} else if ("useGuidance".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectUseGuidanceForm(request, model, bbsctt); //이용안내
|
||||
}
|
||||
} else if ("REGIST".equals(bbsctt.getAuthDv())) { //등록 이동
|
||||
if ("modal".equals(bbsctt.getReqUrl())) {
|
||||
url = this.selectBbscttRegistPopupForm(request, model, bbsctt);//등록팝업
|
||||
} else {
|
||||
url = this.selectBbscttRegistForm(request, model, bbsctt);//등록페이지
|
||||
}
|
||||
} else if ("CM".equals(bbsctt.getAuthDv())) { //상세 이동(댓글 권한이 있는)
|
||||
url = this.selectBbscttDtlInqire(request, model, bbsctt);
|
||||
}
|
||||
} else if ("N".equals(bbsctt.getAuthResult()) || "NN".equals(bbsctt.getAuthResult())) {
|
||||
if ("CM".equals(bbsctt.getAuthDv())) { //상세 이동(댓글 권한이 없는)
|
||||
url = this.selectBbscttDtlInqire(request, model, bbsctt);
|
||||
} else {
|
||||
model.addAttribute("bbscttVO", bbsctt);
|
||||
url = Util.getDeviceType(request) + "/csc/RejectAuthR";//기능 권한 거부 안내 페이지 이동
|
||||
}
|
||||
} else {//비회원 회원전환
|
||||
if (!"modal".equals(bbsctt.getReqUrl())) {
|
||||
String accessUri = request.getRequestURI()+"?"+request.getQueryString(); // 현재 요청된 URI
|
||||
model.addAttribute("accessUrl",accessUri);
|
||||
url = Util.getDeviceType(request) + "/mbr/UsrLoginR";
|
||||
} else {
|
||||
url = Util.getDeviceType(request) + "/goods/loginPopR";
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시글 상세 이동 여부 판단
|
||||
*
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectBbscttDtlMovePosblAt")
|
||||
public ResponseEntity<WnbtResponse> selectBbscttDtlMovePosblAt(GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttDtlMovePosblAt", bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.wb.domainserver.domain.sopmal.csc.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.csc.vo.PromVO;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
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.RestController;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/sopmal/prom")
|
||||
public class PromController {
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/promJoin", method = RequestMethod.POST)
|
||||
public ResponseEntity<?> promJoin(HttpServletRequest request, @RequestBody PromVO promVO) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/prom/promJoin", promVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
package com.wb.domainserver.domain.sopmal.csc.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CmVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
/** 댓글고유번호 */
|
||||
private String cmInnb;
|
||||
/** 게시글고유번호 */
|
||||
private String bbscttInnb;
|
||||
/** 게시판ID */
|
||||
private String bbsId;
|
||||
/** 부모댓글고유번호 */
|
||||
private String parntsCmInnb;
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 작성자ID */
|
||||
private String regusrId;
|
||||
/** 작성자명 */
|
||||
@NotBlank(message = "작성자명")
|
||||
@Length(min = 0, max = 25, message = "작성자명")
|
||||
private String regusrNm;
|
||||
/** DEPTH */
|
||||
private Integer depth;
|
||||
/** 내용 */
|
||||
@NotBlank(message = "내용")
|
||||
private String cn;
|
||||
/** 비밀번호 */
|
||||
private String password;
|
||||
/** 비밀댓글여부 */
|
||||
private String secretBbscttAt;
|
||||
/** IP */
|
||||
private String ip;
|
||||
/** AGENT_ID */
|
||||
private String agentId;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
/** 삭제작업자 */
|
||||
private Integer delusr;
|
||||
/**작성자 구분 코드*/
|
||||
private String regusrDvCd;
|
||||
/**쇼핑몰코드*/
|
||||
private String sopmalCd;
|
||||
/** 신규댓글 */
|
||||
private String newAt;
|
||||
/** 댓글삭제리스트 */
|
||||
private String[] delCmInnbArr;
|
||||
/*요청페이지구분 쇼핑몰인지 관리자인지*/
|
||||
private String reqPageDv;
|
||||
/*회원 구분 코드*/
|
||||
private String mbrDvCd;
|
||||
/*추천비추천구분*/
|
||||
private String recomendDv;
|
||||
/*비밀번호 확인 여부*/
|
||||
private String pwCnfirmAt;
|
||||
/*댓글 idx*/
|
||||
private String cmIdx;
|
||||
/*대댓글 idx*/
|
||||
private String answCmIdx;
|
||||
/*댓글 권한*/
|
||||
private String authResult;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.wb.domainserver.domain.sopmal.csc.vo;
|
||||
|
||||
public class CscVO {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,419 @@
|
||||
package com.wb.domainserver.domain.sopmal.csc.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.act.vo.BbsFormAnswVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.act.vo.BbsFormVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.act.vo.DelInfoVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GnrlBbscttVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/**
|
||||
* 리뷰정보 (fm_shop_goods)
|
||||
*/
|
||||
/** 게시글 고유정보 */
|
||||
private Integer bbscttInnb;
|
||||
private Integer seq;
|
||||
/** 게시판 고유번호 */
|
||||
private Integer bbsInnb;
|
||||
/** 판매상품 고유번호 */
|
||||
private Integer sleGoodsInnb;
|
||||
/** 주문상품고유번호 */
|
||||
private Integer ordrGoodsInnb;
|
||||
/** 주문상품옵션고유번호 */
|
||||
private Integer ordrGoodsOptnInnb;
|
||||
/*주문고유번호*/
|
||||
private String ordrInnb;
|
||||
/** 주문상품옵션구분코드 */
|
||||
private String ordrGoodsOptnDvCd;
|
||||
/** 베스트여부 */
|
||||
private String bstAt;
|
||||
/** 등록 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** (등록아이디) */
|
||||
private String mbrid;
|
||||
/** (등록자명) */
|
||||
private String mbrNm;
|
||||
/** 내용 */
|
||||
@NotBlank(message = "내용")
|
||||
private String cn;
|
||||
/** 조회건수 */
|
||||
private Integer inqireCnt;
|
||||
/** 댓글건수 */
|
||||
private Integer cmCnt;
|
||||
/** (다중",") */
|
||||
private Integer evlScore;
|
||||
/** 평균점수 */
|
||||
private Integer avrgScore;
|
||||
/** 에디터 사용여부 */
|
||||
private String editrUseAt;
|
||||
/** 포토리뷰여부 */
|
||||
private String photoRvwAt;
|
||||
/** IP */
|
||||
private String ip;
|
||||
/** AGENT_ID */
|
||||
private String agentId;
|
||||
/** 삭제여부 */
|
||||
private String delAt;
|
||||
/** 삭제일시 */
|
||||
private String delDt;
|
||||
/** 노출등록자이름 */
|
||||
private Integer expsrRegusrNm;
|
||||
|
||||
// 추가항목 정보(FM_BOARD_ADDITM)
|
||||
private List<BbsFormVO> bbsFormVoList;
|
||||
|
||||
// 추가 답변 내용 (FM_BOARD_ADDITM)
|
||||
private List<BbsFormAnswVO> bbsFormAnswList;
|
||||
|
||||
|
||||
//게시글 정보 (FM_BOARDMANAGER)
|
||||
/** 비밀글 사용여부 */
|
||||
private Boolean secretBbcttUseAt;
|
||||
|
||||
// 상품정보 (fm_shop_goods)
|
||||
/** 상품 이름 */
|
||||
private String goodsNm;
|
||||
/** 상품 설명 */
|
||||
private String goodsDc;
|
||||
/** 상품 간략설명 */
|
||||
private String srtDc;
|
||||
/** 상품 가격 */
|
||||
private Integer slePric;
|
||||
|
||||
// 상품이미지 정보(fm_goods_image)
|
||||
/** 상품 이미지 위치 */
|
||||
private String img;
|
||||
|
||||
// 리뷰 댓글정보(fm_boardcomment)
|
||||
/** 댓글 고유번호*/
|
||||
private Integer cmInnb;
|
||||
/** 댓글 등록자 구분 */
|
||||
private String commetRegusrDv;
|
||||
/** 댓글 작성자 */
|
||||
private String commetMbrNm;
|
||||
/** 댓글 작성자 아이디*/
|
||||
private String commetmbrId;
|
||||
/** 댓글 ip*/
|
||||
private String commetIp;
|
||||
/** 댓글 내용 */
|
||||
private String commetCn;
|
||||
/** 댓글 등록일 */
|
||||
private String commetRegustDt;
|
||||
|
||||
// 검색조건
|
||||
/** 검색어*/
|
||||
private String searchWord;
|
||||
/** 비밀글 제외 여부*/
|
||||
private String serchSecrtBbscttUseAt;
|
||||
/** 삭제글 제외 여부 */
|
||||
private String serchDelAt;
|
||||
/** 사진포함 여부*/
|
||||
private String serchPhotoRvwAt;
|
||||
/** 검색 시작일*/
|
||||
private String saerchStatrDate;
|
||||
/** 검색 종료일*/
|
||||
private String saerchEndDate;
|
||||
/** 세부항목 검색(내용 고유번호)*/
|
||||
private String[] searchFormItm;
|
||||
/** 베스트 후기 포함 여부*/
|
||||
private String searchBstAt;
|
||||
/** 네이버페이 포함 여부*/
|
||||
private String searchNpayAt;
|
||||
/** 주문번호 검색*/
|
||||
private String searchOrderInnb;
|
||||
/** 댓글 여부*/
|
||||
private String searchCommetAt;
|
||||
|
||||
/**
|
||||
* 첨부파일 정보
|
||||
*/
|
||||
|
||||
/* 파일 고유번호 */
|
||||
private String bbscttAtchmnfilInnb;
|
||||
/** 원본파일명 */
|
||||
private String orginlFilNm;
|
||||
/** 변환파일명 */
|
||||
private String sysFilNm;
|
||||
/** 파일타입 */
|
||||
private String filTy;
|
||||
/** 파일크기 */
|
||||
private String filMg;
|
||||
/** 파일경로 */
|
||||
private String filCours;
|
||||
/** 파일정보 */
|
||||
private List<HashMap<String, Object>> fileInfo;
|
||||
/*파일 존재여부*/
|
||||
private String filExtAt;
|
||||
/*현존 파일 정보*/
|
||||
private String extFiles;
|
||||
/*기존 파일 정보*/
|
||||
private String filesInfo;
|
||||
/*기존 파일 변화 여부*/
|
||||
private String extFilChangeAt;
|
||||
/*대표이미지 첨부 구분*/
|
||||
private String represntFilAt;
|
||||
/*파일 수정여부*/
|
||||
private String filChangeAt;
|
||||
/*파일 허용 확장자*/
|
||||
private String acceptFileExtensions;
|
||||
/*파일 구분 코드*/
|
||||
private String filDvCd;
|
||||
|
||||
/** 댓글 리스트 */
|
||||
private String[] cmList;
|
||||
private String boardAnswInnb;
|
||||
private String bbsNm;
|
||||
|
||||
/** 항목고유번호 리스트 */
|
||||
private String[] itmInnbAns;
|
||||
/** 답변내용 리스트 */
|
||||
private String[] answCnAns;
|
||||
private String[] qesitmInnbAns;
|
||||
/** 항목고유번호 (분류) */
|
||||
private String itmInnbDiv;
|
||||
/** 답변내용 (분류) */
|
||||
private String answCnDiv;
|
||||
private String qesitmInnbDiv;
|
||||
/*
|
||||
* 상세 조회
|
||||
*/
|
||||
/*상품고유번호*/
|
||||
private String goodsInnb;
|
||||
/*추천상품고유번호*/
|
||||
private String recomendGoodsInnb;
|
||||
/** 상세조회와 페이지 구분처리 */
|
||||
private String dtlPop;
|
||||
/*상품 고유번호 배열*/
|
||||
private String[] goodsInnbArr;
|
||||
/*주문고유번호*/
|
||||
private String[] ordrInnbArr;
|
||||
|
||||
/**
|
||||
* 게시글 정보
|
||||
*/
|
||||
|
||||
/** 부모게시글고유번호 */
|
||||
private String parntsBbscttInnb;
|
||||
/** 게시판ID */
|
||||
private String bbsId;
|
||||
/** DEPTH */
|
||||
private Integer depth;
|
||||
/*회원구분코드*/
|
||||
private String mbrDvCd;
|
||||
/** 등록자구분코드 */
|
||||
private String regusrDvCd;
|
||||
/** 등록자ID */
|
||||
private String regusrId;
|
||||
/** 등록자명 */
|
||||
private String regusrNm;
|
||||
/** 비밀번호 */
|
||||
private String password;
|
||||
/** 제목 */
|
||||
@NotBlank(message = "제목")
|
||||
@Length(min = 0, max = 100, message = "제목")
|
||||
private String sj;
|
||||
/** 댓글사용여부 */
|
||||
private String cmUseAt;
|
||||
/** 추천건수 */
|
||||
private Integer recomendCnt;
|
||||
/** 비추천건수 */
|
||||
private Integer nonrecomendCnt;
|
||||
/** 정렬순서 */
|
||||
private Integer sortOrdr;
|
||||
/** 정렬순서여부 */
|
||||
private String sortOrdrAt;
|
||||
/** 비밀글여부 */
|
||||
private String secretBbscttAt;
|
||||
/** 공지여부 */
|
||||
private String ntcAt;
|
||||
/** 노출여부 */
|
||||
private String expsrAt;
|
||||
/** 온라인여부 */
|
||||
private String onlineAt;
|
||||
/** 오프라인여부 */
|
||||
private String oflneAt;
|
||||
/** 게시기간설정여부 */
|
||||
private String ntcePdSetupAt;
|
||||
/** 게시시작일자 */
|
||||
private String ntceBgnDe;
|
||||
/** 게시종료일자 */
|
||||
private String ntceEndDe;
|
||||
/** 공지기간설정여부 */
|
||||
private String ntcPdSetupAt;
|
||||
/** 공지시작일자 */
|
||||
private String ntcBgnDe;
|
||||
/** 공지종료일자 */
|
||||
private String ntcEndDe;
|
||||
/** 메인노출여부 */
|
||||
private String mainExpsrAt;
|
||||
/** NPay 게시글 일련번호 */
|
||||
private String npayBbscttSnb;
|
||||
/** NPay 답변 전송여부*/
|
||||
private String npayAnswTrnsmisAt;
|
||||
/** NPay 답변번호*/
|
||||
private String npayAnswNb;
|
||||
/** NPay 상품주문번호*/
|
||||
private String npayGoodsOrdrnb;
|
||||
/** NPay 리뷰유형코드*/
|
||||
private String npayRvwTyCd;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
/*답변 번호*/
|
||||
private String answMbtlnb;
|
||||
/*답변 여부*/
|
||||
private String answSmsRecptn;
|
||||
/**
|
||||
* 검색조건
|
||||
*/
|
||||
/** 검색구분 */
|
||||
private String srchDv;
|
||||
/** 검색어 */
|
||||
private String srchKeyword;
|
||||
/*검색어 배열(상품상세 키워드 검색)*/
|
||||
private String[] srchKeywordArr;
|
||||
/** 검색 시작일 */
|
||||
private String srchStartDt;
|
||||
/** 검색 종료일 */
|
||||
private String srchEndDt;
|
||||
/** 게시판 이름 코드 */
|
||||
private String bbsTyCd;
|
||||
/** 답변 상태 */
|
||||
private String answSttus;
|
||||
/** 분류명 */
|
||||
private String srchitmInnb;
|
||||
/** 네이버페이 후기 여부*/
|
||||
private String npayAt;
|
||||
/** 주문번호 후기 여부*/
|
||||
private String srchOrdrInnb;
|
||||
/** 댓글 여부*/
|
||||
private String srchCmAt;
|
||||
/** 기간 */
|
||||
private String datePeriod;
|
||||
/** 항목내용 */
|
||||
private String itmCn;
|
||||
/* 사용자 > 상품 상세 > 리뷰 정렬*/
|
||||
private String sortDv;
|
||||
/**
|
||||
* 게시글추가문항답변
|
||||
*/
|
||||
|
||||
/** 문항답변고유번호 */
|
||||
private String qesitmAnswInnb;
|
||||
/** 문항고유번호 */
|
||||
private String qesitmInnb;
|
||||
/** 문항필수여부 */
|
||||
private String qesitmEssntlAt;
|
||||
/** 문항사용여부 */
|
||||
private String qesitmUseAt;
|
||||
/** 문항순서 */
|
||||
private String qesitmOrdr;
|
||||
/** 항목고유번호 */
|
||||
private String itmInnb;
|
||||
/** 답변내용 */
|
||||
private String answCn;
|
||||
/** 문항필수여부(배열) */
|
||||
private String[] qesitmEssntlAtArr;
|
||||
/** 문항고유번호(배열) */
|
||||
private String[] qesitmInnbArr;
|
||||
/** 문항 명(배열) */
|
||||
private String[] qesitmNmArr;
|
||||
/** 항목고유번호(배열) */
|
||||
private String[] itmInnbArr;
|
||||
/** 답변내용(배열) */
|
||||
private String[] answCnArr;
|
||||
/** 답변 여부(배열) */
|
||||
private String[] qesitmAtArr;
|
||||
/** 타입 코드 */
|
||||
private String[]itmTyCdArr;
|
||||
/** 리뷰 문항 필수 여부 배열*/
|
||||
private String[] rvwQesitmEssntlAtArr;
|
||||
/** 리뷰 문항 명 배열*/
|
||||
private String[] rvwQesitmNmArr;
|
||||
/** 리뷰 답변 여부 배열*/
|
||||
private String[] rvwQesitmAtArr;
|
||||
/** 리뷰 문항고유번호 배열*/
|
||||
private String[] rvwQesitmInnbArr;
|
||||
/** 리뷰 평점 배열*/
|
||||
private String[] evlScoreArr;
|
||||
/** 리뷰 항목고유번호 배열*/
|
||||
private String[] rvwItmInnbArr;
|
||||
/** 선택삭제 게시글리스트 */
|
||||
private String[] delBbscttInnbArr;
|
||||
|
||||
/**
|
||||
* 권한
|
||||
*/
|
||||
//권한 구분 (REDNG : 읽기권한, REGIST: 쓰기권한, CM: 댓글등록권한)
|
||||
private String authDv;
|
||||
|
||||
//권한 결과값
|
||||
private String authResult;
|
||||
|
||||
/*
|
||||
* 요청 값
|
||||
*/
|
||||
/*요청 페이지 구분(고객센터=>csc , 서브페이지=>subPage, 이용안내 => useGudiance, crm => crm, modal => modal)*/
|
||||
private String reqUrl;
|
||||
/*상품 qna 등록 시 페이지 구분*/
|
||||
private String reqDv;
|
||||
/* 서버 구분 sopmal or mngr*/
|
||||
private String serverDv;
|
||||
|
||||
/*상세 구분*/
|
||||
private String dtlAt;
|
||||
|
||||
/*사용자 등록,수정시 목록이동 or 등록,수정폼 유지*/
|
||||
private String listAt;
|
||||
|
||||
/*리뷰,게시글 구분*/
|
||||
private String rvwBbscttDv;
|
||||
|
||||
/*게시판 추천 구분*/
|
||||
private String recomendDv;
|
||||
|
||||
/*비밀번호 확인 여부*/
|
||||
private String pwCnfirmAt;
|
||||
/**
|
||||
* 게시판 설정
|
||||
*/
|
||||
/* 파일 첨부 여부*/
|
||||
private String filAtch;
|
||||
/*게시글발송방식코드*/
|
||||
private String bbscttSndngMthCd;
|
||||
/*갤러리형 col 개수*/
|
||||
private String pgeWthCnt;
|
||||
/*sms 관련*/
|
||||
private String bbscttSndngDvCd;
|
||||
/*스킨타입코드*/
|
||||
private String sknTyCd;
|
||||
/*스킨타입코드*/
|
||||
private String prevNext;
|
||||
|
||||
/*삭제 관련*/
|
||||
/*회수 마일리지 관련 정보*/
|
||||
private List<DelInfoVO> delInfoArr;
|
||||
|
||||
/*crud 행위 구분*/
|
||||
private String crudDv;
|
||||
|
||||
/*나의리뷰 dv 구분*/
|
||||
private String divDv;
|
||||
|
||||
/*서브페이지 고객센터 표시 여부*/
|
||||
private String cscAt;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.wb.domainserver.domain.sopmal.csc.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class PromVO {
|
||||
|
||||
// GC_PROM 테이블 관련 필드
|
||||
private Long promInnb; // 게시판 이벤트 고유번호
|
||||
private String sopmalCd; // 쇼핑몰코드
|
||||
private String promNm; // 이벤트 제목
|
||||
private String promDesc; // 이벤트 설명
|
||||
private String promType; // 이벤트 유형 (복권, 룰렛 등)
|
||||
private String promRule; // 참여 룰 (once, daily)
|
||||
private String bbsId; // 게시판 아이디
|
||||
private Long bbscttInnb; // 게시글 고유번호
|
||||
private LocalDateTime bgnDt; // 시작일
|
||||
private LocalDateTime endDt; // 종료일
|
||||
private String useAt; // 사용 여부 (Y/N)
|
||||
private LocalDateTime registDt; // 등록일시
|
||||
private LocalDateTime updtDt; // 수정일시
|
||||
|
||||
// GC_PROM_JOIN 테이블 관련 필드
|
||||
private Long promJoinInnb; // 게시판 이벤트 당첨 고유번호
|
||||
private Long mbrInnb; // 회원고유번호
|
||||
private LocalDate joinDt; // 참여날짜
|
||||
private Integer sortOrdr; // 룰렛 UI에서 표시할 순서 정렬용
|
||||
private String rewardTy; // 보상 유형 (coupon, mileage)
|
||||
private BigDecimal accmlmnyAmt; // 적립금액
|
||||
private Long couponInnb; // 쿠폰발송 고유번호
|
||||
private Long couponSndngInnb; // 쿠폰발송 고유번호
|
||||
private String rewardDc; // 보상 설명
|
||||
|
||||
// GC_PROM_REWARD 테이블 관련 필드
|
||||
private Long promRewardInnb; // 게시판 이벤트 보상 고유번호
|
||||
private BigDecimal probability; // 지급 확률 (%)
|
||||
|
||||
// 추가 유틸리티 필드
|
||||
private String mbrId; // 회원 ID (조회용)
|
||||
private String mbrNm; // 회원명 (조회용)
|
||||
private String joinYn; // 참여여부 (Y/N) - 조회용
|
||||
private String winYn; // 당첨여부 (Y/N) - 조회용
|
||||
|
||||
}
|
||||
@@ -0,0 +1,488 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.controller;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO;
|
||||
import com.wb.domainserver.domain.sopmal.goods.vo.GoodsVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.act.vo.RvwVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.KakaoProperties;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/goods")
|
||||
@Slf4j
|
||||
public class GoodsController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private KakaoProperties kakaoProperties;
|
||||
|
||||
/**
|
||||
* 상품 검색 폼
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsSrchForm")
|
||||
public String selectGoodsSrchForm(HttpServletRequest request,
|
||||
GoodsVO vo,
|
||||
ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsListForm", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/GoodsSrchRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 검색 리스트
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsSrchList")
|
||||
public String selectGoodsSrchList(HttpServletRequest request,
|
||||
GoodsVO vo,
|
||||
ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/GoodsSrchR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품명 검색어 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectSrchGoodsNm")
|
||||
public ResponseEntity<WnbtResponse> selectSrchGoodsNm(GoodsVO vo) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOSrchGoodsNm", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 목록 폼
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsListForm")
|
||||
public String selectGoodsListForm(HttpServletRequest request,
|
||||
GoodsVO vo,
|
||||
ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsListForm", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/GoodsListRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 목록 리스트
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsList")
|
||||
public String selectGoodsList(HttpServletRequest request,
|
||||
GoodsVO vo,
|
||||
ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/GoodsListR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 모바일 상품 목록 리스트(인피티니스크롤 상품 추가)
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsListInqire")
|
||||
public ResponseEntity<?> selectGoodsListIns(HttpServletRequest request,
|
||||
GoodsVO vo,
|
||||
ModelMap model) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOUserGoodsList", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상품 상세
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtl")
|
||||
public String selectGoodsDtl(HttpServletRequest request, GoodsVO vo, ModelMap model) {
|
||||
|
||||
//광고유입코드 저장
|
||||
if(!StringUtil.isEmpty((String) request.getAttribute("adTraceCd"))){
|
||||
vo.setAdTraceCd((String) request.getAttribute("adTraceCd"));
|
||||
}
|
||||
|
||||
//ep 코드 저장
|
||||
if(!StringUtil.isEmpty((String) request.getAttribute("epCd"))){
|
||||
vo.setEpCd((String) request.getAttribute("epCd"));
|
||||
}
|
||||
|
||||
//접속환경 저장
|
||||
if(!StringUtil.isEmpty((String) request.getAttribute("env"))){
|
||||
vo.setEnv((String) request.getAttribute("env"));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Map<String,Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsDtlInfo", vo)
|
||||
);
|
||||
|
||||
String kakaoKey = "";
|
||||
if(resultMap.containsKey("sopmalCd")){
|
||||
kakaoKey = kakaoProperties.getKeyForDomain(resultMap.get("sopmalCd").toString());
|
||||
}
|
||||
|
||||
// 네이버 페이 config Data gethering
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
Map<String, Object> param = new HashMap<String, Object>();
|
||||
param.put("sopmalCd", user.getSopmalCd());
|
||||
Map<String,Object> naverKey = responseHandler.handleResponseAsMap(
|
||||
//sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param)
|
||||
sendToResrc.ofGetWithParam(RESRC.GCONEBO, "/gcone/ordr/npay/config/loadNpayConfigDetail", param)
|
||||
);
|
||||
|
||||
Map<String,Object> naverMap = (Map<String, Object>) naverKey.get("npayConfigDetail");
|
||||
|
||||
|
||||
model.addAttribute("kakaoKey", kakaoKey);
|
||||
model.addAttribute("resultMap", resultMap);
|
||||
// 네이버 페이 사용 여부
|
||||
model.addAttribute("naverPayYn", naverKey.get("naverPayYn").toString());
|
||||
// 네이버 페이 공통인증키
|
||||
model.addAttribute("commonCertiKey", naverMap.get("commonCertiKey").toString());
|
||||
// 네이버 페이 BUTTON_KEY
|
||||
model.addAttribute("buttonKey", naverMap.get("buttonKey").toString());
|
||||
|
||||
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/GoodsDtlR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 쿠폰받기 팝업
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsCouponListPopup")
|
||||
public String selectCouponListPopup(HttpServletRequest request, @RequestBody GoodsVO vo, ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsCouponListPopup", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/couponListPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 옵션 조회
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsOptnInfo")
|
||||
public ResponseEntity<?> selectGoodsOptnInfo(HttpServletRequest request, @RequestBody GoodsVO vo, ModelMap model) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGoodsOptnInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상품 상세 > 함께하면 좋은 상품(관련상품) 팝업
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectRelateGoodsPopup")
|
||||
public String selectRelateGoodsPopup(HttpServletRequest request, @RequestBody GoodsVO vo,ModelMap model) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", vo),
|
||||
model,
|
||||
"relateResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/RelateGoodsPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 목록 > 장바구니 버튼 팝업
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectAddCartGoodsPopup")
|
||||
public String selectAddCartGoodsPopup(HttpServletRequest request, @RequestBody GoodsVO vo, ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", vo),
|
||||
model,
|
||||
"addCartResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/GoodsAddCartPopUpR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상품 상세 > 리뷰 혜택 정보 조회
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectRvwBnefInfo")
|
||||
public ResponseEntity<?> selectRvwBnefInfo(RvwVO vo) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상품 상세 > 리뷰 목록 조회 폼
|
||||
*
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlRvwListForm")
|
||||
public String selectGoodsDtlRvwListForm(HttpServletRequest request, RvwVO vo, ModelMap model) {
|
||||
if(!"sopmal".equals(Util.getDeviceType(request))){ //모바일일 시 같이 파일 같이 가져오기
|
||||
vo.setDiviceDv("mobile");
|
||||
}
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwForm", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/RvwListRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 리뷰 목록 조회
|
||||
*
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlRvwList")
|
||||
public String selectGoodsDtlRvwList(HttpServletRequest request, RvwVO vo, ModelMap model) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwList", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/RvwListR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 리뷰 목록 조회 ajax
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlRvwListAjax")
|
||||
public ResponseEntity<?> selectGoodsDtlRvwListAjax(GnrlBbscttVO vo) {
|
||||
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwList", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 상품 상세 > 스토어 pick
|
||||
*
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlStorePickDtl")
|
||||
public String selectGoodsDtlStorePickDtl(HttpServletRequest request, RvwVO vo, ModelMap model) {
|
||||
|
||||
vo.setPageIndex(1);
|
||||
vo.setPageUnit(100);
|
||||
vo.setBstAt("Y");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/StorePickDtlR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 리뷰 상세 포토리스트
|
||||
*
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlRvwPhoto")
|
||||
public String selectGoodsDtlRvwPhoto(HttpServletRequest request, RvwVO vo, ModelMap model) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/RvwPhotoListR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 리뷰 상세 포토리스트 이미지 추가 ajax
|
||||
*
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlRvwPhotoAjax")
|
||||
public ResponseEntity<?> selectGoodsDtlRvwPhotoAjax(RvwVO vo) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsRvwPhoto", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > QnA목록조회
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlQnaList")
|
||||
public String selectGoodsDtlQnaList(HttpServletRequest request, GnrlBbscttVO vo, ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsQnaList", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/goods/QnaListR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > QnA목록조회 ajax
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsDtlQnaListAjax")
|
||||
public ResponseEntity<?> selectGoodsDtlQnaListAjax(GnrlBbscttVO vo) {
|
||||
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOGoodsQnaList", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 상세 > 반품 정보 jsp 호출
|
||||
* @param vo
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGoodsReturnInfo")
|
||||
public String selectGoodsReturnInfo(HttpServletRequest request, GoodsVO vo, ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBOGetGoodsCmnuseInfo", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/goods/ReturnInfoR";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CategoryLinkVO extends AbstractVO {
|
||||
|
||||
/** 카테고리연결상품고유번호 */
|
||||
private long ctgryGoodsEsntlNb;
|
||||
/** 상품고유번호 */
|
||||
private long goodsInnb;
|
||||
/** 카테고리ID */
|
||||
private long ctgryId;
|
||||
/** 대표카테고리여부 */
|
||||
private String reprsntCtgryAt;
|
||||
/** 상품순서 */
|
||||
private double goodsOrdr;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GoodsAdditionVO extends AbstractVO {
|
||||
|
||||
/** 상품추가정보 고유번호 */
|
||||
private long goodsAditInfoInnb;
|
||||
/** 상품고유번호 */
|
||||
private long goodsInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 추가정보제목 */
|
||||
private String infoSj;
|
||||
/** 추가정보내용 */
|
||||
private String infoCn;
|
||||
/** 노출시작일시 */
|
||||
private Date expsrBgnDt;
|
||||
/** 노출종료일시 */
|
||||
private Date expsrEndDt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GoodsIconVO extends AbstractVO {
|
||||
|
||||
/** 상품아이콘 고유번호*/
|
||||
private long goodsIconInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 상품고유번호*/
|
||||
private long goodsInnb;
|
||||
/** 아이콘코드*/
|
||||
private String iconCd;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GoodsImageVO extends AbstractVO {
|
||||
|
||||
/** 상품이미지 고유번호 */
|
||||
private long goodsImgInnb;
|
||||
/** 상품고유번호 */
|
||||
private long goodsInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 이미지종류 */
|
||||
private String imgKnd;
|
||||
/** 컷번호 */
|
||||
private long cutNb;
|
||||
/** 이미지경로 */
|
||||
private String img;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GoodsOptionVO extends AbstractVO {
|
||||
|
||||
/** 상품옵션 고유번호 */
|
||||
private long goodsOptnInnb;
|
||||
/** 옵션 유형 */
|
||||
private String optnTy;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 상품고유번호 */
|
||||
private long goodsInnb;
|
||||
/** 옵션 코드 */
|
||||
private String optnCd;
|
||||
/** 옵션명 1 */
|
||||
private String optnNm1;
|
||||
/** 옵션명 2 */
|
||||
private String optnNm2;
|
||||
/** 옵션명 3 */
|
||||
private String optnNm3;
|
||||
/** 옵션명 4 */
|
||||
private String optnNm4;
|
||||
/** 옵션값 1 */
|
||||
private String optnVal1;
|
||||
/** 옵션값 2 */
|
||||
private String optnVal2;
|
||||
/** 옵션값 3 */
|
||||
private String optnVal3;
|
||||
/** 옵션값 4 */
|
||||
private String optnVal4;
|
||||
/** 옵션코드 1 */
|
||||
private String optnCd1;
|
||||
/** 옵션코드 2 */
|
||||
private String optnCd2;
|
||||
/** 옵션코드 3 */
|
||||
private String optnCd3;
|
||||
/** 옵션코드 4 */
|
||||
private String optnCd4;
|
||||
/** 옵션별가격 1 */
|
||||
private double acctoOptnPric1;
|
||||
/** 옵션별가격 2 */
|
||||
private double acctoOptnPric2;
|
||||
/** 옵션별가격 3 */
|
||||
private double acctoOptnPric3;
|
||||
/** 옵션별가격 4 */
|
||||
private double acctoOptnPric4;
|
||||
/** 옵션정보 */
|
||||
private String optnInfo;
|
||||
/** 재고수량 */
|
||||
private long invntryQy;
|
||||
/** 가용재고수량 */
|
||||
private long usefulInvntryQy;
|
||||
/** 공급가 */
|
||||
private double splpric;
|
||||
/** 소비자가 */
|
||||
private double cnsmrpric;
|
||||
/** 판매가 */
|
||||
private double slepric;
|
||||
/** 마일리지적립구분코드 */
|
||||
private double mlgAccmlRt;
|
||||
/** 마일리지 적립금액 */
|
||||
private double mlgAccmlmnyAmt;
|
||||
/** 마일리지 유효월수 */
|
||||
private long mlgValidMtCnt;
|
||||
/** 구매자별 추가혜택여부 */
|
||||
private String purchsrAcctoAditBnefAt;
|
||||
/** 옵션관계번호 */
|
||||
private long optnRelateNb;
|
||||
/** 옵션노출여부 */
|
||||
private String optnExpsrAt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GoodsRelateVO extends AbstractVO {
|
||||
|
||||
/** 관련상품 고유번호 */
|
||||
private long relateGoodsInnb;
|
||||
/** 상품 고유번호 */
|
||||
private long goodsInnb;
|
||||
/** 관련 판매상품 고유번호 */
|
||||
private long relateSleGoodsInnb;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,436 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class GoodsVO extends AbstractVO {
|
||||
|
||||
/*************************************
|
||||
* 상품 GOODS START
|
||||
* **********************************/
|
||||
/** 상품고유번호 */
|
||||
private String goodsInnb;
|
||||
/*as-is 상품고유번호*/
|
||||
private String no;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 배송그룹 고유번호 */
|
||||
private long dlvyGroupInnb;
|
||||
/** 공용정보 고유번호 */
|
||||
private long cmnuseInfoInnb;
|
||||
/** 버전번호 */
|
||||
private long verNb;
|
||||
/** 사업자 고유번호 */
|
||||
private long bsnmInnb;
|
||||
/** 상품종류 */
|
||||
private String goodsKndCd;
|
||||
/** 상품코드 */
|
||||
private String goodsCd;
|
||||
/** 대표상품코드 */
|
||||
private String reprsntGoodsCd;
|
||||
/** 상품명 */
|
||||
@NotBlank(message = "상품명")
|
||||
private String goodsNm;
|
||||
/** ? */
|
||||
private String textMarktGoodsNm;
|
||||
/** 부가세 */
|
||||
private String taxAt;
|
||||
/** 상품상태 */
|
||||
private String goodsSttusCd;
|
||||
/** 재고정책 */
|
||||
private String invntryPolicyCd;
|
||||
/** 가용재고제한수량 */
|
||||
private long avlinvLmttQy;
|
||||
/** 짧은설명 */
|
||||
private String srtDc;
|
||||
/** 키워드 */
|
||||
private String kwrd;
|
||||
/** 상품설명 */
|
||||
private String goodsDc;
|
||||
/** 모바일상품설명 */
|
||||
private String mblGoodsDc;
|
||||
/** 모바일상품설명 PC 동일여부 */
|
||||
private String mblGoodsDcPcSameAt;
|
||||
/** 가격대체문구사용여부 */
|
||||
private String pricRplcWordsUseAt;
|
||||
/** 가격대체문구 */
|
||||
private String pricRplcWords;
|
||||
/** 버튼대체문구사용여부 */
|
||||
private String buttonRplcWordsUseAt;
|
||||
/** 버튼대체문구 */
|
||||
private String buttonRplcWords;
|
||||
/** 버튼대체문구링크URL */
|
||||
private String buttonRplcWordsUrl;
|
||||
/** 버튼대체문구링크구분 */
|
||||
private String buttonRplcWordsDvCd;
|
||||
/** 구매수량 유형 */
|
||||
private String purchsQyTyCd;
|
||||
/** 최소구매수량 */
|
||||
private long mummPurchsQy;
|
||||
/** 최대구매수량 */
|
||||
private long mxmmPurchsQy;
|
||||
/** 결제수단설정 */
|
||||
private String setleMnSetupCd;
|
||||
/** 상품노출유형 */
|
||||
private String goodsExpsrTyCd;
|
||||
/** 노출구분 */
|
||||
private String expsrDvCd;
|
||||
/** 노출시작일시 */
|
||||
private Date expsrBgnDt;
|
||||
/** 노출종료 */
|
||||
private Date expsrEndDt;
|
||||
/** 노출설정앞문구 */
|
||||
private String expsrSetupFwords;
|
||||
/** 리뷰그룹번호 */
|
||||
private String rvwGroupNb;
|
||||
/** 리뷰작성가능여부 */
|
||||
private String rvwWritngPosblAt;
|
||||
/** 입점마케팅연동상태 */
|
||||
private String tentMarktIntrlckSttus;
|
||||
/** 예약상품배송일자 */
|
||||
private String resveGoodsDlvyDe;
|
||||
/** 예약상품안내문구내용 */
|
||||
private String resveGoodsGuidanceWordsCn;
|
||||
/** 예약상품재고수 */
|
||||
private long resveGoodsInvntryCnt;
|
||||
/** 배송안내문구내용 */
|
||||
private String dlvyGuidanceWordsCn;
|
||||
/** 청약철회가능여부 */
|
||||
private String subscrptWthdrawPosblAt;
|
||||
/** 개별취소가능여부 */
|
||||
private String indvdlzCanclPosblAt;
|
||||
/** 개별출고가능여부 */
|
||||
private String indvdlzDlivyPosblAt;
|
||||
/** 개별반품교환가능여부 */
|
||||
private String indvdlzReturnExchngPosblAt;
|
||||
/** EP 코드 */
|
||||
private String epCd;
|
||||
/** 광고유입코드 */
|
||||
private String adTraceCd;
|
||||
|
||||
/** 접속환경 */
|
||||
private String env;
|
||||
/*************************************
|
||||
* 상품 GOODS END
|
||||
* **********************************/
|
||||
|
||||
|
||||
/*************************************
|
||||
* 옵션 GOODS_OPTION START
|
||||
* **********************************/
|
||||
/** 상품옵션 고유번호 */
|
||||
private String goodsOptnInnb;
|
||||
/** 옵션 유형 */
|
||||
private String optnTy;
|
||||
// /** 쇼핑몰코드 */
|
||||
// private String sopmalCd;
|
||||
// /** 상품고유번호 */
|
||||
// private long goodsInnb;
|
||||
/** 옵션 코드 */
|
||||
private String optnCd;
|
||||
/** 옵션명 1 */
|
||||
private String optnNm1;
|
||||
/** 옵션명 2 */
|
||||
private String optnNm2;
|
||||
/** 옵션명 3 */
|
||||
private String optnNm3;
|
||||
/** 옵션명 4 */
|
||||
private String optnNm4;
|
||||
/** 옵션값 1 */
|
||||
private String optnVal1;
|
||||
/** 옵션값 2 */
|
||||
private String optnVal2;
|
||||
/** 옵션값 3 */
|
||||
private String optnVal3;
|
||||
/** 옵션값 4 */
|
||||
private String optnVal4;
|
||||
/** 옵션코드 1 */
|
||||
private String optnCd1;
|
||||
/** 옵션코드 2 */
|
||||
private String optnCd2;
|
||||
/** 옵션코드 3 */
|
||||
private String optnCd3;
|
||||
/** 옵션코드 4 */
|
||||
private String optnCd4;
|
||||
/** 옵션별가격 1 */
|
||||
private double acctoOptnPric1;
|
||||
/** 옵션별가격 2 */
|
||||
private double acctoOptnPric2;
|
||||
/** 옵션별가격 3 */
|
||||
private double acctoOptnPric3;
|
||||
/** 옵션별가격 4 */
|
||||
private double acctoOptnPric4;
|
||||
/** 옵션정보 */
|
||||
private String optnInfo;
|
||||
/** 재고수량 */
|
||||
private Integer invntryQy;
|
||||
/** 가용재고수량 */
|
||||
private String usefulInvntryQy;
|
||||
/** 공급가 */
|
||||
private Integer splpric;
|
||||
/** 소비자가 */
|
||||
private Integer cnsmrpric;
|
||||
/** 판매가 */
|
||||
private Integer slepric;
|
||||
/** 마일리지적립구분코드 */
|
||||
private double mlgAccmlRt;
|
||||
/** 마일리지적립구분코드 */
|
||||
private double mlgAccmlCd;
|
||||
/** 마일리지 적립금액 */
|
||||
private double mlgAccmlAmt;
|
||||
/** 구매자별 추가혜택여부 */
|
||||
private String purchsrAcctoAditBnefAt;
|
||||
/** 옵션관계번호 */
|
||||
private long optnRelateNb;
|
||||
/** 옵션노출여부 */
|
||||
private String optnExpsrAt;
|
||||
/** 기준구분여부 */
|
||||
private String stdrDvAt;
|
||||
/*************************************
|
||||
* 옵션 GOODS_OPTION END
|
||||
* **********************************/
|
||||
|
||||
|
||||
/*************************************
|
||||
* 관련상품 GOODS_RELATE START
|
||||
* **********************************/
|
||||
/** 관련상품 고유번호 */
|
||||
private long relateGoodsInnb;
|
||||
// /** 상품 고유번호 */
|
||||
// private long goodsInnb;
|
||||
/** 관련 판매상품 고유번호 */
|
||||
private long relateSleGoodsInnb;
|
||||
/*************************************
|
||||
* 관련상품 GOODS_RELATE END
|
||||
* **********************************/
|
||||
|
||||
|
||||
/*************************************
|
||||
* 배너 SHOP_GOODS_BANNER START
|
||||
* **********************************/
|
||||
// /** 상품고유번호*/
|
||||
// private long goodsInnb;
|
||||
/** 배너고유번호*/
|
||||
private long bannerInnb;
|
||||
/*************************************
|
||||
* 배너 SHOP_GOODS_BANNER END
|
||||
* **********************************/
|
||||
|
||||
/** 추가정보 */
|
||||
private List<GoodsAdditionVO> goodsAdditionVOList;
|
||||
|
||||
/*************************************
|
||||
* 할인(프로모션) SHOP_GOODS_DSCNT START
|
||||
* **********************************/
|
||||
/** 판매상품할인정책고유번호 */
|
||||
private long sleGoodsDscntInnb;
|
||||
// /** 상품고유번호 */
|
||||
// private long goodsInnb;
|
||||
// /** 쇼핑몰코드 */
|
||||
// private String sopmalCd;
|
||||
/** 할인시작구매수량 */
|
||||
private long dscntBgnPurchsQy;
|
||||
/** 할인종료구매수량 */
|
||||
private long dscntEndPurchsQy;
|
||||
/** 할인구분코드 */
|
||||
private String dscntDvCd;
|
||||
/** 할인금액 */
|
||||
private double dscntAmt;
|
||||
/*************************************
|
||||
* 할인(프로모션) SHOP_GOODS_DSCNT END
|
||||
* **********************************/
|
||||
|
||||
|
||||
/*************************************
|
||||
* 아이콘 GOODS_ICON START
|
||||
* **********************************/
|
||||
/** 상품아이콘 고유번호*/
|
||||
// private long goodsIconInnb;
|
||||
// /** 상품고유번호*/
|
||||
// private long goodsInnb;
|
||||
/** 아이콘코드*/
|
||||
// private String iconCd;
|
||||
|
||||
private List<GoodsIconVO> goodsIconVOList;
|
||||
|
||||
/*************************************
|
||||
* 아이콘 GOODS_ICON END
|
||||
* **********************************/
|
||||
|
||||
|
||||
/*************************************
|
||||
* 이미지 GOODS_IMAGE START
|
||||
* **********************************/
|
||||
/** 상품이미지 고유번호 */
|
||||
private long goodsImgInnb;
|
||||
// /** 상품고유번호 */
|
||||
// private long goodsInnb;
|
||||
// /** 쇼핑몰코드 */
|
||||
// private String sopmalCd;
|
||||
/** 이미지종류 */
|
||||
private String imgKnd;
|
||||
/** 컷번호 */
|
||||
private long cutNb;
|
||||
/** 이미지경로 */
|
||||
private String img;
|
||||
/*************************************
|
||||
* 이미지 GOODS_IMAGE END
|
||||
* **********************************/
|
||||
|
||||
|
||||
/*************************************
|
||||
* 카테고리연결 CATEGORY_LINK START
|
||||
* **********************************/
|
||||
/** 카테고리연결상품고유번호 */
|
||||
private long ctgryGoodsEsntlNb;
|
||||
// /** 상품고유번호 */
|
||||
// private long goodsInnb;
|
||||
/** 카테고리ID */
|
||||
private String ctgryId;
|
||||
/** 카테고리CD */
|
||||
private String code;
|
||||
/** 대표카테고리여부 */
|
||||
private String reprsntCtgryAt;
|
||||
/** 상품순서 */
|
||||
private double goodsOrdr;
|
||||
/*************************************
|
||||
* 카테고리연결 CATEGORY_LINK END
|
||||
* **********************************/
|
||||
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 상위 카테고리 */
|
||||
private String upperCtgryId;
|
||||
|
||||
/** 노출 코드 */
|
||||
private String expsrCd;
|
||||
|
||||
/** 가격 구분 */
|
||||
private String pricDv;
|
||||
|
||||
/** 시작 가격 */
|
||||
private String startPric;
|
||||
|
||||
/** 종료 가격 */
|
||||
private String endPric;
|
||||
|
||||
/** 판매 상태 */
|
||||
private String[] goodsDftinfoSttus;
|
||||
|
||||
/** 일자 구분 */
|
||||
private String dateDv;
|
||||
|
||||
/** 시작 일자 */
|
||||
private String startDate;
|
||||
|
||||
/** 종료 일자 */
|
||||
private String endDate;
|
||||
|
||||
/** 재고에따른 판매 */
|
||||
private String goodsDftinfoInvntryPolicy;
|
||||
|
||||
/** 상품옵션 고유번호 배열*/
|
||||
private String[] goodsOptnInnbs;
|
||||
|
||||
/** 상품옵션 구분 */
|
||||
private String goodsOptnDv;
|
||||
|
||||
/** 개수 */
|
||||
private int qy;
|
||||
|
||||
/** 입력옵션 텍스트 */
|
||||
private String inputOptn;
|
||||
|
||||
/** 입력옵션 텍스트 */
|
||||
private String inputOptnText;
|
||||
|
||||
/** 이벤트 고유번호 배열*/
|
||||
private String[] evtInnbs;
|
||||
|
||||
/** 이벤트 구분 */
|
||||
private String evtDv;
|
||||
|
||||
/** 쿠폰 고유번호 */
|
||||
private String couponInnb;
|
||||
|
||||
/** 다운로드쿠폰 고유번호 */
|
||||
private String dwldCouponInnb;
|
||||
|
||||
/** 쿠폰 혜택구분 */
|
||||
private String bnefDv;
|
||||
|
||||
/** 중복할인여부 */
|
||||
private String dplctDscntAt;
|
||||
|
||||
/** 타쿠폰동시사용여부 */
|
||||
private String otrCouponSmtmUseAt;
|
||||
|
||||
/** 적용쿠폰 */
|
||||
private String usedCoupons;
|
||||
|
||||
|
||||
/** 검색_정렬구분 */
|
||||
private String sortDv;
|
||||
|
||||
/** 검색 타입 */
|
||||
private String srchType;
|
||||
/** 검색어 */
|
||||
private String srchStr;
|
||||
|
||||
private List<HashMap<String, Object>> delInnbArr;
|
||||
|
||||
private List<HashMap<String, Object>> fileInfo;
|
||||
|
||||
/*************************************
|
||||
* 상품수정로그 FM_GOODS_ADMIN_LOG START
|
||||
* **********************************/
|
||||
/** 상품수정로그 고유번호 */
|
||||
private long goodsUpdtLogInnb;
|
||||
|
||||
/** 항목명 */
|
||||
private String itmNm;
|
||||
|
||||
/** 변경전값 */
|
||||
private String chngBfeVal;
|
||||
|
||||
/** 변경후값 */
|
||||
private String chngAfeVal;
|
||||
|
||||
/** 수정자 이름 */
|
||||
private String regusrNm;
|
||||
|
||||
/** 회차 */
|
||||
private double round;
|
||||
|
||||
/** 아이피 */
|
||||
private String ip;
|
||||
/*************************************
|
||||
* 상품수정로그 FM_GOODS_ADMIN_LOG END
|
||||
* **********************************/
|
||||
|
||||
private String priceRange;
|
||||
|
||||
/** 회원ID */
|
||||
private String mbrId;
|
||||
|
||||
/** 세션아이디 */
|
||||
private String sesionId;
|
||||
|
||||
/** 옵션관계번호 배열 */
|
||||
private String[] optnRelateNbs;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class ShopGoodsBannerVO extends AbstractVO {
|
||||
|
||||
/** 상품고유번호*/
|
||||
private long goodsInnb;
|
||||
/** 배너고유번호*/
|
||||
private long bannerInnb;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.wb.domainserver.domain.sopmal.goods.vo;
|
||||
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class ShopGoodsDscntVO extends AbstractVO {
|
||||
|
||||
/** 판매상품할인정책고유번호 */
|
||||
private long sleGoodsDscntInnb;
|
||||
/** 상품고유번호 */
|
||||
private long goodsInnb;
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/** 할인시작구매수량 */
|
||||
private long dscntBgnPurchsQy;
|
||||
/** 할인종료구매수량 */
|
||||
private long dscntEndPurchsQy;
|
||||
/** 할인구분코드 */
|
||||
private String dscntDvCd;
|
||||
/** 할인금액 */
|
||||
private double dscntAmt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,172 @@
|
||||
package com.wb.domainserver.domain.sopmal.login.controller;
|
||||
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
|
||||
import com.wb.domainserver.domain.admin.store.sopmal.vo.Shop;
|
||||
import com.wb.domainserver.domain.gcone.login.service.LoginService;
|
||||
import com.wb.domainserver.domain.gcone.login.vo.LoginRequest;
|
||||
import com.wb.domainserver.domain.gcone.login.vo.LoginUser;
|
||||
import com.wb.domainserver.realm.RealmContextHolder;
|
||||
import com.wb.domainserver.realm.util.UrlExtractor;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.CookieUtils;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.util.UriUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/sopmal")
|
||||
public class LoginController {
|
||||
|
||||
private final LoginService service;
|
||||
private final BOMaSopmalService bomaSopmalService;
|
||||
|
||||
/**
|
||||
* 사용자 로그인 페이지 진입시 이전 경로 저장 및 로그인 페이지 이동 처리
|
||||
* @return
|
||||
*/
|
||||
@Policy(value = AuthPolicy.PUBLIC)
|
||||
@GetMapping("/login")
|
||||
@ResponseBody
|
||||
public void login(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
|
||||
String realm = RealmContextHolder.getRealm();
|
||||
|
||||
String redirectUri = request.getParameter("redirect_uri");
|
||||
String sopmalCd = RealmContextHolder.getSopmalCdRealm();
|
||||
|
||||
response.sendRedirect("/sopmal/login/page/"+realm+"?redirect_uri=%s&sopmalCd=%s".formatted(UriUtils.encode(redirectUri, StandardCharsets.UTF_8), UriUtils.encode(sopmalCd, StandardCharsets.UTF_8)));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 로그인 처리
|
||||
* @return
|
||||
*/
|
||||
@Policy(value = AuthPolicy.PUBLIC)
|
||||
@PostMapping(value = "/login/{realm}")
|
||||
@ResponseBody
|
||||
public ResponseEntity<WnbtResponse> loginProcess(@PathVariable String realm,
|
||||
@RequestBody LoginRequest loginRequest,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response
|
||||
) {
|
||||
|
||||
//회원정보 조회
|
||||
LoginUser loginUser = null;
|
||||
log.debug("realm :: {}", realm);
|
||||
loginUser = service.mbrLogin(loginRequest);
|
||||
|
||||
//로그인 처리
|
||||
service.createLoginToken(loginUser, request, response);
|
||||
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
message.put("result", "success");
|
||||
message.put("redirectUri", loginRequest.getRedirectUri());
|
||||
|
||||
return ResponseEntity.ok(WnbtResponse.builder()
|
||||
.resBody(new WnbtResponseBody(message))
|
||||
.build());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 로그인 페이지 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(value = AuthPolicy.PUBLIC)
|
||||
@GetMapping(value = "/login/page/{realm}")
|
||||
public String loginPage(HttpServletRequest request, @PathVariable String realm, ModelMap model) {
|
||||
|
||||
String redirectUri = request.getParameter("redirect_uri");
|
||||
String accessUrl = StringUtils.hasText(request.getParameter("access_url"))? request.getParameter("access_url") : RealmContextHolder.getOriginalHostRealm();
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
String sopmalCd = request.getParameter("sopmalCd");
|
||||
if(sopmalCd == null){
|
||||
sopmalCd = user.getSopmalCd();
|
||||
}
|
||||
|
||||
//쇼핑몰 테마 등 정보 조회
|
||||
Shop shopInfo = bomaSopmalService.selectSopmalInfo(sopmalCd);
|
||||
|
||||
model.addAttribute("redirectUri", redirectUri);
|
||||
model.addAttribute("accessUrl", accessUrl);
|
||||
model.addAttribute("sopmalCd", sopmalCd);
|
||||
model.addAttribute("realm", realm);
|
||||
model.addAttribute("shopInfo", shopInfo);
|
||||
|
||||
String loginPage = "login";
|
||||
String loginPath = "login/";
|
||||
|
||||
|
||||
//사용자 일경우 디바이스 타입에 따라 조절
|
||||
String deviceType = "MO".equals(request.getAttribute("env"))?"-mobile":"";
|
||||
|
||||
loginPage += deviceType;
|
||||
|
||||
|
||||
return loginPath + loginPage;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 엑세스토큰 만료시 refreshToken 검증 요청
|
||||
* 요청은 jwtAuthenticationFilter에서 redirect 처리하여 도달함
|
||||
* 요청 후 원래 가려는 페이지로 redirect 처리
|
||||
* */
|
||||
@Policy(value = AuthPolicy.PUBLIC)
|
||||
@GetMapping("/tokens/refresh")
|
||||
public void refreshToken(HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||
|
||||
String refreshToken = "";
|
||||
|
||||
refreshToken = CookieUtils.getCookieValue("RFT", request);
|
||||
|
||||
|
||||
|
||||
//리프레쉬 토큰이 없으면 로그인 화면으로 이동 처리
|
||||
if(!StringUtils.hasText(refreshToken)){
|
||||
|
||||
//엑세스토큰 삭제
|
||||
CookieUtils.deleteCookie("ACT", "/", request, response);
|
||||
|
||||
//토큰만료 검증쿠키 삭제
|
||||
CookieUtils.deleteCookie("token_expire", "/", request, response);
|
||||
|
||||
response.sendRedirect("/sopmal/login/page/" + RealmContextHolder.getRealm() + "?redirect_uri=" + URLEncoder.encode(request.getParameter("redirect_uri"), StandardCharsets.UTF_8));
|
||||
|
||||
}else{
|
||||
//리프레쉬 토큰 있을 경우(존재한다는 자체가 refresh토큰이 만료된 상태가 아님)
|
||||
service.createRenewLoginToken(request, response);
|
||||
}
|
||||
|
||||
//리다이렉트 url 있을 경우 해당 url로 이동
|
||||
if(StringUtils.hasText(request.getParameter("redirect_uri")) && !"/login".contains(request.getParameter("redirect_uri"))){
|
||||
response.sendRedirect(request.getParameter("redirect_uri"));
|
||||
|
||||
}else{
|
||||
response.sendRedirect(UrlExtractor.getOriginalHost(request));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.wb.domainserver.domain.sopmal.lotteryscratch.controller;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.lotteryscratch.vo.LotteryScratchVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/lottery")
|
||||
public class LotteryScratchController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/**
|
||||
* 복권긁기 확률별 첫 화면세팅
|
||||
*
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectScratchPage")
|
||||
public ResponseEntity<WnbtResponse> selectScratchPage(LotteryScratchVO lotteryScratchVO) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/lottery/selectScratchPage", lotteryScratchVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 복권긁기 참여 여부 체크
|
||||
*
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping("selectEventJoinUser")
|
||||
public ResponseEntity<WnbtResponse> selectEventJoinUser(LotteryScratchVO lotteryScratchVO) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/lottery/selectBOEventJoinUser", lotteryScratchVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.wb.domainserver.domain.sopmal.lotteryscratch.vo;
|
||||
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class LotteryScratchVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 참여 여부 체크 (월/일) */
|
||||
private String joinCheckDvCd;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,677 @@
|
||||
package com.wb.domainserver.domain.sopmal.main.controller;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.common.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import com.wb.domainserver.domain.gcone.setup.site.service.BOSiteService;
|
||||
import com.wb.domainserver.domain.gcone.setup.site.vo.BOPrevewVO;
|
||||
import com.wb.domainserver.domain.gcone.setup.site.vo.BOSiteVO;
|
||||
import com.wb.domainserver.domain.sample.vo.PrevewVO;
|
||||
import com.wb.domainserver.domain.sopmal.main.vo.BrandVO;
|
||||
import com.wb.domainserver.domain.sopmal.main.vo.MaSopmalVO;
|
||||
import com.wb.domainserver.domain.sopmal.main.vo.MainVO;
|
||||
import com.wb.domainserver.domain.sopmal.main.vo.StrVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authentication.AnonymousUser;
|
||||
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.*;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpSession;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
public class MainController {
|
||||
|
||||
@Autowired
|
||||
private BOSiteService service;
|
||||
|
||||
@Autowired
|
||||
WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
|
||||
String issuerUri;
|
||||
|
||||
@Autowired
|
||||
private KakaoProperties kakaoProperties;
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value= {"/","/index", "/sopmal/index"})
|
||||
public String index(HttpServletRequest request, ModelMap model, BOPrevewVO prevewVO){
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo(2);
|
||||
paginationInfo.setRecordCountPerPage(10);
|
||||
paginationInfo.setPageSize(10);
|
||||
paginationInfo.setTotalRecordCount(0);
|
||||
|
||||
MultiValueMap<String, Object> paramMap = MultiValueMapConverter.convert(new ObjectMapper(), paginationInfo);
|
||||
model.addAttribute("paginationInfo", paginationInfo);
|
||||
|
||||
// 세션 객체 가져오기
|
||||
HttpSession session = request.getSession();
|
||||
String sessionId = session.getId(); // 세션 아이디 가져오기
|
||||
prevewVO.setSessionId(sessionId);
|
||||
|
||||
// 쿠키를 가져옴
|
||||
Cookie[] cookies = request.getCookies();
|
||||
String cookieValue = "";
|
||||
|
||||
if (cookies != null) {
|
||||
for (Cookie cookie : cookies) {
|
||||
if ("goodsInnb".equals(cookie.getName() )) {
|
||||
cookieValue = cookie.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String[] tempCookieValue = cookieValue.split(":");
|
||||
List<String> filterList = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < tempCookieValue.length; i++) {
|
||||
if(!"".equals(tempCookieValue[i]) ) {
|
||||
filterList.add(tempCookieValue[i]);
|
||||
}
|
||||
}
|
||||
|
||||
String[] cookieValArr = filterList.toArray(new String[filterList.size()]);
|
||||
prevewVO.setCookieValArr(cookieValArr);
|
||||
|
||||
//기본 PC로 설정
|
||||
String env = "P";
|
||||
|
||||
//모바일 일 경우 모바일 설정
|
||||
if(!ObjectUtils.isEmpty(request.getAttribute("env"))){
|
||||
if("MO".equalsIgnoreCase(String.valueOf(request.getAttribute("env")))){
|
||||
env = "M";
|
||||
}
|
||||
}
|
||||
|
||||
prevewVO.setEnv(env);
|
||||
|
||||
BOSiteVO siteVO = new BOSiteVO();
|
||||
|
||||
// 작성자 정보 할당
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
|
||||
if("01".equals(user.getSysDvCd())){
|
||||
siteVO.setSopmalCd(user.getSopmalCd()); // 쇼핑몰코드
|
||||
}
|
||||
siteVO.setMainSetupInnb(prevewVO.getMainSetupInnb());
|
||||
siteVO.setMainSiteInnb(prevewVO.getMainSiteInnb());
|
||||
siteVO.setMbrDvCd(user.getMbrDvCd());
|
||||
|
||||
siteVO.setMbrInnb( user.getUserInnb() );
|
||||
|
||||
siteVO.setSessionId(prevewVO.getSessionId());
|
||||
siteVO.setCookieValArr(prevewVO.getCookieValArr());
|
||||
siteVO.setEnv(prevewVO.getEnv());
|
||||
Map<String, Object> message = new HashMap<>();
|
||||
message = service.selectBOMainSiteDesignListInqire(siteVO);
|
||||
message.put("loginFlag", user.getMbrId());
|
||||
model.addAttribute("resultMap", message);
|
||||
|
||||
String diviceTy = Util.getDeviceType(request);
|
||||
model.addAttribute("prevewVO", prevewVO);
|
||||
if("sopmal".equals(diviceTy)){
|
||||
return "index";
|
||||
}else{
|
||||
return "mobileMain";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 메인 화면 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectMain")
|
||||
public String selectMain(){
|
||||
|
||||
return "sopmal/main/main";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 비회원 휴대폰번호 확인
|
||||
* @return OrdrDtlR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectNMbrMbtlnbInqire")
|
||||
public ResponseEntity<WnbtResponse> selectNMbrMbtlnbInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception {
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONMbrMbtlnbInqire", ordrDlvyVO),
|
||||
// model,
|
||||
// "data"
|
||||
// );
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO));
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBONMbrMbtlnbInqire", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 비회원 주문 조회
|
||||
* @return OrdrDtlR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectNMbrOrdrDtlInqire")
|
||||
public String selectNMbrOrdrDtlInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception {
|
||||
log.debug("비회원 주문 조회 파라미터 =>{}", ordrDlvyVO);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrDtlInqire", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
String referer = request.getHeader("referer");
|
||||
//api에서 넘어 올 시
|
||||
String giftApiAt = "N";
|
||||
if(referer != null){
|
||||
if(referer.indexOf("svc.gcone.co.kr") > 0){
|
||||
giftApiAt = "Y";
|
||||
}
|
||||
}
|
||||
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO));
|
||||
model.addAttribute("giftApiAt",giftApiAt);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/NmbrOrdrDtlR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 비회원 반품 취소 환불 상세 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectNMbrRtngudCanclRefndDtlInqire")
|
||||
public String selectNMbrRtngudCanclRefndDtlInqire(MyRefundVO refundVO, ModelMap model, HttpServletRequest request){
|
||||
refundVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBONMbrRtngudRefndDtlInqire", refundVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", refundVO);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/NmbrRtngudCanclRefndDtlR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문/배송 목록 조회
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/sopmal/main/selectNMbrOrdrListInqireAjax")
|
||||
public String selectNMbrOrdrListInqireAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
return "sopmal/mpage/ordr/OrdrDlvyListRList";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 매장안내 폼 이동
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectStrListForm")
|
||||
public String selectStrListForm(StrVO strVO, ModelMap model, HttpServletRequest request) {
|
||||
strVO.setServerDv("sopmal");
|
||||
model.addAttribute("paramVO", strVO);
|
||||
|
||||
// return "sopmal/main/StrListFormR";
|
||||
return Util.getDeviceType(request) + "/main/StrListFormR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 매장 안내 조회
|
||||
* @param gradVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectStrGuidance")
|
||||
public String selectStrGuidance(StrVO strVO, ModelMap model, HttpServletRequest request) {
|
||||
strVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrGuidance", strVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", strVO);
|
||||
|
||||
// return "sopmal/main/StrGuidanceR";
|
||||
return Util.getDeviceType(request) + "/main/StrGuidanceR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 매장 검색 목록 폼 이동
|
||||
* @param gradVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectStrListSrchForm")
|
||||
public String selectStrListSrchForm(StrVO strVO, ModelMap model, HttpServletRequest request) {
|
||||
strVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListForm", strVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", strVO);
|
||||
|
||||
// return "sopmal/main/StrSrchListFormR";
|
||||
return Util.getDeviceType(request) + "/main/StrSrchListFormR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 매장 검색 목록 조회
|
||||
* @param gradVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectStrListInqire")
|
||||
public String selectStrListInqire(StrVO strVO, ModelMap model, HttpServletRequest request) {
|
||||
strVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListInqire", strVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", strVO);
|
||||
|
||||
// return "sopmal/main/StrSrchListR";
|
||||
return Util.getDeviceType(request) + "/main/StrSrchListR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 매장 검색 목록 조회 > 스크롤
|
||||
* @param strVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectStrListScrolInqire")
|
||||
public ResponseEntity<?> selectStrListScrolInqire(StrVO strVO) {
|
||||
strVO.setServerDv("sopmal");
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrListInqire", strVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 매장 검색 목록 폼 공통코드 반환
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/sopmal/main/selecSidoGunguCmmnCdArray")
|
||||
public ResponseEntity<WnbtResponse> selecSidoGunguCmmnCdArray(StrVO strVO) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selecBOSidoGunguCmmnCdArray", strVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 매장 상세 조회
|
||||
* @param gradVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectStrDtlInqire")
|
||||
public String selectStrDtlInqire(StrVO strVO, ModelMap model, HttpServletRequest request) {
|
||||
strVO.setServerDv("sopmal");
|
||||
|
||||
// responseHandler.handleResponse(
|
||||
// sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrDtlInqire", strVO),
|
||||
// model,
|
||||
// "resultMap"
|
||||
// );
|
||||
model.addAttribute("strVO", strVO);
|
||||
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/itrnt/str/selectBOStrDtlInqire", strVO)
|
||||
);
|
||||
|
||||
String kakaoKey = "";
|
||||
if(resultMap.containsKey("paramVO")){
|
||||
Map<String, Object> paramVO = (Map<String, Object>) resultMap.get("paramVO");
|
||||
|
||||
if(!ObjectUtils.isEmpty(paramVO.get("sopmalCd"))){
|
||||
kakaoKey = kakaoProperties.getKeyForDomain(paramVO.get("sopmalCd").toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
model.addAttribute("kakaoKey", kakaoKey);
|
||||
|
||||
model.addAttribute("resultMap", resultMap);
|
||||
// return "sopmal/main/StrDtlInqireR";
|
||||
return Util.getDeviceType(request) + "/main/StrDtlInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 약관조회
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectIndvdlInfoProcsCn")
|
||||
public ResponseEntity<WnbtResponse> selectIndvdlInfoProcsCn(MaSopmalVO maSopmalVO) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOClauseInformationSopmal", maSopmalVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 약관 내용 조회
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectClause")
|
||||
public String selectClause(MaSopmalVO vo, ModelMap model, HttpServletRequest request) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/admin/store/sopmal/selectBOClauseInformationSopmal", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
model.addAttribute("maSopmalVO",vo);
|
||||
|
||||
return Util.getDeviceType(request) + "/main/ClauseDtlR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 브랜드 스토리
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectBrandStroyForm")
|
||||
public String selectBrandStroyForm(ModelMap model, HttpServletRequest request, BrandVO vo) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd", user.getSopmalCd());
|
||||
model.addAttribute("dv", vo.getDv());
|
||||
return Util.getDeviceType(request) + "/main/BrandStoryR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 브랜드 스토리 html
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectiframeBrandStroyForm")
|
||||
public String selectiframeBrandStroyForm(ModelMap model, HttpServletRequest request, BrandVO vo) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd",user.getSopmalCd());
|
||||
model.addAttribute("dv",vo.getDv());
|
||||
String deviceType = Util.getDeviceType(request);
|
||||
String fileDv = "";
|
||||
if("sopmal".equals(deviceType)){
|
||||
fileDv = "pc";
|
||||
}else{
|
||||
fileDv = "mobile";
|
||||
}
|
||||
String sopmalCd = user.getSopmalCd();
|
||||
String url = "html/" + fileDv + "/" + sopmalCd + "/brandStory";
|
||||
if("CH".equals(sopmalCd) && "mobile".equals(fileDv)){
|
||||
String dv = vo.getDv();
|
||||
log.debug("확인 {}", sopmalCd+" / "+ fileDv+" / "+dv);
|
||||
if (dv == null) {
|
||||
dv = "company";
|
||||
}
|
||||
if ("company".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/BrandStory";
|
||||
} else if ("ceo".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/Ceo";
|
||||
} else if ("technology".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/Technology";
|
||||
} else if ("history".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/History";
|
||||
} else if ("map".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/Map";
|
||||
} else if ("way".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/Way";
|
||||
} else if ("script".equals(dv)) {
|
||||
url = "html/" + fileDv + "/" + sopmalCd + "/Script";
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 브랜드 가치
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectBrandValueForm")
|
||||
public String selectBrandValueForm(ModelMap model, HttpServletRequest request) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd",user.getSopmalCd());
|
||||
return Util.getDeviceType(request) + "/main/BrandValueR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 브랜드 가치 html
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectiframeBrandValueForm")
|
||||
public String selectiframeBrandValueForm(ModelMap model, HttpServletRequest request) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd", user.getSopmalCd());
|
||||
String deviceType = Util.getDeviceType(request);
|
||||
String fileDv = "";
|
||||
if ("sopmal".equals(deviceType)) {
|
||||
fileDv = "pc";
|
||||
} else {
|
||||
fileDv = "mobile";
|
||||
}
|
||||
String SopmalCd = user.getSopmalCd();
|
||||
String url = "html/" + fileDv + "/"+SopmalCd+"/brandValue";
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 자담유 > 네가지약속 (모바일)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectNBPromise")
|
||||
public String selectNBPromise(ModelMap model, HttpServletRequest request) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd", user.getSopmalCd());
|
||||
return Util.getDeviceType(request) + "/main/NbPromise";
|
||||
}
|
||||
|
||||
/**
|
||||
* 자담유 > 성분 불만제로 (모바일)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectNbIngrdient")
|
||||
public String selectNbIngrdient(ModelMap model, HttpServletRequest request) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd", user.getSopmalCd());
|
||||
return Util.getDeviceType(request) + "/main/NbIngrdient";
|
||||
}
|
||||
|
||||
/**
|
||||
* 자담유 > 네가지약속html
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectNbPromiseHtml")
|
||||
public String selectNbPromiseHtml(ModelMap model, HttpServletRequest request) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd", user.getSopmalCd());
|
||||
String deviceType = Util.getDeviceType(request);
|
||||
String fileDv = "";
|
||||
if ("sopmal".equals(deviceType)) {
|
||||
fileDv = "pc";
|
||||
} else {
|
||||
fileDv = "mobile";
|
||||
}
|
||||
String SopmalCd = user.getSopmalCd();
|
||||
String url = "html/" + fileDv + "/" + SopmalCd + "/promise";
|
||||
return url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 자담유 > 성분 불만제로html
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/sopmal/main/selectNbIngredientHtml")
|
||||
public String selectNbIngredientHtml(ModelMap model, HttpServletRequest request) {
|
||||
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
|
||||
model.addAttribute("sopmalCd", user.getSopmalCd());
|
||||
String deviceType = Util.getDeviceType(request);
|
||||
String fileDv = "";
|
||||
if ("sopmal".equals(deviceType)) {
|
||||
fileDv = "pc";
|
||||
} else {
|
||||
fileDv = "mobile";
|
||||
}
|
||||
String SopmalCd = user.getSopmalCd();
|
||||
String url = "html/" + fileDv + "/" + SopmalCd + "/ingredient";
|
||||
return url;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쇼핑몰 로그아웃
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/logout")
|
||||
public String adminLogout(HttpServletRequest request, HttpSession session) {
|
||||
session.invalidate();
|
||||
request.getSession().invalidate();
|
||||
request.getSession(true);
|
||||
String returnUrl = issuerUri+"/login-AF";
|
||||
return "redirect:"+returnUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 햄버거메뉴 > 회원정보get
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectMbrInfo")
|
||||
public ResponseEntity<?> selectMbrInfo(HttpServletRequest request, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
// 쿠키를 가져옴
|
||||
Cookie[] cookies = request.getCookies();
|
||||
String cookieValue = "";
|
||||
|
||||
if (cookies != null) {
|
||||
for (Cookie cookie : cookies) {
|
||||
if ("goodsInnb".equals(cookie.getName() )) {
|
||||
cookieValue = cookie.getValue();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String[] tempCookieValue = cookieValue.split(":");
|
||||
List<String> filterList = new ArrayList<>();
|
||||
|
||||
for(int i = 0; i < tempCookieValue.length; i++) {
|
||||
if(!"".equals(tempCookieValue[i]) ) {
|
||||
filterList.add(tempCookieValue[i]);
|
||||
}
|
||||
}
|
||||
|
||||
String[] cookieValArr = filterList.toArray(new String[filterList.size()]);
|
||||
ordrDlvyVO.setCookieValArr(cookieValArr);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 메인 화면 쇼핑몰 카테고리별 타입
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/sopmal/main/selectMainSiteDesignCtgryListInqire")
|
||||
public ResponseEntity<?> selectMainSiteDesignCtgryListInqire(HttpServletRequest request, MainVO vo) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/ajax/gcone/setup/site/selectBOMainSiteDesignCtgryListInqire", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.wb.domainserver.domain.sopmal.main.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BrandVO extends AbstractVO {
|
||||
|
||||
private String dv;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.wb.domainserver.domain.sopmal.main.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 쇼핑몰 VO
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-08-06 김혜인 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MaSopmalVO {
|
||||
/*약관 구분 코드*/
|
||||
private String stplatDvCd;
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.wb.domainserver.domain.sopmal.main.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MainVO extends AbstractVO {
|
||||
|
||||
private String ordr;
|
||||
|
||||
private String expsrOrdr;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.wb.domainserver.domain.sopmal.main.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 인트라넷 매장
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class StrVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 매장 고유번호 */
|
||||
private Integer strInnb;
|
||||
|
||||
|
||||
|
||||
/** 검색_매장검색어 - 매장명*/
|
||||
private String srchKeyword;
|
||||
|
||||
/** 검색_시, 도 */
|
||||
private String srchCtyDo;
|
||||
|
||||
/** 검색_군, 구 */
|
||||
private String srchCtyGunGu;
|
||||
|
||||
private String serverDv;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,241 @@
|
||||
package com.wb.domainserver.domain.sopmal.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MbrVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** fm_member */
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/**대표 사이트 코드*/
|
||||
private String mainSopmalCd;
|
||||
|
||||
/** 회원등급 */
|
||||
private String mbrGradInnb;
|
||||
|
||||
/**가입경로코드*/
|
||||
private String joinCoursCd;
|
||||
|
||||
/** 유입경로도메인 */
|
||||
private String inflowCoursDomn;
|
||||
|
||||
/** 가입환경코드 */
|
||||
private String sbscrbEnvrnCd;
|
||||
|
||||
/** 회원유형코드 */
|
||||
private String mbrTyCd;
|
||||
|
||||
/** 회원ID */
|
||||
@NotBlank(message = "아이디")
|
||||
private String mbrId;
|
||||
|
||||
/** 회원비밀번호 */
|
||||
@NotBlank(message = "비밀번호")
|
||||
private String mbrPassword;
|
||||
|
||||
/** 회원비밀번호 확인 */
|
||||
private String mbrPasswordChk;
|
||||
|
||||
/** 비밀번호변경일자 */
|
||||
private String passwordChngDe;
|
||||
|
||||
/** 회원명 */
|
||||
@NotBlank(message = "이름")
|
||||
private String mbrNm;
|
||||
|
||||
/** 이메일 */
|
||||
@NotBlank(message = "이메일")
|
||||
private String email;
|
||||
|
||||
/** 이메일수신여부 */
|
||||
private String emailRecptnAt;
|
||||
|
||||
/** 휴대폰 번호 */
|
||||
@NotBlank(message = "휴대전화")
|
||||
private String mbtlnb;
|
||||
|
||||
/** SMS수신여부 */
|
||||
private String smsRecptnAt;
|
||||
|
||||
/** 전화번호 */
|
||||
private String telnb;
|
||||
|
||||
/** 우편번호 */
|
||||
@NotBlank(message = "우편번호")
|
||||
private String zip;
|
||||
|
||||
/** 도로명; 지번 */
|
||||
private String adresDv;
|
||||
|
||||
/** 지번주소 */
|
||||
private String lnbAdres;
|
||||
|
||||
/** 도로명주소 */
|
||||
// @NotBlank(message = "도로명주소")
|
||||
private String rnmAdres;
|
||||
|
||||
/** 상세주소 */
|
||||
@NotBlank(message = "상세주소")
|
||||
private String dtlAdres;
|
||||
|
||||
/** 성별 */
|
||||
@NotBlank(message = "성별")
|
||||
private String sex;
|
||||
|
||||
/** 생년월일 */
|
||||
@NotBlank(message = "생년월일")
|
||||
private String brthDe;
|
||||
|
||||
/** 상태 */
|
||||
private String sttus;
|
||||
|
||||
/** 상태 */
|
||||
private String unitySvcCnsOffrInfo;
|
||||
|
||||
/** 통합서비스정보제공동의 */
|
||||
private String indvdlInfoValidPd;
|
||||
|
||||
/** 광고수신동의변경일시 */
|
||||
private String advrtsRecptnAgreUpdtDt;
|
||||
|
||||
/** 광고수신동의전송일시 */
|
||||
private String advrtsRecptnAgreTrnsmisDt;
|
||||
|
||||
/** GCONE 가입여부 */
|
||||
private String gconeSbscrbAt;
|
||||
|
||||
/** 관리자메모 */
|
||||
private String mngrMemo;
|
||||
|
||||
/** 관리자로그 */
|
||||
private String mngrLog;
|
||||
|
||||
/** 주문번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
// 외부연동 회원 ( kakao; naver; pos )
|
||||
/** 외부연동순번 */
|
||||
private Integer extrlIntrlckSnb;
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 외부연동구분코드 */
|
||||
private String extrlIntrlckDvCd;
|
||||
|
||||
/** 외부연동ID */
|
||||
private String extrlIntrlckId;
|
||||
|
||||
/** 가입구분코드 */
|
||||
private String sbscrbDvCd;
|
||||
|
||||
|
||||
/** 약정코드 */
|
||||
private String stplatDvCds;
|
||||
|
||||
/** 약정코드 동의여부 */
|
||||
private String stplatDvCdAts;
|
||||
|
||||
/** 외부연동 회원(기존 가입 통합) */
|
||||
private String extMember;
|
||||
|
||||
|
||||
|
||||
/** fm_member_join */
|
||||
/** 약정코드 */
|
||||
private String marktRecptnAgreAt;
|
||||
|
||||
/** 약정코드 */
|
||||
private String marktRecptnAgreUpdtDt;
|
||||
|
||||
/** fm_member_login */
|
||||
/** 약정코드 */
|
||||
private String conectLogInnb;
|
||||
|
||||
/** 약정코드 */
|
||||
private String conectEnvrn;
|
||||
|
||||
/** 약정코드 */
|
||||
private String conectIp;
|
||||
|
||||
/** 약정코드 */
|
||||
private String loginTy;
|
||||
|
||||
|
||||
/** fm_clause_agre */
|
||||
/** 약정코드 */
|
||||
private String stplatAgreInnb;
|
||||
|
||||
/** 약정코드 */
|
||||
private String sopmalStplatInnb;
|
||||
|
||||
|
||||
/** fm_marketing_agree_log */
|
||||
/** 약정코드 */
|
||||
private String advrtsRecptnAgreChngInnb;
|
||||
private String marktAgreeInnb;
|
||||
|
||||
/** fm_delivery_address */
|
||||
/** 약정코드 */
|
||||
private String adbkInnb;
|
||||
|
||||
/** 약정코드 */
|
||||
private String dlvylcDcCn;
|
||||
|
||||
/** 약정코드 */
|
||||
private String recpntNm;
|
||||
|
||||
/** 약정코드 */
|
||||
private String dftDlvylcAt;
|
||||
|
||||
/** 약정코드 */
|
||||
private String recentDlvylcAt;
|
||||
|
||||
|
||||
/** fm_extrl_member */
|
||||
/** 약정코드 */
|
||||
private String emailAdres;
|
||||
|
||||
/** 약정코드 */
|
||||
private String sexdstnCd;
|
||||
|
||||
/** POS 매장 고유번호 */
|
||||
private String strInnb;
|
||||
|
||||
/** gc_crtnb */
|
||||
/** 인증번호 발송 고유번호 */
|
||||
private String sndngInnb;
|
||||
|
||||
/** 인증번호 */
|
||||
private String crtnb;
|
||||
|
||||
/** 회원가입환경코드 */
|
||||
private String joinEnvrnCd;
|
||||
|
||||
/** 회원가입방법코드 */
|
||||
private String joinMthCd;
|
||||
|
||||
/** 개인식별코드(URL용) */
|
||||
private String code;
|
||||
|
||||
/** POS코드 */
|
||||
private String storeCode;
|
||||
|
||||
/** 회원가입방법코드 */
|
||||
private String currentUrl;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,299 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.act.vo.RvwVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.*;
|
||||
import com.wb.domainserver.util.file.service.FileStorageService;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
/**
|
||||
* MyActController Class (back)
|
||||
*
|
||||
* @author 홍길동
|
||||
* @since 2024-02-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-05 김혜인 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/mpage/act")
|
||||
@Slf4j
|
||||
public class MyActController {
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
/** 파일 업로드 */
|
||||
@Autowired
|
||||
private FileStorageService filestore;
|
||||
|
||||
/**
|
||||
* 상품 Q&A 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsQnaInqire")
|
||||
public String selectGoodsQnaInqire(HttpServletRequest request, ModelMap model, GnrlBbscttVO bbsctt){
|
||||
bbsctt.setBbsTyCd("05");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQaR";
|
||||
}
|
||||
/**
|
||||
* 상품 Q&A ajax 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsQnaInqireAjax")
|
||||
public ResponseEntity<?> selectGoodsQnaInqireAjax(GnrlBbscttVO bbsctt){
|
||||
bbsctt.setBbsTyCd("05");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
//게시글 노출 항목 설정값과 게시판 목록 조회
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire",bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 Q&A 파일정보 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectFileInfo")
|
||||
public ResponseEntity<?> selectFileInfo(HttpServletRequest request, ModelMap model, GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOFileInfo",bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 Q&A 수정 폼 이동
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsQnaDtlUpdtForm")
|
||||
public String selectGoodsQnaDtlUpdtForm(HttpServletRequest request, ModelMap model,GnrlBbscttVO bbsctt){
|
||||
bbsctt.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttUpdtPopupForm",bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("bbsctt", bbsctt);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyGoodsQnaDtlUpdtU";
|
||||
}
|
||||
|
||||
/**
|
||||
* 나의 리뷰 조회 폼
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectMyRvwInqireForm")
|
||||
public String selectMyRvwInqireForm(HttpServletRequest request, ModelMap model,GnrlBbscttVO bbsctt){
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBORvwBnefInfo",bbsctt),
|
||||
model,
|
||||
"mlgAccmlNtc"
|
||||
);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire",bbsctt),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
model.addAttribute("vo",bbsctt);
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyRvwRForm";
|
||||
}
|
||||
/**
|
||||
* 나의 리뷰 조회 작성 가능한 리뷰
|
||||
* @param rvwVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectWritngPosblRvwInqire")
|
||||
public String selectWritngPosblRvwInqire(HttpServletRequest request, ModelMap model,RvwVO rvwVO){
|
||||
rvwVO.setRvwBbscttDv("rvw");
|
||||
rvwVO.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/mpage/act/WritngPosblRvwR";
|
||||
}
|
||||
/**
|
||||
* 나의 리뷰 조회 작성 가능한 리뷰 ajax(인피니트스크롤)
|
||||
* @param rvwVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectWritngPosblRvwInqireAjax")
|
||||
public ResponseEntity<?> selectWritngPosblRvwInqireAjax(RvwVO rvwVO){
|
||||
rvwVO.setRvwBbscttDv("rvw");
|
||||
rvwVO.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOWritPosblRvw",rvwVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 나의 리뷰 조회 (나의 리뷰)
|
||||
* @param rvwVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectMyRvwInqire")
|
||||
public String selectMyRvwInqire(HttpServletRequest request, ModelMap model,RvwVO rvwVO){
|
||||
rvwVO.setReqUrl("mpage");
|
||||
rvwVO.setServerDv("sopmal");
|
||||
rvwVO.setUseAt("Y");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/mpage/act/MyRvwR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 나의 리뷰 조회 (나의 리뷰) ajax (인피니트스크롤)
|
||||
* @param rvwVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectMyRvwInqireAjax")
|
||||
public ResponseEntity<?> selectMyRvwInqireAjax(RvwVO rvwVO){
|
||||
rvwVO.setReqUrl("mpage");
|
||||
rvwVO.setServerDv("sopmal");
|
||||
rvwVO.setUseAt("Y");
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire",rvwVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 리뷰 작성 등록 폼
|
||||
* @param rvwVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectRvwWritngPopupForm")
|
||||
public String selectRvwWritngPopupForm(HttpServletRequest request, ModelMap model, RvwVO rvwVO){
|
||||
rvwVO.setRvwBbscttDv("rvw");
|
||||
rvwVO.setServerDv("sopmal");
|
||||
//리뷰 등록 가능 여부 true시 등록폼 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm",rvwVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/act/RvwWritngPopupC";
|
||||
}
|
||||
|
||||
/**
|
||||
* 게시글 삭제
|
||||
*
|
||||
* @param bbsctt
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/deleteRvwBbscttDel", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteRvwBbscttDel(@RequestBody GnrlBbscttVO bbsctt) {
|
||||
bbsctt.setServerDv("sopmal");
|
||||
|
||||
//BO에서 API 호출
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/updateBOBbscttDel",bbsctt),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 리뷰 간편 등록
|
||||
*
|
||||
* @param vo
|
||||
* @return ResponseEntity
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectRvwEasyRegistForm", method = RequestMethod.POST)
|
||||
public String selectRvwEasyRegistForm(@RequestBody RvwVO vo, ModelMap model, HttpServletRequest request) {
|
||||
vo.setRvwBbscttDv("rvw");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttRegistPopupForm", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request)+"/mpage/act/RvwEasyRegistC";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BbsFormAnswVO extends AbstractVO{/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1030532645994110994L;
|
||||
// 답변 출력
|
||||
/** 게시글 고유번호 */
|
||||
private Integer bbscttInnb;
|
||||
/** 문항 고유번호 */
|
||||
private Integer qesitmInnb;
|
||||
/** 답변내용 */
|
||||
private String answCn;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BbsFormItmVO extends AbstractVO{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 8087305150158091337L;
|
||||
/** 문항 번호*/
|
||||
private String qesitmInnb;
|
||||
/** 항목고유 id*/
|
||||
private String itmInnb;
|
||||
/** 항목내용*/
|
||||
private String itmCn;
|
||||
/** 항목순서*/
|
||||
private Integer itmOrdr;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.vo;
|
||||
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class BbsFormVO extends AbstractVO{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1607485104712731512L;
|
||||
/** 게시판 문항 고유번호*/
|
||||
private String qesitmInnb;
|
||||
/** 게시판 id*/
|
||||
private String bbsInnb;
|
||||
/** 추가항목구분 */
|
||||
private String aditItmDv;
|
||||
/** 문항명 */
|
||||
private String qesitmNm;
|
||||
/** 문항설명 */
|
||||
private String qesitmDc;
|
||||
/** 문항유형 */
|
||||
private String itmTy;
|
||||
/** 문항순서 */
|
||||
private Integer qesitmOrdr;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
|
||||
/** 게시판 문항의 요소들*/
|
||||
private List<BbsFormItmVO> bbsFormItmList;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CmVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
/** 댓글고유번호 */
|
||||
private String cmInnb;
|
||||
/** 게시글고유번호 */
|
||||
private String bbscttInnb;
|
||||
/** 게시판ID */
|
||||
private String bbsId;
|
||||
/** 부모댓글고유번호 */
|
||||
private String parntsCmInnb;
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원ID */
|
||||
private String mbrid;
|
||||
/** 회원명 */
|
||||
private String mbrNm;
|
||||
/** DEPTH */
|
||||
private Integer depth;
|
||||
/** 내용 */
|
||||
@NotBlank(message = "내용")
|
||||
@Length(min = 0, max = 100, message = "내용")
|
||||
private String cn;
|
||||
/** 비밀번호 */
|
||||
private String password;
|
||||
/** 비밀댓글여부 */
|
||||
private String secretBbscttAt;
|
||||
/** IP */
|
||||
private String ip;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
/** 삭제작업자 */
|
||||
private Integer delusr;
|
||||
/** 삭제일시 */
|
||||
private Date delDt;
|
||||
/**작성자 구분 코드*/
|
||||
private String regusrDvCd;
|
||||
/**쇼핑몰코드*/
|
||||
private String sopmalCd;
|
||||
/** 신규댓글 */
|
||||
private String newCm;
|
||||
/** 댓글삭제리스트 */
|
||||
private String[] delCmInnbArr;
|
||||
/*요청페이지구분 쇼핑몰인지 관리자인지*/
|
||||
private String reqPageDv;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class DelInfoVO{
|
||||
/** 삭제 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 삭제 회원 고유번호 */
|
||||
private String regusrDvCd;
|
||||
|
||||
/** 삭제 회원 고유번호 */
|
||||
private String regusr;
|
||||
|
||||
/** 상품 고유번호 */
|
||||
private String goodsInnb;
|
||||
|
||||
/** 게시글 고유번호*/
|
||||
private String bbscttInnb;
|
||||
}
|
||||
@@ -0,0 +1,394 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.act.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class RvwVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/**
|
||||
* 리뷰정보 (fm_shop_goods)
|
||||
*/
|
||||
/** 게시글 고유정보 */
|
||||
private Integer bbscttInnb;
|
||||
/** 게시판 고유번호 */
|
||||
private Integer bbsInnb;
|
||||
/** 판매상품 고유번호 */
|
||||
private Integer sleGoodsInnb;
|
||||
/** 주문상품고유번호 */
|
||||
private Integer ordrGoodsInnb;
|
||||
/** 주문상품옵션고유번호 */
|
||||
private Integer ordrGoodsOptnInnb;
|
||||
/*주문고유번호*/
|
||||
private String ordrInnb;
|
||||
/** 주문상품옵션구분코드 */
|
||||
private String ordrGoodsOptnDvCd;
|
||||
/** 베스트여부 */
|
||||
private String bstAt;
|
||||
/** 등록 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** (등록아이디) */
|
||||
private String mbrid;
|
||||
/** (등록자명) */
|
||||
private String mbrNm;
|
||||
/** 내용 */
|
||||
private String cn;
|
||||
/** 조회건수 */
|
||||
private Integer inqireCnt;
|
||||
/** 댓글건수 */
|
||||
private Integer cmCnt;
|
||||
/** (다중",") */
|
||||
private Integer evlScore;
|
||||
/** 평균점수 */
|
||||
private Integer avrgScore;
|
||||
/** 에디터 사용여부 */
|
||||
private String editrUseAt;
|
||||
/** 포토리뷰여부 */
|
||||
private String photoRvwAt;
|
||||
/** IP */
|
||||
private String ip;
|
||||
/** 삭제여부 */
|
||||
private String delAt;
|
||||
/** 삭제일시 */
|
||||
private String delDt;
|
||||
/** 노출등록자이름 */
|
||||
private Integer expsrRegusrNm;
|
||||
|
||||
// 추가항목 정보(FM_BOARD_ADDITM)
|
||||
private List<com.wb.domainserver.domain.sopmal.mpage.act.vo.BbsFormVO> bbsFormVoList;
|
||||
|
||||
// 추가 답변 내용 (FM_BOARD_ADDITM)
|
||||
private List<com.wb.domainserver.domain.sopmal.mpage.act.vo.BbsFormAnswVO> bbsFormAnswList;
|
||||
|
||||
|
||||
//게시글 정보 (FM_BOARDMANAGER)
|
||||
/** 비밀글 사용여부 */
|
||||
private Boolean secretBbcttUseAt;
|
||||
|
||||
// 상품정보 (fm_shop_goods)
|
||||
/** 상품 이름 */
|
||||
private String goodsNm;
|
||||
/** 상품 설명 */
|
||||
private String goodsDc;
|
||||
/** 상품 간략설명 */
|
||||
private String srtDc;
|
||||
/** 상품 가격 */
|
||||
private Integer slePric;
|
||||
|
||||
// 상품이미지 정보(fm_goods_image)
|
||||
/** 상품 이미지 위치 */
|
||||
private String img;
|
||||
|
||||
// 리뷰 댓글정보(fm_boardcomment)
|
||||
/** 댓글 고유번호*/
|
||||
private Integer cmInnb;
|
||||
/** 댓글 등록자 구분 */
|
||||
private String commetRegusrDv;
|
||||
/** 댓글 작성자 */
|
||||
private String commetMbrNm;
|
||||
/** 댓글 작성자 아이디*/
|
||||
private String commetmbrId;
|
||||
/** 댓글 ip*/
|
||||
private String commetIp;
|
||||
/** 댓글 내용 */
|
||||
private String commetCn;
|
||||
/** 댓글 등록일 */
|
||||
private String commetRegustDt;
|
||||
|
||||
// 검색조건
|
||||
/** 검색어*/
|
||||
private String searchWord;
|
||||
/** 비밀글 제외 여부*/
|
||||
private String serchSecrtBbscttUseAt;
|
||||
/** 삭제글 제외 여부 */
|
||||
private String serchDelAt;
|
||||
/** 사진포함 여부*/
|
||||
private String serchPhotoRvwAt;
|
||||
/** 검색 시작일*/
|
||||
private String saerchStatrDate;
|
||||
/** 검색 종료일*/
|
||||
private String saerchEndDate;
|
||||
/** 세부항목 검색(내용 고유번호)*/
|
||||
private String[] searchFormItm;
|
||||
/** 베스트 후기 포함 여부*/
|
||||
private String searchBstAt;
|
||||
/** 네이버페이 포함 여부*/
|
||||
private String searchNpayAt;
|
||||
/** 주문번호 검색*/
|
||||
private String searchOrderInnb;
|
||||
/** 댓글 여부*/
|
||||
private String searchCommetAt;
|
||||
|
||||
/**
|
||||
* 첨부파일 정보
|
||||
*/
|
||||
|
||||
/* 파일 고유번호 */
|
||||
private String bbscttAtchmnfilInnb;
|
||||
/** 원본파일명 */
|
||||
private String orginlFilNm;
|
||||
/** 변환파일명 */
|
||||
private String sysFilNm;
|
||||
/** 파일타입 */
|
||||
private String filTy;
|
||||
/** 파일크기 */
|
||||
private String filMg;
|
||||
/** 파일경로 */
|
||||
private String filCours;
|
||||
/** 파일정보 */
|
||||
private List<HashMap<String, Object>> fileInfo;
|
||||
/*파일 존재여부*/
|
||||
private String filExtAt;
|
||||
/*현존 파일 정보*/
|
||||
private String extFiles;
|
||||
/*기존 파일 정보*/
|
||||
private String filesInfo;
|
||||
/*기존 파일 변화 여부*/
|
||||
private String extFilChangeAt;
|
||||
/*대표이미지 첨부 구분*/
|
||||
private String represntFilAt;
|
||||
/*파일 수정여부*/
|
||||
private String filChangeAt;
|
||||
/*파일 허용 확장자*/
|
||||
private String acceptFileExtensions;
|
||||
|
||||
/** 댓글 리스트 */
|
||||
private String[] cmList;
|
||||
private String boardAnswInnb;
|
||||
private String bbsNm;
|
||||
|
||||
/** 항목고유번호 리스트 */
|
||||
private String[] itmInnbAns;
|
||||
/** 답변내용 리스트 */
|
||||
private String[] answCnAns;
|
||||
private String[] qesitmInnbAns;
|
||||
/** 항목고유번호 (분류) */
|
||||
private String itmInnbDiv;
|
||||
/** 답변내용 (분류) */
|
||||
private String answCnDiv;
|
||||
private String qesitmInnbDiv;
|
||||
/*
|
||||
* 상세 조회
|
||||
*/
|
||||
/*상품고유번호*/
|
||||
private String goodsInnb;
|
||||
/*추천상품고유번호*/
|
||||
private String recomendGoodsInnb;
|
||||
/** 상세조회와 페이지 구분처리 */
|
||||
private String dtlPop;
|
||||
/*상품 고유번호 배열*/
|
||||
private String[] goodsInnbArr;
|
||||
/*주문고유번호*/
|
||||
private String[] ordrInnbArr;
|
||||
|
||||
/**
|
||||
* 게시글 정보
|
||||
*/
|
||||
|
||||
/** 부모게시글고유번호 */
|
||||
private String parntsBbscttInnb;
|
||||
/** 게시판ID */
|
||||
private String bbsId;
|
||||
/** DEPTH */
|
||||
private Integer depth;
|
||||
/*회원구분코드*/
|
||||
private String mbrDvCd;
|
||||
/** 등록자구분코드 */
|
||||
private String regusrDvCd;
|
||||
/** 등록자ID */
|
||||
private String regusrId;
|
||||
/** 등록자명 */
|
||||
private String regusrNm;
|
||||
/** 비밀번호 */
|
||||
@Length(min = 0, max = 20, message = "비밀번호")
|
||||
private String password;
|
||||
/** 제목 */
|
||||
@NotBlank(message = "제목")
|
||||
@Length(min = 0, max = 100, message = "제목")
|
||||
private String sj;
|
||||
/** 댓글사용여부 */
|
||||
private String cmUseAt;
|
||||
/** 추천건수 */
|
||||
private Integer recomendCnt;
|
||||
/** 비추천건수 */
|
||||
private Integer nonrecomendCnt;
|
||||
/** 정렬순서 */
|
||||
private Integer sortOrdr;
|
||||
/** 정렬순서여부 */
|
||||
private String sortOrdrAt;
|
||||
/** 비밀글여부 */
|
||||
private String secretBbscttAt;
|
||||
/** 공지여부 */
|
||||
private String ntcAt;
|
||||
/** 노출여부 */
|
||||
private String expsrAt;
|
||||
/** 온라인여부 */
|
||||
private String onlineAt;
|
||||
/** 오프라인여부 */
|
||||
private String oflneAt;
|
||||
/** 게시기간설정여부 */
|
||||
private String ntcePdSetupAt;
|
||||
/** 게시시작일자 */
|
||||
private String ntceBgnDe;
|
||||
/** 게시종료일자 */
|
||||
private String ntceEndDe;
|
||||
/** 공지기간설정여부 */
|
||||
private String ntcPdSetupAt;
|
||||
/** 공지시작일자 */
|
||||
private String ntcBgnDe;
|
||||
/** 공지종료일자 */
|
||||
private String ntcEndDe;
|
||||
/** 메인노출여부 */
|
||||
private String mainExpsrAt;
|
||||
/** NPay 게시글 일련번호 */
|
||||
private String npayBbscttSnb;
|
||||
/** NPay 답변 전송여부*/
|
||||
private String npayAnswTrnsmisAt;
|
||||
/** NPay 답변번호*/
|
||||
private String npayAnswNb;
|
||||
/** NPay 상품주문번호*/
|
||||
private String npayGoodsOrdrnb;
|
||||
/** NPay 리뷰유형코드*/
|
||||
private String npayRvwTyCd;
|
||||
/** AGENT */
|
||||
private String agent;
|
||||
/** 사용여부 */
|
||||
private String useAt;
|
||||
|
||||
|
||||
/**
|
||||
* 검색조건
|
||||
*/
|
||||
/** 검색구분 */
|
||||
private String srchDv;
|
||||
/** 검색어 */
|
||||
private String srchKeyword;
|
||||
/*검색어 배열(상품상세 키워드 검색)*/
|
||||
private String[] srchKeywordArr;
|
||||
/** 검색 시작일 */
|
||||
private String srchStartDt;
|
||||
/** 검색 종료일 */
|
||||
private String srchEndDt;
|
||||
/** 게시판 이름 코드 */
|
||||
private String bbsTyCd;
|
||||
/** 답변 상태 */
|
||||
private String answSttus;
|
||||
/** 분류명 */
|
||||
private String srchitmInnb;
|
||||
/** 네이버페이 후기 여부*/
|
||||
private String npayAt;
|
||||
/** 주문번호 후기 여부*/
|
||||
private String srchOrdrInnb;
|
||||
/** 댓글 여부*/
|
||||
private String srchCmAt;
|
||||
/** 기간 */
|
||||
private String datePeriod;
|
||||
/** 항목내용 */
|
||||
private String itmCn;
|
||||
/* 사용자 > 상품 상세 > 리뷰 정렬*/
|
||||
private String sortDv;
|
||||
/**
|
||||
* 게시글추가문항답변
|
||||
*/
|
||||
|
||||
/** 문항답변고유번호 */
|
||||
private String qesitmAnswInnb;
|
||||
/** 문항고유번호 */
|
||||
private String qesitmInnb;
|
||||
/** 문항필수여부 */
|
||||
private String qesitmEssntlAt;
|
||||
/** 문항사용여부 */
|
||||
private String qesitmUseAt;
|
||||
/** 문항순서 */
|
||||
private String qesitmOrdr;
|
||||
/** 항목고유번호 */
|
||||
private String itmInnb;
|
||||
/** 답변내용 */
|
||||
private String answCn;
|
||||
/** 문항필수여부(배열) */
|
||||
private String[] qesitmEssntlAtArr;
|
||||
/** 문항고유번호(배열) */
|
||||
private String[] qesitmInnbArr;
|
||||
/** 문항 명(배열) */
|
||||
private String[] qesitmNmArr;
|
||||
/** 항목고유번호(배열) */
|
||||
private String[] itmInnbArr;
|
||||
/** 답변내용(배열) */
|
||||
private String[] answCnArr;
|
||||
/** 답변 여부(배열) */
|
||||
private String[] qesitmAtArr;
|
||||
/** 타입 코드 */
|
||||
private String[]itmTyCdArr;
|
||||
/** 리뷰 문항 필수 여부 배열*/
|
||||
private String[] rvwQesitmEssntlAtArr;
|
||||
/** 리뷰 문항 명 배열*/
|
||||
private String[] rvwQesitmNmArr;
|
||||
/** 리뷰 답변 여부 배열*/
|
||||
private String[] rvwQesitmAtArr;
|
||||
/** 리뷰 문항고유번호 배열*/
|
||||
private String[] rvwQesitmInnbArr;
|
||||
/** 리뷰 평점 배열*/
|
||||
private String[] evlScoreArr;
|
||||
/** 리뷰 항목고유번호 배열*/
|
||||
private String[] rvwItmInnbArr;
|
||||
/** 선택삭제 게시글리스트 */
|
||||
private String[] delBbscttInnbArr;
|
||||
|
||||
/**
|
||||
* 권한
|
||||
*/
|
||||
//권한 구분 (REDNG : 읽기권한, REGIST: 쓰기권한, CM: 댓글등록권한)
|
||||
private String authDv;
|
||||
|
||||
//권한 결과값
|
||||
private String authResult;
|
||||
|
||||
/*
|
||||
* 요청 값
|
||||
*/
|
||||
/*요청 페이지 구분(고객센터=>csc , 서브페이지=>subPage, 이용안내 => useGudiance, crm => crm)*/
|
||||
private String reqUrl;
|
||||
|
||||
/* 서버 구분 sopmal or mngr*/
|
||||
private String serverDv;
|
||||
|
||||
/*상세 구분*/
|
||||
private String dtlAt;
|
||||
|
||||
/*사용자 등록,수정시 목록이동 or 등록,수정폼 유지*/
|
||||
private String listAt;
|
||||
|
||||
/*리뷰,게시글 구분*/
|
||||
private String rvwBbscttDv;
|
||||
|
||||
/**
|
||||
* 게시판 설정
|
||||
*/
|
||||
/* 파일 첨부 여부*/
|
||||
private String filAtch;
|
||||
/*게시글발송방식코드*/
|
||||
private String bbscttSndngMthCd;
|
||||
|
||||
/*sms 관련*/
|
||||
private String bbscttSndngDvCd;
|
||||
|
||||
/*삭제 관련*/
|
||||
/*회수 마일리지 관련 정보*/
|
||||
private List<DelInfoVO> delInfoArr;
|
||||
|
||||
/*모바일 pc 구분*/
|
||||
private String diviceDv;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,446 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.bnef.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefCashVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefCouponVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefMbrGradVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.bnef.vo.MyBnefMlgVO;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/mpage/bnef")
|
||||
@Slf4j
|
||||
public class MyBnefController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 회원 등급 혜택 조회
|
||||
* @param request
|
||||
* @param model
|
||||
* @param gradVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectMbrGradInqire")
|
||||
public String selectCscMainForm(HttpServletRequest request, ModelMap model, MyBnefMbrGradVO gradVO) {
|
||||
gradVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/setup/gradbnef/selectBOMbrGradListInqire", gradVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", gradVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/MbrGradR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 마일리지 내역 이동
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectMlgDtlsInqireForm")
|
||||
public String selectMlgDtlsInqireForm(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) {
|
||||
mlgVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", mlgVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", mlgVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", mlgVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/MlgDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 마일리지 목록 조회
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectMlgDtlsInqire")
|
||||
public String selectMlgDtlsInqire(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) {
|
||||
mlgVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", mlgVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", mlgVO);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/MlgDtlsR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 마일리지 목록 조회 > 스크롤
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectMlgDtlsScrolInqire")
|
||||
public ResponseEntity<WnbtResponse> selectMlgDtlsScrolInqire(MyBnefMlgVO mlgVO) {
|
||||
mlgVO.setServerDv("sopmal");
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", mlgVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 내역 폼 이동
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCouponDtlsForm")
|
||||
public String selectCouponDtlsForm(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOHoldCouponDtlsForm", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", couponVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", couponVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/CouponDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 사용가능 쿠폰 조회
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCouponUsePosblDtlsInqire")
|
||||
public String selectCouponUsePosblDtlsInqire(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) {
|
||||
couponVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", couponVO);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/UsePosblCouponDtlsR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 쿠폰 > 사용가능 쿠폰 조회 > 스크롤
|
||||
* @param couponVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCouponUsePosblDtlsScrolInqire")
|
||||
public ResponseEntity<WnbtResponse> selectCouponUsePosblDtlsScrolInqire(MyBnefCouponVO couponVO) {
|
||||
couponVO.setServerDv("sopmal");
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 다운로드 가능 조회
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectDwldCouponDtlsInqire")
|
||||
public String selectDwldCouponDtlsInqire(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) {
|
||||
couponVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO),
|
||||
model,
|
||||
"resultMapDwld"
|
||||
);
|
||||
model.addAttribute("paramVO", couponVO);
|
||||
|
||||
// return "sopmal/mpage/bnef/DwldCouponDtlsR";
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/DwldCouponDtlsR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 쿠폰 > 다운로드 가능 쿠폰 조회 > 스크롤
|
||||
* @param couponVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectDwldCouponDtlsScrolInqire")
|
||||
public ResponseEntity<WnbtResponse> selectDwldCouponDtlsScrolInqire(MyBnefCouponVO couponVO) {
|
||||
couponVO.setServerDv("sopmal");
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 정보 조회 팝업
|
||||
*
|
||||
* @param CouponVO couponVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCouponDtlInfoInqirePopup")
|
||||
public String selectCouponDtlInfoInqirePopup(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponInfoInqirePopup", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
// return "sopmal/mpage/bnef/UsePosblCouponDtlPopupR";
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/UsePosblCouponDtlPopupR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 정보 조회 팝업
|
||||
*z
|
||||
* @param CouponVO couponVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectDwldYCouponDtlInfoInqirePopup")
|
||||
public String selectDwldYCouponDtlInfoInqirePopup(MyBnefCouponVO couponVO, ModelMap model, HttpServletRequest request) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldYCouponInfoInqirePopup", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
// return "sopmal/mpage/bnef/UsePosblCouponDtlPopupR";
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/UsePosblCouponDtlPopupR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 코드 등록 오프라인 쿠폰 등록 ( 인증번호 쿠폰 )
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertCouponRegist")
|
||||
public ResponseEntity<WnbtResponse> insertCouponRegist(@Validated MyBnefCouponVO couponVO, BindingResult bindingResult) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBOCodeCouponRegist", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* (모든) 쿠폰 다운로드
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertDwldCouponAllRegist")
|
||||
public ResponseEntity<WnbtResponse> insertDwldCouponAllRegist(@Validated MyBnefCouponVO couponVO, BindingResult bindingResult) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 다운로드
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertDwldCouponRegist")
|
||||
public ResponseEntity<WnbtResponse> insertDwldCouponRegist(@Validated MyBnefCouponVO couponVO, BindingResult bindingResult) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 쿠폰 다운로드 여부 조회 (이벤트 페이지)
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCouponDownYn")
|
||||
public ResponseEntity<WnbtResponse> selectCouponDownYn(@Validated MyBnefCouponVO couponVO) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectCouponDownYn", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************
|
||||
* 마이페이지 > 충전형 마일리지 관련 서비스 시작
|
||||
***************************************************************/
|
||||
|
||||
/**
|
||||
* 마이페이지 > 충전형 마일리지 내역 이동
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCashDtlsInqireForm")
|
||||
public String selectCashDtlsInqireForm(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashBlce", mlgVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
model.addAttribute("paramVO", mlgVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 충전형 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", mlgVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/CashDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 충전형 마일리지 목록 조회
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCashDtlsInqire")
|
||||
public String selectCashDtlsInqire(MyBnefMlgVO mlgVO, ModelMap model, HttpServletRequest request) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", mlgVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", mlgVO);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/bnef/CashDtlsR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 충전형 마일리지 목록 조회 > 스크롤
|
||||
* @param mlgVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectCashDtlsScrolInqire")
|
||||
public ResponseEntity<WnbtResponse> selectCashDtlsScrolInqire(MyBnefMlgVO mlgVO) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", mlgVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이페이지 > 충전형 마일리지 > 상품권번호조회
|
||||
* @param mlgVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectGiftCardCrtfcNb")
|
||||
public ResponseEntity<WnbtResponse> selectGiftCardCrtfcNb(MyBnefCashVO vo) {
|
||||
if (vo.getCrtfcNb() == null || vo.getCrtfcNb().isEmpty()) {
|
||||
throw new WnbtRestException("상품권 인증번호를 입력해주세요");
|
||||
}
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOGiftCardCrtfcNb", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이페이지 > 충전형 마일리지 > 상품권 등록
|
||||
* @param mlgVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertGiftCard")
|
||||
public ResponseEntity<WnbtResponse> insertGiftCard(MyBnefCashVO vo) {
|
||||
if (vo.getPinNb() == null || vo.getPinNb().isEmpty()) {
|
||||
throw new WnbtRestException("상품권 pin 번호를 입력해주세요");
|
||||
}
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOCashReg", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.bnef.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyBnefCashVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/*상품권 인증번호*/
|
||||
private String crtfcNb;
|
||||
|
||||
/*상품권 pin 번호*/
|
||||
private String pinNb;
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.bnef.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 마이페이지 쿠폰 VO
|
||||
* @author 추지훈.
|
||||
* @since 2024-03-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-05 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyBnefCouponVO extends AbstractVO {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 쿠폰정보
|
||||
*/
|
||||
|
||||
/** 다운로드 쿠폰 고유번호 */
|
||||
private BigInteger dwldCouponInnb;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Integer couponInnb;
|
||||
/** 회원 고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 회원 명 */
|
||||
private String mbrNm;
|
||||
/** 회원 휴대폰번호 */
|
||||
private String mbtlnb;
|
||||
/** 쿠폰팩 고유번호 */
|
||||
private Integer cupnpkInnb;
|
||||
/** 오프라인쿠폰 고유번호 */
|
||||
private Integer oflneCouponInnb;
|
||||
/** 쿠폰 발송 고유번호 */
|
||||
private Integer couponSndngInnb;
|
||||
/** 쿠폰 발송 유형코드 */
|
||||
private String couponSndngTy;
|
||||
/** 발송구분 */
|
||||
private String sndngDv;
|
||||
/** 발송대상 구분 */
|
||||
private String sndngTrgetDv;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 다운로드 쿠폰팩명 */
|
||||
private String cupnpkNm;
|
||||
/** 다운로드 쿠폰팩 설명 */
|
||||
private String cupnpkDc;
|
||||
/** 다운로드 쿠폰명 */
|
||||
private String coupNm;
|
||||
/** 다운로드 쿠폰 설명 */
|
||||
private String couponDc;
|
||||
/** 사용환경코드 */
|
||||
private String useEnvrnCd;
|
||||
/** 단독사용, 공동사용 */
|
||||
private String otrCouponSmtmUseAt;
|
||||
/** 중복다운로드여부 */
|
||||
private String dplctDwldAt;
|
||||
/** 중복할인여부 */
|
||||
private String dplctDscntAt;
|
||||
/** 사용가능금액 */
|
||||
private String usePosblAmt;
|
||||
/** 상품카테고리 제한구분( 전체상품(all), 상품/카테고리(issue) ) */
|
||||
private String goodsCtgryLmttDv;
|
||||
/** 유효기간시작일시 */
|
||||
private String validpdBgnDt;
|
||||
/** 유효기간시작일시 포맷 yyyy-mm-dd */
|
||||
private String validpdBgnDe;
|
||||
/** 유효기간종료일시 */
|
||||
private String validpdEndDt;
|
||||
/** 유효기간종료일시 포맷 yyyy-mm-dd */
|
||||
private String validpdEndDe;
|
||||
/** 유효기간 남은 일수 */
|
||||
private String validpdDay;
|
||||
/** 쿠폰 사용여부 */
|
||||
private String couponUseAt;
|
||||
/** 쿠폰 사용 일시 */
|
||||
private String couponUseDt;
|
||||
/** 오프라인쿠폰 인증번호 */
|
||||
private String oflneCouponCrtnb;
|
||||
/** 사용처구분 */
|
||||
private String useplcDv;
|
||||
/** 복원 원본쿠폰 */
|
||||
private String recovryOrginlCoupon;
|
||||
|
||||
/** 사용자 다운로드할 쿠폰 목록 */
|
||||
private List<UserDwldVO> downloadCouponList;
|
||||
|
||||
|
||||
// 쿠폰 혜택
|
||||
|
||||
/** 다운로드 쿠폰 혜택 고유번호 */
|
||||
private Integer dwldCouponBnefInnb;
|
||||
/** 혜택구분 */
|
||||
private String bnefDv;
|
||||
/** 상품할인구분 */
|
||||
private String goodsDscntDv;
|
||||
/** 추가할인금액 */
|
||||
private String aditDscntAmt;
|
||||
/** 추가할인비율 */
|
||||
private String aditDscntRt;
|
||||
/** 할인최대금액 */
|
||||
private String dscntMxmmAmt;
|
||||
/** 무료, 금액 */
|
||||
private String dlvyAmtDscntDv;
|
||||
/** 배송비할인금액 */
|
||||
private String dlvyAmtDscntAmt;
|
||||
/** 배송비최대할인금액 */
|
||||
private String dlvyAmtMxmmDscntAmt;
|
||||
|
||||
|
||||
|
||||
// 쿠폰 적용 상품
|
||||
|
||||
/** 쿠폰 적용상품 고유번호 */
|
||||
private Integer dwldCouponApplcGoodsInnb;
|
||||
/** 상품적용구분 */
|
||||
private String goodsApplcDv;
|
||||
/** 판매상품 고유번호 */
|
||||
private Integer sleGoodsInnb;
|
||||
/** 혜택 적용 판매상품 고유번호 리스트 */
|
||||
private List<Integer> sleGoodsInnbList;
|
||||
/** 혜택 제외 판매상품 고유번호 리스트 */
|
||||
private List<Integer> ExclSleGoodsInnbList;
|
||||
/** 카테고리 ID */
|
||||
private Integer ctgryId;
|
||||
/** 혜택 적용 카테고리 ID 리스트 */
|
||||
private List<Integer> ctgryIdList;
|
||||
/** 혜택 제외 카테고리 ID 리스트 */
|
||||
private List<Integer> ExclCtgryIdList;
|
||||
|
||||
// 검색조건
|
||||
|
||||
/** 검색_회원아이디, 회원명 */
|
||||
private String searchKeyword;
|
||||
/** 검색_발급일 시작 */
|
||||
private String srchStartDate;
|
||||
/** 검색_발급일 종료 */
|
||||
private String srchEndDate;
|
||||
/** 검색_다운로드쿠폰사용여부 */
|
||||
private String srchUseAt;
|
||||
|
||||
|
||||
|
||||
|
||||
/** 쿠폰 발급 혹은 쿠폰 등록 시 쿠폰 고유번호 */
|
||||
private String couponArray;
|
||||
|
||||
/** 쿠폰 발급 혹은 쿠폰 등록 시 쿠폰 쇼핑몰 코드*/
|
||||
private String[] sopmalArray;
|
||||
|
||||
/** 쿠폰 다운로드 시 쿠폰 쇼핑몰 코드 */
|
||||
private String couponSopmalCd;
|
||||
|
||||
/** 쿠폰 다운로드 시 쿠폰 발송 고유번호 배열 */
|
||||
private String couponSndngArray;
|
||||
|
||||
|
||||
|
||||
|
||||
/** 그룹 코드 */
|
||||
private String groupCd;
|
||||
|
||||
/** 주문 고유번호 ( 주문 쿠폰 사용 내역 조회 ) */
|
||||
private String ordrInnb;
|
||||
|
||||
/** JSON 형태의 회원 리스트 ( 발급하기 ) */
|
||||
private String jsonMbrList;
|
||||
|
||||
|
||||
|
||||
private String serverDv;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.bnef.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* 마이페이지 쿠폰 VO
|
||||
* @author 추지훈.
|
||||
* @since 2024-03-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-05 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyBnefMbrGradVO extends AbstractVO {
|
||||
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 회원 등급 정보
|
||||
*/
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 모바일_서버구분 */
|
||||
private String serverDv;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.bnef.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyBnefMlgVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 마일리지 정보
|
||||
*/
|
||||
/** 마일리지 고유번호 */
|
||||
private Integer mlgInnb;
|
||||
/** 주문고유번호 */
|
||||
private Integer ordrInnb;
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 게시글고유번호 */
|
||||
private Integer bbscttInnb;
|
||||
/** 주문코드 */
|
||||
private String ordrCd;
|
||||
/** 마일리지구분 */
|
||||
private String mlgDvCd;
|
||||
/** 마일리지적립구분 */
|
||||
private String mlgAccmlDvCd;
|
||||
/** 마일리지적용구분 */
|
||||
/** 적립(지급) : 리뷰(일반,포토,한달),구매,이벤트, 관리자 사용(차감, 소멸) : 구매, 관리자, 기간만료 */
|
||||
private String mlgApplcDvCd;
|
||||
/** 마일리지적용사유 */
|
||||
private String mlgApplcResn;
|
||||
/** 적립금액 */
|
||||
private BigDecimal accmlmnyAmt;
|
||||
/** 잔액 */
|
||||
private BigDecimal blce;
|
||||
/** 손실 */
|
||||
private BigDecimal loss;
|
||||
/** 사용가능시작일시 */
|
||||
private Date usePosblBgnDt;
|
||||
/** 사용가능종료일시 */
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSX")
|
||||
private Date usePosblEndDt;
|
||||
/** 주문정보 */
|
||||
private String ordrInfo;
|
||||
/** 관리코드 */
|
||||
private String manageCd;
|
||||
/** 관리메모 */
|
||||
private String manageMemo;
|
||||
/** 만료여부 */
|
||||
private String endAt;
|
||||
/** 취소여부 */
|
||||
private String canclAt;
|
||||
/** 취소일시 */
|
||||
private Date canclDt;
|
||||
/** 소멸 배치 묶음 */
|
||||
private String extshBatchBundle;
|
||||
/** 온오프 구분 */
|
||||
private String onlineOflneDvCd;
|
||||
/** 매장고뷰번호 */
|
||||
private Integer strInnb;
|
||||
/** 매장코드 */
|
||||
private String strCd;
|
||||
/** 매장명 */
|
||||
private Integer strnm;
|
||||
/** 매장구분 */
|
||||
private String strDvCd;
|
||||
/** 포스코드 */
|
||||
private String posCd;
|
||||
/** 등록자구분 */
|
||||
private String regusrDvCd;
|
||||
/** 수정자구분 */
|
||||
private String updusrDvCd;
|
||||
/** 마일리지 유효기간 */
|
||||
private long mlgValidDt;
|
||||
|
||||
|
||||
// 검색
|
||||
/** 검색_마일리지 적립 구분코드 */
|
||||
private String srchMlgAccmlDvCd;
|
||||
/** 검색_브랜드명 */
|
||||
private String srchSopmalCd;
|
||||
/** 검색_시작날짜 */
|
||||
private String srchStartDate;
|
||||
/** 검색_종료날짜 */
|
||||
private String srchEndDate;
|
||||
|
||||
|
||||
/** 유효기간 수정_종료일자 */
|
||||
private String usePosblEndDtStr;
|
||||
|
||||
|
||||
private String serverDv;
|
||||
|
||||
|
||||
// 사용자 > 마일리지 내역
|
||||
|
||||
private String bgnDt;
|
||||
|
||||
private String endDt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.bnef.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigInteger;
|
||||
|
||||
/**
|
||||
*
|
||||
* 쿠폰 VO
|
||||
* @author 추지훈
|
||||
* @since 2023-12-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2023-12-11 추지훈 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class UserDwldVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 다운로드쿠폰 고유번호 */
|
||||
private BigInteger dwldCouponInnb;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Integer couponInnb;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
/** 쿠폰팩고유번호 */
|
||||
private Integer cupnpkInnb;
|
||||
/** 오프라인쿠폰 고유번호 */
|
||||
private Integer oflneCouponInnb;
|
||||
/** 쿠폰발송 고유번호 */
|
||||
private Integer couponSndngInnb;
|
||||
/** 쿠폰팩 명 */
|
||||
private String cupnpkNm;
|
||||
/** 쿠폰팩 설명 */
|
||||
private String cupnpkDc;
|
||||
/** 회원 명 */
|
||||
private String mbrNm;
|
||||
/** 휴대폰번호 */
|
||||
private String mbtlnb;
|
||||
/** 오프라인쿠폰 인증번호 */
|
||||
private String oflneCouponCrtnb;
|
||||
/** 사용처 구분 */
|
||||
private String useplcDvCd;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,666 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.controller;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.wb.domainserver.domain.sopmal.csc.vo.GnrlBbscttVO;
|
||||
import com.wb.domainserver.domain.sopmal.mbr.vo.MbrVO;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.mbr.vo.*;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyOrdrDlvyVO;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.exception.WnbtRestException;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtResponseBody;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.BoResultMapConverter;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.communicate.ValidateResultConverter;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
*
|
||||
* 마이페이지 회원
|
||||
* @author 추지훈.
|
||||
* @since 2024-02-29
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-29 추지훈. 최초 생성
|
||||
* 2024-10-11 이대환. 회원정보수정 수정
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/mpage/mbr")
|
||||
@Slf4j
|
||||
public class MyMbrController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 사용자 > 마이페이지 > 메인 화면 이동
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMpageMainInqire")
|
||||
public String selectMpageMainInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception {
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO));
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMpageOrdrSttusInqire", ordrDlvyVO),
|
||||
model,
|
||||
"ordrSttusMap"
|
||||
);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", ordrDlvyVO),
|
||||
model,
|
||||
"wishListMap"
|
||||
);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
String diviceTy = Util.getDeviceType(request);
|
||||
if("sopmal".equals(diviceTy)){ //pc버전만 조회
|
||||
//qna 조회
|
||||
GnrlBbscttVO bbsctt = new GnrlBbscttVO();
|
||||
bbsctt.setBbsTyCd("05");
|
||||
bbsctt.setBbsId("goods_qna");
|
||||
bbsctt.setServerDv("sopmal");
|
||||
bbsctt.setReqUrl("mpage");
|
||||
bbsctt.setPageUnit(5);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"qnaResultMap"
|
||||
);
|
||||
|
||||
//리뷰 조회
|
||||
bbsctt.setUseAt("Y");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire", bbsctt),
|
||||
model,
|
||||
"rvw"
|
||||
);
|
||||
}
|
||||
|
||||
return diviceTy + "/mpage/main/MpageMainR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 회원 비밀번호 확인 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectMbrInfoUpdtPasswordCnfirmForm")
|
||||
public String selectMbrInfoUpdtPasswordCnfirmForm(MyMbrVO mymbrVO, ModelMap model, HttpServletRequest request){
|
||||
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOExtrlIntrlckAt", mymbrVO)
|
||||
);
|
||||
mymbrVO.setExtrlIntrlckAt((String) resultMap.get("extrlIntrlckAt"));
|
||||
|
||||
if(mymbrVO.getExtrlIntrlckAt().equals("Y")) {
|
||||
return selectMbrInfoUpdtForm(mymbrVO, model, request);
|
||||
}
|
||||
return Util.getDeviceType(request) + "/mpage/mbr/MbrInfoUpdtPasswordCnfirmR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원 비밀번호 확인
|
||||
* @param mymbrVO
|
||||
* @param bindingResult
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrInfoUpdtPasswordCnfirm")
|
||||
public ResponseEntity<WnbtResponse> selectMbrInfoUpdtPasswordCnfirm(MyMbrVO mymbrVO){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 회원 정보 수정 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectMbrInfoUpdtForm")
|
||||
public String selectMbrInfoUpdtForm(MyMbrVO mymbrVO, ModelMap model, HttpServletRequest request){
|
||||
mymbrVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoUpdtInqire", mymbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/mbr/MbrInfoUpdtU";
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원 정보 수정 (아이디 수정)
|
||||
* @param mymbrVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateMbrIdUpdt" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateMbrIdUpdt(@Validated MyMbrIdChngVO mymbrVO, BindingResult bindingResult){
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
/*1 비밀번호 정규 표현식 확인*/
|
||||
String password = mymbrVO.getNewPassword();
|
||||
|
||||
String pwPattern = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*\\W)?[a-zA-Z\\d\\W]{6,20}$|^(?=.*[a-zA-Z])(?=.*\\W)(?=.*\\d)?[a-zA-Z\\W\\d]{6,20}$|^(?=.*\\d)(?=.*\\W)(?=.*[a-zA-Z])?[a-zA-Z\\d\\W]{6,20}$";
|
||||
|
||||
Matcher matcher = Pattern.compile(pwPattern).matcher(password);
|
||||
|
||||
if (!matcher.matches()) {
|
||||
throw new WnbtRestException("비밀번호는 영문 대소문자/숫자/특수문자 중 2가지 이상 조합한 6~20자로 입력해주세요.");
|
||||
}
|
||||
|
||||
/*2 변경 비밀번호 확인*/
|
||||
if (!password.equals(mymbrVO.getCheckPassword())) {
|
||||
throw new WnbtRestException("비밀번호가 일치하지 않습니다.");
|
||||
}
|
||||
|
||||
/*3 아이디 비밀번호 동일 확인*/
|
||||
if (password.equals(mymbrVO.getMbrId())) {
|
||||
throw new WnbtRestException("비밀번호는 아이디와 동일할 수 없습니다.");
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrIdUpdt", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원 정보 수정 (비밀번호 수정)
|
||||
* @param mymbrVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateMbrPasswordUpdt" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateMbrPasswordUpdt(@Validated MyMbrPwdChngVO mymbrVO, BindingResult bindingResult){
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
//비밀번호 변경시
|
||||
/*1 비밀번호 변경 시 현재 비밀번호 확인*/
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrPasswordCnfirm", mymbrVO)
|
||||
);
|
||||
int result = (int) resultMap.get("result");
|
||||
if (result == 0) {
|
||||
throw new WnbtRestException("현재 비밀번호가 일치하지 않습니다");
|
||||
}
|
||||
|
||||
/*2 비밀번호 정규 표현식 확인*/
|
||||
String password = mymbrVO.getNewPassword();
|
||||
|
||||
String pwPattern = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*\\W)?[a-zA-Z\\d\\W]{6,20}$|^(?=.*[a-zA-Z])(?=.*\\W)(?=.*\\d)?[a-zA-Z\\W\\d]{6,20}$|^(?=.*\\d)(?=.*\\W)(?=.*[a-zA-Z])?[a-zA-Z\\d\\W]{6,20}$";
|
||||
|
||||
Matcher matcher = Pattern.compile(pwPattern).matcher(password);
|
||||
|
||||
if (!matcher.matches()) {
|
||||
throw new WnbtRestException("비밀번호는 영문 대소문자/숫자/특수문자 중 2가지 이상 조합한 6~20자로 입력해주세요.");
|
||||
}
|
||||
|
||||
/*3 변경 비밀번호 확인*/
|
||||
if (!password.equals(mymbrVO.getCheckPassword())) {
|
||||
throw new WnbtRestException("변경 비밀번호가 일치하지 않습니다.");
|
||||
}
|
||||
|
||||
/*4 아이디 비밀번호 동일 확인*/
|
||||
if (responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOIdPasswordDuplicateAt", mymbrVO)
|
||||
).get("idPasswordDuplicateAt").equals("Y")) {
|
||||
throw new WnbtRestException("비밀번호는 아이디와 동일할 수 없습니다.");
|
||||
}
|
||||
|
||||
/*5 기존 비밀번호 동일 확인*/
|
||||
if (password.equals(mymbrVO.getMbrPassword())) {
|
||||
throw new WnbtRestException("현재 비밀번호와 동일한 비밀번호를 재사용할 수 없습니다.");
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrPasswordUpdt", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)@RequestMapping(value="/selectCrtnbSndng")public String selectCrtnbSndng(){return "/0";}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 회원 정보 수정 (휴대폰번호 수정)
|
||||
* @param mymbrVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateMbrMblphonInfoUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateMbrMblphonInfoUpdt(@Validated MyMbrVO mymbrVO, BindingResult bindingResult){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrMblphonInfoUpdt", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 회원 정보 수정 (이메일 수정)
|
||||
* @param mymbrVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateMbrEmailInfoUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateMbrEmailInfoUpdt(@Validated MyMbrEmailChngVO mymbrVO, BindingResult bindingResult){
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrEmailInfoUpdt", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 계정 연동 활성화
|
||||
* @param mymbrVO
|
||||
* @param bindingResult
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/insertAcntCnncSttusRegist" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> insertAcntCnncSttusRegist(MyMbrVO mymbrVO, BindingResult bindingResult){
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/insertBOAcntCnncSttusRegist", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 계정 연동 비활성화
|
||||
* @param mymbrVO
|
||||
* @param bindingResult
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/deleteAcntCnncSttusDel" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteAcntCnncSttusDel(MyMbrVO mymbrVO, BindingResult bindingResult){
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/deleteBOAcntCnncSttusDel", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 회원 정보 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateMbrInfoUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateMbrInfoUpdt(@Validated MyMbrVO mymbrVO, BindingResult bindingResult){
|
||||
mymbrVO.setServerDv("sopmal");
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
mymbrVO.setMbtlnb(mymbrVO.getMbtlnb().replace("-",""));
|
||||
//모바일일 시 진행
|
||||
if("mobile".equals(mymbrVO.getUtilDv())){
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrMbtlnbCompare", mymbrVO)
|
||||
);
|
||||
int result = (Integer) resultMap.get("result");
|
||||
if(result == 0){
|
||||
if(!"Y".equals(mymbrVO.getMbtlnbChngAt())){
|
||||
throw new WnbtRestException("휴대폰 인증이 필요합니다.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mymbrVO.getBrthDe() != null) {
|
||||
mymbrVO.setBrthDe(mymbrVO.getBrthDe().replace(",", ""));
|
||||
}
|
||||
|
||||
if (mymbrVO.getMarktRecptnAgreAt() == null || mymbrVO.getMarktRecptnAgreAt().isEmpty()) {
|
||||
mymbrVO.setMarktRecptnAgreAt("N");
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrInfoUpdt", mymbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 회원 탈퇴 화면 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectMbrSecsnForm")
|
||||
public String selectMbrSecsnForm(ModelMap model, HttpServletRequest request, MyMbrVO mymbrVO) {
|
||||
mymbrVO.setServerDv("sopmal");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrSecsnForm", mymbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/mbr/MbrSecsnU";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 회원 탈퇴 ( 탈퇴엔 등록, 회원에는 수정 )
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateMbrSecsn")
|
||||
public ResponseEntity<WnbtResponse> updateMbrSecsn(@Validated WithdrawalVO vo, BindingResult bindingResult, HttpServletRequest request){
|
||||
//validation 체크
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
vo.setServerDv("sopmal");
|
||||
//ip주소 get
|
||||
Map<String, String> requestInfo = Util.getRequestInfo(request);
|
||||
String ip = (String) requestInfo.get("XForwardedFor");
|
||||
vo.setRegistIp(ip);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrSecsn", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 배송지 관리 목록 조회 이동
|
||||
* @param dlvylcVO
|
||||
* @param ModelMap
|
||||
* @return MbrDlvylcListInqireR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping("/selectDlvylcManagePopupForm")
|
||||
public String selectMbrDlvylcListInqire(HttpServletRequest request, DlvylcVO dlvylcVO) {
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/mbr/DlvylcManageRForm";
|
||||
}
|
||||
/**
|
||||
* 배송지 관리
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectDlvylcManagePopup")
|
||||
public String selectDlvylcManagePopup(HttpServletRequest request, DlvylcVO dlvylcVO, ModelMap model){
|
||||
String jspPath = "";
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//popUp or page 호출인지에 따라 페이지유닛 및 경로 분기
|
||||
if("Y".equals(dlvylcVO.getIsPop())) {
|
||||
if("N".equals(dlvylcVO.getIsMobile())){ //모바일 여부에 따른 팝업 페이지 유닛 분기
|
||||
dlvylcVO.setPageUnit(3);
|
||||
}else{
|
||||
dlvylcVO.setPageUnit(100);
|
||||
}
|
||||
jspPath = Util.getDeviceType(request)+"/mpage/mbr/DlvylcManagePopupR";
|
||||
} else {
|
||||
if ("N".equals(dlvylcVO.getIsMobile())) { //모바일 여부에 따른 팝업 페이지 유닛 분기
|
||||
dlvylcVO.setPageUnit(3);
|
||||
} else {
|
||||
dlvylcVO.setPageUnit(100);
|
||||
}
|
||||
jspPath = Util.getDeviceType(request)+"/mpage/mbr/DlvylcManageR";
|
||||
}
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//BO에서 API 호출
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrDlvylcListInqire", dlvylcVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
//기존 페이지 유지
|
||||
model.addAttribute("pageIndex", dlvylcVO.getPageIndex());
|
||||
model.addAttribute("formId", dlvylcVO.getFormId());
|
||||
//배송지 관리 팝업 > 콜백 함수 이름 전달
|
||||
if("Y".equals(dlvylcVO.getIsPop())) {
|
||||
model.addAttribute("callbackNm", dlvylcVO.getCallbackNm());
|
||||
}
|
||||
return jspPath;
|
||||
}
|
||||
/**
|
||||
* 배송지 수정 상세 조회
|
||||
* @param dlvylcVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectDlvylcUpdtPopupForm")
|
||||
public String selectDlvylcUpdtPopupForm(HttpServletRequest request, ModelMap model, DlvylcVO dlvylcVO){
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//BO API 호출하여 상세 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm",dlvylcVO),
|
||||
model,
|
||||
"dtlDlvylc"
|
||||
);
|
||||
model.addAttribute("pageIndex",dlvylcVO.getPageIndex());
|
||||
return Util.getDeviceType(request)+"/mpage/mbr/DlvylcUpdtPopupU";
|
||||
}
|
||||
/**
|
||||
* 배송지 수정 상세 조회
|
||||
* @param dlvylcVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectDlvylcUpdtMobilePopupForm")
|
||||
public String selectDlvylcUpdtMobilePopupForm(HttpServletRequest request, ModelMap model, DlvylcVO dlvylcVO){
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm", dlvylcVO),
|
||||
model,
|
||||
"dtlDlvylc"
|
||||
);
|
||||
|
||||
//모델 객체에 상세 조회 및 페이지 인덱스,회원고유번호 담음
|
||||
// model.addAttribute("dtlDlvylc",BoResultMapConverter.convert(new ObjectMapper(), reply.getReply()));
|
||||
model.addAttribute("pageIndex",dlvylcVO.getPageIndex());
|
||||
return Util.getDeviceType(request)+"/mpage/mbr/DlvylcUpdtMobilePopupU";
|
||||
}
|
||||
/**
|
||||
* 배송지 수정
|
||||
* @param dlvylcVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/updateDlvylcUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateDlvylcUpdt(@Validated DlvylcVO dlvylcVO,
|
||||
BindingResult bindingResult){
|
||||
//입력값 정합성 점검결과 처리
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
//휴대폰번호 정합성 체크
|
||||
String mbtlnb = dlvylcVO.getMbtlnb();
|
||||
mbtlnb = mbtlnb.replace("-", "");
|
||||
int mbtlnbLen = mbtlnb.length();
|
||||
if (!(mbtlnbLen >= 8 && mbtlnbLen <= 12)) {
|
||||
throw new WnbtRestException("번호는 8자~12자 입니다.");
|
||||
}
|
||||
|
||||
//도로명 지번 분기처리 하여 vo에 set함
|
||||
if("01".equals(dlvylcVO.getAdresDv())) {
|
||||
dlvylcVO.setRnmAdres(dlvylcVO.getAdres());
|
||||
dlvylcVO.setLnbAdres(null);
|
||||
}else if("02".equals(dlvylcVO.getAdresDv())){
|
||||
dlvylcVO.setLnbAdres(dlvylcVO.getAdres());
|
||||
dlvylcVO.setRnmAdres(null);
|
||||
}
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//BO API 호출 => 배송지 수정
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylcUpdt", dlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 배송지 등록 팝업 이동
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectDlvylcRegistForm")
|
||||
public String selectDlvylcRegistForm(HttpServletRequest request, ModelMap model, DlvylcVO dlvylcVO){
|
||||
model.addAttribute("vo",dlvylcVO);
|
||||
return Util.getDeviceType(request)+"/mpage/mbr/DlvylcRegistPopupC";
|
||||
}
|
||||
/**
|
||||
* 배송지 등록
|
||||
* @param dlvylcVO
|
||||
* @param bindingResult
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/insertDlvylcRegist")
|
||||
public ResponseEntity<WnbtResponse> insertDlvylcRegist(@Validated DlvylcVO dlvylcVO,
|
||||
BindingResult bindingResult){
|
||||
//입력값 정합성 점검결과 처리
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
//휴대폰번호 정합성 체크
|
||||
String mbtlnb = dlvylcVO.getMbtlnb();
|
||||
mbtlnb = mbtlnb.replace("-","");
|
||||
int mbtlnbLen = mbtlnb.length();
|
||||
if(!(mbtlnbLen >= 8 && mbtlnbLen <= 12)){
|
||||
throw new WnbtRestException("번호는 8자~12자 입니다.");
|
||||
}
|
||||
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//등록 jsp에서 넘어온 주소를 도로명 지번 분기처리 하여 vo에 set함
|
||||
if("01".equals(dlvylcVO.getAdresDv())) {
|
||||
dlvylcVO.setRnmAdres(dlvylcVO.getAdres());
|
||||
dlvylcVO.setLnbAdres(null);
|
||||
}else if("02".equals(dlvylcVO.getAdresDv())){
|
||||
dlvylcVO.setLnbAdres(dlvylcVO.getAdres());
|
||||
dlvylcVO.setRnmAdres(null);
|
||||
}
|
||||
//BO API 호출 => 배송지 등록
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBODlvylcRegist", dlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 배송지 삭제
|
||||
* @param dlvylcVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/deleteDlvylcDel")
|
||||
public ResponseEntity<WnbtResponse> deleteDlvylcDel(DlvylcVO dlvylcVO){
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//BO API 호출 => 배송지 삭제
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBODlvylcDel", dlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 기본배송지 수정
|
||||
* @param dlvylcVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/updatedftDlvylcAtUpdt")
|
||||
public ResponseEntity<WnbtResponse> updatedftDlvylcAtUpdt(DlvylcVO dlvylcVO){
|
||||
dlvylcVO.setServerDv("sopmal");
|
||||
//BO API 호출 => 기본배송지 수정
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOdftDlvylcAtUpdt", dlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class DlvylcVO extends AbstractVO{
|
||||
private static final long serialVersionUID = 1L;
|
||||
/** 주소록 고유번호 */
|
||||
private Integer adbkInnb;
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
/**회원구분코드*/
|
||||
private String mbrDvCd;
|
||||
/** 배송지설명내용 */
|
||||
@NotBlank(message = "배송지 설명")
|
||||
private String dlvylcDcCn;
|
||||
/** 받는사람명 */
|
||||
@NotBlank(message = "받으시는 분")
|
||||
private String recpntNm;
|
||||
/** 전화번호 */
|
||||
//private String telnb;
|
||||
/** 휴대폰번호 */
|
||||
@NotBlank(message = "휴대전화번호")
|
||||
private String mbtlnb;
|
||||
private String telnb;
|
||||
/** 우편번호 */
|
||||
@NotBlank(message = "우편번호")
|
||||
@Length(min=1, max=5)
|
||||
private String zip;
|
||||
/** 도로명,지번 구분 */
|
||||
private String adresDv;
|
||||
/** 도로명 or 지번 주소 */
|
||||
private String adres;
|
||||
/** 지번주소 */
|
||||
private String lnbAdres = "";
|
||||
/** 도로명주소 */
|
||||
private String rnmAdres = "";
|
||||
/** 상세주소 */
|
||||
@NotBlank(message = "상세주소")
|
||||
private String dtlAdres;
|
||||
/** 기본배송지여부 */
|
||||
private String dftDlvylcAt = "N";
|
||||
/** 최근배송지여부 */
|
||||
private String recentDlvylcAt;
|
||||
/** popUp 여부 확인 */
|
||||
private String isPop;
|
||||
/*모바일 여부 확인*/
|
||||
private String isMobile;
|
||||
/**오더링 방법 */
|
||||
private String ordering;
|
||||
/**콜백함수 이름 */
|
||||
private String callbackNm;
|
||||
/*서버구분*/
|
||||
private String serverDv;
|
||||
/** formId */
|
||||
private String formId;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyMbrEmailChngVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/*id*/
|
||||
@NotBlank(message = "아이디")
|
||||
private String id;
|
||||
|
||||
/*도메인*/
|
||||
@NotBlank(message = "도메인")
|
||||
private String domain;
|
||||
|
||||
/*이메일주소*/
|
||||
private String email;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyMbrIdChngVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
||||
// fm_member
|
||||
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 회원유형코드 */
|
||||
private String mbrTyCd;
|
||||
|
||||
|
||||
|
||||
/** 회원비밀번호 */
|
||||
@NotBlank(message = "신규 아이디")
|
||||
private String mbrId;
|
||||
|
||||
/** 변경할 비밀번호 */
|
||||
@NotBlank(message = "신규 비밀번호")
|
||||
private String newPassword;
|
||||
|
||||
/** 변경할 비밀번호 확인 비밀번호 */
|
||||
private String checkPassword;
|
||||
|
||||
/** 비밀번호변경일자 */
|
||||
private String passwordChngDe;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyMbrPwdChngVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
||||
// fm_member
|
||||
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 회원유형코드 */
|
||||
private String mbrTyCd;
|
||||
|
||||
|
||||
|
||||
/** 회원비밀번호 */
|
||||
@NotBlank(message = "기존 비밀번호")
|
||||
private String mbrPassword;
|
||||
|
||||
/** 변경할 비밀번호 */
|
||||
@NotBlank(message = "변경할 비밀번호")
|
||||
private String newPassword;
|
||||
|
||||
/** 변경할 비밀번호 확인 비밀번호 */
|
||||
private String checkPassword;
|
||||
|
||||
/** 비밀번호변경일자 */
|
||||
private String passwordChngDe;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyMbrVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
||||
// fm_member
|
||||
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 회원등급 */
|
||||
private String mbrGradInnb;
|
||||
|
||||
/** 유입경로번호 */
|
||||
private String inflowCoursNb;
|
||||
|
||||
/** 가입환경코드 */
|
||||
private String sbscrbEnvrnCd;
|
||||
|
||||
/** 회원유형코드 */
|
||||
private String mbrTyCd;
|
||||
|
||||
/** 회원ID */
|
||||
private String mbrid;
|
||||
|
||||
/** 회원비밀번호 */
|
||||
private String mbrPassword;
|
||||
|
||||
/** 변결할 비밀번호 */
|
||||
private String newPassword;
|
||||
|
||||
/** 비밀번호변경일자 */
|
||||
private String passwordChngDe;
|
||||
|
||||
/** 회원명 */
|
||||
private String mbrNm;
|
||||
|
||||
/** 이메일 */
|
||||
private String email;
|
||||
|
||||
/** 이메일수신여부 */
|
||||
private String emailRecptnAt;
|
||||
|
||||
/** 휴대폰 번호 */
|
||||
private String mbtlnb;
|
||||
|
||||
/** 휴대폰 번호 변경 여부*/
|
||||
private String mbtlnbChngAt;
|
||||
|
||||
/** SMS수신여부 */
|
||||
private String smsRecptnAt;
|
||||
|
||||
/** 전화번호 */
|
||||
private String telnb;
|
||||
|
||||
/** 우편번호 */
|
||||
@NotBlank(message = "우편번호")
|
||||
private String zip;
|
||||
|
||||
/** 도로명; 지번 */
|
||||
private String adresDv;
|
||||
|
||||
/** 지번주소 */
|
||||
private String lnbAdres;
|
||||
|
||||
/** 도로명주소 */
|
||||
// @NotBlank(message = "도로명주소")
|
||||
private String rnmAdres;
|
||||
|
||||
/** 상세주소 */
|
||||
@NotBlank(message = "상세주소")
|
||||
private String dtlAdres;
|
||||
|
||||
/** 성별 */
|
||||
private String sexdstn;
|
||||
|
||||
/** 생년월일 */
|
||||
@NotBlank(message = "생년월일")
|
||||
private String brthDe;
|
||||
|
||||
/** 상태 */
|
||||
private String sttus;
|
||||
|
||||
/** 상태 */
|
||||
private String unitySvcCnsOffrInfo;
|
||||
|
||||
/** 통합서비스정보제공동의 */
|
||||
private String indvdlInfoValidPd;
|
||||
|
||||
/** 광고수신동의변경일시 */
|
||||
private String advrtsRecptnAgreUpdtDt;
|
||||
|
||||
/** 광고수신동의전송일시 */
|
||||
private String advrtsRecptnAgreTrnsmisDt;
|
||||
|
||||
/** GCONE 가입여부 */
|
||||
private String gconeSbscrbAt;
|
||||
|
||||
/** 관리자메모 */
|
||||
private String mngrMemo;
|
||||
|
||||
/** 관리자로그 */
|
||||
private String mngrLog;
|
||||
|
||||
/** 주문번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
// 외부연동 회원 ( kakao; naver; pos )
|
||||
/** 외부연동순번 */
|
||||
private Integer extrlIntrlckSnb;
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 외부연동구분코드 */
|
||||
private String extrlIntrlckDvCd;
|
||||
|
||||
/** 외부연동ID */
|
||||
private String extrlIntrlckId;
|
||||
|
||||
/** 가입구분코드 */
|
||||
private String sbscrbDvCd;
|
||||
|
||||
/** 외부연동여부 */
|
||||
private String extrlIntrlckAt;
|
||||
|
||||
|
||||
|
||||
// fm_member_join
|
||||
|
||||
|
||||
/** 마케팅 수신 동의 여부 */
|
||||
private String marktRecptnAgreAt;
|
||||
/** 마케팅 발신 동의 여부 */
|
||||
private String beforeMarktRecptnAgreAt;
|
||||
|
||||
// 회원 탈퇴 fm_member_withdrawal
|
||||
|
||||
/**회원 고유번호 배열*/
|
||||
private String[] mbrArr;
|
||||
/**탈퇴사유*/
|
||||
private String secsnResn;
|
||||
/**등록아이피*/
|
||||
private String registIp;
|
||||
|
||||
/**메모*/
|
||||
private String memo;
|
||||
/** 회원 탈퇴 고유번호 */
|
||||
private Integer withdrawalMbrInnb;
|
||||
|
||||
/*서버구분*/
|
||||
private String serverDv;
|
||||
/*수정 행위 구분*/
|
||||
private String updtDv;
|
||||
/*모바일 pc 구분*/
|
||||
private String utilDv;
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class WithdrawalVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
* 회원 고유번호 배열
|
||||
*/
|
||||
private String[] mbrarr;
|
||||
/**
|
||||
* 회원고유번호
|
||||
*/
|
||||
private String mbrInnb;
|
||||
/*회원구분코드 배열*/
|
||||
private List<String> mbrDvCdArr;
|
||||
/**
|
||||
* 회원구분코드
|
||||
*/
|
||||
private String mbrDvCd;
|
||||
/**
|
||||
* 회원명
|
||||
*/
|
||||
private String mbrNm;
|
||||
/**
|
||||
* 이메일
|
||||
*/
|
||||
private String email;
|
||||
/**
|
||||
* 휴대폰번호
|
||||
*/
|
||||
private String mbtlnb;
|
||||
/**
|
||||
* 전화번호
|
||||
*/
|
||||
private String telnb;
|
||||
/**
|
||||
* 우편번호
|
||||
*/
|
||||
private String zip;
|
||||
/**
|
||||
* 도로명, 지번
|
||||
*/
|
||||
private String adresDv;
|
||||
/**
|
||||
* 도로명주소
|
||||
*/
|
||||
private String rnmAdres;
|
||||
/**
|
||||
* 상세주소
|
||||
*/
|
||||
private String dtlAdres;
|
||||
/**
|
||||
* 성별
|
||||
*/
|
||||
private String sexdstn;
|
||||
/**
|
||||
* 일자는 01로 입력
|
||||
*/
|
||||
private String brthDe;
|
||||
/**
|
||||
* 탈퇴사유
|
||||
*/
|
||||
@NotBlank(message = "탈퇴 사유")
|
||||
private String secsnResn;
|
||||
/**
|
||||
* 등록아이피
|
||||
*/
|
||||
private String registIp;
|
||||
/*서버구분*/
|
||||
private String serverDv;
|
||||
}
|
||||
@@ -0,0 +1,886 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.controller;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.mpage.ordr.vo.*;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.cookie.CookieUtil;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.Cookie;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.logging.log4j.util.Base64Util;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/mpage/ordr")
|
||||
@Slf4j
|
||||
public class MyOrdrController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
|
||||
/* ####################################
|
||||
사용자 > 마이페이지 > MY쇼핑 > 주문/배송조회 시작
|
||||
#################################### */
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 마이페이지 상단 내 정보
|
||||
* @return OrdrDlvyListR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMpageInfoRefreshInqire")
|
||||
public String selectMpageInfoRefreshInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception {
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO));
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
// return Util.getDeviceType(request) + "/mpage/MypageRight";
|
||||
return "comm/mpage/MypageRight";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문/배송 목록 조회 화면 이동
|
||||
* @return OrdrDlvyListR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrOrdrListInqire")
|
||||
public String selectMbrOrdrListInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception {
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO));
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/OrdrDlvyListR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문/배송 목록 조회
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrOrdrListInqireAjax")
|
||||
public String selectMbrOrdrListInqireAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
return "sopmal/mpage/ordr/OrdrDlvyListRList";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 마이페이지 > 주문/배송 목록 조회
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrOrdrListInqireMapge")
|
||||
public String selectMbrOrdrListInqireMapge(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
return "sopmal/mpage/ordr/OrdrDlvyListMpageRList";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문/배송 목록 조회 (스크롤)
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrOrdrListInqireScrollAjax")
|
||||
public ResponseEntity<WnbtResponse> selectMbrOrdrListInqireScrollAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrListInqireAjax", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문 취소 상태 수정
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateCanclOrdr")
|
||||
public ResponseEntity<WnbtResponse> updateCanclOrdr(MyOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException {
|
||||
|
||||
/**
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO)
|
||||
);
|
||||
|
||||
if ("1".equals(resultMap.get("status"))) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message")));
|
||||
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build();
|
||||
*/
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문 기준 구매 확정
|
||||
* @param ordrVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updatePurchsDcsnByOrdr")
|
||||
public ResponseEntity<WnbtResponse> updateBOPurchsDcsnByOrdr(MyOrdrVO ordrVO) throws JsonProcessingException {
|
||||
|
||||
/**
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOPurchsDcsnByOrdr", ordrVO)
|
||||
);
|
||||
|
||||
if ("1".equals(resultMap.get("status"))) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message")));
|
||||
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build();
|
||||
*/
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOPurchsDcsnByOrdr", ordrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 상품 기준 구매 확정
|
||||
* @param ordrVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updatePurchsDcsnByItem")
|
||||
public ResponseEntity<WnbtResponse> updatePurchsDcsnByItem(MyOrdrVO ordrVO) throws JsonProcessingException {
|
||||
|
||||
/**
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO)
|
||||
);
|
||||
|
||||
if ("1".equals(resultMap.get("status"))) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message")));
|
||||
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build();
|
||||
*/
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 주문/배송 상세 조회 화면 이동
|
||||
* @return OrdrDtlR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrOrdrDtlInqire")
|
||||
public String selectOrdrDtlInqire(HttpServletRequest request, ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws Exception {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrOrdrDtlInqire", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrDlvyVO));
|
||||
model.addAttribute("vo", ordrDlvyVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrDlvyVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/OrdrDtlR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 배송지 수정
|
||||
* @param param
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateDlvylc")
|
||||
public ResponseEntity<WnbtResponse> updateDlvylc(@RequestBody HashMap<String, Object> param) throws JsonProcessingException {
|
||||
|
||||
/**
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", param)
|
||||
);
|
||||
|
||||
if ("1".equals(resultMap.get("status"))) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message")));
|
||||
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build();
|
||||
|
||||
// return ResponseEntity.status(HttpStatus.OK).body(response);
|
||||
*/
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", param),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 결제취소 팝업 화면 이동
|
||||
* @return OrdrSetleCanclPopup.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectSetleCanclPopupForm")
|
||||
public String selectSetleCanclPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
model.addAttribute("adscript", Base64Util.encode(objectMapper.writeValueAsString(model.getAttribute("data"))));
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/OrdrSetleCanclPopup";
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 결제취소 등록
|
||||
* @param param
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/insertSetleCanclRegist")
|
||||
public ResponseEntity<WnbtResponse> registSetleCancl(@RequestBody HashMap<String, Object> param) throws JsonProcessingException {
|
||||
|
||||
/**
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param)
|
||||
);
|
||||
|
||||
if ("1".equals(resultMap.get("status"))) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
errorList.add(ValidateResultConverter.setErrorMap("error", (String) resultMap.get("message")));
|
||||
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
|
||||
WnbtResponse response = WnbtResponse.builder().resBody(new WnbtResponseBody(new ObjectMapper().writeValueAsString(resultMap))).build();
|
||||
|
||||
*/
|
||||
|
||||
// return ResponseEntity.status(HttpStatus.OK).body(response);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/* ####################################
|
||||
사용자 > 마이페이지 > MY쇼핑 > 주문/배송조회 종료
|
||||
#################################### */
|
||||
|
||||
/* ####################################
|
||||
사용자 > 마이페이지 > MY쇼핑 > 개인결제 시작
|
||||
#################################### */
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 개인결제 > 개인결제 목록 화면 이동
|
||||
* @return IndvdlSetleR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectIndvdlSetleInqire")
|
||||
public String selectIndvdlSetleInqire(HttpServletRequest request, ModelMap model, MyIndvdlSetleVO indvdlSetleVO) {
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", indvdlSetleVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/IndvdlSetleR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 개인결제 > 개인결제 목록 조회
|
||||
* @param indvdlSetleVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectIndvdlSetleInqireAjax")
|
||||
public String selectIndvdlSetleInqireAjax(HttpServletRequest request, ModelMap model, MyIndvdlSetleVO indvdlSetleVO) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleInqireAjax", indvdlSetleVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/IndvdlSetleRList";
|
||||
}
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 개인결제 > 개인결제 목록 조회 (스크롤)
|
||||
* @param indvdlSetleVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectIndvdlSetleInqireScrollAjax")
|
||||
public ResponseEntity<WnbtResponse> selectIndvdlSetleInqireScrollAjax(ModelMap model, MyIndvdlSetleVO indvdlSetleVO) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOIndvdlSetleInqireAjax", indvdlSetleVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/* ####################################
|
||||
사용자 > 마이페이지 > MY쇼핑 > 개인결제 종료
|
||||
#################################### */
|
||||
|
||||
/**
|
||||
* 배송 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectDlvyInqire")
|
||||
public String selectDlvyInqire(MyDlivyVO dlivyVO, ModelMap model, HttpServletRequest request){
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
// return "sopmal/mpage/ordr/DlvyInqireR";
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 반품 취소 환불 조회 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectRtngudCanclRefndForm")
|
||||
public String selectRtngudCanclRefndForm(MyRefundVO refundVO, ModelMap model, HttpServletRequest request) throws JsonProcessingException {
|
||||
refundVO.setServerDv("sopmal");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndListInqireForm", refundVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", refundVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", refundVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/RtngudCanclRefndListFormR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 반품 취소 환불 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectRtngudCanclRefndInqire")
|
||||
public String selectRtngudCanclRefndInqire(MyRefundVO refundVO, ModelMap model, HttpServletRequest request){
|
||||
refundVO.setServerDv("sopmal");
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBOMbrRefundListInqire", refundVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", refundVO);
|
||||
|
||||
// return "sopmal/mpage/ordr/RtngudCanclRefndListR";
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/RtngudCanclRefndListR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 반품/환불 목록 조회 > 스크롤
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectRtngudCanclRefndScrolInqire")
|
||||
public ResponseEntity<?> selectRtngudCanclRefndScrolInqire(MyRefundVO refundVO) {
|
||||
refundVO.setServerDv("sopmal");
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBOMbrRefundListInqire", refundVO),
|
||||
result -> ResponseEntity.status(HttpStatus.OK).body(result)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 반품 취소 환불 상세 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectRtngudCanclRefndDtlInqire")
|
||||
public String selectRtngudCanclRefndDtlInqire(MyRefundVO refundVO, ModelMap model, HttpServletRequest request){
|
||||
refundVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/selectBORtngudRefndDtlInqire", refundVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", refundVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", refundVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/RtngudCanclRefndDtlR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 반품 취소 환불 정보 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateRtngudCanclRefndUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateRtngudCanclRefndUpdt(MyRefundVO refundVO, ModelMap model){
|
||||
log.debug("ordrVO is {}", refundVO);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/updateBOOrderReUpdt", refundVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 주문/배송조회 > 반품/환불 신청 팝업 이동
|
||||
* @return
|
||||
* @author 추지훈
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectRetrunRegistPopupForm")
|
||||
public String selectRetrunRegistPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/RefundRegistPopupC";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 선물함 목록 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGiftListInqireForm")
|
||||
public String selectGiftListInqireForm(MyOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request) throws JsonProcessingException {
|
||||
log.debug("선물함 이동 ordrShippingVO is {}", ordrShippingVO);
|
||||
model.addAttribute("paramVO", new ObjectMapper().writeValueAsString(ordrShippingVO));
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireForm", ordrShippingVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
// model.addAttribute("paramVO", ordrShippingVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrShippingVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/GiftListFormR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 선물함 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGiftListInqire")
|
||||
public String selectGiftListInqire(MyOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request){
|
||||
log.debug("ordrShippingVO is {}", ordrShippingVO);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireAjax", ordrShippingVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/GiftListR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이 페이지 > MY쇼핑 > 선물함 > 선물함 목록 조회 (스크롤)
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMbrGfitListInqireScrollAjax")
|
||||
public ResponseEntity<WnbtResponse> selectMbrGfitListInqireScrollAjax(ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftOrdrListInqireAjax", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 선물함 > 선물 조회 팝업
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGiftOrdrSittnPopupForm")
|
||||
public String selectGiftOrdrSittnPopupForm(MyOrdrShippingVO ordrShippingVO, ModelMap model, HttpServletRequest request){
|
||||
log.debug("ordrShippingVO is {}", ordrShippingVO);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOUserGiftShippSittnPopup", ordrShippingVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/GiftOrdrSittnPopupR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 위시리스트 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectWslistInqireForm")
|
||||
public String selectWslistInqireForm(MyWishVO wishVO, ModelMap model, HttpServletRequest request){
|
||||
wishVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqireForm", wishVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", wishVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", wishVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/WslistInqireRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 위시리스트 추가
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/insertWslistGoods")
|
||||
public ResponseEntity<WnbtResponse> insertWslistGoods(MyWishVO wishVO, HttpServletRequest request){
|
||||
|
||||
|
||||
String agentId = "";
|
||||
|
||||
Cookie[] cookies = request.getCookies();
|
||||
|
||||
if(cookies != null){
|
||||
if (CookieUtil.hasAgentCookie(request.getCookies())) {
|
||||
agentId = CookieUtil.getAgentCookieValue(request.getCookies());
|
||||
wishVO.setAgentId(agentId);
|
||||
}
|
||||
}
|
||||
|
||||
wishVO.setIp(request.getAttribute("LoggingClientIp").toString());
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/insertBOWslistGoods", wishVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 위시리스트 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectWslistInqire")
|
||||
public String selectWslistInqire(MyWishVO wishVO, ModelMap model, HttpServletRequest request){
|
||||
wishVO.setServerDv("sopmal");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", wishVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", wishVO);
|
||||
|
||||
// return "sopmal/mpage/ordr/WslistInqireR";
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/WslistInqireR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마이페이지 > 위시리스트 목록 조회 > 스크롤
|
||||
* @param mlgVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectWslistScrolInqire")
|
||||
public ResponseEntity<?> selectWslistScrolInqire(MyWishVO wishVO) {
|
||||
wishVO.setServerDv("sopmal");
|
||||
|
||||
return responseHandler.handleMapResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOWslistInqire", wishVO),
|
||||
result -> ResponseEntity.status(HttpStatus.OK).body(result)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상품 옵션 선택 팝업
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectGoodsOptnSlcPopup")
|
||||
public String selectGoodsOptnSlcPopup(@RequestBody MyWishVO wishVO, ModelMap model, HttpServletRequest request){
|
||||
// ReplyFromResrc reply = sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", wishVO);
|
||||
// model.addAttribute("resultMap", BoResultMapConverter.convert(new ObjectMapper(), reply.getReply()));
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/goods/goods/selectBORelateGoodsPopup", wishVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request)+"/mpage/ordr/GoodsSlcPopupR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 위시리스트 상품 삭제
|
||||
* @param wishVO
|
||||
* @param bindingResult
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/deleteWslistGoodsDel" , method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> deleteWslistGoodsDel(@Validated MyWishVO wishVO, BindingResult bindingResult ){
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/deleteBOWslistGoodsDel", wishVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 정기 배송 관리 목록 폼 이동
|
||||
* @param ordrShippingVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectFdrmDlvyInqireForm")
|
||||
public String selectFdrmDlvyInqireForm(MyOrdrShippingVO ordrShippingVO, ModelMap model){
|
||||
log.debug("wishVO is {}", ordrShippingVO);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyForm", ordrShippingVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("paramVO", ordrShippingVO);
|
||||
|
||||
// 마이페이지 > 상단 회원 정보 ( 등금, 이름, 마일리지, 쿠폰, 위시리스트, 배송중, 등급산정기준 )
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMpageInfoInqire", ordrShippingVO),
|
||||
model,
|
||||
"mpageResultMap"
|
||||
);
|
||||
|
||||
return "sopmal/mpage/ordr/FdrmDlvyFormR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 정기 배송 관리 목록 조회
|
||||
* @param ordrShippingVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectFdrmDlvyInqire")
|
||||
public String selectFdrmDlvyInqire(MyOrdrShippingVO ordrShippingVO, ModelMap model){
|
||||
log.debug("wishVO is {}", ordrShippingVO);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyInqire", ordrShippingVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "sopmal/mpage/ordr/FdrmDlvyR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 정기 배송 > 배송 주기 변경 팝업
|
||||
* @param ordrShippingVO
|
||||
* @param model
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectFdrmDlvyCycleChngForm")
|
||||
public String selectFdrmDlvyCycleChngForm(MyOrdrShippingVO ordrShippingVO, ModelMap model){
|
||||
log.debug("wishVO is {}", ordrShippingVO);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOFdrmDlvyCycleChngForm", ordrShippingVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "sopmal/mpage/ordr/FdrmDlvyCycleChngU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 정기 배송 > 배송 해지
|
||||
* @param ordrShippingVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateFdrmDlvyCycleChng ")
|
||||
public ResponseEntity<WnbtResponse> updateFdrmDlvyCycleChng (MyOrdrShippingVO ordrShippingVO){
|
||||
log.debug("ordrShippingVO is {}", ordrShippingVO);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOFdrmDlvyCycleChng", ordrShippingVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 현금영수증 수정 발급
|
||||
*
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/updateCashReceipt")
|
||||
public ResponseEntity<WnbtResponse> updateCashReceipt(MyOrdrVO vo) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateCashReceipt", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 현금영수증 정보수정
|
||||
*
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/updateCashReceiptInfo")
|
||||
public ResponseEntity<WnbtResponse> updateCashReceiptInfo(MyOrdrVO vo) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateBOCshRcipt", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyDlivyVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**출고고유번호*/
|
||||
private String dlivyInnb;
|
||||
/**주문고유번호*/
|
||||
private String ordrInnb;
|
||||
/**쇼핑몰코드*/
|
||||
private String sopmalCd;
|
||||
/**주문배송고유번호*/
|
||||
private String ordrDlvyInnb;
|
||||
/**출고코드번호*/
|
||||
private String dlivyCdNb;
|
||||
/**출고준비(45), 출고완료(55), 배송중(65), 배송완료(75)*/
|
||||
private String dlivySttusCd;
|
||||
/**상태변경일시*/
|
||||
private String sttusUpdtDt;
|
||||
/**택배사코드*/
|
||||
private String hdrycpnCd;
|
||||
/**택배사코드 명*/
|
||||
private String hdrycpnNm;
|
||||
/**송장번호*/
|
||||
private String invcnb;
|
||||
/**출고일시*/
|
||||
private String dlivyDt;
|
||||
/**출고완료일시*/
|
||||
private String dlivyComptDt;
|
||||
/**배송완료일시*/
|
||||
private String dlvyComptDt;
|
||||
/**배송그룹코드*/
|
||||
private String dlvyGroupCd;
|
||||
/**관리자 고유번호*/
|
||||
private String mngrInnb;
|
||||
|
||||
/** 중요주문여부 */
|
||||
private String imprtncOrdrAt;
|
||||
|
||||
/**배송주기*/
|
||||
private String dlvyCycleCd;
|
||||
|
||||
/** 구매확정구분코드 */
|
||||
private String purchsDcsnDvCd;
|
||||
|
||||
|
||||
// 출고 상품
|
||||
|
||||
/** 출고상품고유번호 */
|
||||
private String dlivyGoodsInnb;
|
||||
|
||||
/** 주문상품옵션고유번호 */
|
||||
private String ordrGoodsOptnInnb;
|
||||
|
||||
/** 옵션유형 */
|
||||
private String optnTy;
|
||||
|
||||
|
||||
|
||||
|
||||
// 배송그룹 / 밥법 변경
|
||||
|
||||
/** 배송 그룹 코드 */
|
||||
private String DlvyGroupCd;
|
||||
|
||||
|
||||
// 스위트래커 배송 추적
|
||||
|
||||
/** 주문배송추적고유번호 */
|
||||
private Integer ordrDlvyTraceInnb;
|
||||
|
||||
/** 스윗트래커송장코드 */
|
||||
private String stInvcCd;
|
||||
|
||||
/** 상세내용 - 배송 추적 내용 json */
|
||||
private String dtlCn;
|
||||
|
||||
|
||||
// 배송 추적 : 배송정보
|
||||
|
||||
/** 우편번호 */
|
||||
private String dlvylcZip;
|
||||
/** 주소 구분 코드 */
|
||||
private String dlvylcAdresDvCd;
|
||||
/** 도로명 주소 */
|
||||
private String dlvylcRnmAdres;
|
||||
/** 지번 주소 */
|
||||
private String dlvylcLnbAdres;
|
||||
/** 상세 주소 */
|
||||
private String dlvylcAdresDtl;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyIndvdlSetleVO extends AbstractVO {
|
||||
private String sopmalCd; // 쇼핑몰코드
|
||||
|
||||
private String ordrInnb; // 주문번호
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyOrdrDlvyVO extends AbstractVO {
|
||||
private String sopmalCd; // 쇼핑몰코드
|
||||
|
||||
private String srchwrd; // 검색어
|
||||
|
||||
private String bgnDt; // 검색 시작 일자
|
||||
|
||||
private String endDt; // 검색어 종료 일자
|
||||
|
||||
private String dateRange; // 기간
|
||||
|
||||
private String ordrInnb; // 주문번호
|
||||
|
||||
private String ordrDlvyInnb; // 주문배송고유번호
|
||||
|
||||
private String serverDv; // 서버 구분
|
||||
|
||||
private String mbtlnb; // 주문자 휴대폰번호
|
||||
|
||||
private String mpageAt; // 마이페이지 여부
|
||||
|
||||
private String[] cookieValArr;//쿠키
|
||||
|
||||
/** 현재 주문 상태 */
|
||||
private String currOrdrSttusCd;
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyOrdrShippingVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
public MyOrdrShippingVO() {}
|
||||
|
||||
public MyOrdrShippingVO(String sopmalCd, String ordrInnb) {
|
||||
this.sopmalCd = sopmalCd;
|
||||
this.ordrInnb = ordrInnb;
|
||||
}
|
||||
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
/** 주문배송고유번호 */
|
||||
private String ordrDlvyInnb;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 받는자명 */
|
||||
private String recpntNm;
|
||||
|
||||
/** 받는자전화번호 */
|
||||
private String recpntTelnb;
|
||||
|
||||
/** 받는자휴대폰번호 */
|
||||
private String recpntMbtlnb;
|
||||
|
||||
/** 배송지우편번호 */
|
||||
private String dlvylcZip;
|
||||
|
||||
/** 지번(zibun), 도로명(street) */
|
||||
private String dlvylcAdresDvCd;
|
||||
|
||||
/** 배송지지번주소 */
|
||||
private String dlvylcLnbAdres;
|
||||
|
||||
/** 배송지도로명주소 */
|
||||
private String dlvylcRnmAdres;
|
||||
|
||||
/** 배송지주소상세 */
|
||||
private String dlvylcAdresDtl;
|
||||
|
||||
/** 추적배송지주소 */
|
||||
private String traceDlvylcAdres;
|
||||
|
||||
/** 배송지그룹번호 */
|
||||
private int dlvylcGroupNb;
|
||||
|
||||
/** 택배, POS주문, 기타(프레쉬배송?) */
|
||||
private String dlvyMthCd;
|
||||
|
||||
/** 반품배송비금액 */
|
||||
private int rtngudDlvyAmtAmt;
|
||||
|
||||
/** 관리자무료배송비사용여부 */
|
||||
private String mngrFreeDlvyAmtUseAt;
|
||||
|
||||
/** 실배송금액 */
|
||||
private int rlDlvyAmt;
|
||||
|
||||
/** 무료배송조건금액 */
|
||||
private int freeDlvyCndAmt;
|
||||
|
||||
/** 기본배송비금액 */
|
||||
private int dftDlvyAmtAmt;
|
||||
|
||||
/** 예약발송여부 */
|
||||
private String resveSndngAt;
|
||||
|
||||
/** 예약발송구분코드 */
|
||||
private String resveSndngDvCd;
|
||||
|
||||
/** 예약발송일자 */
|
||||
private String resveSndngDe;
|
||||
|
||||
/** 배송메시지내용 */
|
||||
private String dlvyMssageCn;
|
||||
|
||||
/** 선물메시지내용 */
|
||||
private String giftMssageCn;
|
||||
|
||||
/** 관리자 고유번호 */
|
||||
private Integer mngrInnb;
|
||||
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
|
||||
/** 사용여부 */
|
||||
// private String useAt;
|
||||
|
||||
/** 오더링 방법 */
|
||||
private String ordering;
|
||||
|
||||
/** 송장번호 */
|
||||
private String invcnb;
|
||||
|
||||
/** 배송주기 코드 */
|
||||
private String dlvyCycleCd;
|
||||
|
||||
|
||||
|
||||
|
||||
// 검색
|
||||
|
||||
|
||||
private String srchwrd; // 검색어
|
||||
|
||||
private String bgnDt; // 검색 시작 일자
|
||||
|
||||
private String endDt; // 검색어 종료 일자
|
||||
|
||||
private String dateRange; // 기간
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyOrdrVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
/** 주문상품고유번호 */
|
||||
private String ordrGoodsInnb;
|
||||
|
||||
/** 주문상품옵션고유번호 */
|
||||
private String ordrGoodsOptnInnb;
|
||||
|
||||
/** 주문배송 고유번호 */
|
||||
private String ordrDlvyInnb;
|
||||
|
||||
/** 옵션 구분 */
|
||||
private String optnTy;
|
||||
|
||||
/** 인증번호 */
|
||||
private String crtnb;
|
||||
|
||||
|
||||
/** 발급대상구분코드 개인(01), 사업자(02) */
|
||||
private String issuTrgetDvCd;
|
||||
|
||||
/** 주문자명 */
|
||||
private String ordrrNm;
|
||||
|
||||
/** 주문자이메일주소 */
|
||||
private String ordrrEmail;
|
||||
|
||||
/** 매출증빙고유번호 */
|
||||
private String selngPrufInnb;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyRefundVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**상세 내용*/
|
||||
public String dtlCn;
|
||||
/**주문 배송 추적 고유번호*/
|
||||
public String ordrDlvyTraceInnb;
|
||||
/**쇼핑몰 코드*/
|
||||
public String sopmalCd;
|
||||
/**검색어*/
|
||||
public String srchwrd;
|
||||
/**검색구분*/
|
||||
public String srchDv;
|
||||
/**검색시작일*/
|
||||
public String bgnDt;
|
||||
/**검색종료일*/
|
||||
public String endDt;
|
||||
//날짜 검색 구분
|
||||
private String srchDtDv;
|
||||
|
||||
//** 반품처리상태 */
|
||||
private String[] returnProcsStuusCd;
|
||||
//** 환불처리상태 */
|
||||
private String[] refundProcsSttusCd;
|
||||
|
||||
|
||||
/** 회원 고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
|
||||
|
||||
//** 회수방법(반품) */
|
||||
private String srchReturnMthCd;
|
||||
|
||||
|
||||
|
||||
/** 반품환불 고유번호 */
|
||||
private String orderReInnb;
|
||||
/*주문고유번호*/
|
||||
private String ordrInnb;
|
||||
/*환불신청일시*/
|
||||
private String refundReqstDt;
|
||||
/*환불완료일시*/
|
||||
private String refundComptDt;
|
||||
/*신청(request), 처리중(ing), 완료(complete)*/
|
||||
|
||||
private String refundTyCd;
|
||||
/*전체취소(full), 부분취소(partial)*/
|
||||
private String refundScopeCd;
|
||||
/*환불사유내용*/
|
||||
private String refundResnCn;
|
||||
/*계좌이체(account), 무통장(bank), 신용카드(card), 수동(manual), ?(payco_coupon), 포스기기(pos)*/
|
||||
private String refundMthCd;
|
||||
/*환불계좌은행명*/
|
||||
private String refundAcntBnnkNm;
|
||||
/*환불계좌예금주명*/
|
||||
private String refundAcntDpstrNm;
|
||||
/*환불계좌번호*/
|
||||
private String refundAcntnb;
|
||||
/*환불금액*/
|
||||
private String refundAmt;
|
||||
/*환불적립금액*/
|
||||
private Integer refundAccmlmnyAmt;
|
||||
/*배송비환불총금액*/
|
||||
private Integer dlvyAmtTotRefundAmt;
|
||||
/*쿠폰할인보정금액*/
|
||||
private Integer coupDscntRevisnAmt;
|
||||
/*적립금보정금액*/
|
||||
private Integer accmlmnyRevisnAmt;
|
||||
/*에누리보정금액*/
|
||||
private Integer enuriRevisnAmt;
|
||||
/*적립금유효일자*/
|
||||
private String accmlmnyValidDe;
|
||||
/*다운로드쿠폰 고유번호*/
|
||||
private String dwldCouponInnb;
|
||||
/*상태메모내용*/
|
||||
private String sttusMemoCn;
|
||||
/*관리자메모내용*/
|
||||
private String mngrMemoCn;
|
||||
/*관리자 고유번호*/
|
||||
private String mngrInnb;
|
||||
/*스마트쇼핑환불신청일시*/
|
||||
private String smrtShopngRefndReqstDt;
|
||||
/*스마트쇼핑환불완료일시*/
|
||||
private String smrtShopngRefndComptDt;
|
||||
/*cancel_done, refund_request*/
|
||||
private String smrtShopngRefndProcsSttusCd;
|
||||
/*스마트쇼핑클레임발생금액*/
|
||||
private Integer smrtShopngClaimOccrrncAmt;
|
||||
/*스마트쇼핑초도배송비금액*/
|
||||
private Integer smrtShopngFrsttmeDlvyAmtAmt;
|
||||
/*반품환불보류상품번호내용*/
|
||||
private String returnRefndDferGoodsNbCn;
|
||||
/*사용여부*/
|
||||
private String useAt;
|
||||
/*처리대상자 구분*/
|
||||
private String procsTargetDv;
|
||||
/**신청(request), 완료(complete), 철회(retraction)*/
|
||||
private String returnProcsSttusCd;
|
||||
/**반품사유코드*/
|
||||
private String returnResnCd;
|
||||
/**고객-단순변심,고객-오주문,본사-배송지연,본사-상품불량,본사-상품파손,본사-상품품절,본사-오배송*/
|
||||
private String returnDtlResnCd;
|
||||
/**반품사유내용*/
|
||||
private String returnResnCn;
|
||||
/**고객이배송(user),상점이회수(shop)*/
|
||||
private String returnMthCd;
|
||||
/** 반품고객전화번호 */
|
||||
private String returnCstmrTelnb;
|
||||
/** 반품고객휴대폰번호 */
|
||||
private String returnCstmrMbtlnb;
|
||||
/** 반품배송비금액 */
|
||||
private String returnDlvyAmt;
|
||||
/** company,provider */
|
||||
private String returnDlvyAmtRecptTrgetCd;
|
||||
/**구매자(buyer), 판매자(seller)*/
|
||||
private String returnDlvyRspnsblCd;
|
||||
/**직접 송금(A), 환불금액에서 차감(M), 택배상자 동봉(D)*/
|
||||
private String returnDlvyPymntTyCd;
|
||||
/**반품배송비입금자명*/
|
||||
private String returnDlvyAmtRcpmnyerNm;
|
||||
/**반품배송비입금계좌번호*/
|
||||
private String returnDlvyAmtRcpmnyAcntnb;
|
||||
/**회수지우편번호*/
|
||||
private String zip;
|
||||
/**지번(zibun), 도로명(street)*/
|
||||
private String adresDvCd;
|
||||
/**회수지지번주소*/
|
||||
private String lnbAdres;
|
||||
/**회수지도로명주소*/
|
||||
private String rnmAdres;
|
||||
/**회수지주소상세*/
|
||||
private String dtlAdres;
|
||||
/**반품접수일시*/
|
||||
private String returnRceptDt;
|
||||
/**반품완료일시*/
|
||||
private String returnComptDt;
|
||||
/**스마트쇼핑반품요청일시*/
|
||||
private String smrtShopngReturnReqstDt;
|
||||
/**스마트쇼핑반품완료일시*/
|
||||
private String smrtShopngReturnComptDt;
|
||||
/**return_request, collect_done, return_deliveryfee, return_done, exchange_done*/
|
||||
private String smrtShopngReturnProcsSttusCd;
|
||||
|
||||
/** 지번 or 도로명 주소 */
|
||||
private String lnbOrRnmAdres;
|
||||
|
||||
|
||||
/** 반품 환불 상품 옵션 리스트 */
|
||||
// private List<OrderReItemVO> orderReItemVOList;
|
||||
|
||||
private String serverDv;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.wb.domainserver.domain.sopmal.mpage.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
* 위시리스트 VO
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-21
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-21 추지훈 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyWishVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/** 위시리스트 고유번호 */
|
||||
private String wslistInnb;
|
||||
|
||||
/** 상품 고유번호 */
|
||||
private Integer goodsInnb;
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 회원 고유번호 */
|
||||
private Integer mbrInnb;
|
||||
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** AGENT */
|
||||
private String agent;
|
||||
|
||||
/** AGENTID */
|
||||
private String agentId;
|
||||
|
||||
/** IP */
|
||||
private String ip;
|
||||
|
||||
/** 위시리스트 고유번호 배열 */
|
||||
private String[] wslistInnbArr;
|
||||
|
||||
|
||||
private String serverDv;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.controller;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.sopmal.nmbr.vo.MyDlivyVO;
|
||||
import com.wb.domainserver.domain.sopmal.nmbr.vo.MyOrdrDlvyVO;
|
||||
import com.wb.domainserver.domain.sopmal.nmbr.vo.MyOrdrVO;
|
||||
import com.wb.domainserver.response.WnbtResponse;
|
||||
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
|
||||
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
|
||||
import com.wb.domainserver.security.authorization.annotation.Policy;
|
||||
import com.wb.domainserver.util.communicate.RESRC;
|
||||
import com.wb.domainserver.util.communicate.ReplyFromResrc;
|
||||
import com.wb.domainserver.util.communicate.SendToResrc;
|
||||
import com.wb.domainserver.util.util.Util;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/sopmal/nmbr/ordr")
|
||||
@Slf4j
|
||||
public class MyOrdrNmbrController {
|
||||
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 주문 취소 상태 수정
|
||||
* @param ordrDlvyVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateCanclOrdr")
|
||||
public ResponseEntity<WnbtResponse> updateCanclOrdr(MyOrdrDlvyVO ordrDlvyVO) throws JsonProcessingException {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBOCanclOrdr", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 상품 기준 구매 확정
|
||||
* @param ordrVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updatePurchsDcsnByItem")
|
||||
public ResponseEntity<WnbtResponse> updatePurchsDcsnByItem(MyOrdrVO ordrVO) throws JsonProcessingException {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updatePurchsDcsnByItem", ordrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 배송지 조회
|
||||
* @param param
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectOrdrDlvylc")
|
||||
public ResponseEntity<WnbtResponse> selectOrdrDlvylc(MyOrdrDlvyVO ordrDlvyVO){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOOrdrDlvylc", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 배송지 수정
|
||||
* @param param
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/updateDlvylc")
|
||||
public ResponseEntity<WnbtResponse> updateDlvylc(MyOrdrDlvyVO ordrDlvyVO){
|
||||
if("01".equals(ordrDlvyVO.getDlvylcAdresDvCd())){//주소구분에 따라 지번,도로명주소 set
|
||||
ordrDlvyVO.setDlvylcRnmAdres(ordrDlvyVO.getAdres());
|
||||
}else{
|
||||
ordrDlvyVO.setDlvylcLnbAdres(ordrDlvyVO.getAdres());
|
||||
}
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylc", ordrDlvyVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 결제취소 화면 이동
|
||||
* @return OrdrSetleCanclPopup.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectSetleCanclPopupForm")
|
||||
public String selectSetleCanclPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/OrdrSetleCanclPopup";
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 결제취소 등록
|
||||
* @param param
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
* @throws JsonProcessingException
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/insertSetleCanclRegist")
|
||||
public ResponseEntity<WnbtResponse> registSetleCancl(@RequestBody HashMap<String, Object> param) throws JsonProcessingException {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBOSetleCanclRegist", param),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 배송 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/selectDlvyInqire")
|
||||
public String selectDlvyInqire(MyDlivyVO dlivyVO, ModelMap model, HttpServletRequest request){
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/dlivy/selectBOOrdrDlvyDtlsInqire", dlivyVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/DlvyInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 반품/환불 신청 이동
|
||||
* @return
|
||||
* @author 추지훈
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectRetrunRegistPopupForm")
|
||||
public String selectRetrunRegistPopupForm(HttpServletRequest request,ModelMap model, MyOrdrDlvyVO ordrDlvyVO) {
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOSetleCanclRefndRegist", ordrDlvyVO),
|
||||
model,
|
||||
"data"
|
||||
);
|
||||
return Util.getDeviceType(request) + "/mpage/ordr/RefundRegistPopupC";
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 주문 상세 조회 > 현금영수증 수정
|
||||
* @param vo
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateCashReceipt")
|
||||
public ResponseEntity<WnbtResponse> updateCashReceipt (MyOrdrVO vo){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/selngpruf/updateCashReceipt", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 비회원 반품/환불 상세 조회 > 반품 취소 환불 정보 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/updateRtngudCanclRefndUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateRtngudCanclRefndUpdt( com.wb.domainserver.domain.sopmal.mpage.ordr.vo.MyRefundVO refundVO, ModelMap model){
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/Rtngudrefnd/updateBOOrderReUpdt", refundVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyDlivyVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**출고고유번호*/
|
||||
private String dlivyInnb;
|
||||
/**주문고유번호*/
|
||||
private String ordrInnb;
|
||||
/**쇼핑몰코드*/
|
||||
private String sopmalCd;
|
||||
/**주문배송고유번호*/
|
||||
private String ordrDlvyInnb;
|
||||
/**출고코드번호*/
|
||||
private String dlivyCdNb;
|
||||
/**출고준비(45), 출고완료(55), 배송중(65), 배송완료(75)*/
|
||||
private String dlivySttusCd;
|
||||
/**상태변경일시*/
|
||||
private String sttusUpdtDt;
|
||||
/**택배사코드*/
|
||||
private String hdrycpnCd;
|
||||
/**택배사코드 명*/
|
||||
private String hdrycpnNm;
|
||||
/**송장번호*/
|
||||
private String invcnb;
|
||||
/**출고일시*/
|
||||
private String dlivyDt;
|
||||
/**출고완료일시*/
|
||||
private String dlivyComptDt;
|
||||
/**배송완료일시*/
|
||||
private String dlvyComptDt;
|
||||
/**배송그룹코드*/
|
||||
private String dlvyGroupCd;
|
||||
/**관리자 고유번호*/
|
||||
private String mngrInnb;
|
||||
|
||||
/** 중요주문여부 */
|
||||
private String imprtncOrdrAt;
|
||||
|
||||
/**배송주기*/
|
||||
private String dlvyCycleCd;
|
||||
|
||||
/** 구매확정구분코드 */
|
||||
private String purchsDcsnDvCd;
|
||||
|
||||
|
||||
// 출고 상품
|
||||
|
||||
/** 출고상품고유번호 */
|
||||
private String dlivyGoodsInnb;
|
||||
|
||||
/** 주문상품옵션고유번호 */
|
||||
private String ordrGoodsOptnInnb;
|
||||
|
||||
/** 옵션유형 */
|
||||
private String optnTy;
|
||||
|
||||
|
||||
|
||||
|
||||
// 배송그룹 / 밥법 변경
|
||||
|
||||
/** 배송 그룹 코드 */
|
||||
private String DlvyGroupCd;
|
||||
|
||||
|
||||
// 스위트래커 배송 추적
|
||||
|
||||
/** 주문배송추적고유번호 */
|
||||
private Integer ordrDlvyTraceInnb;
|
||||
|
||||
/** 스윗트래커송장코드 */
|
||||
private String stInvcCd;
|
||||
|
||||
/** 상세내용 - 배송 추적 내용 json */
|
||||
private String dtlCn;
|
||||
|
||||
|
||||
// 배송 추적 : 배송정보
|
||||
|
||||
/** 우편번호 */
|
||||
private String dlvylcZip;
|
||||
/** 주소 구분 코드 */
|
||||
private String dlvylcAdresDvCd;
|
||||
/** 도로명 주소 */
|
||||
private String dlvylcRnmAdres;
|
||||
/** 지번 주소 */
|
||||
private String dlvylcLnbAdres;
|
||||
/** 상세 주소 */
|
||||
private String dlvylcAdresDtl;
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyIndvdlSetleVO extends AbstractVO {
|
||||
private String sopmalCd; // 쇼핑몰코드
|
||||
|
||||
private String ordrInnb; // 주문번호
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyOrdrDlvyVO extends AbstractVO {
|
||||
private String sopmalCd; // 쇼핑몰코드
|
||||
|
||||
private String srchwrd; // 검색어
|
||||
|
||||
private String bgnDt; // 검색 시작 일자
|
||||
|
||||
private String endDt; // 검색어 종료 일자
|
||||
|
||||
private String dateRange; // 기간
|
||||
|
||||
private String ordrInnb; // 주문번호
|
||||
|
||||
private String ordrDlvyInnb; // 주문배송고유번호
|
||||
|
||||
private String serverDv; // 서버 구분
|
||||
|
||||
private String mbtlnb; // 주문자 휴대폰번호
|
||||
|
||||
private String mpageAt; // 마이페이지
|
||||
|
||||
private String recpntNm;
|
||||
private String recpntMbtlnb;
|
||||
private String dlvylcZip;
|
||||
private String dlvylcAdresDvCd;
|
||||
private String dlvylcLnbAdres;
|
||||
private String dlvylcRnmAdres;
|
||||
private String dlvylcAdresDtl;
|
||||
private String adres;
|
||||
|
||||
/** 현재 주문 상태 */
|
||||
private String currOrdrSttusCd;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyOrdrShippingVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
public MyOrdrShippingVO() {}
|
||||
|
||||
public MyOrdrShippingVO(String sopmalCd, String ordrInnb) {
|
||||
this.sopmalCd = sopmalCd;
|
||||
this.ordrInnb = ordrInnb;
|
||||
}
|
||||
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
/** 주문배송고유번호 */
|
||||
private String ordrDlvyInnb;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 받는자명 */
|
||||
private String recpntNm;
|
||||
|
||||
/** 받는자전화번호 */
|
||||
private String recpntTelnb;
|
||||
|
||||
/** 받는자휴대폰번호 */
|
||||
private String recpntMbtlnb;
|
||||
|
||||
/** 배송지우편번호 */
|
||||
private String dlvylcZip;
|
||||
|
||||
/** 지번(zibun), 도로명(street) */
|
||||
private String dlvylcAdresDvCd;
|
||||
|
||||
/** 배송지지번주소 */
|
||||
private String dlvylcLnbAdres;
|
||||
|
||||
/** 배송지도로명주소 */
|
||||
private String dlvylcRnmAdres;
|
||||
|
||||
/** 배송지주소상세 */
|
||||
private String dlvylcAdresDtl;
|
||||
|
||||
/** 추적배송지주소 */
|
||||
private String traceDlvylcAdres;
|
||||
|
||||
/** 배송지그룹번호 */
|
||||
private int dlvylcGroupNb;
|
||||
|
||||
/** 택배, POS주문, 기타(프레쉬배송?) */
|
||||
private String dlvyMthCd;
|
||||
|
||||
/** 반품배송비금액 */
|
||||
private int rtngudDlvyAmtAmt;
|
||||
|
||||
/** 관리자무료배송비사용여부 */
|
||||
private String mngrFreeDlvyAmtUseAt;
|
||||
|
||||
/** 실배송금액 */
|
||||
private int rlDlvyAmt;
|
||||
|
||||
/** 무료배송조건금액 */
|
||||
private int freeDlvyCndAmt;
|
||||
|
||||
/** 기본배송비금액 */
|
||||
private int dftDlvyAmtAmt;
|
||||
|
||||
/** 예약발송여부 */
|
||||
private String resveSndngAt;
|
||||
|
||||
/** 예약발송구분코드 */
|
||||
private String resveSndngDvCd;
|
||||
|
||||
/** 예약발송일자 */
|
||||
private String resveSndngDe;
|
||||
|
||||
/** 배송메시지내용 */
|
||||
private String dlvyMssageCn;
|
||||
|
||||
/** 선물메시지내용 */
|
||||
private String giftMssageCn;
|
||||
|
||||
/** 관리자 고유번호 */
|
||||
private Integer mngrInnb;
|
||||
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
|
||||
/** 사용여부 */
|
||||
// private String useAt;
|
||||
|
||||
/** 오더링 방법 */
|
||||
private String ordering;
|
||||
|
||||
/** 송장번호 */
|
||||
private String invcnb;
|
||||
|
||||
/** 배송주기 코드 */
|
||||
private String dlvyCycleCd;
|
||||
|
||||
|
||||
|
||||
|
||||
// 검색
|
||||
|
||||
|
||||
private String srchwrd; // 검색어
|
||||
|
||||
private String bgnDt; // 검색 시작 일자
|
||||
|
||||
private String endDt; // 검색어 종료 일자
|
||||
|
||||
private String dateRange; // 기간
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyOrdrVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
/** 주문상품고유번호 */
|
||||
private String ordrGoodsInnb;
|
||||
|
||||
/** 주문상품옵션고유번호 */
|
||||
private String ordrGoodsOptnInnb;
|
||||
|
||||
/** 주문배송 고유번호 */
|
||||
private String ordrDlvyInnb;
|
||||
|
||||
/** 옵션 구분 */
|
||||
private String optnTy;
|
||||
|
||||
/**현금영수증 관련*/
|
||||
/*인증번호*/
|
||||
private String crtnb;
|
||||
/*발급대상구분코드*/
|
||||
private String issuTrgetDvCd;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
package com.wb.domainserver.domain.sopmal.nmbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author 추지훈
|
||||
* @since 2024-03-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-03-11 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MyRefundVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**상세 내용*/
|
||||
public String dtlCn;
|
||||
/**주문 배송 추적 고유번호*/
|
||||
public String ordrDlvyTraceInnb;
|
||||
/**쇼핑몰 코드*/
|
||||
public String sopmalCd;
|
||||
/**검색어*/
|
||||
public String srchwrd;
|
||||
/**검색구분*/
|
||||
public String srchDv;
|
||||
/**검색시작일*/
|
||||
public String bgnDt;
|
||||
/**검색종료일*/
|
||||
public String endDt;
|
||||
//날짜 검색 구분
|
||||
private String srchDtDv;
|
||||
|
||||
//** 반품처리상태 */
|
||||
private String[] returnProcsStuusCd;
|
||||
//** 환불처리상태 */
|
||||
private String[] refundProcsSttusCd;
|
||||
|
||||
|
||||
/** 회원 고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
|
||||
|
||||
//** 회수방법(반품) */
|
||||
private String srchReturnMthCd;
|
||||
|
||||
|
||||
|
||||
/** 반품환불 고유번호 */
|
||||
private String orderReInnb;
|
||||
/*주문고유번호*/
|
||||
private String ordrInnb;
|
||||
/*환불신청일시*/
|
||||
private String refundReqstDt;
|
||||
/*환불완료일시*/
|
||||
private String refundComptDt;
|
||||
/*신청(request), 처리중(ing), 완료(complete)*/
|
||||
|
||||
private String refundTyCd;
|
||||
/*전체취소(full), 부분취소(partial)*/
|
||||
private String refundScopeCd;
|
||||
/*환불사유내용*/
|
||||
private String refundResnCn;
|
||||
/*계좌이체(account), 무통장(bank), 신용카드(card), 수동(manual), ?(payco_coupon), 포스기기(pos)*/
|
||||
private String refundMthCd;
|
||||
/*환불계좌은행명*/
|
||||
private String refundAcntBnnkNm;
|
||||
/*환불계좌예금주명*/
|
||||
private String refundAcntDpstrNm;
|
||||
/*환불계좌번호*/
|
||||
private String refundAcntnb;
|
||||
/*환불금액*/
|
||||
private String refundAmt;
|
||||
/*환불적립금액*/
|
||||
private Integer refundAccmlmnyAmt;
|
||||
/*배송비환불총금액*/
|
||||
private Integer dlvyAmtTotRefundAmt;
|
||||
/*쿠폰할인보정금액*/
|
||||
private Integer coupDscntRevisnAmt;
|
||||
/*적립금보정금액*/
|
||||
private Integer accmlmnyRevisnAmt;
|
||||
/*에누리보정금액*/
|
||||
private Integer enuriRevisnAmt;
|
||||
/*적립금유효일자*/
|
||||
private String accmlmnyValidDe;
|
||||
/*다운로드쿠폰 고유번호*/
|
||||
private String dwldCouponInnb;
|
||||
/*상태메모내용*/
|
||||
private String sttusMemoCn;
|
||||
/*관리자메모내용*/
|
||||
private String mngrMemoCn;
|
||||
/*관리자 고유번호*/
|
||||
private String mngrInnb;
|
||||
/*스마트쇼핑환불신청일시*/
|
||||
private String smrtShopngRefndReqstDt;
|
||||
/*스마트쇼핑환불완료일시*/
|
||||
private String smrtShopngRefndComptDt;
|
||||
/*cancel_done, refund_request*/
|
||||
private String smrtShopngRefndProcsSttusCd;
|
||||
/*스마트쇼핑클레임발생금액*/
|
||||
private Integer smrtShopngClaimOccrrncAmt;
|
||||
/*스마트쇼핑초도배송비금액*/
|
||||
private Integer smrtShopngFrsttmeDlvyAmtAmt;
|
||||
/*반품환불보류상품번호내용*/
|
||||
private String returnRefndDferGoodsNbCn;
|
||||
/*사용여부*/
|
||||
private String useAt;
|
||||
/*처리대상자 구분*/
|
||||
private String procsTargetDv;
|
||||
/**신청(request), 완료(complete), 철회(retraction)*/
|
||||
private String returnProcsSttusCd;
|
||||
/**반품사유코드*/
|
||||
private String returnResnCd;
|
||||
/**고객-단순변심,고객-오주문,본사-배송지연,본사-상품불량,본사-상품파손,본사-상품품절,본사-오배송*/
|
||||
private String returnDtlResnCd;
|
||||
/**반품사유내용*/
|
||||
private String returnResnCn;
|
||||
/**고객이배송(user),상점이회수(shop)*/
|
||||
private String returnMthCd;
|
||||
/** 반품고객전화번호 */
|
||||
private String returnCstmrTelnb;
|
||||
/** 반품고객휴대폰번호 */
|
||||
private String returnCstmrMbtlnb;
|
||||
/** 반품배송비금액 */
|
||||
private String returnDlvyAmt;
|
||||
/** company,provider */
|
||||
private String returnDlvyAmtRecptTrgetCd;
|
||||
/**구매자(buyer), 판매자(seller)*/
|
||||
private String returnDlvyRspnsblCd;
|
||||
/**직접 송금(A), 환불금액에서 차감(M), 택배상자 동봉(D)*/
|
||||
private String returnDlvyPymntTyCd;
|
||||
/**반품배송비입금자명*/
|
||||
private String returnDlvyAmtRcpmnyerNm;
|
||||
/**반품배송비입금계좌번호*/
|
||||
private String returnDlvyAmtRcpmnyAcntnb;
|
||||
/**회수지우편번호*/
|
||||
private String zip;
|
||||
/**지번(zibun), 도로명(street)*/
|
||||
private String adresDvCd;
|
||||
/**회수지지번주소*/
|
||||
private String lnbAdres;
|
||||
/**회수지도로명주소*/
|
||||
private String rnmAdres;
|
||||
/**회수지주소상세*/
|
||||
private String dtlAdres;
|
||||
/**반품접수일시*/
|
||||
private String returnRceptDt;
|
||||
/**반품완료일시*/
|
||||
private String returnComptDt;
|
||||
/**스마트쇼핑반품요청일시*/
|
||||
private String smrtShopngReturnReqstDt;
|
||||
/**스마트쇼핑반품완료일시*/
|
||||
private String smrtShopngReturnComptDt;
|
||||
/**return_request, collect_done, return_deliveryfee, return_done, exchange_done*/
|
||||
private String smrtShopngReturnProcsSttusCd;
|
||||
|
||||
/** 지번 or 도로명 주소 */
|
||||
private String lnbOrRnmAdres;
|
||||
|
||||
|
||||
/** 반품 환불 상품 옵션 리스트 */
|
||||
// private List<OrderReItemVO> orderReItemVOList;
|
||||
|
||||
private String serverDv;
|
||||
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user