Просмотр исходного кода

Merge branch 'develop' into bin2107

bin2107 5 лет назад
Родитель
Сommit
f1166e0cbf
20 измененных файлов с 565 добавлено и 219 удалено
  1. 30 0
      src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java
  2. 80 0
      src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java
  3. 80 8
      src/main/java/com/style24/front/biz/web/TsfMypageController.java
  4. 1 3
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrder.xml
  5. 144 8
      src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml
  6. 1 1
      src/main/resources/config/application-locp.yml
  7. 4 4
      src/main/resources/config/application-run.yml
  8. 5 5
      src/main/resources/config/application-tsit.yml
  9. 14 0
      src/main/resources/i18n/messages/message_ko_KR.properties
  10. 3 3
      src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html
  11. 77 55
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html
  12. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb_20210330.html
  13. 42 5
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html
  14. 14 9
      src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html
  15. 7 15
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html
  16. 2 2
      src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb_20210329.html
  17. 26 19
      src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html
  18. 28 22
      src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html
  19. 4 57
      src/main/webapp/biz/mypage.js
  20. 1 1
      src/main/webapp/ux/style24_link.js

+ 30 - 0
src/main/java/com/style24/front/biz/dao/TsfOrderChangeDao.java

@@ -78,4 +78,34 @@ public interface TsfOrderChangeDao {
 	 */
 	Collection<OrderChange> getExchangeOptionInfo(OrderChange orderChange);
 
+	/**
+	 * 마이페이지 취반교 내역 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	Collection<OrderChange> getCreList(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 수 조회
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	int getPagingCreListCount(OrderChange orderChange);
+
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	Collection<OrderChange> getPagingCreList(OrderChange orderChange);
+
 }

+ 80 - 0
src/main/java/com/style24/front/biz/service/TsfOrderChangeService.java

@@ -217,4 +217,84 @@ public class TsfOrderChangeService {
 		return exchangeOptionInfo;
 	}
 
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 수 조회
+	 *
+	 * @param OrderChange
+	 * @return int
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	public int getPagingCreListCount(OrderChange orderChange) { return orderChangeDao.getPagingCreListCount(orderChange); }
+
+	/**
+	 * 마이페이지 취반교 목록 페이징 처리 주문변경번호 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	public Collection<OrderChange> getPagingCreList(OrderChange orderChange) { return orderChangeDao.getPagingCreList(orderChange); }
+
+	/**
+	 * 마이페이지 취반교 목록 조회
+	 *
+	 * @param OrderChange
+	 * @return Collection<OrderChange>
+	 * @author card007
+	 * @since 2021. 04. 07
+	 */
+	public Collection<GagaMap> getCreList(OrderChange orderChange) {
+		Collection<GagaMap> creList = new ArrayList<>();
+		Collection<OrderChange> orderChangeList = new ArrayList<>();
+		int ordChgSq = 0;
+		int index = 0;
+
+		for (OrderChange tmpOrderChange : orderChangeDao.getCreList(orderChange)) {
+			// 세트상품 옵션별 배열로 담기
+			if (tmpOrderChange.getItemNm().contains("!@!")) {
+				tmpOrderChange.setItemNmArr(tmpOrderChange.getItemNm().split("!@!"));
+				tmpOrderChange.setColorNmArr(tmpOrderChange.getColorNm().split(","));
+				tmpOrderChange.setOptCd1Arr(tmpOrderChange.getOptCd1().split(","));
+				tmpOrderChange.setOptCd2Arr(tmpOrderChange.getOptCd2().split(","));
+			} else {
+				String[] arr = {tmpOrderChange.getItemNm()}, arr2 = {tmpOrderChange.getColorNm()}, arr3 = {tmpOrderChange.getOptCd1()}, arr4 = {tmpOrderChange.getOptCd2()};
+				tmpOrderChange.setItemNmArr(arr);
+				tmpOrderChange.setColorNmArr(arr2);
+				tmpOrderChange.setOptCd1Arr(arr3);
+				tmpOrderChange.setOptCd2Arr(arr4);
+			}
+
+			// 취반교 목록 데이터 설정
+			if (index > 0 && ordChgSq != tmpOrderChange.getOrdChgSq()) {
+				creList.add(setOrderChangeMap(orderChangeList));
+				orderChangeList = new ArrayList<>();
+			}
+
+			orderChangeList.add(tmpOrderChange);
+			ordChgSq = tmpOrderChange.getOrdChgSq();
+			index++;
+		}
+
+		if (orderChangeList.size() > 0) {
+			creList.add(setOrderChangeMap(orderChangeList));
+		}
+
+		return creList;
+	}
+
+	private GagaMap setOrderChangeMap(Collection<OrderChange> ordCreList) {
+		OrderChange orderChange = ordCreList.iterator().next();
+
+		GagaMap map = new GagaMap();
+		map.set("giftPackYn", orderChange.getGiftPackYn());
+		map.set("ordChgSq", orderChange.getOrdChgSq());
+		map.set("chgDt", orderChange.getChgDt());
+		map.set("oneData", orderChange);
+		map.set("ordCreList", ordCreList);
+
+		return map;
+	}
+
 }

+ 80 - 8
src/main/java/com/style24/front/biz/web/TsfMypageController.java

@@ -253,7 +253,6 @@ public class TsfMypageController extends TsfBaseController {
 	@ResponseBody
 	public GagaMap getOrderList(@RequestBody Order order) {
 		GagaMap map = new GagaMap();
-		ModelAndView mav = new ModelAndView();
 
 		// 페이징 처리 설정
 		TscPageRequest pageable = new TscPageRequest((order.getPageNo() > 0 ? order.getPageNo() - 1 : 0), order.getPageSize(), order.getPageUnit());
@@ -450,7 +449,7 @@ public class TsfMypageController extends TsfBaseController {
 
 		// 처리 결과 코드에 따른 메세지 설정
 		if (result.get("status").equals(GagaResponseStatus.SUCCESS.getCode())) {
-			result.set("message", message.getMessage("SUCC_0004"));
+			result.set("message", message.getMessage("EXCHANGE_0001"));
 		} else {
 			result.set("message", message.getMessage("FAIL_0004"));
 		}
@@ -642,6 +641,7 @@ public class TsfMypageController extends TsfBaseController {
 		result.set("allCanYn"		, allCanYn);							// 무통장입금전 전체취소 여부 
 		result.set("isCustomer"		, orderChange.getIsCustomer());			// 변경사유 (고객, 회사)
 		result.set("wdGb"			, orderChange.getWdGb());				// 회수방법
+		result.set("wdInvoiceNo"	, orderChange.getWdInvoiceNo());		// 회수송장번호
 
 		// 4. 주문변경 회수지정보 추가
 		result.set("chgerNm"		, orderChange.getChgerNm());			// 변경자명
@@ -657,7 +657,7 @@ public class TsfMypageController extends TsfBaseController {
 		coreOrderChangeService.rtnReq(result, custNo);
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "반품 신청이 접수되었습니다.");
+		result.set("message", message.getMessage("RETURN_0001"));
 
 		return result;
 	}
@@ -762,7 +762,7 @@ public class TsfMypageController extends TsfBaseController {
 		coreOrderChangeService.cnclComplete(result, custNo);
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "취소 처리 되었습니다.");
+		result.set("message", message.getMessage("CANCEL_0001"));
 		// result.set("message", message.getMessage("SUCC_0004"));
 
 		return result;
@@ -809,6 +809,78 @@ public class TsfMypageController extends TsfBaseController {
 		return mav;
 	}
 
+	/**
+	 * 마이페이지 취반교 목록 화면
+	 *
+	 * @return
+	 * @author card007
+	 * @since 2021. 02. 04
+	 */
+	@GetMapping({"/cre/list/form"})
+	public ModelAndView mypageCreListForm(@RequestBody(required = false) OrderChange orderChange) {
+		ModelAndView mav = new ModelAndView();
+
+		if (orderChange == null) {
+			orderChange = new OrderChange();
+		}
+
+		// 고객번호 설정
+		int custNo = TsfSession.getInfo().getCustNo();
+		orderChange.setCustNo(custNo);
+
+		// 고객정보 조회
+		Customer customer = new Customer();
+		customer.setSiteCd(TscConstants.Site.STYLE24.value());
+		customer.setCustNo(custNo);
+		customer.setCustStat(TscConstants.CustStat.ACTIVE.value());
+		mav.addObject("customerInfo", coreCustomerService.getCustomerInfo(customer));
+
+		// 주문 상태 별 수량 조회
+		// mav.addObject("orderCount", coreOrderService.getOrderStatCount(orderChange));
+
+		// 주문상세상태코드 설정
+		mav.addObject("ordDtlStatList", rendererService.getCommonCodeList("G013", "Y", new String[] {"G013_25", "G013_35", "G013_55", "G013_97", "G013_98", "G013_99"}));
+
+		mav.setViewName(super.getDeviceViewName("mypage/MypageOrderListForm"));
+
+		return mav;
+	}
+
+	/**
+	 * 마이페이지 취반교 목록 조회
+	 *
+	 * @param OrderChange
+	 * @return ModelAndView
+	 * @author card007
+	 * @since 2021. 02. 18
+	 */
+	@PostMapping("/cre/list")
+	@ResponseBody
+	public GagaMap getCreList(@RequestBody OrderChange orderChange) {
+		GagaMap map = new GagaMap();
+
+		// 페이징 처리 설정
+		TscPageRequest pageable = new TscPageRequest((orderChange.getPageNo() > 0 ? orderChange.getPageNo() - 1 : 0), orderChange.getPageSize(), orderChange.getPageUnit());
+		pageable.setTotalCount(orderChangeService.getPagingCreListCount(orderChange));
+		orderChange.setPageable(pageable);
+
+		// 페이징 처리 및 주문정보 조회
+		List<Integer> ordChgSqList = new ArrayList<>();
+
+		for (OrderChange tmpOrderChange : orderChangeService.getPagingCreList(orderChange)) {
+			ordChgSqList.add(tmpOrderChange.getOrdChgSq());
+		}
+
+		if (ordChgSqList.size() > 0) {
+			orderChange.setOrdChgSqArr(ordChgSqList.stream().mapToInt(Integer::intValue).toArray());
+		}
+
+		map.set("creList", orderChangeService.getCreList(orderChange));
+		map.set("creInfo", orderChange);
+
+		return map;
+	}
+
 	/**
 	 * 마이페이지 STYLE24 포인트화면
 	 *
@@ -915,11 +987,11 @@ public class TsfMypageController extends TsfBaseController {
 			// WMS IF TABLE 내 정보 업데이트 처리 필요
 		} catch (Exception e) {
 			result.set("status", GagaResponseStatus.FAIL.getCode());
-			result.set("message", "배송지 수정에 실패했습니다.");
+			result.set("message", message.getMessage("FAIL_0002"));
 		}
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "정상적으로 배송지가 수정되었습니다.");
+		result.set("message", message.getMessage("DELV_0002"));
 
 		return result;
 	}
@@ -947,11 +1019,11 @@ public class TsfMypageController extends TsfBaseController {
 			commonService.updateDeliverAddrDelvMemo(order);
 		} catch (Exception e) {
 			result.set("status", GagaResponseStatus.FAIL.getCode());
-			result.set("message", "배송메모 수정에 실패했습니다.");
+			result.set("message", message.getMessage("FAIL_0002"));
 		}
 
 		result.set("status", GagaResponseStatus.SUCCESS.getCode());
-		result.set("message", "정상적으로 배송메모가 수정되었습니다.");
+		result.set("message", message.getMessage("DELV_0002"));
 
 		return result;
 	}

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

@@ -316,9 +316,7 @@
 		     , CARD_KIND
 		     , CARD_BANK
 		     , CARD_NM
-		     , CASE CARD_MIPS WHEN 0 THEN '일시불'
-							  ELSE CONCAT(CARD_MIPS, '개월')
-				END									AS CARD_MIPS
+		     , IF(CARD_MIPS = 0, '일시불', CONCAT(CARD_MIPS, '개월')) AS CARD_MIPS
 		     , CARD_PCABLE_YN
 		     , VA_NO
 		     , VA_NM

+ 144 - 8
src/main/java/com/style24/persistence/mybatis/shop/TsfOrderChange.xml

@@ -95,10 +95,8 @@
 		             , OD.RETURNABLE_YN
 		             , G.SELF_GOODS_YN
 		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
-		             , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL THEN 0
-		                    ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-		                END                                                             AS ORD_REQ_CHG_QTY
-		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
+		             , IFNULL(OCD.ORD_REQ_CHG_QTY, 0)                                   AS ORD_REQ_CHG_QTY
+		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)    AS ORD_CAN_CHG_QTY
 		             , CA.BANK_CD
 		             , CA.ACCOUNT_NO
 		             , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                  AS ACCOUNT_NM
@@ -231,10 +229,8 @@
 		             , OD.RETURNABLE_YN
 		             , G.SELF_GOODS_YN
 		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                                  AS BRAND_NM
-		             , CASE WHEN OCD.ORD_REQ_CHG_QTY IS NULL THEN 0
-		                    ELSE OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY
-		                END                                                                   AS ORD_REQ_CHG_QTY
-		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IF(OCD.ORD_REQ_CHG_QTY IS NULL, 0, OCD.ORD_REQ_CHG_QTY * ODI.ITEM_QTY) AS ORD_CAN_CHG_QTY
+		             , IFNULL(OCD.ORD_REQ_CHG_QTY, 0)                                         AS ORD_REQ_CHG_QTY
+		             , OD.ORD_QTY - OD.CNCL_RTN_QTY - IFNULL(OCD.ORD_REQ_CHG_QTY, 0)          AS ORD_CAN_CHG_QTY
 		             , CA.BANK_CD
 		             , CA.ACCOUNT_NO
 		             , IFNULL(CA.ACCOUNT_NM, O.ORD_NM)                                        AS ACCOUNT_NM
@@ -492,4 +488,144 @@
 		 GROUP BY Z.ORD_NO, Z.ORD_DTL_NO, Z.ORD_DTL_ITEM_SQ, Z.ITEM_CD, Z.OPT_CD1, Z.OPT_CD2
 				, Z.COLOR_NM, Z.GOODS_TYPE, Z.SELF_GOODS_YN, Z.ITEM_NM, Z.GOODS_STAT
 	</select>
+	
+	<!-- 마이페이지 취반교 내역 조회 -->
+	<select id="getCreList" parameterType="OrderChange" resultType="OrderChange">
+		/* TsfOrderChange.getCreList */
+		SELECT GROUP_CONCAT(Z.ITEM_NM ORDER BY Z.ORD_DTL_ITEM_SQ SEPARATOR '!@!')       AS ITEM_NM
+		     , GROUP_CONCAT(Z.COLOR_NM ORDER BY Z.ORD_DTL_ITEM_SQ)                      AS COLOR_NM
+		     , GROUP_CONCAT(Z.OPT_CD1 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD1
+		     , GROUP_CONCAT(Z.OPT_CD2 ORDER BY Z.ORD_DTL_ITEM_SQ)                       AS OPT_CD2
+		     , Z.ORD_CHG_SQ
+		     , Z.CHG_DT
+		     , Z.CHG_ORD_DTL_NO
+		     , Z.CHG_STAT
+		     , Z.ORD_NO
+		     , Z.ORD_DTL_NO
+		     , Z.GOODS_CD
+		     , Z.BRAND_NM
+		     , Z.SHOT_DELV_YN
+		     , Z.SELF_GOODS_YN
+		     , Z.GOODS_NM
+		     , Z.LIST_PRICE
+		     , Z.SYS_IMG_NM
+		     , Z.GIFT_PACK_YN
+		  FROM (SELECT OC.ORD_CHG_SQ
+		             , OC.REG_DT                                                        AS CHG_DT
+		             , OCD.CHG_ORD_DTL_NO
+		             , OCD.CHG_STAT
+		             , OD.ORD_NO
+		             , OCD.ORD_DTL_NO
+		             , G1.GOODS_CD
+		             , CONCAT(B.BRAND_ENM, ' ', B.BRAND_KNM)                            AS BRAND_NM
+		             , OD.SHOT_DELV_YN
+		             , G1.SELF_GOODS_YN
+		             , G1.GOODS_NM
+		             , IFNULL(C.COLOR_KNM, ODI.OPT_CD1)                                 AS COLOR_NM
+		             , G2.GOODS_NM AS ITEM_NM
+		             , ODI.ORD_DTL_ITEM_SQ
+		             , ODI.OPT_CD1
+		             , ODI.OPT_CD2
+		             , G1.LIST_PRICE
+		             , CASE WHEN G1.GOODS_TYPE != 'G056_S' AND G1.SELF_GOODS_YN = 'Y' THEN (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = ODI.OPT_CD1 AND DEFAULT_IMG_YN = 'Y')
+		                    ELSE (SELECT MAX(SYS_IMG_NM) FROM TB_GOODS_IMG WHERE GOODS_CD = G1.GOODS_CD AND COLOR_CD = IFNULL(G1.MAIN_COLOR_CD,'XX') AND DEFAULT_IMG_YN = 'Y') END AS SYS_IMG_NM
+		             , OD.GIFT_PACK_YN
+		          FROM TB_ORDER_CHANGE OC
+		         INNER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OC.ORD_CHG_SQ = OCD.ORD_CHG_SQ
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON OCD.ORD_DTL_NO = OD.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_ORDER O
+		            ON OD.ORD_NO = O.ORD_NO
+		         INNER JOIN TB_ORDER_DETAIL_ITEM ODI
+		            ON OD.ORD_NO = ODI.ORD_NO
+		           AND OD.ORD_DTL_NO = ODI.ORD_DTL_NO
+		           AND OD.ORD_DTL_STAT NOT IN ('G013_00', 'G013_11', 'G013_25')
+		         INNER JOIN TB_GOODS G1
+		            ON OD.GOODS_CD = G1.GOODS_CD
+		         INNER JOIN TB_GOODS G2
+		            ON ODI.ITEM_CD = G2.GOODS_CD
+		         INNER JOIN TB_BRAND B
+		            ON G1.BRAND_CD = B.BRAND_CD
+		          LEFT OUTER JOIN TB_COLOR C
+		            ON C.COLOR_CD = IFNULL(NULLIF(ODI.OPT_CD1,'') , G1.MAIN_COLOR_CD)
+		           AND C.USE_YN = 'Y'
+		         WHERE OCD.DEL_YN = 'N'
+		           AND O.DISP_YN = 'Y'
+		<choose>
+			<when test="custNo != null and custNo != ''">
+		           AND O.CUST_NO = #{custNo}
+			</when>
+			<otherwise>
+		           AND O.ORD_NO = #{ordNo}
+		           AND O.ORD_NM = #{orderNm}
+			</otherwise>
+		</choose>
+		<if test="ordChgSq != null and ordChgSq != ''">
+			AND OC.ORD_CHG_SQ = #{ordChgSq}
+		</if>
+		<if test="ordDtlNoArr != null">
+			AND OD.ORD_DTL_NO IN
+			<foreach collection="ordDtlNoArr" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		<if test="ordChgSqList != null">
+			AND OC.ORD_CHG_SQ IN
+			<foreach collection="ordChgSqList" item="item" index="index"  open="(" close=")" separator=",">
+				#{item}
+			</foreach>
+		</if>
+		<if test="chgStat != null and chgStat != ''">
+			AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		  ) Z
+		 GROUP BY Z.ORD_CHG_SQ, Z.CHG_DT, Z.CHG_ORD_DTL_NO, Z.CHG_STAT, Z.ORD_NO, Z.ORD_DTL_NO, Z.GOODS_CD, Z.BRAND_NM
+		        , Z.SHOT_DELV_YN, Z.SELF_GOODS_YN, Z.GOODS_NM, Z.LIST_PRICE, Z.SYS_IMG_NM, Z.GIFT_PACK_YN
+	</select>
+
+	<!-- 마이페이지 취반교 조회 페이징 처리 주문변경번호 수 조회 -->
+	<select id="getPagingCreListCount" parameterType="OrderChange" resultType="int">
+		/* TsfOrderChange.getPagingCreListCount */
+		SELECT COUNT(*) AS CNT
+		  FROM (SELECT OCD.ORD_CHG_SQ
+		          FROM TB_ORDER O
+		         INNER JOIN TB_ORDER_DETAIL OD
+		            ON O.ORD_NO = OD.ORD_NO
+		          LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		            ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		         WHERE O.DISP_YN = 'Y'
+		           AND OCD.ORD_CHG_SQ IS NOT NULL
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		           AND OCD.REG_DT BETWEEN CONCAT(#{stDate}, ' 00:00:00') AND CONCAT(#{edDate}, ' 23:59:59')
+		</if>
+		<if test="ordDtlStat != null and ordDtlStat != ''">
+		           AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		         GROUP BY OCD.CHG_STAT
+		       ) Z
+	</select>
+
+	<!-- 마이페이지 취반교 조회 페이징 처리 주문변경번호 조회 -->
+	<select id="getPagingCreList" parameterType="OrderChange" resultType="OrderChange">
+		/* TsfOrderChange.getPagingCreList */
+		<include refid="selectForPagingHeader"/>
+		SELECT OCD.ORD_CHG_SQ
+		  FROM TB_ORDER O
+		 INNER JOIN TB_ORDER_DETAIL OD
+		    ON O.ORD_NO = OD.ORD_NO
+		  LEFT OUTER JOIN TB_ORDER_CHANGE_DETAIL OCD
+		    ON OD.ORD_DTL_NO = OCD.ORD_DTL_NO
+		 WHERE O.DISP_YN = 'Y'
+		   AND OCD.ORD_CHG_SQ IS NOT NULL
+		<if test="stDate != null and stDate != '' and edDate != null and edDate != ''">
+		   AND OCD.REG_DT BETWEEN CONCAT(#{stDate}, ' 00:00:00') AND CONCAT(#{edDate}, ' 23:59:59')
+		</if>
+		<if test="ordDtlStat != null and ordDtlStat != ''">
+		   AND OCD.CHG_STAT = #{chgStat}
+		</if>
+		 GROUP BY OCD.CHG_STAT
+		<include refid="selectForPagingFooter"/>
+	</select>
 </mapper>

+ 1 - 1
src/main/resources/config/application-locp.yml

@@ -20,7 +20,7 @@ logging:
 has-ssl: false
 
 domain:
-    wivis: //lpfront.style24.com
+    front: //lpfront.style24.com
     image: //image.style24.com/speedy_image-wivismall
     uximage: //lpfront.style24.com
 

+ 4 - 4
src/main/resources/config/application-run.yml

@@ -16,8 +16,8 @@ spring:
 logging.config: classpath:log/logback-run.xml
 
 domain:
-    wivis: //www.style24.com
-    image: //image.style24.com/speedy_image-wivismall
+    front: //www.style24.com
+    image: //image.style24.com
     uximage: //www.style24.com
 
 # SSL Server
@@ -33,12 +33,12 @@ upload:
         target.path: /app/was/deploy/wivismall.front/data/goods
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
-        view: //image.style24.com/speedy_image-wivismall/goods
+        view: //image.istyle24.com/Upload/ProductImage
     image:
         target.path: /app/was/deploy/wivismall.front/data
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
-        view: //image.style24.com/speedy_image-wivismall
+        view: //image.istyle24.com/Upload
     excel:
         target.path: /app/was/deploy/wivismall.front/data/excel
         max.size: 10

+ 5 - 5
src/main/resources/config/application-tsit.yml

@@ -28,27 +28,27 @@ domain:
 
 upload:
     default:
-        target.path: /TSIT/servers/files/data
+        target.path: /TSIT/servers/files/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png|bmp|txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //tdimage.style24.com
     goods:
-        target.path: /TSIT/servers/files/data/goods
+        target.path: /TSIT/servers/files/data/style24/Upload/ProductImage
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //image.istyle24.com/Upload/ProductImage
     image:
-        target.path: /TSIT/servers/files/data
+        target.path: /TSIT/servers/files/data/style24
         max.size: 10
         allow.extension: jpg|gif|jpeg|png
         view: //tdimage.style24.com
     excel:
-        target.path: /TSIT/servers/files/data/excel
+        target.path: /TSIT/servers/files/data/style24/excel
         max.size: 10
         allow.extension: xls|xlsx
         view: //tdimage.style24.com/excel
     sample:
-        target.path: /WIDE/workspace/files/data
+        target.path: /WIDE/workspace/files/data/style24/sample
         max.size: 10
         allow.extension: txt|doc|docx|ppt|pptx|xls|xlsx|hwp|pdf
         view: //tdimage.style24.com/sample

+ 14 - 0
src/main/resources/i18n/messages/message_ko_KR.properties

@@ -92,3 +92,17 @@ SABANGNET_0010=\uCD9C\uACE0\uB97C \uC704\uD574 ERP\uB85C \uC804\uC1A1\uD558\uC60
 #\uCFE0\uD3F0
 COUPON_0001=\uCD1D {0}\uC7A5\uC758 \uCFE0\uD3F0\uC744 \uB2E4\uC6B4\uB85C\uB4DC \uD558\uC600\uC2B5\uB2C8\uB2E4.
 COUPON_0002=\uC774\uBBF8 \uB2E4\uC6B4\uB85C\uB4DC\uB97C \uC644\uB8CC \uD558\uC168\uC2B5\uB2C8\uB2E4.
+
+#\uAD50\uD658
+EXCHANGE_0001=\uAD50\uD658 \uC2E0\uCCAD\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+#\uBC18\uD488
+RETURN_0001=\uBC18\uD488 \uC2E0\uCCAD\uC774 \uC811\uC218\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+#\uCDE8\uC18C
+CANCEL_0001=\uC8FC\uBB38 \uCDE8\uC18C\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+
+#\uBC30\uC1A1
+DELV_0001=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uC9C0\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+DELV_0002=\uC815\uC0C1\uC801\uC73C\uB85C \uBC30\uC1A1\uBA54\uBAA8\uAC00 \uC218\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4.
+

+ 3 - 3
src/main/webapp/WEB-INF/views/web/mypage/MypageCancelFormWeb.html

@@ -223,7 +223,7 @@
 		fnSetMypageLnbList(2);
 
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '취소 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '취소 신청');
 
 		// 셀렉트박스 활성화
 		$(".myOrderView .part_goods .select_custom.select_count").each(function() {
@@ -311,7 +311,7 @@
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 		});
 	}
 	
@@ -364,7 +364,7 @@
 			let returnAmt = refundPayAmt + refundPoint + refundGiftCard;				// 환불예정금액
 
 			// 추가배송비 영역 설정
-			if (refundPayAmt > 0) {
+			if (refundPayAmt < 0) {
 				refundPayAmt = spanRefundAmt;
 				$('#addDeliveryFee').css('display', '');
 				$('#addPayCost').text(spanTotDeliveryFee.addComma() + '원');

+ 77 - 55
src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb.html

@@ -287,7 +287,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button>
 							<button type="button" id="btn_confirm_exchange" class="btn btn_dark btn_md" onclick="fnExchange()"><span>교환 신청</span></button>
 						</div>
 					</div>
@@ -299,9 +299,8 @@
 <script src="/ux/plugins/gaga/gaga.paging.js"></script>
 <script th:inline="javascript">
 	var isLogin = [[${isLogin}]];
-	//let ordNo = [[${oneData.ordNo}]];
 	let oneData = [[${oneData}]];
-	let isCustomer = true;
+	let isCustomer = false;
 	let addrGb = '';
 
 	$(document).ready(function() {
@@ -309,16 +308,16 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '교환 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
 		
 		// 셀렉트박스 활성화
 		$('.select_custom').each(function() {
 			new sCombo($(this));
 		});
 
-		// 입점업체의 경우 회수방식 직접배송 처리
+		// 입점업체의 경우 회수방식 방문회수 처리
 		if (oneData.selfGoodsYn != 'Y') {
-			$('#direct').click();
+			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
 	});
@@ -402,39 +401,64 @@
 
 	// 교환 처리
 	var fnExchange = function() {
-		// TODO
-		// 교환신청 처리
-
 		let url = '/mypage/exchange';
 		let delvFeeCd = oneData.delvFeeCd;
 		let ordDtlNo = oneData.ordDtlNo;
 		let supplyCompCd = oneData.supplyCompCd;
 		let excDelvFee = oneData.excDelvFee;
 		let rtnDelvFee = oneData.rtnDelvFee;
+		let chgReason = $('#exchangeForm input[name=chgReason]').val();
+		
+		// 교환 사유 체크
+		if (gagajf.isNull(chgReason)) {
+			mcxDialog.alert('교환 사유를 선택해주세요.');
+			return false;
+		}
+
+		// 교환 상품 설정
+		let chgOrdDtlNoArr = [];
+		$.each($('#exchangeForm input[name=chgQty]'), function(idx, item) {
+			if (Number($(item).val()) > 0) {
+				chgOrdDtlNoArr.push($(item).attr('ordDtlNo'));
+			}
+		});
 
-		// 교환옵션 값 파싱 처리 예제
+		// 교환옵션 설정
 		let cancelReqList = [];
 		$.each($('#exchangeForm input[name=chgOptionList]'), function(idx, item) {
-			let json = $(item).val();
-			let jsonData = JSON.parse(json);
-			$.each(jsonData, function(index, chgOpt) {
-				let cancelReq = {};
-				cancelReq.ordDtlNo = ordDtlNo;
-				cancelReq.ordDtlItemSq = chgOpt.ordDtlItemSq;
-				cancelReq.delvFeeCd = delvFeeCd;
-				cancelReq.supplyCompCd = supplyCompCd;
-				cancelReq.excDelvFee = excDelvFee;
-				cancelReq.rtnDelvFee = rtnDelvFee;
-				cancelReq.ordChgOpt = chgOpt.chgOptCd2;
-				cancelReq.chgQty = chgOpt.chgQty;
-				cancelReqList.push(cancelReq);
-			});
+			if (chgOrdDtlNoArr.includes($(item).attr('ordDtlNo')) && !gagajf.isNull($(item).val())) {
+				let json = $(item).val();
+				let jsonData = JSON.parse(json);
+				$.each(jsonData, function (index, chgOpt) {
+					let cancelReq = {};
+					cancelReq.ordDtlNo = ordDtlNo;
+					cancelReq.ordDtlItemSq = chgOpt.ordDtlItemSq;
+					cancelReq.delvFeeCd = delvFeeCd;
+					cancelReq.supplyCompCd = supplyCompCd;
+					cancelReq.excDelvFee = excDelvFee;
+					cancelReq.rtnDelvFee = rtnDelvFee;
+					cancelReq.ordChgOpt = chgOpt.chgOptCd2;
+					cancelReq.chgQty = chgOpt.chgQty;
+					cancelReqList.push(cancelReq);
+				});
+			}
 		});
-		
+
+		// 교환 수량 및 변경 옵션 체크
+		if (chgOrdDtlNoArr.length > cancelReqList.length) {
+			mcxDialog.alert('교환하실 상품의 변경 옵션을 선택해주세요.');
+			return false;
+		} else if (chgOrdDtlNoArr.length < cancelReqList.length || chgOrdDtlNoArr.length == 0) {
+			mcxDialog.alert('교환하실 상품의 수량을 선택해주세요.');
+			return false;
+		}
+
+		// 교환 필요 데이터 설정
 		let data = {};
 		data.ordNo = oneData.ordNo;
 		data.isCustomer = isCustomer;
 		data.wdGb = $('#exchangeForm input[name=wdGb]:radio:checked').val();
+		data.wdInvoiceNo = $('#exchangeForm input[name=wdInvoiceNo]').val();
 		data.recipNm = $('#exchangeForm input[name=recipNm]').val();
 		data.recipPhnno = $('#exchangeForm input[name=recipPhnno]').val();
 		data.recipTelno = $('#exchangeForm input[name=recipTelno]').val();
@@ -454,11 +478,12 @@
 		data.chgerRtnMemo = $('#exchangeForm input[name=chgerRtnMemo]').val();
 		data.addPayAmt = 0;
 		data.cancelReqList = cancelReqList;
-		
+
 		let jsonData = JSON.stringify(data);
 
+		// 교환 처리
 		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			console.log(result);
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 		});
 	}
 
@@ -505,35 +530,32 @@
 
 	// 추가 배송비 계산
 	var fnAddCost = function() {
-		// 자사상품만 처리, 입점업체는 SCM에서 별도 처리
-		if (oneData.selfGoodsYn == 'Y') {
-			let addPayCost = 0;
-			let delvFee = oneData.delvFee;
-			let rtnDelvFee = oneData.rtnDelvFee;
-
-			// 교환 수량 체크
-			let qty = 0;
-			$.each($('#exchangeForm input[name=chgQty]'), function (idx, item) {
-				qty += Number($(item).val());
-			});
-
-			// 교환 수량이 있고 고객 귀책 사유 시 추가 배송비 계산
-			if (isCustomer && qty > 0) {
-				addPayCost = delvFee;
-
-				// 회수 요청 시 반품배송비 추가
-				if ($('#exchangeForm input[name=wdGb]:radio:checked').val() == 'W') {
-					addPayCost += rtnDelvFee;
-				}
+		let addPayCost = 0;
+		let delvFee = oneData.delvFee;
+		let rtnDelvFee = oneData.rtnDelvFee;
 
-				// 추가배송비 영역 설정
-				$('#addDeliveryFee').css('display', '');
-				$('#addPayCost').text(addPayCost.addComma() + '원');
-				$('#exchangeForm input[name=addPayCost]').val(addPayCost);
-			} else {
-				$('#addDeliveryFee').css('display', 'none');
-				$('#exchangeForm input[name=addPayCost]').val(0);
+		// 교환 수량 체크
+		let qty = 0;
+		$.each($('#exchangeForm input[name=chgQty]'), function (idx, item) {
+			qty += Number($(item).val());
+		});
+
+		// 교환 수량이 있고 고객 귀책 사유 시 추가 배송비 계산
+		if (isCustomer && qty > 0) {
+			addPayCost = delvFee;
+
+			// 회수 요청 시 반품배송비 추가
+			if ($('#exchangeForm input[name=wdGb]:radio:checked').val() == 'W') {
+				addPayCost += rtnDelvFee;
 			}
+
+			// 추가배송비 영역 설정
+			$('#addDeliveryFee').css('display', '');
+			$('#addPayCost').text(addPayCost.addComma() + '원');
+			$('#exchangeForm input[name=addPayCost]').val(addPayCost);
+		} else {
+			$('#addDeliveryFee').css('display', 'none');
+			$('#exchangeForm input[name=addPayCost]').val(0);
 		}
 	}
 
@@ -558,7 +580,7 @@
 			$('#exchangeForm input[name=recipBaseAddr]').val(recipBaseAddr);
 			$('#exchangeForm input[name=recipDtlAddr]').val(recipDtlAddr);
 			$('#exchangeForm input[name=delvMemo]').val(delvMemo);
-		} else {
+		} else if (addrGb == 'chger') {
 			let chgerAddr = recipBaseAddr + ' ' + recipDtlAddr + '\n';
 			chgerAddr += '<button type="button" class="btn btn_default btn_sm" onclick="fnChangeAddr(\'chger\');"><span>회수지 변경</span></button>';
 

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageExchangeFormWeb_20210330.html

@@ -238,7 +238,7 @@
 					</div>
 				</section>
 				<div class="btn_wrap">
-					<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>교환 취소</span></button>
+					<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>교환 취소</span></button>
 					<button tyep="submit" class="btn btn_primary submit_btn" onclick="fnExchange()"><span id="exchangeButton">교환 신청</span></button>
 				</div>
 			</div>
@@ -251,7 +251,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '교환 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '교환 신청');
 	});
 
 	// 교환 옵션 변경 팝업

+ 42 - 5
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderDetailFormWeb.html

@@ -113,10 +113,20 @@
 														<th:block th:if="${#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.giftLimitDay >= 0}">
 															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>
 														</th:block>
+
+														<!-- 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중) -->
+														<th:block th:if="${ordDtl.ordDtlStat == 'G013_10' or ordDtl.ordDtlStat == 'G013_20' or ordDtl.ordDtlStat == 'G013_30' or ordDtl.ordDtlStat == 'G013_35' or ordDtl.ordDtlStat == 'G013_40'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateChange(this, 'cancel');"><span>주문 취소</span></button></p>
+														</th:block>
 														
 														<!-- 리뷰 쓰기 버튼 -->
 														<th:block th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99' and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+														</th:block>
+
+														<!-- 쇼핑백담기 버튼(구매확정) -->
+														<th:block th:if="${!#strings.isEmpty(ordDtl.recipBaseAddr) and ordDtl.ordDtlStat != 'G013_98' and ordDtl.ordDtlStat != 'G013_99'}">
+															<p><button type="button" class="btn btn_default btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>
 														</th:block>
 													</th:block>
 													<!-- 주문 -->
@@ -164,7 +174,7 @@
 	
 														<!-- 리뷰작성 버튼(구매확정) -->
 														<th:block th:if="${(ordDtl.ordDtlStat == 'G013_50' or ordDtl.ordDtlStat == 'G013_55' or ordDtl.ordDtlStat == 'G013_60' or ordDtl.ordDtlStat == 'G013_70') and ordDtl.reviewableYn == 'Y' and ordDtl.reviewSq == null}">
-															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
+															<p><button type="button" class="btn btn_primary_line btn_sm" th:attr="ordNo=${ordDtl.ordNo}, ordDtlNo=${ordDtl.ordDtlNo}, goodsCd=${ordDtl.goodsCd}" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>
 														</th:block>
 	
 														<!-- 쇼핑백담기 버튼(구매확정) -->
@@ -277,7 +287,10 @@
 									</tbody></table>
 							</div>
 						</th:block>
-						<h4 class="subH3">주문자/배송지 정보</h4>
+						<!-- 선물 -->
+						<h4 class="subH3" th:if="${oneData.giftPackYn == 'Y'}">주문자 정보</h4>
+						<!-- 주문 -->
+						<h4 class="subH3" th:unless="${oneData.giftPackYn == 'Y'}">주문자/배송지 정보</h4>
 						<div class="tbl type1">
 							<table>
 								<colgroup>
@@ -299,7 +312,30 @@
 											</div>
 										</td>
 									</tr>
-									<tr>
+									<!-- 선물 -->
+									<tr th:if="${oneData.giftPackYn == 'Y'}">
+										<th>
+											선물 받으실 분
+										</th>
+										<td>
+											<div class="single_line">
+												<ul>
+													<li><span th:text="${deliveryAddrInfo.recipNm}"></span></li>
+													<li><span th:text="${deliveryAddrInfo.recipPhnno}"></span></li>
+												</ul>
+											</div>
+										</td>
+									</tr>
+									<tr th:if="${oneData.giftPackYn == 'Y'}">
+										<th>
+											선물 메세지
+										</th>
+										<!-- TODO -->
+										<!-- 선물 메세지 처리 -->
+										<td></td>
+									</tr>
+									<!-- 주문 -->
+									<tr th:unless="${oneData.giftPackYn == 'Y'}">
 										<th>
 											배송지 정보
 										</th>
@@ -420,7 +456,8 @@
 										</dl>
 									</td>
 								</tr>
-								</tbody></table>
+								</tbody>
+							</table>
 						</div>
 						<div class="btn_footer_area">
 							<button type="button" class="btn btn_dark btn_md"><span>확인</span></button>

+ 14 - 9
src/main/webapp/WEB-INF/views/web/mypage/MypageOrderListFormWeb.html

@@ -111,7 +111,7 @@
 						</div>
 						<div class="invalid">
 							<p class="txt">취소/교환/반품</p>
-							<p class="count"><span id="orderCrsCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
+							<p class="count"><span id="orderCreCount" th:text="${orderCount.cancelCount + orderCount.returnCount + orderCount.exchangeCount}">0</span></p>
 						</div>
 					</div>
 				</div>
@@ -200,10 +200,6 @@
 					<input type="hidden" name="ordNo"/>
 					<input type="hidden" name="ordDtlNo"/>
 				</form>
-				<form id="reviewForm" name="reviewForm" th:action="@{'/mypage/review/form'}" th:method="get">
-					<input type="hidden" name="ordNo"/>
-					<input type="hidden" name="ordDtlNo"/>
-				</form>
 			</div>
 			<!-- // CONT-BODY -->
 		</div>
@@ -345,7 +341,7 @@
 			$('#shipPrepareCount').text(result.orderCount.shipPrepareCount);
 			$('#shippingCount').text(result.orderCount.shippingCount);
 			$('#shipCompleteCount').text(result.orderCount.shipCompleteCount);
-			$('#orderCrsCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
+			$('#orderCreCount').text(result.orderCount.cancelCount + result.orderCount.returnCount + result.orderCount.exchangeCount);
 		});
 	}
 
@@ -364,7 +360,6 @@
 	var fnCreateOrderList = function(param) {
 		let tag = '';
 		let imageUrl = [[${@environment.getProperty('upload.goods.view')}]];
-		console.log(param);
 
 		if (param.orderList != null && param.orderList.length > 0) {
 			$.each(param.orderList, function (idx, order) {
@@ -450,9 +445,19 @@
 							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnReSendSms(this);"><span>SMS 재발송</span></button></p>\n';
 						}
 
+						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
+						if (ordDtl.ordDtlStat == 'G013_10' || ordDtl.ordDtlStat == 'G013_20' || ordDtl.ordDtlStat == 'G013_30' || ordDtl.ordDtlStat == 'G013_35' || ordDtl.ordDtlStat == 'G013_40') {
+							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" ordCanChgQty="' + ordDtl.ordCanChgQty + '" onclick="fnCreateChange(this, \'cancel\');"><span>주문 취소</span></button></p>\n';
+						}
+
 						// 리뷰 쓰기 버튼
 						if (!gagajf.isNull(ordDtl.recipBaseAddr) && ordDtl.ordDtlStat != 'G013_98' && ordDtl.ordDtlStat != 'G013_99' && ordDtl.reviewableYn == 'Y' && ordDtl.reviewSq == null) {
-							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" goodsCd="' + ordDtl.goodsCd + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+						}
+
+						// 쇼핑백담기 버튼(구매확정)
+						if (!gagajf.isNull(ordDtl.recipBaseAddr) && ordDtl.ordDtlStat != 'G013_98' && ordDtl.ordDtlStat != 'G013_99') {
+							tag += '					<p><button type="button" class="btn btn_default btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" onclick="fnCreateCart(this);"><span>쇼핑백 담기</span></button></p>\n';
 						}
 					} else {
 						// 주문취소 버튼(입금대기, 결제완료, 상품준비중, 출고처지정, 배송준비중)
@@ -495,7 +500,7 @@
 
 						// 리뷰작성 버튼(배송중, 배송완료, 구매확정)
 						if ((ordDtl.ordDtlStat == 'G013_50' || ordDtl.ordDtlStat == 'G013_55' || ordDtl.ordDtlStat == 'G013_60' || ordDtl.ordDtlStat == 'G013_70') && ordDtl.reviewableYn == 'Y' && ordDtl.reviewSq == null) {
-							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
+							tag += '					<p><button type="button" class="btn btn_primary_line btn_sm" ordNo="' + ordDtl.ordNo + '" ordDtlNo="' + ordDtl.ordDtlNo + '" goodsCd="' + ordDtl.goodsCd + '" onclick="fnCreateReview(this);"><span>리뷰 쓰기</span></button></p>\n';
 						}
 
 						// 쇼핑백담기 버튼(구매확정)

+ 7 - 15
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb.html

@@ -319,7 +319,7 @@
 							</p>
 						</div>
 						<div class="btn_footer_area">
-							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>취소</span></button>
+							<button type="button" class="btn btn_default btn_md" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>취소</span></button>
 							<button type="button" id="btn_refund_pop" class="btn btn_dark btn_md" onclick="fnReturn()"><span>반품 신청</span></button>
 						</div>
 					</div>
@@ -355,7 +355,7 @@
 		fnSetMypageLnbList(2);
 
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '반품 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
 
 		// 반품상품 수량 셀렉트박스 활성화
 		var goods_count_selecter = new sCombo('.myOrderView .part_goods .select_custom.select_count');
@@ -365,7 +365,7 @@
 
 		// 입점업체의 경우 회수방식 직접배송 처리
 		if (oneData.selfGoodsYn != 'Y') {
-			$('#direct').click();
+			$('#withdraw').click();
 			$('.wdGb').css('display','none');
 		}
 	});
@@ -381,14 +381,6 @@
 			return false;
 		}
 
-		// 반송 송장번호 체크
-		let wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
-		let wdInvoiceNo = $('#returnForm input[name=chgReason]').val();
-		if (wdGb == 'D' && gagajf.isNull(wdInvoiceNo)) {
-			mcxDialog.alert('직접 반송하신 송장번호를 입력해주세요.');
-			return false;
-		}
-
 		// 주문상세번호 및 반품 수량 설정
 		let ordDtlNoArr = [];
 		let cnclRtnReqQtyArr = [];
@@ -456,7 +448,7 @@
 		data.accountNm = $('#returnForm input[name=accountNm]').val();
 		data.bankCd = $('#returnForm input[name=bankCd]').val();
 		data.isCustomer = isCustomer;
-		data.wdGb = wdGb;
+		data.wdGb = $('#returnForm input[name=wdGb]:radio:checked').val();
 		data.chgerNm = $('#chgerNm').text();
 		data.chgerZipcode = $('#returnForm input[name=chgerZipcode]').val();
 		data.chgerBaseAddr = $('#returnForm input[name=chgerBaseAddr]').val();
@@ -464,12 +456,13 @@
 		data.chgerPhnno = $('#returnForm input[name=chgerPhnno]').val();
 		data.chgerRtnMemo = $('#returnForm input[name=chgerRtnMemo]').val();
 		data.ordDtlNoArr = ordDtlNoArr;
+		data.wdInvoiceNo = $('#returnForm input[name=wdInvoiceNo]').val();
 		data.cnclRtnReqQtyArr = cnclRtnReqQtyArr;
 
 		let jsonData = JSON.stringify(data);
 
 		gagajf.ajaxJsonSubmit(url, jsonData, function() {
-			cfnGoToPage(_PAGE_MYPAGE_CRS_LIST);
+			cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);
 		});
 	}
 
@@ -548,11 +541,9 @@
 					$('#addDeliveryFee').css('display', '');
 					$('#addPayCost').text(addDelvFee.addComma() + '원');
 					$('#returnForm input[name=addPayCost]').val(addDelvFee);
-					//addPayCost = addDelvFee;
 				} else {
 					$('#addDeliveryFee').css('display', 'none');
 					$('#returnForm input[name=addPayCost]').val(0);
-					//addPayCost = 0;
 				}
 
 				// 금액 설정
@@ -656,6 +647,7 @@
 		$('#returnForm input[name=chgerZipcode]').val(chgerZipcode);
 		$('#returnForm input[name=chgerBaseAddr]').val(chgerBaseAddr);
 		$('#returnForm input[name=chgerDtlAddr]').val(chgerDtlAddr);
+		$('#returnForm input[name=chgerRtnMemo]').val(delvMemo);
 		
 		$('#chgerNm').text(chgerNm);
 		$('#chgerPhnno').text(chgerPhnno);

+ 2 - 2
src/main/webapp/WEB-INF/views/web/mypage/MypageReturnFormWeb_20210329.html

@@ -318,7 +318,7 @@
 								</div>
 							</section>
 							<div class="btn_wrap">
-								<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST)"><span>반품 취소</span></button>
+								<button type="button" class="btn btn_default cancle_btn" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST)"><span>반품 취소</span></button>
 								<button tyep="submit" class="btn btn_primary submit_btn" onclick="fnReturn()"><span id="returnButton">반품 신청</span></button>
 							</div>
 						</div>
@@ -340,7 +340,7 @@
 		fnSetMypageLnbList(2);
 		
 		// 마이페이지 location 설정
-		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRS_LIST', '반품 신청');
+		fnSetMypageLocation('취소/반품/환불내역', '_PAGE_MYPAGE_CRE_LIST', '반품 신청');
 		
 		// 셀렉트박스 활성화
 		$('.select_custom.type1').each(function(index) {

+ 26 - 19
src/main/webapp/WEB-INF/views/web/planning/PlanningEventAttendFormWeb.html

@@ -207,9 +207,12 @@ let calendar = [[${month}]];
 let planInfo = [[${planInfo}]];
 var custAttendList = [[${custAttendList}]];
 var appendHtml = function () {
+	
+	
 	$("#monthTbody").html('');
 	$.each(calendar, function(idx, item)  { 
-		
+
+				
 		html = '<tr>\n';
 		
 		if (item.sun!=null && item.sun!='') {
@@ -233,7 +236,7 @@ var appendHtml = function () {
 		}
 		if (item.tue!=null && item.tue!='') {
 			html += '	<td id="td_'+item.tue+'">\n';
-			html += '		<div class="date"  id="'+item.tue+'">'+item.tue+'</div>\n';
+			html += '		<div class="date" id="'+item.tue+'">'+item.tue+'</div>\n';
 			html += '	</td>\n	';
 		}else{
 			html += '	<td>\n';
@@ -250,7 +253,6 @@ var appendHtml = function () {
 			html += '	</td>\n	';
 		}
 		if (item.thu!=null && item.thu!='') {
-			if (item.thu == item1.entryDt) {
 			html += '	<td id="td_'+item.thu+'">\n';
 			html += '		<div class="date" id="'+item.thu+'">'+item.thu+'</div>\n';
 			html += '	</td>\n	';
@@ -278,8 +280,16 @@ var appendHtml = function () {
 			html += '	</td>\n	';
 		}
 		
-		html += '</tr>\n'
+		html += '</tr>\n';
+
 		$("#monthTbody").append(html);
+		
+		$.each(custAttendList, function(idx1, item1) {
+			if(item1.entryDt == item.sun || item1.entryDt == item.mon || item1.entryDt == item.tue|| item1.entryDt == item.wed
+					|| item1.entryDt == item.thu || item1.entryDt == item.fri || item1.entryDt == item.sat){
+				$("#td_"+item.tue).attr("class","complete");
+			}
+		})
 	
 	})    
 } 
@@ -299,33 +309,30 @@ var fnAttendEntry = function () {
 
 var fnInfoConfirmCallBack = function(result) {
 	mcxDialog.alert(result.msg);
-	custAttendList = result.custAttendList; 
-	
-	$.each(custAttendList, function(idx, item)  {
-		if(item.entryDt == date){
-			$("#td_"+date).attr("class","complete");
-		}else{
-			
-		}
-	}) 
-	
 	appendHtml();
+	$("#td_"+date).attr("class","complete");
+	
 };
 
 $(document).ready(function() {
 	if (!cfCheckLogin()) {
 		$(".day").html("<span>0</span>일");
 	}
-	 
+	
 	appendHtml();
-	$("#td_"+date).attr("class","today");
-	$.each(custAttendList, function(idx, item)  {
+	
+	$.each(custAttendList, function(idx, item) {
 		if(item.entryDt == date){
 			$("#td_"+date).attr("class","complete");
 		}else{
-			
+			$("#td_"+date).attr("class","today"); 
 		}
-	}) 
+	})
+	
+	
+	
+	
+	
 	
 	$(".title").html("<strong>"+month+"월</strong> 출석체크");
 	

+ 28 - 22
src/main/webapp/WEB-INF/views/web/popup/RefundAccountAddPopupFormWeb.html

@@ -80,7 +80,7 @@
 
 <script th:inline="javascript">
 	let ordNo = [[${ordNo}]];
-	let isValid;
+	let isValid = false;
 
 	$(document).ready( function() {
 		var bank_selector = new sCombo('.select_custom.select_bank');
@@ -88,27 +88,33 @@
 
 	// 계좌인증 버튼 클릭 이벤트
 	$('#confirmAccount').click(function() {
-		let url = '/mypage/account/check';
-		let accountNm = $('#refundAccountForm input[name=accountNm]').val();
-		let accountNo = $('#refundAccountForm input[name=accountNo]').val();
-		let bankCd = $('#refundAccountForm input[name=bankCd]').val();
-
-		let data = {};
-		data.accountNm = accountNm;
-		data.accountNo = accountNo;
-		data.bankCd = bankCd;
-		data.ordNo = ordNo;
-
-		let jsonData = JSON.stringify(data);
+		if (!isValid) {
+			let url = '/mypage/account/check';
+			let accountNm = $('#refundAccountForm input[name=accountNm]').val();
+			let accountNo = $('#refundAccountForm input[name=accountNo]').val();
+			let bankCd = $('#refundAccountForm input[name=bankCd]').val();
+			
+			let data = {};
+			data.accountNm = accountNm;
+			data.accountNo = accountNo;
+			data.bankCd = bankCd;
+			data.ordNo = ordNo;
+			
+			let jsonData = JSON.stringify(data);
+			
+			gagajf.ajaxJsonSubmit(url, jsonData, function (result) {
+				isValid = result.isValid;
+				if (isValid) {
+					mcxDialog.alert('계좌인증에 성공했습니다.');
 
-		gagajf.ajaxJsonSubmit(url, jsonData, function(result) {
-			isValid = result.isValid;
-			if (isValid) {
-				mcxDialog.alert('계좌인증에 성공했습니다.')
-			} else {
-				mcxDialog.alert('계좌정보를 다시 확인해주세요.');
-			}
-		});
+					// 계좌인증 성공 시 Disabled 처리
+					$('#refundAccountForm .select_custom.select_bank').attr('disabled', true);
+					$('#refundAccountForm input[name=accountNo]').attr('disabled', true);
+				} else {
+					mcxDialog.alert('계좌정보를 다시 확인해주세요.');
+				}
+			});
+		}
 	});
 
 	// 계좌등록 후 환불신청 버튼 클릭 이벤트
@@ -129,7 +135,7 @@
 			// 팝업 닫기
 			$(".close-modal").trigger("click");
 		} else {
-			mcxDialog.alert('계좌인증을 해주세요.');
+			mcxDialog.alert('계좌인증이 필요합니다.');
 		}
 	});
 </script>

+ 4 - 57
src/main/webapp/biz/mypage.js

@@ -2,7 +2,7 @@
 var fnSetMypageLnbList = function(lnbLvl) {
 	let tag = '';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_ORDER_LIST);"' + (lnbLvl == 1 ? ' class="on"' : '') + '>주문확인/배송조회</a></li>\n';
-	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_CRS_LIST);"' + (lnbLvl == 2 ? ' class="on"' : '') + '>취소/반품/환불내역</a></li>\n';
+	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_CRE_LIST);"' + (lnbLvl == 2 ? ' class="on"' : '') + '>취소/반품/환불내역</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_RESTOCK);"' + (lnbLvl == 3 ? ' class="on"' : '') + '>재입고 알림 내역</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_COUPON);"' + (lnbLvl == 4 ? ' class="on"' : '') + '>쿠폰</a></li>\n';
 	tag += '<li><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MYPAGE_POINT);"' + (lnbLvl == 5 ? ' class="on"' : '') + '>STYLE24 포인트</a></li>\n';
@@ -63,7 +63,7 @@ var fnDecideOrder = function(param) {
 		return false;
 	}
 
-	mcxDialog.confirm('구매확정 처리를 하시겠습니까?', {
+	mcxDialog.confirm('구매확정 후에는 반품/교환이 불가합니다. 구매확정하시겠습니까?', {
 		cancelBtnText: "취소",
 		sureBtnText: "확인",
 		sureBtnClick: function(){
@@ -90,11 +90,9 @@ var fnDecideOrder = function(param) {
 var fnCreateReview = function(param) {
 	let ordNo = $(param).attr('ordNo');
 	let ordDtlNo = $(param).attr('ordDtlNo');
+	let goodsCd = $(param).attr('goodsCd');
 
-	$('#reviewForm input[name=ordNo]').val(ordNo);
-	$('#reviewForm input[name=ordDtlNo]').val(ordDtlNo);
-	
-	document.reviewForm.submit();
+	fnReviewCreate(ordNo, ordDtlNo, goodsCd);
 }
 
 // 장바구니 담기 버튼 클릭 이벤트
@@ -243,50 +241,6 @@ var fnChangeDeliveryAddr = function(param) {
 	}
 }
 
-// 배송지추가 팝업열기
-//$(document).on('click','#btn_addrAdd_pop',function(e){
-//	$("#adrsAddPop").modal("show");
-//	return false;
-//});
-
-// 배송지수정 팝업열기
-//$(document).on('click','#btn_addrModify_pop',function(e){
-//	$("#adrsModifyPop").modal("show");
-//	return false;
-//});
-
-// 배송요청사항 팝업열기
-//$("#btn_rqstModify_pop").on("click", function(e){
-//	let data = {};
-//	data.delvMemo = $("input[name='delvMemo']").val();
-//
-//	$.ajax({
-//		type		: "POST",
-//		url 		: "/common/delvMemoChangePop",
-//		data		: JSON.stringify(data),
-//		dataType 	: "html",
-//		beforeSend 	: function(xhr, settings) {
-//			xhr.setRequestHeader("AJAX"			, "true");
-//			xhr.setRequestHeader('Accept'		, 'application/json');
-//			xhr.setRequestHeader('Content-Type'	, 'application/json');
-//			gagajf.showProgressbar(true);
-//		},
-//		success 	: function(result) {
-//			if (result != null) {
-//				$("#rqstModifyPop .modal-dialog .modal-content").html(result);
-//				$("#rqstModifyPop").modal("show");
-//			}
-//		}
-//	});
-//});
-
-// 회수지, 교환지, 배송지 선택 처리
-//var deliveryAddrInfoSet = function(temp) {
-//	// TODO
-//	// 배송지 변경 처리
-//	
-//}
-
 // 배송메모 설정 팝업
 var fnChangeDeliveryMemo = function() {
 	var data = {};
@@ -313,13 +267,6 @@ var fnChangeDeliveryMemo = function() {
 	});
 }
 
-// 배송메모 선택 처리
-//var fnChangeDelvMemo = function(delvMemo) {
-//	// TODO
-//	// 배송메모 변경 처리
-//	console.log(delvMemo);
-//}
-
 // 신용카드 전표 및 현금영수증 버튼 클릭 이벤트
 var fnReceipt = function(param) {
 	// TODO

+ 1 - 1
src/main/webapp/ux/style24_link.js

@@ -57,7 +57,7 @@ const _PAGE_CART = _frontUrl + "/cart/list/form";								// 장바구니
 const _PAGE_MYPAGE = _frontUrl + "/mypage/main/form";							// 마이페이지 > 메인
 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_CRE_LIST = _frontUrl + "/mypage/cre/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";					// 마이페이지 > 포인트