Explorar o código

1. 회원/마케팅 > 회원관리 > 탈퇴회원 / 휴면회원 회원 - 조회시 성별이 확인되지 않음 (완료)
2. 회원/마케팅 > 활동회원목록 : 고객아이디 검색시 전체 고객대상으로 검색요청
3. 주문/배송 배송목록 (고객ID검색기능추가) (완료)

LMC %!s(int64=4) %!d(string=hai) anos
pai
achega
9090a0ea01

+ 13 - 4
src/main/java/com/style24/admin/biz/web/TsaCustomerController.java

@@ -356,6 +356,10 @@ public class TsaCustomerController extends TsaBaseController {
 		if (!"Y".equals(customerSearch.getCpnPubPopYn())) {
 			customerSearch.setCpnPubPopYn("N");
 		}
+		if("custId".equals(customerSearch.getSearchGb())) {
+			customerSearch.setStDate(null);
+			customerSearch.setEdDate(null);
+		}
 		customerSearch.encryptData();	//데이터 암호화 필요
 		customerSearch.setRegNo(TsaSession.getInfo().getUserNo());
 		customerSearch.setPageable(new TscPageRequest(customerSearch.getPageNo() - 1, customerSearch.getPageSize()));
@@ -527,7 +531,7 @@ public class TsaCustomerController extends TsaBaseController {
 
 		return mav;
 	}
-	
+
 	/**
 	 * 메시지 발송 팝업 화면
 	 *
@@ -558,7 +562,7 @@ public class TsaCustomerController extends TsaBaseController {
 
 		return mav;
 	}
-	
+
 
 	/**
 	 * 메시지 발송
@@ -605,7 +609,7 @@ public class TsaCustomerController extends TsaBaseController {
 
 		return super.ok(message.getMessage("SUCC_0005"));
 	}
-	
+
 	/**
 	 * 메시지 발송
 	 *
@@ -627,7 +631,7 @@ public class TsaCustomerController extends TsaBaseController {
 		}
 
 		return super.ok(message.getMessage("SUCC_0005"));
-	}	
+	}
 
 	/**
 	 * 메시지 발송 팝업 화면
@@ -1022,6 +1026,9 @@ public class TsaCustomerController extends TsaBaseController {
 		// 탈퇴 구분
 		mav.addObject("secedeRsnList", rendererService.getCommonCodeList("G102", "Y"));
 
+		//성별구분
+		mav.addObject("genderGbList", rendererService.getCommonCodeList("G007", "Y"));
+
 		mav.setViewName("customer/CustomerSecedeListForm");
 
 		return mav;
@@ -1066,6 +1073,8 @@ public class TsaCustomerController extends TsaBaseController {
 
 		// 사이트 목록
 		mav.addObject("siteList", rendererService.getCommonCodeList("G000", "Y"));
+		//성별구분
+		mav.addObject("genderGbList", rendererService.getCommonCodeList("G007", "Y"));
 
 		mav.setViewName("customer/CustomerDormantListForm");
 

+ 19 - 5
src/main/java/com/style24/admin/biz/web/TsaMarketingController.java

@@ -48,6 +48,7 @@ import com.style24.core.biz.service.TscPointService;
 import com.style24.core.support.env.TscConstants;
 import com.style24.core.support.message.TscMessageByLocale;
 import com.style24.core.support.session.TscSession;
+import com.style24.core.support.util.CryptoUtils;
 import com.style24.persistence.TscPageRequest;
 import com.style24.persistence.domain.CardPromotion;
 import com.style24.persistence.domain.CardPromotionTarget;
@@ -205,6 +206,19 @@ public class TsaMarketingController extends TsaBaseController {
 			review.setGoodsCds(review.getGoodsCd().replaceAll("\r", "").split("\n"));
 		}
 
+		// multi row 검색관련 처리
+		if (!StringUtils.isBlank(review.getSearchGb())) {
+			if ("custNm".equals(review.getSearchGb()) || "email".equals(review.getSearchGb())) {
+				String[] multiParams = review.getSearchTxt().replaceAll("\r", "").split("\n");
+				for (int i = 0; i < multiParams.length; i++) {
+					multiParams[i] = CryptoUtils.encryptAES(multiParams[i]);
+				}
+				review.setSearchTxtArr(multiParams);
+			}else {
+				review.setSearchTxtArr(review.getSearchTxt().replaceAll("\r", "").split("\n"));
+			}
+		}
+
 		// 고객 관련 정보 암호화 처리
 		if (StringUtils.isNotBlank(review.getSearchTxt())) {
 			review.encryptData();
@@ -2322,7 +2336,7 @@ public class TsaMarketingController extends TsaBaseController {
 	 * 기획전 웹 수정
 	 *
 	 * @return
-	 * @author sowon		
+	 * @author sowon
 	 * @since 2021. 2. 8
 	 */
 	@PostMapping("/plan/detail/update")
@@ -2521,7 +2535,7 @@ public class TsaMarketingController extends TsaBaseController {
 //	public long getPlanDtlSq(Plan param) {
 //		return planService.getPlanDtlSq(param);
 //	}
-//	
+//
 	/**
 	 * 기획전 코너 삭제
 	 *
@@ -2884,7 +2898,7 @@ public class TsaMarketingController extends TsaBaseController {
 
 	/**
 	 * POLL detail 투표율
-	 * 
+	 *
 	 * @param POLL 투표율
 	 * @return POLL 목록
 	 * @author sowon
@@ -2911,7 +2925,7 @@ public class TsaMarketingController extends TsaBaseController {
 	 * 소셜쇼핑관리 화면
 	 *
 	 * @author sowon
-	 * @since 2021. 3. 3 
+	 * @since 2021. 3. 3
 	 */
 	@GetMapping(value = "/social/form")
 	@ResponseBody
@@ -3100,7 +3114,7 @@ public class TsaMarketingController extends TsaBaseController {
 	 * 소셜쇼핑관리 화면
 	 *
 	 * @author sowon
-	 * @since 2021. 6. 29 
+	 * @since 2021. 6. 29
 	 */
 	@GetMapping("/shot/delivery/form")
 	public ModelAndView shotDeliveryForm() {

+ 4 - 0
src/main/java/com/style24/persistence/domain/Review.java

@@ -66,9 +66,12 @@ public class Review extends TscBaseDomain {
 	// 검색조건
 	private String startDt;
 	private String endDt;
+	private String search; // 검색어
 	private String searchGb;
 	private String searchTxt;
 	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
+	private String[] searchTxtArr;
+	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
 	private String[] goodsCds;
 
 	// Pagination
@@ -99,4 +102,5 @@ public class Review extends TscBaseDomain {
 	public void encryptData () {
 		this.searchTxt = CryptoUtils.encryptAES(this.searchTxt);
 	}
+
 }

+ 4 - 2
src/main/java/com/style24/persistence/mybatis/shop/TsaCustomer.xml

@@ -591,7 +591,7 @@
 	<!--회원 1:1문의 내역  -->
 	<select id="getCustomerCounselList" parameterType="Integer" resultType="Counsel">
 		/* TsaCustomer.getCustomerCouncelList */
-		SELECT CS.COUNSEL_SQ 
+		SELECT CS.COUNSEL_SQ
 		     , CS.CUST_NO
 		     , CS.SITE_CD
 		     , CS.COUNSEL_CLSF
@@ -639,7 +639,7 @@
 	<!--회원 상품문의 내역  -->
 	<select id="getCustomerGoodsQnaList" parameterType="Integer" resultType="Counsel">
 		/* TsaCustomer.getCustomerGoodsQnaList */
-		SELECT CS.COUNSEL_SQ 
+		SELECT CS.COUNSEL_SQ
 		     , CS.CUST_NO
 		     , CS.SITE_CD
 		     , CS.COUNSEL_CLSF
@@ -765,6 +765,7 @@
 		     , BIRTH_YMD
 		     , CELL_PHNNO
 		     , EMAIL
+		     , SEX_GB
 		     , SITE_CD
 		     , SECEDE_RSN
 		     , SECEDE_DTL_RSN
@@ -845,6 +846,7 @@
 		     , CELL_PHNNO
 		     , EMAIL
 		     , BIRTH_YMD
+		     , SEX_GB
 		     , DATE_FORMAT(DORMANT_DT, '%Y%m%d%H%i%S') AS DORMANT_DT
 		     , ROW_NUMBER() OVER(ORDER BY DORMANT_DT DESC)   AS NUMB
 		FROM   TB_DORMANT_CUST

+ 54 - 14
src/main/java/com/style24/persistence/mybatis/shop/TsaReview.xml

@@ -34,13 +34,33 @@
 		<if test="dispYn != null and dispYn != ''">
 		AND    R.DISP_YN = #{dispYn}
 		</if>
-		<if test="searchTxt != null and searchTxt != ''">
-		    <if test="searchGb == 'memNm'">
-		AND    UPPER(C.CUST_NM) LIKE CONCAT(UPPER(#{searchTxt}),'%')
-		    </if>
-		    <if test="searchGb == 'email'">
-		AND    UPPER(C.EMAIL) LIKE CONCAT(UPPER(#{searchTxt}),'%')
-		    </if>
+		<if test="searchGb != null and searchGb != '' and searchTxtArr != null">
+			<choose>
+				<when test="searchGb != null and searchGb == 'custNo'">
+					AND C.CUST_NO IN
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="," close=")">
+						#{item}
+					</foreach>
+				</when>
+				<when test="searchGb != null and searchGb == 'custId'">
+					AND
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="OR" close=")">
+						UPPER(C.CUST_ID) LIKE CONCAT('%',UPPER(#{item}),'%')
+					</foreach>
+				</when>
+				<when test="searchGb != null and searchGb == 'custNm'">
+					AND C.CUST_NM IN
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="," close=")">
+						#{item}
+					</foreach>
+				</when>
+				<when test="searchGb != null and searchGb == 'email'">
+					AND C.EMAIL IN
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="," close=")">
+						 #{item}
+					</foreach>
+				</when>
+			</choose>
 		</if>
 	</select>
 
@@ -128,13 +148,33 @@
 		<if test="dispYn != null and dispYn != ''">
 		AND    R.DISP_YN = #{dispYn}
 		</if>
-		<if test="searchTxt != null and searchTxt != ''">
-		    <if test="searchGb == 'memNm'">
-		AND    UPPER(C.CUST_NM) LIKE CONCAT(UPPER(#{searchTxt}),'%')
-		    </if>
-		    <if test="searchGb == 'email'">
-		AND    UPPER(C.EMAIL) LIKE CONCAT(UPPER(#{searchTxt}),'%')
-		    </if>
+		<if test="searchGb != null and searchGb != '' and searchTxtArr != null">
+			<choose>
+				<when test="searchGb != null and searchGb == 'custNo'">
+					AND C.CUST_NO IN
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="," close=")">
+						#{item}
+					</foreach>
+				</when>
+				<when test="searchGb != null and searchGb == 'custId'">
+					AND
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="OR" close=")">
+						UPPER(C.CUST_ID) LIKE CONCAT('%',UPPER(#{item}),'%')
+					</foreach>
+				</when>
+				<when test="searchGb != null and searchGb == 'custNm'">
+					AND C.CUST_NM IN
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="," close=")">
+						#{item}
+					</foreach>
+				</when>
+				<when test="searchGb != null and searchGb == 'email'">
+					AND C.EMAIL IN
+					<foreach collection="searchTxtArr" item="item" index="index" open="(" separator="," close=")">
+						 #{item}
+					</foreach>
+				</when>
+			</choose>
 		</if>
 		ORDER  BY R.REG_DT DESC
 		LIMIT #{pageable.limitStartRow}, #{pageable.pageSize}

+ 6 - 0
src/main/webapp/WEB-INF/views/customer/CustomerDormantListForm.html

@@ -114,6 +114,8 @@
 	/*<![CDATA[*/
 	// 사이트목록
 	const siteList = gagajf.convertToArray([[${siteList}]]);
+	//성별목록
+	const genderGbList = gagajf.convertToArray([[${genderGbList}]]);
 
 	// specify the columns
 	const columnDefs = [
@@ -127,6 +129,10 @@
 		{headerName: "회원명", field:'maskingCustNm', width:100, cellClass: 'text-left'},
 		{headerName: "핸드폰", field:'maskingCellPhnno', width:140, cellClass: 'text-center'},
 		{headerName: "이메일", field:'maskingEmail', width:220, cellClass: 'text-left'},
+		{
+			headerName: "성별", field:'sexGb', width:50, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(genderGbList, params.data.sexGb); }
+		},
 		{
 			headerName: "생년월일", field:'birthYmd', width:90, cellClass: 'text-center',
 			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.birthYmd); }

+ 8 - 5
src/main/webapp/WEB-INF/views/customer/CustomerSecedeListForm.html

@@ -29,12 +29,9 @@
 		<div class="panelStyle">
 				<table class="frmStyle" aria-describedby="검색조건">
 					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
-						<col style="width:10%;"/>
 						<col style="width:15%;"/>
-						<col style="width:10%;"/>
-						<col style="width:20%;"/>
+						<col style="width:35%;"/>
+						<col style="width:15%;"/>
 						<col/>
 					</colgroup>
 					<tbody>
@@ -121,6 +118,8 @@
 	/*<![CDATA[*/
 	// 사이트목록
 	const siteList = gagajf.convertToArray([[${siteList}]]);
+	//성별구분
+	const genderGbList = gagajf.convertToArray([[${genderGbList}]]);
 
 	// specify the columns
 	const columnDefs = [
@@ -134,6 +133,10 @@
 		{headerName: "회원명", field:'maskingCustNm', width:100, cellClass: 'text-left'},
 		{headerName: "핸드폰", field:'maskingCellPhnno', width:140, cellClass: 'text-center'},
 		{headerName: "이메일", field:'maskingEmail', width:220, cellClass: 'text-left'},
+		{
+			headerName: "성별", field:'sexGb', width:50, cellClass: 'text-center',
+			valueGetter: function (params) { return gagaAgGrid.lookupValue(genderGbList, params.data.sexGb); }
+		},
 		{
 			headerName: "생년월일", field:'birthYmd', width:90, cellClass: 'text-center',
 			valueGetter: function (params) { return gagaAgGrid.toDateFormat(params.data.birthYmd); }

+ 24 - 22
src/main/webapp/WEB-INF/views/marketing/ReviewForm.html

@@ -33,27 +33,33 @@
 
 				<table class="frmStyle" aria-describedby="검색조건">
 					<colgroup>
-						<col style="width:10%;"/>
-						<col style="width:8%;"/>
-						<col style="width:10%;"/>
-						<col style="width:13%;"/>
-						<col style="width:10%;"/>
-						<col style="width:10%;"/>
-						<col style="width:10%;"/>
-						<col style="width:8%;"/>
-						<col style="width:10%;"/>
+						<col style="width:16.66%;"/>
+						<col style="width:16.66%;"/>
+						<col style="width:16.66%;"/>
+						<col style="width:16.66%;"/>
+						<col style="width:16.66%;"/>
 						<col/>
 					</colgroup>
 					<tr>
 						<th>등록일자</th>
-						<td colspan="7" id="terms">
+						<td colspan="6" id="terms"></td>
+					</tr>
+					<tr>
+						<th class="dashR">검색구분</th>
+						<td class="dashR">
+							<select name="searchGb">
+								<option value="">선택</option>
+								<option value="custNo">회원번호</option>
+								<option value="custNm">회원명 </option>
+								<option value="email">이메일</option>
+								<option value="custId">아이디</option>
+							</select>
+							<textarea class="textareaR2 w150" name="searchTxt" id="searchTxt"></textarea>
 						</td>
-						<th rowspan="2">상품코드</th>
-						<td rowspan="2">
+						<th>상품코드</th>
+						<td>
 							<textarea class="textareaR2 w150" name="goodsCd" id="goodsCd"></textarea>
 						</td>
-					</tr>
-					<tr>
 						<th>상품평유형</th>
 						<td>
 							<select name="reviewGb">
@@ -62,14 +68,8 @@
 								<option value="P">포토/영상</option>
 							</select>
 						</td>
-						<th>회원검색</th>
-						<td>
-							<select name="searchGb">
-								<option value="memNm">회원명</option>
-								<option value="email">이메일</option>
-							</select>
-							<input type="text" name="searchTxt" class="w100" maxlength="50"/>
-						</td>
+					</tr>
+					<tr>
 						<th>포인트지급상태</th>
 						<td>
 							<select name="pntGiveStat">
@@ -85,6 +85,8 @@
 								<option value="N">[N] No</option>
 							</select>
 						</td>
+						<th></th>
+						<td></td>
 					</tr>
 				</table>