Bladeren bron

Merge branch 'card007' into order

card007 5 jaren geleden
bovenliggende
commit
81a91a61de
21 gewijzigde bestanden met toevoegingen van 447 en 95 verwijderingen
  1. 11 0
      src/main/java/com/style24/front/biz/dao/TsfCouponDao.java
  2. 8 1
      src/main/java/com/style24/front/biz/dao/TsfPointDao.java
  3. 22 0
      src/main/java/com/style24/front/biz/service/TsfCouponService.java
  4. 11 11
      src/main/java/com/style24/front/biz/service/TsfCustomerService.java
  5. 10 1
      src/main/java/com/style24/front/biz/service/TsfPointService.java
  6. 4 5
      src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java
  7. 49 0
      src/main/java/com/style24/front/biz/thirdparty/Yes24Login.java
  8. 31 1
      src/main/java/com/style24/front/biz/web/TsfIndexController.java
  9. 27 0
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  10. 19 2
      src/main/java/com/style24/front/biz/web/TsfOrderController.java
  11. 7 7
      src/main/java/com/style24/persistence/domain/Cate4Srch.java
  12. 5 5
      src/main/java/com/style24/persistence/domain/Goods.java
  13. 37 0
      src/main/java/com/style24/persistence/domain/Search.java
  14. 20 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml
  15. 1 1
      src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml
  16. 38 0
      src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml
  17. 16 14
      src/main/resources/config/application.yml
  18. 1 1
      src/main/webapp/WEB-INF/views/web/customer/JoinTypeFormWeb.html
  19. 51 10
      src/main/webapp/WEB-INF/views/web/mypage/MypagePointFormWeb.html
  20. 36 18
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  21. 43 18
      src/main/webapp/ux/style24_link.js

+ 11 - 0
src/main/java/com/style24/front/biz/dao/TsfCouponDao.java

@@ -40,4 +40,15 @@ public interface TsfCouponDao {
 	 * @since 2021.02.25
 	 */
 	Collection<Coupon> getCustGradeCouponInfo(Coupon coupon);
+
+
+	/**
+	 * 회원가입 쿠폰
+	 * @param coupon - 쿠폰정보
+	 * @return Coupon
+	 * @author jsshin
+	 * @since 2021. 03. 03
+	 */
+	Coupon getJoinCoupon(Coupon coupon);
+
 }

+ 8 - 1
src/main/java/com/style24/front/biz/dao/TsfPointDao.java

@@ -25,9 +25,16 @@ public interface TsfPointDao {
 	Point getExpectedPointInfo(Point point);
 	Point getExtinctPointInfo(Point point);
 	
-	
+	/**
+	 * 포인트정보 내역조회
+	 *
+	 * @param Point
+	 * @author csh9191
+	 * @since 2021. 03. 03
+	 */	
 	Collection<Point> getAccumulatePointList(Point point);
 	Collection<Point> getUsePointList(Point point);
+	Collection<Point> getAllPointList(Point point);
 	
 	
 

+ 22 - 0
src/main/java/com/style24/front/biz/service/TsfCouponService.java

@@ -254,4 +254,26 @@ public class TsfCouponService {
 		
 		return count;
 	}
+
+	/**
+	 * 회원가입시 혜택 쿠폰지급
+	 *
+	 * @param coupon - 쿠폰정보
+	 * @author jsshin
+	 * @since 2021.03.03
+	 */
+	@Transactional("shopTxnManager")
+	public void saveJoinCoupon(Coupon coupon) {
+		Coupon joinCoupon = couponDao.getJoinCoupon(coupon);
+		if (joinCoupon != null) {
+			CustCoupon custCoupon = new CustCoupon();
+			custCoupon.setCpnId(joinCoupon.getCpnId());
+			custCoupon.setAvailStdt(joinCoupon.getAvailStdt());
+			custCoupon.setAvailEddt(joinCoupon.getAvailEddt());
+			custCoupon.setPubReason(TscConstants.PubReason.JOIN.value());
+			custCoupon.setEndAlimSendYn(joinCoupon.getEndAlimYn());
+			custCoupon.setUpdNo(coupon.getCustNo());
+			custCoupon.setRegNo(coupon.getCustNo());
+		}
+	}
 }

+ 11 - 11
src/main/java/com/style24/front/biz/service/TsfCustomerService.java

@@ -6,7 +6,6 @@ import com.gagaframework.web.security.GagaPasswordEncoder;
 import com.style24.core.biz.service.TscCustomerService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.session.TscSession;
-import com.style24.core.support.util.CryptoUtils;
 import com.style24.core.support.util.MaskingUtils;
 import com.style24.front.support.security.TsfLoginDetails;
 import com.style24.front.support.security.session.TsfSession;
@@ -14,7 +13,6 @@ import com.style24.persistence.domain.Coupon;
 import com.style24.persistence.domain.CustSnsInfo;
 import com.style24.persistence.domain.Customer;
 import com.style24.persistence.domain.Login;
-import com.style24.persistence.domain.Point;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
@@ -52,6 +50,9 @@ public class TsfCustomerService {
 	@Autowired
 	private TsfLoginService loginService;
 
+	@Autowired
+	private TsfCouponService couponService;
+
 	@Autowired
 	private ObjectMapper objectMapper;
 
@@ -332,21 +333,20 @@ public class TsfCustomerService {
 	}
 
 	/**
-	 * 가입 후 처리 혜택(쿠폰,포인트)
+	 * 가입 후 처리 혜택(쿠폰)
 	 * @param customer - 일반가입, SNS 가입
 	 * @author jsshin
 	 * @since 2021. 02. 19
 	 */
 	@Transactional("shopTxnManager")
 	public void saveJoinPostProcessing(Customer customer) {
-		// 1. 쿠폰
-		// 어드민 > 회원등급정책 관리 > 신규회원등급으로 설정된 쿠폰
-
-
-		// 2. 포인트
-		// 어드민 > 포인트 정책설정 > 신규회원 등록된 포인트
-
-
+		// 1. 쿠폰지급 : 운영관리 > 회원등급정책관리 > WELCOME 등급
+		Coupon coupon = new Coupon();
+		coupon.setFrontGb(customer.getFrontGb());
+		coupon.setCustGrade(customer.getCustGrade());
+		coupon.setCustNo(customer.getCustNo());
+		coupon.setSiteCd(TscConstants.Site.STYLE24.value());
+		couponService.saveJoinCoupon(coupon);
 	}
 
 

+ 10 - 1
src/main/java/com/style24/front/biz/service/TsfPointService.java

@@ -42,7 +42,13 @@ public class TsfPointService {
 		return pointDao.getExtinctPointInfo(point);
 	}
 	
-	
+	/**
+	 * 포인트정보 내역조회
+	 *
+	 * @param Point
+	 * @author csh9191
+	 * @since 2021. 03. 03
+	 */	
 	public Collection<Point> getAccumulatePointList(Point point) {
 		return pointDao.getAccumulatePointList(point);
 	}
@@ -50,5 +56,8 @@ public class TsfPointService {
 	public Collection<Point> getUsePointList(Point point) {
 		return pointDao.getUsePointList(point);
 	}
+	public Collection<Point> getAllPointList(Point point) {
+		return pointDao.getAllPointList(point);
+	}
 
 }

+ 4 - 5
src/main/java/com/style24/front/biz/thirdparty/NiceCertify.java

@@ -5,7 +5,6 @@ import NiceID.Check.CPClient;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.util.GagaDateUtil;
 import com.gagaframework.web.util.GagaFileUtil;
-import com.style24.core.support.session.TscSession;
 import com.style24.front.support.security.session.TsfSession;
 import com.style24.persistence.domain.Customer;
 import lombok.extern.slf4j.Slf4j;
@@ -68,7 +67,7 @@ public class NiceCertify {
 
 		String sRequestNo = niceCheck.getRequestNO(niceId);
 		log.info("sRequestNo: {}", sRequestNo);
-		TscSession.setAttribute("REQ_SEQ", sRequestNo);
+		TsfSession.setAttribute("REQ_SEQ", sRequestNo);
 
 		String callback = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), niceCallback);
 		log.info("niceCallback: {}", niceCallback);
@@ -184,7 +183,7 @@ public class NiceCertify {
 		String sMobileCo = (String)result.get("MOBILE_CO");				// 통신사
 
 
-		String sRequestNo = TscSession.getAttribute("REQ_SEQ");	// 세션에 저장된 요청번호
+		String sRequestNo = TsfSession.getAttribute("REQ_SEQ");	// 세션에 저장된 요청번호
 		if (!sRequestNo.equals(sRequestNumber)) {
 			sResponseNumber = "";
 			sAuthType = "";
@@ -235,7 +234,7 @@ public class NiceCertify {
 		String callback = GagaFileUtil.getConcatenationPath( PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), ipinCallback);
 
 		String sCPRequestNo = ipinClinet.getRequestNO(ipinId);
-		TscSession.setAttribute("CPREQUEST", sCPRequestNo);
+		TsfSession.setAttribute("CPREQUEST", sCPRequestNo);
 
 		// 인증요청 암호화 데이터 생성
 		int iRtn = ipinClinet.fnRequest(ipinId, ipinPwd, sCPRequestNo, callback);
@@ -318,7 +317,7 @@ public class NiceCertify {
 		String sAuthInfo = ipinClinet.getAuthInfo();		// 본인확인수단 (0~4: 가이드 참조)
 
 
-		String sCPRequestNo = TscSession.getAttribute("CPREQUEST");
+		String sCPRequestNo = TsfSession.getAttribute("CPREQUEST");
 		if (!sCPRequestNo.equals(sCPRequestNum)) {
 			throw new IllegalStateException("세션값 불일치 오류 입니다.");
 		}

+ 49 - 0
src/main/java/com/style24/front/biz/thirdparty/Yes24Login.java

@@ -0,0 +1,49 @@
+package com.style24.front.biz.thirdparty;
+
+import com.gagaframework.web.util.GagaFileUtil;
+import com.style24.front.support.security.session.TsfSession;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.env.Environment;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+
+/**
+ * Yes24 로그인
+ *
+ * @author jsshin
+ * @since 2021. 03. 03
+ */
+@Component
+@Slf4j
+public class Yes24Login {
+
+	@Autowired
+	private Environment env;
+
+	@Autowired
+	private RestTemplate restTemplate;
+
+	public static final String PROTOCOL = "http://";
+
+	/**
+	 * YES24 로그인 창
+	 * @param state - 콜백 시 해당 값으로 비교 및 모바일을 redirect 값이 있음
+	 * @return String - 호출 url정보
+	 * @author jsshin
+	 * @since 2021. 03. 03
+	 */
+	public String getAuthorizeUrl(String state) {
+		String authorizeUrl = "https://www.yes24.com/Templates/FTLogin.aspx";
+		String callBackUrl = "/signin/snsLoginCallback?snsType=YS";
+		StringBuilder apiUrlBuilder = new StringBuilder();
+		String redirectUri = GagaFileUtil.getConcatenationPath(PROTOCOL + TsfSession.getHttpServletRequest().getServerName(), callBackUrl);
+		apiUrlBuilder.append(authorizeUrl)
+				.append("?PID=101582")
+				.append("&ReturnURL=")
+				.append(redirectUri);
+		log.info("apiUrlBuilder ===> {}", apiUrlBuilder.toString());
+		return apiUrlBuilder.toString();
+	}
+}

+ 31 - 1
src/main/java/com/style24/front/biz/web/TsfIndexController.java

@@ -17,6 +17,7 @@ import com.style24.core.support.env.TscConstants;
 import com.style24.front.biz.service.TsfCustomerService;
 import com.style24.front.biz.thirdparty.KaKaoLogin;
 import com.style24.front.biz.thirdparty.NaverLogin;
+import com.style24.front.biz.thirdparty.Yes24Login;
 import com.style24.persistence.domain.CustSnsInfo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,6 +62,9 @@ public class TsfIndexController extends TsfBaseController {
 	@Autowired
 	private NaverLogin naverLogin;
 
+	@Autowired
+	private Yes24Login yes24Login;
+
 	@Autowired
 	private ObjectMapper objectMapper;
 
@@ -187,7 +191,7 @@ public class TsfIndexController extends TsfBaseController {
 	 *
 	 * @return String
 	 * @author jsshin
-	 * @since 2020. 5. 25
+	 * @since 2021. 02. 23
 	 */
 	@GetMapping("/signin/naverlogin")
 	public String signinNaverLogin(@RequestParam(value = "rememberMe", required = false) String rememberMe
@@ -208,6 +212,32 @@ public class TsfIndexController extends TsfBaseController {
 		return "redirect:" + redirectUrl;
 	}
 
+	/**
+	 * YES24 로그인 페이지 호출
+	 *
+	 * @return String
+	 * @author jsshin
+	 * @since 2021. 02. 23
+	 */
+	@GetMapping("/signin/yes24login")
+	public String signinYes24Login(@RequestParam(value = "rememberMe", required = false) String rememberMe
+			, @RequestParam(value = "requestGb", required = false) String requestGb) {
+
+		if (StringUtils.isNotBlank(rememberMe)) {
+			// RememberMe 세션 저장
+			TsfSession.setAttribute("rememberMe", rememberMe);
+		}
+		// CSRF 방지를 위한 상태 토큰 생성 코드
+		SecureRandom random = new SecureRandom();
+		String state = new BigInteger(130, random).toString(32);
+		state += "!@!" + requestGb;
+		TsfSession.setAttribute("state", state);
+
+		String redirectUrl = yes24Login.getAuthorizeUrl(state);
+
+		return "redirect:" + redirectUrl;
+	}
+
 
 	/**
 	 * SNS 로그인

+ 27 - 0
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -20,6 +20,7 @@ import org.springframework.web.servlet.ModelAndView;
 import com.gagaframework.web.parameter.GagaMap;
 import com.gagaframework.web.rest.server.GagaResponseStatus;
 import com.style24.core.biz.service.TscCustomerService;
+import com.style24.core.biz.service.TscKakaoPayService;
 import com.style24.core.biz.service.TscOrderChangeService;
 import com.style24.core.biz.service.TscOrderRefundService;
 import com.style24.core.biz.service.TscOrderService;
@@ -96,6 +97,9 @@ public class TsfMypageController extends TsfBaseController {
 
 	@Autowired
 	private TsfRendererService rendererService;
+	
+	@Autowired
+	private TscKakaoPayService kakaoPayService;
 
 	/**
 	 * 마이페이지 메인 화면
@@ -556,6 +560,29 @@ public class TsfMypageController extends TsfBaseController {
 		
 		return result;
 	}
+	
+	/**
+	 * 마이페이지 STYLE24 전체내역
+	 *
+	 * @param param
+	 * @return GagaMap
+	 * @author csh9191
+	 * @since 2021. 03. 02
+	 */
+	@PostMapping("/allpoint/list")
+	@ResponseBody
+	public GagaMap getAllPointList(@RequestBody Point point) {
+		GagaMap result = new GagaMap();
+		
+		int custNo = TsfSession.getInfo().getCustNo();
+		point.setCustNo(custNo);
+		
+		result.set("allPointList",pointService.getAllPointList(point));
+		
+		log.info("result {}", result);
+		
+		return result;
+	}
 
 	/**
 	 * 마이페이지 반품신청 환불금액 계산

+ 19 - 2
src/main/java/com/style24/front/biz/web/TsfOrderController.java

@@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
@@ -14,6 +15,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import com.gagaframework.web.parameter.GagaMap;
 import com.style24.core.biz.service.TscFreegiftService;
+import com.style24.core.biz.service.TscKakaoPayService;
 import com.style24.core.biz.service.TscOrderService;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.front.biz.service.TsfCartService;
@@ -51,6 +53,9 @@ public class TsfOrderController extends TsfBaseController {
 	@Autowired
 	private TsfCartService cartService;
 	
+	@Autowired
+	private TscKakaoPayService kakaoPayService;
+	
 	/**
 	 * 회원, 비회원 주문페이지
 	 *
@@ -387,7 +392,19 @@ public class TsfOrderController extends TsfBaseController {
 		
 		return mav;
 	}
-	
-	
+
+	/**
+	 * 카카오페이 결제준비 처리
+	 *
+	 * @param Order
+	 * @return GagaMap
+	 * @author card007
+	 * @since 2021. 03. 03
+	 */
+	@RequestMapping(value = "/kakao/payment/ready")
+	@ResponseBody
+	public GagaMap kakaoPaymentReady(Order order) {
+		return kakaoPayService.kakaoPaymentReady(order);
+	}
 
 }

+ 7 - 7
src/main/java/com/style24/persistence/domain/Cate4Srch.java

@@ -16,18 +16,18 @@ public class Cate4Srch extends TscBaseDomain {
 
 	private String siteCd;
 	private String cateGb;
-	private int cateNo;
-	private int leafCateNo;
+	private Integer cateNo;
+	private Integer leafCateNo;
 	private String cateType;
-	private int cate1No;
+	private Integer cate1No;
 	private String cate1Nm;
-	private int cate2No;
+	private Integer cate2No;
 	private String cate2Nm;
-	private int cate3No;
+	private Integer cate3No;
 	private String cate3Nm;
-	private int cate4No;
+	private Integer cate4No;
 	private String cate4Nm;
-	private int cate5No;
+	private Integer cate5No;
 	private String cate5Nm;
 	private String fullCateCd;
 	private String fullCateNm;

+ 5 - 5
src/main/java/com/style24/persistence/domain/Goods.java

@@ -73,7 +73,7 @@ public class Goods extends TscBaseDomain {
 	private String colorCd;		//색상코드
 	private String colorNM;		//색상코드명
 	private String brandnm;		//브랜드명
-	private int brandGroupNo;	//브랜드그룹번호
+	private Integer brandGroupNo;	//브랜드그룹번호
 	private String brandGroupNm;	//브랜드그룹명
 	private String frontGb;		//프론트구분
 	private String isApp;		//앱구분
@@ -82,7 +82,7 @@ public class Goods extends TscBaseDomain {
 	private String afLinkCd;	//제휴링크코드
 	private String ithrCd;		//위치코드
 	private String contentsLoc;	//컨텐츠위치
-	private int pntRate;		//적립율
+	private float pntRate;		//적립율
 	private String prePntUsableYn;	//적립율즉시사용여부
 	private String niClsfCd;	//고시분류코드
 	private String brandTcateNo;	//브랜드카테1번호
@@ -91,7 +91,7 @@ public class Goods extends TscBaseDomain {
 	private String viewDt;		//미리보기일시
 	private String custGb;		//고객구분
 	private String custGrade;	//고객등급
-	private int custNo;		//고객번호
+	private Integer custNo;		//고객번호
 	private String soldoutGoodsDisplayYn = "N";	//품절노추여부
 	private int pointUnit = 10;	//포인트단위
 	private String goodsNmFull;	//상품타이틀+ 상품명
@@ -102,7 +102,7 @@ public class Goods extends TscBaseDomain {
 	private String wishYn;		//위시리스트여부
 	private String goodsComposeSearchYn;	//구성상품 조회여부
 	private String goodsCdIncludeYn;	//상품코드포함 여부
-	private String socialSq;	//소셜번호
+	private Integer socialSq;	//소셜번호
 //	private String socialTypeNm;	//소셜타입명
 	private String socialType;	//소셜타입
 	private String socialTnm;	//소셜명
@@ -110,7 +110,7 @@ public class Goods extends TscBaseDomain {
 	private String socialEddt;	//소셜종료일
 	private String planDtlSq;	//기획전상세번호
 
-	private int floorUnit; // 절사단위(10:일원단위절사, 100:십원단위절사, 1000:백원단위절사)
+	private int floorUnit; // 절사단위(1:일원단위절사, 10:십원단위절사, 100:백원단위절사)
 
 	private String skuModelNo;		// SKUModelNo(WMS)
 	private String compsGoodsCd;	// 세트 구성품 상품번호

+ 37 - 0
src/main/java/com/style24/persistence/domain/Search.java

@@ -0,0 +1,37 @@
+package com.style24.persistence.domain;
+
+import java.util.Collection;
+
+import com.style24.persistence.TscBaseDomain;
+
+import lombok.Data;
+
+/**
+ * 검색 Domain
+ *
+ * @author gagamel
+ * @since 2021. 3. 2
+ */
+@SuppressWarnings("serial")
+@Data
+public class Search extends TscBaseDomain {
+
+	// 최근검색어 목록
+	private Collection<String> recentlyList;
+
+	// 카테고리 목록
+	private Collection<Cate4Srch> cateList;
+
+	// 브랜드 목록
+	private Collection<Brand> brandList;
+
+	// 상품 목록
+	private Collection<Goods> goodsList;
+
+	@Data
+	public class Brand {
+		private Integer brandGroupNo;
+		private String brandGroupNm;
+	}
+
+}

+ 20 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfCoupon.xml

@@ -113,4 +113,24 @@
 				) Z
 		 WHERE Z.DOWNLOAD_CNT > 0
 	</select>
+
+	<!--회원가입 쿠폰-->
+	<select id="getJoinCoupon" parameterType="Coupon" resultType="Coupon">
+		SELECT CP.CPN_ID
+		     , CP.END_ALIM_YN
+		     , CASE WHEN #{frontGb} = 'P' THEN CP.DC_PVAL
+		            WHEN #{frontGb} = 'M' THEN CP.DC_MVAL
+		            ELSE CP.DC_AVAL                                              END AS DC_VAL
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(NOW(), '%Y%M%D%H%I%S')
+		            ELSE DATE_FORMAT(CP.AVAIL_STDT, '%Y%M%D%H%I%S')              END AS AVAIL_STDT
+		     , CASE WHEN CP.PD_GB = 'D' THEN DATE_FORMAT(DATE_ADD(NOW(), INTERVAL CP.AVAIL_DAYS DAY), '%Y%M%D%H%I%S')
+		            ELSE  DATE_FORMAT(CP.AVAIL_EDDT, '%Y%M%D%H%I%S')             END AS AVAIL_EDDT
+		FROM  TB_CUST_GRADE_POLICY CGP
+		INNER JOIN
+		      TB_COUPON CP
+		ON    CGP.GRADE_CPN_ID1 = CP.CPN_ID
+		WHERE CGP.GRADE_CD = #{custGrade}
+		AND   CP.SITE_CD = #{siteCd}
+	</select>
+	
 </mapper>

+ 1 - 1
src/main/java/com/style24/persistence/mybatis/shop/TsfCustomer.xml

@@ -234,7 +234,7 @@
 		     , NOW()                               AS JOIN_DT
 		     , IFNULL(#{foreignerYn}, 'N')         AS FOREIGNER_YN
 		     , #{custStat}                         AS CUST_STAT
-		     , #{passwdChgDt}                      AS PASSWD_CHG_DT
+		     , NOW()                               AS PASSWD_CHG_DT
 		     , 'N'                                 AS TEMP_PASSWD_YN
 		     , NOW()                               AS LOGIN_LDT
 		     , #{ci}                               AS CI

+ 38 - 0
src/main/java/com/style24/persistence/mybatis/shop/TsfPoint.xml

@@ -105,4 +105,42 @@
 		GROUP BY CD_NM, PNT_AMT, GOODS_NM, CD,OCCUR_DTL_DESC, TCHP.UPD_DT
 		ORDER BY TCHP.UPD_DT DESC;
 	</select>
+	
+	<!-- 전체내역 조회-->
+	<select id="getAllPointList" parameterType="Point" resultType="Point">
+		/* TsfPoint.getAllPointList */
+		SELECT
+		CASE   TCC.CD_NM
+		WHEN   '포인트사용' THEN '구매 사용'
+		WHEN   '상품평승인취소' THEN '구매 취소'
+		WHEN   '기타' THEN '관리자'
+		WHEN   '포인트소멸' THEN '소멸'
+		WHEN   '예정포인트적립' THEN '상품 구매'
+		WHEN   '상품평승인' THEN '리뷰'
+		WHEN   '온라인이벤트' THEN '이벤트'
+		WHEN   '기타' THEN '관리자'
+		END AS OCCUR_GB ,	
+		CASE   TCC.CD  	
+		WHEN   'G069_10' THEN TG.GOODS_NM
+		WHEN   'G069_12' THEN TG.GOODS_NM 
+		WHEN   'G069_20' THEN TG.GOODS_NM 
+		WHEN   'G069_21' THEN TG.GOODS_NM
+		WHEN   'G069_30' THEN TCHP.OCCUR_DTL_DESC
+		WHEN   'G069_90' THEN TCHP.OCCUR_DTL_DESC
+		WHEN   'G069_99' THEN TCHP.OCCUR_DTL_DESC
+		END AS OCCUR_DTL_DESC
+			 , TCHP.PNT_AMT AS pntAmt
+			 , TCHP.UPD_DT  AS pntUploadDt
+		FROM TB_CUST_POINT_HST TCHP
+		INNER JOIN TB_COMMON_CODE TCC
+		ON TCC.CD = TCHP.OCCUR_GB
+		INNER JOIN TB_ORDER_DETAIL TOD
+		ON TOD.ORD_NO = TCHP.ORD_NO
+		INNER JOIN TB_GOODS TG 
+		ON TG.GOODS_CD = TOD.GOODS_CD 
+		WHERE TCHP.CUST_NO =  #{custNo}
+		AND TCHP.OCCUR_GB IN ('G069_10','G069_12','G069_20','G069_21','G069_30','G069_90','G069_99')
+		GROUP BY CD_NM, PNT_AMT, GOODS_NM, CD,OCCUR_DTL_DESC, TCHP.UPD_DT
+		ORDER BY TCHP.UPD_DT DESC;
+	</select>
 </mapper>

+ 16 - 14
src/main/resources/config/application.yml

@@ -48,26 +48,28 @@ naver:
 
 #카카오 API
 kakao:
-    appId: 442702
-    appName: 아이스타일24
-    companyName: 예스이십사
-    nativeAppKey: 5d97db2ee36fa0e121d962b2531ae0c1
-    restApiKey: 46d601394bd887cbada3cf00fdddef54
-    javascriptKey: b3c9ee69171042c3637e8d714a4c8a75
-    adminKey: 7cc33b2ef96d785c4caf3376f9dc9254
-#    appId : 399207
-#    appName : 구축용 테스트앱
-#    companyName : 예스이십사
-#    nativeAppKey : f961e612e07b47aa2d1884714518a194
-#    restApiKey: b3955cef0328a09156c7e25f18552164
-#    javascriptKey : 06cab652ad5d25be2190388d11a88fa4
-#    adminKey : a25ca74dde640f3a63a8d8442fe35fcd
+#    appId: 442702
+#    appName: 아이스타일24
+#    companyName: 예스이십사
+#    nativeAppKey: 5d97db2ee36fa0e121d962b2531ae0c1
+#    restApiKey: 46d601394bd887cbada3cf00fdddef54
+#    javascriptKey: b3c9ee69171042c3637e8d714a4c8a75
+#    adminKey: 7cc33b2ef96d785c4caf3376f9dc9254
+    cid : TC0ONETIME
+    appId : 399207
+    appName : 구축용 테스트앱
+    companyName : 예스이십사
+    nativeAppKey : f961e612e07b47aa2d1884714518a194
+    restApiKey: b3955cef0328a09156c7e25f18552164
+    javascriptKey : 06cab652ad5d25be2190388d11a88fa4
+    adminKey : a25ca74dde640f3a63a8d8442fe35fcd
     addressApiRequestUrl : https://dapi.kakao.com/v2/local/search/address.json?page=1&query=
     login.callbackUrl: /signin/snsLoginCallback?snsType=KK
     tokenUrl: https://kauth.kakao.com/oauth/token
     userInfoUrl: https://kapi.kakao.com/v2/user/me
     authorizeUrl: https://kauth.kakao.com/oauth/authorize
     unlinkUrl : https://kapi.kakao.com/v1/user/unlink
+    paymentReadyUrl : https://kapi.kakao.com/v1/payment/ready
 
 # SPEEDY Image Upload
 speedy:

+ 1 - 1
src/main/webapp/WEB-INF/views/web/customer/JoinTypeFormWeb.html

@@ -51,7 +51,7 @@
 								</a>
 							</li>
 							<li>
-								<a href="javascript:void(0)">
+								<a href="javascript:void(0)" onclick="cfnLoginYes24();">
 									<i class="ico ico_snslogin yes24"></i>
 									<span>YES24</span>
 								</a>

+ 51 - 10
src/main/webapp/WEB-INF/views/web/mypage/MypagePointFormWeb.html

@@ -64,7 +64,7 @@
 												<tr>
 													<th>사유</th>
 													<th>내용</th>
-													<th>차감</th>
+													<th id="plusMinus"></th>
 													<th>일자</th>
 												</tr>
 											</thead>
@@ -77,17 +77,55 @@
 						</div>
 					</div>
 <script th:inline="javascript">
+
 	// 전체내역 조회
 	$("#fnSetSearchFullHistory").click(function(){
 		// Class제거 추가
 		$("#fnSetSearchCollectHistory").removeClass("on");
 		$("#fnSetSearchUsedHistory").removeClass("on");
 		$("#fnSetSearchFullHistory").addClass("on");
+		$("#plusMinus").text("증감/차감");
+		
+		let data = {};
+		
+		data.searchDt = $('select[name=searchDt]').val();
 		
-		// 적립내역 + 사용내역(sum)으로 표시
+		var jsonData = JSON.stringify(data);
 		
+		$.ajax(
+				{
+					type 	 : "POST",
+					data	 : jsonData,
+					url 	 : '/mypage/allpoint/list',
+					contentType: 'application/json',
+  					dataType : 'json',
+					success  : function(result){
+						fnPointAllListInfo(result);
+					}
+				}
+		)
 	});
 	
+	function fnPointAllListInfo(result) {
+		
+		let allPointList = result.allPointList;
+		
+		let tmtbHtml = "";
+		for(let i=0; i<allPointList.length; i++){
+			let point = allPointList[i];
+			tmtbHtml +='<tr>';
+			tmtbHtml +='<td>'+ point.occurGb + '</td>';
+			tmtbHtml += '<td class="t_l pl40">'+ point.occurDtlDesc + '</td>';
+			if(point.pntAmt > 0){
+				tmtbHtml += '<td class="c_blue">'+ point.pntAmt + '</td>';
+			}else{
+				tmtbHtml += '<td class="c_primary">'+ point.pntAmt + '</td>';
+			}
+			tmtbHtml += '<td>'+ point.pntUploadDt + '</td>';
+			tmtbHtml += '</tr>';
+		}
+		$("#pointAjaxList").html(tmtbHtml);
+	}
 	
 	// 적립내역 조회
 	$("#fnSetSearchCollectHistory").click(function(){
@@ -99,6 +137,7 @@
 		// 적립내역 포인트 블루
 		$("#pntAmt").removeClass("c_primary");
 		$("#pntAmt").addClass("c_blue");
+		$("#plusMinus").text("증감");
 		
 		let data = {};
 		
@@ -137,7 +176,6 @@
 		$("#pointAjaxList").html(tmtbHtml);
 	}
 	
-	
 	// 사용내역 조회
 	$("#fnSetSearchUsedHistory").click(function(){
 		// Class제거 추가
@@ -148,6 +186,7 @@
 		// 사용내역 포인트 블루
 		$("#pntAmt").removeClass("c_blue");
 		$("#pntAmt").addClass("c_primary");
+		$("#plusMinus").text("차감");
 		
 		let data = {};
 		
@@ -172,27 +211,29 @@
 	function fnUsePointListInfo(result) {
 		
 		let usePointList = result.usePointList;
-		
+		console.log(usePointList);
 		let tmtbHtml = "";
 		for(let i=0; i<usePointList.length; i++){
-			let point = usePointList[i];
+			let usePoint = usePointList[i];
 			tmtbHtml +='<tr>';
-			tmtbHtml +='<td>'+ usePointList.occurGb + '</td>';
-			tmtbHtml += '<td class="t_l pl40">'+ usePointList.occurDtlDesc + '</td>';
-			tmtbHtml += '<td class="c_primary">'+  usePointList.pntAmt + '</td>';
-			tmtbHtml += '<td>'+ usePointList.pntUploadDt + '</td>';
+			tmtbHtml +='<td>'+ usePoint.occurGb + '</td>';
+			tmtbHtml += '<td class="t_l pl40">'+ usePoint.occurDtlDesc + '</td>';
+			tmtbHtml += '<td class="c_primary">'+  usePoint.pntAmt + '</td>';
+			tmtbHtml += '<td>'+ usePoint.pntUploadDt + '</td>';
 			tmtbHtml += '</tr>';
 		}
 		$("#pointAjaxList").html(tmtbHtml);
 	}
 
-	
 	$(document).ready(function() {
 		// 마이페이지 LNB 설정
 		fnSetMypageLnbList(5);
 		
 		// 마이페이지 location 설정
 		fnSetMypageLocation('STYLE24 포인트', '_PAGE_MYPAGE_POINT');
+		
+		// 전체내역
+		$("#fnSetSearchFullHistory").trigger('click');
 
 	});
 

+ 36 - 18
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -348,7 +348,6 @@
 		let chgReason = $('div[name=chgReason]').parent().find('li.selected').attr('value');
 		
 		if (!gagajf.isNull(chgReason)) {
-			let data = {};
 			let returnRequestList = [];
 
 			// 반품 수량 설정
@@ -359,12 +358,17 @@
 				let chgQty = $(item).val();
 				let ordDtlNo = $(item).attr('ordDtlNo');
 				let ordCanChgQty = $(item).attr('ordCanChgQty');
+				
+				console.log('chgQty >>> '+chgQty);
+				console.log('ordDtlNo >>> '+ordDtlNo);
+				console.log('ordCanChgQty >>> '+ordCanChgQty);
 
 				chgQtyArr.push(Number(chgQty));
 				ordDtlNoArr.push(Number(ordDtlNo));
 				ordCanChgQtyArr.push(Number(ordCanChgQty));
 			});
 			
+			// 환불포인트, 환불상품권 금액 계산
 			let refundPoint = fnCalculatePoint(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr);
 			let refundGiftCard = fnCalculateGiftCard(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr);
 
@@ -378,13 +382,19 @@
 			let jsonData = JSON.stringify(returnRequestList);
 			
 			gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-				let returnAmt = result.spanRefundAmt;													// 환불예정금액
-				let goodsCancelAmt = result.spanCnclRtnAmt;												// 상품취소금액
-				let deliveryFee = result.sumDeliveryFee + result.spanTotDeliveryFee;					// 배송비
-				let deductDcAmt = result.spanCpnDcAmt + result.spanTmtbDcAmt + result.spanPrePntDcAmt;	// 할인금액 차감(쿠폰+다다익선+선포인트)
-				let refundPayAmt = result.spanRealCnclRtnAmt + result.sumDeliveryFee;					// 결제금액 환불
-				//let refundPoint = result.spanPntDcAmt;													// 포인트 환불
-				//let refundGiftCard = result.spanGfcdUseAmt;												// 상품권 환불
+				let spanCnclRtnAmt = Number(result.spanCnclRtnAmt);
+				let sumDeliveryFee = Number(result.sumDeliveryFee);
+				let spanTotDeliveryFee = Number(result.spanTotDeliveryFee);
+				let spanCpnDcAmt = Number(result.spanCpnDcAmt);
+				let spanTmtbDcAmt = Number(result.spanTmtbDcAmt);
+				let spanPrePntDcAmt = Number(result.spanPrePntDcAmt);
+				let spanRefundAmt = Number(result.spanRefundAmt);
+				
+				let goodsCancelAmt = spanCnclRtnAmt;										// 상품취소금액
+				let deliveryFee = sumDeliveryFee - spanTotDeliveryFee;						// 배송비
+				let deductDcAmt = 0 - spanCpnDcAmt - spanTmtbDcAmt - spanPrePntDcAmt;		// 할인금액 차감(쿠폰+다다익선+선포인트)
+				let refundPayAmt = spanRefundAmt;											// 결제금액 환불
+				let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
 
 				// 금액 설정
 				$('#returnAmt').text(returnAmt.addComma());
@@ -413,36 +423,44 @@
 
 	// 환불 포인트 계산
 	var fnCalculatePoint = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
-		let refundAmt = 0;
+		let refundPoint = 0;
 
 		$.each(usedPointInfo, function(idx, item) {
 			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
 			let chgQty = chgQtyArr[index];
 			let ordCanChgQty = ordCanChgQtyArr[index];
 			
-			if (chgQty = ordCanChgQty) {
-				refundAmt += item.pntAmt;
-			} else {
-				refundAmt += item.pntAmt * (chgQty / ordCanChgQty);
+			if (chgQty > 0) {
+				if (chgQty == ordCanChgQty) {
+					refundPoint += item.pntAmt;
+				} else {
+					refundPoint += item.pntAmt * (chgQty / ordCanChgQty);
+				}
 			}
 		});
+		
+		return refundPoint;
 	}
 	
 	// 환불 상품권 계산
 	var fnCalculateGiftCard = function(chgQtyArr, ordDtlNoArr, ordCanChgQtyArr) {
-		let refundAmt = 0;
+		let refundGiftCard = 0;
 		
 		$.each(usedGiftCardInfo, function(idx, item) {
 			let index = ordDtlNoArr.indexOf(item.ordDtlNo);
 			let chgQty = chgQtyArr[index];
 			let ordCanChgQty = ordCanChgQtyArr[index];
 			
-			if (chgQty = ordCanChgQty) {
-				refundAmt += item.gfcdAmt;
-			} else {
-				refundAmt += item.pntAmt * (chgQty / ordCanChgQty);
+			if (chgQty > 0) {
+				if (chgQty == ordCanChgQty) {
+					refundGiftCard += item.gfcdAmt;
+				} else {
+					refundGiftCard += item.pntAmt * (chgQty / ordCanChgQty);
+				}
 			}
 		});
+		
+		return refundGiftCard;
 	}
 </script>
 

+ 43 - 18
src/main/webapp/ux/style24_link.js

@@ -38,9 +38,9 @@ const _PAGE_MYPAGE_ORDER_LIST = _frontUrl + "/mypage/order/list/form";			// 마
 const _PAGE_MYPAGE_ORDER_DETAIL = _frontUrl + "/mypage/order/detail/form/";		// 마이페이지 > 주문/배송 상세
 const _PAGE_MYPAGE_CRS_LIST = _frontUrl + "/mypage/crs/list/form";				// 마이페이지 > 취소/교환/반품 목록
 const _PAGE_MYPAGE_RESTOCK = _frontUrl + "/mypage/restock/form";				// 마이페이지 > 재입고 알림 내역
-const _PAGE_MYPAGE_COUPON = _frontUrl + "/mypage/coupon/form";					// 마이페이지 > 재입고 알림 내역
-const _PAGE_MYPAGE_POINT = _frontUrl + "/mypage/point/form";					// 마이페이지 > 재입고 알림 내역
-const _PAGE_MYPAGE_GIFTCARD = _frontUrl + "/mypage/gift/card/form";				// 마이페이지 > 재입고 알림 내역
+const _PAGE_MYPAGE_COUPON = _frontUrl + "/mypage/coupon/form";					// 마이페이지 > 쿠폰
+const _PAGE_MYPAGE_POINT = _frontUrl + "/mypage/point/form";					// 마이페이지 > 포인트
+const _PAGE_MYPAGE_GIFTCARD = _frontUrl + "/mypage/gift/card/form";				// 마이페이지 > 상품권
 const _PAGE_MYPAGE_REVIEW = _frontUrl + "/mypage/review/form";					// 마이페이지 > 리뷰
 const _PAGE_MYPAGE_DELIVERY_ADDR = _frontUrl + "/mypage/delivery/addr/form";	// 마이페이지 > 배송지 관리
 const _PAGE_MYPAGE_WISHLIST = _frontUrl + "/mypage/wish/list/form";				// 마이페이지 > 위시리스트
@@ -216,15 +216,15 @@ function cfnAddCart(cartList) {
  * @author : jsshin
  */
 var cfnLoginNaver = function (requestGb, chkRememberMe) {
-	var actionUrl = _frontUrl + '/signin/naverlogin?rememberMe=' + chkRememberMe;
-	var popupHeight = 800;
-	var popupWidth = 600;
-	var popupX = (window.screen.width / 2) - (popupWidth / 2);
-	var popupY = (window.screen.height / 3) - (popupHeight / 3);
+	let actionUrl = _frontUrl + '/signin/naverlogin?rememberMe=' + chkRememberMe;
+	let popupHeight = 800;
+	let popupWidth = 600;
+	let popupX = (window.screen.width / 2) - (popupWidth / 2);
+	let popupY = (window.screen.height / 3) - (popupHeight / 3);
 	if ('P' === _frontGb) {
-		window.open(actionUrl, 'naverLogin', 'top=' + popupY + ',left=' + popupX + ',height=' + popupHeight + ',width=' + popupWidth + ', fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbars=yes', '');
+		//window.open(actionUrl, 'naverLogin', 'top=' + popupY + ',left=' + popupX + ',height=' + popupHeight + ',width=' + popupWidth + ', fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbars=yes', '');
 	} else {
-		document.location.href = actionUrl + '&requestGb=' + requestGb;
+		//document.location.href = actionUrl + '&requestGb=' + requestGb;
 	}
 };
 
@@ -242,15 +242,41 @@ var cfnLoginNaver = function (requestGb, chkRememberMe) {
  * @author : jsshin
  */
 var cfnLoginKakao = function (requestGb, chkRememberMe) {
-	var actionUrl = _frontUrl + '/signin/kakologin?rememberMe=' + chkRememberMe;
-	var popupWidth = 450;
-	var popupHeight = 700;
-	var popupX = (window.screen.width / 2) - (popupWidth / 2);
-	var popupY = (window.screen.height / 3) - (popupHeight / 3);
+	let actionUrl = _frontUrl + '/signin/kakologin?rememberMe=' + chkRememberMe;
+	let popupWidth = 450;
+	let popupHeight = 700;
+	let popupX = (window.screen.width / 2) - (popupWidth / 2);
+	let popupY = (window.screen.height / 3) - (popupHeight / 3);
 	if ('P' === _frontGb) {
-		window.open(actionUrl, 'kakaoLogin', 'top=' + popupY + ',left=' + popupX + ',height=' + popupHeight + ',width=' + popupWidth + ', fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbars=yes', '');
+		//window.open(actionUrl, 'kakaoLogin', 'top=' + popupY + ',left=' + popupX + ',height=' + popupHeight + ',width=' + popupWidth + ', fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbars=yes', '');
 	} else {
-		document.location.href = actionUrl + '&requestGb=' + requestGb;
+		//document.location.href = actionUrl + '&requestGb=' + requestGb;
+	}
+};
+
+/**
+ * @type   : function
+ * @access : public
+ * @desc   : Yes24 로그인
+ * <pre>
+ *     cfnLoginYes24();
+ *     호출된 페이지에서
+ *     PC: fnSnsSigninCallback(userInfo) 콜백 함수 생성 후 가지고 호출 처리
+ *     MO :
+ * </pre>
+ * @since  : 2021/02/23
+ * @author : jsshin
+ */
+var cfnLoginYes24 = function (requestGb, chkRememberMe) {
+	let actionUrl = _frontUrl + '/signin/yes24login?rememberMe=' + chkRememberMe;
+	let popupWidth = 484;
+	let popupHeight = 390;
+	let popupX = (window.screen.width / 2) - (popupWidth / 2);
+	let popupY = (window.screen.height / 3) - (popupHeight / 3);
+	if ('P' === _frontGb) {
+		//window.open(actionUrl, 'yes24Login', 'top=' + popupY + ',left=' + popupX + ',height=' + popupHeight + ',width=' + popupWidth + ', fullscreen=no,menubar=no,status=no,toolbar=no,titlebar=yes,location=no,scrollbars=yes', '');
+	} else {
+		//document.location.href = actionUrl + '&requestGb=' + requestGb;
 	}
 };
 
@@ -274,4 +300,3 @@ var cfnGoToGoodsDetail = function (goodsCd, ithrCd, contentsLoc, planDtlSq) {
 	if (typeof (planDtlSq) != 'undefined') params += "&planDtlSq=" + planDtlSq;
 	cfnGoToPage(_PAGE_GOODS_DETAIL + params);
 }
-