설정 > 패밀리사이트 설정, 환율 설정, 안내문구 설정 - 추가

This commit is contained in:
이대환
2026-04-29 13:53:41 +09:00
parent 6bf80ca297
commit fd385fe898
14 changed files with 1186 additions and 1 deletions

View File

@@ -9,7 +9,6 @@ import org.springframework.stereotype.Repository;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOShopSetupVO;
import com.wb.domainserver.domain.admin.sys.menu.vo.BOMaMenuVO;
import com.wb.domainserver.util.dataaccess.DataMap;
/**
@@ -81,6 +80,10 @@ public interface BOMaSopmalMapper {
public int updateBOSopmalUpdt(BOMaSopmalVO vo);
public int updateBOExchngrtSetup(BOMaSopmalVO vo);
public int updateBOGuidanceSetup(BOMaSopmalVO vo);
public int deteteBOShopFamilySite(BOMaSopmalVO vo);
public int deteteBOShopClause(BOMaSopmalVO vo);

View File

@@ -0,0 +1,56 @@
package com.wb.domainserver.domain.gcone.setup.exchngrt.service;
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.exception.code.ErrorCode;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 환율 설정 BO Serivce
*
* @author 이대환
* @version 1.0
* @see <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-04-27 이대환 최초 생성
*
* </pre>
* @since 2026-04-27
*/
@Slf4j
@Service
public class BOExchngrtService {
@Autowired
private BOMaComncdService bOMaComncdService;
@Autowired
private BOMaSopmalMapper mapper;
/**
* 환율 설정 수정
* @param boMaSopmalVO
*/
@Transactional
public DataMap updateBOExchngrtSetup(BOMaSopmalVO boMaSopmalVO) {
DataMap message = new DataMap();
try {
mapper.updateBOExchngrtSetup(boMaSopmalVO);
message.put("result", "success");
} catch (WnbtRestException wre) {
throw new WnbtRestException(wre.getMessage());
} catch (Exception e) {
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
}
return message;
}
}

View File

@@ -0,0 +1,32 @@
package com.wb.domainserver.domain.gcone.setup.exchngrt.vo;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.comm.vo.AbstractVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper=false)
public class BOExchngrtVO extends AbstractVO {
/** 쇼핑몰 코드 */
private String sopmalCd;
/** 1엔 환율(살때) */
private String buyRate;
/** 1엔 환율(팔때) */
private String sellRate;
/** BOMaSopmalVO로 변환 */
public BOMaSopmalVO setBOMaSopmalVO() {
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
boMaSopmalVO.setSopmalCd(this.getSopmalCd());
boMaSopmalVO.setBuyRate(this.getBuyRate());
boMaSopmalVO.setSellRate(this.getSellRate());
boMaSopmalVO.setRegusr(this.getRegusr());
boMaSopmalVO.setUpdusr(this.getUpdusr());
return boMaSopmalVO;
}
}

View File

@@ -0,0 +1,76 @@
package com.wb.domainserver.domain.gcone.setup.family.service;
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.exception.code.ErrorCode;
import com.wb.domainserver.util.dataaccess.DataMap;
import com.wb.domainserver.util.string.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
/**
* 패밀리사이트 설정 BO Serivce
*
* @author 이대환
* @version 1.0
* @see <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-04-27 이대환 최초 생성
*
* </pre>
* @since 2026-04-27
*/
@Slf4j
@Service
public class BOFamilyService {
@Autowired
private BOMaComncdService bOMaComncdService;
@Autowired
private BOMaSopmalMapper mapper;
/**
* 패밀리사이트 설정 수정
* @param boMaSopmalVO
*/
@Transactional
public DataMap updateBOFamilySetup(BOMaSopmalVO boMaSopmalVO) {
DataMap message = new DataMap();
try {
mapper.deteteBOShopFamilySite(boMaSopmalVO);
DataMap paramMap = new DataMap();
paramMap.put("sopmalCd", boMaSopmalVO.getSopmalCd());
paramMap.put("regusr", boMaSopmalVO.getRegusr());
if (!ObjectUtils.isEmpty(boMaSopmalVO.getFamilySiteNmArr())) {
String[] siteNm = boMaSopmalVO.getFamilySiteNmArr();
String[] siteUrl = boMaSopmalVO.getFamilySiteUrlArr();
for (int i = 0; i < siteNm.length; i++) {
if (!StringUtil.isEmpty(siteNm[i])) {
paramMap.put("familySiteNm", siteNm[i]);
paramMap.put("familySiteUrl", siteUrl[i]);
mapper.insertBOShopFamilySite(paramMap);
}
}
}
message.put("result", "success");
} catch (WnbtRestException wre) {
throw new WnbtRestException(wre.getMessage());
} catch (Exception e) {
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
}
return message;
}
}

View File

@@ -0,0 +1,32 @@
package com.wb.domainserver.domain.gcone.setup.family.vo;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.comm.vo.AbstractVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper=false)
public class BOFamilyVO extends AbstractVO {
/** 쇼핑몰 코드 */
private String sopmalCd;
/** 패밀리사이트명 */
private String[] familySiteNmArr;
/** 패밀리사이트URL */
private String[] familySiteUrlArr;
/** BOMaSopmalVO로 변환 */
public BOMaSopmalVO setBOMaSopmalVO() {
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
boMaSopmalVO.setSopmalCd(this.getSopmalCd());
boMaSopmalVO.setFamilySiteNmArr(this.getFamilySiteNmArr());
boMaSopmalVO.setFamilySiteUrlArr(this.getFamilySiteUrlArr());
boMaSopmalVO.setRegusr(this.getRegusr());
boMaSopmalVO.setUpdusr(this.getUpdusr());
return boMaSopmalVO;
}
}

View File

@@ -0,0 +1,56 @@
package com.wb.domainserver.domain.gcone.setup.guidance.service;
import com.wb.domainserver.domain.admin.store.sopmal.mapper.BOMaSopmalMapper;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.admin.sys.comncd.service.BOMaComncdService;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.exception.code.ErrorCode;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 안내문구 설정 BO Serivce
*
* @author 이대환
* @version 1.0
* @see <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-04-27 이대환 최초 생성
*
* </pre>
* @since 2026-04-27
*/
@Slf4j
@Service
public class BOGuidanceService {
@Autowired
private BOMaComncdService bOMaComncdService;
@Autowired
private BOMaSopmalMapper mapper;
/**
* 안내문구 설정 수정
* @param boMaSopmalVO
*/
@Transactional
public DataMap updateBOGuidanceSetup(BOMaSopmalVO boMaSopmalVO) {
DataMap message = new DataMap();
try {
mapper.updateBOGuidanceSetup(boMaSopmalVO);
message.put("result", "success");
} catch (WnbtRestException wre) {
throw new WnbtRestException(wre.getMessage());
} catch (Exception e) {
throw new WnbtRestException(ErrorCode.INTERNAL_SERVER_ERROR);
}
return message;
}
}

View File

@@ -0,0 +1,44 @@
package com.wb.domainserver.domain.gcone.setup.guidance.vo;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.comm.vo.AbstractVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper=false)
public class BOGuidanceVO extends AbstractVO {
/** 쇼핑몰 코드 */
private String sopmalCd;
/** 회원가입 안내 타이틀 */
private String joinGuidanceSj;
/** 회원가입 안내문구 */
private String joinGuidanceWords;
/** 회원가입 주요혜택 */
private String joinBnef;
/** 회원가입 주요문구 */
private String joinComptWords;
/** 구독서비스 안내문구 */
private String subsvcGuidanceWords;
/** BOMaSopmalVO로 변환 */
public BOMaSopmalVO setBOMaSopmalVO() {
BOMaSopmalVO boMaSopmalVO = new BOMaSopmalVO();
boMaSopmalVO.setSopmalCd(this.getSopmalCd());
boMaSopmalVO.setJoinGuidanceSj(this.getJoinGuidanceSj());
boMaSopmalVO.setJoinGuidanceWords(this.getJoinGuidanceWords());
boMaSopmalVO.setJoinBnef(this.getJoinBnef());
boMaSopmalVO.setJoinComptWords(this.getJoinComptWords());
boMaSopmalVO.setSubsvcGuidanceWords(this.getSubsvcGuidanceWords());
boMaSopmalVO.setRegusr(this.getRegusr());
boMaSopmalVO.setUpdusr(this.getUpdusr());
return boMaSopmalVO;
}
}

View File

@@ -0,0 +1,116 @@
package com.wb.domainserver.domain.mngr.setup.exchngrt;
import com.wb.domainserver.common.msg.GconeMessageSource;
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.gcone.setup.exchngrt.service.BOExchngrtService;
import com.wb.domainserver.domain.gcone.setup.exchngrt.vo.BOExchngrtVO;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.response.WnbtResponse;
import com.wb.domainserver.response.WnbtResponseBody;
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
import com.wb.domainserver.security.authentication.AnonymousUser;
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
import com.wb.domainserver.security.authorization.annotation.Policy;
import com.wb.domainserver.util.communicate.SendToResrc;
import com.wb.domainserver.util.communicate.ValidateResultConverter;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 환율 설정 Controller
*
* @author 이대환
* @version 1.0
* @see <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-04-27 이대환 최초 생성
*
* </pre>
* @since 2026-04-27
*/
@Controller
@RequestMapping("/mngr/setup/exchngrt")
@Slf4j
public class ExchngrtController {
/** WebClient 호출을 위한 wrapper */
@Autowired
WnbtWebClientResponseHandler responseHandler;
@Autowired
private SendToResrc sendToResrc;
/** 공통 메시지 처리를 위한 메시지 객체 */
@Autowired
private GconeMessageSource gconeMessageSource;
@Autowired
private BOExchngrtService service;
@Autowired
private BOMaSopmalService bOMaSopmalService;
/**
* 환율 설정 페이지 이동
*
* @param boMaSopmalVO
* @return NbkkSetupListR.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value = "/selectExchngrtSetup")
public String selectExchngrtSetup(BOMaSopmalVO boMaSopmalVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
DataMap content = new DataMap();
boMaSopmalVO.setSopmalCd(authSopmalCd);
content.put("sopmalDetailList", bOMaSopmalService.selectBOSopmalUpdtForm(boMaSopmalVO));
model.addAttribute("resultMap", content);
return "mngr/setup/exchngrt/ExchngrtUpdtU";
}
/**
* 환율 설정 수정
*
* @param boExchngrtVO
* @return ResponseEntity<WnbtResponse>
*/
@Policy(AuthPolicy.RESTRICTED)
@PostMapping(value = "/updateExchngrtSetup", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<WnbtResponse> updateExchngrtSetup(@Validated BOExchngrtVO boExchngrtVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
//등록자 수정자 set
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
boExchngrtVO.setRegusr(user.getUserInnb());
boExchngrtVO.setUpdusr(user.getUserInnb());
boExchngrtVO.setSopmalCd(authSopmalCd);
if (bindingResult.hasErrors()) {
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
}
DataMap message = service.updateBOExchngrtSetup(boExchngrtVO.setBOMaSopmalVO());
return ResponseEntity.ok(
WnbtResponse.builder()
.resBody(new WnbtResponseBody(message))
.build()
);
}
}

View File

@@ -0,0 +1,115 @@
package com.wb.domainserver.domain.mngr.setup.family;
import com.wb.domainserver.common.msg.GconeMessageSource;
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.gcone.setup.family.service.BOFamilyService;
import com.wb.domainserver.domain.gcone.setup.family.vo.BOFamilyVO;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.response.WnbtResponse;
import com.wb.domainserver.response.WnbtResponseBody;
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
import com.wb.domainserver.security.authentication.AnonymousUser;
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
import com.wb.domainserver.security.authorization.annotation.Policy;
import com.wb.domainserver.util.communicate.SendToResrc;
import com.wb.domainserver.util.communicate.ValidateResultConverter;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 패밀리사이트 설정 Controller
*
* @author 이대환
* @version 1.0
* @see <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-04-27 이대환 최초 생성
*
* </pre>
* @since 2026-04-27
*/
@Controller
@RequestMapping("/mngr/setup/family")
@Slf4j
public class FamilyController {
/** WebClient 호출을 위한 wrapper */
@Autowired
WnbtWebClientResponseHandler responseHandler;
@Autowired
private SendToResrc sendToResrc;
/** 공통 메시지 처리를 위한 메시지 객체 */
@Autowired
private GconeMessageSource gconeMessageSource;
@Autowired
private BOFamilyService service;
@Autowired
private BOMaSopmalService bOMaSopmalService;
/**
* 패밀리사이트 설정 페이지 이동
*
* @param boMaSopmalVO
* @return NbkkSetupListR.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value = "/selectFamilySiteSetup")
public String selectFamilySiteSetup(BOMaSopmalVO boMaSopmalVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
DataMap content = new DataMap();
boMaSopmalVO.setSopmalCd(authSopmalCd);
content.put("siteList", bOMaSopmalService.selectBOSopmalUpdtFormSitelList(boMaSopmalVO));
model.addAttribute("resultMap", content);
return "mngr/setup/family/FamilySiteUpdtU";
}
/**
* 패밀리사이트 설정 수정
*
* @param boFamilyVO
* @return ResponseEntity<WnbtResponse>
*/
@Policy(AuthPolicy.RESTRICTED)
@PostMapping(value = "/updateFamilySiteSetup", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<WnbtResponse> updateNbkkSetup(@Validated BOFamilyVO boFamilyVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
//등록자 수정자 set
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
boFamilyVO.setRegusr(user.getUserInnb());
boFamilyVO.setUpdusr(user.getUserInnb());
boFamilyVO.setSopmalCd(authSopmalCd);
if (bindingResult.hasErrors()) {
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
}
DataMap message = service.updateBOFamilySetup(boFamilyVO.setBOMaSopmalVO());
return ResponseEntity.ok(
WnbtResponse.builder()
.resBody(new WnbtResponseBody(message))
.build()
);
}
}

View File

@@ -0,0 +1,117 @@
package com.wb.domainserver.domain.mngr.setup.guidance;
import com.wb.domainserver.common.msg.GconeMessageSource;
import com.wb.domainserver.domain.admin.store.sopmal.service.BOMaSopmalService;
import com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO;
import com.wb.domainserver.domain.gcone.setup.guidance.service.BOGuidanceService;
import com.wb.domainserver.domain.gcone.setup.guidance.vo.BOGuidanceVO;
import com.wb.domainserver.exception.WnbtRestException;
import com.wb.domainserver.response.WnbtResponse;
import com.wb.domainserver.response.WnbtResponseBody;
import com.wb.domainserver.response.WnbtWebClientResponseHandler;
import com.wb.domainserver.security.authentication.AnonymousUser;
import com.wb.domainserver.security.authentication.MemberJwtContextHolder;
import com.wb.domainserver.security.authorization.annotation.AuthPolicy;
import com.wb.domainserver.security.authorization.annotation.Policy;
import com.wb.domainserver.util.communicate.SendToResrc;
import com.wb.domainserver.util.communicate.ValidateResultConverter;
import com.wb.domainserver.util.dataaccess.DataMap;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* 안내문구 설정 Controller
*
* @author 이대환
* @version 1.0
* @see <pre>
* == (Modification Information) == 개정이력
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2026-04-27 이대환 최초 생성
*
* </pre>
* @since 2026-04-27
*/
@Controller
@RequestMapping("/mngr/setup/guidance")
@Slf4j
public class GuidanceController {
/** WebClient 호출을 위한 wrapper */
@Autowired
WnbtWebClientResponseHandler responseHandler;
@Autowired
private SendToResrc sendToResrc;
/** 공통 메시지 처리를 위한 메시지 객체 */
@Autowired
private GconeMessageSource gconeMessageSource;
@Autowired
private BOGuidanceService service;
@Autowired
private BOMaSopmalService bOMaSopmalService;
/**
* 안내문구 설정 페이지 이동
*
* @param boMaSopmalVO
* @return NbkkSetupListR.jsp
*/
@Policy(AuthPolicy.RESTRICTED)
@RequestMapping(value = "/selectGuidanceSetup")
public String selectNbkkSetupList(BOMaSopmalVO boMaSopmalVO, ModelMap model, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
DataMap content = new DataMap();
boMaSopmalVO.setSopmalCd(authSopmalCd);
content.put("sopmalDetailList", bOMaSopmalService.selectBOSopmalUpdtForm(boMaSopmalVO));
model.addAttribute("resultMap", content);
model.addAttribute("sopmalCd", authSopmalCd);
return "mngr/setup/guidance/GuidanceUpdtU";
}
/**
* 안내문구 설정 수정
*
* @param boGuidanceVO
* @return ResponseEntity<WnbtResponse>
*/
@Policy(AuthPolicy.RESTRICTED)
@PostMapping(value = "/updateGuidanceSetup", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<WnbtResponse> updateGuidanceSetup(@Validated BOGuidanceVO boGuidanceVO, BindingResult bindingResult, @CookieValue(value = "authSopmalCd") String authSopmalCd) {
//등록자 수정자 set
AnonymousUser user = MemberJwtContextHolder.getMemberInfo();
boGuidanceVO.setRegusr(user.getUserInnb());
boGuidanceVO.setUpdusr(user.getUserInnb());
boGuidanceVO.setSopmalCd(authSopmalCd);
if (bindingResult.hasErrors()) {
throw new WnbtRestException(ValidateResultConverter.convert(bindingResult, gconeMessageSource));
}
DataMap message = service.updateBOGuidanceSetup(boGuidanceVO.setBOMaSopmalVO());
return ResponseEntity.ok(
WnbtResponse.builder()
.resBody(new WnbtResponseBody(message))
.build()
);
}
}

View File

@@ -947,6 +947,37 @@
SOPMAL_CD = #{sopmalCd}
</update>
<!-- 쇼핑몰 환율 설정 수정 -->
<update id="updateBOExchngrtSetup" parameterType="com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO" >
UPDATE
GC_SHOP
SET BUY_RATE = #{buyRate},
SELL_RATE = #{sellRate},
UPDUSR = #{updusr},
UPDT_DT = SYSDATE()
WHERE
1=1
AND
SOPMAL_CD = #{sopmalCd}
</update>
<!-- 쇼핑몰 안내문구 설정 수정 -->
<update id="updateBOGuidanceSetup" parameterType="com.wb.domainserver.domain.admin.store.sopmal.vo.BOMaSopmalVO" >
UPDATE
GC_SHOP
SET JOIN_GUIDANCE_SJ = #{joinGuidanceSj},
JOIN_GUIDANCE_WORDS = #{joinGuidanceWords},
JOIN_BNEF = #{joinBnef},
JOIN_COMPT_WORDS = #{joinComptWords},
SUBSVC_GUIDANCE_WORDS = #{subsvcGuidanceWords},
UPDUSR = #{updusr},
UPDT_DT = SYSDATE()
WHERE
1=1
AND
SOPMAL_CD = #{sopmalCd}
</update>
<!-- 쇼핑몰 사업자 정보 삭제 -->
<delete id="deteteBOShopCompany" parameterType="com.wb.domainserver.domain.admin.sys.author.vo.BOMaAuthorVO">

View File

@@ -0,0 +1,110 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%--
Class Name : ExchngrtUpdtU.jsp
Description : 환율 설정 상세
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2026-04-27 이대환 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%-- 공통 include --%>
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
</head>
<script>
$(document).ready(function () {
});
/* ********************************************************
* 환율 설정 저장
******************************************************** */
const fn_update_exchngrt = function () {
if (confirm('환율 설정을 <spring:message code="confirm.common.save"/>')) {
$.ajax({
type: 'post',
url: '<c:url value="/mngr/setup/exchngrt/updateExchngrtSetup"/>',
data: $('#updtForm').serialize(),
success: function () {
alert("<spring:message code="success.common.save"/>");
location.reload();
}
});
}
}
</script>
<body>
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@include file="/WEB-INF/views/comm/mngr/Header.jsp" %>
<main class="main">
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@include file="/WEB-INF/views/comm/mngr/Left.jsp" %>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">환율 설정</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_update_exchngrt()">저장하기
</button>
</div>
</div>
<form id="updtForm">
<section class="content-section">
<div class="form-control-container mb-8">
<div class="left">
<h3 class="content-section__inner-title">주문 설정</h3>
</div>
<div class="center"></div>
<div class="right"></div>
</div>
<div class="table-wrapper">
<table class="table ">
<caption>주문 설정</caption>
<colgroup>
<col style="width: 14%;">
<col style="width: 38%;">
<col style="width: 14%;">
<col style="width: 38%;">
</colgroup>
<tbody>
<tr>
<th>환율(살때) 일본 1円(엔)기준</th>
<td colspan="3">
<div class="td-inner">
<div class="input-container">
<input type="text" class="input-text sm right" name="buyRate" id="buyRate" title="1엔 환율(살때)" value="${resultMap.sopmalDetailList[0].buyRate}">
<span class="input-unit-text">원</span>
</div>
</div>
</td>
<%-- <th>환율(팔때) 일본 1円(엔)기준</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="text" class="input-text sm right" name="sellRate" id="sellRate" title="1엔 환율(팔때)" value="${resultMap.sopmalDetailList[0].sellRate}">
<span class="input-unit-text">원</span>
</div>
</div>
</td>--%>
</tr>
</tbody>
</table>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,236 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%--
Class Name : FamilySiteUpdtU.jsp
Description : 패밀리사이트 설정 상세
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2026-04-27 이대환 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%-- 공통 include --%>
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
</head>
<script>
$(document).ready(function () {
});
/* ********************************************************
* 입력창 추가
******************************************************** */
const fn_add_emptyBox = function(_target) {
stplatChk = false;
let count = 0;
let trClone = '';
if (_target === 'clauseChk') {
count = $('#tableSorting').children('tr').length + 1;
trClone = '<tr>'
+ ' <td>'
+ ' <label class="b-checkbox checkbox is-medium">'
+ ' <input type="checkbox" name="clauseChk" value=""><span class="check"></span>'
+ ' </label>'
+ ' </td>'
+ ' <td>'
+ ' <div class="select-box">'
+ ' <select class="full" name="clause" id="clause' + count + '" title="약관구분" onchange="fn_select_subClause(this);">'
+ ' <option value="" selected >선택하세요</option>'
+ ' <c:forEach var="cgn002" items="${resultMap.cgn002}" varStatus="status">'
+ ' <option value="${cgn002.cd}"><c:out value="${cgn002.cdNm}"/></option>'
+ ' </c:forEach>'
+ ' </select>'
+ ' </div>'
+ ' </td>'
+ ' <td>'
+ ' <div class="select-box privacyPolicy-select">'
+ ' <select class="full" name="stplatInnbArr" id="privacyPolicy' + count + '" title="약관 내용">'
+ ' <option value="" selected >약관 구분을 선택하세요</option>'
+ ' </select>'
+ ' </div>'
+ ' </td>'
+ ' <td>'
+ ' <div class="manage-btn-container">'
+ ' <a href="#clause-info-modal" rel="modal:open" class="btn xsm primary outline privacy" onclick="fn_select_clauseInformation(\'new\');"><spring:message code="button.view"/></a>'
+ ' </div>'
+ ' </td>'
+ '</tr>';
$('#tableSorting').append(trClone);
$('#clause' + count).niceSelect();
$('#privacyPolicy' + count).niceSelect();
} else {
trClone = '<tr>'
+ ' <td>'
+ ' <label class="b-checkbox checkbox is-medium">'
+ ' <input type="checkbox" name="siteChk" value=""><span class="check"></span>'
+ ' </label>'
+ ' </td>'
+ ' <td>'
+ ' <div class="td-inner">'
+ ' <input type="text" class="input-text xl" name="familySiteNmArr" title="패밀리 사이트명" maxlength="20">'
+ ' </div>'
+ ' </td>'
+ ' <td>'
+ ' <div class="td-inner">'
+ ' <input type="text" class="input-text full" name="familySiteUrlArr" title="URL" maxlength="30">'
+ ' </div>'
+ ' </td>'
+ '</tr>';
$('#tableSiteSorting').append(trClone);
$('#noData').hide();
}
}
/* ********************************************************
* 입력창 삭제
******************************************************** */
const fn_remove_box = function(_target) {
const target = $('[name=' + _target + ']:checked');
if (target.length === 0) {
alert('항목을 선택해 주세요.');
} else {
target.each(function() {
$(this).parents('tr').remove();
});
}
if (_target === 'clauseChk') {
$('#clauseAll').prop('checked', false);
} else {
$('#siteAll').prop('checked', false);
const total = $('#tableSiteSorting').find('tr').length;
if (total === 1) {
$('#noData').show();
} else {
$('#noData').hide();
}
}
}
/* ********************************************************
* 패밀리사이트 설정 저장
******************************************************** */
const fn_update_family = function () {
if (confirm('패밀리사이트 설정을 <spring:message code="confirm.common.save"/>')) {
$.ajax({
type: 'post',
url: '<c:url value="/mngr/setup/family/updateFamilySiteSetup"/>',
data: $('#updtForm').serialize(),
success: function () {
alert("<spring:message code="success.common.save"/>");
location.reload();
}
});
}
}
</script>
<body>
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@include file ="/WEB-INF/views/comm/mngr/Header.jsp" %>
<main class="main">
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@include file ="/WEB-INF/views/comm/mngr/Left.jsp" %>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">패밀리사이트 설정</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_update_family()">저장하기
</button>
</div>
</div>
<form id="updtForm">
<section class="content-section">
<div class="form-control-container mb-8">
<div class="left">
<h3 class="content-section__inner-title">패밀리사이트 설정</h3>
</div>
<div class="center"></div>
<div class="right">
<button type="button" class="btn primary outline xsm" onclick="fn_add_emptyBox('siteChk');"><spring:message code="button.add"/></button>
<button type="button" class="btn dark xsm" onclick="fn_remove_box('siteChk');"><spring:message code="button.delete"/></button>
</div>
</div>
<div class="table-wrapper">
<table class="table vertical">
<caption>패밀리사이트 설정</caption>
<colgroup>
<col style="width: 6%;">
<col style="width: 25%;">
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th>
<label class="b-checkbox checkbox is-medium check-all">
<input type="checkbox" value="" id="siteAll"><span class="check"></span>
</label>
</th>
<th>패밀리 사이트명</th>
<th>URL</th>
</tr>
</thead>
<tbody id="tableSiteSorting">
<c:if test="${not empty resultMap.siteList}">
<c:forEach var="site" items="${resultMap.siteList}" varStatus="status">
<tr>
<td>
<label class="b-checkbox checkbox is-medium">
<input type="checkbox" name="siteChk" value=""><span class="check"></span>
</label>
</td>
<td>
<div class="td-inner">
<input type="text" class="input-text xl" name="familySiteNmArr" title="패밀리 사이트명" maxlength="25" value="${site.familySiteNm}">
</div>
</td>
<td>
<div class="td-inner">
<input type="text" class="input-text full" name="familySiteUrlArr" title="URL" maxlength="60" value="${site.familySiteUrl}">
</div>
</td>
</tr>
</c:forEach>
<tr id="noData" style="display: none;"><td class="row-no-data" colspan="3">패밀리사이트를 설정해 주세요.</td></tr>
</c:if>
<c:if test="${empty resultMap.siteList}">
<tr id="noData"><td class="row-no-data" colspan="3">패밀리사이트를 설정해 주세요.</td></tr>
</c:if>
</tbody>
</table>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>

View File

@@ -0,0 +1,161 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%--
Class Name : GuidanceUpdtU.jsp
Description : 안내문구 설정 상세
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2026-04-27 이대환 최초 생성
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<%-- 공통 include --%>
<%@include file ="/WEB-INF/views/comm/mngr/Include.jsp" %>
</head>
<script>
$(document).ready(function () {
const sopmalCd = '${sopmalCd}';
//에디터 적용
fn_create_ckeditor('#joinGuidanceSj', sopmalCd);
fn_create_ckeditor('#joinGuidanceWords', sopmalCd);
fn_create_ckeditor('#joinBnef', sopmalCd);
fn_create_ckeditor('#joinComptWords', sopmalCd);
fn_create_ckeditor('#subsvcGuidanceWords', sopmalCd);
});
/* ********************************************************
* 환율 설정 저장
******************************************************** */
const fn_update_guidance = function () {
let updtForm = $('#updtForm');
updtForm.find("#joinGuidanceSj").val(fn_get_editor_data('#joinGuidanceSj'));
updtForm.find("#joinGuidanceWords").val(fn_get_editor_data('#joinGuidanceWords'));
updtForm.find("#joinBnef").val(fn_get_editor_data('#joinBnef'));
updtForm.find("#joinComptWords").val(fn_get_editor_data('#joinComptWords'));
updtForm.find("#subsvcGuidanceWords").val(fn_get_editor_data('#subsvcGuidanceWords'));
if (confirm('환율 설정을 <spring:message code="confirm.common.save"/>')) {
$.ajax({
type: 'post',
url: '<c:url value="/mngr/setup/guidance/updateGuidanceSetup"/>',
data: $('#updtForm').serialize(),
success: function () {
alert("<spring:message code="success.common.save"/>");
location.reload();
}
});
}
}
</script>
<style>
.ck.ck-content:not(.ck-style-grid__button__preview) {
min-height: 100px;
}
</style>
<body>
<%-- 상단메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@include file="/WEB-INF/views/comm/mngr/Header.jsp" %>
<main class="main">
<%-- 좌측메뉴 공통화 적용 : 2023-11-30 / 박철민 추가 --%>
<%@include file="/WEB-INF/views/comm/mngr/Left.jsp" %>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">안내문구 설정</h2>
<div class="page-title__btn-container">
<button class="btn primary" onclick="fn_update_guidance()">저장하기
</button>
</div>
</div>
<form id="updtForm">
<section class="content-section">
<div class="form-control-container mb-8">
<div class="left">
<h3 class="content-section__inner-title">회원가입 안내 설정</h3>
</div>
<div class="center"></div>
<div class="right"></div>
</div>
<div class="table-wrapper">
<table class="table">
<caption>회원가입 안내 설정</caption>
<colgroup>
<col style="width: 12%;">
</colgroup>
<tbody>
<tr>
<th>회원가입 안내 타이틀</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" id="joinGuidanceSj" name="joinGuidanceSj"
title="회원가입 안내 타이틀" rows="2">
${resultMap.sopmalDetailList[0].joinGuidanceSj }
</textarea>
</div>
</td>
</tr>
<tr>
<th>회원가입 안내문구</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" id="joinGuidanceWords" name="joinGuidanceWords"
title="회원가입 안내문구" rows="2">
${resultMap.sopmalDetailList[0].joinGuidanceWords }
</textarea>
</div>
</td>
</tr>
<tr>
<th>회원가입 주요혜택</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" id="joinBnef" name="joinBnef"
title="회원가입 주요혜택" rows="2">
${resultMap.sopmalDetailList[0].joinBnef }
</textarea>
</div>
</td>
</tr>
<tr>
<th>회원가입 완료문구</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" id="joinComptWords" name="joinComptWords"
title="회원가입 완료문구" rows="2">
${resultMap.sopmalDetailList[0].joinComptWords }
</textarea>
</div>
</td>
</tr>
<tr>
<th>구독서비스 안내문구</th>
<td colspan="3">
<div class="td-inner">
<textarea class="textarea" id="subsvcGuidanceWords" name="subsvcGuidanceWords"
title="구독서비스 안내문구" rows="2">
${resultMap.sopmalDetailList[0].subsvcGuidanceWords }
</textarea>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</section>
</form>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
</main>
</body>
</html>