Quellcode durchsuchen

[ST24PRJ-10] [CS개선][제휴몰] 샵링커주문수집관리 > 미할당주문 메모

jmh vor 4 Jahren
Ursprung
Commit
73175f1d7a

+ 9 - 0
src/main/java/com/style24/admin/biz/dao/TsaShoplinkerDao.java

@@ -240,4 +240,13 @@ public interface TsaShoplinkerDao {
 	 */
 	Collection<GagaMap> getInvoiceExcelList(ShoplinkerInvoice shoplinkerInvoice);
 
+	/**
+	 * 샵링커 주문수집 목록 - 제휴몰업로드 메모 저장 
+	 *
+	 * @param extmallOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 11. 17
+	 */
+	void updateExtmallUploadMemo(ExtmallOrder extmallOrder);
 }

+ 18 - 2
src/main/java/com/style24/admin/biz/service/TsaShoplinkerService.java

@@ -8,6 +8,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import com.gagaframework.excel.GagaExcelUtil;
 import com.gagaframework.excel.env.GagaExcelConstants;
@@ -1091,12 +1092,12 @@ public class TsaShoplinkerService {
 		// 헤더 title 설정
 		String[] listTitles = { "제휴몰주문등록상태", "실패사유", "업로드실패사유", "스타일24 주문번호", "샵링커 주문번호", "쇼핑몰 주문번호", "배송번호", "쇼핑몰 명", "배송상태[발주확인]"
 				,"주문 상품번호", "샵링커 상품번호", "자사 상품코드", "상품명", "주문수량", "주문금액", "판매단가", "공급가"
-				, "옵션코드", "옵션명", "옵션1", "옵션2", "교환접수여부", "주문수집일자", "제휴몰등록일", "등록자"};
+				, "옵션코드", "옵션명", "옵션1", "옵션2", "교환접수여부", "주문수집일자", "제휴몰등록일", "등록자", "CS메모", "CS메모수정일시"};
 
 		// DB 처리 시 사용되는 파라미터명(셀명) 설정
 		String[] cellNames = {"UPLOAD_STAT", "UPLOAD_FAIL_CD", "UPLOAD_FAIL_REASON", "ORD_NO", "SHOPLINKER_ORDER_ID", "MALL_ORDER_ID", "SHIP_NO", "MALL_NAME", "BAESONG_STATUS"
 				, "ORDER_PRODUCT_ID", "SHOPLINKER_PRODUCT_ID", "PARTNER_PRODUCT_ID", "PRODUCT_NAME", "QUANTITY", "ORDER_PRICE", "SALE_PRICE", "SUPPLY_PRICE"
-				, "SKU_MATCH_CODE", "SKU", "OPT_CD1", "OPT_CD2", "EXCHANGE_ORDER_YN", "ORDER_REG_DATE", "EXTMALL_REG_DT", "REG_NM"};
+				, "SKU_MATCH_CODE", "SKU", "OPT_CD1", "OPT_CD2", "EXCHANGE_ORDER_YN", "ORDER_REG_DATE", "EXTMALL_REG_DT", "REG_NM", "CS_MEMO", "CS_MEMO_UPD_DT"};
 
 		String[] cellTypes = {
 			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
@@ -1111,6 +1112,7 @@ public class TsaShoplinkerService {
 			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
 			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
 			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_CENTER.name(),
+			GagaExcelConstants.CellType.CHAR_CENTER.name(), GagaExcelConstants.CellType.CHAR_LEFT.name(),
 			GagaExcelConstants.CellType.CHAR_CENTER.name()};
 
 		shoplinkerOrder.setExcelDownType("1");
@@ -1461,4 +1463,18 @@ public class TsaShoplinkerService {
 
         return resultQty;
     }
+	
+	/**
+	 * 샵링커 주문수집 목록 - 제휴몰업로드 메모 저장 
+	 *
+	 * @param extmallOrder
+	 * @return
+	 * @author jmh
+	 * @since 2021. 11. 17
+	 */
+	@Transactional("shopTxnManager")
+	public void updateExtmallUploadMemo(ExtmallOrder extmallOrder) {
+		admShoplinkerDao.updateExtmallUploadMemo(extmallOrder);
+	}
+	
 }

+ 17 - 1
src/main/java/com/style24/admin/biz/web/TsaShoplinkerController.java

@@ -44,6 +44,7 @@ import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.CommonCode;
 import com.style24.persistence.domain.Extmall;
+import com.style24.persistence.domain.ExtmallOrder;
 import com.style24.persistence.domain.ShoplinkerGoods;
 import com.style24.persistence.domain.ShoplinkerInvoice;
 import com.style24.persistence.domain.ShoplinkerOrder;
@@ -905,7 +906,22 @@ log.info(" #### SHOPLINKER CHKE 1 - "+runMap.getRunCnt()+" | "+runMap.getSidOver
 		return runMap;
 	}
 
-
+	/**
+	 * 샵링커 주문수집 목록 - 제휴몰업로드 메모 저장 
+	 * 
+	 * @param
+	 * @return
+	 * @throws Exception
+	 * @author jmh
+	 * @since 2021. 11. 17
+	 */
+	@PostMapping("/extmall/order/memo/save")
+	@ResponseBody
+	public GagaResponse updateExtmallUploadMemoSave(@RequestBody ExtmallOrder extmallOrder) {
+		admShoplinkerService.updateExtmallUploadMemo(extmallOrder);
+		
+		return super.ok(message.getMessage("SUCC_0001"));
+	}
 
 	/*
 	 *

+ 25 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaShoplinker.xml

@@ -564,7 +564,11 @@
 		WHERE RANKING = 1
 	</select>
 
-	<!-- 샵링커주문수집-목록 -->
+	<!-- 
+		샵링커주문수집-목록
+		※ 원래 샵링커 주문목록만 보여주고 있었으나, 오픈 후 엑셀업로드도 보여달라고 요청 옴. => 메뉴를 나누는게 맞으나 이곳에 같이 넣어달라고 하였음.
+		TB_EXTMALL_ORDER_UPLOAD만 바라보는 메뉴가 있는게 쿼리(성능)나 이력 확인용으로 맞음 
+	-->
 	<select id="getShoplinkerOrderList" parameterType="ShoplinkerOrder" resultType="ShoplinkerOrder">
 		/* TsaShoplinker.getShoplinkerOrderList */
 		SELECT * FROM
@@ -620,6 +624,8 @@
 				, B.DELV_ADDR_SQ
 				, B.REG_DT AS EXTMALL_REG_DT
 				, FN_GET_USER_NM(ifnull(B.REG_NO, 99999)) AS REG_NM
+				, B.CS_MEMO
+				, B.CS_MEMO_UPD_DT
 				
 				, OP.OPT_CD1 
 				, OP.OPT_CD2 
@@ -682,6 +688,8 @@
 				, B.DELV_ADDR_SQ
 				, B.REG_DT AS EXTMALL_REG_DT
 				, FN_GET_USER_NM(B.REG_NO) AS REG_NM 
+				, B.CS_MEMO
+				, B.CS_MEMO_UPD_DT
 				
 				, OP.OPT_CD1 
 				, OP.OPT_CD2 
@@ -851,6 +859,8 @@
 				, B.DELV_ADDR_SQ
 				, B.REG_DT AS EXTMALL_REG_DT
 				, FN_GET_USER_NM(ifnull(B.REG_NO, 99999)) AS REG_NM
+				, B.CS_MEMO
+				, B.CS_MEMO_UPD_DT
 				
 				, OP.OPT_CD1 
 				, OP.OPT_CD2 
@@ -913,6 +923,8 @@
 				, B.DELV_ADDR_SQ
 				, B.REG_DT AS EXTMALL_REG_DT
 				, FN_GET_USER_NM(B.REG_NO) AS REG_NM 
+				, B.CS_MEMO
+				, B.CS_MEMO_UPD_DT
 				
 				, OP.OPT_CD1 
 				, OP.OPT_CD2 
@@ -1181,7 +1193,18 @@
 	            </choose>
 	        </if>
 	</sql>
-
+	
+	<!-- 샵링커 주문수집 목록 - 제휴몰업로드 메모 저장 
+	※ 쇼핑몰주문번호, 샵링커주문번호의 값이 동일한 데이터들 일괄 업데이트(실패, 성공 여러건 목록으로 존재함. 조회목록에서는 전체이력을 보여주지 않으므로)
+	-->
+	<update id="updateExtmallUploadMemo" parameterType="ExtmallOrder">
+		UPDATE TB_EXTMALL_ORDER_UPLOAD
+		SET CS_MEMO = #{csMemo}
+			, CS_MEMO_UPD_DT = NOW()
+		WHERE EXTMALL_ORDER_ID = #{extmallOrderId} 
+		AND AGENT_ORDER_ID = #{agentOrderId} 
+	</update>
+	
 </mapper>
 
 

+ 6 - 0
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderDetailForm.html

@@ -304,6 +304,12 @@
 							<th>등록일시</th>
 							<td class="aL padL10" th:text="${extOrderInfo.regDt}"></td>
 						</tr>
+						<tr>
+							<th>CS메모</th>
+							<td colspan="3" class="aL padL10" th:text="${extOrderInfo.csMemo}"></td>
+							<th>CS메모수정일시</th>
+							<td class="aL padL10" th:text="${extOrderInfo.csMemoUpdDt }"></td>
+						</tr>
 					</tbody>
 				</table>
 			</div>

+ 34 - 30
src/main/webapp/WEB-INF/views/shoplinker/ShoplinkerOrderForm.html

@@ -283,6 +283,21 @@
 		{headerName: "쇼핑몰 명", field: "mallName", width: 130, cellClass: 'text-center'},
 		{headerName: "주문자명", field: "orderName", width: 130, cellClass: 'text-center'},
 		{headerName: "주문자연락처", field: "orderCel", width: 130, cellClass: 'text-center'},
+		{headerName: "CS메모",    headerClass:'text-point',	field: "csMemo",		width: 200,	cellClass: 'text-left',editable: true,
+			cellEditor: 'textCellEditor',
+			cellEditorParams: { maxlength: 1000, required: true },
+			cellStyle : function(params){
+				var color = "";
+					color = '#ff96689c';
+				return { 'text-color': color};
+			}
+		},			
+		{headerName: "",				field: "",	width: 90,	cellClass: 'text-center',
+			cellRenderer: function(params) {
+				var btnText = '<a href="javascript:void(0);"  class="btn btn-success btn-ssm">저장</a>';
+				return btnText;
+			}	
+		},
 		{headerName: "배송상태[발주확인]", field: "baesongStatus", width: 130, cellClass: 'text-center'},
 		{headerName: "주문 상품번호", field: "orderProductId", width: 130, cellClass: 'text-center'},
 		{headerName: "샵링커 상품번호", field: "shoplinkerProductId", width: 130, cellClass: 'text-center'},
@@ -331,38 +346,27 @@
 
 	// Cell click
 	gridOptions.onCellClicked = function(event) {
-		if (event.colDef.field != 'extmallId')
-			return;
-
-		$('#detailForm select[name=vendorId]').val(event.data.vendorId);
-		$('#detailForm input[name=extmallId]').val(event.data.extmallId);
-		$('#detailForm input[name=extmallUserId]').val(event.data.extmallUserId);
-		$('#detailForm input[name=extmallNm]').val(event.data.extmallNm);
-		$('#detailForm select[name=supplyCompCd]').val(event.data.supplyCompCd);
-		$('#detailForm input[name=sellStoreCd]').val(event.data.sellStoreCd);
-		$('#detailForm input[name=stockSellRate]').val(event.data.stockSellRate);
-		$('#detailForm input[name=priceAcceptRate]').val(event.data.priceAcceptRate);
-
-		if (event.data.dwdpYn == 'Y') {
-			$('#detailForm input:radio[name=dwdpYn]').eq(0).trigger('click');
-		} else {
-			$('#detailForm input:radio[name=dwdpYn]').eq(1).trigger('click');
-		}
-
-		if (event.data.cnclsmsSendYn == 'Y') {
-			$('#detailForm input:radio[name=cnclsmsSendYn]').eq(0).trigger('click');
-		} else {
-			$('#detailForm input:radio[name=cnclsmsSendYn]').eq(1).trigger('click');
-		}
-
-		if (event.data.useYn == 'Y') {
-			$('#detailForm input:radio[name=useYn]').eq(0).trigger('click');
-		} else {
-			$('#detailForm input:radio[name=useYn]').eq(1).trigger('click');
+		if(event.colDef.field == ''){
+			if(gagajf.isNull(event.data.csMemo)){
+				mcxDialog.alert("내용을 입력해주세요.");
+			}else{
+				var params = {};
+				params.csMemo = event.data.csMemo;
+				params.agentOrderId = event.data.shoplinkerOrderId;
+				params.extmallOrderId = event.data.mallOrderId;
+					
+				mcxDialog.confirm('저장(수정) 하시겠습니까?', {
+					cancelBtnText: "취소",
+					sureBtnText: "확인",
+					sureBtnClick: function(){
+						var jsonData = JSON.stringify(params);
+						gagajf.ajaxJsonSubmit('/shoplinker/extmall/order/memo/save', jsonData, fnGoodsListSearch);
+					}
+				});
+			}
 		}
 	}
-
-
+	
 	//페이징
 	$('#searchForm select[name=pageSize]').on('change', function() {
 		$("#searchForm input[name=pageNo]").val('1');