초기소스
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
package com.wb.domainserver.domain.crm.bbs.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO;
|
||||
import com.wb.domainserver.domain.mngr.bbs.gnrlsctt.vo.GnrlscttVO;
|
||||
import com.wb.domainserver.domain.mngr.bbs.rvw.vo.RvwVO;
|
||||
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 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.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/crm/bbs")
|
||||
public class CrmBbsController {
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
/**
|
||||
* 리뷰 목록 조회 폼
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectGoodsRvwInqireForm")
|
||||
public String selectGoodsRvwInqireForm(ModelMap model, CrmCnsltVO vo) {
|
||||
/*left 값 세팅*/
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/bbs/GoodsRvwListRForm";
|
||||
}
|
||||
/**
|
||||
* 리뷰 목록 조회
|
||||
* @param rvwVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectGoodsRvwInqire")
|
||||
public String selectGoodsRvwInqire(ModelMap model, RvwVO rvwVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
rvwVO.setReqUrl("crm");
|
||||
rvwVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOMyRvwListInqire", rvwVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("pageUnit",rvwVO.getPageUnit());
|
||||
return "crm/bbs/GoodsRvwListR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 qna 목록 조회 폼
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectGoodsInqryInqireForm")
|
||||
public String selectGoodsInqryInqireForm(CrmCnsltVO vo , GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
bbsctt.setReqUrl("crm");
|
||||
bbsctt.setBbsId("goods_qna");
|
||||
bbsctt.setBbsTyCd("05");
|
||||
bbsctt.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqireForm", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
/*left 값 세팅*/
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/bbs/GoodsInqryListRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 상품 qna 목록 조회
|
||||
* @param bbsctt
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectGoodsInqryInqire")
|
||||
public String selectGoodsInqryInqire(GnrlscttVO bbsctt, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd){
|
||||
bbsctt.setReqUrl("crm");
|
||||
bbsctt.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/gnrlbbsctt/selectBOBbscttListInqire", bbsctt),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
model.addAttribute("pageUnit",bbsctt.getPageUnit());
|
||||
return "crm/bbs/GoodsInqryListR";
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.wb.domainserver.domain.crm.bbs.vo;
|
||||
|
||||
public class CrmBbsVO {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,236 @@
|
||||
package com.wb.domainserver.domain.crm.cnslt.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.auth.controller.AuthController;
|
||||
import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO;
|
||||
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.*;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
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.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
*
|
||||
* CRM 상담
|
||||
* @author 추지훈
|
||||
* @since 2024-02-19
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-19 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/crm/cnslt")
|
||||
@Slf4j
|
||||
public class CrmCnsltController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
@Autowired
|
||||
private AuthController authController;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* CRM 상담 내역 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCnsltDtlsForm")
|
||||
public String selectCnsltDtlsForm(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqireForm", cnsltVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO", cnsltVO);
|
||||
|
||||
return "crm/cnslt/CnsltDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 상담 내역 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCnsltDtlsInqire")
|
||||
public String selectCnsltDtlsInqire(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
cnsltVO.setCrmAt("Y");
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCstmrCnsltUnityBbscttListInqire", cnsltVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/cnslt/CnsltDtlsR";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 상담 등록 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCnsltRegistPopupForm")
|
||||
public String selectCnsltRegistPopupForm(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltRegistPopupForm", cnsltVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
model.addAttribute("cnsltVO", cnsltVO);
|
||||
|
||||
return "crm/cnslt/CnsltRegistPopupC";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상담 등록 폼 공통코드 반환
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCnsltRegistPopupFormCmmnCdArray")
|
||||
public ResponseEntity<WnbtResponse> selectCnsltRegistPopupFormCmmnCdArray(CrmCnsltVO cnsltVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltRegistPopupFormCmmnCdArray", cnsltVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 상담 등록
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertCnsltRegist")
|
||||
public ResponseEntity<WnbtResponse> insertCnsltRegist(@Validated CrmCnsltVO cnsltVO,BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
} else {
|
||||
if (StringUtil.isEmpty(cnsltVO.getCnsltCn())) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("cnsltCn",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[]{"상담 내용"})));
|
||||
}
|
||||
|
||||
if (errorList != null && !errorList.isEmpty()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
}
|
||||
if("".equals(cnsltVO.getOrdrNb())){cnsltVO.setOrdrNb(null);}
|
||||
if("".equals(cnsltVO.getDlivyInnb())){cnsltVO.setDlivyInnb(null);}
|
||||
if("".equals(cnsltVO.getRefndCdNb())){cnsltVO.setRefndCdNb(null);}
|
||||
if("".equals(cnsltVO.getGoodsInqryBbscttNb())){cnsltVO.setGoodsInqryBbscttNb(null);}
|
||||
if("".equals(cnsltVO.getGoodsRvwBbscttNb())){cnsltVO.setGoodsRvwBbscttNb(null);}
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/insertBOCnsltRegist", cnsltVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상담 상세 수정 팝업 폼
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCnsltDtlUpdtInqirePopup")
|
||||
public String selectCnsltDtlUpdtInqirePopup(CrmCnsltVO cnsltVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/selectBOCnsltDtlUpdtInqirePopup", cnsltVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/cnslt/CnsltDtlUpdtPopupU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 상담 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateCnsltUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateCstmrCnsltUpdt(@Validated CrmCnsltVO cnsltVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
log.debug("cnsltVO is {}", cnsltVO);
|
||||
// 정합성 검사
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
} else {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
if (cnsltVO.getTelnbDvCd() == null || cnsltVO.getTelnbDvCd().isEmpty()) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("telnbDvCd",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[] { "인콜/아웃콜" })));
|
||||
}
|
||||
|
||||
if (cnsltVO.getCnsltCn() == null || cnsltVO.getCnsltCn().isEmpty()) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("cnsltCn",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[] { "상담 내용" })));
|
||||
}
|
||||
|
||||
if (errorList != null && !errorList.isEmpty()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
}
|
||||
|
||||
if("".equals(cnsltVO.getOrdrNb())){cnsltVO.setOrdrNb(null);}
|
||||
if("".equals(cnsltVO.getDlivyInnb())){cnsltVO.setDlivyInnb(null);}
|
||||
if("".equals(cnsltVO.getRefndCdNb())){cnsltVO.setRefndCdNb(null);}
|
||||
if("".equals(cnsltVO.getGoodsInqryBbscttNb())){cnsltVO.setGoodsInqryBbscttNb(null);}
|
||||
if("".equals(cnsltVO.getGoodsRvwBbscttNb())){cnsltVO.setGoodsRvwBbscttNb(null);}
|
||||
|
||||
cnsltVO.setSopmalCd(authSopmalCd);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/bbs/cnslt/updateBOCnsltUpdt", cnsltVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,135 @@
|
||||
package com.wb.domainserver.domain.crm.cnslt.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
*
|
||||
* 관리자 - 상담 VO
|
||||
* @author 추지훈
|
||||
* @since 2024-01-26
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-01-26 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmCnsltVO extends AbstractVO{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
/**
|
||||
* 상담 컬럼
|
||||
*/
|
||||
|
||||
/** 상담내역고유번호 */
|
||||
private Integer cnsltDtlsInnb;
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
/** 회원고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원 아이디 */
|
||||
private String mbrid;
|
||||
/** 회원명 */
|
||||
private String mbrNm;
|
||||
/** 회원 핸드폰번호 */
|
||||
private String mbtlnb;
|
||||
/** 회원명 이메일*/
|
||||
private String email;
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
/** 회원타입코드 */
|
||||
private String mbrTyCd;
|
||||
/** 관리자 고유번호 */
|
||||
private String mngrInnb;
|
||||
/** 관리자이름 */
|
||||
private String mngrNm;
|
||||
/** 상담분류 */
|
||||
private String cnsltCl;
|
||||
/** 관련주문번호 */
|
||||
private String ordrNb;
|
||||
/** 관련주문번호 */
|
||||
private String ordrInnb;
|
||||
/** 출고코드 */
|
||||
private String dlivyInnb;
|
||||
/** 반품코드 */
|
||||
private String rtngudCdNb;
|
||||
/** 환불코드 */
|
||||
private String refndCdNb;
|
||||
/** 관련상품문의 */
|
||||
private String goodsInqryBbscttNb;
|
||||
/** 관련상담번호 */
|
||||
private String goodsRvwBbscttNb;
|
||||
/** 처리상태 */
|
||||
private String procsSttusCd;
|
||||
/** 처리일시 */
|
||||
private String procsDt;
|
||||
/** 상담내용 */
|
||||
@NotBlank(message="상담내용")
|
||||
private String cnsltCn;
|
||||
/** 전화구분코드 */
|
||||
@NotBlank(message="인콜/아웃콜")
|
||||
private String telnbDvCd;
|
||||
/** 대분류 */
|
||||
@NotBlank(message="대분류")
|
||||
private String lrgeCl;
|
||||
/** 중분류 */
|
||||
@NotBlank(message="중분류")
|
||||
private String middlCl;
|
||||
/** 소분류 */
|
||||
private String smllCl;
|
||||
/** 녹취 key */
|
||||
private String recrdKy;
|
||||
/** 전화번호 */
|
||||
@NotBlank(message="전화번호")
|
||||
private String telnb;
|
||||
|
||||
|
||||
/**
|
||||
* 검색
|
||||
*/
|
||||
|
||||
/** 검색_검색어 구분 */
|
||||
private String srchKeywordDv;
|
||||
/** 검색_검색어 */
|
||||
private String srchKeyword;
|
||||
/** 검색_등록일 구분 */
|
||||
private String srchDtDv;
|
||||
/** 검색_시작일 */
|
||||
private String srchStartDate;
|
||||
/** 검색_종료일 */
|
||||
private String srchEndDate;
|
||||
/** 검색_상담자 */
|
||||
private String srchMngrNm;
|
||||
/** 검색_처리 여부 */
|
||||
private String[] srchProcsSttusCd;
|
||||
/** 검색_관련번호 구분 */
|
||||
private String srchRelateDv;
|
||||
/** 검색_관련번호 */
|
||||
private String srchRelateNm;
|
||||
/** 검색_상담내용 */
|
||||
private String srchCnsltCn;
|
||||
|
||||
|
||||
|
||||
private String record_key = "";
|
||||
|
||||
/** 저장될 녹취 key */
|
||||
private String customer_record_key;
|
||||
|
||||
private String ctiAt;
|
||||
|
||||
/*crm인지, 통합게시판인지 판단 => bo join에 씀*/
|
||||
private String crmAt;
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.wb.domainserver.domain.crm.coupon.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO;
|
||||
import com.wb.domainserver.domain.crm.coupon.vo.CrmCouponVO;
|
||||
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.communicate.ValidateResultConverter;
|
||||
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.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
/**
|
||||
*
|
||||
* CRM 쿠폰
|
||||
* @author 추지훈
|
||||
* @since 2024-02-19
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-19 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/crm/coupon")
|
||||
@Slf4j
|
||||
public class CrmCouponController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰내역 목록 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectHoldCouponDtlsForm")
|
||||
public String selectHoldCouponDtlsForm(CrmCnsltVO vo, CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
couponVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOHoldCouponDtlsForm", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/coupon/HoldCouponDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰내역 목록 조회 ( 사용 가능 쿠폰 내역 )
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectHoldCouponDtlsInqire")
|
||||
public String selectHoldCouponDtlsInqire(CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
couponVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponUsePosblDtlsInqire", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/coupon/HoldCouponDtlsR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 상세 팝업
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectHoldCouponDtlPopupForm")
|
||||
public String selectHoldCouponDtlPopupForm(CrmCouponVO couponVO, ModelMap model) {
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBOCouponInfoInqirePopup", couponVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/coupon/HoldCouponDtlPopupR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 유효기간 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateCouponPdUpdt", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateCouponPdUpdt(@Validated CrmCouponVO couponVO, BindingResult bindingResult) {
|
||||
log.debug("couponVO info inqire {}", couponVO);
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/updateBOCouponValidPdUpdt", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰내역 목록 조회 ( 다운로드 가능 쿠폰 내역 )
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectDwldPosblCouponDtlsInqire")
|
||||
public String selectDwldPosblCouponDtlsInqire(CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
couponVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/selectBODwldCouponDtlsInqire", couponVO),
|
||||
model,
|
||||
"resultMapDwld"
|
||||
);
|
||||
|
||||
return "crm/coupon/DwldPosblCouponDtlsR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 쿠폰 다운로드
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertCrmDwldCouponAllRegist")
|
||||
public ResponseEntity<WnbtResponse> insertCrmDwldCouponAllRegist(CrmCouponVO couponVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
couponVO.setSopmalCd(authSopmalCd);
|
||||
log.debug("CRM 쿠폰 다운로드 : {}", couponVO);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/promtn/coupon/insertBODwldCouponAllRegist", couponVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,180 @@
|
||||
package com.wb.domainserver.domain.crm.coupon.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* 해당 클래스에 대한 설명을 입력하세요.
|
||||
* @author 추지훈
|
||||
* @since 2024-02-27
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-27 추지훈 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmCouponVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 쿠폰정보
|
||||
*/
|
||||
|
||||
/** 다운로드 쿠폰 고유번호 */
|
||||
private BigInteger dwldCouponInnb;
|
||||
/** 쿠폰 고유번호 */
|
||||
private Integer couponInnb;
|
||||
/** 회원 고유번호 */
|
||||
private Integer mbrInnb;
|
||||
/** 회원 구분 코드 */
|
||||
private String mbrDvCd;
|
||||
/** 쿠폰팩 고유번호 */
|
||||
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 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 couponArray;
|
||||
|
||||
|
||||
/** 그룹 코드 */
|
||||
private String groupCd;
|
||||
|
||||
/** 주문 고유번호 ( 주문 쿠폰 사용 내역 조회 ) */
|
||||
private String ordrInnb;
|
||||
|
||||
/** JSON 형태의 회원 리스트 ( 발급하기 ) */
|
||||
private String jsonMbrList;
|
||||
|
||||
|
||||
/**
|
||||
* 서버 구분
|
||||
*/
|
||||
private String serverDv;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
package com.wb.domainserver.domain.crm.dlvylc.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO;
|
||||
import com.wb.domainserver.domain.crm.dlvylc.vo.CrmDlvylcVO;
|
||||
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.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
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.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
/**
|
||||
* CRM 배송지 관리 Controller
|
||||
*
|
||||
* @author 김혜인
|
||||
* @since 2023-11-28
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2023-11-28 박철민 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/crm/dlvylc")
|
||||
@Slf4j
|
||||
public class CrmDlvylcController {
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
/**
|
||||
* 배송지 관리 목록 조회 이동
|
||||
* @param crmDlvylcVO
|
||||
* @param model
|
||||
* @return MbrDlvylcListInqireR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping("/selectMbrDlvylcListInqire")
|
||||
public String selectMbrDlvylcListInqire(CrmCnsltVO vo ,ModelMap model) {
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/dlvylc/MbrDlvylcListInqireR";
|
||||
}
|
||||
/**
|
||||
* 회원 자주쓰는 배송지 조회
|
||||
* @param crmDlvylcVO
|
||||
* @param model
|
||||
* @return RpuseDlvylcListInqireR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping("/selectRpuseDlvylcListInqire")
|
||||
public String selectRpuseDlvylcListInqire(CrmDlvylcVO crmDlvylcVO,ModelMap model) {
|
||||
log.debug("배송지 관리 : {}", crmDlvylcVO);
|
||||
String jspPath = "";
|
||||
//popUp or page 호출인지에 따라 페이지유닛 및 경로 분기
|
||||
if("Y".equals(crmDlvylcVO.getIsPop())) {
|
||||
crmDlvylcVO.setPageUnit(3);
|
||||
jspPath = "crm/dlvylc/DlvylcManagePopupR";
|
||||
} else {
|
||||
jspPath = "crm/dlvylc/RpuseDlvylcListInqireR";
|
||||
}
|
||||
//BO에서 API 호출(자주쓰는 배송지 조회)
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOMbrDlvylcListInqire", crmDlvylcVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
//BO에서 API 호출(자주쓰는 배송지 조회)
|
||||
//기존 페이지 유지
|
||||
model.addAttribute("pageIndex", crmDlvylcVO.getPageIndex());
|
||||
//회원 고유 번호 유지
|
||||
model.addAttribute("mbrInnb", crmDlvylcVO.getMbrInnb());
|
||||
|
||||
model.addAttribute("mbrDvCd", crmDlvylcVO.getMbrDvCd());
|
||||
|
||||
model.addAttribute("formId", crmDlvylcVO.getFormId());
|
||||
//배송지 관리 팝업 > 콜백 함수 이름 전달
|
||||
if("Y".equals(crmDlvylcVO.getIsPop())) {
|
||||
model.addAttribute("callbackNm", crmDlvylcVO.getCallbackNm());
|
||||
}
|
||||
return jspPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* 최근 배송지 조회
|
||||
* @param CrmOrdrVO
|
||||
* @param ModelMap
|
||||
* @return RecentDlvylcListInqireR.jsp
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectRecentDlvylcListInqire")
|
||||
public String selectRecentDlvylcListInqire(CrmDlvylcVO crmDlvylcVO, ModelMap model) {
|
||||
//BO에서 API 호출(최근 배송지 조회)
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBORecentDlvylcListInqire", crmDlvylcVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("ordering",crmDlvylcVO.getOrdering());
|
||||
return "crm/dlvylc/RecentDlvylcListInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 배송지 수정 상세 조회
|
||||
* @param CrmOrdrVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@GetMapping(value="/selectDlvylcUpdtPopupForm")
|
||||
public String selectDlvylcUpdtPopupForm(ModelMap model, CrmDlvylcVO crmDlvylcVO){
|
||||
//BO API 호출하여 상세 조회
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBODlvylcUpdtPopupForm", crmDlvylcVO),
|
||||
model,
|
||||
"dtlDlvylc"
|
||||
);
|
||||
//모델 객체에 상세 조회 및 페이지 인덱스,회원고유번호 담음
|
||||
model.addAttribute("pageIndex",crmDlvylcVO.getPageIndex());
|
||||
model.addAttribute("mbrInnb",crmDlvylcVO.getMbrInnb());
|
||||
model.addAttribute("mbrDvCd",crmDlvylcVO.getMbrDvCd());
|
||||
return "crm/dlvylc/DlvylcUpdtPopupU";
|
||||
}
|
||||
/**
|
||||
* 배송지 수정
|
||||
* @param crmDlvylcVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/updateDlvylcUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateDlvylcUpdt(@Validated CrmDlvylcVO crmDlvylcVO,
|
||||
BindingResult bindingResult){
|
||||
//입력값 정합성 점검결과 처리
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
|
||||
//휴대폰번호 정합성 체크
|
||||
String mbtlnb = crmDlvylcVO.getMbtlnb();
|
||||
mbtlnb = mbtlnb.replace("-", "");
|
||||
int mbtlnbLen = mbtlnb.length();
|
||||
if (!(mbtlnbLen >= 8 && mbtlnbLen <= 12)) {
|
||||
throw new WnbtRestException("번호는 8자~12자 입니다.");
|
||||
}
|
||||
|
||||
//도로명 지번 분기처리 하여 vo에 set함
|
||||
if("01".equals(crmDlvylcVO.getAdresDv())) {
|
||||
crmDlvylcVO.setRnmAdres(crmDlvylcVO.getAdres());
|
||||
crmDlvylcVO.setLnbAdres(null);
|
||||
}else if("02".equals(crmDlvylcVO.getAdresDv())){
|
||||
crmDlvylcVO.setLnbAdres(crmDlvylcVO.getAdres());
|
||||
crmDlvylcVO.setRnmAdres(null);
|
||||
}
|
||||
|
||||
//상세주소 미입력시 . 입력
|
||||
if (StringUtil.isEmpty(crmDlvylcVO.getDtlAdres())) {
|
||||
crmDlvylcVO.setDtlAdres(".");
|
||||
}
|
||||
|
||||
//BO API 호출 => 배송지 수정
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/updateBODlvylcUpdt", crmDlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 배송지 등록 팝업 이동
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectDlvylcRegistForm")
|
||||
public String selectDlvylcRegistForm(ModelMap model, CrmDlvylcVO crmDlvylcVO){
|
||||
model.addAttribute("crmDlvylcVO",crmDlvylcVO);
|
||||
return "crm/dlvylc/DlvylcRegistPopupC";
|
||||
}
|
||||
|
||||
/**
|
||||
* 배송지 등록
|
||||
* @param CrmOrdrVO
|
||||
* @param bindingResult
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/insertDlvylcRegist")
|
||||
public ResponseEntity<WnbtResponse> insertDlvylcRegist(@Validated CrmDlvylcVO crmDlvylcVO,
|
||||
BindingResult bindingResult){
|
||||
//입력값 정합성 점검결과 처리
|
||||
if(bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
}
|
||||
//휴대폰번호 정합성 체크
|
||||
String mbtlnb = crmDlvylcVO.getMbtlnb();
|
||||
mbtlnb = mbtlnb.replace("-", "");
|
||||
int mbtlnbLen = mbtlnb.length();
|
||||
if (!(mbtlnbLen >= 8 && mbtlnbLen <= 12)) {
|
||||
throw new WnbtRestException("번호는 8자~12자 입니다.");
|
||||
}
|
||||
//등록 jsp에서 넘어온 주소를 도로명 지번 분기처리 하여 vo에 set함
|
||||
if("01".equals(crmDlvylcVO.getAdresDv())) {
|
||||
crmDlvylcVO.setRnmAdres(crmDlvylcVO.getAdres());
|
||||
crmDlvylcVO.setLnbAdres(null);
|
||||
}else if("02".equals(crmDlvylcVO.getAdresDv())){
|
||||
crmDlvylcVO.setLnbAdres(crmDlvylcVO.getAdres());
|
||||
crmDlvylcVO.setRnmAdres(null);
|
||||
}
|
||||
|
||||
//상세주소 미입력시 . 입력
|
||||
if(StringUtil.isEmpty(crmDlvylcVO.getDtlAdres())){
|
||||
crmDlvylcVO.setDtlAdres(".");
|
||||
}
|
||||
|
||||
//BO API 호출 => 배송지 등록
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/insertBODlvylcRegist", crmDlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
/**
|
||||
* 배송지 삭제
|
||||
* @param CrmOrdrVO
|
||||
* @return ResponseEntity<WnbtResponse>
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@PostMapping(value="/deleteDlvylcDel")
|
||||
public ResponseEntity<WnbtResponse> deleteDlvylcDel(CrmDlvylcVO crmDlvylcVO){
|
||||
log.debug("deleteDlvylcDel's crmDlvylcVO {}", crmDlvylcVO);
|
||||
//BO API 호출 => 배송지 삭제
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/deleteBODlvylcDel", crmDlvylcVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.wb.domainserver.domain.crm.dlvylc.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 CrmDlvylcVO extends AbstractVO{
|
||||
private static final long serialVersionUID = 1L;
|
||||
/** 주소록 고유번호 */
|
||||
private Integer adbkInnb;
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
/**회원구분코드*/
|
||||
public String mbrDvCd;
|
||||
/** 배송지설명내용 */
|
||||
@NotBlank(message = "배송지 설명")
|
||||
@Length(min=1, max=67)
|
||||
private String dlvylcDcCn;
|
||||
/** 받는사람명 */
|
||||
@NotBlank(message = "받으시는 분")
|
||||
@Length(min=1, max=13)
|
||||
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 = "";
|
||||
/** 상세주소 */
|
||||
private String dtlAdres;
|
||||
/** 기본배송지여부 */
|
||||
private String dftDlvylcAt = "N";
|
||||
/** 최근배송지여부 */
|
||||
private String recentDlvylcAt;
|
||||
/** popUp 여부 확인 */
|
||||
private String isPop;
|
||||
/**오더링 방법 */
|
||||
private String ordering;
|
||||
/**콜백함수 이름 */
|
||||
private String callbackNm;
|
||||
/**쇼핑몰코드 */
|
||||
private String sopmalCd;
|
||||
/*녹취키*/
|
||||
private String customer_record_key;
|
||||
|
||||
/* formId */
|
||||
private String formId;
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
package com.wb.domainserver.domain.crm.main.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.auth.controller.AuthController;
|
||||
import com.wb.domainserver.domain.auth.vo.AuthVO;
|
||||
import com.wb.domainserver.domain.crm.main.vo.CrmMainVO;
|
||||
import com.wb.domainserver.domain.crm.main.vo.CrmMbrSrchVO;
|
||||
import com.wb.domainserver.domain.mngr.ordr.ordrmngr.vo.OrdrSrchVO;
|
||||
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.string.StringUtil;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
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.web.bind.annotation.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
/**
|
||||
*
|
||||
* CRM 메인 페이지
|
||||
* @author 추지훈
|
||||
* @since 2024-02-19
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-19 추지훈. 최초 생성
|
||||
* 2024-02-19 김혜인. 수정 주문 검색 추가
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Controller
|
||||
@Slf4j
|
||||
public class CrmMainController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
/** 공통 메시지 처리를 위한 메시지 객체 */
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
@Autowired
|
||||
private AuthController authController;
|
||||
|
||||
// @Value("${spring.security.oauth2.resourceserver.jwt.issuer-uri}")
|
||||
String issuerUri;
|
||||
|
||||
/**
|
||||
* CRM 메인 화면 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/crm/main")
|
||||
public String selectCrmMainPge(CrmMainVO mainVO, ModelMap model) {
|
||||
|
||||
|
||||
model.addAttribute("mainVO", mainVO);
|
||||
return "crm/main/CrmMainPgeR";
|
||||
}
|
||||
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/crm")
|
||||
public String selectCrmRootInqire() {
|
||||
return "redirect:/crm/main/selectCrmMainPge";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 로그아웃
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value="/crm/logout")
|
||||
public String crmLogout(HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd, HttpSession session) {
|
||||
session.invalidate();
|
||||
request.getSession().invalidate();
|
||||
request.getSession(true);
|
||||
String returnUrl = issuerUri+"/login";
|
||||
return "redirect:"+returnUrl;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 메인 화면 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmCtiUnion")
|
||||
public String selectCrmCtiUnion(CrmMainVO mainVO, ModelMap model) {
|
||||
|
||||
model.addAttribute("mainVO", mainVO);
|
||||
|
||||
return "crm/main/ctiUnion";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 회원 검색 팝업 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmMbrSrchForm")
|
||||
public String selectCrmMbrSrchForm(CrmMbrSrchVO mbrSrchVO, ModelMap model, HttpSession session, HttpServletRequest request, HttpServletResponse response, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
|
||||
|
||||
// crm 전화받은게 아니면.
|
||||
if(StringUtil.isEmpty(mbrSrchVO.getSopmalCd())) {
|
||||
mbrSrchVO.setSopmalCd(authSopmalCd);
|
||||
}else{
|
||||
//콜 들어올 시 세션 쇼핑몰코드 전환
|
||||
AuthVO authVO = new AuthVO();
|
||||
authVO.setSopmalCd(mbrSrchVO.getSopmalCd());
|
||||
authController.selectMngrSopmalSite(authVO, request, response);
|
||||
}
|
||||
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMbrSrchPopupForm", mbrSrchVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO", mbrSrchVO);
|
||||
|
||||
return "crm/main/CrmMbrSrchPopupRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 검색 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmMbrSrch")
|
||||
public String selectCrmMbrSrch(CrmMbrSrchVO mbrSrchVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
|
||||
mbrSrchVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMbrSrch", mbrSrchVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO", mbrSrchVO);
|
||||
|
||||
return "crm/main/CrmMbrSrchPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 주문 검색 목록 조회 폼
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmOrdrSrchPopupForm")
|
||||
public String selectCrmOrdrSrchPopupForm(ModelMap model ,OrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectBOAllOrdrListInqire", ordrSrchVO),
|
||||
model,
|
||||
"cond"
|
||||
);
|
||||
model.addAttribute("paramVO", ordrSrchVO);
|
||||
|
||||
return "crm/main/CrmOrdrSrchPopupRForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 주문 검색 목록 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmOrdrSrch", method = RequestMethod.POST)
|
||||
public String selectCrmOrdrSrch (ModelMap model , OrdrSrchVO ordrSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
ordrSrchVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/ordr/ordr/selectAllOrdrListInqireAjax", ordrSrchVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/main/CrmOrdrSrchPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 콜센터 창으로 연결
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/callCenterCnncButton")
|
||||
public String callCenterCnncButton () {
|
||||
|
||||
|
||||
return "crm/main/ctiUnion";
|
||||
}
|
||||
|
||||
/**
|
||||
* 해당 회원 crm 정보 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmMbrInfo")
|
||||
public ResponseEntity<WnbtResponse> selectCrmMbrInfo (CrmMainVO mainVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mainVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
/*검색어에 해당하는 회원 조회*/
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuMbrInfoInqire", mainVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 crm 정보 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectCrmNmbrInfo")
|
||||
public ResponseEntity<WnbtResponse> selectCrmNmbrInfo (CrmMainVO mainVO, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mainVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
/*검색어에 해당하는 회원 조회*/
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuNmbrInfoInqire", mainVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* crm 쇼핑몰 이름 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/crm/main/selectSopmalNm")
|
||||
public ResponseEntity<WnbtResponse> selectSopmalNm(CrmMainVO mainVO) {
|
||||
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOSopmalNm", mainVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.wb.domainserver.domain.crm.main.vo;
|
||||
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
*
|
||||
* CRM 메인 VO
|
||||
* @author 추지훈
|
||||
* @since 2023-12-11
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2023-12-11 추지훈 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmMainVO extends AbstractVO {
|
||||
|
||||
|
||||
private String phone;
|
||||
|
||||
private String sopmalCd;
|
||||
private String ctiAt;
|
||||
|
||||
private String record_key = "";
|
||||
|
||||
/*left 회원 정보*/
|
||||
/*회원고유번호*/
|
||||
private String mbrInnb;
|
||||
/*회원구분코드*/
|
||||
private String mbrDvCd;
|
||||
/*left 비회원정보*/
|
||||
private String mbtlnb;
|
||||
/*left 비회원정보*/
|
||||
private String ordrInnb;
|
||||
/*left 비회원 이름*/
|
||||
private String mbrNm;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.wb.domainserver.domain.crm.main.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
*
|
||||
* 회원 검색
|
||||
* @author 김혜인
|
||||
* @since 2024-01-10
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-15 추지훈. 수정
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmMbrSrchVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**검색어 구분*/
|
||||
private String srchKywordDv;
|
||||
/**검색어 키워드*/
|
||||
private String srchKyword;
|
||||
|
||||
/** 검색_회원구분코드 */
|
||||
private String srchMbrDvCd;
|
||||
|
||||
/** 가입일 검색 시작*/
|
||||
private String sbscrbStrtDt;
|
||||
/** 가입일 검색 종료*/
|
||||
private String sbscrbEndDt;
|
||||
|
||||
/** 최종방문일 검색 시작*/
|
||||
private String loginStrtDt;
|
||||
/** 최종방문일 검색 종료*/
|
||||
private String loginEndDt;
|
||||
|
||||
/** 등급코드 */
|
||||
private String srchGradInnb;
|
||||
|
||||
/** 주문 금액 검색 시작*/
|
||||
private String srchStrtOrdrAmt;
|
||||
/** 주문 금액 검색 종료*/
|
||||
private String srchEndOrdrAmt ;
|
||||
|
||||
/**검색 시작 주문 금액 날짜 */
|
||||
private String srchStrtOrdrAmtDt;
|
||||
/**검색 종료 주문 금액 날짜 */
|
||||
private String srchEndOrdrAmtDt ;
|
||||
|
||||
|
||||
/**검색 시작 주문 건수*/
|
||||
private String srchStrtOrdrCnt;
|
||||
/**검색 종료 주문 건수*/
|
||||
private String srchEndOrdrCnt;
|
||||
|
||||
/**주문 건수 검색 시작 날짜 */
|
||||
private String srchStrtOrdrCntDt;
|
||||
/**주문 건수 검색 종료 날짜 */
|
||||
private String srchEndOrdrCntDt;
|
||||
|
||||
/**검색 시작 마일리지*/
|
||||
private String srchStrtMlg;
|
||||
/**검색 종료 마일리지*/
|
||||
private String srchEndMlg;
|
||||
|
||||
/**방문수, 리뷰 수 검색 구분*/
|
||||
private String vstRvwDv;
|
||||
/**검색 시작 방문수 or 리뷰 수*/
|
||||
private String srchStrtVstRvwCnt;
|
||||
/**검색 끝 방문수 or 리뷰 수*/
|
||||
private String srchEndVstRvwCnt;
|
||||
|
||||
/**회원가입 환경*/
|
||||
private String srchPlatform;
|
||||
|
||||
/**회원가입 방법*/
|
||||
private String srchrute;
|
||||
|
||||
/**마케팅 수신 동의*/
|
||||
private String srchMarktRecptnAgreAt;
|
||||
/**마케팅 수신 동의 브랜드*/
|
||||
private String[] srchBrand;
|
||||
|
||||
/**성별*/
|
||||
private String srchSexDstn;
|
||||
|
||||
/**나이 검색 시작*/
|
||||
private String srchStrtBrthDe;
|
||||
/**나이 검색 끝*/
|
||||
private String srchEndBrthDe;
|
||||
|
||||
/**리셀러 여부*/
|
||||
private String srchAppen;
|
||||
|
||||
/**쇼핑몰코드*/
|
||||
private String sopmalCd;
|
||||
/**정렬 방식*/
|
||||
private String sortDv;
|
||||
|
||||
|
||||
/*콜 관련*/
|
||||
//cti 고객 번호
|
||||
private String phone;
|
||||
//cti 레코드 키
|
||||
private String record_key = "";
|
||||
//cti 레코드키(커스텀)
|
||||
private String customer_record_key;
|
||||
//cti 여부
|
||||
private String ctiAt;
|
||||
}
|
||||
@@ -0,0 +1,427 @@
|
||||
package com.wb.domainserver.domain.crm.mbr.controller;
|
||||
|
||||
import com.wb.domainserver.common.msg.GconeMessageSource;
|
||||
import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO;
|
||||
import com.wb.domainserver.domain.crm.mbr.vo.CrmMbrVO;
|
||||
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.communicate.ValidateResultConverter;
|
||||
import com.wb.domainserver.util.string.StringUtil;
|
||||
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.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/crm/mbr")
|
||||
public class CrmMbrController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
@Autowired
|
||||
private GconeMessageSource gconeMessageSource;
|
||||
|
||||
/**
|
||||
* 로그/메모 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectLogMemoInqire")
|
||||
public String selectLogMemoInqire(CrmCnsltVO vo , CrmMbrVO mbrVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setPageDv("crm");
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoLogCrm", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/mbr/LogMemoR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 회원 관리자 메모 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateMemoUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateMemoUpdt(@Validated CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrMemoUpdt", mbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 정보 수정 이동
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrInfoUpdtInqire")
|
||||
public String selectMbrInfoUpdtInqire(CrmCnsltVO vo,CrmMbrVO mbrVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrInfoUpdtInqireCrm", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/mbr/MbrInfoUpdtU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 회원 정보 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateMbrInfoUpdt", method = RequestMethod.POST)
|
||||
public ResponseEntity<WnbtResponse> updateMbrInfoUpdt(@Validated CrmMbrVO mbrVO, HttpServletRequest request, @CookieValue(value = "authSopmalCd") String authSopmalCd, BindingResult bindingResult) {
|
||||
// 정합성 검사
|
||||
if (bindingResult.hasErrors()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
|
||||
} else {
|
||||
List<Map<String, String>> errorList = new ArrayList<>();
|
||||
|
||||
if (mbrVO.getMbrNm() == null || mbrVO.getMbrNm().isEmpty()) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("mbrNm",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[] { "회원명" })));
|
||||
}
|
||||
//아이디 변경시
|
||||
if("Y".equals(mbrVO.getMbrIdChngAt()) && (mbrVO.getMbrId() == null || mbrVO.getMbrId().isEmpty())){
|
||||
errorList.add(ValidateResultConverter.setErrorMap("mbrId",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[] { "회원아이디" })));
|
||||
}
|
||||
//비밀번호 변경시
|
||||
if ("Y".equals(mbrVO.getMbrPwdChngAt()) && (mbrVO.getMbrPassword() == null || mbrVO.getMbrPassword().isEmpty())) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("mbrPassword",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[] { "비밀번호" })));
|
||||
}
|
||||
//리셀러 변경시
|
||||
String beforeAppnDvCd = StringUtil.isEmpty(mbrVO.getBeforeAppnDvCd()) ? "01" : mbrVO.getBeforeAppnDvCd();
|
||||
if (!beforeAppnDvCd.equals(mbrVO.getAppnDvCd()) && StringUtil.isEmpty(mbrVO.getAppnMemo())) {
|
||||
errorList.add(ValidateResultConverter.setErrorMap("appnMemo",
|
||||
gconeMessageSource.getMessage("errors.required", new Object[]{"변경 사유"})));
|
||||
}
|
||||
if (errorList != null && !errorList.isEmpty()) {
|
||||
throw new WnbtRestException(ValidateResultConverter.convertCustomValidate(errorList));
|
||||
}
|
||||
}
|
||||
//쇼핑몰 코드 set
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
//아이디 중복 체크
|
||||
if("Y".equals(mbrVO.getMbrIdChngAt())){
|
||||
//아이디 중복 체크
|
||||
Map<String, Object> idResult = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOIdDplctCnfirm", mbrVO)
|
||||
);
|
||||
String possibleAt = (String) idResult.get("message");
|
||||
if("impossible".equals(possibleAt)){
|
||||
throw new WnbtRestException("중복된 아이디입니다.");
|
||||
}
|
||||
}
|
||||
//비밀번호 체크
|
||||
if("Y".equals(mbrVO.getMbrPwdChngAt())){
|
||||
/*1 비밀번호 변경 시 관리자 비밀번호 확인*/
|
||||
Map<String, Object> resultMap = responseHandler.handleResponseAsMap(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/admin/user/mngr/selectBOJobUserPasswordInqire", mbrVO)
|
||||
);
|
||||
int result = (int) resultMap.get("result");
|
||||
if (result == 0) {
|
||||
throw new WnbtRestException("관리자 비밀번호가 일치하지 않습니다");
|
||||
}else{
|
||||
/*2 비밀번호 정규 표현식 확인*/
|
||||
String password = mbrVO.getMbrPassword();
|
||||
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자 입력해 주세요.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//생년월 set
|
||||
mbrVO.setBrthDe(mbrVO.getBrthDe().replace(",", ""));
|
||||
|
||||
//등록 아이피 set
|
||||
String ip = (String) Util.getRequestInfo(request).get("XForwardedFor");
|
||||
mbrVO.setRegistIp(ip);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOMbrInfoUpdtCrm", mbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 회원 탈퇴 팝업 이동
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrSecsnProcsPopupForm")
|
||||
public String selectMbrSecsnProcsPopupForm(CrmMbrVO mbrVO, ModelMap model) {
|
||||
model.addAttribute("mbrVO",mbrVO);
|
||||
return "crm/mbr/MbrSecsnProcsPopupU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 회원 CRM 팝업 폼 ( 아이디 클릭시 바로 옆에 띄워지는 고객 CRM 팝업 화면 )
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrCrmInfoPopupForm")
|
||||
public String selectMbrCrmInfoPopupForm(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrCrmInfoPopupInqire", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mbr/MbrCrmInfoPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 비회원 CRM 팝업 폼 ( 아이디 클릭시 바로 옆에 띄워지는 고객 CRM 팝업 화면 )
|
||||
*
|
||||
* @param mbrVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectNmbrCrmInfoPopupForm")
|
||||
public String selectNmbrCrmInfoPopupForm(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCrmMenuNmbrInfoInqire", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("vo",mbrVO);
|
||||
return "crm/mbr/NmbrCrmInfoPopupR";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 정보 조회 이동
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCstmrInfoInqire")
|
||||
public String selectCstmrInfoInqire(CrmCnsltVO vo,CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOCstmrInfoInqire", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/mbr/CstmrInfoInqireR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 회원 정보 조회 > 관리매장 변경 팝업
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectManageStrChngPopupForm")
|
||||
public String selectManageStrChngPopupForm(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOManageStrChngPopupForm", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
|
||||
return "crm/mbr/ManageStrChngPopupU";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 탈퇴사유조회
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectSecsnResn")
|
||||
public ResponseEntity<WnbtResponse> selectSecsnResn(HttpServletRequest request, CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrwithdrawal", mbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 정보 조회 > 관리매장 수정
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateManageStrUpdt")
|
||||
public ResponseEntity<WnbtResponse> updateManageStrUpdt(HttpServletRequest request, CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) { //등록 ip 설정
|
||||
String ip = (String) Util.getRequestInfo(request).get("XForwardedFor");
|
||||
mbrVO.setRegistIp(ip);
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
//관리매장 없을시 set
|
||||
if(StringUtil.isEmpty(mbrVO.getBeforeStrNm())){
|
||||
mbrVO.setBeforeStrNm("관리매장 없음");
|
||||
}
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/updateBOManageStrUpdt", mbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* CRM 회원 활동 정보 조회 이동
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrActInfoInqire")
|
||||
public String selectMbrActInfoInqire(CrmCnsltVO vo ,CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selecBOtMbrActInfoInqire", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO",vo);
|
||||
return "crm/mbr/MbrActInfoInqireR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 회원 활동 정보 (고객 데이터 : 최근 본 상품 )
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrDataGoodsInqireToday")
|
||||
public String selectMbrDataGoodsInqireToday(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireToday", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mbr/MbrDataInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 활동 정보 (고객 데이터 : 위시리스트에 담은 상품 )
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrDataGoodsInqireWish")
|
||||
public String selectMbrDataGoodsInqireWish(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireWish", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mbr/MbrDataInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 활동 정보 (고객 데이터 : 장바구니에 담은 상품 )
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrDataGoodsInqireCart")
|
||||
public String selectMbrDataGoodsInqireCart(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireCart", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mbr/MbrDataInqireR";
|
||||
}
|
||||
|
||||
/**
|
||||
* CRM 회원 활동 정보 (고객 데이터 : 최근 검색어 )
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrDataGoodsInqireSrch")
|
||||
public String selectMbrDataGoodsInqireSrch(CrmMbrVO mbrVO, ModelMap model,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrDataGoodsInqireSrch", mbrVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mbr/MbrDataSrchKeywordR";
|
||||
}
|
||||
/**
|
||||
* CRM 회원 정보 조회
|
||||
*
|
||||
* @param paramVO
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMbrCrmInfo")
|
||||
public ResponseEntity<WnbtResponse> selectMbrCrmInfo(CrmMbrVO mbrVO,@CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
mbrVO.setSopmalCd(authSopmalCd);
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mbr/selectBOMbrCrmInfoPopupInqire", mbrVO),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,262 @@
|
||||
package com.wb.domainserver.domain.crm.mbr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import com.wb.domainserver.util.dataaccess.DataMap;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* 해당 클래스에 대한 설명을 입력하세요.
|
||||
* @author 추지훈
|
||||
* @since 2024-02-27
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-27 추지훈. 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmMbrVO extends AbstractVO{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
|
||||
// 회원 정보
|
||||
|
||||
/**회원 고유번호 배열*/
|
||||
private String[] mbrarr;
|
||||
|
||||
/**회원고유번호*/
|
||||
private String mbrInnb;
|
||||
|
||||
/**회원 구분 코드*/
|
||||
private String mbrDvCd;
|
||||
/**회원등급 고유번호*/
|
||||
private String mbrGradInnb;
|
||||
/**이전 회원등급 고유번호*/
|
||||
private String beforeMbrGradInnb;
|
||||
|
||||
/**유입경로번호*/
|
||||
private String inflowCoursNb;
|
||||
|
||||
/**가입환경코드*/
|
||||
private String sbscrbEnvrnCd;
|
||||
/**회원유형코드*/
|
||||
private String mbrTyCd;
|
||||
|
||||
/**회원id*/
|
||||
private String mbrId;
|
||||
/*id 변경 여부*/
|
||||
private String mbrIdChngAt;
|
||||
|
||||
/**회원비밀번호*/
|
||||
private String mbrPassword;
|
||||
|
||||
/**비밀번호변경일자*/
|
||||
private String passwordChngDe;
|
||||
|
||||
/** 비밀번호변경 여부 */
|
||||
private String mbrPwdChngAt;
|
||||
|
||||
|
||||
/**회원명*/
|
||||
private String mbrNm;
|
||||
|
||||
/**이메일*/
|
||||
private String email;
|
||||
|
||||
|
||||
/**휴대폰번호*/
|
||||
private String mbtlnb;
|
||||
|
||||
/**전화번호*/
|
||||
private String telnb;
|
||||
|
||||
/**우편번호*/
|
||||
private String zip;
|
||||
|
||||
/**도로명, 지번*/
|
||||
private String adresDv;
|
||||
|
||||
/**지번주소*/
|
||||
private String lnbAdres;
|
||||
|
||||
/**도로명주소*/
|
||||
private String rnmAdres;
|
||||
|
||||
/**주소*/
|
||||
private String adres;
|
||||
|
||||
/**상세주소*/
|
||||
private String dtlAdres;
|
||||
|
||||
/**성별*/
|
||||
private String sex;
|
||||
|
||||
/**일자는 01로 입력*/
|
||||
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;
|
||||
/** 등록자 IP */
|
||||
private String registIp;
|
||||
|
||||
/** 주문번호 */
|
||||
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;
|
||||
|
||||
/** gc_marketing_agree */
|
||||
/** 마케팅 발신 동의 여부 */
|
||||
private String marktRecptnAgreAt;
|
||||
/** 마케팅 발신 동의 여부 */
|
||||
private String beforeMarktRecptnAgreAt;
|
||||
|
||||
/** 마케팅 발신 수신 동의 여부 수정일 */
|
||||
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 stplatInnb;
|
||||
|
||||
|
||||
/** fm_marketing_agree_log */
|
||||
/** 약정코드 */
|
||||
private String advrtsRecptnAgreChngInnb;
|
||||
|
||||
/** 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;
|
||||
|
||||
|
||||
|
||||
|
||||
/** 관리자 확인 비밀번호 */
|
||||
private String password;
|
||||
|
||||
|
||||
|
||||
// 회원 탈퇴 fm_member_withdrawal
|
||||
|
||||
|
||||
/**탈퇴사유*/
|
||||
private String secsnResn;
|
||||
/**메모*/
|
||||
private String memo;
|
||||
/** 회원 탈퇴 고유번호 */
|
||||
private Integer withdrawalMbrInnb;
|
||||
|
||||
|
||||
|
||||
// 관리 매장 변경
|
||||
|
||||
/** 기존 관리 매장명 */
|
||||
private String beforeStrNm;
|
||||
/** 변결 매장명 */
|
||||
private String strNm;
|
||||
/** 매장 고유번호 */
|
||||
private Integer strInnb;
|
||||
/*포스매장고유번호*/
|
||||
private String posStrInnb;
|
||||
/*페이지구분*/
|
||||
private String pageDv;
|
||||
|
||||
/*쇼핑몰 리스트 => 회원 정보 수정 페이지 데이터 가져 올 때 사용*/
|
||||
private List<DataMap> sopmalList;
|
||||
|
||||
/*쇼핑몰별 마케팅 동의 여부 리스트*/
|
||||
private List<CrmMbrVO> agreeAtList;
|
||||
|
||||
/*리셀러 수정 전*/
|
||||
private String beforeAppnDvCd;
|
||||
/*리셀러 수정 후*/
|
||||
private String appnDvCd;
|
||||
/*지정 고유번호 배열*/
|
||||
private List<String> appnInnbArr;
|
||||
/*지정 메모*/
|
||||
private String appnMemo;
|
||||
}
|
||||
@@ -0,0 +1,267 @@
|
||||
package com.wb.domainserver.domain.crm.mlg.controller;
|
||||
|
||||
import com.wb.domainserver.domain.crm.cnslt.vo.CrmCnsltVO;
|
||||
import com.wb.domainserver.domain.crm.mlg.vo.CrmMlgVO;
|
||||
import com.wb.domainserver.domain.crm.mlg.vo.PosReqVO;
|
||||
import com.wb.domainserver.domain.mngr.mbr.vo.MlgSrchVO;
|
||||
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.CookieValue;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* CRM 마일리지 내역
|
||||
* @author 추지훈
|
||||
* @since 2024-02-19
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-19 추지훈. 최초 생성
|
||||
* 2024-05-20 이운산 수정
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Slf4j
|
||||
@Controller
|
||||
@RequestMapping("/crm/mlg")
|
||||
public class CrmMlgController {
|
||||
|
||||
/** WebClient 호출을 위한 wrapper */
|
||||
@Autowired
|
||||
private WnbtWebClientResponseHandler responseHandler;
|
||||
|
||||
@Autowired
|
||||
private SendToResrc sendToResrc;
|
||||
|
||||
|
||||
/**
|
||||
* 마일리지 내역 폼 이동
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMlgDtlsForm")
|
||||
public String selectMlgDtlsForm(CrmCnsltVO cnsltVO , CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO",cnsltVO);
|
||||
return "crm/mlg/MlgDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 마일리지 내역 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMlgDtlsInqire")
|
||||
public String selectMlgDtlsInqire(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mlg/MlgDtlsR";
|
||||
}
|
||||
|
||||
/**
|
||||
* 마일리지 팝업 목록 검색 폼
|
||||
* @param mlgSrchVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/selectMlgManagePopupForm")
|
||||
public String selectMlgManagePopupForm(ModelMap model,MlgSrchVO mlgSrchVO, @CookieValue(value = "authSopmalCd") String authSopmalCd){
|
||||
mlgSrchVO.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", mlgSrchVO),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
//BO 회원 목록조회 API 결과를 Map으로 변환하여 설정
|
||||
model.addAttribute("mbrSrchVO",mlgSrchVO);
|
||||
|
||||
return "mngr/mbr/MlgManagePopupCForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 마일리지 팝업 내역 조회
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectMlgDtlsPopupInqire")
|
||||
public String selectMlgDtlsPopupInqire(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgListInqire", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "mngr/mbr/MlgManagePopupR";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 마일리지 등록
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/insertCrmMlgMngrUpDn")
|
||||
public ResponseEntity<WnbtResponse> insertCrmMlgMngrUp(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
log.debug("CrmMlgVO {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOMlgMngrUpDn", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* CRM 마일리지 유효기간 수정
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/updateCrmMlgUsePosblEndDt")
|
||||
public ResponseEntity<WnbtResponse> updateCrmMlgUsePosblEndDt(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
log.debug("CrmMlgVO {}", vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/updateBOMlgUsePosblEndDt", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/*****
|
||||
* 포스 마일리지 테스트용 임시
|
||||
******/
|
||||
/**
|
||||
* 포스 마일리지 테스트 페이지
|
||||
* @param WithdrawalVO
|
||||
* @return String
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value="/goPosMlgTestForm")
|
||||
public String goPosMlgTestForm(ModelMap model,MlgSrchVO mlgSrchVO, HttpSession session){
|
||||
|
||||
return "mngr/mbr/PosMlgTestForm";
|
||||
}
|
||||
|
||||
/**
|
||||
* 포스 마일리지 적립
|
||||
* @param boMlgVO
|
||||
* @return ResponseEntity<?>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/insertPosMlgAdd")
|
||||
public ResponseEntity<?> insertPosMlgAdd(@RequestBody PosReqVO vo) {
|
||||
|
||||
log.debug("마일리지 적용 파라미터 확인{}",vo);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/insertBOPosMlgAdd", vo),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 포스 마일리지 환불 여부 확인
|
||||
* @param boMlgVO
|
||||
* @return ResponseEntity<?>
|
||||
*/
|
||||
@Policy(AuthPolicy.PUBLIC)
|
||||
@RequestMapping(value = "/selectChkPosRefundable")
|
||||
public ResponseEntity<?> selectChkPosRefundable(@RequestBody HashMap<String, Object> map, HttpSession session) {
|
||||
|
||||
log.debug("마일리지 적용 파라미터 확인{}",map);
|
||||
|
||||
return responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOPosChkRefundable", map),
|
||||
ReplyFromResrc::getReply
|
||||
);
|
||||
}
|
||||
|
||||
/********
|
||||
* 충전형 마일리지
|
||||
********/
|
||||
/**
|
||||
* 충전형 마일리지 내역 폼 이동
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCashDtlsForm")
|
||||
public String selectCashDtlsForm(CrmCnsltVO cnsltVO, CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOMlgManagePopupForm", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
model.addAttribute("cnsltVO", cnsltVO);
|
||||
return "crm/mlg/CashDtlsRForm";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 충전형 마일리지 내역 조회
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Policy(AuthPolicy.RESTRICTED)
|
||||
@RequestMapping(value = "/selectCashDtlsInqire")
|
||||
public String selectCashDtlsInqire(CrmMlgVO vo, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
|
||||
vo.setSopmalCd(authSopmalCd);
|
||||
|
||||
|
||||
responseHandler.handleResponse(
|
||||
sendToResrc.ofPost(RESRC.GCONEBO, "/gcone/mbr/mlg/selectBOCashList", vo),
|
||||
model,
|
||||
"resultMap"
|
||||
);
|
||||
|
||||
return "crm/mlg/CashDtlsR";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
package com.wb.domainserver.domain.crm.mlg.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;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmMlgVO 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 Integer mlgValidPd;
|
||||
/** 마일리지 유효기간 설정 여부 */
|
||||
private String mlgValidPdAt;
|
||||
|
||||
/** 마일리지 유효기간 설정 여부*/
|
||||
private String validAt;
|
||||
|
||||
// 검색
|
||||
/** 검색_마일리지 적립 구분코드 */
|
||||
private String srchMlgAccmlDvCd;
|
||||
/** 검색_브랜드명 */
|
||||
private String srchSopmalCd;
|
||||
/** 검색_시작날짜 */
|
||||
private String srchStartDate;
|
||||
/** 검색_종료날짜 */
|
||||
private String srchEndDate;
|
||||
/** 검색_마일리지 적립 구분 */
|
||||
private List<String> srchMlgAccmlDv;
|
||||
|
||||
/** 유효기간 수정_종료일자 */
|
||||
private String usePosblEndDtStr;
|
||||
|
||||
/** 문자 입력 내용 */
|
||||
private String mlgSmsCn;
|
||||
/** 문자 발송 전화번호 */
|
||||
private String mbtlnb;
|
||||
/** 문자 발송 고객명 */
|
||||
private String mbrNm;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
114
src/main/java/com/wb/domainserver/domain/crm/mlg/vo/MlgVO.java
Normal file
114
src/main/java/com/wb/domainserver/domain/crm/mlg/vo/MlgVO.java
Normal file
@@ -0,0 +1,114 @@
|
||||
package com.wb.domainserver.domain.crm.mlg.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
*
|
||||
* 마일리지 VO
|
||||
* @author 추지훈
|
||||
* @since 2024-02-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-02-05 추지훈 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class MlgVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 마일리지 정보
|
||||
*/
|
||||
/** 마일리지 고유번호 */
|
||||
private BigInteger mlgInnb;
|
||||
/** 주문고유번호 */
|
||||
private BigInteger 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;
|
||||
/** 사용가능종료일시 */
|
||||
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 String strnm;
|
||||
/** 매장구분 */
|
||||
private String strDvCd;
|
||||
/** 포스코드 */
|
||||
private String posCd;
|
||||
/** 등록자구분 */
|
||||
private String regusrDvCd;
|
||||
/** 수정자구분 */
|
||||
private String updusrDvCd;
|
||||
|
||||
/**
|
||||
* db 없는 항목
|
||||
*/
|
||||
|
||||
/** 마일리지 유효기간 */
|
||||
private Integer mlgValidDt;
|
||||
|
||||
/** 사용쇼핑몰 코드 */
|
||||
private String useSopmalCd;
|
||||
|
||||
/** 마일리지 유효기간 설정 여부*/
|
||||
private String validAt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.wb.domainserver.domain.crm.mlg.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
*
|
||||
* 마일리지 VO
|
||||
* @author 추지훈
|
||||
* @since 2024-02-05
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* == (Modification Information) == 개정이력
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2024-05-21 이운산 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PosReqVO extends AbstractVO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 포스 요청 정보
|
||||
*/
|
||||
/** 매장 코드 */
|
||||
private String storecode;
|
||||
/** 포스 코드 */
|
||||
private String poscode;
|
||||
/** cmd */
|
||||
private String cmd;
|
||||
/**회원 아이디 */
|
||||
private String uid;
|
||||
/**매출 코드 */
|
||||
private String ocode;
|
||||
/**실 결제 금액 (할인 금액 및 사용 마일리지 제외) */
|
||||
private Integer amt;
|
||||
/**프로모션 추가적립금액 */
|
||||
private Integer promsaveamt;
|
||||
/**구매한 상품정보 추가*/
|
||||
private List<HashMap<String, Object>> detail_arr;
|
||||
/** search_item (string) : uid(아이디), username(이름), cp(휴대폰 번호) */
|
||||
private String searchItem;
|
||||
/** 검색어 */
|
||||
private String searchKey;
|
||||
/** 나눌 갯수 */
|
||||
private Integer limit;
|
||||
/** 시작 위치 */
|
||||
private Integer offset;
|
||||
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,104 @@
|
||||
package com.wb.domainserver.domain.crm.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmGoodsVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 주문고유번호 */
|
||||
private String ordrInnb;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 상위 카테고리 */
|
||||
private String upperCtgryId;
|
||||
|
||||
/** 카테고리 */
|
||||
private String ctgryId;
|
||||
|
||||
/** 노출 코드 */
|
||||
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 kwrd;
|
||||
|
||||
/** 판매상품 고유번호 */
|
||||
private String goodsInnb;
|
||||
|
||||
/** 판매상품 유형 */
|
||||
private String goodsKndCd;
|
||||
|
||||
/** 상품옵션 고유번호 */
|
||||
private String goodsOptnInnb;
|
||||
|
||||
/** 상품옵션 고유번호 배열*/
|
||||
private String[] goodsOptnInnbs;
|
||||
|
||||
/** 상품옵션 구분 */
|
||||
private String goodsOptnDv;
|
||||
|
||||
/** 상품옵션 타입 */
|
||||
private String optnTy;
|
||||
|
||||
/** 개수 */
|
||||
private int qy;
|
||||
|
||||
/** 입력옵션 텍스트 */
|
||||
private String inputOptn;
|
||||
|
||||
/** 입력옵션 텍스트 */
|
||||
private String inputOptnText;
|
||||
|
||||
/** 쿠폰 고유번호 */
|
||||
private String couponInnb;
|
||||
|
||||
/** 다운로드쿠폰 고유번호 */
|
||||
private String dwldCouponInnb;
|
||||
|
||||
/** 중복할인여부 */
|
||||
private String dplctDscntAt;
|
||||
|
||||
/** 타쿠폰동시사용여부 */
|
||||
private String otrCouponSmtmUseAt;
|
||||
|
||||
/** 적용쿠폰 */
|
||||
private String usedCoupons;
|
||||
|
||||
/** 옵션관계번호 배열 */
|
||||
private String[] optnRelateNbs;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.wb.domainserver.domain.crm.ordr.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 CrmOrdrVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
/** 주소록 고유번호 */
|
||||
private int adbkInnb;
|
||||
/** 회원 고유번호 */
|
||||
@NotBlank
|
||||
private int mbrInnb;
|
||||
/** 배송지설명내용 */
|
||||
//private String dlvylcDcCn;
|
||||
/** 받는사람명 */
|
||||
@NotBlank(message = "받는사람명")
|
||||
private String recpntNm;
|
||||
/** 전화번호 */
|
||||
//private String telnb;
|
||||
/** 휴대폰번호 */
|
||||
@NotBlank(message = "휴대폰번호")
|
||||
private String mbtlnb;
|
||||
/** 우편번호 */
|
||||
@NotBlank(message = "우편번호")
|
||||
private String zip;
|
||||
/** 도로명,지번 구분 */
|
||||
private String adresDv;
|
||||
/** 지번주소 */
|
||||
private String lnbAdres = "";
|
||||
/** 도로명주소 */
|
||||
private String rnmAdres = "";
|
||||
/** 상세주소 */
|
||||
@NotBlank(message = "상세주소")
|
||||
private String dtlAdres;
|
||||
/** 지번주소 */
|
||||
private String dftDlvylcAt;
|
||||
/** 기본배송지여부 */
|
||||
private String recentDlvylcAt;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package com.wb.domainserver.domain.crm.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class CrmPurchsrVO extends AbstractVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/** 쇼핑몰 코드 */
|
||||
private String sopmalCd;
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 회원아이디 */
|
||||
private String mbrId;
|
||||
|
||||
/** 회원명 */
|
||||
private String mbrNm;
|
||||
|
||||
/** 회원명 email */
|
||||
private String email;
|
||||
|
||||
/** 회원명 핸드폰번호 */
|
||||
private String mbtlnb;
|
||||
|
||||
/** 검색어 */
|
||||
private String kwrd;
|
||||
|
||||
/** 일자 구분 */
|
||||
private String dateDv;
|
||||
|
||||
/** 시작 일자 */
|
||||
private String startDate;
|
||||
|
||||
/** 종료 일자 */
|
||||
private String endDate;
|
||||
|
||||
/** SMS 수신 동의 여부 */
|
||||
private String smsRecptnAgreAt;
|
||||
|
||||
/** 이메일 수신 동의 여부 */
|
||||
private String emailRecptnAgreAt;
|
||||
|
||||
/** 등급 */
|
||||
private String mbrGradInnb;
|
||||
|
||||
/** 구매금액 시작 */
|
||||
private String startPurchaseAmount;
|
||||
|
||||
/** 구매금액 종료 */
|
||||
private String endPurchaseAmount;
|
||||
|
||||
/** 마일리지액 시작 */
|
||||
private String startMlgAmt;
|
||||
|
||||
/** 마일리지액 */
|
||||
private String endMlgAmt;
|
||||
|
||||
/** 주문 횟수 시작 */
|
||||
private String startOrderCnt;
|
||||
|
||||
/** 주문 횟수 종료 */
|
||||
private String endOrderCnt;
|
||||
|
||||
/** 리뷰 횟수 시작 */
|
||||
private String startRvwCnt;
|
||||
|
||||
/** 리뷰 횟수 종료 */
|
||||
private String endRvwCnt;
|
||||
|
||||
/** 방문 횟수 시작 */
|
||||
private String startVisitCnt;
|
||||
|
||||
/** 방문 횟수 종료 */
|
||||
private String endVisitCnt;
|
||||
|
||||
/** 주소록 고유번호 */
|
||||
private String adbkInnb;
|
||||
|
||||
/** 주소록 고유번호 목록*/
|
||||
private String[] adbkInnbs;
|
||||
|
||||
/** 기본배송지 여부 */
|
||||
private String dftDlvylcAt;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.wb.domainserver.domain.crm.ordr.vo;
|
||||
|
||||
public class CrmRefndVO {
|
||||
|
||||
}
|
||||
214
src/main/java/com/wb/domainserver/domain/crm/ordr/vo/PayVO.java
Normal file
214
src/main/java/com/wb/domainserver/domain/crm/ordr/vo/PayVO.java
Normal file
@@ -0,0 +1,214 @@
|
||||
package com.wb.domainserver.domain.crm.ordr.vo;
|
||||
|
||||
import com.wb.domainserver.domain.comm.vo.AbstractVO;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class PayVO extends AbstractVO {
|
||||
|
||||
/** 쇼핑몰코드 */
|
||||
private String sopmalCd="";
|
||||
|
||||
/** 결제금액 */
|
||||
private String amount;
|
||||
|
||||
/** 주문번호(토스/kcp) */
|
||||
private String orderId;
|
||||
|
||||
/** 주문품목(토스) / 상품명(kcp) */
|
||||
private String orderName="";
|
||||
|
||||
/** 회원고유번호 */
|
||||
private String customerIdentityNumber;
|
||||
|
||||
/** 현금영수증종류 */
|
||||
private String type;
|
||||
|
||||
/** 면세처리금액 */
|
||||
private String taxFreeAmount;
|
||||
|
||||
/** 발급 혹은 취소 요청한 현금영수증 한 건을 특정하는 키 */
|
||||
private String receiptKey;
|
||||
|
||||
/** 결제를 식별하는 키. 토스페이먼츠에서 발급. 결제 승인, 결제 조회, 결제 취소 등 운영에 필요한 값입니다. */
|
||||
private String paymentKey;
|
||||
|
||||
/** 결제수단의 ID */
|
||||
private String methodId;
|
||||
|
||||
//여기서부터 kcp
|
||||
/** 현금영수증 거래번호 cash_no */
|
||||
private String cashNo;
|
||||
|
||||
/** 현금영수증 거래번호 cash_no : 조회 > tno */
|
||||
private String tno;
|
||||
|
||||
/** 현금영수증 거래번호 cash_no : 취소 > mod_value */
|
||||
private String modValue;
|
||||
|
||||
/** 인증서정보(직렬화) */
|
||||
private String kcpCertInfo;
|
||||
|
||||
/** 원거래 시각 */
|
||||
private String tradTime;
|
||||
|
||||
/** 발행용도 */
|
||||
private String trCode;
|
||||
|
||||
/** 휴대폰번호/현금영수증 카드/사업자번호 */
|
||||
private String idInfo;
|
||||
|
||||
/** 거래금액 총합 */
|
||||
private String amtTot;
|
||||
|
||||
/** 공급가액 */
|
||||
private String amtSup;
|
||||
|
||||
/** 부가가치세 */
|
||||
private String amtTax;
|
||||
|
||||
/** 사업장 구분 */
|
||||
private String corpType="0";
|
||||
|
||||
/** 주문자명 */
|
||||
private String buyrName="";
|
||||
|
||||
/** 주문자 E-MAIL */
|
||||
private String buyrMail="";
|
||||
|
||||
/** 취소 요청 정보 */
|
||||
private String modType;
|
||||
|
||||
/** 부분취소 요청 금액 */
|
||||
private String modMny;
|
||||
|
||||
/** 부분취소 가능 금액 */
|
||||
private String remMny;
|
||||
|
||||
/** 취소사유 */
|
||||
private String modDesc;
|
||||
|
||||
/** kcp 결체승인시 필요한 암호값 (kcp발급) */
|
||||
private String encInfo;
|
||||
|
||||
/** kcp 결체승인시 필요한 암호값 (kcp발급) */
|
||||
private String encData;
|
||||
|
||||
/** KCP 거래 고유번호 (kcp발급) */
|
||||
private String tranCd;
|
||||
|
||||
/** 결제수단 */
|
||||
private String payMethod;
|
||||
|
||||
/** 결제통화 */
|
||||
private String currency;
|
||||
|
||||
/** 결제금액 */
|
||||
private String goodMny;
|
||||
|
||||
/** 에스크로 사용 여부 */
|
||||
private String escwUsed;
|
||||
|
||||
/** 에스크로 결제처리 모드 : 에스크로: Y, 일반: N */
|
||||
private String payMod;
|
||||
|
||||
/** 에스크로 수취인명 */
|
||||
private String rcvrName;
|
||||
|
||||
/** 에스크로 수취인 연락처1 */
|
||||
private String rcvrTel1;
|
||||
|
||||
/** 에스크로 수취인 휴대폰번호 */
|
||||
private String rcvrTel2;
|
||||
|
||||
/** 에스크로 수취인 E-mail */
|
||||
private String rcvrMail;
|
||||
|
||||
/** 에스크로 수취인 우편번호 */
|
||||
private String rcvrZipx;
|
||||
|
||||
/** 에스크로 수취인 주소 */
|
||||
private String rcvrAdd1;
|
||||
|
||||
/** 에스크로 수취인 상세주소 */
|
||||
private String rcvrAdd2;
|
||||
|
||||
/** 에스크로 배송 소요일 */
|
||||
private String deliTerm;
|
||||
|
||||
/** 에스크로 장바구니 상품 개수(종류수) */
|
||||
private String baskCntx;
|
||||
|
||||
/** 에스크로 장바구니 상품 상세 정보 */
|
||||
private String goodInfo;
|
||||
|
||||
/** 에스크로 상태변경 택배송장번호 */
|
||||
private String deliNumb;
|
||||
|
||||
/** 에스크로 상태변경 배송 업체명 */
|
||||
private String deliCorp;
|
||||
|
||||
|
||||
//수기결제 공용
|
||||
/** 수기결제 - 카드변호 */
|
||||
private String cardNumber;
|
||||
|
||||
/** 수기결제 - 카드유효년월(YYMM) */
|
||||
private String cardExpiration;
|
||||
|
||||
/** 수기결제 - 카드유효년도(YY) */
|
||||
private String cardExpirationYear;
|
||||
|
||||
/** 수기결제 - 카드유효월(MM) */
|
||||
private String cardExpirationMonth;
|
||||
|
||||
/** 수기결제 - 카드비밀번호 */
|
||||
private String cardPassword;
|
||||
|
||||
/** 수기결제 - 고객생년월일 */
|
||||
private String customerBirthday;
|
||||
|
||||
/** 수기결제 - 고객이름 */
|
||||
private String customerName;
|
||||
|
||||
/** 수기결제 - 고객이메일 */
|
||||
private String customerEmail;
|
||||
|
||||
/** 수기결제 - 고객전화번호 */
|
||||
private String customerTel;
|
||||
|
||||
/** 수기결제 - 할부개월수 */
|
||||
private String cardInstallmentPlan;
|
||||
|
||||
//결제정보
|
||||
/** 결제정보 - PG회사명 */
|
||||
private String pgCmpnyNm;
|
||||
|
||||
/** 결제정보 - 결제타입코드 */
|
||||
private String setleTyCd;
|
||||
|
||||
/** 결제정보 - 결제자 */
|
||||
private String setlerNm;
|
||||
|
||||
/** 결제정보 - 회원고유번호 */
|
||||
private String mbrInnb;
|
||||
|
||||
/** 결제정보 - 회원ID */
|
||||
private String mbrId;
|
||||
|
||||
/** 결제정보 - 회원구분코드 */
|
||||
private String mbrDvCd;
|
||||
|
||||
/** 결제정보 - 코드 */
|
||||
private String code;
|
||||
|
||||
/** 결제정보 - 모드구분 */
|
||||
private String modGubun;
|
||||
|
||||
/** 세션 gcpay token */
|
||||
private String sessionToken;
|
||||
|
||||
private String mbtlnb;
|
||||
}
|
||||
Reference in New Issue
Block a user