initial commit

This commit is contained in:
gong01
2026-03-06 02:52:51 +08:00
commit 85278ca36f
365 changed files with 83942 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
package com.bb;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
@EnableAsync
@ServletComponentScan(basePackages = {"com.bb.config"})
@SpringBootApplication
@EnableScheduling
public class ApiServerApplication {
public static void main(String[] args) {
System.out.println(" >>> Using Java Version: " + System.getProperty("java.version"));
SpringApplication.run(ApiServerApplication.class, args);
}
}

View File

@@ -0,0 +1,806 @@
package com.bb.admin.controller;
import java.net.SocketTimeoutException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.http.conn.ConnectTimeoutException;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.ResourceAccessException;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.AdminBetSearch;
import com.bb.model.ApiResponse;
import com.bb.model.ApiVendorCompInfo;
import com.bb.model.BetDetail;
import com.bb.model.BetSearch;
import com.bb.model.BetSplusSearch;
import com.bb.model.GameUseInfo;
import com.bb.model.PageFormVO;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.model.TrxSearchVO;
import com.bb.service.BetService;
import com.bb.service.CommonService;
import com.bb.service.TripleService;
import com.bb.service.UserService;
import com.bb.util.PagingUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/admin/bet")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminApiBetController {
private final UserService userService;
private final BetService betService;
private final TripleService tripleService;
private final CommonService commonService;
private final JwtManager jwtManager;
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = new DecimalFormat("#0.00");
@ResponseBody
@PostMapping(value={"/gameUseUpdate"})
public ApiResponse gameUseInfo(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody GameUseInfo gui) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
gui.setSiteId(tokenInfo.getSid());
userService.gameUseUpdate(gui);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/gameUse"})
public ApiResponse gameUse(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody GameUseInfo gui) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
gui.setSiteId(tokenInfo.getSid());
List<HashMap> gameuseList = userService.gameUseList(gui);
apiResponse.put("list", gameuseList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betlist")
public ApiResponse betlist( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
final String LOG_PREFIX = "#-ADMIN::betlist::"+tokenInfo.getSid()+":::";
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
if(search.getIdType() == null || search.getIdType().equals("")) {
search.setIdType("NORMAL");
}
if(search.getIdType().equals("PTN")) {
search.setRecommenderId(search.getMemId());
search.setMemId(null);
} else {
search.setRecommenderId(null);
}
if(search.getOrderColumn() == null || search.getOrderColumn().equals("")) {
if(search.getOldYn().equals("N")) {
search.setOrderColumn("betIdx");
}
}
if(search.getOrderType() == null || search.getOrderType().equals("")) {
if(search.getOldYn().equals("N")) {
search.setOrderType("DESC");
}
}
if(search.getIsBlankSpinYn() == null) {
search.setIsBlankSpinYn("");
}
if(!search.getIsBlankSpinYn().equals("Y")) {
search.setIsBlankSpinYn("");
}
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(search);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getBetListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<BetDetail> betList = betService.getBetList(search);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betlistNew")
public ApiResponse betlistNew( @RequestHeader String token, HttpServletRequest request, @RequestBody AdminBetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
final String LOG_PREFIX = "#-ADMIN::betlist::"+tokenInfo.getSid()+":::";
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
if(search.getIdType() == null || search.getIdType().equals("")) {
search.setIdType("NORMAL");
}
search.setOrderColumn("regDate");
if(search.getOrderType() == null || search.getOrderType().equals("")) {
search.setOrderType("DESC");
}
if(search.getIsBlankSpinYn() == null) {
search.setIsBlankSpinYn("");
}
if(!search.getIsBlankSpinYn().equals("Y")) {
search.setIsBlankSpinYn("");
}
if(search.getStartDate() != null && !search.getStartDate().equals("")) {
String startDate = search.getStartDate() + ".000";
search.setStartDate(startDate);
}
if(search.getEndDate() != null && !search.getEndDate().equals("")) {
String endDate = search.getEndDate() + ".999";
search.setEndDate(endDate);
}
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(search);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getFastBetIdListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, String>> betIdList = betService.getFastBetIdList(search);
List<HashMap<String, String>> betList = new ArrayList<HashMap<String,String>>();
for(HashMap<String, String> item : betIdList) {
item.put("oldYn", search.getOldYn());
HashMap<String, String> betItem = betService.getFastBetItem(item);
betList.add(betItem);
}
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betWinList")
public ApiResponse betWinList( @RequestHeader String token, HttpServletRequest request, @RequestBody AdminBetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
final String LOG_PREFIX = "#-ADMIN::betlist::"+tokenInfo.getSid()+":::";
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
if(search.getIdType() == null || search.getIdType().equals("")) {
search.setIdType("NORMAL");
}
if(search.getOrderColumn() == null || search.getOrderColumn().equals("")) {
search.setOrderColumn("betAmt");
}
if(search.getOrderType() == null || search.getOrderType().equals("")) {
search.setOrderType("DESC");
}
if(search.getIsBlankSpinYn() == null) {
search.setIsBlankSpinYn("");
}
if(!search.getIsBlankSpinYn().equals("Y")) {
search.setIsBlankSpinYn("");
}
if(search.getStartDate() != null && !search.getStartDate().equals("")) {
String startDate = search.getStartDate() + ".000";
search.setStartDate(startDate);
}
if(search.getEndDate() != null && !search.getEndDate().equals("")) {
String endDate = search.getEndDate() + ".999";
search.setEndDate(endDate);
}
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(search);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getBetListNewCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> betList = betService.getBetListNew(search);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/sportBetlist")
public ApiResponse sportBetlist( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSplusSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getSportBetListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> betList = betService.getSportBetList(search);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/sportEventlist")
public ApiResponse sportEventlist( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSplusSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getSportEventListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> betList = betService.getSportEventList(search);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/sportEventDetaillist")
public ApiResponse sportEventDetaillist( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSplusSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getSportEventDetailListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> betList = betService.getSportEventDetailList(search);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betDetail")
public ApiResponse betDetail( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
String betType = betService.getBetType(search.getBetId());
String detail = "";
if(betType.equals("triple")) {
HashMap<String, String> param = new HashMap<String, String>();
param.put("siteId", tokenInfo.getSid());
param.put("apiVendorCode", betType);
ApiVendorCompInfo vendorCompInfo = userService.getApiVendorCompInfo(param);
if(vendorCompInfo != null) {
detail = tripleService.getBetDetail(vendorCompInfo, search.getBetId());
}
log.info("triple bet detail: " + detail);
} else {
log.info("not found bet detail");
}
apiResponse.put("detail", detail);
apiResponse.success();
} catch (ResourceAccessException rae) {
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error("[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error("[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error("[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betDetailTest")
public ApiResponse betDetailTest( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
String betType = betService.getBetType(search.getBetId());
String detail = "";
if(betType.equals("triple")) {
HashMap<String, String> param = new HashMap<String, String>();
param.put("siteId", tokenInfo.getSid());
param.put("apiVendorCode", betType);
ApiVendorCompInfo vendorCompInfo = userService.getApiVendorCompInfo(param);
if(vendorCompInfo != null) {
detail = tripleService.getBetDetailTest(vendorCompInfo, search.getBetId());
}
log.info("triple bet detail: " + detail);
} else {
log.info("not found bet detail");
}
apiResponse.put("detail", detail);
apiResponse.success();
} catch (ResourceAccessException rae) {
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error("[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error("[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error("[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/trxlist")
public ApiResponse trxlist(@RequestHeader String token, HttpServletRequest request, @RequestBody TrxSearchVO searchVO) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(searchVO.getMemId()==null || searchVO.getMemId().equals("")) {
if(searchVO.getBetId()==null || searchVO.getBetId().equals("")) {
throw new ApiException("TX99", "유저ID 또는 배팅ID를 입력 후 검색하세요.");
}
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
searchVO.setSiteId(tokenInfo.getSid());
if(searchVO.getOldYn() == null || searchVO.getOldYn().equals("")) {
searchVO.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + searchVO);
PageFormVO pageVo= new PageFormVO();
if(searchVO.getPage()==0) searchVO.setPage(1);
int totalCount = betService.getTrxListCnt(searchVO);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(searchVO.getPage());
commonForm.setCount_per_page(20);
if(searchVO.getCount_per_list()==0) {
commonForm.setCount_per_list(30);
} else {
commonForm.setCount_per_list(searchVO.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
searchVO.setLimit(pageVo.getLimit());
searchVO.setOffset(pageVo.getOffset());
searchVO.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, Object>> betList = betService.getTrxList(searchVO);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,919 @@
package com.bb.admin.controller;
import java.util.HashMap;
import java.util.List;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.AnswerVo;
import com.bb.model.ApiResponse;
import com.bb.model.Board;
import com.bb.model.BoardListSearch;
import com.bb.model.Code;
import com.bb.model.CodeSearch;
import com.bb.model.Comment;
import com.bb.model.Message;
import com.bb.model.MessageListSearch;
import com.bb.model.PageFormVO;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.BoardService;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@RestController
@Slf4j
@RequestMapping("/api/admin/board")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminApiBoardController {
private final BoardService boardService;
private final UserService userService;
private final CommonService commonService;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping(value = { "/{boardType}/list" })
public ApiResponse boardList(@RequestHeader String token, HttpServletRequest request,
@PathVariable String boardType, @Valid @RequestBody BoardListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String LOG_PREFIX = "#-admin::boardList::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
final String boardTypeKeyword = "answer|bbs|faq|favor|nt|snt";
if (boardType.equals("qna")) {
boardType = "faq";
}
if (!boardTypeKeyword.contains(boardType)) {
log.error("[REQUEST: " + request.getRequestURI() + "] Board[" + boardType + "] boardType Error");
throw new ApiException("BRD02", "boardType Error");
}
search.setBoardType(boardType);
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
LOG_PREFIX = LOG_PREFIX + tokenInfo.getSid() + ":::";
search.setSiteId(tokenInfo.getSid());
PageFormVO pageVo = new PageFormVO();
if (search.getPage() == 0)
search.setPage(1);
log.info(LOG_PREFIX + "[REQUEST: " + request.getRequestURI() + "] " + search);
if (boardType.equals("nt")) {
Board flowBoard = boardService.getSiteFlowBoard(search);
apiResponse.put("flowBoard", flowBoard);
}
int totalCount = boardService.getBoardListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if (search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<Board> boardList = boardService.getBoardList(search);
apiResponse.put("list", boardList);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/{boardType}/save" })
public ApiResponse boardSave(@RequestHeader String token, HttpServletRequest request,
@PathVariable String boardType, @Valid @RequestBody Board board) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String LOG_PREFIX = "#-admin::boardSave::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
final String boardTypeKeyword = "answer|bbs|faq|favor|nt|snt";
if (boardType.equals("qna")) {
boardType = "faq";
}
if (!boardTypeKeyword.contains(boardType)) {
log.error("[REQUEST: " + request.getRequestURI() + "] Board[" + boardType + "] boardType Error");
throw new ApiException("BRD02", "boardType Error");
}
board.setBoardType(boardType);
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
LOG_PREFIX = LOG_PREFIX + tokenInfo.getSid() + ":::";
board.setSiteId(tokenInfo.getSid());
board.setRegId(tokenInfo.getMid());
log.info(LOG_PREFIX + "[REQUEST: " + request.getRequestURI() + "] " + board);
if (boardType.equals("snt")) {
board.setTitle("");
board.setBoardType(boardType);
board.setCategory("");
board.setIsReadUser("N");
BoardListSearch search = new BoardListSearch();
search.setSiteId(tokenInfo.getSid());
Board flowBoard = boardService.getSiteFlowBoard(search);
if (flowBoard != null) {
Integer flowBoardIdx = flowBoard.getBoardIdx();
board.setBoardIdx(flowBoardIdx);
}
}
int boardIdx = 0;
if (board.getBoardIdx() != null)
boardIdx = board.getBoardIdx();
int res = boardService.saveBoard(board);
if (boardIdx == 0)
boardIdx = board.getBoardIdx();
log.info(LOG_PREFIX + "Board[" + board.getBoardType() + "][" + board.getCategory() + "] Save Result: "
+ res);
log.info(LOG_PREFIX + "Board[" + board.getBoardType() + "][" + board.getCategory() + "] Save Result idx: "
+ boardIdx);
if (res > 0) {
String boardTypeStr = "";
if (boardType.equals("nt")) {
boardTypeStr = "공지사항";
} else if (boardType.equals("bbs")) {
boardTypeStr = "게시판";
} else if (boardType.equals("faq")) {
boardTypeStr = "문의사항";
} else if (boardType.equals("favor")) {
boardTypeStr = "자주묻는질문";
} else if (boardType.equals("answer")) {
boardTypeStr = "faqAnswer";
} else if (boardType.equals("snt")) {
boardTypeStr = "흐르는 공지";
} else {
boardTypeStr = boardType;
}
String crudType = "";
if (res == 1)
crudType = "등록 처리";
if (res > 1)
crudType = "수정 처리";
if (board.getDelYn() != null && board.getDelYn().equals("Y"))
crudType = "삭제 처리";
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", boardIdx + "::" + boardTypeStr + "::관리자::" + crudType);
logParam.put("logDesc", board.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/{boardType}/deletes" })
public ApiResponse boardDeletes(@RequestHeader String token, HttpServletRequest request,
@PathVariable String boardType, @RequestBody JSONObject requestBody) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String LOG_PREFIX = "#-admin::boardDeletes::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
final String boardTypeKeyword = "answer|bbs|faq|favor|nt|snt";
if (boardType.equals("qna")) {
boardType = "faq";
}
if (!boardTypeKeyword.contains(boardType)) {
log.error("Board[" + boardType + "] boardType Error");
throw new ApiException("BRD02", "boardType Error");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
LOG_PREFIX = LOG_PREFIX + tokenInfo.getSid() + ":::";
log.info(LOG_PREFIX + "[REQUEST] " + requestBody);
JSONArray boardIdxList = requestBody.getJSONArray("boardIdxList");
if (boardIdxList == null || boardIdxList.size() == 0) {
log.error("boardIdxList Error");
throw new ApiException("BRD03", "boardIdxList Error");
}
for (int i = 0; i < boardIdxList.size(); i++) {
int boardIdx = boardIdxList.getInt(i);
int res = boardService.deleteYBoard(boardIdx);
}
String boardTypeStr = "";
if (boardType.equals("nt")) {
boardTypeStr = "공지사항";
} else if (boardType.equals("bbs")) {
boardTypeStr = "게시판";
} else if (boardType.equals("faq")) {
boardTypeStr = "문의사항";
} else if (boardType.equals("favor")) {
boardTypeStr = "자주묻는질문";
} else if (boardType.equals("answer")) {
boardTypeStr = "faqAnswer";
} else if (boardType.equals("snt")) {
boardTypeStr = "흐르는 공지";
} else {
boardTypeStr = boardType;
}
String crudType = "일괄삭제 처리";
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", boardTypeStr + "::관리자::" + crudType);
logParam.put("logDesc", boardIdxList.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/noticeTopChange" })
public ApiResponse noticeTopChange(@RequestHeader String token, HttpServletRequest request,
@RequestBody Board board) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
board.setSiteId(tokenInfo.getSid());
board.setRegId(tokenInfo.getSid());
log.info("[REQUEST: " + request.getRequestURI() + "] boardIdx: " + board.getBoardIdx());
Board boardDetail = boardService.getBoard(board);
int boardIdx = boardDetail.getBoardIdx();
int result = boardService.deleteBoard(boardIdx);
if (result > 0) {
boardDetail.setBoardIdx(null);
log.info("[REQUEST: " + request.getRequestURI() + "] Top Change Board Info: " + boardDetail.toString());
int res = boardService.saveBoard(boardDetail);
log.info("[REQUEST: " + request.getRequestURI() + "] Top Change Board Result: " + res);
log.info("[REQUEST: " + request.getRequestURI() + "] Top Change Board Result idx: "
+ board.getBoardIdx());
if (res > 0) {
String boardType = boardDetail.getBoardType();
String boardTypeStr = "";
if (boardType.equals("nt")) {
boardTypeStr = "공지사항";
} else if (boardType.equals("bbs")) {
boardTypeStr = "게시판";
} else if (boardType.equals("faq")) {
boardTypeStr = "문의사항";
} else if (boardType.equals("favor")) {
boardTypeStr = "자주묻는질문";
} else if (boardType.equals("answer")) {
boardTypeStr = "faqAnswer";
} else if (boardType.equals("snt")) {
boardTypeStr = "흐르는 공지";
} else {
boardTypeStr = boardType;
}
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", board.getBoardIdx() + "::" + boardTypeStr + "::최상위로 변경처리");
logParam.put("logDesc", board.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
}
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/viewYn" })
public ApiResponse viewYn(@RequestHeader String token, HttpServletRequest request, @RequestBody Board board)
throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
board.setSiteId(tokenInfo.getSid());
board.setRegId(tokenInfo.getSid());
if (board.getBoardIdx() == null) {
throw new ApiException("1000", "accessDinied");
}
if (board.getViewYn() == null && board.getViewYn().equals("")) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: " + request.getRequestURI() + "] boardIdx: " + board.getBoardIdx() + ", viewYn: "
+ board.getViewYn());
int result = boardService.setBoardViewYn(board);
log.info("[REQUEST: " + request.getRequestURI() + "] setBoardViewYn() result: " + result);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/cmtSsave" })
public ApiResponse cmtsave(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody Comment comment) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
comment.setRegId(tokenInfo.getSid());
final String LOG_PREFIX = "#-admin::cmtSsave::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
ObjectMapper objectMapper = new ObjectMapper();
String reqJson = objectMapper.writeValueAsString(comment);
log.info(LOG_PREFIX+ "Request Comment::" + reqJson);
int res = boardService.saveCmt(comment);
SiteSearch siteSearch = new SiteSearch();
siteSearch.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(siteSearch);
String alarmQnaYn = siteOption.getAlarmQnaYn();
if("Y".equals(alarmQnaYn)) {
log.info(LOG_PREFIX+ "Send to message!!");
// 답변달고 쪽지 알림 보내기
int boardIdx = comment.getBoardIdx();
Board param = new Board();
param.setBoardIdx(boardIdx);
Board boardDetail = boardService.getBoard(param);
String memId = boardDetail.getRegId();
String memNick = boardDetail.getMemNick();
String msgTitle = "\""+memNick+"\"님 1:1 문의 답변 알림입니다.";
StringBuilder msgDesc = new StringBuilder();
msgDesc.append("\""+memNick+"\"의 문의에 답변이 완료되었습니다.\r\n");
msgDesc.append("[문의 제목] \""+boardDetail.getTitle()+"\" \r\n");
msgDesc.append("문의 내역에서 답변을 확인해주세요.");
Message message = new Message();
message.setSiteId(tokenInfo.getSid());
message.setRegId(tokenInfo.getMid());
message.setMsgType("msg");
message.setRecieveId(memId);
message.setMsgTitle(msgTitle);
message.setMsgDesc(msgDesc.toString());
message.setHiddenYn("N");
message.setTargetType("member");
log.info(LOG_PREFIX+ "Create Message : " + message.toString());
boardService.msgSend(message);
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/{boardType}/datail" })
public ApiResponse datail(@RequestHeader String token, HttpServletRequest request, @PathVariable String boardType,
@Valid @RequestBody Board board) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String LOG_PREFIX = "#-admin::boardDatail::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
final String boardTypeKeyword = "answer|bbs|faq|favor|nt|snt";
if (boardType.equals("qna")) {
boardType = "faq";
}
if (!boardTypeKeyword.contains(boardType)) {
log.error("[REQUEST: " + request.getRequestURI() + "] Board[" + boardType + "] boardType Error");
throw new ApiException("BRD02", "boardType Error");
}
board.setBoardType(boardType);
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
LOG_PREFIX = LOG_PREFIX + tokenInfo.getSid() + ":::";
board.setSiteId(tokenInfo.getSid());
log.info(LOG_PREFIX + "[REQUEST: " + request.getRequestURI() + "] " + board);
Board boardDetail = boardService.getBoard(board);
if ("faq".equals(boardDetail.getBoardType())) {
boardService.adminRead(boardDetail);
}
apiResponse.put("board", boardDetail);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/category" })
public ApiResponse category(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody CodeSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setMasterCode("category");
search.setGroupCode("ctgy");
// search.
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
List<HashMap> codeList = commonService.getCodeList(search);
apiResponse.put("codes", codeList);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/categorySave" })
public ApiResponse categorySave(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody Code code) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
code.setMasterCode("category");
code.setGroupCode("ctgy");
log.info("[REQUEST: " + request.getRequestURI() + "] " + code);
commonService.insertCode(code);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/msgSend", "/msgUpdate", "/msgHeadSave", "/msgJoinSave" })
public ApiResponse msgSend(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody Message message) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
message.setSiteId(tokenInfo.getSid());
message.setRegId(tokenInfo.getSid());
if (request.getRequestURI().indexOf("msgHeadSave") > -1) {
message.setMsgType("head");
} else if (request.getRequestURI().indexOf("msgJoinSave") > -1) {
message.setMsgType("join");
} else {
message.setMsgType("msg");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + message);
if (message.getMsgType().equals("msg") && message.getTargetLevel() != null
&& !message.getTargetLevel().equals("")) {
// 회원 레벨 별 쪽지전송
boardService.levelMsgSend(message);
} else {
// 기본 쪽지전송
boardService.msgSend(message);
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/msgList", "/msgHeadList", "/msgJoinList" })
public ApiResponse msgList(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MessageListSearch search) throws Exception {
log.info("###-KHO-### msgList() \"/msgList\", \"/msgHeadList\", \"/msgJoinList\" call..");
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo = new PageFormVO();
if (search.getPage() == 0)
search.setPage(1);
search.setSiteId(tokenInfo.getSid());
log.info("###-KHO-### msgList() request: " + request.getRequestURI());
if (request.getRequestURI().indexOf("msgHeadList") > -1) {
log.info("###-KHO-### /msgHeadList call..");
search.setMsgType("head");
} else if (request.getRequestURI().indexOf("msgJoinList") > -1) {
log.info("###-KHO-### /msgJoinList call..");
search.setMsgType("join");
} else {
log.info("###-KHO-### /msgList call..");
search.setMsgType("msg");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
int totalCount = boardService.getMsgListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if (search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<Message> msgList = boardService.getMsgList(search);
// log.info("###-KHO-### msgList: " + msgList);
apiResponse.put("list", msgList);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/partnerMsgSend" })
public ApiResponse partnerMsgSend(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody Message message) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (message.getRecieveId() == null || message.getRecieveId().equals("")) {
throw new ApiException("M001", "파트너 아이디를 입력하세요.");
}
if (message.getMsgTitle() == null || message.getMsgTitle().equals("")) {
throw new ApiException("M002", "쪽지 제목을 입력하세요.");
}
if (message.getMsgDesc() == null || message.getMsgDesc().equals("")) {
throw new ApiException("M003", "쪽지 내용을 입력하세요.");
}
if (message.getHiddenYn() == null || message.getHiddenYn().equals("")) {
message.setHiddenYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
message.setSiteId(tokenInfo.getSid());
message.setRegId(tokenInfo.getSid());
log.info("[REQUEST: " + request.getRequestURI() + "] " + message);
boardService.partnerMsgSend(message);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/answer/list" })
public ApiResponse answerList(@RequestHeader String token, HttpServletRequest request, @RequestBody AnswerVo search)
throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
List<AnswerVo> answerList = boardService.getAnswerList(search);
apiResponse.put("list", answerList);
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/answer/save" })
public ApiResponse answerSave(@RequestHeader String token, HttpServletRequest request, @RequestBody AnswerVo answer)
throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
answer.setSiteId(tokenInfo.getSid());
log.info("[REQUEST: " + request.getRequestURI() + "] " + answer);
int res;
if (answer.getIdx() != null) {
res = boardService.updateAnswer(answer);
} else {
res = boardService.saveAnswer(answer);
}
if (res > 0) {
apiResponse.success();
} else {
throw new ApiException("A999", "처리중 문제가 발생했습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/answer/delete" })
public ApiResponse answerDelete(@RequestHeader String token, HttpServletRequest request,
@RequestBody AnswerVo answer) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
answer.setSiteId(tokenInfo.getSid());
if (answer.getIdx() == null) {
throw new ApiException("A009", "삭제할 답변을 선택하세요.");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + answer);
int res = boardService.deleteAnswer(answer);
if (res > 0) {
apiResponse.success();
} else {
throw new ApiException("A999", "처리중 문제가 발생했습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,232 @@
package com.bb.admin.controller;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.List;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.BetSearch;
import com.bb.model.MiniGameSearch;
import com.bb.model.MinigameBetRate;
import com.bb.model.MinigameSet;
import com.bb.model.PageFormVO;
import com.bb.model.Site;
import com.bb.service.BetService;
import com.bb.service.MinigameService;
import com.bb.service.UserService;
import com.bb.util.PagingUtil;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/admin/minigame")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminApiMiniGameController {
private final UserService userService;
private final MinigameService minigameService;
private final BetService betService;
private final JwtManager jwtManager;
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = new DecimalFormat("#0.00");
@ResponseBody
@PostMapping(value={"/setSave"})
public ApiResponse setSave(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MinigameSet mgs) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
mgs.setSiteId(tokenInfo.getSid());
minigameService.setSave(mgs);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/betRateSave"})
public ApiResponse betRateSave(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MinigameBetRate mbr) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
mbr.setSiteId(tokenInfo.getSid());
mbr.setUpdId(tokenInfo.getMid());
minigameService.betRateSave(mbr);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/setList")
public ApiResponse setList( @RequestHeader String token, HttpServletRequest request, @RequestBody MiniGameSearch search ) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
List<HashMap> setList = minigameService.getSetList(search);
apiResponse.put("list", setList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betRateList")
public ApiResponse betRateList( @RequestHeader String token, HttpServletRequest request, @RequestBody MiniGameSearch search ) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
List<HashMap> betRateList = minigameService.getBetRateList(search);
apiResponse.put("list", betRateList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/powerballResult"})
public ApiResponse minigameResult(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody BetSearch search ) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
int totalCount = betService.getPowerballResultListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
System.out.println(search.getLimit());
System.out.println(search.getOffset());
List<HashMap> list = betService.getPowerballResultList(search);
apiResponse.put("list", list);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,855 @@
package com.bb.admin.controller;
import java.util.HashMap;
import java.util.List;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.CompDetail;
import com.bb.model.CompSearch;
import com.bb.model.Member;
import com.bb.model.MemberInsert;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberRate;
import com.bb.model.MemberSearch;
import com.bb.model.MemberStatus;
import com.bb.model.PageFormVO;
import com.bb.model.PartnerCompInfo;
import com.bb.model.Site;
import com.bb.model.SiteSearch;
import com.bb.model.TreeListSearch;
import com.bb.service.CommonService;
import com.bb.service.CompService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/admin/partner")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminApiPartnerController {
private final UserService userService;
private final CompService compService;
private final CommonService commonService;
private final PasswordEncoder passwordEncoder;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping(value="/signup")
public ApiResponse signup(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MemberInsert signupMember) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
String createSiteId = signupMember.getMemId().replaceAll(" ", "").replaceAll(" ", "").toLowerCase();
final String LOG_PREFIX = "#-admin::addCompany::"+createSiteId+"::::";
if(createSiteId.equals("")) {
throw new ApiException("U005", "idCheckByAdmin");
}
String myType = tokenInfo.getType();
String targetType = signupMember.getPartnerType();
if(myType.equals("agency")) {
throw new ApiException("1000", "accessDinied");
}
if(myType.equals(targetType)) {
throw new ApiException("1000", "accessDinied");
}
if(myType.equals("master") && targetType.equals("senior")) {
throw new ApiException("1000", "accessDinied");
}
signupMember.setMemId(createSiteId);
signupMember.setSiteId(createSiteId);
signupMember.setAdminId(createSiteId);
signupMember.setRegId(tokenInfo.getMid());
// System.out.print(tokenInfo.getSid());
// System.out.print(signupMember.getMemId());
signupMember.setMemLevel("99");
signupMember.setPartnerLevel("COMP");
signupMember.setMemStatus("1");
signupMember.setRecommenderId(tokenInfo.getSid());
Member checkMember = new Member();
checkMember.setSiteId(createSiteId);
checkMember.setMemId(createSiteId);
checkMember.setRecommenderId(signupMember.getRecommenderId());
/*
int idCheck =userService.idCheck(checkMember);
if(idCheck>0) {
throw new ApiException("U005", "idCheck");
}
*/
int idCheckByAdmin =userService.idCheckByAdmin(checkMember);
if(idCheckByAdmin>0) {
throw new ApiException("U005", "idCheckByAdmin");
}
int nameCheck =userService.nameCheck(checkMember);
if(nameCheck>0) {
throw new ApiException("U006", "nameCheck");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + signupMember);
int result = userService.adminSignUp(LOG_PREFIX, signupMember, passwordEncoder);
if(result == 0) {
throw new ApiException("SP99", "site prefix check");
}
Member search = new Member();
search.setMemId(signupMember.getMemId());
search.setSiteId(tokenInfo.getSid());
search.setPartnerLevel("COMP");
if(signupMember.getRateList() != null) {
MemberRate rateparam = new MemberRate();
rateparam.setMemId(signupMember.getMemId());
rateparam.setRateList(signupMember.getRateList());
userService.getMemberRateUpdate(search, rateparam);
userService.getMemberbetYnUpdate(search, rateparam);
}
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/modify/compInfo")
public ApiResponse modifyCompInfo(@RequestHeader String token, HttpServletRequest request, @RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(compInfo.getSiteDomain() == null) {
compInfo.setSiteDomain("");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
compInfo.setTopCompId(tokenInfo.getSid());
int chkTopComp = compService.getCheckTopComp(compInfo);
if(chkTopComp == 1) {
if(compInfo.getUserCountLimit() == null || compInfo.getUserCountLimit().equals("")) { compInfo.setUserCountLimit("1000"); }
if(compInfo.getCompCountLimit() == null || compInfo.getCompCountLimit().equals("")) { compInfo.setCompCountLimit("10"); }
if(compInfo.getPassword() != null && !compInfo.getPassword().equals("")) {
String password = passwordEncoder.encode(compInfo.getPassword());
log.info("[ADMIN PWD:" + password + "]");
compInfo.setPassword(password);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + compInfo);
int result = compService.modifyCompInfo(compInfo);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", compInfo.getSiteId()+"::업체 수정");
logParam.put("logDesc", compInfo.toString());
logParam.put("regId", tokenInfo.getSid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
if(result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "회사정보 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/modify/siteSettings")
public ApiResponse modifySiteSettings(@RequestHeader String token, HttpServletRequest request, @RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
compInfo.setTopCompId(tokenInfo.getSid());
int chkTopComp = compService.getCheckTopComp(compInfo);
if(chkTopComp == 1) {
log.info("[REQUEST: "+request.getRequestURI()+"] " + compInfo);
int result = compService.modifySiteSettings(compInfo);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", compInfo.getSiteId()+"::업체 세팅 수정");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
if(result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "사이트 기능 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/modify/creditSettings")
public ApiResponse modifyCreditSettings(@RequestHeader String token, HttpServletRequest request, @RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
compInfo.setTopCompId(tokenInfo.getSid());
int chkTopComp = compService.getCheckTopComp(compInfo);
if(chkTopComp == 1) {
log.info("[REQUEST: "+request.getRequestURI()+"] " + compInfo);
// TODO: 기본수수료율 변경 전 해당 사이트 크레딧(알) 잔액이 0인지 체크. 0이아니면 변경 불가능
Site search = new Site();
search.setSiteId(compInfo.getSiteId());
CompDetail comp = compService.getPartnerComp(search);
int creditAmt = Integer.parseInt(comp.getCreditAmt());
if(creditAmt > 0) {
throw new ApiException("COMP010", "보유알이 0일때만 기본수수료율 변경이 가능합니다.");
}
int result = compService.modifyCreditSettings(compInfo);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", compInfo.getSiteId()+"::업체 크레딧 세팅 수정");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
if(result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "PT 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/modify/creditRates")
public ApiResponse modifyCreditRates(@RequestHeader String token, HttpServletRequest request, @RequestBody MemberRate memberRate) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
PartnerCompInfo compInfo = new PartnerCompInfo();
compInfo.setSiteId(memberRate.getSiteId());
compInfo.setTopCompId(tokenInfo.getSid());
int chkTopComp = compService.getCheckTopComp(compInfo);
if(chkTopComp == 1) {
Member search = new Member();
search.setSiteId(memberRate.getSiteId());
log.info("[REQUEST: "+request.getRequestURI()+"] " + memberRate);
int result = compService.modifyCreditRates(search, memberRate);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", compInfo.getSiteId()+"::업체 크레딧 요율 수정");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
if(result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "게임별 PT수수료율 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/modify/biSubPointRates")
public ApiResponse modifyBiSubPointRates(@RequestHeader String token, HttpServletRequest request, @RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
compInfo.setTopCompId(tokenInfo.getSid());
int chkTopComp = compService.getCheckTopComp(compInfo);
if(chkTopComp == 1) {
log.info("[REQUEST: "+request.getRequestURI()+"] " + compInfo);
int result = compService.modifySiteGameSetting(compInfo);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", compInfo.getSiteId()+"::업체 보험포인트 요율 수정");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
if(result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "서브포인트요율 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/modify/betSettings")
public ApiResponse modifyBetSettings(@RequestHeader String token, HttpServletRequest request, @RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
compInfo.setTopCompId(tokenInfo.getSid());
int chkTopComp = compService.getCheckTopComp(compInfo);
if(chkTopComp == 1) {
log.info("[REQUEST: "+request.getRequestURI()+"] " + compInfo);
int result = compService.modifySiteGameSetting(compInfo);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", compInfo.getSiteId()+"::업체 게임세팅 수정");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
if(result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "배팅 가능유/무 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/detail")
public ApiResponse detail(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MemberSearch memberSearch) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
Member search2 = new Member();
search2.setMemId(memberSearch.getMemId());
search2.setSiteId(memberSearch.getSiteId());
log.info("[REQUEST: "+request.getRequestURI()+"] " + memberSearch);
HashMap memberDetail = compService.getPartnerCompDetail(search2);
memberDetail.put("memPass", "");
memberDetail.put("memberCommissionRate", compService.getCompanyRate(search2));
memberDetail.put("BI_SubPointRate", userService.getBISubPointRate(search2));
List<HashMap> memberFlow = userService.getMemberFlowList(memberDetail);
List<HashMap> partnerFlow = userService.getPartnerFlowList(memberDetail);
apiResponse.put("memberDetail", memberDetail);
apiResponse.put("memberFlow", memberFlow);
apiResponse.put("partnerFlow", partnerFlow);
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/getTripleGameRate")
public ApiResponse getTripleGameRate(@RequestHeader String token, HttpServletRequest request, @RequestBody CompSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String, String>> rateList = compService.getOmsRateListByTripleGame(search);
apiResponse.put("list", rateList);
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/setTripleGameRate")
public ApiResponse setTripleGameRate(@RequestHeader String token, HttpServletRequest request, @RequestBody CompSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
HashMap<String, String> tripleParam = compService.getTripleParam(search);
log.info("[REQUEST: "+request.getRequestURI()+"] " + tripleParam);
if(tokenInfo.getSid().equals(tripleParam.get("topCompId").toString()) || tokenInfo.getType().equals("super")) {
List<HashMap<String, String>> tripleRateList = compService.getTripleGameRate(tripleParam);
compService.insertTripleRateList(search, tripleRateList);
compService.updateOmsRateList(search);
List<HashMap<String, String>> rateList = compService.getOmsRateListByTripleGame(search);
apiResponse.put("list", rateList);
} else {
throw new ApiException("COMP099", "권한이 없는 사용자 입니다.");
}
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/passChg")
public ApiResponse passwsChg(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody Site site) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + site);
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
site.setSiteId(tokenInfo.getSid());
if(site.getSitePass() == null || site.getSitePass().equals("")) {
throw new ApiException("S999", "현재 비밀번호를 입력하세요.");
}
if(site.getNewSitePass() != null && !site.getNewSitePass().equals("")) {
String password = passwordEncoder.encode(site.getNewSitePass());
log.info("[ADMIN NEW PWD:" + password + "]");
site.setNewSitePass(password);
}
SiteSearch search = new SiteSearch();
search.setSiteId(site.getSiteId());
HashMap siteinfo= userService.adminLogin(search);
boolean chkPassword = passwordEncoder.matches(site.getSitePass(), siteinfo.get("sitePass").toString());
log.info("[ADMIN chkPassword:" + chkPassword + "]");
if(!chkPassword) {
throw new ApiException("S999", "현재 비밀번호가 다릅니다.");
}
if(!tokenInfo.getSid().equals(tokenInfo.getMid())) {
site.setAdminId(tokenInfo.getMid());
userService.updateAdminPwd(site);
}
userService.updatePwd(site);
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/updateStatus")
public ApiResponse updateStatus(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MemberStatus status) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
status.setSiteId(tokenInfo.getSid());
log.info("[REQUEST: "+request.getRequestURI()+"] " + status);
userService.updateStatus(status);
try{
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", status.getMemId()+"::업체 세팅 수정");
logParam.put("logDesc", status.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/list"} )
public ApiResponse list(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MemberListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
search.setSiteId(tokenInfo.getSid());
int totalCount = compService.getPartnerCompListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<CompDetail> compList = compService.getPartnerCompList(search);
apiResponse.put("list", compList);
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/treeList"} )
public ApiResponse treeList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody TreeListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if("".equals(search.getTargetId()) || search.getTargetId() == null) {
search.setTargetId(tokenInfo.getSid());
}
search.setSearchType("partner"); // 여기서 "partner"는 컴퍼니를 지칭함. 파트너유저가 아님.
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> treeList = userService.getMemTreeList(search);
apiResponse.put("list", treeList);
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,496 @@
package com.bb.admin.controller;
import java.net.SocketTimeoutException;
import java.util.HashMap;
import java.util.List;
import org.apache.http.conn.ConnectTimeoutException;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.ResourceAccessException;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.CashDetail;
import com.bb.model.Member;
import com.bb.model.MemberDetail;
import com.bb.model.PageFormVO;
import com.bb.model.Point;
import com.bb.model.PointInOut;
import com.bb.model.PointSearchAdm;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.CashService;
import com.bb.service.CommonService;
import com.bb.service.PointService;
import com.bb.service.TripleService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/admin/point")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminApiPointController {
private final UserService userService;
private final PointService pointService;
private final CashService cashService;
private final CommonService commonService;
private final TripleService tripleService;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping(value="/pointList")
public ApiResponse pointList(@RequestHeader String token, HttpServletRequest request, @RequestBody PointSearchAdm search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = pointService.getAdminPointListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
if(search.getPage()==0)search.setPage(1);
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String, String>> cashList = pointService.getAdminPointList(search);
apiResponse.put("list", cashList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/pointListNew")
public ApiResponse pointListNew(@RequestHeader String token, HttpServletRequest request, @RequestBody PointSearchAdm search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
final String LOG_PREFIX = "#-admin::pointListNew::"+tokenInfo.getSid()+":::";
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(search);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = pointService.getAdminPointListNewCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
if(search.getPage()==0)search.setPage(1);
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, String>> cashList = pointService.getAdminPointListNew(search);
apiResponse.put("list", cashList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/botRateList")
public ApiResponse botRateList(@RequestHeader String token, HttpServletRequest request, @RequestBody PointSearchAdm search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getMemId() == null || search.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
if(search.getBetMemId() == null || search.getBetMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
if(search.getVendorCode() == null || search.getVendorCode().equals("")) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String, String>> botRateList = null;
if(search.getRateTypeCode() == null || search.getRateTypeCode().equals("")) {
botRateList = pointService.getPointBotRateList(search);
} else {
botRateList = pointService.getPointBotMultiRateList(search);
}
apiResponse.put("botRateList", botRateList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/pointInOut")
public ApiResponse pointInOut(@RequestHeader String token, HttpServletRequest request, @RequestBody PointInOut pointInout) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
Point point = new Point();
Member search = new Member();
search.setMemId(pointInout.getMemId());
search.setSiteId(tokenInfo.getSid());
MemberDetail loginMember= userService.getMember(search);
if(loginMember == null) {
throw new ApiException("U003", "unknown user");
}
long prePoint = loginMember.getPointAmt();
if("-2".equals(pointInout.getPointType())){
if(prePoint < pointInout.getPointAmt()) {
throw new ApiException("P003", "보유 포인트를 초과하여 회수 할 수 없습니다.");
}
}
if(pointInout.getPointType().equals("2")) {
pointInout.setPointDesc("관리자 포인트 지급");
}
if(pointInout.getPointType().equals("-2")) {
pointInout.setPointDesc("관리자 포인트 회수");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + pointInout);
if(pointInout.getPointType().equals("2") && pointInout.getPointAmt() <= 0) {
throw new ApiException("P004", "포인트 금액을 입력하세요.");
}
if(pointInout.getPointType().equals("-2") && pointInout.getPointAmt() >= 0) {
throw new ApiException("P004", "포인트 금액을 입력하세요.");
}
double pointAmtD = pointInout.getPointAmt() * 1.0;
point.setSiteId(tokenInfo.getSid());
point.setMemId(pointInout.getMemId());
point.setPointType(pointInout.getPointType());
point.setPointDesc(pointInout.getPointDesc());
point.setPointAmt(pointAmtD);
point.setBetIdx(null);
point.setPointStatus("1");
point.setRegId(tokenInfo.getMid());
point.setAdminId(tokenInfo.getMid());
point.setMemo(pointInout.getMemo());
point.setPrePointAmt(loginMember.getPointAmt());
// cashService.pointInsert(point);
long pointIdx = pointService.pointInsert(point);
if(pointIdx == 0) {
throw new ApiException("P006", "포인트지급,회수 처리는 1분에 1건씩 처리됩니다. 잠시후 다시 시도해주세요");
} else {
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", pointInout.getMemId()+"::관리자 포인트 지급/회수");
logParam.put("logDesc", pointInout.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/pointChg")
public ApiResponse pointChg(@RequestHeader String token, HttpServletRequest request, @RequestBody Point point) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(point.getSiteId() == null || point.getSiteId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
if(point.getMemId() == null || point.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-admin::pointChg::"+point.getSiteId()+"::"+point.getMemId()+"::::";
Member search = new Member();
search.setSiteId(point.getSiteId());
search.setMemId(point.getMemId());
MemberDetail memDetail= userService.getMember(search);
if(memDetail == null) {
throw new ApiException("U003", "unknown user");
}
log.info(LOG_PREFIX+ "[REQUEST: "+request.getRequestURI()+"] " + point);
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(point.getSiteId());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
if(point.getPointAmt() == null || point.getPointAmt() <= 0) {
throw new ApiException("P001", "전환할 포인트를 입력하세요.");
}
int pointAmt = point.getPointAmt().intValue();
int pointInMax = Integer.parseInt(siteOption.getPointChangeAmtLimit());
int pointInUnit = Integer.parseInt(siteOption.getPointChangeAmtUnit());
if((pointInMax != 0) && (pointAmt > pointInMax)) {
throw new ApiException("P101", "1회 포인트전환 최대한도는 " + pointInMax + "입니다.");
}
if((pointInUnit != 0) && (pointAmt % pointInUnit != 0)) {
throw new ApiException("P102", "포인트전환 금액 단위는 " + pointInUnit + "입니다.");
}
int cashAmt = pointAmt;
double pointAmtD = pointAmt * -1.0;
if(memDetail.getPointAmt() >= point.getPointAmt() ) {
point.setPointType("-44");
point.setPointDesc("관리자 포인트전환");
point.setPointAmt(pointAmtD);
point.setBetIdx(null);
point.setPointStatus("1");
point.setRegId(tokenInfo.getSid());
point.setAdminId(tokenInfo.getSid());
point.setMemo("");
point.setPrePointAmt(memDetail.getPointAmt());
log.info(LOG_PREFIX+ point);
long pointIdx = pointService.pointInsert(point);
log.info(LOG_PREFIX+ "pointIdx: " + pointIdx);
if(pointIdx == 0) {
throw new ApiException("P005", "포인트전환은 1분에 1건씩 처리됩니다. 잠시후 다시 시도해주세요");
} else {
CashDetail paramCash = new CashDetail();
paramCash.setSiteId(point.getSiteId());
paramCash.setMemId(point.getMemId());
paramCash.setCashType("44");
paramCash.setCashAmt(cashAmt);
paramCash.setCashDesc("관리자 포인트전환");
paramCash.setDelYn("N");
paramCash.setCashStatus("1");
paramCash.setMemo("");
paramCash.setRegId(tokenInfo.getSid());
paramCash.setAdminId(tokenInfo.getSid());
paramCash.setPreCashAmt(Integer.toString(memDetail.getCashAmt()));
paramCash.setWaitTime(-60);
log.info(LOG_PREFIX+ paramCash);
long cashIdx = cashService.insertCash(paramCash);
log.info(LOG_PREFIX+ "cashIdx: " + cashIdx);
if(cashIdx == 0) {
throw new ApiException("P005", "포인트전환은 1분에 1건씩 처리됩니다. 잠시후 다시 시도해주세요");
} else {
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getSid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", point.getMemId()+"::관리자 포인트 전환");
logParam.put("logDesc", point.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
}
}
} else {
throw new ApiException("P002", "보유 포인트를 초과하여 전환신청을 할 수 없습니다.");
}
apiResponse.success();
} catch (ResourceAccessException rae) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
String siteId = tokenInfo.getSid();
String memId = tokenInfo.getMid();
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error("#-admin::pointChg::"+siteId+"::"+memId+"::::"+"[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error("#-admin::pointChg::"+siteId+"::"+memId+"::::"+"[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error("#-admin::pointChg::"+siteId+"::"+memId+"::::"+"[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
apiResponse.success();
} catch(ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
String siteId = tokenInfo.getSid();
String memId = tokenInfo.getMid();
log.error("#-admin::pointChg::"+siteId+"::"+memId+"::::"+"ApiException::"+e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
String siteId = tokenInfo.getSid();
String memId = tokenInfo.getMid();
log.error("#-admin::pointChg::"+siteId+"::"+memId+"::::"+"Exception::"+e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,622 @@
package com.bb.admin.controller;
import java.util.HashMap;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.DailyReportSearch;
import com.bb.model.DayilPartnerReport;
import com.bb.model.DayilPeriodicReports;
import com.bb.model.PageFormVO;
import com.bb.model.ReportSearch;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.CommonService;
import com.bb.service.ReportService;
import com.bb.util.PagingUtil;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/admin/report")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminApiReportController {
private final ReportService reportService;
private final CommonService commonService;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping(value={"/calculateSearch"})
public ApiResponse dailyCalculateSearch(@RequestHeader String token, HttpServletRequest request, @RequestBody DailyReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
final String LOG_PREFIX = "#-admin::dailyCalculateSearch:::";
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
PageFormVO pageVo = new PageFormVO();
if(search.getPage() == 0) search.setPage(1);
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
log.info(LOG_PREFIX+ "[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String,String>> reportCateInfo = reportService.getReportCateInfo(search.getSiteId());
apiResponse.put("reportCateInfo", reportCateInfo);
int totalCount = reportService.getReportsListCntForAdmin(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
if(search.getCount_per_page() == 0) {
commonForm.setCount_per_page(10);
} else {
commonForm.setCount_per_page(search.getCount_per_page());
}
if(search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
// search.setOffset(pageVo.getOffset());
search.setOffset(-1);
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
if(search.getSearchType().equals("OUTER")) {
List<DayilPeriodicReports> list = reportService.getReportsListForAdmin(search); // Use blankSpinSetType
DayilPeriodicReports total = reportService.getReportsTotalForAdmin(search); // Use blankSpinSetType
apiResponse.put("search", search);
apiResponse.put("outSearchList", list);
apiResponse.put("outSearchTotal", total);
} else {
List<DayilPeriodicReports> list = reportService.getReportsListForAdmin(search); // Use blankSpinSetType
search.setSearchType("OUTER");
List<DayilPeriodicReports> total = reportService.getReportsListForAdmin(search); // Use blankSpinSetType
DayilPeriodicReports inSearchTotal = total.get(0);
apiResponse.put("search", search);
apiResponse.put("inSearchList", list);
apiResponse.put("inSearchTotal", inSearchTotal);
}
apiResponse.success();
} catch(ApiException e) {
log.error(LOG_PREFIX+ "ApiException: "+e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(LOG_PREFIX+ "Exception: "+e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@PostMapping(value={"/reportByUser"})
public ApiResponse reportByUser(@RequestHeader String token, HttpServletRequest request, @RequestBody DailyReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(search.getSearchMemId() == null) {
search.setSearchMemId("");
}
search.setSiteId(tokenInfo.getSid());
if(search.getSearchRecommandId() == null) {
search.setSearchRecommandId("");
}
if(search.getOrderStr() == null) {
search.setOrderStr("");
}
PageFormVO pageVo = new PageFormVO();
if(search.getPage() == 0) search.setPage(1);
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String,String>> reportCateInfo = reportService.getReportCateInfo(search.getSiteId());
apiResponse.put("reportCateInfo", reportCateInfo);
int totalCount = reportService.getReportsByUserListCntForAdmin(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
if(search.getCount_per_page() == 0) {
commonForm.setCount_per_page(10);
} else {
commonForm.setCount_per_page(search.getCount_per_page());
}
if(search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
DayilPeriodicReports total = reportService.getReportsByUserTotalForAdmin(search); // Use blankSpinSetType
apiResponse.put("searchTotal", total);
List<DayilPeriodicReports> list = reportService.getReportsByUserListForAdmin(search); // Use blankSpinSetType
apiResponse.put("searchList", list);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/dailyCalculate"})
public ApiResponse dailyCalculate(@RequestHeader String token, HttpServletRequest request, @RequestBody DailyReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String,String>> reportCateInfo = reportService.getReportCateInfo(search.getSiteId());
apiResponse.put("reportCateInfo", reportCateInfo);
HashMap<String, String> partnerInfo = reportService.getPartnerInfo(search); // Use blankSpinSetType
List<DayilPartnerReport> dailyList = reportService.getDayilPartnerReport(search); // Use blankSpinSetType
apiResponse.put("partnerInfo", partnerInfo);
apiResponse.put("dailyList", dailyList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/memWL"})
public ApiResponse logList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
int totalCount = reportService.getReportMemwlListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> list = reportService.getReportMemwlList(search);
apiResponse.put("list", list);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/period"})
public ApiResponse period(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
log.info("AdminApiReportController /period ReportSearch : " + search);
HashMap cashInfo = reportService.getPeriodCash(search);
apiResponse.put("total_cashInAmt", cashInfo.get("total_cashInAmt"));
apiResponse.put("total_cashOutAmt",cashInfo.get("total_cashOutAmt"));
apiResponse.put("total_cashManualAmt", cashInfo.get("total_cashManualAmt"));
apiResponse.put("total_couponUseAmt", "0");
apiResponse.put("total_couponAmt", "0");
apiResponse.put("total_discrepancyAmt", "0");
apiResponse.put("total_pointManualAmt", "0");
// total_bonusAmt_list
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> rollPoint = reportService.getPeriodRollPoint(search);
apiResponse.put("total_rollBonusAmt_list", rollPoint);
List<HashMap> wlAmt = reportService.getPeriodWlAmt(search);
apiResponse.put("total_wlAmt_list", wlAmt);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/gameType"})
public ApiResponse gameType(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> gameTypeList = reportService.getGameTypeList(search);
apiResponse.put("list", gameTypeList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/day"})
public ApiResponse day(@RequestHeader String token, HttpServletRequest request, @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap<String, String>> dayList = reportService.getDayList(search); // Use blankSpinSetType
HashMap<String, String> dayTotal = reportService.getDayTotal(search); // Use blankSpinSetType
apiResponse.put("list", dayList);
apiResponse.put("total", dayTotal);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/trade"})
public ApiResponse trade(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
log.info("AdminApiReportController /trade ReportSearch : " + search);
int totalCount = reportService.getReportTradeListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> list = reportService.getReportTradeList(search);
apiResponse.put("list", list);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/partner"})
public ApiResponse partner(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
log.info("AdminApiReportController /partner ReportSearch : " + search);
int totalCount = reportService.getReportPartnerListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
}else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> list = reportService.getReportPartnerList(search);
apiResponse.put("list", list);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/pay"})
public ApiResponse pay(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
log.info("AdminApiReportController /pay ReportSearch : " + search);
int totalCount = reportService.getReportPayListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(40);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
}else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> list = reportService.getReportPayList(search);
apiResponse.put("list", list);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,527 @@
package com.bb.admin.controller;
import java.util.HashMap;
import java.util.List;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.Member;
import com.bb.model.MemberDetail;
import com.bb.model.MemberInsert;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberRate;
import com.bb.model.PageFormVO;
import com.bb.model.PartnerListVO;
import com.bb.model.RetailSearch;
import com.bb.service.CommonService;
import com.bb.service.CompService;
import com.bb.service.RetailService;
import com.bb.service.SuperService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import com.bb.util.StringUtils;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/super")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class AdminSuperController {
private final SuperService superService;
private final JwtManager jwtManager;
private final CommonService commonService;
private final UserService userService;
private final CompService compService;
private final RetailService retailService;
private final PasswordEncoder passwordEncoder;
private final String ISSUER = "super.oms-admin.com";
@ResponseBody
@PostMapping(value = "/addCompany")
public ApiResponse addCompany(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberInsert signupMember) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
String createSiteId = signupMember.getMemId().replaceAll(" ", "").replaceAll(" ", "").toLowerCase();
final String LOG_PREFIX = "#-admin::addCompany::" + createSiteId + "::::";
signupMember.setSiteId(createSiteId);
signupMember.setMemId(createSiteId);
signupMember.setAdminId(createSiteId);
System.out.print(tokenInfo.getMid());
System.out.print(signupMember.getMemId());
signupMember.setMemLevel("99");
signupMember.setPartnerLevel("COMP");
signupMember.setMemStatus("1");
signupMember.setRecommenderId("");
signupMember.setPartnerType("senior");
String password = passwordEncoder.encode(signupMember.getMemPass());
log.info("[MEMBER PWD:" + password + "]");
signupMember.setMemPass(password);
Member checkMember = new Member();
checkMember.setSiteId(signupMember.getMemId());
checkMember.setMemId(signupMember.getMemId());
checkMember.setRecommenderId(signupMember.getRecommenderId());
/*
* int idCheck = userService.idCheck(checkMember); if(idCheck>0) { throw new
* ApiException("SC005", "idCheck"); }
*/
int idCheckByAdmin = userService.idCheckByAdmin(checkMember);
if (idCheckByAdmin > 0) {
throw new ApiException("U005", "idCheckByAdmin");
}
int nameCheck = userService.nameCheck(checkMember);
if (nameCheck > 0) {
throw new ApiException("SC006", "nameCheck");
}
int adminCheck = userService.adminCheck(signupMember.getSiteId());
if (nameCheck > 0) {
throw new ApiException("SC007", "Super admin account duplication");
}
log.info("##-SUPER addCompany() -## [REQUEST: " + request.getRequestURI() + "] " + signupMember);
int result = userService.adminSignUp(LOG_PREFIX, signupMember, passwordEncoder);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", signupMember.getSiteId() + "::슈퍼관리자 업체 생성");
logParam.put("logDesc", signupMember.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
Member search = new Member();
search.setMemId(signupMember.getMemId());
search.setSiteId(signupMember.getMemId());
search.setPartnerLevel("COMP");
if (signupMember.getRateList() != null) {
MemberRate rateparam = new MemberRate();
rateparam.setMemId(signupMember.getMemId());
rateparam.setRateList(signupMember.getRateList());
userService.getMemberRateUpdate(search, rateparam);
userService.getMemberbetYnUpdate(search, rateparam);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", signupMember.getSiteId() + "::슈퍼관리자 업체 생성 요율 세팅");
logParam.put("logDesc", rateparam.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/updateRate")
public ApiResponse updateRate(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberRate memberRate) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// System.out.println("ddd" + request.getAttribute("Authorization").toString());
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
Member search = new Member();
search.setMemId(memberRate.getMemId());
search.setSiteId(memberRate.getSiteId());
MemberDetail member = userService.getMember(search);
if (member == null) {
throw new ApiException("U003", "unknown user");
}
search.setPartnerLevel(member.getPartnerLevel());
userService.getMemberRateUpdate(search, memberRate);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", memberRate.getMemId() + "::슈퍼관리자 요율 변경");
logParam.put("logDesc", memberRate.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/addUser")
public ApiResponse addUser(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberInsert signupMember) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String LOG_PREFIX = "#-super::join::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || tokenInfo.getType().equals("")) {
throw new ApiException("1000", "accessDinied");
}
LOG_PREFIX = LOG_PREFIX + signupMember.getSiteId() + "::" + signupMember.getMemId() + "::::";
signupMember.setPartnerType("");
signupMember.setMemStatus("1");
String password = passwordEncoder.encode(signupMember.getMemPass());
log.info("[MEMBER PWD:" + password + "]");
signupMember.setMemPass(password);
signupMember.setPartnerLevel("NORMAL");
signupMember.setRecommendYn("N");
signupMember.setPointExchangeYn("Y");
signupMember.setRollingYn("Y");
signupMember.setCashSendYn("N");
signupMember.setCashReceiveYn("N");
signupMember.setNationCode("");
signupMember.setPartSendYn("N");
signupMember.setMaxCredit("");
signupMember.setCreditRate("");
signupMember.setCreditStatus("");
if (signupMember.getRecommenderId() == null || signupMember.getRecommenderId().equals("")) {
throw new ApiException("U097", "추천인 계정을 입력해주세요.");
}
String refer = request.getHeader("Referer");
String domain = "unknown";
if (refer != null) {
String[] urls = StringUtils.extractUrlParts(refer);
domain = urls[2];
log.info(LOG_PREFIX + "::domain::" + domain + "::recommandId::" + signupMember.getRecommenderId());
}
signupMember.setJoinDomain(domain);
Member recommendUser = new Member();
recommendUser.setSiteId(signupMember.getSiteId());
recommendUser.setMemId(signupMember.getRecommenderId());
MemberDetail partner = userService.getMember(recommendUser);
if (partner == null) {
throw new ApiException("U096", "존재하지 않는 추천인 계정입니다.");
}
if (partner.getPartnerLevel().equals("COMP") || partner.getPartnerLevel().equals("AUTO")
|| partner.getPartnerLevel().equals("NORMAL")) {
throw new ApiException("U099", "추천인으로 사용할 수 없는 계정입니다.");
}
if (partner.getRecommendYn().equals("N")) {
throw new ApiException("U099", "추천인으로 사용할 수 없는 계정입니다.");
}
if (!partner.getMemStatus().equals("1")) {
throw new ApiException("U114", "추천인으로 사용할 수 없는 계정입니다.");
}
Member checkMember = new Member();
checkMember.setSiteId(signupMember.getSiteId());
checkMember.setMemId(signupMember.getMemId());
checkMember.setRecommenderId(signupMember.getRecommenderId());
checkMember.setMemName(signupMember.getMemName());
checkMember.setMemNick(signupMember.getMemNick());
int idCheck = userService.idCheck(checkMember);
if (idCheck > 0) {
throw new ApiException("U005", "idCheck");
}
/*
* int idCheckByAdmin =userService.idCheckByAdmin(checkMember);
* if(idCheckByAdmin>0) { throw new ApiException("U005", "idCheckByAdmin"); }
*/
int nameCheck = userService.nameCheck(checkMember);
if (nameCheck > 0) {
throw new ApiException("U006", "nameCheck");
}
if (signupMember.getSiteId().equals(signupMember.getRecommenderId())) {
throw new ApiException("U099", "recommenderIdCheck");
}
log.info("Insert Member:" + signupMember);
userService.adminJoin(signupMember);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "CREATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", signupMember.getMemId() + "::슈퍼관리자 회원 생성");
logParam.put("logDesc", signupMember.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
Member search = new Member();
search.setSiteId(signupMember.getSiteId());
search.setMemId(signupMember.getMemId());
search.setPartnerLevel("NORMAL");
try {
if (signupMember.getRateList() != null) {
MemberRate rateparam = new MemberRate();
rateparam.setMemId(signupMember.getMemId());
rateparam.setRateList(signupMember.getRateList());
userService.getMemberRateUpdate(search, rateparam);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "UPDATE");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", signupMember.getMemId() + "::슈퍼관리자 회원 생성 요율 세팅");
logParam.put("logDesc", rateparam.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
}
} catch (Exception eee) {
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/memberList" })
public ApiResponse memberList(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo = new PageFormVO();
if (search.getPage() == 0)
search.setPage(1);
search.setPartnerType("");
search.setSiteId(search.getSiteId());
HashMap totalInfo = userService.getMemberListCnt(search);
int totalCount = Integer.parseInt(totalInfo.get("totalCnt").toString());
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if (search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
System.out.println(search.getLimit());
System.out.println(search.getOffset());
List<HashMap> memList = userService.getMemberList(search);
apiResponse.put("list", memList);
apiResponse.put("totalInfo", totalInfo);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/retailList" })
public ApiResponse retailList(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody RetailSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo = new PageFormVO();
if (search.getPage() == 0)
search.setPage(1);
search.setSiteId(search.getSiteId());
int totalCount = retailService.getRetailListCnt2(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if (search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<PartnerListVO> list = retailService.getRetailList2(search);
apiResponse.put("list", list);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,996 @@
package com.bb.admintop.controller;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.CodeSearch;
import com.bb.model.CompResetInfo;
import com.bb.model.Member;
import com.bb.model.MemberInsert;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberRate;
import com.bb.model.MenuVO;
import com.bb.model.PageFormVO;
import com.bb.model.PartnerCompInfo;
import com.bb.model.SiteSearch;
import com.bb.service.CommonService;
import com.bb.service.CompService;
import com.bb.service.SuperService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/super/company")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class SuperApiCompController {
private final SuperService superService;
private final JwtManager jwtManager;
private final CommonService commonService;
private final UserService userService;
private final CompService compService;
private final PasswordEncoder passwordEncoder;
@ResponseBody
@PostMapping(value = "/addCompany")
public ApiResponse addCompany(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberInsert signupMember) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
String createSiteId = signupMember.getMemId().replaceAll(" ", "").replaceAll(" ", "").toLowerCase();
final String LOG_PREFIX = "#-super::addCompany::" + createSiteId + "::::";
signupMember.setMemId(createSiteId);
signupMember.setSiteId(createSiteId);
signupMember.setAdminId(createSiteId);
signupMember.setMemLevel("99");
signupMember.setPartnerLevel("COMP");
signupMember.setMemStatus("1");
signupMember.setRecommenderId("");
signupMember.setPartnerType("senior");
String password = passwordEncoder.encode(signupMember.getMemPass());
log.info(LOG_PREFIX + "[MEMBER PWD:" + password + "]");
signupMember.setMemPass(password);
Member checkMember = new Member();
checkMember.setSiteId(signupMember.getMemId());
checkMember.setMemId(signupMember.getMemId());
checkMember.setRecommenderId(signupMember.getRecommenderId());
/*
* int idCheck = userService.idCheck(checkMember); if(idCheck>0) { throw new
* ApiException("SC005", "idCheck"); }
*/
int idCheckByAdmin = userService.idCheckByAdmin(checkMember);
if (idCheckByAdmin > 0) {
log.error(LOG_PREFIX + "idCheckByAdmin");
throw new ApiException("U005", "idCheckByAdmin");
}
int nameCheck = userService.nameCheck(checkMember);
if (nameCheck > 0) {
log.error(LOG_PREFIX + "nameCheck");
throw new ApiException("SC006", "nameCheck");
}
int adminCheck = userService.adminCheck(signupMember.getSiteId());
if (nameCheck > 0) {
log.error(LOG_PREFIX + "Super admin account duplication");
throw new ApiException("SC007", "Super admin account duplication");
}
log.info(LOG_PREFIX + "Company::" + signupMember);
int result = userService.adminSignUp(LOG_PREFIX, signupMember, passwordEncoder);
log.info(LOG_PREFIX + "adminSignUp result::" + result);
if (result == 0) {
log.error(LOG_PREFIX + "site prefix check");
throw new ApiException("SP99", "site prefix check");
}
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiCompController.addCompany() => UserService.adminSignUp()");
logParam.put("logDesc", signupMember.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
log.error(LOG_PREFIX + "insertAdminlog Exception::" + e.toString());
}
Member search = new Member();
search.setMemId(signupMember.getMemId());
search.setSiteId(signupMember.getMemId());
search.setPartnerLevel("COMP");
if (signupMember.getRateList() != null) {
log.info(LOG_PREFIX + "RateList::" + signupMember.getRateList());
MemberRate rateparam = new MemberRate();
rateparam.setMemId(signupMember.getMemId());
rateparam.setRateList(signupMember.getRateList());
userService.getMemberRateUpdate(search, rateparam);
log.info(LOG_PREFIX + "getMemberRateUpdate::End");
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiCompController.addCompany() => UserService.getMemberRateUpdate()");
logParam.put("logDesc", rateparam.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
log.error(LOG_PREFIX + "insertAdminlog Exception::" + e.toString());
}
userService.getMemberbetYnUpdate(search, rateparam);
log.info(LOG_PREFIX + "getMemberbetYnUpdate::End");
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiCompController.addCompany() => UserService.getMemberbetYnUpdate()");
logParam.put("logDesc", rateparam.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
log.error(LOG_PREFIX + "insertAdminlog Exception::" + e.toString());
}
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/detail")
public ApiResponse detail(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search)
throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
HashMap compInfo = compService.getCompInfoForDetail(search);
HashMap settingInfo = compService.getSettingInfoForDetail(search);
HashMap compStats = compService.getCompStatsForDetail(search);
List<HashMap> topCompList = compService.getTopCompListForDetail(search);
List<HashMap> botCompList = compService.getBotCompListForDetail(search);
CodeSearch codesSearch = new CodeSearch();
codesSearch.setSiteId(search.getSiteId());
List<HashMap> gameList = commonService.getGameCodesForSuper(codesSearch);
HashMap<String, String> param = new HashMap<>();
param.put("siteId", search.getSiteId());
param.put("isSuper", "N");
List<MenuVO> menuList = commonService.getMenuList(param);
codesSearch.setMasterCode("vendorComp");
List<HashMap> vendorCompList = commonService.getCodeList(codesSearch);
apiResponse.put("topCompId", compInfo.get("topCompId"));
apiResponse.put("compInfo", compInfo);
apiResponse.put("settingInfo", settingInfo);
apiResponse.put("compStats", compStats);
apiResponse.put("topCompList", topCompList);
apiResponse.put("botCompList", botCompList);
apiResponse.put("gameList", gameList);
apiResponse.put("menuList", menuList);
apiResponse.put("vendorCompList", vendorCompList);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/compInfo")
public ApiResponse modifyCompInfo(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getTopCompId() == null) {
throw new ApiException("SC999", "상위 컴퍼니 아이디 누락");
}
if (compInfo.getPassword() != null && !compInfo.getPassword().equals("")) {
String password = passwordEncoder.encode(compInfo.getPassword());
log.info("[ADMIN PWD:" + password + "]");
compInfo.setPassword(password);
}
if (compInfo.getSiteDomain() == null) {
compInfo.setSiteDomain("");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.modifyCompInfo(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiCompController.modifyCompInfo() => CompService.modifyCompInfo()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "회사정보 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/apiSetting")
public ApiResponse updateApiSetting(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getSiteId() == null || compInfo.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.updateApiSetting(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiCompController.updateApiSetting() => CompService.updateApiSetting()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "회사정보 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/siteSettings")
public ApiResponse modifySiteSettings(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getTopCompId() == null) {
throw new ApiException("SC999", "상위 컴퍼니 아이디 누락");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.modifySiteSettings(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiCompController.modifySiteSettings() => CompService.modifySiteSettings()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "사이트 기능 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/creditSettings")
public ApiResponse modifyCreditSettings(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getTopCompId() == null) {
throw new ApiException("SC999", "상위 컴퍼니 아이디 누락");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.modifyCreditSettings(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiCompController.modifyCreditSettings() => CompService.modifyCreditSettings()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "PT 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/creditRates")
public ApiResponse modifyCompCreditRates(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getTopCompId() == null) {
throw new ApiException("SC999", "상위 컴퍼니 아이디 누락");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.modifyCompCreditRates(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiCompController.modifyCompCreditRates() => CompService.modifyCompCreditRates()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "게임별 PT수수료율 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/gameSettings")
public ApiResponse modifyGameSettings(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getTopCompId() == null) {
throw new ApiException("SC999", "상위 컴퍼니 아이디 누락");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.modifySiteGameSettingForSuper(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiCompController.modifyGameSettings() => CompService.modifySiteGameSettingForSuper()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "배팅 가능유/무 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify/menuSettings")
public ApiResponse modifyMenuSettings(@RequestHeader String token, HttpServletRequest request,
@RequestBody PartnerCompInfo compInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compInfo.getTopCompId() == null) {
throw new ApiException("SC999", "상위 컴퍼니 아이디 누락");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + compInfo);
int result = compService.modifyMenuSettings(compInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiCompController.modifyMenuSettings() => CompService.modifyMenuSettings()");
logParam.put("logDesc", compInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result > 0) {
apiResponse.success();
} else {
throw new ApiException("COMP009", "배팅 가능유/무 설정에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/detail/siteIds")
public ApiResponse getSiteIds(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
List<HashMap<String, String>> compIdList = compService.getCompIdList(search);
apiResponse.put("siteIds", compIdList);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/detail/siteGameInfo")
public ApiResponse getSiteGameInfo(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
List<HashMap> gameList = compService.getSiteGameInfo(search);
apiResponse.put("gameList", gameList);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/detail/siteMenuInfo")
public ApiResponse getSiteMenuInfo(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
HashMap<String, String> param = new HashMap<>();
List<MenuVO> menuList = compService.getSiteMenuInfo(search);
apiResponse.put("menuList", menuList);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/detail/otpInfo")
public ApiResponse getSiteAdminOTPInfo(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (search.getSiteId() == null || search.getSiteId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
List<HashMap<String, String>> adminOtpList = compService.getAdminOtpInfoList(search.getSiteId());
apiResponse.put("adminOtpList", adminOtpList);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/reset")
public ApiResponse reset(@RequestHeader String token, HttpServletRequest request,
@RequestBody CompResetInfo compResetInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compResetInfo.getSiteId() == null || compResetInfo.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
log.info("[REQUEST: " + request.getRequestURI() + "] [SUPER_ADMIN reset("+compResetInfo.getSiteId()+")] " + compResetInfo);
int result = compService.resetComp(compResetInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiCompController.reset() => CompService.resetComp()");
logParam.put("logDesc", compResetInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
if (result == 0) {
apiResponse.success();
} else {
throw new ApiException("COMP010", "사이트 초기화에 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
log.info("[REQUEST: " + request.getRequestURI() + "] [SUPER_ADMIN reset("+compResetInfo.getSiteId()+")] END...");
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/deleteUsers")
public ApiResponse deleteUsers(@RequestHeader String token, HttpServletRequest request,
@RequestBody CompResetInfo compResetInfo) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (compResetInfo.getSiteId() == null || compResetInfo.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
final String LOG_PREFIX = "#super::deleteUsers::" + compResetInfo.getSiteId() + "::::";
compResetInfo.setMemIds(compResetInfo.getMemIds().trim());
log.info(LOG_PREFIX + "[REQUEST: " + request.getRequestURI() + "] delete()::" + compResetInfo);
// User check
List<String> memIdList = Arrays.asList(compResetInfo.getMemIds().split(","));
if (memIdList.size() > 10) {
throw new ApiException("DU03", "User list size over");
}
compResetInfo.setMemIdList(memIdList);
List<HashMap<String, Object>> memList = userService.delCheckMemList(compResetInfo);
for (HashMap<String, Object> mem : memList) {
String memId = mem.get("memId").toString();
// String partnerLevel = mem.get("partnerLevel").toString();
int botCnt = Integer.parseInt(mem.get("botCnt").toString());
/*
* if(!"NORMAL".equals(partnerLevel)) { throw new ApiException("DU01",
* "["+memId+"] is not normal user"); }
*/
if (botCnt != 0) {
throw new ApiException("DU02", "[" + memId + "] has a bottom user(" + botCnt + ")");
}
}
// Delete user
int result = userService.deleteUsers(LOG_PREFIX, compResetInfo);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiUserController.delete() => UserService.deleteUsers()");
logParam.put("logDesc", compResetInfo.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
log.error(LOG_PREFIX + "insertAdminlog Exception::" + e.toString());
}
if (result >= 0) {
apiResponse.success();
} else {
throw new ApiException("DU91", "유저 영구삭제 중 문제가 발생하였습니다. 관리자에게 문의하세요.");
}
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#super:memberDelete::" + compResetInfo.getSiteId() + "::::";
log.error(LOG_PREFIX + "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#super:memberDelete::" + compResetInfo.getSiteId() + "::::";
log.error(LOG_PREFIX + "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/statistics" })
public ApiResponse statistics(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo = new PageFormVO();
int totalCount = superService.getCompanyListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if (search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> cashList = superService.getCompanyList(search);
apiResponse.put("list", cashList);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,583 @@
package com.bb.admintop.controller;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtClame;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.CodeSearch;
import com.bb.model.OTPInfo;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.model.TOtpVO;
import com.bb.service.CommonService;
import com.bb.service.CompService;
import com.bb.service.SuperService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.TOTPTokenGenerator;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/super")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class SuperApiController {
private final SuperService superService;
private final JwtManager jwtManager;
private final CommonService commonService;
private final UserService userService;
private final CompService compService;
private final PasswordEncoder passwordEncoder;
private final String ISSUER = "super.oms-admin.com";
@ResponseBody
@PostMapping(value = "/login")
public ApiResponse admonLogin(HttpServletRequest request, @RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String loginAdminId = search.getSiteId();
final String LOG_PREFIX = "#-super::login::" + loginAdminId + "::::";
String logDesc = "";
try {
String adminOtpYN = compService.getAdminOtpUseYN(search.getSiteId());
if (adminOtpYN.equals("Y")) {
// OTP Login = Y
apiResponse.put("useOtp", adminOtpYN);
if (search.getOtp() == null || "".equals(search.getOtp())) {
log.error(LOG_PREFIX + "ApiException::5000::OTP 번호를 입력하세요.");
throw new ApiException("5000", "OTP 번호를 입력하세요.");
}
// Check OTP
String account = search.getSiteId();
int otpNum = 0;
try {
otpNum = Integer.parseInt(search.getOtp());
} catch (NumberFormatException ne) {
log.error(LOG_PREFIX + "ApiException::4000::OTP 번호는 숫자 형식입니다.");
throw new ApiException("4000", "OTP 번호는 숫자 형식입니다.");
}
OTPInfo otpInfo = compService.getOtpInfo(account);
if (otpInfo == null || otpInfo.getAccount().equals("")) {
log.error(LOG_PREFIX + "ApiException::6000::OTP 정보를 찾을 수 없습니다.");
throw new ApiException("6000", "OTP 정보를 찾을 수 없습니다.");
}
log.info(LOG_PREFIX + "OTP Info : " + otpInfo);
String secret = otpInfo.getSecretKey();
// long l = new Date().getTime();
// long ll = l / 30000;
// boolean chkOtp = TOTPTokenGenerator.check_code(secret, otpNum, ll);
boolean chkOtp = TOTPTokenGenerator.otpVerify(secret, otpNum);
if (chkOtp) {
apiResponse.put("useOtp", "Y");
String password = passwordEncoder.encode(search.getSitePass());
log.info(LOG_PREFIX + "[ADMIN PWD:" + password + "]");
HashMap admininfo = userService.adminSuperLogin(search);
boolean chkPassword = passwordEncoder.matches(search.getSitePass(),
admininfo.get("adminPass").toString());
log.info(LOG_PREFIX + "[ADMIN chkPassword:" + chkPassword + "]");
if (!chkPassword) {
log.error(LOG_PREFIX + "ApiException::2000::no site");
throw new ApiException("2000", "no site");
}
// ipchck
Map ipParam = new HashMap();
ipParam.put("adminId", admininfo.get("adminId").toString());
ipParam.put("ip", IPKit.getIpAddressByRequest(request));
apiResponse.put("site", admininfo);
JwtClame jwtinfo = new JwtClame();
jwtinfo.setSiteIdx(0);
jwtinfo.setMemIdx(0);
jwtinfo.setSiteId(admininfo.get("adminId").toString());
jwtinfo.setMemId(admininfo.get("adminId").toString());
jwtinfo.setType("super");
String tok = jwtManager.generateToken(jwtinfo);
apiResponse.put("token", tok);
try {
Map logParam = new HashMap();
logParam.put("siteId", admininfo.get("adminId").toString());
logParam.put("memId", admininfo.get("adminId").toString());
logParam.put("logType", "SUPERLOGIN");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "로그인");
logParam.put("logDesc", logParam.toString());
logParam.put("regId", admininfo.get("adminId").toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", tok);
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} else {
// TODO: 잘못된 OTP번호
log.error(LOG_PREFIX + "ApiException::3000::OTP 번호가 일치하지 않습니다.");
throw new ApiException("3000", "OTP 번호가 일치하지 않습니다.");
}
} else {
// OTP Login = N
apiResponse.put("useOtp", adminOtpYN);
String password = passwordEncoder.encode(search.getSitePass());
log.info(LOG_PREFIX + "[ADMIN PWD:" + password + "]");
HashMap admininfo = userService.adminSuperLogin(search);
boolean chkPassword = passwordEncoder.matches(search.getSitePass(),
admininfo.get("adminPass").toString());
log.info(LOG_PREFIX + "[ADMIN chkPassword:" + chkPassword + "]");
if (!chkPassword) {
log.error(LOG_PREFIX + "ApiException::2000::no site");
throw new ApiException("2000", "no site");
}
// ipchck
Map ipParam = new HashMap();
ipParam.put("adminId", admininfo.get("adminId").toString());
ipParam.put("ip", IPKit.getIpAddressByRequest(request));
apiResponse.put("site", admininfo);
JwtClame jwtinfo = new JwtClame();
jwtinfo.setSiteIdx(0);
jwtinfo.setMemIdx(0);
jwtinfo.setSiteId(admininfo.get("adminId").toString());
jwtinfo.setMemId(admininfo.get("adminId").toString());
jwtinfo.setType("super");
String tok = jwtManager.generateToken(jwtinfo);
apiResponse.put("token", tok);
try {
Map logParam = new HashMap();
logParam.put("siteId", admininfo.get("adminId").toString());
logParam.put("memId", admininfo.get("adminId").toString());
logParam.put("logType", "SUPERLOGIN");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "로그인");
logParam.put("logDesc", logParam.toString());
logParam.put("regId", admininfo.get("adminId").toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", tok);
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
}
apiResponse.success();
} catch (ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/makeOtp")
public ApiResponse makeOtp(@RequestHeader String token, HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
OTPInfo param = new OTPInfo();
param.setAccount(tokenInfo.getMid());
param.setIssuer(ISSUER);
param.setUseYn("Y");
param.setType("S");
param = TOTPTokenGenerator.getGoogleAuthQRUrl(param);
log.info("#-super::makeOtp:: SUPER ADMIN secret : " + param.getSecretKey());
log.info("#-super::makeOtp:: SUPER ADMIN account : " + param.getAccount());
log.info("#-super::makeOtp:: SUPER ADMIN issuer : " + ISSUER);
log.info("#-super::makeOtp:: SUPER ADMIN URL : " + param.getUrl());
int result = compService.registSuperOtp(param);
if (result > 0) {
String adminOtpYN = compService.getAdminOtpUseYN(tokenInfo.getMid());
apiResponse.put("useOtp", adminOtpYN);
apiResponse.put("otpUrl", param.getUrl());
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiController.makeOtp() => userService.registAdminOtp()");
logParam.put("logDesc", param.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} else {
throw new ApiException("9999", "FAIL");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/getOtpUrl")
public ApiResponse getOtpUrl(@RequestHeader String token, HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
String account = tokenInfo.getMid();
OTPInfo otpInfo = compService.getOtpInfo(account);
log.info("#-super::getOtpUrl::OTP info: " + otpInfo);
apiResponse.put("otpUrl", otpInfo.getUrl());
String adminOtpYN = compService.getAdminOtpUseYN(tokenInfo.getMid());
apiResponse.put("useOtp", adminOtpYN);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/updateOtpUseYN")
public ApiResponse updateOtpUseYN(@RequestHeader String token, HttpServletRequest request,
@RequestBody OTPInfo info) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (info.getUseYn() == null || info.getUseYn().equals("")) {
throw new ApiException("1009", "The value 'useYN' does not exist.");
}
int result = 0;
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (info.getAccount() != null && !info.getAccount().equals("")) {
String adminId = info.getAccount();
String adminType = compService.getAdminType(adminId);
info.setType(adminType);
result = compService.updateAdminOtpUseYN(info);
} else {
info.setAccount(tokenInfo.getMid());
result = compService.updateSuperOtpUseYN(info);
}
if (result > 0) {
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiController.updateOtpUseYN() => userService.updateOtpUseYN()");
logParam.put("logDesc", info.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} else {
throw new ApiException("9999", "FAIL");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/makeSiteOtp")
public ApiResponse makeSiteOtp(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody TOtpVO otpVO) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
String siteId = otpVO.getSiteId();
String account = otpVO.getAdminId();
Site site = userService.getSiteInfo(siteId);
String issuer = site.getSiteDomain();
String adminType = compService.getAdminType(account);
OTPInfo param = new OTPInfo();
param.setAccount(account);
param.setIssuer(issuer);
param.setUseYn("N");
param.setType(adminType);
param = TOTPTokenGenerator.getGoogleAuthQRUrl(param);
log.info("#-admin::makeOtp:: secret : " + param.getSecretKey());
log.info("#-admin::makeOtp:: account : " + param.getAccount());
log.info("#-admin::makeOtp:: issuer : " + issuer);
log.info("#-admin::makeOtp:: URL : " + param.getUrl());
int result = compService.registAdminOtp(param);
if (result > 0) {
String siteOtpYN = compService.getAdminOtpUseYN(account);
apiResponse.put("useOtp", siteOtpYN);
apiResponse.put("otpUrl", param.getUrl());
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("regId", tokenInfo.getMid());
logParam.put("logType", "modify");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiController.makeSiteOtp() => userService.registAdminOtp()");
logParam.put("logDesc", param.toString());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} else {
throw new ApiException("9999", "FAIL");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/getSiteOtpUrl")
public ApiResponse getSiteOtpUrl(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody TOtpVO otpVO) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
OTPInfo otpInfo = compService.getOtpInfo(otpVO.getAdminId());
log.info("#-super::getSiteOtpUrl::OTP info: " + otpInfo);
apiResponse.put("otpUrl", otpInfo.getUrl());
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/optionSave")
public ApiResponse optionSave(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteOption option) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
option.setSiteId(option.getSiteId());
commonService.optionSave(option);
try {
Map logParam = new HashMap();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "insert or update");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "AdminSuperController.optionSave() => CommonService.optionSave()");
logParam.put("logDesc", option.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/gameCodes")
public ApiResponse gameCodes(@RequestHeader String token, HttpServletRequest request,
@RequestBody CodeSearch codesSearch) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (codesSearch == null || codesSearch.getSiteId().equals("")) {
codesSearch.setSiteId("");
} else {
codesSearch.setSiteId(codesSearch.getSiteId());
}
List<HashMap> codeList = commonService.getGameCodesForSuper(codesSearch);
apiResponse.put("codes", codeList);
apiResponse.put("codesSearch", codesSearch);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/gameGroupCodes")
public ApiResponse gameGroupCodes(@RequestHeader String token, HttpServletRequest request,
@RequestBody CodeSearch codesSearch) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (codesSearch == null || codesSearch.getSiteId().equals("")) {
codesSearch.setSiteId("");
} else {
codesSearch.setSiteId(codesSearch.getSiteId());
}
String siteId = codesSearch.getSiteId();
List<HashMap> codeList = commonService.getGameGroupCodesForSuper(siteId);
apiResponse.put("groupCodes", codeList);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,178 @@
package com.bb.admintop.controller;
import java.util.HashMap;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.GameCodeSearchVO;
import com.bb.model.GameCodeVO;
import com.bb.service.CommonService;
import com.bb.util.IPKit;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/super/setting")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class SuperApiSettingController {
private final JwtManager jwtManager;
private final CommonService commonService;
@ResponseBody
@PostMapping(value="/gameCodeList")
public ApiResponse gameCodeList(@RequestHeader String token, HttpServletRequest request, @RequestBody GameCodeSearchVO searchVO) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
List<HashMap<String, String>> tabList = commonService.getGameCodeTabList(searchVO);
List<HashMap<String, String>> colList = commonService.getGameCodeColList(searchVO);
List<HashMap<String, String>> gameCodelist = commonService.getGameCodeList(searchVO);
apiResponse.put("selectTab", searchVO.getGroupCode());
apiResponse.put("selectOrderName", searchVO.getOrderName());
apiResponse.put("selectOrderType", searchVO.getOrderType());
apiResponse.put("tabList", tabList);
apiResponse.put("colList", colList);
apiResponse.put("gameCodelist", gameCodelist);
apiResponse.success();
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/gameCodeRegist")
public ApiResponse gameCodeRegist(@RequestHeader String token, HttpServletRequest request, @RequestBody GameCodeVO gameCodeVO) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
log.info("#-gameCodeRegist::"+ gameCodeVO.toString());
if(gameCodeVO.getGroupCode() == null || gameCodeVO.getGroupCode().equals("")) {
throw new ApiException("1000", "accessDinied");
}
if(gameCodeVO.getGroupCodeNameEN() == null || gameCodeVO.getGroupCodeNameEN().equals("")) {
throw new ApiException("1000", "accessDinied");
}
if(gameCodeVO.getCode() == null || gameCodeVO.getCode().equals("")) {
throw new ApiException("1000", "accessDinied");
}
int result = commonService.gameCodeRegist(gameCodeVO);
if(result> 0) {
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiSettingController.gameCodeRegist() => commonService.gameCodeRegist()");
logParam.put("logDesc", gameCodeVO.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
apiResponse.success();
} else {
apiResponse.fail();
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/gameCodeUpdate")
public ApiResponse gameCodeUpdate(@RequestHeader String token, HttpServletRequest request, @RequestBody GameCodeVO gameCodeVO) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(tokenInfo.getType()==null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
log.info(gameCodeVO.toString());
int result = commonService.gameCodeUpdate(gameCodeVO);
if(result> 0) {
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiSettingController.gameCodeUpdate() => commonService.gameCodeUpdate()");
logParam.put("logDesc", gameCodeVO.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch(Exception e) { System.out.print(e.toString()); }
apiResponse.success();
} else {
apiResponse.fail();
}
} catch(ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,603 @@
package com.bb.admintop.controller;
import java.net.SocketTimeoutException;
import java.util.HashMap;
import java.util.List;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.apache.http.conn.ConnectTimeoutException;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.ResourceAccessException;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.ApiVendorCompInfo;
import com.bb.model.Member;
import com.bb.model.MemberDetail;
import com.bb.model.MemberInsert;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberRate;
import com.bb.model.MemberRateVo;
import com.bb.model.MemberSearch;
import com.bb.model.MemberUpdate;
import com.bb.model.NewMemRateItem;
import com.bb.model.PageFormVO;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.model.TripleAuthInfo;
import com.bb.service.CommonService;
import com.bb.service.TripleService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import com.bb.util.StringUtils;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/super/member")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class SuperApiUserController {
private final JwtManager jwtManager;
private final CommonService commonService;
private final UserService userService;
private final TripleService tripleService;
private final PasswordEncoder passwordEncoder;
private final String ISSUER = "super.oms-admin.com";
@ResponseBody
@PostMapping(value = "/addUser")
public ApiResponse addUser(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberInsert signupMember) throws Exception {
ApiResponse apiResponse = new ApiResponse();
String LOG_PREFIX = "#-super::join::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (signupMember.getSiteId() == null || signupMember.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
LOG_PREFIX = LOG_PREFIX + signupMember.getSiteId() + "::" + signupMember.getMemId() + "::::";
signupMember.setMemId(signupMember.getMemId().replaceAll(" ", "").replaceAll(" ", "").toLowerCase());
if (signupMember.getRecommenderId() == null || signupMember.getRecommenderId().equals("")) {
throw new ApiException("U097", "추천인 계정을 입력해주세요.");
}
String refer = request.getHeader("Referer");
String domain = "unknown";
if (refer != null) {
String[] urls = StringUtils.extractUrlParts(refer);
domain = urls[2];
log.info(LOG_PREFIX + "::domain::" + domain + "::recommandId::" + signupMember.getRecommenderId());
}
signupMember.setJoinDomain(domain);
signupMember.setRecommenderId(signupMember.getRecommenderId().replaceAll(" ", "").toLowerCase());
signupMember.setPartnerType("");
signupMember.setMemStatus("1");
String password = passwordEncoder.encode(signupMember.getMemPass());
log.info("[MEMBER PWD:" + password + "]");
signupMember.setMemPass(password);
signupMember.setPartnerLevel("NORMAL");
signupMember.setRecommendYn("N");
signupMember.setPointExchangeYn("Y");
signupMember.setRollingYn("Y");
signupMember.setCashSendYn("N");
signupMember.setCashReceiveYn("N");
signupMember.setNationCode("");
signupMember.setPartSendYn("N");
signupMember.setMaxCredit("");
signupMember.setCreditRate("");
signupMember.setCreditStatus("");
Member recommendUser = new Member();
recommendUser.setSiteId(signupMember.getSiteId());
recommendUser.setMemId(signupMember.getRecommenderId());
MemberDetail partner = userService.getMember(recommendUser);
if (partner == null) {
throw new ApiException("U096", "존재하지 않는 추천인 계정입니다.");
}
if (partner.getPartnerLevel().equals("COMP") || partner.getPartnerLevel().equals("AUTO")) {
throw new ApiException("U099", "추천인으로 사용할 수 없는 계정입니다.");
}
if (partner.getRecommendYn().equals("N")) {
throw new ApiException("U099", "추천인으로 사용할 수 없는 계정입니다.");
}
if (!partner.getMemStatus().equals("1")) {
throw new ApiException("U114", "추천인으로 사용할 수 없는 계정입니다.");
}
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(signupMember.getSiteId());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
if (partner.getPartnerLevel().equals("NORMAL") && siteOption.getUserRecommenderChgYn().equals("N")) {
throw new ApiException("U099", "추천인으로 사용할 수 없는 계정입니다.");
}
if (partner.getPartnerLevel().equals("NORMAL") && siteOption.getUserRecommenderChgYn().equals("Y")) {
int cnt = userService.getNormalRetailCnt(recommendUser);
if (cnt == 10) {
// 일반회원 최대 추천인 가능 단계(10) 초과
throw new ApiException("U099", "추천인으로 사용할 수 없는 계정입니다.");
}
}
Member checkMember = new Member();
checkMember.setSiteId(signupMember.getSiteId());
checkMember.setMemId(signupMember.getMemId());
checkMember.setRecommenderId(signupMember.getRecommenderId());
checkMember.setMemName(signupMember.getMemName());
checkMember.setMemNick(signupMember.getMemNick());
int idCheck = userService.idCheck(checkMember);
if (idCheck > 0) {
throw new ApiException("U005", "idCheck");
}
/*
* int idCheckByAdmin =userService.idCheckByAdmin(checkMember);
* if(idCheckByAdmin>0) { throw new ApiException("U005", "idCheckByAdmin"); }
*/
int nameCheck = userService.nameCheck(checkMember);
if (nameCheck > 0) {
throw new ApiException("U006", "nameCheck");
}
if (signupMember.getSiteId().equals(signupMember.getRecommenderId())) {
throw new ApiException("U099", "recommenderIdCheck");
}
log.info("Insert Member:" + signupMember);
userService.adminJoin(signupMember);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiUserController.addUser() => UserService.adminJoin()");
logParam.put("logDesc", signupMember.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
Member search = new Member();
search.setSiteId(signupMember.getSiteId());
search.setMemId(signupMember.getMemId());
search.setPartnerLevel("NORMAL");
try {
if (signupMember.getRateList() != null) {
MemberRate rateparam = new MemberRate();
rateparam.setMemId(signupMember.getMemId());
rateparam.setRateList(signupMember.getRateList());
userService.getMemberRateUpdate(search, rateparam);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName",
"SuperApiUserController.addUser() => UserService.getMemberRateUpdate()");
logParam.put("logDesc", rateparam.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
/*
* userService.getMemberbetYnUpdate(search, rateparam); try{ HashMap<String,
* String> logParam = new HashMap<String, String>(); logParam.put("siteId",
* tokenInfo.getMid()); logParam.put("memId", tokenInfo.getMid());
* logParam.put("logType", "save"); logParam.put("logoutYn", "");
* logParam.put("logEndPoint", request.getRequestURI()); logParam.put("logName",
* "AdminSuperController.addUser() => UserService.getMemberbetYnUpdate()");
* logParam.put("logDesc", rateparam.toString()); logParam.put("regId",
* tokenInfo.getMid()); logParam.put("regIp",
* IPKit.getIpAddressByRequest(request)); logParam.put("token", "");
* commonService.insertAdminlog(logParam); } catch(Exception e) {
* System.out.print(e.toString()); }
*/
}
} catch (Exception eee) {
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = { "/memberList" })
public ApiResponse memberList(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (search.getSiteId() == null || search.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
PageFormVO pageVo = new PageFormVO();
if (search.getPage() == 0)
search.setPage(1);
search.setPartnerType("");
search.setSiteId(search.getSiteId());
if (search.getUserType() == null) {
search.setUserType(""); // 전체 검색
}
HashMap totalInfo = userService.getMemberListCnt(search);
int totalCount = Integer.parseInt(totalInfo.get("totalCnt").toString());
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if (search.getCount_per_list() == 0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
List<HashMap> memList = userService.getMemberList(search);
apiResponse.put("list", memList);
apiResponse.put("totalInfo", totalInfo);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/detail")
public ApiResponse memberDetail(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberSearch memberSearch) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (memberSearch.getSiteId() == null || memberSearch.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
Member search = new Member();
search.setMemId(memberSearch.getMemId());
search.setSiteId(memberSearch.getSiteId());
log.info("[REQUEST: " + request.getRequestURI() + "] " + search);
HashMap memberDetail = userService.getMemberDetail_1(search);
int totalChangePointAmt = userService.getTotalChangePointAmt(search);
memberDetail.put("totalChangePointAmt", totalChangePointAmt);
memberDetail.put("memPass", "");
memberDetail.put("memberCommissionRate", userService.getMemberRate(search));
List<HashMap> memberFlow = userService.getMemberFlowList(memberDetail);
List<HashMap> partnerFlow = userService.getPartnerFlowList(memberDetail);
apiResponse.put("member", memberDetail);
apiResponse.put("memberFlow", memberFlow);
apiResponse.put("partnerFlow", partnerFlow);
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/modify")
public ApiResponse modify(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberUpdate signupMember) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
if (signupMember.getSiteId() == null || signupMember.getSiteId().equals("")) {
throw new ApiException("SS99", "Not Found siteId");
}
signupMember.setUpdId(tokenInfo.getMid());
if (signupMember.getMemPass() != null && !signupMember.getMemPass().equals("")) {
String password = passwordEncoder.encode(signupMember.getMemPass());
log.info("[MEMBER PWD:" + password + "]");
signupMember.setMemPass(password);
}
log.info("[REQUEST: " + request.getRequestURI() + "] " + signupMember);
userService.updateMember(signupMember);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiUserController.modify() => UserService.updateMember()");
logParam.put("logDesc", signupMember.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} catch (ResourceAccessException rae) {
if (rae.getCause() instanceof ConnectTimeoutException) {
log.error("[ConnectTimeoutException]" + rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if (rae.getCause() instanceof SocketTimeoutException) {
log.error("[SocketTimeoutException]" + rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if (rae.getCause() instanceof InterruptedException) {
log.error("[InterruptedException]" + rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/updateRate")
public ApiResponse updateRate(@RequestHeader String token, HttpServletRequest request,
@Valid @RequestBody MemberRate memberRate) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// System.out.println("ddd" + request.getAttribute("Authorization").toString());
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if (tokenInfo.getType() == null || !tokenInfo.getType().equals("super")) {
throw new ApiException("1000", "accessDinied");
}
Member search = new Member();
search.setSiteId(memberRate.getSiteId());
search.setMemId(memberRate.getMemId());
search.setPartnerLevel("NORMAL");
MemberDetail member = userService.getMember(search);
if (member == null) {
throw new ApiException("U003", "unknown user");
}
search.setPartnerLevel(member.getPartnerLevel());
log.info("[REQUEST: " + request.getRequestURI() + "] " + memberRate);
/*
* MemberDetail myInfo = userService.getMember(search); Member topSearch = new
* Member(); topSearch.setSiteId(search.getSiteId());
* topSearch.setMemId(myInfo.getRecommenderId()); List<HashMap> topRateList =
* userService.getMemberRateByNormal(topSearch); for(MemberRateVo
* mvo:memberRate.getRateList()) { String botCode = mvo.getGameType(); Double
* botPR = Double.valueOf(mvo.getPointRate()); Double botLR =
* Double.valueOf(mvo.getLoseRate());
*
* for(HashMap topRate : topRateList) { String topCode =
* topRate.get("gameType").toString(); Double topPR =
* Double.valueOf(topRate.get("pointRate").toString()); Double topLR =
* Double.valueOf(topRate.get("loseRate").toString());
* if(botCode.equals(topCode)) { if(botPR > topPR || botLR > topLR) {
* log.info("## updateRate ## botCode : " + botCode + ", topCode : " + topCode);
* log.info("## updateRate ## botPR : " + botPR + ", topPR : " + topPR);
* log.info("## updateRate ## botLR : " + botLR + ", topLR : " + topLR); String
* resultMsg = "["+topRate.get("codeName").toString()+"] 롤링:"+topPR+", 루징:"
* +topLR+" 보다 작은값을 입력하세요"; log.info("## updateRate ## resultMsg : " +
* resultMsg);
*
* throw new ApiException("U031", resultMsg); } } } }
*/
NewMemRateItem rateItem = new NewMemRateItem();
rateItem.setSiteId(memberRate.getSiteId());
rateItem.setMemId(memberRate.getMemId());
List<NewMemRateItem> myRateList = userService.getMemRateItemList(rateItem);
for (MemberRateVo mvo : memberRate.getRateList()) {
String vendorCode = mvo.getGameType();
Double pointRate = Double.valueOf(mvo.getPointRate());
Double loseRate = Double.valueOf(mvo.getLoseRate());
for (NewMemRateItem myRateInfo : myRateList) {
String myCode = myRateInfo.getVendorCode();
Double maxPointRate = myRateInfo.getMaxPointRate();
Double minPointRate = myRateInfo.getMinPointRate();
Double maxLoseRate = myRateInfo.getMaxLoseRate();
Double minLoseRate = myRateInfo.getMinLoseRate();
if (vendorCode.equals(myCode)) {
if (maxPointRate < pointRate || minPointRate > pointRate) {
log.info("#-updateRate::" + myRateInfo.getSiteId() + "::" + myRateInfo.getMemId()
+ "::vendorcode::" + myCode + "::pointRate::" + pointRate);
log.info("#-updateRate::" + myRateInfo.getSiteId() + "::" + myRateInfo.getMemId()
+ "::vendorcode::" + myCode + "::MaxPointRate::" + maxPointRate + "::MinPointRate::"
+ minPointRate);
String resultMsg = "롤링:" + "::vendorcode::" + myCode + "::" + maxPointRate + ", "
+ minPointRate + " 사이값을 입력하세요";
log.info("#-updateRate::" + myRateInfo.getSiteId() + "::" + myRateInfo.getMemId()
+ "::vendorcode::" + myCode + "::resultMsg : " + resultMsg);
throw new ApiException("U031", resultMsg);
}
if (maxLoseRate < loseRate || minLoseRate > loseRate) {
log.info("#-updateRate::" + myRateInfo.getSiteId() + "::" + myRateInfo.getMemId()
+ "::vendorcode::" + myCode + "::loseRate::" + loseRate);
log.info("#-updateRate::" + myRateInfo.getSiteId() + "::" + myRateInfo.getMemId()
+ "::vendorcode::" + myCode + "::MaxLoseRate::" + maxLoseRate + "::MinLoseRate::"
+ minLoseRate);
String resultMsg = "루징:" + "::vendorcode::" + myCode + "::" + maxLoseRate + ", "
+ minLoseRate + " 사이값을 입력하세요";
log.info("#-updateRate::" + myRateInfo.getSiteId() + "::" + myRateInfo.getMemId()
+ "::vendorcode::" + myCode + "::resultMsg : " + resultMsg);
throw new ApiException("U031", resultMsg);
}
}
}
}
userService.getMemberRateUpdate(search, memberRate);
try {
HashMap<String, String> logParam = new HashMap<String, String>();
logParam.put("siteId", tokenInfo.getMid());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "save");
logParam.put("logoutYn", "");
logParam.put("logEndPoint", request.getRequestURI());
logParam.put("logName", "SuperApiUserController.updateRate() => UserService.getMemberRateUpdate()");
logParam.put("logDesc", memberRate.toString());
logParam.put("regId", tokenInfo.getMid());
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", "");
commonService.insertAdminlog(logParam);
} catch (Exception e) {
System.out.print(e.toString());
}
apiResponse.success();
} catch (ApiException e) {
log.debug(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,208 @@
package com.bb.admintop.controller;
import java.util.HashMap;
import java.util.List;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.SiteSearch;
import com.bb.service.CompService;
import com.bb.service.VendorService;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
@RestController
@Slf4j
@RequestMapping("/api/super/vendor")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class SuperApiVendorController {
private final JwtManager jwtManager;
private final CompService compService;
private final VendorService vendorService;
@ResponseBody
@PostMapping(value = "/nexusSkinInfo")
public ApiResponse nexusSkinInfo(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
final String LOG_PREFIX = "#-super::nexusSkinInfo::" + search.getSiteId() + "::::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
log.info(LOG_PREFIX + "Request::" + search.toString());
if (search.getSiteId() == null || search.getSiteId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
HashMap<String, Object> tripleSiteInfo = compService.getTripleCreditInfo(search.getSiteId());
List<HashMap<String, Object>> skinInfo = vendorService.getNexusSkinInfo(tripleSiteInfo);
for (HashMap<String, Object> item : skinInfo) {
long vendorIdx = (long) item.get("vendorIdx");
HashMap<String, Object> vendorInfo = new HashMap<>();
vendorInfo.put("vendorIdx", vendorIdx);
List<HashMap<String, Object>> skinList = vendorService.getNexusSkinList(vendorInfo);
item.put("skinList", skinList);
}
apiResponse.put("skinInfo", skinInfo);
apiResponse.success();
} catch (ApiException e) {
apiResponse = e.getApiResponse();
log.error(LOG_PREFIX + "ApiException::" + e.getApiResponse());
} catch (Exception e) {
log.error(LOG_PREFIX + "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
log.error(LOG_PREFIX + "Response::" + apiResponse.toString());
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/nexusSkinList")
public ApiResponse nexusSkinList(@RequestHeader String token, HttpServletRequest request,
@RequestBody JSONObject requestObj) throws Exception {
ApiResponse apiResponse = new ApiResponse();
final String LOG_PREFIX = "#-super::nexusSkinList::" + requestObj.getString("siteId") + "::::";
log.info(LOG_PREFIX + "Request::" + requestObj.toString());
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (requestObj.getString("siteId") == null || requestObj.getString("siteId").equals("")) {
throw new ApiException("1000", "accessDinied");
}
HashMap<String, Object> vendorInfo = new HashMap<>();
vendorInfo.put("vendorIdx", requestObj.getInt("vendorIdx"));
List<HashMap<String, Object>> skinList = vendorService.getNexusSkinList(vendorInfo);
apiResponse.put("skinList", skinList);
apiResponse.success();
} catch (ApiException e) {
apiResponse = e.getApiResponse();
log.error(LOG_PREFIX + "ApiException::" + e.getApiResponse());
} catch (Exception e) {
log.error(LOG_PREFIX + "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
log.error(LOG_PREFIX + "Response::" + apiResponse.toString());
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/nexusSkinUpdate")
public ApiResponse nexusSkinUpdate(@RequestHeader String token, HttpServletRequest request,
@RequestBody JSONObject requestObj) throws Exception {
ApiResponse apiResponse = new ApiResponse();
final String LOG_PREFIX = "#-super::nexusSkinUpdate::" + requestObj.getString("siteId") + "::::";
log.info(LOG_PREFIX + "Request::" + requestObj.toString());
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
if (requestObj.getString("siteId") == null || requestObj.getString("siteId").equals("")) {
throw new ApiException("1000", "accessDinied");
}
HashMap<String, Object> skinInfo = new HashMap<>();
skinInfo.put("siteIdx", requestObj.getInt("siteIdx"));
skinInfo.put("vendorIdx", requestObj.getInt("vendorIdx"));
skinInfo.put("nexusSkinType", requestObj.getString("nexusSkinType"));
int updResult = vendorService.nexusSkinUpdate(skinInfo);
log.info(LOG_PREFIX + "nexusSkinUpdate Result::" + updResult);
HashMap<String, Object> skin = vendorService.getNexusSkin(skinInfo);
skin.put("siteId", requestObj.getString("siteId"));
updResult = compService.updateVendoMinMax(skin);
log.info(LOG_PREFIX + "updateVendoMinMax Result::" + updResult);
apiResponse.success();
} catch (ApiException e) {
apiResponse = e.getApiResponse();
log.error(LOG_PREFIX + "ApiException::" + e.getApiResponse());
} catch (Exception e) {
log.error(LOG_PREFIX + "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
log.error(LOG_PREFIX + "Response::" + apiResponse.toString());
return apiResponse;
}
@ResponseBody
@PostMapping(value = "/list")
public ApiResponse vendorList(@RequestHeader String token, HttpServletRequest request,
@RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
final String LOG_PREFIX = "#-super::vendorList::" + search.getSiteId() + "::::";
try {
// Site site = getSiteByCheck(request);
if (token == null) {
throw new ApiException("1000", "accessDinied");
}
log.info(LOG_PREFIX + "Request::" + search.toString());
if (search.getSiteId() == null || search.getSiteId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
HashMap<String, Object> tripleSiteInfo = compService.getTripleCreditInfo(search.getSiteId());
List<HashMap<String, Object>> vendorList = vendorService.getTripleVendorList(tripleSiteInfo);
apiResponse.put("vendorList", vendorList);
apiResponse.success();
} catch (ApiException e) {
apiResponse = e.getApiResponse();
log.error(LOG_PREFIX + "ApiException::" + e.getApiResponse());
} catch (Exception e) {
log.error(LOG_PREFIX + "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
log.error(LOG_PREFIX + "Response::" + apiResponse.toString());
return apiResponse;
}
}

View File

@@ -0,0 +1,348 @@
package com.bb.common.controller;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.CodeSearch;
import com.bb.model.Member;
import com.bb.model.MemberCheckVo;
import com.bb.model.Site;
import com.bb.model.SiteCheckReq;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.CommonService;
import com.bb.service.CompService;
import com.bb.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/common")
@RequiredArgsConstructor
public class CommonApiController {
private final CommonService commonService;
private final UserService userService;
private final CompService compService;
private final JwtManager jwtManager;
public static String securityKey = "20cb7d92d7ac36900840a5fda92286ff";
@ResponseBody
@PostMapping(value="/code")
public ApiResponse codes(HttpServletRequest request, @RequestBody CodeSearch codesSearch) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
List<HashMap> codeList = commonService.getCodeList(codesSearch);
apiResponse.put("codes", codeList);
apiResponse.put("codesSearch",codesSearch);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/gameCodes")
public ApiResponse gameCodes(HttpServletRequest request, @RequestBody CodeSearch codesSearch) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
codesSearch.setSiteId(site.getSiteId());
List<HashMap> codeList = commonService.getGameCodes(codesSearch);
apiResponse.put("codes", codeList);
apiResponse.put("codesSearch",codesSearch);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/gameGroupCodes")
public ApiResponse gameGroupCodes(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
String siteId = site.getSiteId();
List<HashMap> codeList = commonService.getGameGroupCodes(siteId);
apiResponse.put("groupCodes", codeList);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/rateCategory")
public ApiResponse rateCategory(HttpServletRequest request, @RequestHeader String token) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
String siteId = tokenInfo.getSid();
List<HashMap> codeList = commonService.getRateCategory(siteId);
apiResponse.put("category", codeList);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/siteCheckInfo")
public ApiResponse siteCheckInfo(HttpServletRequest request, @RequestBody SiteCheckReq siteCheckReq) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
HashMap detail = commonService.siteCheckInfo(siteCheckReq);
if(detail == null) {
SiteSearch search = new SiteSearch();
search.setSiteId(siteCheckReq.getSiteId());
SiteOption option = commonService.getSiteSetting(search);
if(option.getSiteCheckYn().equals("Y")) {
detail = new HashMap<>();
detail.put("siteCheckIdx", 0);
detail.put("siteId", siteCheckReq.getSiteId());
detail.put("checkType", "site");
detail.put("checkTypeName", "사이트점검");
detail.put("checkCode", "site");
detail.put("checkCodeName", "사이트점검");
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long sDateL = System.currentTimeMillis();
long eDateL = sDateL + (1000 * 60 * 60 * 24);
String sDateStr = sdf.format(sDateL);
String eDateStr = sdf.format(eDateL);
detail.put("startDate", sDateStr);
detail.put("endDate", eDateStr);
detail.put("isEmergency", "Y");
detail.put("isCheckOff", "N");
detail.put("siteCheckStatus", "open");
detail.put("contents", "사이트 점검입니다. 조속히 마무리 하겠습니다. 감사합니다.");
}
}
apiResponse.put("siteCheckInfo", detail);
apiResponse.success();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/isOtpLogin")
public ApiResponse isOtpLogin(HttpServletRequest request, @RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
String adminOtpYN = compService.getAdminOtpUseYN(search.getSiteId());
apiResponse.put("useOtp", adminOtpYN);
apiResponse.success();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
} // Duplicate check
@ResponseBody
@PostMapping(value="/duplicateCheck")
public ApiResponse duplicateCheck(HttpServletRequest request, @RequestBody MemberCheckVo search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
Member checkMember = new Member();
checkMember.setSiteId(search.getSiteId());
checkMember.setMemId(search.getMemId());
checkMember.setMemNick(search.getMemNick());
if(search.getCheckType().equals("memId")) {
// ID Check
int idCheck = userService.idCheck(checkMember);
int result = idCheck;
//int idCheckByAdmin = userService.idCheckByAdmin(checkMember);
//int result = idCheck + idCheckByAdmin;
if(result == 0) {
apiResponse.put("checkType", "memId");
apiResponse.put("checkResult", "succ");
} else {
apiResponse.put("checkType", "memId");
apiResponse.put("checkResult", "duplicate");
}
} else if(search.getCheckType().equals("memNick")) {
// NickName Check
int nickNameCheck = userService.nameCheck(checkMember);
if(nickNameCheck == 0) {
apiResponse.put("checkType", "memNick");
apiResponse.put("checkResult", "succ");
} else {
apiResponse.put("checkType", "memNick");
apiResponse.put("checkResult", "duplicate");
}
} else {
apiResponse.fail();
}
apiResponse.success();
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@PostMapping(value="/test")
public ApiResponse test(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
String message = "박도울";
SecretKeySpec skeySpec = new SecretKeySpec(hexStringToByteArray(securityKey), "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(message.getBytes("EUC-KR"));
System.out.println(byteArrayToHex(encrypted));
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@PostMapping(value="/test2")
public ApiResponse test2(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
HashMap data = commonService.getSessionTransactionIsolation();
apiResponse.put("data", data);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@PostMapping(value="/test3")
public ApiResponse test3(HttpServletRequest request, @RequestBody String param) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
log.info("###-test3::::param::"+param);
String[] gameNameArr = param.split("\\|\\|");
String gameName = "Golden Wealth Baccarat";
boolean isMatchKeyword = false;
for(int i=0; i<gameNameArr.length; i++) {
if(gameName.equals(gameNameArr[i])) {
isMatchKeyword = true;
log.info("###-test3::::gameName::"+gameName+",keyword::"+gameNameArr[i]+"::is match");
break;
}
log.info("###-test3::::gameNameArr::"+gameNameArr[i]);
}
apiResponse.put("data", param);
} catch (Exception e) {
log.info(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
public static String byteArrayToHex(byte[] ba) {
if (ba == null || ba.length == 0) {
return null;
}
StringBuffer sb = new StringBuffer(ba.length * 2);
String hexNumber;
for (int x = 0; x < ba.length; x++) {
hexNumber = "0" + Integer.toHexString(0xff & ba[x]);
sb.append(hexNumber.substring(hexNumber.length() - 2));
}
return sb.toString();
}
//hex->byte 변환
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16));
}
return data;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,38 @@
package com.bb.config;
import java.io.IOException;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
import com.bb.util.StringUtils;
@Component
public class ApiKeyFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
String reqKey = req.getHeader("Authorization");
if (StringUtils.isEmpty(reqKey)) {
res.setStatus(HttpStatus.UNAUTHORIZED.value());
} else {
request.setAttribute("Authorization", reqKey);
chain.doFilter(request, response);
}
}
}

View File

@@ -0,0 +1,44 @@
package com.bb.config;
import java.util.concurrent.Executor;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@Configuration
@EnableAsync
public class AsyncConfig extends AsyncConfigurerSupport {
// 기본 실행 대기하는 Thread의 수
private final int CORE_POOL_SIZE = 20;
// 동시 동작하는 최대 Thread의 수
private final int MAX_POOL_SIZE = 100;
// MaxPoolSize 초과 요청에서 Thread 생성 요청 시, 해당 요청을 Queue에 저장하는데 이때 최대 수용 가능한 Queue의 수
private final int QUEUE_CAPACITY = 1000;
// maxPoolSize가 모두 사용되다가 idle(쓰레드 휴식상태)로 돌아갔을 때 종료하기까지 대기하는 걸리는 시간
private final int KEEP_ALIVE_SECONDS = 60;
// 생성되는 Thread 접두사 지정
private final String CUSTOM_THREAD_NAME_PREFIX = "BET-ASYNC-";
// 시스템을 종료(shutdown)할 때 queue에 남아있는 작업을 모두 완료한 후 종료 하도록 처리
private final boolean WAIT_FOR_TASKS_TO_COMPLETE_ON_SHOUTDOWN = true;
@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(CORE_POOL_SIZE);
executor.setMaxPoolSize(MAX_POOL_SIZE);
executor.setQueueCapacity(QUEUE_CAPACITY);
executor.setKeepAliveSeconds(KEEP_ALIVE_SECONDS);
executor.setThreadNamePrefix(CUSTOM_THREAD_NAME_PREFIX);
executor.setWaitForTasksToCompleteOnShutdown(WAIT_FOR_TASKS_TO_COMPLETE_ON_SHOUTDOWN);
executor.initialize();
return executor;
}
}

View File

@@ -0,0 +1,35 @@
package com.bb.config;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import javax.xml.transform.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
import org.springframework.stereotype.Component;
/**
* 로그인 실패 핸들러
*
* @author wedul
*
*/
@Component
public class AuthFailureHandler extends SimpleUrlAuthenticationFailureHandler {
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
AuthenticationException exception) throws IOException, ServletException {
ObjectMapper om = new ObjectMapper();
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
//response.getWriter().print(om.writeValueAsString("FAIL"));
//response.getWriter().flush();
response.sendRedirect(request.getContextPath() + "/login");
}
}

View File

@@ -0,0 +1,81 @@
package com.bb.config;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Repository;
import com.bb.front.ApiMemberController;
import com.bb.model.Site;
import com.bb.service.UserService;
import lombok.extern.slf4j.Slf4j;
/**
* Description: 스프링시큐리티 로그인 인증
* Path : 스프링시큐리티
* @FileName : AsRepairController.java
* @Version : 2019. 8. 27.
* @Author : LeeChunghan
* @Comment :
*/
@Slf4j
@Component("authProvider")
public class AuthProvider implements AuthenticationProvider {
@Autowired
private UserService userService;
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String id = authentication.getName();
String password = authentication.getCredentials().toString();
String encodePassword = passwordEncoder.encode(password);
log.info("[PWD:" + encodePassword + "]");
HashMap param = new HashMap();
param.put("siteId", id);
param.put("sitePass", password);
Site loginMember = userService.swaggerlogin(param);
boolean chkPassword = passwordEncoder.matches(password, loginMember.getSitePass());
log.info("[ADMIN chkPassword:" + chkPassword + "]");
if(!chkPassword) {
return null;
} else {
Site loginVO = new Site();
loginVO = loginMember;
List<GrantedAuthority> roles = new ArrayList<GrantedAuthority>();
roles.add(new SimpleGrantedAuthority("SITE"));
UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(id, password, roles);
result.setDetails(loginVO);
return result;
}
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}

View File

@@ -0,0 +1,106 @@
package com.bb.config;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import com.bb.dao.UserDao;
import com.bb.model.Site;
import com.bb.util.IPKit;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
import org.springframework.stereotype.Component;
/**
* Description: 스프링시큐리티 인증
* Path : 스프링시큐리티
* @FileName : AsRepairController.java
* @Version : 2019. 8. 27.
* @Author : LeeChunghan
* @Comment :
*/
@Component
public class AuthSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
//@Autowired
//private RedisSession redisSession;
//
@Autowired
private UserDao userDao;
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws ServletException, IOException {
ObjectMapper om = new ObjectMapper();
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().print(om.writeValueAsString("SUCCESS"));
HttpSession session = request.getSession(true);
Site login = (Site)authentication.getDetails();
// 채팅서버와 공유할 세션 정보
/*
OutLoginVO outLoginVO = new OutLoginVO();
outLoginVO.setDomain(login.getDomain());
outLoginVO.setName(login.getName());
outLoginVO.setId(login.getId());
login.setToken(redisSession.getToken(outLoginVO));
*/
// front 세션 저장
//session.setAttribute("user", login);
System.out.println(login.getSiteName());
if(login.getIp().equals(IPKit.getIpAddressByRequest(request)) || "0.0.0.0".equals(login.getIp()) || "".equals(login.getIp())) {
/*
HashMap logParam = new HashMap();
logParam.put("memId",login.getId());
logParam.put("logType", "LOGIN");
logParam.put("logName", "로그인");
logParam.put("logDesc", login.getId() +" "+ IPKit.getIpAddressByRequest(request) + " 로그인");
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("regId", login.getId());
logDao.insertLog(logParam);
*/
response.sendRedirect(request.getContextPath() + "/swagger-ui.html");
}else {
/*
HashMap logParam = new HashMap();
logParam.put("memId",login.getId());
logParam.put("logType", "LOGINFAIL");
logParam.put("logName", "IP제한 - ");
logParam.put("logDesc", login.getId() +" "+ IPKit.getIpAddressByRequest(request) + " 로그인 IP제한");
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("regId", login.getId());
logDao.insertLog(logParam);
response.sendRedirect(request.getContextPath() + "/Admin/logout");
*/
response.sendRedirect(request.getContextPath() + "/logout");
}
}}

View File

@@ -0,0 +1,23 @@
package com.bb.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsConfig implements WebMvcConfigurer{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOriginPatterns("*")
.allowedHeaders("*") // 어떤 헤더들을 허용할 것인지
.allowedMethods("*") // 어떤 메서드를 허용할 것인지 (GET, POST...)
.allowCredentials(true) // 쿠키 요청을 허용한다(다른 도메인 서버
.maxAge(86400);
WebMvcConfigurer.super.addCorsMappings(registry);
}
}

View File

@@ -0,0 +1,166 @@
package com.bb.config;
import java.util.Arrays;
import java.util.HashSet;
import javax.sql.DataSource;
import org.apache.ibatis.session.AutoMappingBehavior;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.type.JdbcType;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import com.zaxxer.hikari.HikariDataSource;
@Configuration
public class DbConfig {
/** DataSource OMS Master 생성 */
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource1")
public DataSource masterDataSource() {
return DataSourceBuilder.create()
.type(HikariDataSource.class)
.build();
}
/** DataSource OMS Slave 생성 */
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource2")
public DataSource slaveDataSource() {
return DataSourceBuilder.create()
.type(HikariDataSource.class)
.build();
}
/** DataSource Triple 생성 */
@Bean
@ConfigurationProperties(prefix = "spring.datasource3")
public DataSource tripleDataSource() {
return DataSourceBuilder.create()
.type(HikariDataSource.class)
.build();
}
/** sqlSessionFactory OMS Master 생성 */
@Bean
@Primary
public SqlSessionFactory sqlSessionFactoryMain(@Autowired @Qualifier("masterDataSource") DataSource dataSource) throws Exception {
// logger.info("SqlSessionFactory Main Start");
org.apache.ibatis.session.Configuration configuration = this.getMybatisConfig();
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setVfs(SpringBootVFS.class);
factoryBean.setConfiguration(configuration);
factoryBean.setTypeHandlersPackage("com.commax.tool.framework.mybatis.typehandler");
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resource = resolver.getResources("db1/**/*.xml");
factoryBean.setMapperLocations(resource);
return factoryBean.getObject();
}
/** sqlSessionFactory OMS Slave 생성 */
@Bean
@Primary
public SqlSessionFactory sqlSessionFactorySub(@Autowired @Qualifier("slaveDataSource") DataSource dataSource) throws Exception {
// logger.info("SqlSessionFactory Main Start");
org.apache.ibatis.session.Configuration configuration = this.getMybatisConfig();
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setVfs(SpringBootVFS.class);
factoryBean.setConfiguration(configuration);
factoryBean.setTypeHandlersPackage("com.commax.tool.framework.mybatis.typehandler");
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resource = resolver.getResources("db1/**/*.xml");
factoryBean.setMapperLocations(resource);
return factoryBean.getObject();
}
/** sqlSessionFactory Triple 생성 */
@Bean
public SqlSessionFactory sqlSessionFactoryTriple(@Autowired @Qualifier("tripleDataSource") DataSource dataSource) throws Exception {
// logger.info("SqlSessionFactory SUB Start");
org.apache.ibatis.session.Configuration configuration = this.getMybatisConfig();
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setVfs(SpringBootVFS.class);
factoryBean.setConfiguration(configuration);
factoryBean.setTypeHandlersPackage("com.commax.tool.framework.mybatis.typehandler");
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resource = resolver.getResources("db2/**/*.xml");
factoryBean.setMapperLocations(resource);
return factoryBean.getObject();
}
/** sqlSession OMS Master 생성 */
@Bean
@Primary
public SqlSession sqlSessionMain(@Autowired @Qualifier("sqlSessionFactoryMain") SqlSessionFactory factory) {
return new SqlSessionTemplate(factory);
}
/** sqlSession OMS Slave 생성 */
@Bean
public SqlSession sqlSessionSub(@Autowired @Qualifier("sqlSessionFactorySub") SqlSessionFactory factory) {
return new SqlSessionTemplate(factory);
}
/** sqlSession Triple 생성 */
@Bean
public SqlSession sqlSessionTriple(@Autowired @Qualifier("sqlSessionFactoryTriple") SqlSessionFactory factory) {
return new SqlSessionTemplate(factory);
}
/** MybatisConfig 설정정보 */
private org.apache.ibatis.session.Configuration getMybatisConfig() {
org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();
configuration.setCacheEnabled(true);
configuration.setLazyLoadingEnabled(false);
configuration.setAggressiveLazyLoading(false);
configuration.setMultipleResultSetsEnabled(true);
configuration.setUseColumnLabel(true);
configuration.setAutoMappingBehavior(AutoMappingBehavior.PARTIAL);
configuration.setDefaultExecutorType(ExecutorType.SIMPLE);
configuration.setDefaultStatementTimeout(25000);
configuration.setMapUnderscoreToCamelCase(true);
configuration.setJdbcTypeForNull(JdbcType.NVARCHAR);
configuration.setLazyLoadTriggerMethods(new HashSet<>(Arrays.asList("equals", "clone", "hashCode", "toString")));
configuration.setLogPrefix("[SQL]");
return configuration;
}
}

View File

@@ -0,0 +1,35 @@
package com.bb.config;
import java.io.IOException;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.ServletResponse;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@WebFilter("/api/*")
public class HttpEncryptionFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// log.info("HttpEncryptionFilter.doFilter() call...");
// TODO Auto-generated method stub
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
RequestDecryptWrapper requestDecryptWrapper = new RequestDecryptWrapper(httpServletRequest);
ResponseEncryptWrapper responseEncryptWrapper = new ResponseEncryptWrapper(httpServletResponse);
chain.doFilter(requestDecryptWrapper, responseEncryptWrapper);
httpServletResponse.getOutputStream().write(responseEncryptWrapper.encryptResponse());
}
}

View File

@@ -0,0 +1,35 @@
package com.bb.config;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Component
public class HttpInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// log.info("[preHandle] " + request.getRequestURI());
// log.info("[preHandle] " + request.toString());
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// log.info("[postHandle] " + request.getRequestURI());
// log.info("[postHandle] " + request.toString());
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex) throws Exception {
// log.info("[afterCompletion] " + request.getRequestURI());
// log.info("[afterCompletion] " + request.toString());
}
}

View File

@@ -0,0 +1,17 @@
package com.bb.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HttpInterceptor())
.addPathPatterns("/api/**/**/**/**")
.excludePathPatterns("/api/login", "/api/signUp"); // 해당 경로는 인터셉터가 가로채지 않는다.
}
}

View File

@@ -0,0 +1,55 @@
package com.bb.config;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.enums.SecuritySchemeIn;
import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.security.SecurityScheme;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.security.SecurityRequirement;
@Configuration
@OpenAPIDefinition(info = @Info(title = "My API", version = "v1"))
@SecurityScheme(
name = "Authorization",
// type = SecuritySchemeType.HTTP,
scheme = "basic", type = SecuritySchemeType.APIKEY , in=SecuritySchemeIn.HEADER
)
public class OpenapiConfig {
@Bean
public GroupedOpenApi publicOpenAPI( ) {
return GroupedOpenApi
.builder()
.group("front")
.packagesToScan("com.bb.front")
.build();
}
@Bean
public GroupedOpenApi adminAPI( ) {
return GroupedOpenApi
.builder()
.group("admin")
.packagesToScan("com.bb.admin")
.build();
}
@Bean
public GroupedOpenApi commonAPI( ) {
return GroupedOpenApi
.builder()
.group("common")
.packagesToScan("com.bb.common")
.build();
}
}

View File

@@ -0,0 +1,86 @@
package com.bb.config;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import jakarta.servlet.ReadListener;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.io.IOUtils;
import org.springframework.util.ObjectUtils;
import com.bb.util.AESUtil;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class RequestDecryptWrapper extends HttpServletRequestWrapper {
private final Charset encoding;
private String decodingBody;
private byte[] rawData;
public RequestDecryptWrapper(HttpServletRequest request) {
super(request);
String charEncoding = request.getCharacterEncoding();
this.encoding = ObjectUtils.isEmpty(charEncoding) ? StandardCharsets.UTF_8 : Charset.forName(charEncoding);
try {
InputStream inputStream = request.getInputStream();
rawData = IOUtils.toByteArray(inputStream);
if (ObjectUtils.isEmpty(rawData)) {
return;
}
AESUtil aesUtil = new AESUtil();
this.decodingBody = aesUtil.decrypt(new String(rawData, StandardCharsets.UTF_8));
} catch (IOException e) {
log.error(e.getMessage());
}
}
@Override
public ServletInputStream getInputStream() {
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(decodingBody == null ? "".getBytes(encoding) : decodingBody.getBytes(encoding));
return new ServletInputStream() {
@Override
public boolean isFinished() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isReady() {
// TODO Auto-generated method stub
return false;
}
@Override
public void setReadListener(ReadListener listener) {
// TODO Auto-generated method stub
}
@Override
public int read() throws IOException {
// TODO Auto-generated method stub
return byteArrayInputStream.read();
}
};
}
@Override
public BufferedReader getReader() {
return new BufferedReader(new InputStreamReader(this.getInputStream()));
}
}

View File

@@ -0,0 +1,54 @@
package com.bb.config;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.WriteListener;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponseWrapper;
import com.bb.util.AESUtil;
public class ResponseEncryptWrapper extends HttpServletResponseWrapper {
private final ByteArrayOutputStream output;
public ResponseEncryptWrapper(HttpServletResponse response) {
super(response);
// TODO Auto-generated constructor stub
output = new ByteArrayOutputStream();
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
return new ServletOutputStream() {
@Override
public boolean isReady() {
// TODO Auto-generated method stub
return false;
}
@Override
public void setWriteListener(WriteListener listener) {
// TODO Auto-generated method stub
}
@Override
public void write(int b) throws IOException {
// TODO Auto-generated method stub
output.write(b);
}
};
}
public byte[] encryptResponse() {
String responseMessage = new String(output.toByteArray(), StandardCharsets.UTF_8);
AESUtil aesUtil = new AESUtil();
return aesUtil.encrypt(responseMessage).getBytes(StandardCharsets.UTF_8);
}
}

View File

@@ -0,0 +1,46 @@
package com.bb.config;
import java.util.concurrent.TimeUnit;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.client5.http.config.ConnectionConfig;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder;
import org.apache.hc.client5.http.io.HttpClientConnectionManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
@Configuration
public class RestTemplateConfig {
static final int READ_TIMEOUT = 1500;
static final int CONN_TIMEOUT = 3000;
@Bean
public RestTemplate restTemplate() {
var factory = new HttpComponentsClientHttpRequestFactory();
factory.setHttpClient(createHttpClient());
return new RestTemplate(factory);
}
private HttpClient createHttpClient() {
return org.apache.hc.client5.http.impl.classic
.HttpClientBuilder.create()
.setConnectionManager(createHttpClientConnectionManager())
.build();
}
private HttpClientConnectionManager createHttpClientConnectionManager() {
return PoolingHttpClientConnectionManagerBuilder.create()
.setMaxConnTotal(4096) //최대 오픈되는 커넥션 수
.setMaxConnPerRoute(200) //IP, 포트 1쌍에 대해 수행할 커넥션 수
.setDefaultConnectionConfig(ConnectionConfig.custom()
.setSocketTimeout(READ_TIMEOUT, TimeUnit.MILLISECONDS)
.setConnectTimeout(CONN_TIMEOUT, TimeUnit.MILLISECONDS)
.build())
.build();
}
}

View File

@@ -0,0 +1,116 @@
package com.bb.config;
import java.util.Arrays;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
@Configuration
@EnableMethodSecurity(securedEnabled = true)
@ComponentScan(basePackages = {"com.bb.*"})
public class SecurityConfig {
@Autowired
@Lazy
AuthProvider authProvider;
@Autowired
AuthFailureHandler authFailureHandler;
@Autowired
AuthSuccessHandler authSuccessHandler;
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.cors().configurationSource(corsConfigurationSource())
.and().csrf().disable()
.authorizeHttpRequests(auth -> auth
.requestMatchers(
"/v3/api-docs",
"/swagger-resources/**",
"/webjars/**",
"/swagger/**",
"/favicon.ico",
"/html/**",
"/resources/**",
"/triple/**",
"/triple",
"/excb/**",
"/excb",
"/passim/**",
"/passim",
"/websocket",
"/websocket/**",
"/test",
"/test/**"
).permitAll()
.requestMatchers("/api/**", "/actuator/**", "/triple/**", "/websocket", "/websocket/**", "/test/**", "/excb/**", "/passim/**").permitAll()
.anyRequest().authenticated()
)
.formLogin(form -> form
.loginProcessingUrl("/authenticate")
.defaultSuccessUrl("/swagger-ui.html")
.failureHandler(authFailureHandler)
.successHandler(authSuccessHandler)
.usernameParameter("id")
.passwordParameter("pw")
)
.logout(logout -> logout
.logoutRequestMatcher(new AntPathRequestMatcher("/logoutProc"))
.invalidateHttpSession(true)
)
.authenticationProvider(authProvider)
.headers(headers -> headers.frameOptions().disable());
return http.build();
}
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public FilterRegistrationBean<ApiKeyFilter> filterRegistrationBean() {
FilterRegistrationBean<ApiKeyFilter> registrationBean = new FilterRegistrationBean<>();
ApiKeyFilter customURLFilter = new ApiKeyFilter();
registrationBean.setFilter(customURLFilter);
registrationBean.addUrlPatterns("/api/login");
registrationBean.setOrder(1);
return registrationBean;
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
final CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOriginPatterns(Arrays.asList("*"));
configuration.addAllowedHeader("*");
configuration.addAllowedMethod("*");
configuration.setAllowCredentials(true);
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
@Bean
public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
return authenticationConfiguration.getAuthenticationManager();
}
}

View File

@@ -0,0 +1,189 @@
package com.bb.config;
import java.time.Duration;
import javax.net.ssl.SSLException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.ExchangeFilterFunction;
import org.springframework.web.reactive.function.client.WebClient;
import io.netty.channel.ChannelOption;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.SslProvider;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.handler.timeout.ReadTimeoutHandler;
import io.netty.handler.timeout.WriteTimeoutHandler;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
import reactor.netty.http.client.HttpClient;
import reactor.netty.tcp.TcpClient;
@Slf4j
@Configuration
public class WebClientConfig {
@Bean
public WebClient webClient() {
return WebClient.builder()
.filter(logRequest())
.filter(logResponse())
.build();
}
@Bean
public WebClient webClientTimeout_1500() {
HttpClient httpClient = HttpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1500);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.filter(logRequest())
.filter(logResponse())
.build();
}
@Bean
public WebClient webClientTimeout_3000() {
HttpClient httpClient = HttpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 3000);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.filter(logRequest())
.filter(logResponse())
.build();
}
@Bean
public WebClient secureTls12WebClient() throws SSLException {
// TLS 1.2 강제
SslContext sslContext = SslContextBuilder.forClient()
.protocols("TLSv1.2")
.build();
// Timeout 적용 (Spring Boot 3.0.0 호환 방식)
TcpClient tcpClient = TcpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000) // 연결 timeout (5초)
.doOnConnected(conn -> conn
.addHandlerLast(new ReadTimeoutHandler(10)) // 읽기 timeout 10초
.addHandlerLast(new WriteTimeoutHandler(10)) // 쓰기 timeout 10초
)
.secure(ssl -> ssl.sslContext(sslContext));
HttpClient httpClient = HttpClient.from(tcpClient);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.defaultHeader("Content-Type", "application/json")
.defaultHeader("Accept", "application/json")
.defaultHeader("Accept-Charset", "utf-8")
.defaultHeader("User-Agent", "PostmanRuntime/7.28.4")
.filter(logRequest2())
.filter(logResponse2())
.build();
}
@Bean
public WebClient webClientOpenSslFull() throws SSLException {
SslContext sslContext = SslContextBuilder.forClient()
.sslProvider(SslProvider.OPENSSL)
.protocols("TLSv1.3", "TLSv1.2")
.build();
TcpClient tcpClient = TcpClient.create()
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000)
.doOnConnected(conn -> conn.addHandlerLast(new ReadTimeoutHandler(10)))
.secure(spec -> spec.sslContext(sslContext));
HttpClient httpClient = HttpClient.from(tcpClient);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.defaultHeader("User-Agent", "PostmanRuntime/7.28.4")
.defaultHeader("Content-Type", "application/json")
.filter(logRequest2())
.filter(logResponse2())
.build();
}
@Bean
public WebClient insecureTrustAllWebClient() throws SSLException {
// Netty용 SSLContext 생성 (Trust 모든 인증서)
SslContext sslContext = SslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.protocols("TLSv1.2")
.build();
HttpClient httpClient = HttpClient.create()
.secure(spec -> spec.sslContext(sslContext))
.responseTimeout(Duration.ofSeconds(10))
.option(io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
}
@Bean
public WebClient insecureJdkTlsWebClient() throws SSLException {
// JDK SSLContext 사용, 인증서 검증 무시
SslContext sslContext = SslContextBuilder.forClient()
.sslProvider(SslProvider.JDK) // JDK SSLContext 사용 강제
.trustManager(InsecureTrustManagerFactory.INSTANCE) // 인증서 무시
.protocols("TLSv1.2") // TLS 1.2 강제
.build();
HttpClient httpClient = HttpClient.create()
.secure(spec -> spec.sslContext(sslContext))
.responseTimeout(Duration.ofSeconds(10))
.option(io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS, 5000);
return WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
}
/** Request 로깅 **/
private ExchangeFilterFunction logRequest2() {
return ExchangeFilterFunction.ofRequestProcessor(request -> {
System.out.println("### WebClient Request: " + request.method() + " " + request.url());
return reactor.core.publisher.Mono.just(request);
});
}
/** Response 로깅 **/
private ExchangeFilterFunction logResponse2() {
return ExchangeFilterFunction.ofResponseProcessor(response -> {
System.out.println("### WebClient Response Status: " + response.statusCode());
return reactor.core.publisher.Mono.just(response);
});
}
private ExchangeFilterFunction logRequest() {
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
// log.info("Request: {} {}", clientRequest.method(), clientRequest.url());
// clientRequest.headers().forEach((name, values) -> values.forEach(value -> log.info("{}={}", name, value)));
return Mono.just(clientRequest);
});
}
private ExchangeFilterFunction logResponse() {
return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
// log.info("Response Status: {}", clientResponse.statusCode());
// clientResponse.headers().asHttpHeaders().forEach((name, values) -> values.forEach(value -> log.info("{}={}", name, value)));
return Mono.just(clientResponse);
});
}
}

View File

@@ -0,0 +1,29 @@
package com.bb.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket").setAllowedOriginPatterns("*").withSockJS();
}
@Override
public void configureClientInboundChannel(ChannelRegistration registration) {
registration.interceptors(new WebSocketInterceptor());
}
}

View File

@@ -0,0 +1,32 @@
package com.bb.config;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.stereotype.Component;
@Component
public class WebSocketInterceptor implements ChannelInterceptor {
private final Set<String> sessionSet = new HashSet<>();
@Override
public Message<?> preSend(Message<?> message, MessageChannel channel) {
String simpMessageType = String.valueOf(message.getHeaders().get("simpMessageType"));
if (StringUtils.equals(simpMessageType, "CONNECT")) {
String simpSessionId = String.valueOf(message.getHeaders().get("simpSessionId"));
sessionSet.add(simpSessionId);
} else if (StringUtils.equals(simpMessageType, "DISCONNECT")) {
String simpSessionId = String.valueOf(message.getHeaders().get("simpSessionId"));
sessionSet.remove(simpSessionId);
}
int uniqueJoinSessionCount = sessionSet.size();
// System.out.println("connectCnt: " + uniqueJoinSessionCount);
return message;
}
}

View File

@@ -0,0 +1,35 @@
package com.bb.controller;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bb.model.PassimVo;
import com.bb.service.PassimService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@EnableScheduling
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/passim")
public class CallbackPassimController {
private final PassimService passimService;
@PostMapping(value="/notification")
public ResponseEntity<String> notificationWebHook(HttpServletRequest request, @RequestBody PassimVo webhook) {
// 멱등 처리: txHash 기준
// TODO: 비즈니스 처리 (포인트 충전 등)
return ResponseEntity.ok("OK");
}
}

View File

@@ -0,0 +1,443 @@
package com.bb.controller;
import java.util.HashMap;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bb.model.Member;
import com.bb.model.RvHoldemResponse;
import com.bb.model.RvHoldemVO;
import com.bb.service.AsyncBetService;
import com.bb.service.BetService;
import com.bb.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
@Slf4j
@EnableScheduling
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/excb/rvholdem")
public class CallbackRvHoldemController {
private final UserService userService;
private final BetService betService;
private final AsyncBetService asyncService;
/**
* APICode
* FAILED = 0,
* INVALID_ARGUMENT = -4,
* UNKNOWN_ERROR = -3,
* INVALID_PK = -2,
* UNAUTH = -1,
* SUCCESS = 1
*/
@PostMapping(value="/ping")
public ResponseEntity<RvHoldemResponse> ping(HttpServletRequest request) throws Exception {
RvHoldemResponse response = new RvHoldemResponse();
response.setCode(1);
HttpStatus httpStatus = HttpStatus.OK;
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
@PostMapping(value="/user/balance")
public ResponseEntity<RvHoldemResponse> userBalance(HttpServletRequest request, @RequestBody JSONObject requestBody) {
RvHoldemResponse response = new RvHoldemResponse();
HttpStatus httpStatus = HttpStatus.OK;
String apiKey = request.getHeader("apikey").toString();
String uid = requestBody.getString("uid");
String cbUid = requestBody.getString("cb_uid");
int siteIdx = Integer.parseInt(uid.substring(0, 3), 16);
String memberId = uid.substring(3, uid.length());
final String LOG_PREFIX = "#-CB::RV_HOLDEM::"+uid+"::"+cbUid+"::userBalance:::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
HashMap<String, String> checkInfo = userService.getRvHoldemCheckInfo(uid);
if(checkInfo == null) {
log.error(LOG_PREFIX + "UNAUTH::NOT_FOUND_USER");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(!checkInfo.get("apiKey").toString().equals(apiKey)) {
log.error(LOG_PREFIX + "UNAUTH::INVALID_APIKEY");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
int balance = betService.getCurBalance(memInfo);
response.setCode(1);
response.setPayload(balance);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
@PostMapping(value="/game/buyin")
public ResponseEntity<RvHoldemResponse> gameBuyIn(HttpServletRequest request, @RequestBody JSONObject requestBody) {
RvHoldemResponse response = new RvHoldemResponse();
HttpStatus httpStatus = HttpStatus.OK;
String apiKey = request.getHeader("apikey").toString();
String uid = requestBody.getString("uid");
String cbUid = requestBody.getString("cb_uid");
int siteIdx = Integer.parseInt(uid.substring(0, 3), 16);
String memberId = uid.substring(3, uid.length());
final String LOG_PREFIX = "#-CB::RV_HOLDEM::"+uid+"::"+cbUid+"::gameBuyIn:::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
HashMap<String, String> checkInfo = userService.getRvHoldemCheckInfo(uid);
if(checkInfo == null) {
log.error(LOG_PREFIX + "UNAUTH::NOT_FOUND_USER");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(!checkInfo.get("apiKey").toString().equals(apiKey)) {
log.error(LOG_PREFIX + "UNAUTH::INVALID_APIKEY");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
HashMap memberVo = userService.getMemberMap(memInfo);
// Insert rvholdem_callback_log
RvHoldemVO rvParam = RvHoldemVO.fromJSONObject(LOG_PREFIX, requestBody);
rvParam.setSiteId(memberVo.get("siteId").toString());
rvParam.setMemId(memberId);
rvParam.setCallbackType("buyin");
log.info(LOG_PREFIX+ "rvParam : " + rvParam.toString());
int balance = Integer.parseInt(memberVo.get("cashAmt").toString());
int amount = rvParam.getAmount();
rvParam.setBfBalance(balance);
rvParam.setAfBalance(balance+amount);
int cbIdx = 0;
try {
cbIdx = betService.insertRvhCallbackLog(rvParam);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX + "Duplicate cb_uid!!! " + de.getMessage(), de);
response.setCode(-2);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(cbIdx > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.cashProc(LOG_PREFIX, rvParam);
} else {
log.error(LOG_PREFIX + "INSERT_CALLBACK_LOG_FAIL");
response.setCode(-3);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
response.setCode(1);
response.setPayload(balance+amount);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
@PostMapping(value="/game/rebuyin")
public ResponseEntity<RvHoldemResponse> gameReBuyIn(HttpServletRequest request, @RequestBody JSONObject requestBody) {
RvHoldemResponse response = new RvHoldemResponse();
HttpStatus httpStatus = HttpStatus.OK;
String apiKey = request.getHeader("apikey").toString();
String uid = requestBody.getString("uid");
String cbUid = requestBody.getString("cb_uid");
int siteIdx = Integer.parseInt(uid.substring(0, 3), 16);
String memberId = uid.substring(3, uid.length());
final String LOG_PREFIX = "#-CB::RV_HOLDEM::"+uid+"::"+cbUid+"::gameReBuyIn:::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
HashMap<String, String> checkInfo = userService.getRvHoldemCheckInfo(uid);
if(checkInfo == null) {
log.error(LOG_PREFIX + "UNAUTH::NOT_FOUND_USER");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(!checkInfo.get("apiKey").toString().equals(apiKey)) {
log.error(LOG_PREFIX + "UNAUTH::INVALID_APIKEY");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
HashMap memberVo = userService.getMemberMap(memInfo);
// Insert rvholdem_callback_log
RvHoldemVO rvParam = RvHoldemVO.fromJSONObject(LOG_PREFIX, requestBody);
rvParam.setSiteId(memberVo.get("siteId").toString());
rvParam.setMemId(memberId);
rvParam.setCallbackType("rebuyin");
log.info(LOG_PREFIX+ "rvParam : " + rvParam.toString());
int balance = Integer.parseInt(memberVo.get("cashAmt").toString());
int amount = rvParam.getAmount();
rvParam.setBfBalance(balance);
rvParam.setAfBalance(balance+amount);
int cbIdx = 0;
try {
cbIdx = betService.insertRvhCallbackLog(rvParam);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX + "Duplicate cb_uid!!! " + de.getMessage(), de);
response.setCode(-2);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(cbIdx > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.cashProc(LOG_PREFIX, rvParam);
} else {
log.error(LOG_PREFIX + "INSERT_CALLBACK_LOG_FAIL");
response.setCode(-3);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
response.setCode(1);
response.setPayload(balance+amount);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
@PostMapping(value="/game/win")
public ResponseEntity<RvHoldemResponse> gameWin(HttpServletRequest request, @RequestBody JSONObject requestBody) {
RvHoldemResponse response = new RvHoldemResponse();
HttpStatus httpStatus = HttpStatus.OK;
String apiKey = request.getHeader("apikey").toString();
String uid = requestBody.getString("uid");
String cbUid = requestBody.getString("cb_uid");
int siteIdx = Integer.parseInt(uid.substring(0, 3), 16);
String memberId = uid.substring(3, uid.length());
final String LOG_PREFIX = "#-CB::RV_HOLDEM::"+uid+"::"+cbUid+"::gameWin:::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
HashMap<String, String> checkInfo = userService.getRvHoldemCheckInfo(uid);
if(checkInfo == null) {
log.error(LOG_PREFIX + "UNAUTH::NOT_FOUND_USER");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(!checkInfo.get("apiKey").toString().equals(apiKey)) {
log.error(LOG_PREFIX + "UNAUTH::INVALID_APIKEY");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
HashMap memberVo = userService.getMemberMap(memInfo);
// Insert rvholdem_callback_log
RvHoldemVO rvParam = RvHoldemVO.fromJSONObject(LOG_PREFIX, requestBody);
rvParam.setSiteId(memberVo.get("siteId").toString());
rvParam.setMemId(memberId);
rvParam.setCallbackType("win");
log.info(LOG_PREFIX+ "rvParam : " + rvParam.toString());
int balance = Integer.parseInt(memberVo.get("cashAmt").toString());
int amount = rvParam.getAmount();
rvParam.setBfBalance(balance);
rvParam.setAfBalance(balance+amount);
int cbIdx = 0;
try {
cbIdx = betService.insertRvhCallbackLog(rvParam);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX + "Duplicate cb_uid!!! " + de.getMessage(), de);
response.setCode(-2);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(cbIdx > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.cashProc(LOG_PREFIX, rvParam);
} else {
log.error(LOG_PREFIX + "INSERT_CALLBACK_LOG_FAIL");
response.setCode(-3);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
response.setCode(1);
response.setPayload(balance+amount);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
@PostMapping(value="/game/leave")
public ResponseEntity<RvHoldemResponse> gameLeave(HttpServletRequest request, @RequestBody JSONObject requestBody) throws Exception {
RvHoldemResponse response = new RvHoldemResponse();
HttpStatus httpStatus = HttpStatus.OK;
String apiKey = request.getHeader("apikey").toString();
String uid = requestBody.getString("uid");
String cbUid = requestBody.getString("cb_uid");
int siteIdx = Integer.parseInt(uid.substring(0, 3), 16);
String memberId = uid.substring(3, uid.length());
final String LOG_PREFIX = "#-CB::RV_HOLDEM::"+uid+"::"+cbUid+"::gameLeave:::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
HashMap<String, String> checkInfo = userService.getRvHoldemCheckInfo(uid);
if(checkInfo == null) {
log.error(LOG_PREFIX + "UNAUTH::NOT_FOUND_USER");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(!checkInfo.get("apiKey").toString().equals(apiKey)) {
log.error(LOG_PREFIX + "UNAUTH::INVALID_APIKEY");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
HashMap memberVo = userService.getMemberMap(memInfo);
// Insert rvholdem_callback_log
RvHoldemVO rvParam = RvHoldemVO.fromJSONObject(LOG_PREFIX, requestBody);
rvParam.setSiteId(memberVo.get("siteId").toString());
rvParam.setMemId(memberId);
rvParam.setCallbackType("leave");
log.info(LOG_PREFIX+ "rvParam : " + rvParam.toString());
int balance = Integer.parseInt(memberVo.get("cashAmt").toString());
int amount = rvParam.getAmount();
rvParam.setBfBalance(balance);
rvParam.setAfBalance(balance+amount);
int cbIdx = 0;
try {
cbIdx = betService.insertRvhCallbackLog(rvParam);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX + "Duplicate cb_uid!!! " + de.getMessage(), de);
response.setCode(-2);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(cbIdx > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.cashProc(LOG_PREFIX, rvParam);
} else {
log.error(LOG_PREFIX + "INSERT_CALLBACK_LOG_FAIL");
response.setCode(-3);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
response.setCode(1);
response.setPayload(balance+amount);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
@PostMapping(value="/game/result")
public ResponseEntity<RvHoldemResponse> gameResult(HttpServletRequest request, @RequestBody JSONObject requestBody) throws Exception {
RvHoldemResponse response = new RvHoldemResponse();
HttpStatus httpStatus = HttpStatus.OK;
String apiKey = request.getHeader("apikey").toString();
String uid = requestBody.getString("uid");
String cbUid = requestBody.getString("cb_uid");
int siteIdx = Integer.parseInt(uid.substring(0, 3), 16);
String memberId = uid.substring(3, uid.length());
final String LOG_PREFIX = "#-CB::RV_HOLDEM::"+uid+"::"+cbUid+"::gameResult:::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
HashMap<String, String> checkInfo = userService.getRvHoldemCheckInfo(uid);
if(checkInfo == null) {
log.error(LOG_PREFIX + "UNAUTH::NOT_FOUND_USER");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
if(!checkInfo.get("apiKey").toString().equals(apiKey)) {
log.error(LOG_PREFIX + "UNAUTH::INVALID_APIKEY");
response.setCode(-1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
response.setCode(1);
return new ResponseEntity<RvHoldemResponse>(response, httpStatus);
}
}

View File

@@ -0,0 +1,997 @@
package com.bb.controller;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bb.model.Member;
import com.bb.model.TripleResponse;
import com.bb.model.TripleVO;
import com.bb.service.AsyncBetService;
import com.bb.service.BetService;
import com.bb.service.SportService;
import com.bb.service.UserService;
import com.google.gson.Gson;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
@Slf4j
@EnableScheduling
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/triple")
public class CallbackTripleController {
private final UserService userService;
private final BetService betService;
private final SportService sportService;
private final AsyncBetService asyncService;
@PostMapping(value="/balance")
public ResponseEntity<TripleResponse> balance(HttpServletRequest request, @RequestBody JSONObject requestBody) throws Exception {
long startTime = System.currentTimeMillis();
TripleResponse response = new TripleResponse();
HttpStatus httpStatus = null;
String tripleUserId = requestBody.getString("userId");
int siteIdx = Integer.parseInt(tripleUserId.substring(0, 3), 16);
String memberId = tripleUserId.substring(3, tripleUserId.length());
final String LOG_PREFIX = "#-CB::TRIPLE::balance::"+requestBody.getString("userId")+"::"+requestBody.getString("requestAt")+":::";
log.info(LOG_PREFIX+ "Request Body : " + requestBody.toString());
try {
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
int balance = betService.getCurBalance(memInfo);
response.setResult_code(0);
response.setBalance(balance);
httpStatus = HttpStatus.OK;
} catch(Exception e) {
response.setResult_code(9999);
response.setError_msg("UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(LOG_PREFIX+ "Exception : "+e.getMessage());
}
log.info(LOG_PREFIX+ "Response Data : " + response.toString());
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -2.0) {
log.error(LOG_PREFIX+ "[### balance diffTime : " + String.format("%.3f", diffTime) + " ###]");
}
return new ResponseEntity<TripleResponse>(response, httpStatus);
}
@PostMapping(value="/changebalance")
public ResponseEntity<TripleResponse> changeBalance(HttpServletRequest request, @RequestBody JSONObject transaction) throws Exception {
long startTime = System.currentTimeMillis();
ResponseEntity<TripleResponse> resEntity = null;
HttpStatus httpStatus = null;
String tripleUserId = transaction.getString("userId");
int siteIdx = Integer.parseInt(tripleUserId.substring(0, 3), 16);
String memberId = tripleUserId.substring(3, tripleUserId.length());
final String LOG_PREFIX = "#-CB::TRIPLE::changeBalance::"+transaction.getString("userId")+"::"+transaction.getString("tranId")+":::";
log.info(LOG_PREFIX+ "Request Body : " + transaction.toString());
try {
String transactionType = transaction.getString("tranType");
int isCancel = transaction.getInt("isCancel");
int isBonus = transaction.getInt("isBonus");
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
if(!transaction.has("requestAt") || transaction.getString("requestAt").equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
transaction.put("requestAt", nDateStr);
}
int vendorIdx = transaction.getInt("vendorIdx");
if(vendorIdx == 83 || vendorIdx == 84) {
// 스포츠 배팅
TripleVO tripleVO = new Gson().fromJson(transaction.toString(), TripleVO.class);
net.sf.json.JSONObject responseObj = sportService.betProc(memInfo, tripleVO);
TripleResponse response = new Gson().fromJson(responseObj.toString(), TripleResponse.class);
if(responseObj.getString("result_code").equals("0") ||
responseObj.getString("result_code").equals("70") ||
responseObj.getString("result_code").equals("80") ||
responseObj.getString("result_code").equals("98") ||
responseObj.getString("result_code").equals("99") ||
responseObj.getString("result_code").equals("44") ||
responseObj.getString("result_code").equals("1005") ||
responseObj.getString("result_code").equals("3333") ) {
// 0 70 80 98 99
httpStatus = HttpStatus.OK;
} else {
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
}
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
} else {
if(transactionType.equals("debit") && isCancel == 0) {
log.info(LOG_PREFIX+ "callBet() =================");
resEntity = callBet(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit") && isCancel == 0 && isBonus == 0) {
log.info(LOG_PREFIX+ "callWin() =================");
resEntity = callWin(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit") && isCancel == 1) {
log.info(LOG_PREFIX+ "callCancel() =================");
resEntity = callCancel(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit") && isBonus == 1) {
log.info(LOG_PREFIX+ "callBonus() =================");
resEntity = callBonus(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("adjust")) {
// 해당 타입은 "조정" 이라는 의미로, 해당 내역은 이미 처리된 내역에 대한 조정을 의미합니다.
// amount 값은 + (재지급), - (오지급 회수)가 될 수 있습니다.
log.info(LOG_PREFIX+ "callAdjust() =================");
resEntity = callAdjust(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("tip")) {
log.info(LOG_PREFIX+ "callTip() =================");
resEntity = callTip(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit_wait")) {
log.info(LOG_PREFIX+ "callCreditWait() =================");
int balance = betService.getCurBalance(memInfo);
TripleResponse response = new TripleResponse();
response.setResult_code(0);
response.setBalance(balance);
httpStatus = HttpStatus.OK;
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
} else {
log.error(LOG_PREFIX+ "unknown_transaction_type");
TripleResponse response = new TripleResponse();
response.setResult_code(8888);
response.setError_msg("UNKNOWN_TRAN_TYPE");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
}
}
} catch(Exception e) {
log.error(LOG_PREFIX+ "Exception : "+e.getMessage());
TripleResponse response = new TripleResponse();
response.setResult_code(9999);
response.setError_msg("UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
}
log.info(LOG_PREFIX+ "Response Data : " + resEntity.toString());
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -2.0) {
log.error(LOG_PREFIX+ "[### balance diffTime : " + String.format("%.3f", diffTime) + " ###]");
}
return resEntity;
}
@PostMapping(value="/changebalance/slot")
public ResponseEntity<TripleResponse> changeBalanceSlot(HttpServletRequest request, @RequestBody JSONObject transaction) throws Exception {
long startTime = System.currentTimeMillis();
ResponseEntity<TripleResponse> resEntity = null;
HttpStatus httpStatus = null;
String tripleUserId = transaction.getString("userId");
int siteIdx = Integer.parseInt(tripleUserId.substring(0, 3), 16);
String memberId = tripleUserId.substring(3, tripleUserId.length());
final String LOG_PREFIX = "#-CB::TRIPLE::changeBalanceSlot::"+transaction.getString("userId")+"::"+transaction.getString("tranId")+":::";
log.info(LOG_PREFIX+ "Request Body : " + transaction.toString());
try {
String transactionType = transaction.getString("tranType");
int isCancel = transaction.getInt("isCancel");
int isBonus = transaction.getInt("isBonus");
Member memInfo = new Member();
memInfo.setSiteIdx(siteIdx);
memInfo.setMemId(memberId);
if(!transaction.has("requestAt") || transaction.getString("requestAt").equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
transaction.put("requestAt", nDateStr);
}
if(transactionType.equals("debit") && isCancel == 0) {
log.info(LOG_PREFIX+ "callBet() =================");
resEntity = callBetSlot(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit") && isCancel == 0 && isBonus == 0) {
log.info(LOG_PREFIX+ "callWin() =================");
resEntity = callWinSlot(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit") && isCancel == 1) {
log.info(LOG_PREFIX+ "callCancel() =================");
resEntity = callCancel(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit") && isBonus == 1) {
log.info(LOG_PREFIX+ "callBonus() =================");
resEntity = callBonus(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("adjust")) {
// 해당 타입은 "조정" 이라는 의미로, 해당 내역은 이미 처리된 내역에 대한 조정을 의미합니다.
// amount 값은 + (재지급), - (오지급 회수)가 될 수 있습니다.
log.info(LOG_PREFIX+ "callAdjust() =================");
resEntity = callAdjust(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("tip")) {
log.info(LOG_PREFIX+ "callTip() =================");
resEntity = callTip(LOG_PREFIX, memInfo, transaction);
} else if(transactionType.equals("credit_wait")) {
log.info(LOG_PREFIX+ "callCreditWait() =================");
int balance = betService.getCurBalance(memInfo);
TripleResponse response = new TripleResponse();
response.setResult_code(0);
response.setBalance(balance);
httpStatus = HttpStatus.OK;
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
} else {
log.error(LOG_PREFIX+ "unknown_transaction_type");
TripleResponse response = new TripleResponse();
response.setResult_code(8888);
response.setError_msg("UNKNOWN_TRAN_TYPE");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
}
} catch(Exception e) {
log.error(LOG_PREFIX+ "Exception : "+e.getMessage());
TripleResponse response = new TripleResponse();
response.setResult_code(9999);
response.setError_msg("UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
resEntity = new ResponseEntity<TripleResponse>(response, httpStatus);
}
log.info(LOG_PREFIX+ "Response Data : " + resEntity.toString());
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -2.0) {
log.error(LOG_PREFIX+ "[### balance diffTime : " + String.format("%.3f", diffTime) + " ###]");
}
return resEntity;
}
private ResponseEntity<TripleResponse> callBet(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "BET:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
HashMap memberVo = userService.getMemberMap(memInfo);
if(memberVo == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_USER");
response.setResult_code(1111);
response.setError_msg("NOT_FOUND_USER");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(memberVo.get("betYn").toString().equals("N") || memberVo.get("memLockYn").toString().equals("Y")) {
log.error(LOG_PREFIX+ "betYn : "+memberVo.get("betYn").toString());
log.error(LOG_PREFIX+ "memLockYn : "+memberVo.get("memLockYn").toString());
response.setResult_code(1005);
response.setError_msg("THIS_USER_BETTING_LOCK");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int balance = Integer.parseInt(memberVo.get("cashAmt").toString());
int amount = transaction.getInt("debit");
amount = Math.abs(amount) * -1;
if(balance < Math.abs(amount)) {
log.error(LOG_PREFIX+ "유저 잔액부족::balance::"+balance+"::amount::"+amount);
response.setResult_code(80);
response.setBalance(balance);
response.setError_msg("INSUFFICIENT_FUNDS");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
String apiVendorCode = transaction.getString("vendorKey");
String gameName = transaction.getString("gameKey");
HashMap<String, String> vParam = new HashMap<>();
vParam.put("siteId", memberVo.get("siteId").toString());
vParam.put("apiCompCode", "triple");
vParam.put("apiVendorCode", apiVendorCode);
vParam.put("memLevel", memberVo.get("memLevel").toString());
HashMap<String, String> siteVendorInfo = betService.getSiteVendorInfo(vParam);
if(siteVendorInfo == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_VENDOR");
response.setResult_code(70);
response.setError_msg("NOT_FOUND_VENDOR");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int maxBetAmt = Integer.parseInt(siteVendorInfo.get("betAmtMax").toString());
if(maxBetAmt < Math.abs(amount)) {
log.error(LOG_PREFIX+ "MAX_BET_OVER");
log.error(LOG_PREFIX+ "siteMaxBet : " + maxBetAmt +", amount : " + amount);
response.setResult_code(81);
response.setBalance(balance);
response.setError_msg("MAX_BET_OVER");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
HashMap betData = new HashMap();
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("siteId", memberVo.get("siteId").toString());
betData.put("memId", memberVo.get("memId").toString());
betData.put("apiCompCode", "triple");
betData.put("apiVendor", transaction.getString("vendor"));
betData.put("gameCategory", siteVendorInfo.get("gameCategory").toString());
betData.put("vendorCode", siteVendorInfo.get("vendorCode").toString());
betData.put("gameName", gameName);
betData.put("tranType", "DEBIT");
betData.put("betAmt", Math.abs(amount));
betData.put("betWinAmt", 0);
betData.put("balance", (balance+amount));
betData.put("isBlankSpinYn", "N");
betData.put("pointRegYn", "N");
betData.put("regDate", transaction.getString("requestAt"));
betData.put("updDate", transaction.getString("requestAt"));
int betResult = 0;
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("BET_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.rollingProc(LOG_PREFIX, betData);
} else {
log.error(LOG_PREFIX+ "BET_FAIL");
response.setResult_code(9999);
response.setError_msg("BET_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callWin(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "WIN:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
HashMap betData = betService.getReferenceData2(betId);
if(betData == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA");
response.setResult_code(99);
response.setError_msg("NOT_FOUND_REF_DATA");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int balance = betService.getCurBalance(memInfo);
int amount = transaction.getInt("credit");
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("tranType", "CREDIT");
betData.put("betAmt", 0);
betData.put("betWinAmt", Math.abs(amount));
betData.put("balance", (balance+amount));
betData.put("updDate", transaction.getString("requestAt"));
int betResult = 0;
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("WIN_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(betData.get("gameCategory").toString().equals("casino")) {
// #-Rolling Tie Proc call
asyncService.rollingTieProc(LOG_PREFIX, betId);
}
else {
asyncService.losingResultProc(LOG_PREFIX, betData);
}
//asyncService.losingResultProc(LOG_PREFIX, betData);
} else {
log.error(LOG_PREFIX+ "WIN_FAIL");
response.setResult_code(9999);
response.setError_msg("WIN_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callCancel(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "CANCEL:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
HashMap betData = betService.getReferenceData1(betId);
if(betData == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA");
response.setResult_code(99);
response.setError_msg("NOT_FOUND_REF_DATA");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int betAmt = Integer.parseInt(betData.get("betAmt").toString());
int balance = betService.getCurBalance(memInfo);
int amount = transaction.getInt("credit");
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("tranType", "CANCEL");
betData.put("betAmt", 0);
betData.put("betWinAmt", Math.abs(amount));
betData.put("balance", (balance+amount));
betData.put("isCancel", "Y");
betData.put("updDate", transaction.getString("requestAt"));
int betResult = 0;
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("CANCEL_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.rollingCancelProc(LOG_PREFIX, betAmt, betData);
//asyncService.losingResultProc(LOG_PREFIX, betData);
} else {
log.error(LOG_PREFIX+ "CANCEL_FAIL");
response.setResult_code(9999);
response.setError_msg("CANCEL_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callBetSlot(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "BET:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
HashMap memberVo = userService.getMemberMap(memInfo);
if(memberVo == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_USER");
response.setResult_code(1111);
response.setError_msg("NOT_FOUND_USER");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(memberVo.get("betYn").toString().equals("N") || memberVo.get("memLockYn").toString().equals("Y")) {
log.error(LOG_PREFIX+ "betYn : "+memberVo.get("betYn").toString());
log.error(LOG_PREFIX+ "memLockYn : "+memberVo.get("memLockYn").toString());
response.setResult_code(1005);
response.setError_msg("THIS_USER_BETTING_LOCK");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int balance = Integer.parseInt(memberVo.get("cashAmt").toString());
int amount = transaction.getInt("debit");
amount = Math.abs(amount) * -1;
if(balance < Math.abs(amount)) {
log.error(LOG_PREFIX+ "유저 잔액부족::balance::"+balance+"::amount::"+amount);
response.setResult_code(80);
response.setBalance(balance);
response.setError_msg("INSUFFICIENT_FUNDS");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
String apiVendorCode = transaction.getString("vendorKey");
String gameName = transaction.getString("gameKey");
HashMap<String, String> vParam = new HashMap<>();
vParam.put("siteId", memberVo.get("siteId").toString());
vParam.put("apiCompCode", "triple");
vParam.put("apiVendorCode", apiVendorCode);
vParam.put("memLevel", memberVo.get("memLevel").toString());
HashMap<String, String> siteVendorInfo = betService.getSiteVendorInfo(vParam);
if(siteVendorInfo == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_VENDOR");
response.setResult_code(70);
response.setError_msg("NOT_FOUND_VENDOR");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int maxBetAmt = Integer.parseInt(siteVendorInfo.get("betAmtMaxSlot").toString());
if(maxBetAmt < Math.abs(amount)) {
log.error(LOG_PREFIX+ "MAX_BET_OVER");
log.error(LOG_PREFIX+ "siteMaxBet : " + maxBetAmt +", amount : " + amount);
response.setResult_code(81);
response.setBalance(balance);
response.setError_msg("MAX_BET_OVER");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
HashMap betData = new HashMap();
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("siteId", memberVo.get("siteId").toString());
betData.put("memId", memberVo.get("memId").toString());
betData.put("apiCompCode", "triple");
betData.put("apiVendor", transaction.getString("vendor"));
betData.put("gameCategory", siteVendorInfo.get("gameCategory").toString());
betData.put("vendorCode", siteVendorInfo.get("vendorCode").toString());
betData.put("gameName", gameName);
betData.put("tranType", "DEBIT");
betData.put("betAmt", Math.abs(amount));
betData.put("betWinAmt", 0);
betData.put("balance", (balance+amount));
betData.put("isBlankSpinYn", "N");
betData.put("pointRegYn", "N");
betData.put("regDate", transaction.getString("requestAt"));
betData.put("updDate", transaction.getString("requestAt"));
int betResult = 0;
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("BET_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.rollingProc(LOG_PREFIX, betData);
} else {
log.error(LOG_PREFIX+ "BET_FAIL");
response.setResult_code(9999);
response.setError_msg("BET_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callWinSlot(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "WIN:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
HashMap betData = betService.getReferenceData2(betId);
if(betData == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA");
response.setResult_code(99);
response.setError_msg("NOT_FOUND_REF_DATA");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int balance = betService.getCurBalance(memInfo);
int amount = transaction.getInt("credit");
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("tranType", "CREDIT");
betData.put("betAmt", 0);
betData.put("betWinAmt", Math.abs(amount));
betData.put("balance", (balance+amount));
betData.put("updDate", transaction.getString("requestAt"));
int betResult = 0;
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("WIN_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
asyncService.losingResultProc(LOG_PREFIX, betData);
} else {
log.error(LOG_PREFIX+ "WIN_FAIL");
response.setResult_code(9999);
response.setError_msg("WIN_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callBonus(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "BONUS:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
int betResult = 0;
int balance = 0;
int amount = Math.abs(transaction.getInt("credit"));
HashMap betData = betService.getReferenceData2(betId);
if(betData != null) {
balance = betService.getCurBalance(memInfo);
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("tranType", "BONUS");
betData.put("betAmt", 0);
betData.put("betWinAmt", amount);
betData.put("balance", (balance+amount));
betData.put("updDate", transaction.getString("requestAt"));
} else {
log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA");
String apiVendorCode = transaction.getString("vendorKey");
String gameName = transaction.getString("gameKey");
HashMap memberVo = userService.getMemberMap(memInfo);
if(memberVo == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_USER");
response.setResult_code(1111);
response.setError_msg("NOT_FOUND_USER");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
HashMap<String, String> vParam = new HashMap<>();
vParam.put("siteId", memberVo.get("siteId").toString());
vParam.put("apiCompCode", "triple");
vParam.put("apiVendorCode", apiVendorCode);
vParam.put("memLevel", memberVo.get("memLevel").toString());
HashMap<String, String> siteVendorInfo = betService.getSiteVendorInfo(vParam);
if(siteVendorInfo == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_VENDOR");
response.setResult_code(70);
response.setError_msg("NOT_FOUND_VENDOR");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
balance = Integer.parseInt(memberVo.get("cashAmt").toString());
betData = new HashMap<>();
betData.put("tranId", tranId+"#"+transaction.getString("type"));
betData.put("betId", tranId+"#"+transaction.getString("type"));
betData.put("siteId", memberVo.get("siteId").toString());
betData.put("memId", memberVo.get("memId").toString());
betData.put("apiCompCode", "triple");
betData.put("apiVendor", transaction.getString("vendor"));
betData.put("gameCategory", siteVendorInfo.get("gameCategory").toString());
betData.put("vendorCode", siteVendorInfo.get("vendorCode").toString());
betData.put("gameName", gameName);
betData.put("tranType", "BONUS");
betData.put("betAmt", 0);
betData.put("betWinAmt", amount);
betData.put("balance", (balance+amount));
betData.put("isBlankSpinYn", "N");
betData.put("pointRegYn", "N");
betData.put("regDate", transaction.getString("requestAt"));
betData.put("updDate", transaction.getString("requestAt"));
}
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("BONUS_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
int bonusResult = betService.bonusBetNew(betData);
log.info(LOG_PREFIX+ "bonusBet result : "+bonusResult);
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
} else {
log.error(LOG_PREFIX+ "BONUST_FAIL");
response.setResult_code(9999);
response.setError_msg("BONUST_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callAdjust(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "ADJUST:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
String tranId = transaction.getString("tranId");
String betId = transaction.getString("betId");
HashMap betData = betService.getReferenceData2(betId);
if(betData == null) {
log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA");
response.setResult_code(99);
response.setError_msg("NOT_FOUND_REF_DATA");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
int balance = betService.getCurBalance(memInfo);
int debit = transaction.getInt("debit");
debit = Math.abs(debit) * -1;
int credit = transaction.getInt("credit");
int amount = debit + credit;
betData.put("tranId", tranId);
betData.put("betId", betId);
betData.put("tranType", "ADJUST");
if(amount > 0) {
betData.put("betAmt", 0);
betData.put("betWinAmt", Math.abs(amount));
} else {
betData.put("betAmt", Math.abs(amount));
betData.put("betWinAmt", 0);
}
betData.put("balance", (balance+amount));
betData.put("updDate", transaction.getString("requestAt"));
int betResult = 0;
try {
log.info(LOG_PREFIX+ "betData : "+betData.toString());
betResult = betService.insertBetNew(betData);
log.info(LOG_PREFIX+ "insertBet result : "+betResult);
} catch(DataIntegrityViolationException de) {
log.error(LOG_PREFIX+ "Duplicate tranId!!!");
response.setResult_code(98);
response.setBalance(balance);
response.setError_msg("ADJUST_ALREADY_SETTLED");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
if(betResult > 0) {
HashMap balanceParam = new HashMap();
balanceParam.put("siteIdx", memInfo.getSiteIdx());
balanceParam.put("memId", memInfo.getMemId());
balanceParam.put("cashAmt", Integer.toString(amount));
balanceParam.put("changeFlag", "N");
long chs4 = System.currentTimeMillis();
int memCashResult = betService.updateUserCashByAmountNew(balanceParam);
long che4 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diff4 = (chs4 - che4)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
if(diff4 < -1.0) log.error(LOG_PREFIX+ "updateUserCashByAmountNew() : " + String.format("%.3f", diff4));
} else {
log.error(LOG_PREFIX+ "ADJUST_FAIL");
response.setResult_code(9999);
response.setError_msg("ADJUST_FAIL");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.INTERNAL_SERVER_ERROR);
return resEntity;
}
log.info(LOG_PREFIX+ "beforeBalance : "+balance);
log.info(LOG_PREFIX+ "amount : "+amount);
log.info(LOG_PREFIX+ "responseBalance : "+(balance+amount));
response.setResult_code(0);
response.setBalance(balance+amount);
response.setError_msg("");
resEntity = new ResponseEntity<TripleResponse>(response, HttpStatus.OK);
return resEntity;
}
private ResponseEntity<TripleResponse> callTip(String LOG_PREFIX, Member memInfo, JSONObject transaction) {
LOG_PREFIX = LOG_PREFIX + "TIP:::";
ResponseEntity<TripleResponse> resEntity = null;
TripleResponse response = new TripleResponse();
return resEntity;
}
}

View File

@@ -0,0 +1,127 @@
package com.bb.controller;
import java.net.InetAddress;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
import com.bb.model.CashQueVO;
import com.bb.model.CronServerInfo;
import com.bb.model.Member;
import com.bb.model.TripleAuthInfo;
import com.bb.service.CashService;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@EnableScheduling
@RequiredArgsConstructor
@Controller
public class CashCronController {
private final CashService cashService;
private final UserService userService;
private final CommonService commonService;
@Scheduled(fixedDelay = 2000) // 작업 종류 후 1초 마다
public void cashProc() throws Exception {
long startTime = System.currentTimeMillis();
int queSize = 0;
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("CASH");
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("#-cashProc::" + "#[CRON STATUS] cronStatus: " + cronStatus);
if (cronStatus != null && cronStatus.getRunYn().equals("Y")) {
List<CashQueVO> cashQueList = cashService.getCashQueList();
queSize = cashQueList.size();
if (queSize > 0) {
log.info("#-cashProc::" + "cashQueList size: " + cashQueList.size());
for (CashQueVO item : cashQueList) {
String LOG_PREFIX = "#-cashProc::" + item.getSiteId() + "::" + item.getCashIdx() + "::";
if (item.getRefCnt() == 0) {
// log.info(LOG_PREFIX+ "not ready... RefCnt: " + item.getRefCnt());
continue;
}
long cashAmt = Long.parseLong(item.getCashAmt());
long balance = cashService.getBalance(item);
if ((balance + cashAmt) < 0) {
// 보유금 마이너스 오류. 거래 실패처리
HashMap<String, Object> wdParam = new HashMap<>();
wdParam.put("cashIdx", item.getCashIdx());
wdParam.put("refIdx", null);
wdParam.put("cashStatus", "-1");
wdParam.put("memo", "계정(" + item.getMemId() + ") 보유금(" + balance + ") 부족 처리실패");
int wdResult = cashService.updateQueStatus(wdParam);
log.info(LOG_PREFIX + item.getMemId() + " withdraw queue fail process result: " + wdResult);
if (wdResult > 0) {
HashMap<String, Object> dpParam = new HashMap<>();
dpParam.put("cashIdx", null);
dpParam.put("refIdx", item.getCashIdx());
dpParam.put("cashStatus", "-1");
dpParam.put("memo", "계정(" + item.getMemId() + ") 보유금(" + balance + ") 부족 처리실패");
int dpResult = cashService.updateQueStatus(dpParam);
log.info(LOG_PREFIX + item.getTargetId() + " deposit queue fail process result: "
+ dpResult);
}
} else {
// Triple API
Member botUser = new Member();
botUser.setSiteId(item.getSiteId());
botUser.setMemId(item.getMemId());
TripleAuthInfo tripleMember = userService.getTripleAuthInfo2(botUser);
if (tripleMember != null && tripleMember.getPartnerLevel().equals("NORMAL")) {
// asyncService.withdrawBalanceAsync2(LOG_PREFIX, tripleMember);
}
// 거래 성공 처리
HashMap<String, Object> wdParam = new HashMap<>();
wdParam.put("cashIdx", item.getCashIdx());
wdParam.put("refIdx", null);
wdParam.put("cashStatus", "1");
wdParam.put("memo", "");
int wdResult = cashService.updateQueStatus(wdParam);
log.info(LOG_PREFIX + item.getMemId() + " withdraw queue success process result: "
+ wdResult);
if (wdResult > 0) {
HashMap<String, Object> dpParam = new HashMap<>();
dpParam.put("cashIdx", null);
dpParam.put("refIdx", item.getCashIdx());
dpParam.put("cashStatus", "1");
dpParam.put("memo", "");
int dpResult = cashService.updateQueStatus(dpParam);
log.info(LOG_PREFIX + item.getTargetId() + " deposit queue success process result: "
+ dpResult);
}
}
}
}
}
} catch (Exception e) {
log.error("#-cashProc::" + "Exception::" + e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime) / 1000.0; // 두 시간에 차 계산
if (queSize > 0)
log.error("#-cashProc::" + "Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
}

View File

@@ -0,0 +1,331 @@
package com.bb.controller;
import java.net.InetAddress;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
import com.bb.model.CronServerInfo;
import com.bb.service.BetService;
import com.bb.service.CashService;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import com.bb.util.RandomRolling;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@RequiredArgsConstructor
@EnableScheduling
@Controller
public class PointCronController {
private final BetService betService;
private final CashService cashService;
private final CommonService commonService;
// 'jjanggu01', 'ichiban01', 'viva01', 'mvp001', 'black01' 제외 사이트
//@Scheduled(fixedDelay = 10000) // 작업 종류 후 10초 마다
public void pointProc() throws Exception {
long startTime = System.currentTimeMillis();
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("POINT");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
log.debug("### Triple API pointProc() Start -###");
List<HashMap> biBetList = betService.getBetPointList();
log.debug("### Triple API pointProc() biBetList.size() : " + biBetList.size());
for(HashMap betItem : biBetList) {
log.debug("### Triple API betItem : " + betItem.toString());
long betIdx = (long) betItem.get("betIdx");
String betId = betItem.get("betId").toString();
int betRate = Integer.parseInt(betItem.get("betRate").toString());
String gameCategory = betItem.get("gameCategory").toString();
String vendorCode = betItem.get("vendorCode").toString();
long betAmt = Long.parseLong(betItem.get("betAmt").toString());
long betWinAmt = Long.parseLong(betItem.get("betWinAmt").toString());
int bsCasinoRate = Integer.parseInt(betItem.get("blankSpinCasinoRate").toString());
int bsSlotRate = Integer.parseInt(betItem.get("blankSpinSlotRate").toString());
String siteId = betItem.get("siteId").toString();
String memId = betItem.get("memId").toString();
String blankSpinSetType = betItem.get("blankSpinSetType").toString();
int betCnt = 0;
long sumWinAmt = 0;
HashMap<String, String> totalInfo = betService.getBetTodayTotalInfo(betItem);
if(totalInfo != null) {
betCnt = Integer.parseInt(totalInfo.get("betCnt").toString());
sumWinAmt = Long.parseLong(totalInfo.get("sumWinAmt").toString());
}
int rate = 0;
if( blankSpinSetType.equals("B") && ( betCnt < 20 || betAmt >= sumWinAmt ) ) {
rate = 0;
} else {
if(gameCategory.equals("casino")) {
//if(gameCategory.equals("casino") && (betAmt > betWinAmt)) { // 24.07.12 jinu 요청 수정
rate = bsCasinoRate;
//} else if(gameCategory.equals("slot") && (betAmt >= betWinAmt)) { // 24.08.27 CS팀 요청(Green)
} else if(gameCategory.equals("slot")) { // 24.10.16 jinu 요청 수정
rate = bsSlotRate;
} else if(gameCategory.equals("undefind")) {
rate = 100;
} else {
rate = 0;
}
}
// isBlankSpin = true (롤링공회전), isBlankSpin = false (롤링진행)
boolean isBlankSpin = RandomRolling.isBlankSpin(rate);
HashMap mapParam = new HashMap();
mapParam.put("betIdx", betIdx);
mapParam.put("betRate", betRate);
mapParam.put("gameCategory", gameCategory);
mapParam.put("vendorCode", vendorCode);
if(isBlankSpin) {
mapParam.put("isBlankSpinYn", "Y");
} else {
mapParam.put("isBlankSpinYn", "N");
}
String LOG_PREFIX = "#-pointProc::"+siteId+"::"+memId+"::betIdx::"+betIdx+"::::";
try {
log.debug(LOG_PREFIX+ "cashService.insertBetPoint(mapParam) start");
int pointResult = cashService.insertBetPoint(LOG_PREFIX, mapParam);
log.debug(LOG_PREFIX+ "cashService.insertBetPoint(mapParam) end: " + pointResult);
} catch(Exception e) {
log.error(LOG_PREFIX+ "POINT_ERROR::"+e.toString());
}
}
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.error("pointProc() Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
private void pointProcSite(final String SITE_ID) throws Exception {
log.debug("### Triple API pointProc("+SITE_ID+") Start -###");
List<HashMap> biBetList = betService.getBetPointListBySite(SITE_ID);
log.debug("### Triple API pointProc("+SITE_ID+") biBetList.size() : " + biBetList.size());
for(HashMap betItem : biBetList) {
log.debug("### Triple API pointProc("+SITE_ID+") betItem : " + betItem.toString());
long betIdx = (long) betItem.get("betIdx");
String betId = betItem.get("betId").toString();
int betRate = Integer.parseInt(betItem.get("betRate").toString());
String gameCategory = betItem.get("gameCategory").toString();
String vendorCode = betItem.get("vendorCode").toString();
long betAmt = Long.parseLong(betItem.get("betAmt").toString());
long betWinAmt = Long.parseLong(betItem.get("betWinAmt").toString());
int bsCasinoRate = Integer.parseInt(betItem.get("blankSpinCasinoRate").toString());
int bsSlotRate = Integer.parseInt(betItem.get("blankSpinSlotRate").toString());
String siteId = betItem.get("siteId").toString();
String memId = betItem.get("memId").toString();
String blankSpinSetType = betItem.get("blankSpinSetType").toString();
int betCnt = 0;
long sumWinAmt = 0;
HashMap<String, String> totalInfo = betService.getBetTodayTotalInfo(betItem);
if(totalInfo != null) {
betCnt = Integer.parseInt(totalInfo.get("betCnt").toString());
sumWinAmt = Long.parseLong(totalInfo.get("sumWinAmt").toString());
}
int rate = 0;
if( blankSpinSetType.equals("B") && ( betCnt < 20 || betAmt >= sumWinAmt ) ) {
rate = 0;
} else {
if(gameCategory.equals("casino")) {
//if(gameCategory.equals("casino") && (betAmt > betWinAmt)) { // 24.07.12 jinu 요청 수정
rate = bsCasinoRate;
//} else if(gameCategory.equals("slot") && (betAmt >= betWinAmt)) { // 24.08.27 CS팀 요청(Green)
} else if(gameCategory.equals("slot")) { // 24.10.16 jinu 요청 수정
rate = bsSlotRate;
} else if(gameCategory.equals("undefind")) {
rate = 100;
} else {
rate = 0;
}
}
// isBlankSpin = true (롤링공회전), isBlankSpin = false (롤링진행)
boolean isBlankSpin = RandomRolling.isBlankSpin(rate);
HashMap mapParam = new HashMap();
mapParam.put("betIdx", betIdx);
mapParam.put("betRate", betRate);
mapParam.put("gameCategory", gameCategory);
mapParam.put("vendorCode", vendorCode);
if(isBlankSpin) {
mapParam.put("isBlankSpinYn", "Y");
} else {
mapParam.put("isBlankSpinYn", "N");
}
String LOG_PREFIX = "#-pointProc::"+siteId+"::"+memId+"::betIdx::"+betIdx+"::::";
try {
log.debug(LOG_PREFIX+ "cashService.insertBetPoint(mapParam) start");
int pointResult = cashService.insertBetPoint(LOG_PREFIX, mapParam);
log.debug(LOG_PREFIX+ "cashService.insertBetPoint(mapParam) end: " + pointResult);
} catch(Exception e) {
log.error(LOG_PREFIX+ "POINT_ERROR::"+e.toString());
}
}
}
// 'jjanggu01', 'ichiban01', 'viva01', 'mvp001', 'black01'
//@Scheduled(fixedDelay = 10000) // 작업 종류 후 10초 마다
public void pointProc_jjanggu01() throws Exception {
long startTime = System.currentTimeMillis();
final String SITE_ID = "jjanggu01";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("POINT");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
pointProcSite(SITE_ID);
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.error("pointProc("+SITE_ID+") Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
//@Scheduled(fixedDelay = 10000) // 작업 종류 후 10초 마다
public void pointProc_ichiban01() throws Exception {
long startTime = System.currentTimeMillis();
final String SITE_ID = "ichiban01";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("POINT");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
pointProcSite(SITE_ID);
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.error("pointProc("+SITE_ID+") Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
//@Scheduled(fixedDelay = 10000) // 작업 종류 후 10초 마다
public void pointProc_viva01() throws Exception {
long startTime = System.currentTimeMillis();
final String SITE_ID = "viva01";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("POINT");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
pointProcSite(SITE_ID);
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.error("pointProc("+SITE_ID+") Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
//@Scheduled(fixedDelay = 10000) // 작업 종류 후 10초 마다
public void pointProc_black01() throws Exception {
long startTime = System.currentTimeMillis();
final String SITE_ID = "black01";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("POINT");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
pointProcSite(SITE_ID);
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.error("pointProc("+SITE_ID+") Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
//@Scheduled(fixedDelay = 10000) // 작업 종류 후 10초 마다
public void pointProc_mvp001() throws Exception {
long startTime = System.currentTimeMillis();
final String SITE_ID = "mvp001";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("POINT");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
pointProcSite(SITE_ID);
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double secDiffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.error("pointProc("+SITE_ID+") Proc Time(s) > 1s : " + String.format("%.3f", secDiffTime));
}
}

View File

@@ -0,0 +1,176 @@
package com.bb.controller;
import java.net.InetAddress;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Controller;
import com.bb.model.CronServerInfo;
import com.bb.model.OutChatMessageVO;
import com.bb.model.SiteCheckReq;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import com.bb.util.AESUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@EnableScheduling
@RequiredArgsConstructor
@Controller
public class SocketController {
private final SimpMessagingTemplate simpMessagingTemplate;
private final CommonService commonService;
private final UserService userService;
@Scheduled(fixedDelay = 8000L)
public void sendPong() throws Exception {
String nowtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis()));
OutChatMessageVO outMs = new OutChatMessageVO();
AESUtil aesUtil = new AESUtil();
String json = "";
String encryptMsg = "";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("SOCKET");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
HashMap superHeadCashInfo = userService.getSuperHeadCashInfo();
ObjectMapper oms = new ObjectMapper();
// Map or List Object 를 JSON 문자열로 변환
String superHeadCashInfoStr = oms.writeValueAsString(superHeadCashInfo);
outMs.setContent(superHeadCashInfoStr);
json = oms.writeValueAsString(outMs);
encryptMsg = aesUtil.encrypt(json);
// this.simpMessagingTemplate.convertAndSend("/topic/super", outMs);
this.simpMessagingTemplate.convertAndSend("/topic/super", encryptMsg);
List<HashMap> tokenList = commonService.getlastLoginToken();
if(tokenList != null) {
for(HashMap ti:tokenList) {
if("admin".equals(ti.get("mt"))) {
HashMap param = new HashMap();
param.put("siteId", ti.get("siteId"));
HashMap headCashInfo = userService.getHeadCashInfo(param);
//log.info("###- SocketController.sendPong() headCashInfo: " + headCashInfo);
ObjectMapper om2 = new ObjectMapper();
// Map or List Object 를 JSON 문자열로 변환
String headCashInfoStr = om2.writeValueAsString(headCashInfo);
outMs.setContent(headCashInfoStr);
json = om2.writeValueAsString(outMs);
encryptMsg = aesUtil.encrypt(json);
// this.simpMessagingTemplate.convertAndSend("/topic/adminfo/"+ti.get("lastToken").toString(), outMs);
this.simpMessagingTemplate.convertAndSend("/topic/adminfo/"+ti.get("lastToken").toString(), encryptMsg);
}
if("mem".equals(ti.get("mt"))) {
List<HashMap> memInfo = userService.getMemInfo(ti);
//log.info("###- SocketController.sendPong() memInfo: " + memInfo);
ObjectMapper om2 = new ObjectMapper();
// Map or List Object 를 JSON 문자열로 변환
String memInfoStr = om2.writeValueAsString(memInfo);
outMs.setContent(memInfoStr);
json = om2.writeValueAsString(outMs);
encryptMsg = aesUtil.encrypt(json);
// this.simpMessagingTemplate.convertAndSend("/topic/"+ti.get("lastToken").toString(), outMs);
this.simpMessagingTemplate.convertAndSend("/topic/"+ti.get("lastToken").toString(), encryptMsg);
}
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
// @Scheduled(fixedDelay = 2000L)
public void sendMiniGame() throws Exception {
String nowtime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis()));
OutChatMessageVO outMs = new OutChatMessageVO();
List<HashMap> siteList = commonService.getLoginSite();
if(siteList != null) {
for(HashMap ti:siteList) {
// Map or List Object 를 JSON 문자열로 변환
List<HashMap> miniGameInfo = userService.miniGameInfo(ti);
ObjectMapper om2 = new ObjectMapper();
// Map or List Object 를 JSON 문자열로 변환
String miniGameInfoStr = om2.writeValueAsString(miniGameInfo);
//System.out.println("miniGameInfoStr" + miniGameInfoStr);
outMs.setContent(miniGameInfoStr);
this.simpMessagingTemplate.convertAndSend("/topic/powerball/"+ti.get("siteId").toString(), outMs);
}
}
}
@Scheduled(fixedDelay = 10000L)
public void isSiteCheck() throws Exception {
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("CHECK");
log.debug("##- [OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
List<HashMap> siteCheckList = commonService.isSiteCheck();
for(HashMap item : siteCheckList) {
int siteCheckIdx = (int) item.get("siteCheckIdx");
SiteCheckReq param = new SiteCheckReq();
param.setSiteCheckIdx(siteCheckIdx);
param.setSiteId((String) item.get("siteId"));
if(item.get("checkStatus").equals("ON")) {
// site_setting 테이블 siteCheckYn => 'Y'
param.setSiteCheckYn("Y");
log.info("#-isSiteCheck::ON::" + param.getSiteId()+"::"+param.getSiteCheckIdx()+"::"+param.getStartDate()+"-"+param.getEndDate());
commonService.changeSiteSettingCheckYn(param);
} else {
// site_check_info 테이블 isCheckOff => 'Y'
// site_setting 테이블 siteCheckYn => 'N'
param.setIsCheckOff("Y");
param.setSiteCheckYn("N");
log.info("#-isSiteCheck::OFF::" + param.getSiteId()+"::"+param.getSiteCheckIdx()+"::"+param.getStartDate()+"-"+param.getEndDate());
commonService.changeSiteCheckOff(param);
commonService.changeSiteSettingCheckYn(param);
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,686 @@
package com.bb.controller;
import java.net.InetAddress;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.bb.model.CronServerInfo;
import com.bb.model.Member;
import com.bb.model.MemberDetail;
import com.bb.model.TripleAuthInfo;
import com.bb.model.TripleDVO;
import com.bb.model.TripleGameRate;
import com.bb.model.TriplePurchaseId;
import com.bb.model.TripleVO;
import com.bb.service.BetService;
import com.bb.service.CommonService;
import com.bb.service.CompService;
import com.bb.service.SportDService;
import com.bb.service.SportService;
import com.bb.service.TripleService;
import com.bb.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject;
@Slf4j
@EnableScheduling
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/triple")
public class TripleController {
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = new DecimalFormat("#0.00");
private final UserService userService;
private final BetService betService;
private final TripleService tripleService;
private final SportService sportService;
private final SportDService sportDService;
private final CommonService commonService;
private final CompService compService;
@PostMapping("/balance/sports")
public ResponseEntity<net.sf.json.JSONObject> balance(@RequestBody TripleVO tripleVO, HttpServletRequest request) throws Exception {
long startTime = System.currentTimeMillis();
net.sf.json.JSONObject responseObj = new net.sf.json.JSONObject();
HttpStatus httpStatus = null;
final String LOG_PREFIX = "#-CB::balance::"+tripleVO.getUserId()+"::"+tripleVO.getRequestAt()+":::";
log.info(LOG_PREFIX+ "TripleVO : " + tripleVO);
try {
long balance = 0;
Member search = new Member();
search.setSiteIdx(Integer.parseInt(tripleVO.getUserId().substring(0, 3), 16));
search.setMemId(tripleVO.getUserId().substring(3, tripleVO.getUserId().length()));
// synchronized method getMemByTriple()
MemberDetail memberVo = userService.getMemByTriple(search);
long endTime1 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime1 = (startTime - endTime1)/1000.0; //두 시간에 차 계산
log.error(LOG_PREFIX+ "[### userService.getMemByTriple() : " + String.format("%.3f", diffTime1) + " ###]");
if(memberVo != null && !"".equals(memberVo.getUsername())) {
balance = memberVo.getCashAmt();
responseObj.put("result_code", 0);
responseObj.put("balance", balance);
httpStatus = HttpStatus.OK;
} else {
if(memberVo != null && "".equals(memberVo.getUsername())) {
TripleAuthInfo user = new TripleAuthInfo();
user.setSiteId(search.getSiteId());
user.setMemId(search.getMemId());
user.setId(0);
user.setUsername(tripleVO.getUserId());
user.setNickname(tripleVO.getUserId());
log.info(LOG_PREFIX+ "### Triple API ### - call \"/balance\" TripleAuthInfo: " + user);
int result = userService.insertTripleAuthInfo(user);
if(result > 0) {
balance = memberVo.getCashAmt();
responseObj.put("result_code", 0);
responseObj.put("balance", balance);
httpStatus = HttpStatus.OK;
} else {
responseObj.put("result_code", 1999);
responseObj.put("errors","INSERT_USER_ERROR");
httpStatus = HttpStatus.OK;
}
} else {
responseObj.put("result_code", 9999);
responseObj.put("errors","INVALID_USER");
httpStatus = HttpStatus.OK;
}
}
} catch(Exception e) {
responseObj.put("result_code", 1111);
responseObj.put("errors","UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(LOG_PREFIX+ e.getMessage());
}
log.info(LOG_PREFIX+ "### Triple API Controller ### - call \"/balance\" response : " + responseObj);
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -2.0) {
log.error(LOG_PREFIX+ "[### balance diffTime : " + String.format("%.3f", diffTime) + " ###]");
}
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
@PostMapping("/changebalance/sports")
public ResponseEntity<net.sf.json.JSONObject> changeBalance(HttpServletRequest request, @RequestBody TripleVO tripleVO) {
long startTime = System.currentTimeMillis();
net.sf.json.JSONObject responseObj = new net.sf.json.JSONObject();
HttpStatus httpStatus = null;
final String LOG_PREFIX = "#-callback::"+tripleVO.getUserId()+"::"+tripleVO.getBetId()+"::"+tripleVO.getTranType()+"::::";
try {
if(tripleVO.getTranType().equals("debit") && tripleVO.getIsCancel() == 0) {
if(tripleVO.getRequestAt() != null && !tripleVO.getRequestAt().equals("")) {
SimpleDateFormat sdf = null;
if(tripleVO.getRequestAt().length() >= 20) {
// 2025-02-20 18:37:21.000
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
} else {
// 2025-02-20 18:37:21
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
String requestAtStr = tripleVO.getRequestAt();
//long nDate = System.currentTimeMillis() - 32400000;
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
// Date타입으로 변경
Date requestAt = sdf.parse(requestAtStr);
double diff = (nDate - requestAt.getTime()) / 1000.0; // 초
if(diff > 2.5) {
log.error(LOG_PREFIX +"changebalance::debit::"+diff+"초 통신 지연발생[requestAt:"+requestAtStr+"][nDate:"+nDateStr+"]");
responseObj.put("result_code", 44);
responseObj.put("error_msg","TIMEOUT_ERROR");
log.error(LOG_PREFIX+ "[### changeBalance() TIMEOUT_ERROR]");
httpStatus = HttpStatus.OK;
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
}
}
log.info(LOG_PREFIX+ "TripleVO : " + tripleVO);
Member search = new Member();
search.setSiteIdx(Integer.parseInt(tripleVO.getUserId().substring(0, 3), 16));
search.setMemId(tripleVO.getUserId().substring(3, tripleVO.getUserId().length()));
if(tripleVO.getDetailStr() == null) {
tripleVO.setDetailStr("{}");
}
if(tripleVO.getMinusBalanceYn() == null) {
tripleVO.setMinusBalanceYn("N");
}
if(tripleVO.getVendorIdx() == 83) {
// 스포츠 배팅
responseObj = sportService.betProc(search, tripleVO);
} else {
responseObj = tripleService.betProc(search, tripleVO);
}
if(responseObj.getString("result_code").equals("0") ||
responseObj.getString("result_code").equals("70") ||
responseObj.getString("result_code").equals("80") ||
responseObj.getString("result_code").equals("98") ||
responseObj.getString("result_code").equals("99") ||
responseObj.getString("result_code").equals("44") ||
responseObj.getString("result_code").equals("1005") ||
responseObj.getString("result_code").equals("3333") ) {
// 0 70 80 98 99
httpStatus = HttpStatus.OK;
} else {
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
}
} catch(Exception e) {
responseObj.put("result_code", 1111);
responseObj.put("error_msg","UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(LOG_PREFIX+ "Exception::"+e.getMessage());
}
log.info(LOG_PREFIX+ "Response::" + responseObj.toString());
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -1.5) {
log.error(LOG_PREFIX+ "[callback::diffTime : " + String.format("%.3f", diffTime) + "]");
}
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
@PostMapping("/balance/sportsD")
public ResponseEntity<net.sf.json.JSONObject> balanceD(@RequestBody TripleDVO tripleVO, HttpServletRequest request) throws Exception {
long startTime = System.currentTimeMillis();
net.sf.json.JSONObject responseObj = new net.sf.json.JSONObject();
HttpStatus httpStatus = null;
final String LOG_PREFIX = "#-CB::balance::"+tripleVO.getUserId()+"::"+tripleVO.getRequestAt()+":::";
log.info(LOG_PREFIX+ "TripleVO : " + tripleVO);
try {
Member search = new Member();
search.setSiteIdx(Integer.parseInt(tripleVO.getUserId().substring(0, 3), 16));
search.setMemId(tripleVO.getUserId().substring(3, tripleVO.getUserId().length()));
// synchronized method getMemByTriple()
MemberDetail memberVo = userService.getMemByTriple(search);
long endTime1 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime1 = (startTime - endTime1)/1000.0; //두 시간에 차 계산
log.error(LOG_PREFIX+ "[### userService.getMemByTriple() : " + String.format("%.3f", diffTime1) + " ###]");
if(memberVo != null && !"".equals(memberVo.getUsername())) {
responseObj.put("result_code", 0);
responseObj.put("balance", memberVo.getCashAmtD());
httpStatus = HttpStatus.OK;
} else {
if(memberVo != null && "".equals(memberVo.getUsername())) {
TripleAuthInfo user = new TripleAuthInfo();
user.setSiteId(search.getSiteId());
user.setMemId(search.getMemId());
user.setId(0);
user.setUsername(tripleVO.getUserId());
user.setNickname(tripleVO.getUserId());
log.info(LOG_PREFIX+ "### Triple API ### - call \"/balance\" TripleAuthInfo: " + user);
int result = userService.insertTripleAuthInfo(user);
if(result > 0) {
responseObj.put("result_code", 0);
responseObj.put("balance", memberVo.getCashAmtD());
// FOR-BTI
responseObj.put("balanceD", memberVo.getCashAmtD());
httpStatus = HttpStatus.OK;
} else {
responseObj.put("result_code", 1999);
responseObj.put("errors","INSERT_USER_ERROR");
httpStatus = HttpStatus.OK;
}
} else {
responseObj.put("result_code", 9999);
responseObj.put("errors","INVALID_USER");
httpStatus = HttpStatus.OK;
}
}
} catch(Exception e) {
responseObj.put("result_code", 1111);
responseObj.put("errors","UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(LOG_PREFIX+ e.getMessage());
}
log.info(LOG_PREFIX+ "### Triple API Controller ### - call \"/balance\" response : " + responseObj);
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -2.0) {
log.error(LOG_PREFIX+ "[### balance diffTime : " + String.format("%.3f", diffTime) + " ###]");
}
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
@PostMapping("/changebalance/sportsD")
public ResponseEntity<net.sf.json.JSONObject> changeBalanceD(HttpServletRequest request, @RequestBody TripleDVO tripleVO) {
long startTime = System.currentTimeMillis();
net.sf.json.JSONObject responseObj = new net.sf.json.JSONObject();
HttpStatus httpStatus = null;
final String LOG_PREFIX = "#-callback::"+tripleVO.getUserId()+"::"+tripleVO.getBetId()+"::"+tripleVO.getTranType()+"::::";
try {
if(tripleVO.getTranType().equals("debit") && tripleVO.getIsCancel() == 0) {
if(tripleVO.getRequestAt() != null && !tripleVO.getRequestAt().equals("")) {
SimpleDateFormat sdf = null;
if(tripleVO.getRequestAt().length() >= 20) {
// 2025-02-20 18:37:21.000
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
} else {
// 2025-02-20 18:37:21
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
String requestAtStr = tripleVO.getRequestAt();
//long nDate = System.currentTimeMillis() - 32400000;
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
// Date타입으로 변경
Date requestAt = sdf.parse(requestAtStr);
double diff = (nDate - requestAt.getTime()) / 1000.0; // 초
if(diff > 2.5) {
log.error(LOG_PREFIX +"changebalance::debit::"+diff+"초 통신 지연발생[requestAt:"+requestAtStr+"][nDate:"+nDateStr+"]");
responseObj.put("result_code", 44);
responseObj.put("error_msg","TIMEOUT_ERROR");
log.error(LOG_PREFIX+ "[### changeBalance() TIMEOUT_ERROR]");
httpStatus = HttpStatus.OK;
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
}
}
log.info(LOG_PREFIX+ "TripleVO : " + tripleVO);
Member search = new Member();
search.setSiteIdx(Integer.parseInt(tripleVO.getUserId().substring(0, 3), 16));
search.setMemId(tripleVO.getUserId().substring(3, tripleVO.getUserId().length()));
if(tripleVO.getDetailStr() == null) {
tripleVO.setDetailStr("{}");
}
if(tripleVO.getMinusBalanceYn() == null) {
tripleVO.setMinusBalanceYn("N");
}
// 스포츠 배팅
responseObj = sportDService.betProc(search, tripleVO);
if(responseObj.getString("result_code").equals("0") ||
responseObj.getString("result_code").equals("70") ||
responseObj.getString("result_code").equals("80") ||
responseObj.getString("result_code").equals("98") ||
responseObj.getString("result_code").equals("99") ||
responseObj.getString("result_code").equals("44") ||
responseObj.getString("result_code").equals("1005") ||
responseObj.getString("result_code").equals("3333") ) {
// 0 70 80 98 99
httpStatus = HttpStatus.OK;
} else {
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
}
} catch(Exception e) {
responseObj.put("result_code", 1111);
responseObj.put("error_msg","UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(LOG_PREFIX+ "Exception::"+e.getMessage());
}
log.info(LOG_PREFIX+ "Response::" + responseObj.toString());
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
if(diffTime < -1.5) {
log.error(LOG_PREFIX+ "[callback::diffTime : " + String.format("%.3f", diffTime) + "]");
}
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
@PostMapping("/purchaseId")
public ResponseEntity<net.sf.json.JSONObject> callPurchaseId(HttpServletRequest request, @RequestBody TriplePurchaseId tripleVO) {
JSONObject responseObj = new JSONObject();
HttpStatus httpStatus = HttpStatus.OK;
final String LOG_PREFIX = "#-SPORT::callPurchaseId::"+tripleVO.getBetId()+"::"+tripleVO.getPurchaseId()+"::";
log.info(LOG_PREFIX + "request::"+tripleVO);
try {
int result = sportService.updatePurchaseId(tripleVO);
if(result >= 0) {
responseObj.put("result_code", 0);
} else {
responseObj.put("result_code", -99);
responseObj.put("error_msg","UPDATE_ERROR");
}
} catch(Exception e) {
responseObj.put("result_code", -11);
responseObj.put("error_msg","UNKNOWN_ERROR");
log.error(LOG_PREFIX + "Exception::"+e.getMessage());
}
log.info(LOG_PREFIX + responseObj.toString());
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
@PostMapping("/changebalance/slot2")
public ResponseEntity<net.sf.json.JSONObject> changeBalanceSlot(HttpServletRequest request, @RequestBody TripleVO tripleVO) {
long startTime = System.currentTimeMillis();
net.sf.json.JSONObject responseObj = new net.sf.json.JSONObject();
HttpStatus httpStatus = null;
final String LOG_PREFIX = "#-callbackSlot::"+tripleVO.getUserId()+"::"+tripleVO.getBetId()+"::"+tripleVO.getTranType()+"::::";
if(tripleVO.getRequestAt() == null || tripleVO.getRequestAt().equals("")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long nDate = System.currentTimeMillis();
String requestAtStr = sdf.format(nDate);
tripleVO.setRequestAt(requestAtStr);
}
log.info(LOG_PREFIX+ "changeBalanceSlot::TripleVO : " + tripleVO);
try {
Member search = new Member();
search.setSiteIdx(Integer.parseInt(tripleVO.getUserId().substring(0, 3), 16));
search.setMemId(tripleVO.getUserId().substring(3, tripleVO.getUserId().length()));
responseObj = tripleService.betProcSlot(LOG_PREFIX, search, tripleVO);
if(responseObj.getString("result_code").equals("0") ||
responseObj.getString("result_code").equals("70") ||
responseObj.getString("result_code").equals("80") ||
responseObj.getString("result_code").equals("98") ||
responseObj.getString("result_code").equals("99") ||
responseObj.getString("result_code").equals("44") ||
responseObj.getString("result_code").equals("1005") ||
responseObj.getString("result_code").equals("3333") ) {
// 0 70 80 98 99
httpStatus = HttpStatus.OK;
} else {
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
}
} catch(Exception e) {
responseObj.put("result_code", 1111);
responseObj.put("error_msg","UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(LOG_PREFIX+ "Exception::"+e.getMessage());
}
log.info(LOG_PREFIX+ "changeBalanceSlot::Response::" + responseObj.toString());
long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기
double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산
log.info(LOG_PREFIX+ "changeBalanceSlot::[diffTime : " + String.format("%.3f", diffTime) + "]");
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
//@Scheduled(fixedDelay = 30000) // 작업 종류 후 120초 마다
public void betWaitAutoProcByCasino() throws Exception {
final String LOG_PREFIX = "#-WaitAutoProc::CASINO:::";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("WAIT");
log.info(LOG_PREFIX+ "HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.info(LOG_PREFIX+ "cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
List<HashMap> betWaitList = betService.getTripleBetWaitListByCasino();
log.info(LOG_PREFIX+ "betWaitList.size() : " + betWaitList.size());
for(HashMap betItem : betWaitList) {
String siteId = betItem.get("siteId").toString();
long betIdx = (long) betItem.get("betIdx");
try {
// 배팅 패배 처리
HashMap mapParam = new HashMap();
mapParam.put("betIdx", betIdx);
mapParam.put("betWinAmt", "0");
int afMoney = Integer.parseInt(betItem.get("afMoney").toString());
int winAmt = 0;
afMoney = afMoney + winAmt;
mapParam.put("afMoney", Integer.toString(afMoney));
log.debug(LOG_PREFIX+ "배팅 자동 패배 처리중 ["+betIdx+"] - start: " + mapParam);
betService.updateEndAutoLose(mapParam);
log.debug(LOG_PREFIX+ "배팅 자동 패배 처리중 ["+betIdx+"] - end: " + mapParam);
} catch(Exception e) {
log.error(LOG_PREFIX+ "[Exception1]::"+e.toString());
e.printStackTrace();
}
}
}
} catch(Exception e) {
log.error(LOG_PREFIX+ "[Exception2]::"+e.toString());
e.printStackTrace();
}
}
//@Scheduled(fixedDelay = 30000) // 작업 종류 후 120초 마다
public void betWaitAutoProcBySlot() throws Exception {
final String LOG_PREFIX = "#-WaitAutoProc::SLOT:::";
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("WAIT");
log.info(LOG_PREFIX+ "HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.info(LOG_PREFIX+ "cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
List<HashMap> betWaitList = betService.getTripleBetWaitListBySlot();
log.info(LOG_PREFIX+ "betWaitList.size() : " + betWaitList.size());
for(HashMap betItem : betWaitList) {
String siteId = betItem.get("siteId").toString();
long betIdx = (long) betItem.get("betIdx");
try {
// 배팅 패배 처리
HashMap mapParam = new HashMap();
mapParam.put("betIdx", betIdx);
mapParam.put("betWinAmt", "0");
int afMoney = Integer.parseInt(betItem.get("afMoney").toString());
int winAmt = 0;
afMoney = afMoney + winAmt;
mapParam.put("afMoney", Integer.toString(afMoney));
log.debug(LOG_PREFIX+ "배팅 자동 패배 처리중 ["+betIdx+"] - start: " + mapParam);
betService.updateEndAutoLose(mapParam);
log.debug(LOG_PREFIX+ "배팅 자동 패배 처리중 ["+betIdx+"] - end: " + mapParam);
} catch(Exception e) {
log.error(LOG_PREFIX+ "[Exception1]::"+e.toString());
e.printStackTrace();
}
}
}
} catch(Exception e) {
log.error(LOG_PREFIX+ "[Exception2]::"+e.toString());
e.printStackTrace();
}
}
//@Scheduled(fixedDelay = 60000) // 작업 종류 후 1분 마다
public void betWaitAutoProc2() throws Exception {
try {
CronServerInfo cronStatus = new CronServerInfo();
cronStatus.setHostName(InetAddress.getLocalHost().getHostName());
cronStatus.setIpAddress(InetAddress.getLocalHost().getHostAddress());
cronStatus.setCronType("WAIT2");
log.debug("##- [WaitAutoProc2][OMS CRON STATUS] HostName: " + cronStatus.getHostName() + ", HostAddress: " + cronStatus.getIpAddress());
cronStatus = commonService.getServerCronStatus(cronStatus);
log.debug("##- [WaitAutoProc2][OMS CRON STATUS] cronStatus: " + cronStatus);
if(cronStatus != null && cronStatus.getRunYn().equals("Y")) {
log.info("##- [WaitAutoProc2] Triple API getTripleBetWaitList2() Start -###");
List<HashMap> betWaitList = betService.getTripleBetWaitList2();
log.info("##- [WaitAutoProc2] Triple API getTripleBetWaitList2.size() : " + betWaitList.size());
for(HashMap betItem : betWaitList) {
log.debug("##- [WaitAutoProc2] Triple API betItem : " + betItem.toString());
String siteId = betItem.get("siteId").toString();
String memId = betItem.get("memId").toString();
long betIdx = (long) betItem.get("betIdx");
String betId = betItem.get("betId").toString();
String updDate = betItem.get("updDate").toString();
int isCancel = (int) betItem.get("isCancel");
if(isCancel == 0) {
// 배팅 정상 처리
log.debug("##- [WaitAutoProc2] 배팅 대기상태 정상 처리 -시작-");
int creditAmt = (int) betItem.get("credit");
HashMap mapParam = new HashMap();
mapParam.put("betIdx", betIdx);
mapParam.put("betWinAmt", Integer.toString(creditAmt));
int afMoney = Integer.parseInt(betItem.get("afMoney").toString());
afMoney = afMoney + creditAmt;
mapParam.put("afMoney", Integer.toString(afMoney));
mapParam.put("siteId", siteId);
mapParam.put("data", "{}");
log.debug("##- [WaitAutoProc2] 배팅 결과 처리중 ["+betId+"]["+betIdx+"] - start: " + mapParam);
betService.updateEnd(mapParam);
log.debug("##- [WaitAutoProc2] 배팅 결과 처리중 ["+betId+"]["+betIdx+"] - end: " + mapParam);
log.debug("##- [WaitAutoProc2] 배팅 대기상태 정상 처리 -끝-");
} else {
// 배팅 취소 처리
log.info("##- [WaitAutoProc2] 배팅 대기상태 취소 처리 -시작-");
int creditAmt = (int) betItem.get("credit");
HashMap param = new HashMap();
param.put("betIdx", betIdx);
param.put("betStatus", "CANCEL");
param.put("betWinAmt", Integer.toString(creditAmt));
param.put("data", "{}");
int betCancelAmt = Integer.parseInt(betItem.get("betAmt").toString());
log.debug("##- [WaitAutoProc2] 배팅 취소 처리중 ["+betId+"]["+betIdx+"] - start: " + param);
int resultBet = betService.betCancelTriple(param);
log.debug("##- [WaitAutoProc2] 배팅 취소 처리중 ["+betId+"]["+betIdx+"] - end: " + param);
log.debug("##- [WaitAutoProc2] 배팅 대기상태 취소 처리 -끝-");
}
}
}
} catch(Exception e) {
log.error(e.toString());
e.printStackTrace();
}
}
@PostMapping("/gameRateChange")
public ResponseEntity<net.sf.json.JSONObject> gameRateChange(HttpServletRequest request, @RequestBody TripleGameRate gameRateVO) throws Exception {
net.sf.json.JSONObject responseObj = new net.sf.json.JSONObject();
HttpStatus httpStatus = null;
log.info("### Triple API ### - call \"/gameRateChange\" gameRateVO: " + gameRateVO);
try {
List<HashMap<String, String>> compList = compService.getGameRateCompList(gameRateVO);
for(HashMap<String, String> compGameRateInfo : compList) {
compGameRateInfo.put("vendor", gameRateVO.getVendor());
compGameRateInfo.put("gameRate", gameRateVO.getGameRate());
log.info("### Triple API ### gameRateChange() update start compGameRateInfo : " + compGameRateInfo);
int updResult = compService.updateCompGameRate(compGameRateInfo);
log.info("### Triple API ### gameRateChange() update result: " + updResult);
}
responseObj.put("result_code", 0);
httpStatus = HttpStatus.OK;
} catch(Exception e) {
responseObj.put("result_code", 1111);
responseObj.put("errors","UNKNOWN_ERROR");
httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
log.error(e.getMessage());
}
log.info("### Triple API Controller ### - call \"/gameRateChange\" response : " + responseObj);
return new ResponseEntity<net.sf.json.JSONObject>(responseObj, httpStatus);
}
}

View File

@@ -0,0 +1,260 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import com.bb.model.AdminBetSearch;
import com.bb.model.BetAutoLoseVO;
import com.bb.model.BetData;
import com.bb.model.BetDetail;
import com.bb.model.BetSearch;
import com.bb.model.BetSplusSearch;
import com.bb.model.Member;
import com.bb.model.RetailBetSearch;
import com.bb.model.RvHoldemVO;
import com.bb.model.TriplePurchaseId;
import com.bb.model.TripleVO;
import com.bb.model.TrxSearchVO;
public interface BetDao {
int insertBet(HashMap param);
int insertBetMap(HashMap param);
int updateEnd(HashMap mapParam);
int updateEndOld(HashMap mapParam);
int updateMapEnd(HashMap mapParam);
int updateMapEndOld(HashMap mapParam);
void updateEndAutoLose(HashMap mapParam);
Long getBetIdxByGameIdx(String betId);
Long getBetIdxByBetId(String betId);
int getBetListCnt(BetSearch search);
List<BetDetail> getBetList(BetSearch search);
int getFastBetIdListCnt(AdminBetSearch search);
List<HashMap<String, String>> getFastBetIdList(AdminBetSearch search);
HashMap<String, String> getFastBetItem(HashMap<String, String> item);
int getBetListNewCnt(AdminBetSearch search);
List<HashMap> getBetListNew(AdminBetSearch search);
int getPowerballResultListCnt(BetSearch search);
List<HashMap> getPowerballResultList(BetSearch search);
HashMap getGameRataMiniGame(@Valid BetData betData);
List<HashMap> getWaitBetlist(Map pParam);
void updateBetInfoMapByPowerball(HashMap betInfo);
void updateBetInfoMapResultByPowerball(HashMap betInfo);
void insertCashByPowerball(HashMap betInfo);
void updateBetInfoByPowerball(HashMap betInfo);
void insertPointByPowerball(HashMap betInfo);
void updatePointRegYnByPowerball(HashMap betInfo);
int getTripleTxnCheck(String tranId);
int getTripleDebitCheckByBetId(String betId);
int getBetinfoCheckByBetId(String betId);
int getTripleDebitCheckByTranId(String tranid);
int getTripleCreditCheckByBetId(String betId);
int getTripleCreditCheckByTranId(String tranid);
int getTripleIsCancelCheck(String betId);
int insertTripleTxnData(TripleVO tripleVO);
BetDetail getBetDetail(long betIdx);
int betCancelTriple(HashMap param);
int betCancelOldTriple(HashMap param);
int betCancelMega(HashMap param);
int getTripleIsBonusCheck(String betid);
int getUserBetListCnt(BetSearch search);
List<HashMap> getUserBetList(BetSearch search);
int getUserBetListNewCnt(BetSearch search);
List<HashMap> getUserBetListNew(BetSearch search);
int insertBetBonus(HashMap param);
int updateBetInfo(HashMap param);
int updateBetInfoOld(HashMap param);
int updateBetInfoMap(HashMap param);
int updateBetInfoMapOld(HashMap param);
Long getCashIdx(HashMap param);
int updateCashInfo(HashMap param);
int updateUserCashByAmount(HashMap param);
int updateUserCashByBalance(HashMap param);
int getBottomBetListCnt(RetailBetSearch search);
List<HashMap> getBottomBetList(RetailBetSearch search);
int getTripleAutoCancelCheck(String tranId);
int updateTripleTxnData(TripleVO tripleVO);
int betAutoCancelTriple(HashMap param);
List<HashMap> getTripleBetWaitListByCasino();
List<HashMap> getTripleBetWaitListBySlot();
HashMap<String, String> getSiteBetLimitInfo(TripleVO tripleVO);
List<HashMap> getTripleBetWaitList2();
List<HashMap> getBetPointList();
List<HashMap> getBetPointListBySite(String siteId);
int getTrxListCnt(TrxSearchVO searchVO);
List<HashMap<String, Object>> getTrxList(TrxSearchVO searchVO);
BetAutoLoseVO getBetInfoByBetId(String betId);
int insertCashInfoByReserve(HashMap cashInsertParam);
int insertBetSplusInfo(HashMap param);
int updateSplusStatus(HashMap param);
int getSportBetListCnt(BetSplusSearch search);
List<HashMap> getSportBetList(BetSplusSearch search);
int getSportEventListCnt(BetSplusSearch search);
List<HashMap> getSportEventList(BetSplusSearch search);
int getSportEventDetailListCnt(BetSplusSearch search);
List<HashMap> getSportEventDetailList(BetSplusSearch search);
int getSportBottomBetListCnt(BetSplusSearch search);
List<HashMap> getSportBottomBetList(BetSplusSearch search);
int updateSplusBetCancel(HashMap param);
int updatePurchaseId(TriplePurchaseId tripleVO);
int insertSlotTranInfo(HashMap param);
int updateSportReport(HashMap repParam);
int updateSportReportDebit(HashMap repParam);
int updateSportReportCredit(HashMap repParam);
int updateSportReportCancel(HashMap repParam);
int updateSportReportRolling(long betIdx);
int updateSportReportRollingCancel(long betIdx);
String getBetType(String betId);
HashMap<String, String> getBetTodayTotalInfo(HashMap betItem);
int getCurBalance(Member memInfo);
HashMap<String, String> getSiteVendorInfo(HashMap<String, String> vParam);
int insertBetNew(HashMap betData);
HashMap getReferenceData1(String betId);
HashMap getReferenceData2(String betId);
int cancelBetNew(HashMap betData);
int cancelBetNew2(long betIdx);
int bonusBetNew(HashMap betData);
HashMap<String, String> getRollingInfo(HashMap betData);
HashMap<String, String> getBetTodayTotalInfoNew(HashMap betData);
int insertBetRolling(HashMap betData);
int updateRollingYn(HashMap betData);
List<HashMap> getCancelPointAmtList(String betId);
List<HashMap> getCancelPointAmtList2(long betIdx);
int deleteRollingCancel(String betId);
int deleteRollingCancel2(long betIdx);
int deleteLosingCancel(String betId);
int deleteLosingCancel2(long betIdx);
int updateUserCashByAmountNew(HashMap balanceParam);
HashMap<String, String> getPreBetData(HashMap betData);
int insertSportBetRolling(long betIdx);
int deleteSportRollingCancel(long betIdx);
int updateSportRollingYn(long betIdx);
int updateCancelPoint(HashMap betData);
Long getCancelTargetIdx(HashMap betData);
int updateUserCashByAmountD(HashMap param);
int insertRvhCallbackLog(RvHoldemVO rvParam);
int insertBetLosing(HashMap betData);
int insertBetLosingNew(HashMap betData);
int insertWinLosing(HashMap betData);
}

View File

@@ -0,0 +1,747 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.AdminBetSearch;
import com.bb.model.BetAutoLoseVO;
import com.bb.model.BetData;
import com.bb.model.BetDetail;
import com.bb.model.BetSearch;
import com.bb.model.BetSplusSearch;
import com.bb.model.Member;
import com.bb.model.RetailBetSearch;
import com.bb.model.RvHoldemVO;
import com.bb.model.TriplePurchaseId;
import com.bb.model.TripleVO;
import com.bb.model.TrxSearchVO;
@Repository("betDao")
public class BetDaoImpl implements BetDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int insertBet(HashMap param) {
return sqlSession.insert("insertBet", param);
}
@Override
public int insertBetMap(HashMap param) {
return sqlSession.insert("insertBetMap", param);
}
@Override
public int updateEnd(HashMap mapParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateEnd", mapParam);
}
@Override
public int updateEndOld(HashMap mapParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateEndOld", mapParam);
}
@Override
public int updateMapEnd(HashMap mapParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateMapEnd", mapParam);
}
@Override
public int updateMapEndOld(HashMap mapParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateMapEndOld", mapParam);
}
@Override
public void updateEndAutoLose(HashMap mapParam) {
// TODO Auto-generated method stub
sqlSession.update("updateEndAutoLose", mapParam);
}
@Override
public Long getBetIdxByGameIdx(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getBetIdxByGameIdx", betId);
}
@Override
public Long getBetIdxByBetId(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getBetIdxByBetId", betId);
}
@Override
public int getBetListCnt(BetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetListCnt", search);
}
@Override
public List<BetDetail> getBetList(BetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBetList", search);
}
@Override
public int getFastBetIdListCnt(AdminBetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getFastBetIdListCnt", search);
}
@Override
public List<HashMap<String, String>> getFastBetIdList(AdminBetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getFastBetIdList", search);
}
@Override
public HashMap<String, String> getFastBetItem(HashMap<String, String> item) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getFastBetItem", item);
}
@Override
public int getBetListNewCnt(AdminBetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetListNewCnt", search);
}
@Override
public List<HashMap> getBetListNew(AdminBetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBetListNew", search);
}
@Override
public int getPowerballResultListCnt(BetSearch search) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getPowerballResultListCnt", search);
}
@Override
public List<HashMap> getPowerballResultList(BetSearch search) {
// TODO Auto-generated method stub
return sqlSession.selectList("getPowerballResultList", search);
}
@Override
public HashMap getGameRataMiniGame(@Valid BetData betData) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getGameRataMiniGame", betData);
}
@Override
public List<HashMap> getWaitBetlist(Map pParam) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getWaitBetlist", pParam);
}
@Override
public void updateBetInfoMapByPowerball(HashMap betInfo) {
// TODO Auto-generated method stub
sqlSession.update("updateBetInfoMapByPowerball", betInfo);
}
@Override
public void updateBetInfoMapResultByPowerball(HashMap betInfo) {
// TODO Auto-generated method stub
sqlSession.update("updateBetInfoMapResultByPowerball", betInfo);
}
@Override
public void insertCashByPowerball(HashMap betInfo) {
// TODO Auto-generated method stub
sqlSession.insert("insertCashByPowerball", betInfo);
}
@Override
public void updateBetInfoByPowerball(HashMap betInfo) {
// TODO Auto-generated method stub
sqlSession.update("updateBetInfoByPowerball", betInfo);
}
@Override
public void insertPointByPowerball(HashMap betInfo) {
// TODO Auto-generated method stub
sqlSession.insert("insertPointByPowerball", betInfo);
}
@Override
public void updatePointRegYnByPowerball(HashMap betInfo) {
// TODO Auto-generated method stub
sqlSession.update("updatePointRegYnByPowerball", betInfo);
}
@Override
public int getTripleTxnCheck(String tranId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleTxnCheck", tranId);
}
@Override
public int getTripleDebitCheckByBetId(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleDebitCheckByBetId", betId);
}
@Override
public int getBetinfoCheckByBetId(String betId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetinfoCheckByBetId", betId);
}
@Override
public int getTripleDebitCheckByTranId(String tranid) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleDebitCheckByTranId", tranid);
}
@Override
public int getTripleCreditCheckByBetId(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleCreditCheckByBetId", betId);
}
@Override
public int getTripleCreditCheckByTranId(String tranid) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleCreditCheckByTranId", tranid);
}
@Override
public int getTripleIsCancelCheck(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleIsCancelCheck", betId);
}
@Override
public int getTripleIsBonusCheck(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleIsBonusCheck", betId);
}
@Override
public int insertTripleTxnData(TripleVO tripleVO) {
// TODO Auto-generated method stub
return sqlSession.insert("insertTripleTxnData", tripleVO);
}
@Override
public BetDetail getBetDetail(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getBetDetail", betIdx);
}
@Override
public int betCancelTriple(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("betCancelTriple", param);
}
@Override
public int betCancelOldTriple(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("betCancelOldTriple", param);
}
@Override
public int betCancelMega(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("betCancelMega", param);
}
@Override
public int getUserBetListCnt(BetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getUserBetListCnt", search);
}
@Override
public List<HashMap> getUserBetList(BetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getUserBetList", search);
}
@Override
public int getUserBetListNewCnt(BetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getUserBetListNewCnt", search);
}
@Override
public List<HashMap> getUserBetListNew(BetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getUserBetListNew", search);
}
@Override
public int insertBetBonus(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.insert("insertBetBonus", param);
}
@Override
public int updateBetInfo(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateBetInfo", param);
}
@Override
public int updateBetInfoOld(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateBetInfoOld", param);
}
@Override
public int updateBetInfoMap(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateBetInfoMap", param);
}
@Override
public int updateBetInfoMapOld(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateBetInfoMapOld", param);
}
@Override
public Long getCashIdx(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashIdx", param);
}
@Override
public int updateCashInfo(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateCashInfo", param);
}
@Override
public int updateUserCashByAmount(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateUserCashByAmount", param);
}
@Override
public int updateUserCashByBalance(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateUserCashByBalance", param);
}
@Override
public int getBottomBetListCnt(RetailBetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBottomBetListCnt", search);
}
@Override
public List<HashMap> getBottomBetList(RetailBetSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBottomBetList", search);
}
@Override
public int getTripleAutoCancelCheck(String tranId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getTripleAutoCancelCheck", tranId);
}
@Override
public int updateTripleTxnData(TripleVO tripleVO) {
// TODO Auto-generated method stub
return sqlSession.update("updateTripleTxnData", tripleVO);
}
@Override
public int betAutoCancelTriple(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("betAutoCancelTriple", param);
}
@Override
public List<HashMap> getTripleBetWaitListByCasino() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getTripleBetWaitListByCasino");
}
@Override
public List<HashMap> getTripleBetWaitListBySlot() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getTripleBetWaitListBySlot");
}
@Override
public HashMap<String, String> getSiteBetLimitInfo(TripleVO tripleVO) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getSiteBetLimitInfo", tripleVO);
}
@Override
public List<HashMap> getTripleBetWaitList2() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getTripleBetWaitList2");
}
@Override
public List<HashMap> getBetPointList() {
// TODO Auto-generated method stub
// return sqlSessionSub.selectList("getBetPointList");
return sqlSession.selectList("getBetPointList");
}
@Override
public List<HashMap> getBetPointListBySite(String siteId) {
// TODO Auto-generated method stub
// return sqlSessionSub.selectList("getBetPointListBySite", siteId);
return sqlSession.selectList("getBetPointListBySite", siteId);
}
@Override
public int getTrxListCnt(TrxSearchVO searchVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getTrxListCnt", searchVO);
}
@Override
public List<HashMap<String, Object>> getTrxList(TrxSearchVO searchVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getTrxList", searchVO);
}
@Override
public BetAutoLoseVO getBetInfoByBetId(String betId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetInfoByBetId", betId);
}
@Override
public int insertCashInfoByReserve(HashMap cashInsertParam) {
// TODO Auto-generated method stub
return sqlSession.insert("insertCashInfoByReserve", cashInsertParam);
}
@Override
public int insertBetSplusInfo(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.insert("insertBetSplusInfo", param);
}
@Override
public int updateSplusStatus(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateSplusStatus", param);
}
@Override
public int getSportBetListCnt(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSportBetListCnt", search);
}
@Override
public List<HashMap> getSportBetList(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSportBetList", search);
}
@Override
public int getSportEventListCnt(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSportEventListCnt", search);
}
@Override
public List<HashMap> getSportEventList(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSportEventList", search);
}
@Override
public int getSportEventDetailListCnt(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSportEventDetailListCnt", search);
}
@Override
public List<HashMap> getSportEventDetailList(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSportEventDetailList", search);
}
@Override
public int getSportBottomBetListCnt(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSportBottomBetListCnt", search);
}
@Override
public List<HashMap> getSportBottomBetList(BetSplusSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSportBottomBetList", search);
}
@Override
public int updateSplusBetCancel(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateSplusBetCancel", param);
}
@Override
public int updatePurchaseId(TriplePurchaseId tripleVO) {
// TODO Auto-generated method stub
return sqlSession.update("updatePurchaseId", tripleVO);
}
@Override
public int insertSlotTranInfo(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.insert("insertSlotTranInfo", param);
}
@Override
public int updateSportReport(HashMap repParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportReport", repParam);
}
@Override
public int updateSportReportDebit(HashMap repParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportReportDebit", repParam);
}
@Override
public int updateSportReportCredit(HashMap repParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportReportCredit", repParam);
}
@Override
public int updateSportReportCancel(HashMap repParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportReportCancel", repParam);
}
@Override
public int updateSportReportRolling(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportReportRolling", betIdx);
}
@Override
public int updateSportReportRollingCancel(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportReportRollingCancel", betIdx);
}
@Override
public String getBetType(String betId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetType", betId);
}
@Override
public HashMap<String, String> getBetTodayTotalInfo(HashMap betItem) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetTodayTotalInfo", betItem);
}
@Override
public int getCurBalance(Member memInfo) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCurBalance", memInfo);
}
@Override
public HashMap<String, String> getSiteVendorInfo(HashMap<String, String> vParam) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getSiteVendorInfo", vParam);
}
@Override
public int insertBetNew(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.insert("insertBetNew", betData);
}
@Override
public HashMap getReferenceData1(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getReferenceData1", betId);
}
@Override
public HashMap getReferenceData2(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getReferenceData2", betId);
}
@Override
public int cancelBetNew(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.update("cancelBetNew", betData);
}
@Override
public int cancelBetNew2(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.update("cancelBetNew2", betIdx);
}
@Override
public int bonusBetNew(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.update("bonusBetNew", betData);
}
@Override
public HashMap<String, String> getRollingInfo(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getRollingInfo", betData);
}
@Override
public HashMap<String, String> getBetTodayTotalInfoNew(HashMap betData) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBetTodayTotalInfoNew", betData);
}
@Override
public int insertBetRolling(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.insert("insertBetRolling", betData);
}
@Override
public int updateRollingYn(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.update("updateRollingYn", betData);
}
@Override
public List<HashMap> getCancelPointAmtList(String betId) {
// TODO Auto-generated method stub
return sqlSession.selectList("getCancelPointAmtList", betId);
}
@Override
public List<HashMap> getCancelPointAmtList2(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.selectList("getCancelPointAmtList2", betIdx);
}
@Override
public int deleteRollingCancel(String betId) {
// TODO Auto-generated method stub
return sqlSession.delete("deleteRollingCancel", betId);
}
@Override
public int deleteRollingCancel2(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.delete("deleteRollingCancel2", betIdx);
}
@Override
public int deleteLosingCancel(String betId) {
// TODO Auto-generated method stub
return sqlSession.delete("deleteLosingCancel", betId);
}
@Override
public int deleteLosingCancel2(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.delete("deleteLosingCancel2", betIdx);
}
@Override
public int updateUserCashByAmountNew(HashMap balanceParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateUserCashByAmountNew", balanceParam);
}
@Override
public HashMap<String, String> getPreBetData(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getPreBetData", betData);
}
@Override
public int insertSportBetRolling(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.insert("insertSportBetRolling", betIdx);
}
@Override
public int deleteSportRollingCancel(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.delete("deleteSportRollingCancel", betIdx);
}
@Override
public int updateSportRollingYn(long betIdx) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportRollingYn", betIdx);
}
@Override
public int updateCancelPoint(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.update("updateCancelPoint", betData);
}
@Override
public Long getCancelTargetIdx(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCancelTargetIdx", betData);
}
@Override
public int updateUserCashByAmountD(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("updateUserCashByAmountD", param);
}
@Override
public int insertRvhCallbackLog(RvHoldemVO rvParam) {
// TODO Auto-generated method stub
return sqlSession.insert("insertRvhCallbackLog", rvParam);
}
@Override
public int insertBetLosing(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.insert("insertBetLosing", betData);
}
@Override
public int insertBetLosingNew(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.insert("insertBetLosingNew", betData);
}
@Override
public int insertWinLosing(HashMap betData) {
// TODO Auto-generated method stub
return sqlSession.insert("insertWinLosing", betData);
}
}

View File

@@ -0,0 +1,87 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import com.bb.model.AnswerVo;
import com.bb.model.Board;
import com.bb.model.BoardListSearch;
import com.bb.model.Comment;
import com.bb.model.Message;
import com.bb.model.MessageListSearch;
public interface BoardDao {
int getBoardListCnt(@Valid BoardListSearch search);
List<Board> getBoardList(@Valid BoardListSearch search);
List<Integer> getBoardIdxList(@Valid BoardListSearch search);
int saveBoard(@Valid Board board);
int saveCmt(@Valid Comment comment);
Board getBoard(@Valid Board board);
List<HashMap> getCmtList(Map param);
Comment getComment(@Valid Comment comment);
void viewAdd(Board boardetail);
void adminRead(Board boardetail);
void msgSend(@Valid Message message);
void msgRead(@Valid Message message);
void msgUpdate(@Valid Message message);
int getMsgListCnt(@Valid MessageListSearch search);
List<Message> getMsgList(@Valid MessageListSearch search);
void allRead(@Valid Message message);
void msgDel(@Valid Message message);
int updateFaqStatus(int boardIdx);
List<AnswerVo> getAnswerList(AnswerVo search);
int saveAnswer(AnswerVo answer);
int updateAnswer(AnswerVo answer);
int deleteAnswer(AnswerVo answer);
List<HashMap<String, String>> getMainBoardList(BoardListSearch search);
List<HashMap<String, String>> getMainBoardList2(BoardListSearch search);
void msgDelList(@Valid Message message);
int getUserMsgListCnt(@Valid MessageListSearch search);
List<Message> getUserMsgList(@Valid MessageListSearch search);
void userAnswerCmtRead(Board boardetail);
void partnerMsgSend(@Valid Message message);
Message getJoinMessage(String siteId);
Board getSiteFlowBoard(BoardListSearch search);
int deleteBoard(int boardIdx);
void levelMsgSend(@Valid Message message);
int setBoardViewYn(Board board);
int deleteYBoard(int boardIdx);
}

View File

@@ -0,0 +1,242 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.AnswerVo;
import com.bb.model.Board;
import com.bb.model.BoardListSearch;
import com.bb.model.Comment;
import com.bb.model.Message;
import com.bb.model.MessageListSearch;
@Repository("boardDao")
public class BoardDaoImpl implements BoardDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int getBoardListCnt(@Valid BoardListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBoardListCnt", search);
}
@Override
public List<Board> getBoardList(@Valid BoardListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBoardList", search);
}
@Override
public List<Integer> getBoardIdxList(@Valid BoardListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBoardIdxList", search);
}
@Override
public int saveBoard(@Valid Board board) {
// TODO Auto-generated method stub
return sqlSession.insert("saveBoard", board);
}
@Override
public int saveCmt(@Valid Comment comment) {
// TODO Auto-generated method stub
return sqlSession.insert("saveCmt", comment);
}
@Override
public Board getBoard(@Valid Board board) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBoard", board);
}
@Override
public List<HashMap> getCmtList(Map param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCmtList", param);
}
@Override
public Comment getComment(@Valid Comment comment) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getComment", comment);
}
@Override
public void viewAdd(Board boardetail) {
// TODO Auto-generated method stub
sqlSession.update("viewAdd", boardetail);
}
@Override
public void adminRead(Board boardetail) {
// TODO Auto-generated method stub
sqlSession.update("adminRead", boardetail);
}
@Override
public void msgSend(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.insert("msgSend", message);
}
@Override
public void msgRead(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.insert("msgRead", message);
}
@Override
public void msgUpdate(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.update("msgUpdate", message);
}
@Override
public int getMsgListCnt(@Valid MessageListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMsgListCnt", search);
}
@Override
public List<Message> getMsgList(@Valid MessageListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMsgList", search);
}
@Override
public void allRead(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.insert("allRead", message);
}
@Override
public void msgDel(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.insert("msgDel", message);
}
@Override
public int updateFaqStatus(int boardIdx) {
// TODO Auto-generated method stub
return sqlSession.update("updateFaqStatus", boardIdx);
}
@Override
public List<AnswerVo> getAnswerList(AnswerVo search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAnswerList", search);
}
@Override
public int saveAnswer(AnswerVo answer) {
// TODO Auto-generated method stub
return sqlSession.insert("saveAnswer", answer);
}
@Override
public int updateAnswer(AnswerVo answer) {
// TODO Auto-generated method stub
return sqlSession.insert("updateAnswer", answer);
}
@Override
public int deleteAnswer(AnswerVo answer) {
// TODO Auto-generated method stub
return sqlSession.update("deleteAnswer", answer);
}
@Override
public List<HashMap<String, String>> getMainBoardList(BoardListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMainBoardList", search);
}
@Override
public List<HashMap<String, String>> getMainBoardList2(BoardListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMainBoardList2", search);
}
@Override
public void msgDelList(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.update("msgDelList", message);
}
@Override
public int getUserMsgListCnt(@Valid MessageListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getUserMsgListCnt", search);
}
@Override
public List<Message> getUserMsgList(@Valid MessageListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getUserMsgList", search);
}
@Override
public void userAnswerCmtRead(Board boardetail) {
// TODO Auto-generated method stub
sqlSession.update("userAnswerCmtRead", boardetail);
}
@Override
public void partnerMsgSend(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.insert("partnerMsgSend", message);
}
@Override
public Message getJoinMessage(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getJoinMessage", siteId);
}
@Override
public Board getSiteFlowBoard(BoardListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteFlowBoard", search);
}
@Override
public int deleteBoard(int boardIdx) {
// TODO Auto-generated method stub
return sqlSession.delete("deleteBoard", boardIdx);
}
@Override
public void levelMsgSend(@Valid Message message) {
// TODO Auto-generated method stub
sqlSession.insert("levelMsgSend", message);
}
@Override
public int setBoardViewYn(Board board) {
// TODO Auto-generated method stub
return sqlSession.update("setBoardViewYn", board);
}
@Override
public int deleteYBoard(int boardIdx) {
// TODO Auto-generated method stub
return sqlSession.update("deleteYBoard", boardIdx);
}
}

View File

@@ -0,0 +1,97 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.bb.model.AdminCashSearch;
import com.bb.model.CashDetail;
import com.bb.model.CashQueVO;
import com.bb.model.CashSearch;
import com.bb.model.CashStatus;
import com.bb.model.CashTranLogSrch;
import com.bb.model.CouponSearch;
import com.bb.model.CouponVO;
import com.bb.model.Member;
import com.bb.model.MemberSearch;
import com.bb.model.Point;
import com.bb.model.PointSearch;
import com.bb.model.RetailCashSearch;
public interface CashDao {
int insertCash(CashDetail cash);
void updateMyCash(CashDetail cash);
int getCashListCnt(CashSearch search);
List<CashDetail> getCashList(CashSearch search);
HashMap getCashListSum(CashSearch search);
int updateStatus(CashStatus status);
int insertBetPoint(String LOG_PREFIX, HashMap mapParam);
HashMap<String, String> getCashInfo(CashStatus status);
int updateCiAmt(Map param);
int updateCoAmt(Map param);
int getCashIOListCnt(CashSearch search);
List<HashMap> getCashIOList(CashSearch search);
HashMap getCashTotalListCnt(CashSearch search);
List<HashMap> getCashTotalList(CashSearch search);
int getPointListCnt(PointSearch search);
List<HashMap> getPointList(PointSearch search);
HashMap getPointSumInfo(PointSearch search);
int getPointListNewCnt(PointSearch search);
List<HashMap> getPointListNew(PointSearch search);
List<HashMap> getPointSum(PointSearch search);
long getMemCash(CashDetail cash);
HashMap getAccBankInfo(Member search);
long pointInsert(Point point);
void delCash(CashSearch search);
void updateMemPoint(Map param);
void updateUserGameMoney(HashMap cashParam);
String getCreditCheck(String siteId);
int getCashSendListCnt(CashSearch search);
List<HashMap<String, Object>> getCashSendList(CashSearch search);
int getAdminCashIOListCnt(AdminCashSearch search);
List<HashMap> getAdminCashIOList(AdminCashSearch search);
HashMap getAdminCashIOListSum(AdminCashSearch search);
int getAdminPointIOListCnt(AdminCashSearch search);
List<HashMap> getAdminPointIOList(AdminCashSearch search);
HashMap getAdminPointIOListSum(AdminCashSearch search);
int cashTransLogCnt(CashTranLogSrch search);
List<HashMap> cashTransLogList(CashTranLogSrch search);
int cashTransLogCnt2(CashTranLogSrch search);
List<HashMap> cashTransLogList2(CashTranLogSrch search);
List<HashMap<String, String>> getMainCashList(CashSearch param);
int getCashInCnt(Member search);
int getCashOutCnt(Member search);
int insertCashInfo(HashMap cashInfoParam);
int getCashinfoCnt(CashDetail paramCash);
int getCashinfoRetailCnt(CashDetail paramCash);
int getUserBalance(Member search);
int getPointinfoCnt(Point point);
int getBottomCashListCnt(RetailCashSearch search);
List<HashMap> getBottomCashList(RetailCashSearch search);
int getBottomCashListCnt2(RetailCashSearch search);
List<HashMap> getBottomCashList2(RetailCashSearch search);
int getMemCashForUpdate(MemberSearch search);
HashMap<String, String> getLastCashIn(CashSearch search);
HashMap<String, String> getLastCashInToBetSum(HashMap<String, String> param);
HashMap<String, String> getLastCashInToBonusPoint(HashMap<String, String> param);
Integer getFirstDailyCnt(HashMap pointParam);
int getCashWaitTimeCheck(CashDetail paramCash);
List<CashQueVO> getCashQueList();
long getBalance(CashQueVO item);
int updateQueStatus(HashMap<String, Object> param);
long cashInsertByCoupon(CashDetail cash);
int couponCreate(CouponVO coupon);
int updateCouponItem(CouponVO coupon);
int checkCouponNumber(String couponNumber);
CouponVO getCouponItem(String couponNumber);
int getCouponListCnt(CouponSearch search);
List<HashMap<String, String>> getCouponList(CouponSearch search);
int getMyCouponListCnt(CouponSearch search);
List<HashMap<String, String>> getMyCouponList(CouponSearch search);
HashMap<String, String> getLastCashInBy24H(CashSearch search);
List<HashMap<String, String>> getLastCashInToBetSumBy24H(HashMap<String, String> param);
int insertCashBonus(HashMap data);
HashMap getCashBonusInfo(long cashIdx);
int updateCashBonus(HashMap data);
}

View File

@@ -0,0 +1,533 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.AdminCashSearch;
import com.bb.model.CashDetail;
import com.bb.model.CashQueVO;
import com.bb.model.CashSearch;
import com.bb.model.CashStatus;
import com.bb.model.CashTranLogSrch;
import com.bb.model.CouponSearch;
import com.bb.model.CouponVO;
import com.bb.model.Member;
import com.bb.model.MemberSearch;
import com.bb.model.Point;
import com.bb.model.PointSearch;
import com.bb.model.RetailCashSearch;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Repository("CashDao")
public class CashDaoImpl implements CashDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int insertCash(CashDetail cash) {
return sqlSession.insert("insertCash", cash);
}
@Override
public void updateMyCash(CashDetail cash) {
// TODO Auto-generated method stub
sqlSession.update("updateMyCash", cash);
}
@Override
public int getCashListCnt(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCashListCnt", search);
}
@Override
public List<CashDetail> getCashList(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCashList", search);
}
@Override
public HashMap getCashListSum(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCashListSum", search);
}
@Override
public int updateStatus(CashStatus status) {
// TODO Auto-generated method stub
return sqlSession.update("cashUpdateStatus", status);
}
@Override
public int insertBetPoint(String LOG_PREFIX, HashMap mapParam) {
int pointResult = 0;
int betRate = (int) mapParam.get("betRate");
String gameCategory = mapParam.get("gameCategory").toString();
String vendorCode = mapParam.get("vendorCode").toString();
String isBlankSpinYn = mapParam.get("isBlankSpinYn").toString();
if(isBlankSpinYn.equals("N")) {
if(vendorCode.equals("33") || vendorCode.equals("powerball")) {
// "하이로우" 멀티 롤링요율 처리
pointResult = sqlSession.insert("insertMultiBetPoint", mapParam);
log.debug("pointProc::SUCC::pointMultiResult::[" + pointResult + "]::betRate::[" + betRate + "]");
} else {
if((gameCategory.equals("casino") && betRate >= 12)) {
log.info("pointProc::NONE::[betIdx::"+mapParam.get("betIdx")+"]::betRate::[" + betRate + "]");
} else {
// Slot
// Sport
// Minigame ("하이로우" 멀티 롤링요율 제외)
// Casino AND betRate < 12
pointResult = sqlSession.insert("insertBetPoint", mapParam);
log.debug("pointProc::SUCC::[betIdx::"+mapParam.get("betIdx")+"]::pointResult::[" + pointResult + "]::betRate::[" + betRate + "]");
}
}
}
int betResult = sqlSession.update("updatePointRegY", mapParam);
log.debug(LOG_PREFIX+ "updatePointRegY::Result::" + betResult);
return pointResult;
}
@Override
public HashMap<String, String> getCashInfo(CashStatus status) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashInfo", status);
}
@Override
public int updateCiAmt(Map param) {
return sqlSession.update("updateCiAmt", param);
}
@Override
public int updateCoAmt(Map param) {
return sqlSession.update("updateCoAmt", param);
}
@Override
public int getCashIOListCnt(CashSearch search) {
return sqlSessionSub.selectOne("getCashIOListCnt", search);
}
@Override
public List<HashMap> getCashIOList(CashSearch search) {
return sqlSessionSub.selectList("getCashIOList", search);
}
@Override
public HashMap getCashTotalListCnt(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCashTotalListCnt", search);
}
@Override
public List<HashMap> getCashTotalList(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCashTotalList", search);
}
@Override
public int getPointListCnt(PointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPointListCnt", search);
}
@Override
public List<HashMap> getPointList(PointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPointList", search);
}
@Override
public HashMap getPointSumInfo(PointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPointSumInfo", search);
}
@Override
public int getPointListNewCnt(PointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPointListNewCnt", search);
}
@Override
public List<HashMap> getPointListNew(PointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPointListNew", search);
}
@Override
public List<HashMap> getPointSum(PointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPointSum", search);
}
@Override
public long getMemCash(CashDetail cash) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getMemCash", cash);
}
@Override
public HashMap getAccBankInfo(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAccBankInfo", search);
}
@Override
public long pointInsert(Point point) {
// TODO Auto-generated method stub
return sqlSession.insert("pointInsert", point);
}
@Override
public void delCash(CashSearch search) {
// TODO Auto-generated method stub
sqlSession.update("delCash", search);
}
@Override
public void updateMemPoint(Map param) {
// TODO Auto-generated method stub
sqlSession.update("updateMemPoint", param);
}
@Override
public void updateUserGameMoney(HashMap cashParam) {
// TODO Auto-generated method stub
sqlSession.update("updateUserGameMoney", cashParam);
}
@Override
public String getCreditCheck(String siteId) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCreditCheck", siteId);
}
@Override
public int getCashSendListCnt(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCashSendListCnt", search);
}
@Override
public List<HashMap<String, Object>> getCashSendList(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCashSendList", search);
}
@Override
public int getAdminCashIOListCnt(AdminCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminCashIOListCnt", search);
}
@Override
public List<HashMap> getAdminCashIOList(AdminCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminCashIOList", search);
}
@Override
public HashMap getAdminCashIOListSum(AdminCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminCashIOListSum", search);
}
@Override
public int getAdminPointIOListCnt(AdminCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminPointIOListCnt", search);
}
@Override
public List<HashMap> getAdminPointIOList(AdminCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminPointIOList", search);
}
@Override
public HashMap getAdminPointIOListSum(AdminCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminPointIOListSum", search);
}
@Override
public int cashTransLogCnt(CashTranLogSrch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("cashTransLogCnt", search);
}
@Override
public List<HashMap> cashTransLogList(CashTranLogSrch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("cashTransLogList", search);
}
@Override
public int cashTransLogCnt2(CashTranLogSrch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("cashTransLogCnt2", search);
}
@Override
public List<HashMap> cashTransLogList2(CashTranLogSrch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("cashTransLogList2", search);
}
@Override
public List<HashMap<String, String>> getMainCashList(CashSearch param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMainCashList", param);
}
@Override
public int getCashInCnt(Member search) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashInCnt", search);
}
@Override
public int getCashOutCnt(Member search) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashOutCnt", search);
}
@Override
public int insertCashInfo(HashMap cashInfoParam) {
// TODO Auto-generated method stub
return sqlSession.insert("insertCashInfo", cashInfoParam);
}
@Override
public int getCashinfoCnt(CashDetail paramCash) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashinfoCnt", paramCash);
}
@Override
public int getCashinfoRetailCnt(CashDetail paramCash) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashinfoRetailCnt", paramCash);
}
@Override
public int getUserBalance(Member search) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getUserBalance", search);
}
@Override
public int getPointinfoCnt(Point point) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getPointinfoCnt", point);
}
@Override
public int getBottomCashListCnt(RetailCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBottomCashListCnt", search);
}
@Override
public List<HashMap> getBottomCashList(RetailCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBottomCashList", search);
}
@Override
public int getBottomCashListCnt2(RetailCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBottomCashListCnt2", search);
}
@Override
public List<HashMap> getBottomCashList2(RetailCashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBottomCashList2", search);
}
@Override
public int getMemCashForUpdate(MemberSearch search) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getMemCashForUpdate", search);
}
@Override
public HashMap<String, String> getLastCashIn(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getLastCashIn", search);
}
@Override
public HashMap<String, String> getLastCashInToBetSum(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getLastCashInToBetSum", param);
}
@Override
public HashMap<String, String> getLastCashInToBonusPoint(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getLastCashInToBonusPoint", param);
}
@Override
public Integer getFirstDailyCnt(HashMap pointParam) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getFirstDailyCnt", pointParam);
}
@Override
public int getCashWaitTimeCheck(CashDetail paramCash) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCashWaitTimeCheck", paramCash);
}
@Override
public List<CashQueVO> getCashQueList() {
// TODO Auto-generated method stub
return sqlSession.selectList("getCashQueList");
}
@Override
public long getBalance(CashQueVO item) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getBalance", item);
}
@Override
public int updateQueStatus(HashMap<String, Object> param) {
// TODO Auto-generated method stub
return sqlSession.update("updateQueStatus", param);
}
@Override
public long cashInsertByCoupon(CashDetail cash) {
// TODO Auto-generated method stub
return sqlSession.insert("cashInsertByCoupon", cash);
}
@Override
public int couponCreate(CouponVO couponVO) {
// TODO Auto-generated method stub
return sqlSession.insert("couponCreate", couponVO);
}
@Override
public int updateCouponItem(CouponVO couponVO) {
// TODO Auto-generated method stub
return sqlSession.update("updateCouponItem", couponVO);
}
@Override
public int checkCouponNumber(String couponNumber) {
// TODO Auto-generated method stub
return sqlSession.selectOne("checkCouponNumber", couponNumber);
}
@Override
public CouponVO getCouponItem(String couponNumber) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCouponItem", couponNumber);
}
@Override
public int getCouponListCnt(CouponSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCouponListCnt", search);
}
@Override
public List<HashMap<String, String>> getCouponList(CouponSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCouponList", search);
}
@Override
public int getMyCouponListCnt(CouponSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyCouponListCnt", search);
}
@Override
public List<HashMap<String, String>> getMyCouponList(CouponSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyCouponList", search);
}
@Override
public HashMap<String, String> getLastCashInBy24H(CashSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getLastCashInBy24H", search);
}
@Override
public List<HashMap<String, String>> getLastCashInToBetSumBy24H(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getLastCashInToBetSumBy24H", param);
}
@Override
public int insertCashBonus(HashMap data) {
// TODO Auto-generated method stub
return sqlSession.insert("insertCashBonus", data);
}
@Override
public HashMap getCashBonusInfo(long cashIdx) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCashBonusInfo", cashIdx);
}
@Override
public int updateCashBonus(HashMap data) {
// TODO Auto-generated method stub
return sqlSession.insert("updateCashBonus", data);
}
}

View File

@@ -0,0 +1,275 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.bb.model.Admin;
import com.bb.model.AdminIp;
import com.bb.model.AdminLogSearch;
import com.bb.model.AdminSearch;
import com.bb.model.Bank;
import com.bb.model.Banner;
import com.bb.model.Block;
import com.bb.model.BlockSearch;
import com.bb.model.ChargingPointSettingVO;
import com.bb.model.Code;
import com.bb.model.CodeSearch;
import com.bb.model.CronServerInfo;
import com.bb.model.DomainPartnerVO;
import com.bb.model.GameCodeSearchVO;
import com.bb.model.GameCodeVO;
import com.bb.model.GameSetting;
import com.bb.model.GameSettingItem;
import com.bb.model.LevelBank;
import com.bb.model.LevelBetLimit;
import com.bb.model.LevelDomain;
import com.bb.model.LevelFailPoint;
import com.bb.model.LevelOutPwd;
import com.bb.model.Member;
import com.bb.model.MenuVO;
import com.bb.model.NotiBgmVo;
import com.bb.model.SiteCashBonusSettingVO;
import com.bb.model.SiteCheckReq;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import jakarta.validation.Valid;
public interface CommonDao {
List<HashMap> getCodeList(CodeSearch codesSearch);
HashMap getCode(CodeSearch codesSearch);
int getDupRepotCheck();
List<HashMap> getDailyList(String cmd);
int updateReport(HashMap report);
int updateReport2();
int insertReport(HashMap report);
int insertReport2();
List<HashMap> getDailyListYday();
int updateReportYday1(HashMap report);
int updateReportYday2();
int updateReportYday3();
// void updateReport(HashMap<String, String> setTime);
// void insertReport(HashMap<String, String> setTime);
HashMap getSiteOption(String siteId);
void insertlog(Map logParam);
void updateMemLogin(Map logParam);
List<HashMap> getlastLoginToken();
void updatelog(Map logParam);
int optionSave(SiteOption option);
SiteOption getSiteSetting(SiteSearch search);
HashMap getSiteAccoucnt(SiteSearch search);
void bankSave(Bank bank);
List<Bank> getAdminBankList(SiteSearch search);
List<Bank> getBankList(SiteSearch search);
void bannerSave(Banner banner);
List<Banner> getBannerList(SiteSearch search);
void insertCode(@Valid Code code);
List<HashMap> getLbList(SiteSearch search);
void accountSave(LevelBank levelBank);
List<LevelBetLimit> getLbetLimitList(SiteSearch search);
void setLbetLimitList(LevelBetLimit betLimit);
List<HashMap> getFailPointList(SiteSearch search);
void failPointSave(LevelFailPoint failPoint);
List<HashMap> getDomainList(SiteSearch search);
void domainSave(LevelDomain domain);
List<HashMap> getOutPwdList(SiteSearch search);
void outPwdSave(LevelOutPwd outPwd);
int getAdminLogListCnt(@Valid AdminLogSearch search);
List<HashMap> getAdminLogList(@Valid AdminLogSearch search);
void insertAdminlog(Map logParam);
int getSiteBlockListCnt(@Valid BlockSearch search);
List<HashMap> getSiteBlockList(@Valid BlockSearch search);
void blockSave(@Valid Block block);
int getSiteAdminListCnt(@Valid AdminSearch search);
List<HashMap> getSiteAdminList(@Valid AdminSearch search);
void adminSave(Admin admin);
void adminDelete(Admin admin);
int getSiteAdminIpListCnt(@Valid AdminSearch search);
List<HashMap> getSiteAdminIpList(@Valid AdminSearch search);
void adminIpSave(AdminIp adminIp);
void adminIpDelete(AdminIp adminIp);
void updateIpInfo(Map ipParam);
List<HashMap> getLoginSite();
int gameSettingSave(List<GameSettingItem> settingList);
List<HashMap> gameSettingList(GameSetting searchSetting);
int siteCheckSave(SiteCheckReq siteCheckReq);
List<HashMap> isSiteCheck();
void changeSiteCheckOff(SiteCheckReq param);
void changeSiteSettingCheckYn(SiteCheckReq param);
List<HashMap> siteCheckList(SiteCheckReq param);
HashMap siteCheckDetail(SiteCheckReq param);
HashMap siteCheckInfo(SiteCheckReq param);
List<HashMap<String, String>> getGameCodeTabList(GameCodeSearchVO searchVO);
List<HashMap<String, String>> getGameCodeColList(GameCodeSearchVO searchVO);
List<HashMap<String, String>> getGameCodeList(GameCodeSearchVO searchVO);
int gameCodeRegist(GameCodeVO gameCodeVO);
int gameCodeUpdate(GameCodeVO gameCodeVO);
int gameCodeAddMemRate(GameCodeVO gameCodeVO);
int gameCodeAddSiteGameSetting(GameCodeVO gameCodeVO);
List<Banner> getPopupList(SiteSearch search);
List<Banner> getBannerInfoList(SiteSearch search);
List<Banner> getLoginPopupList(SiteSearch paramSite);
List<HashMap> getGameCodes(CodeSearch codesSearch);
String getApiVendor(CodeSearch codeSearch);
List<MenuVO> getMenuList(HashMap<String, String> param);
List<String> getVendorList();
List<HashMap> getGameGroupCodes(String siteId);
List<HashMap> getGameCodesForSuper(CodeSearch codesSearch);
List<HashMap> getGameGroupCodesForSuper(String siteId);
CronServerInfo getServerCronStatus(CronServerInfo cronStatus);
List<HashMap<String, Object>> getDomainPartnerList(DomainPartnerVO domainPartnerVO);
int domainPartnerSave(DomainPartnerVO domainPartnerVO);
int domainPartnerDelete(DomainPartnerVO domainPartnerVO);
String getJoinRecommanderId(SiteSearch paramSite);
HashMap getSessionTransactionIsolation();
HashMap<String, String> getDailyTime();
void updateDailyTime(HashMap<String, String> setTime);
List<HashMap> getChargingPointSettingList(int siteIdx);
ChargingPointSettingVO getChargingPointSetting(ChargingPointSettingVO param);
int memChargingPointSettingSave(ChargingPointSettingVO settingVO);
int siteChargingPointSettingSave(ChargingPointSettingVO settingVO);
String getJackpot(HashMap params);
HashMap getCodeBySite(CodeSearch codeSrch);
int getSiteLogoutTimeLimit(String siteId);
List<HashMap> getRateCategory(String siteId);
HashMap<String, String> getUserInfoByToken(String token);
HashMap<String, String> getAdminInfoByToken(String token);
List<MenuVO> getMenuBookmarkList(HashMap<String, String> param);
HashMap<String, String> getSiteMemo(String siteId);
int updateBookmarkMenu(MenuVO param);
int updateSiteMemo(HashMap<String, String> param);
int getSiteCheckCount(SiteCheckReq siteCheckReq);
void updateDayCashInDate(HashMap dailyParam);
List<HashMap> getMonthList();
int insertMonthReport(HashMap report);
void updateAcctionLog(Map logParam);
List<HashMap> getRollingList(String days);
int insertRollingReport(HashMap report);
HashMap<String, String> getVassApiInfo(Member search);
List<NotiBgmVo> getNotiBgmList(SiteSearch search);
int setNotiBgmSave(NotiBgmVo notiBgmVo);
List<HashMap> getDailyAutoLevelUpList();
int updateAutoLevelUp(HashMap user);
List<SiteCashBonusSettingVO> getSiteCashBonusSettingList(Integer siteIdx);
int setSiteCashBonusSettingSave(SiteCashBonusSettingVO settingVO);
int bankDelete(Bank bank);
}

View File

@@ -0,0 +1,758 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.Admin;
import com.bb.model.AdminIp;
import com.bb.model.AdminLogSearch;
import com.bb.model.AdminSearch;
import com.bb.model.Bank;
import com.bb.model.Banner;
import com.bb.model.Block;
import com.bb.model.BlockSearch;
import com.bb.model.ChargingPointSettingVO;
import com.bb.model.Code;
import com.bb.model.CodeSearch;
import com.bb.model.CronServerInfo;
import com.bb.model.DomainPartnerVO;
import com.bb.model.GameCodeSearchVO;
import com.bb.model.GameCodeVO;
import com.bb.model.GameSetting;
import com.bb.model.GameSettingItem;
import com.bb.model.LevelBank;
import com.bb.model.LevelBetLimit;
import com.bb.model.LevelDomain;
import com.bb.model.LevelFailPoint;
import com.bb.model.LevelOutPwd;
import com.bb.model.Member;
import com.bb.model.MenuVO;
import com.bb.model.NotiBgmVo;
import com.bb.model.SiteCashBonusSettingVO;
import com.bb.model.SiteCheckReq;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import jakarta.validation.Valid;
@Repository("commonDao")
public class CommonDaoImpl implements CommonDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public List<HashMap> getCodeList(CodeSearch codesSearch) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCodeList", codesSearch);
}
@Override
public HashMap getCode(CodeSearch codesSearch) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCode", codesSearch);
}
@Override
public int getDupRepotCheck() {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDupRepotCheck");
}
@Override
public List<HashMap> getDailyList(String cmd) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDailyList", cmd);
}
@Override
public int updateReport(HashMap report) {
// TODO Auto-generated method stub
return sqlSession.update("updateReport", report);
}
@Override
public int updateReport2() {
// TODO Auto-generated method stub
return sqlSession.update("updateReport2");
}
@Override
public int insertReport(HashMap report) {
// TODO Auto-generated method stub
return sqlSession.insert("insertReport", report);
}
@Override
public int insertReport2() {
// TODO Auto-generated method stub
return sqlSession.insert("insertReport2");
}
@Override
public List<HashMap> getDailyListYday() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDailyListYday");
}
@Override
public int updateReportYday1(HashMap report) {
// TODO Auto-generated method stub
return sqlSession.update("updateReportYday1", report);
}
@Override
public int updateReportYday2() {
// TODO Auto-generated method stub
return sqlSession.update("updateReportYday2");
}
@Override
public int updateReportYday3() {
// TODO Auto-generated method stub
return sqlSession.update("updateReportYday3");
}
// @Override
// public void updateReport(HashMap<String, String> setTime) {
// // TODO Auto-generated method stub
// sqlSession.update("updateReport", setTime);
// }
// @Override
// public void insertReport(HashMap<String, String> setTime) {
// // TODO Auto-generated method stub
// sqlSession.insert("insertReport", setTime);
// }
@Override
public HashMap getSiteOption(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteOption", siteId);
}
@Override
public void insertlog(Map logParam) {
// TODO Auto-generated method stub
sqlSession.insert("insertlog", logParam);
}
@Override
public void updateMemLogin(Map logParam) {
// TODO Auto-generated method stub
sqlSession.update("updateMemLogin", logParam);
}
@Override
public List<HashMap> getlastLoginToken() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getlastLoginToken");
}
@Override
public void updatelog(Map logParam) {
// TODO Auto-generated method stub
sqlSession.update("updatelog", logParam);
}
@Override
public int optionSave(SiteOption option) {
// TODO Auto-generated method stub
return sqlSession.insert("optionSave", option);
}
@Override
public SiteOption getSiteSetting(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteSetting", search);
}
@Override
public HashMap getSiteAccoucnt(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteAccoucnt", search);
}
@Override
public void bankSave(Bank bank) {
// TODO Auto-generated method stub
sqlSession.insert("bankSave", bank);
}
@Override
public List<Bank> getAdminBankList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminBankList", search);
}
@Override
public List<Bank> getBankList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBankList", search);
}
@Override
public void bannerSave(Banner banner) {
// TODO Auto-generated method stub
sqlSession.insert("bannerSave", banner);
}
@Override
public List<Banner> getBannerList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBannerList", search);
}
@Override
public void insertCode(@Valid Code code) {
// TODO Auto-generated method stub
sqlSession.insert("insertCode", code);
}
@Override
public List<HashMap> getLbList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getLbList", search);
}
@Override
public void accountSave(LevelBank levelBank) {
// TODO Auto-generated method stub
sqlSession.insert("accountSave", levelBank);
}
@Override
public List<LevelBetLimit> getLbetLimitList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getLbetLimitList", search);
}
@Override
public void setLbetLimitList(LevelBetLimit betLimit) {
// TODO Auto-generated method stub
sqlSession.update("setLbetLimitList", betLimit);
}
@Override
public List<HashMap> getFailPointList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getFailPointList", search);
}
@Override
public void failPointSave(LevelFailPoint failPoint) {
// TODO Auto-generated method stub
sqlSession.insert("failPointSave", failPoint);
}
@Override
public List<HashMap> getDomainList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDomainList", search);
}
@Override
public void domainSave(LevelDomain domain) {
// TODO Auto-generated method stub
sqlSession.insert("domainSave", domain);
}
@Override
public List<HashMap> getOutPwdList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getOutPwdList", search);
}
@Override
public void outPwdSave(LevelOutPwd outPwd) {
// TODO Auto-generated method stub
sqlSession.insert("outPwdSave", outPwd);
}
@Override
public int getAdminLogListCnt(@Valid AdminLogSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminLogListCnt", search);
}
@Override
public List<HashMap> getAdminLogList(@Valid AdminLogSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminLogList", search);
}
@Override
public void insertAdminlog(Map logParam) {
// TODO Auto-generated method stub
sqlSession.insert("insertAdminlog", logParam);
}
@Override
public int getSiteBlockListCnt(@Valid BlockSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteBlockListCnt", search);
}
@Override
public List<HashMap> getSiteBlockList(@Valid BlockSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSiteBlockList", search);
}
@Override
public void blockSave(@Valid Block block) {
// TODO Auto-generated method stub
sqlSession.insert("blockSave", block);
}
@Override
public int getSiteAdminListCnt(@Valid AdminSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteAdminListCnt", search);
}
@Override
public List<HashMap> getSiteAdminList(@Valid AdminSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSiteAdminList", search);
}
@Override
public void adminSave(Admin admin) {
// TODO Auto-generated method stub
sqlSession.insert("adminSave", admin);
}
@Override
public void adminDelete(Admin admin) {
// TODO Auto-generated method stub
sqlSession.delete("adminDelete", admin);
}
@Override
public int getSiteAdminIpListCnt(@Valid AdminSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteAdminIpListCnt", search);
}
@Override
public List<HashMap> getSiteAdminIpList(@Valid AdminSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSiteAdminIpList", search);
}
@Override
public void adminIpSave(AdminIp adminIp) {
// TODO Auto-generated method stub
sqlSession.insert("adminIpSave", adminIp);
}
@Override
public void adminIpDelete(AdminIp adminIp) {
// TODO Auto-generated method stub
sqlSession.insert("adminIpDelete", adminIp);
}
@Override
public void updateIpInfo(Map ipParam) {
// TODO Auto-generated method stub
sqlSession.update("updateIpInfo", ipParam);
}
@Override
public List<HashMap> getLoginSite() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getLoginSite", null);
}
@Override
public int gameSettingSave(List<GameSettingItem> settingList) {
// TODO Auto-generated method stub
return sqlSession.insert("gameSettingSave", settingList);
}
@Override
public List<HashMap> gameSettingList(GameSetting searchSetting) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("gameSettingList", searchSetting);
}
@Override
public int siteCheckSave(SiteCheckReq siteCheckReq) {
// TODO Auto-generated method stub
return sqlSession.insert("siteCheckSave", siteCheckReq);
}
@Override
public List<HashMap> isSiteCheck() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("isSiteCheck");
}
@Override
public void changeSiteCheckOff(SiteCheckReq param) {
// TODO Auto-generated method stub
sqlSession.update("changeSiteCheckOff", param);
}
@Override
public void changeSiteSettingCheckYn(SiteCheckReq param) {
// TODO Auto-generated method stub
sqlSession.update("changeSiteSettingCheckYn", param);
}
@Override
public List<HashMap> siteCheckList(SiteCheckReq param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("siteCheckList", param);
}
@Override
public HashMap siteCheckDetail(SiteCheckReq param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("siteCheckDetail", param);
}
@Override
public HashMap siteCheckInfo(SiteCheckReq param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("siteCheckInfo", param);
}
@Override
public List<HashMap<String, String>> getGameCodeTabList(GameCodeSearchVO searchVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameCodeTabList", searchVO);
}
@Override
public List<HashMap<String, String>> getGameCodeColList(GameCodeSearchVO searchVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameCodeColList", searchVO);
}
@Override
public List<HashMap<String, String>> getGameCodeList(GameCodeSearchVO searchVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameCodeList", searchVO);
}
@Override
public int gameCodeRegist(GameCodeVO gameCodeVO) {
// TODO Auto-generated method stub
return sqlSession.insert("gameCodeRegist", gameCodeVO);
}
@Override
public int gameCodeUpdate(GameCodeVO gameCodeVO) {
// TODO Auto-generated method stub
return sqlSession.update("gameCodeUpdate", gameCodeVO);
}
@Override
public int gameCodeAddMemRate(GameCodeVO gameCodeVO) {
// TODO Auto-generated method stub
return sqlSession.insert("gameCodeAddMemRate", gameCodeVO);
}
@Override
public int gameCodeAddSiteGameSetting(GameCodeVO gameCodeVO) {
// TODO Auto-generated method stub
return sqlSession.insert("gameCodeAddSiteGameSetting", gameCodeVO);
}
@Override
public List<Banner> getPopupList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPopupList", search);
}
@Override
public List<Banner> getBannerInfoList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBannerInfoList", search);
}
@Override
public List<Banner> getLoginPopupList(SiteSearch paramSite) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getLoginPopupList", paramSite);
}
@Override
public List<HashMap> getGameCodes(CodeSearch codesSearch) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameCodes", codesSearch);
}
@Override
public List<HashMap> getGameGroupCodes(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameGroupCodes", siteId);
}
@Override
public String getApiVendor(CodeSearch codeSearch) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getApiVendor", codeSearch);
}
@Override
public List<MenuVO> getMenuList(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMenuList", param);
}
@Override
public List<String> getVendorList() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getVendorList");
}
@Override
public List<HashMap> getGameCodesForSuper(CodeSearch codesSearch) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameCodesForSuper", codesSearch);
}
@Override
public List<HashMap> getGameGroupCodesForSuper(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameGroupCodesForSuper", siteId);
}
@Override
public CronServerInfo getServerCronStatus(CronServerInfo cronStatus) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getServerCronStatus", cronStatus);
}
@Override
public List<HashMap<String, Object>> getDomainPartnerList(DomainPartnerVO domainPartnerVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDomainPartnerList", domainPartnerVO);
}
@Override
public int domainPartnerSave(DomainPartnerVO domainPartnerVO) {
// TODO Auto-generated method stub
return sqlSession.insert("domainPartnerSave", domainPartnerVO);
}
@Override
public int domainPartnerDelete(DomainPartnerVO domainPartnerVO) {
// TODO Auto-generated method stub
return sqlSession.delete("domainPartnerDelete", domainPartnerVO);
}
@Override
public String getJoinRecommanderId(SiteSearch paramSite) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getJoinRecommanderId", paramSite);
}
@Override
public HashMap getSessionTransactionIsolation() {
// TODO Auto-generated method stub
return sqlSession.selectOne("getSessionTransactionIsolation");
}
@Override
public HashMap<String, String> getDailyTime() {
// TODO Auto-generated method stub
return sqlSession.selectOne("getDailyTime");
}
@Override
public void updateDailyTime(HashMap<String, String> setTime) {
// TODO Auto-generated method stub
sqlSession.update("updateDailyTime", setTime);
}
@Override
public List<HashMap> getChargingPointSettingList(int siteIdx) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getChargingPointSettingList", siteIdx);
}
@Override
public ChargingPointSettingVO getChargingPointSetting(ChargingPointSettingVO param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getChargingPointSetting", param);
}
@Override
public int memChargingPointSettingSave(ChargingPointSettingVO settingVO) {
// TODO Auto-generated method stub
return sqlSession.update("memChargingPointSettingSave", settingVO);
}
@Override
public int siteChargingPointSettingSave(ChargingPointSettingVO settingVO) {
// TODO Auto-generated method stub
return sqlSession.update("siteChargingPointSettingSave", settingVO);
}
@Override
public String getJackpot(HashMap params) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getJackpot", params);
}
@Override
public HashMap getCodeBySite(CodeSearch codeSrch) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getCodeBySite", codeSrch);
}
@Override
public int getSiteLogoutTimeLimit(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteLogoutTimeLimit", siteId);
}
@Override
public List<HashMap> getRateCategory(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRateCategory", siteId);
}
@Override
public HashMap<String, String> getUserInfoByToken(String token) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getUserInfoByToken", token);
}
@Override
public HashMap<String, String> getAdminInfoByToken(String token) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getAdminInfoByToken", token);
}
@Override
public List<MenuVO> getMenuBookmarkList(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMenuBookmarkList", param);
}
@Override
public int updateBookmarkMenu(MenuVO param) {
// TODO Auto-generated method stub
return sqlSession.update("updateBookmarkMenu", param);
}
@Override
public HashMap<String, String> getSiteMemo(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteMemo", siteId);
}
@Override
public int updateSiteMemo(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSession.update("updateSiteMemo", param);
}
@Override
public int getSiteCheckCount(SiteCheckReq siteCheckReq) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteCheckCount", siteCheckReq);
}
@Override
public void updateDayCashInDate(HashMap dailyParam) {
// TODO Auto-generated method stub
sqlSession.update("updateDayCashInDate", dailyParam);
}
@Override
public List<HashMap> getMonthList() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMonthList");
}
@Override
public int insertMonthReport(HashMap report) {
// TODO Auto-generated method stub
return sqlSession.insert("insertMonthReport", report);
}
@Override
public void updateAcctionLog(Map logParam) {
// TODO Auto-generated method stub
sqlSession.update("updateAcctionLog", logParam);
}
@Override
public List<HashMap> getRollingList(String days) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRollingList", days);
}
@Override
public int insertRollingReport(HashMap report) {
// TODO Auto-generated method stub
return sqlSession.insert("insertRollingReport", report);
}
@Override
public HashMap<String, String> getVassApiInfo(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getVassApiInfo", search);
}
@Override
public List<NotiBgmVo> getNotiBgmList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getNotiBgmList", search);
}
@Override
public int setNotiBgmSave(NotiBgmVo notiBgmVo) {
// TODO Auto-generated method stub
return sqlSession.insert("setNotiBgmSave", notiBgmVo);
}
@Override
public List<HashMap> getDailyAutoLevelUpList() {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDailyAutoLevelUpList");
}
@Override
public int updateAutoLevelUp(HashMap user) {
// TODO Auto-generated method stub
return sqlSession.update("updateAutoLevelUp", user);
}
@Override
public List<SiteCashBonusSettingVO> getSiteCashBonusSettingList(Integer siteIdx) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSiteCashBonusSettingList", siteIdx);
}
@Override
public int setSiteCashBonusSettingSave(SiteCashBonusSettingVO settingVO) {
// TODO Auto-generated method stub
return sqlSession.update("setSiteCashBonusSettingSave", settingVO);
}
@Override
public int bankDelete(Bank bank) {
// TODO Auto-generated method stub
return sqlSession.delete("bankDelete", bank);
}
}

View File

@@ -0,0 +1,126 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import com.bb.model.BiSubPointRateVo;
import com.bb.model.CompDetail;
import com.bb.model.CompResetInfo;
import com.bb.model.CompSearch;
import com.bb.model.GameSettingInfo;
import com.bb.model.Member;
import com.bb.model.MemberListSearch;
import com.bb.model.MenuVO;
import com.bb.model.OTPInfo;
import com.bb.model.PartnerCompInfo;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.model.TripleGameRate;
public interface CompDao {
int getPartnerCompListCnt(@Valid MemberListSearch search);
List<CompDetail> getPartnerCompList(@Valid MemberListSearch search);
CompDetail getPartnerComp(Site search);
HashMap getPartnerCompDetail(Member search);
int modifySiteGameSetting(BiSubPointRateVo biSubPointRateVo);
int modifyCreditSettings(PartnerCompInfo compInfo);
int modifyCreditRates(HashMap param);
int modifySiteSettings(SiteOption siteOption);
int getCheckTopComp(PartnerCompInfo compInfo);
int modifyCompInfo(PartnerCompInfo compInfo);
HashMap getCompInfoForDetail(SiteSearch search);
HashMap getSettingInfoForDetail(SiteSearch search);
HashMap getCompStatsForDetail(SiteSearch search);
List<HashMap> getTopCompListForDetail(SiteSearch search);
List<HashMap> getBotCompListForDetail(SiteSearch search);
int modifySiteGameSettingForSuper(GameSettingInfo item);
int modifyMenuSettings(MenuVO item);
List<HashMap> getCompanyRate(Member search);
List<HashMap<String, String>> getGameRateCompList(TripleGameRate gameRateVO);
int updateCompGameRate(HashMap<String, String> compGameRateInfo);
HashMap<String, String> getTripleParam(CompSearch search);
List<HashMap<String, String>> getTripleGameRate(HashMap<String, String> tripleParam);
int insertTripleRate(HashMap<String, String> tripleRate);
List<HashMap<String, String>> getOmsRateListByTripleGame(CompSearch search);
int updateOmsRateList(CompSearch search);
int resetDelete(CompResetInfo compResetInfo);
int resetUpdate(CompResetInfo compResetInfo);
int getResetMemIdCount(CompResetInfo compResetInfo);
int updateApiSetting(PartnerCompInfo compInfo);
List<HashMap<String, String>> getCompIdList(SiteSearch search);
List<HashMap> getSiteGameInfo(SiteSearch search);
List<MenuVO> getSiteMenuInfo(SiteSearch search);
void deleteTripleRate(CompSearch search);
int updateCompVictoryPassYn(SiteOption option);
String getAdminOtpUseYN(String adminId);
int registOtpInfo(OTPInfo otpParam);
int updateAdminOtpUseYN(OTPInfo otpParam);
int updateSuperOtpUseYN(OTPInfo otpParam);
OTPInfo getOtpInfo(String adminId);
String getAdminType(String adminId);
List<HashMap<String, String>> getAdminOtpInfoList(String siteId);
HashMap<String, Object> getTripleCreditInfo(String siteId);
void updateTripleSiteCredit(HashMap<String, Object> tripleCreditInfo);
int updateVendoMinMax(HashMap<String, Object> param);
String getLastMaxWinAmt(HashMap<String, Object> param);
String getLastMaxWinAmtCnt(HashMap<String, Object> param);
long getTripleSiteCredit(String tripleSiteId);
long getTripleSitePoint(String tripleSiteId);
HashMap<String, String> getTripleTargetSiteInfo(HashMap<String, Object> tripleCreditInfo);
void insertTripleCredit(HashMap<String, Object> creditParam);
void insertTripleCreditAiAo(HashMap<String, Object> creditParam);
String getSiteIdByAdminId(String adminId);
}

View File

@@ -0,0 +1,363 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.BiSubPointRateVo;
import com.bb.model.CompDetail;
import com.bb.model.CompResetInfo;
import com.bb.model.CompSearch;
import com.bb.model.GameSettingInfo;
import com.bb.model.Member;
import com.bb.model.MemberListSearch;
import com.bb.model.MenuVO;
import com.bb.model.OTPInfo;
import com.bb.model.PartnerCompInfo;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.model.TripleGameRate;
@Repository("compDao")
public class CompDaoImpl implements CompDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
/** 트리플DB 연결 */
@Autowired @Qualifier("sqlSessionTriple")
protected SqlSession sqlSessionTriple;
@Override
public int getPartnerCompListCnt(@Valid MemberListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPartnerCompListCnt", search);
}
@Override
public List<CompDetail> getPartnerCompList(@Valid MemberListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPartnerCompList", search);
}
@Override
public CompDetail getPartnerComp(Site search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPartnerComp", search);
}
@Override
public HashMap getPartnerCompDetail(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPartnerCompDetail", search);
}
@Override
public int modifySiteGameSetting(BiSubPointRateVo biSubPointRateVo) {
// TODO Auto-generated method stub
return sqlSession.insert("modifySiteGameSetting", biSubPointRateVo);
}
@Override
public int modifyCreditSettings(PartnerCompInfo compInfo) {
// TODO Auto-generated method stub
return sqlSession.update("modifyCreditSettings", compInfo);
}
@Override
public int modifyCreditRates(HashMap param) {
// TODO Auto-generated method stub
return sqlSession.update("modifyCreditRates", param);
}
@Override
public int modifySiteSettings(SiteOption siteOption) {
// TODO Auto-generated method stub
return sqlSession.update("modifySiteSettings", siteOption);
}
@Override
public int getCheckTopComp(PartnerCompInfo compInfo) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCheckTopComp", compInfo);
}
@Override
public int modifyCompInfo(PartnerCompInfo compInfo) {
// TODO Auto-generated method stub
return sqlSession.update("modifyCompInfo", compInfo);
}
@Override
public HashMap getCompInfoForDetail(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCompInfoForDetail", search);
}
@Override
public HashMap getSettingInfoForDetail(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSettingInfoForDetail", search);
}
@Override
public HashMap getCompStatsForDetail(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCompStatsForDetail", search);
}
@Override
public List<HashMap> getTopCompListForDetail(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getTopCompListForDetail", search);
}
@Override
public List<HashMap> getBotCompListForDetail(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBotCompListForDetail", search);
}
@Override
public int modifySiteGameSettingForSuper(GameSettingInfo item) {
// TODO Auto-generated method stub
return sqlSession.insert("modifySiteGameSettingForSuper", item);
}
@Override
public int modifyMenuSettings(MenuVO item) {
// TODO Auto-generated method stub
return sqlSession.update("modifyMenuSettings", item);
}
@Override
public List<HashMap> getCompanyRate(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCompanyRate", search);
}
@Override
public List<HashMap<String, String>> getGameRateCompList(TripleGameRate gameRateVO) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameRateCompList", gameRateVO);
}
@Override
public int updateCompGameRate(HashMap<String, String> compGameRateInfo) {
// TODO Auto-generated method stub
return sqlSession.update("updateCompGameRate", compGameRateInfo);
}
@Override
public HashMap<String, String> getTripleParam(CompSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getTripleParam", search);
}
@Override
public List<HashMap<String, String>> getTripleGameRate(HashMap<String, String> tripleParam) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectList("getTripleGameRate", tripleParam);
}
@Override
public int insertTripleRate(HashMap<String, String> tripleRate) {
// TODO Auto-generated method stub
return sqlSession.insert("insertTripleRate", tripleRate);
}
@Override
public List<HashMap<String, String>> getOmsRateListByTripleGame(CompSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getOmsRateListByTripleGame", search);
}
@Override
public int updateOmsRateList(CompSearch search) {
// TODO Auto-generated method stub
return sqlSession.update("updateOmsRateList", search);
}
@Override
public int resetDelete(CompResetInfo compResetInfo) {
// TODO Auto-generated method stub
return sqlSession.delete("resetDelete", compResetInfo);
}
@Override
public int resetUpdate(CompResetInfo compResetInfo) {
// TODO Auto-generated method stub
return sqlSession.update("resetUpdate", compResetInfo);
}
@Override
public int getResetMemIdCount(CompResetInfo compResetInfo) {
// TODO Auto-generated method stub
return sqlSession.selectOne("getResetMemIdCount", compResetInfo);
}
@Override
public int updateApiSetting(PartnerCompInfo compInfo) {
// TODO Auto-generated method stub
return sqlSession.update("updateApiSetting", compInfo);
}
@Override
public List<HashMap<String, String>> getCompIdList(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCompIdList", search);
}
@Override
public List<HashMap> getSiteGameInfo(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSiteGameInfo", search);
}
@Override
public List<MenuVO> getSiteMenuInfo(SiteSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getSiteMenuInfo", search);
}
@Override
public void deleteTripleRate(CompSearch search) {
// TODO Auto-generated method stub
sqlSession.delete("deleteTripleRate", search);
}
@Override
public int updateCompVictoryPassYn(SiteOption option) {
// TODO Auto-generated method stub
return sqlSession.update("updateCompVictoryPassYn", option);
}
@Override
public String getAdminOtpUseYN(String adminId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminOtpUseYN", adminId);
}
@Override
public int registOtpInfo(OTPInfo otpParam) {
// TODO Auto-generated method stub
return sqlSession.insert("registOtpInfo", otpParam);
}
@Override
public int updateAdminOtpUseYN(OTPInfo otpParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateAdminOtpUseYN", otpParam);
}
@Override
public int updateSuperOtpUseYN(OTPInfo otpParam) {
// TODO Auto-generated method stub
return sqlSession.update("updateSuperOtpUseYN", otpParam);
}
@Override
public OTPInfo getOtpInfo(String adminId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getOtpInfo", adminId);
}
@Override
public String getAdminType(String adminId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminType", adminId);
}
@Override
public List<HashMap<String, String>> getAdminOtpInfoList(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminOtpInfoList", siteId);
}
@Override
public HashMap<String, Object> getTripleCreditInfo(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getTripleCreditInfo", siteId);
}
@Override
public void updateTripleSiteCredit(HashMap<String, Object> tripleCreditInfo) {
// TODO Auto-generated method stub
sqlSessionTriple.update("updateTripleSiteCredit", tripleCreditInfo);
}
@Override
public int updateVendoMinMax(HashMap<String, Object> param) {
// TODO Auto-generated method stub
return sqlSession.update("updateVendoMinMax", param);
}
@Override
public String getLastMaxWinAmt(HashMap<String, Object> param) {
// TODO Auto-generated method stub
String lastMaxWinAmt = sqlSessionSub.selectOne("getLastMaxWinAmt", param);
if(lastMaxWinAmt == null) lastMaxWinAmt = "0";
return lastMaxWinAmt;
}
@Override
public String getLastMaxWinAmtCnt(HashMap<String, Object> param) {
// TODO Auto-generated method stub
String lastMaxWinAmtCnt = sqlSessionSub.selectOne("getLastMaxWinAmtCnt", param);
if(lastMaxWinAmtCnt == null) lastMaxWinAmtCnt = "0";
return lastMaxWinAmtCnt;
}
@Override
public long getTripleSiteCredit(String tripleSiteId) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectOne("getTripleSiteCredit", tripleSiteId);
}
@Override
public long getTripleSitePoint(String tripleSiteId) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectOne("getTripleSitePoint", tripleSiteId);
}
@Override
public HashMap<String, String> getTripleTargetSiteInfo(HashMap<String, Object> tripleCreditInfo) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectOne("getTripleTargetSiteInfo", tripleCreditInfo);
}
@Override
public void insertTripleCredit(HashMap<String, Object> creditParam) {
// TODO Auto-generated method stub
sqlSessionTriple.insert("insertTripleCredit", creditParam);
}
@Override
public void insertTripleCreditAiAo(HashMap<String, Object> creditParam) {
// TODO Auto-generated method stub
sqlSessionTriple.insert("insertTripleCreditAiAo", creditParam);
}
@Override
public String getSiteIdByAdminId(String adminId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getSiteIdByAdminId", adminId);
}
}

View File

@@ -0,0 +1,18 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
public interface MainDao {
HashMap<String, String> getMainTopInfo(HashMap<String, String> param);
HashMap<String, String> getMainStatistics(HashMap<String, String> param);
HashMap<String, String> getMainCashReport(HashMap<String, String> param);
HashMap<String, String> getMyCashReport(HashMap<String, String> param);
List<HashMap<String, String>> getMainNewPayLog(HashMap<String, String> param);
}

View File

@@ -0,0 +1,51 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
@Repository("mainDao")
public class MainDaoImpl implements MainDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public HashMap<String, String> getMainTopInfo(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMainTopInfo", param);
}
@Override
public HashMap<String, String> getMainStatistics(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMainStatistics", param);
}
@Override
public HashMap<String, String> getMainCashReport(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMainCashReport", param);
}
@Override
public HashMap<String, String> getMyCashReport(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyCashReport", param);
}
@Override
public List<HashMap<String, String>> getMainNewPayLog(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMainNewPayLog", param);
}
}

View File

@@ -0,0 +1,22 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import com.bb.model.MiniGameSearch;
import com.bb.model.MinigameBetRate;
import com.bb.model.MinigameSet;
public interface MinigameDao {
void setSave(@Valid MinigameSet mgs);
void betRateSave(@Valid MinigameBetRate mbr);
List<HashMap> getSetList(MiniGameSearch search);
List<HashMap> getBetRateList(MiniGameSearch search);
}

View File

@@ -0,0 +1,52 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.MiniGameSearch;
import com.bb.model.MinigameBetRate;
import com.bb.model.MinigameSet;
@Repository("minigameDaoImpl")
public class MinigameDaoImpl implements MinigameDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public void setSave(@Valid MinigameSet mgs) {
// TODO Auto-generated method stub
sqlSession.insert("setSave", mgs);
}
@Override
public void betRateSave(@Valid MinigameBetRate mbr) {
// TODO Auto-generated method stub
sqlSession.insert("betRateSave", mbr);
}
@Override
public List<HashMap> getSetList(MiniGameSearch search) {
// TODO Auto-generated method stub
return sqlSession.selectList("getSetList", search);
}
@Override
public List<HashMap> getBetRateList(MiniGameSearch search) {
// TODO Auto-generated method stub
return sqlSession.selectList("getBetRateList", search);
}
}

View File

@@ -0,0 +1,5 @@
package com.bb.dao;
public interface PassimDao {
}

View File

@@ -0,0 +1,22 @@
package com.bb.dao;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Repository("PassimDao")
public class PassimDaoImpl implements PassimDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
}

View File

@@ -0,0 +1,25 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import com.bb.model.Point;
import com.bb.model.PointSearchAdm;
public interface PointDao {
int getAdminPointListCnt(PointSearchAdm search);
List<HashMap<String, String>> getAdminPointList(PointSearchAdm search);
int getAdminPointListNewCnt(PointSearchAdm search);
List<HashMap<String, String>> getAdminPointListNew(PointSearchAdm search);
List<HashMap<String, String>> getPointBotRateList(PointSearchAdm search);
List<HashMap<String, String>> getPointBotMultiRateList(PointSearchAdm search);
long pointInsert(Point point);
}

View File

@@ -0,0 +1,70 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.Point;
import com.bb.model.PointSearchAdm;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Repository("PointDao")
public class PointDaoImpl implements PointDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int getAdminPointListCnt(PointSearchAdm search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminPointListCnt", search);
}
@Override
public List<HashMap<String, String>> getAdminPointList(PointSearchAdm search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminPointList", search);
}
@Override
public int getAdminPointListNewCnt(PointSearchAdm search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getAdminPointListNewCnt", search);
}
@Override
public List<HashMap<String, String>> getAdminPointListNew(PointSearchAdm search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getAdminPointListNew", search);
}
@Override
public List<HashMap<String, String>> getPointBotRateList(PointSearchAdm search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPointBotRateList", search);
}
@Override
public List<HashMap<String, String>> getPointBotMultiRateList(PointSearchAdm search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPointBotMultiRateList", search);
}
@Override
public long pointInsert(Point point) {
// TODO Auto-generated method stub
return sqlSession.insert("pointInsert2", point);
}
}

View File

@@ -0,0 +1,22 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import com.bb.model.Member;
import com.bb.model.MemberSearch;
import com.bb.model.RateVO;
import com.bb.model.RetailSearch;
public interface RateDao {
List<HashMap<String,Object>> getMemRollingInfo(Member search);
int myRateInfoUpdate(RateVO rateVO);
int topMinRateInfoUpdate(RateVO rateVO);
int botMaxRateInfoUpdate(RateVO rateVO);
List<RateVO> getTopRate(MemberSearch search);
}

View File

@@ -0,0 +1,61 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.Member;
import com.bb.model.MemberSearch;
import com.bb.model.RateVO;
import com.bb.model.RetailSearch;
@Repository("rateDao")
public class RateDaoImpl implements RateDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public List<HashMap<String,Object>> getMemRollingInfo(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMemRollingInfo", search);
}
@Override
public int myRateInfoUpdate(RateVO rateVO) {
// TODO Auto-generated method stub
return sqlSession.update("myRateInfoUpdate", rateVO);
}
@Override
public int topMinRateInfoUpdate(RateVO rateVO) {
// TODO Auto-generated method stub
return sqlSession.update("topMinRateInfoUpdate", rateVO);
}
@Override
public int botMaxRateInfoUpdate(RateVO rateVO) {
// TODO Auto-generated method stub
return sqlSession.update("botMaxRateInfoUpdate", rateVO);
}
@Override
public List<RateVO> getTopRate(MemberSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getTopRate", search);
}
}

View File

@@ -0,0 +1,71 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import com.bb.model.As;
import com.bb.model.DailyReportSearch;
import com.bb.model.DayilPartnerReport;
import com.bb.model.DayilPeriodicReports;
import com.bb.model.ReportSearch;
public interface ReportDao {
int getReportMemwlListCnt(@Valid ReportSearch search);
List<HashMap> getReportMemwlList(@Valid ReportSearch search);
HashMap getPeriodCash(@Valid ReportSearch search);
List<HashMap> getPeriodRollPoint(@Valid ReportSearch search);
List<HashMap> getPeriodWlAmt(@Valid ReportSearch search);
List<HashMap> getGameTypeList(@Valid ReportSearch search);
List<HashMap<String, String>> getDayList(@Valid ReportSearch search);
HashMap<String, String> getDayTotal(ReportSearch search);
int getReportTradeListCnt(@Valid ReportSearch search);
List<HashMap> getReportTradeList(@Valid ReportSearch search);
int getReportPartnerListCnt(@Valid ReportSearch search);
List<HashMap> getReportPartnerList(@Valid ReportSearch search);
List<HashMap> getReportPartnerGroupBet(@Valid HashMap partner);
int getReportPayListCnt(@Valid ReportSearch search);
List<HashMap> getReportPayList(@Valid ReportSearch search);
List<HashMap> getReportPayGroupGameType(HashMap pay);
int getReportsListCntForAdmin(DailyReportSearch search);
List<DayilPeriodicReports> getReportsListForAdmin(DailyReportSearch search);
DayilPeriodicReports getReportsTotalForAdmin(DailyReportSearch search);
String getReportsTotalCntForAdmin(DailyReportSearch search);
int getReportsByUserListCntForAdmin(DailyReportSearch search);
List<DayilPeriodicReports> getReportsByUserListForAdmin(DailyReportSearch search);
DayilPeriodicReports getReportsByUserTotalForAdmin(DailyReportSearch search);
List<DayilPeriodicReports> getReportsListForPartner(DailyReportSearch search);
DayilPeriodicReports getReportsTotalForPartner(DailyReportSearch search);
String getReportsTotalCntForPartner(DailyReportSearch search);
int getReportsByUserListCntForPartner(DailyReportSearch search);
List<DayilPeriodicReports> getReportsByUserListForPartner(DailyReportSearch search);
DayilPeriodicReports getReportsByUserTotalForPartner(DailyReportSearch search);
HashMap<String, String> getPartnerInfo(DailyReportSearch search);
List<DayilPartnerReport> getDayilPartnerReport(DailyReportSearch search);
List<HashMap<String, String>> getReportCateInfo(String siteId);
}

View File

@@ -0,0 +1,234 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.As;
import com.bb.model.DailyReportSearch;
import com.bb.model.DayilPartnerReport;
import com.bb.model.DayilPeriodicReports;
import com.bb.model.ReportSearch;
@Repository("reportDao")
public class ReportDaoImpl implements ReportDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int getReportMemwlListCnt(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportMemwlListCnt", search);
}
@Override
public List<HashMap> getReportMemwlList(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportMemwlList", search);
}
@Override
public HashMap getPeriodCash(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPeriodCash", search);
}
@Override
public List<HashMap> getPeriodRollPoint(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPeriodRollPoint", search);
}
@Override
public List<HashMap> getPeriodWlAmt(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPeriodWlAmt", search);
}
@Override
public List<HashMap> getGameTypeList(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getGameTypeList", search);
}
@Override
public List<HashMap<String, String>> getDayList(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDayList", search);
}
@Override
public HashMap<String, String> getDayTotal(ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDayTotal", search);
}
@Override
public int getReportTradeListCnt(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportTradeListCnt", search);
}
@Override
public List<HashMap> getReportTradeList(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportTradeList", search);
}
@Override
public int getReportPartnerListCnt(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportPartnerListCnt", search);
}
@Override
public List<HashMap> getReportPartnerList(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportPartnerList", search);
}
@Override
public List<HashMap> getReportPartnerGroupBet(@Valid HashMap partner) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportPartnerGroupBet", partner);
}
@Override
public int getReportPayListCnt(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportPayListCnt", search);
}
@Override
public List<HashMap> getReportPayList(@Valid ReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportPayList", search);
}
@Override
public List<HashMap> getReportPayGroupGameType(HashMap pay) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportPayGroupGameType", pay);
}
@Override
public int getReportsListCntForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsListCntForAdmin", search);
}
@Override
public List<DayilPeriodicReports> getReportsListForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportsListForAdmin", search);
}
@Override
public DayilPeriodicReports getReportsTotalForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsTotalForAdmin", search);
}
@Override
public String getReportsTotalCntForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsTotalCntForAdmin", search);
}
@Override
public int getReportsByUserListCntForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsByUserListCntForAdmin", search);
}
@Override
public List<DayilPeriodicReports> getReportsByUserListForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportsByUserListForAdmin", search);
}
@Override
public DayilPeriodicReports getReportsByUserTotalForAdmin(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsByUserTotalForAdmin", search);
}
@Override
public List<DayilPeriodicReports> getReportsListForPartner(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportsListForPartner", search);
}
@Override
public DayilPeriodicReports getReportsTotalForPartner(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsTotalForPartner", search);
}
@Override
public String getReportsTotalCntForPartner(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsTotalCntForPartner", search);
}
@Override
public int getReportsByUserListCntForPartner(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsByUserListCntForPartner", search);
}
@Override
public List<DayilPeriodicReports> getReportsByUserListForPartner(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportsByUserListForPartner", search);
}
@Override
public DayilPeriodicReports getReportsByUserTotalForPartner(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getReportsByUserTotalForPartner", search);
}
@Override
public HashMap<String, String> getPartnerInfo(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPartnerInfo", search);
}
@Override
public List<DayilPartnerReport> getDayilPartnerReport(DailyReportSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDayilPartnerReport", search);
}
@Override
public List<HashMap<String, String>> getReportCateInfo(String siteId) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getReportCateInfo", siteId);
}
}

View File

@@ -0,0 +1,172 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import com.bb.model.BotMemRateVo;
import com.bb.model.CategoryRateVo;
import com.bb.model.ChargingPointSettingVO;
import com.bb.model.LoginUserVO;
import com.bb.model.Member;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberSearch;
import com.bb.model.PartnerListVO;
import com.bb.model.RetailListSearch;
import com.bb.model.RetailLowerSearch;
import com.bb.model.RetailPointSearch;
import com.bb.model.RetailSearch;
import com.bb.model.RetailSet;
import com.bb.model.UserDetailInfo;
import com.bb.model.UserListSearch;
import com.bb.model.UserSearch;
public interface RetailDao {
int getRetailListCnt(@Valid RetailSearch search);
List<HashMap> getRetailList(@Valid RetailSearch search);
int getRetailListCnt2(@Valid RetailSearch search);
List<PartnerListVO> getRetailList2(@Valid RetailSearch search);
void settingSave(@Valid RetailSet retailSet);
int getRetailSettingListCnt(@Valid RetailSearch search);
List<HashMap> getRetailSettingList(@Valid RetailSearch search);
List<HashMap> getRetailBalanceList(@Valid RetailSearch search);
int getRetailBalanceListCnt(@Valid RetailSearch search);
int retailDetailListCnt(@Valid RetailSearch search);
List<HashMap> retailDetailList(@Valid RetailSearch search);
int retailSummryListCnt(@Valid RetailSearch search);
List<HashMap> retailSummryList(@Valid RetailSearch search);
List<HashMap> retailBalanceDetail(@Valid RetailSearch search);
List<HashMap> getMyBetPointInfo(@Valid RetailSearch search);
HashMap getMySummary(RetailSearch search);
HashMap getMySummaryNew(RetailSearch search);
HashMap getMyCashInfo(@Valid RetailSearch search);
List<HashMap> getMyLoginMem(@Valid RetailSearch search);
List<HashMap> getMemList(@Valid RetailSearch search);
long getRetailBalcePoint(@Valid RetailSearch search);
void updateRetailPointStatus(@Valid RetailSearch search);
List<HashMap> myMemIds(Member search);
List<CategoryRateVo> getMyCategoryRateList(MemberSearch search);
List<CategoryRateVo> getBotCategoryRateList(MemberSearch search);
int updateCasinoRate(BotMemRateVo item);
int updateHcasinoRate(BotMemRateVo item);
int updateSlotRate(BotMemRateVo item);
int updateMiniRate(BotMemRateVo item);
int updateSportRate(BotMemRateVo item);
List<HashMap> getMyUnderPartnerLevels(Member search);
int getMyMemListCnt(RetailSearch search);
List<HashMap> getMyMemList(RetailSearch search);
int getMyMemDirectListCnt(RetailSearch search);
List<HashMap> getMyMemDirectList(RetailSearch search);
int getMyPartnerListCnt(RetailSearch search);
List<HashMap> getMyPartnerList(RetailSearch search);
List<HashMap> getMyPartnerList2(RetailSearch search);
List<HashMap> getMyPartnerDirectList(RetailSearch search);
int partnerBonusSettingSave(ChargingPointSettingVO settingVO);
int getRetailPointListCnt(RetailPointSearch search);
List<HashMap> getRetailPointList(RetailPointSearch search);
List<HashMap> getPartnerHierarchy(RetailSearch search);
List<HashMap<String, Object>> getBottomRateList(Member search);
int userLockWithBottom(HashMap<String, String> param);
HashMap<String, String> getBotCashInfo(RetailSearch search);
int getMyLoginMemListCnt(MemberListSearch search);
List<LoginUserVO> getMyLoginMemList(MemberListSearch search);
HashMap<String, String> getPartnerInfo(RetailSearch search);
String getNextTargetLevel(RetailLowerSearch param);
int getLowerPartnerListCnt(RetailLowerSearch search);
List<HashMap<String, Object>> getLowerPartnerList(RetailLowerSearch search);
UserDetailInfo getUserDetailInfo(UserSearch search);
int setUserDetailInfo(UserDetailInfo info);
List<HashMap<String, String>> getDetailLoginLog(UserSearch search);
int getDetailMsgLogCnt(UserListSearch search);
List<HashMap<String, Object>> getDetailMsgLog(UserListSearch search);
int getDetailCashLogCnt(UserListSearch search);
List<HashMap<String, Object>> getDetailCashLog(UserListSearch search);
int getDetailRollingLogCnt(UserListSearch search);
List<HashMap<String, Object>> getDetailRollingLog(UserListSearch search);
List<HashMap<String, Object>> getDetailRollingLogNew(UserListSearch search);
List<HashMap> getPartnerHierarchy2(RetailSearch search);
HashMap<String, String> getMyBetStatData(UserSearch search);
List<HashMap<String, String>> getBottomBetStatList(UserSearch search);
HashMap<String, String> getBottomBetStatSum(UserSearch search);
List<HashMap<String, String>> getDailyBetList(UserSearch search);
HashMap<String, String> getDailyBetSum(UserSearch search);
List<HashMap<String, String>> getDailyUserList(UserSearch search);
HashMap<String, String> getDailyUserSum(UserSearch search);
List<HashMap<String, String>> getDailyPartnerList(UserSearch search);
int getBotCnt(Member searchBot);
}

View File

@@ -0,0 +1,474 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.BotMemRateVo;
import com.bb.model.CategoryRateVo;
import com.bb.model.ChargingPointSettingVO;
import com.bb.model.LoginUserVO;
import com.bb.model.Member;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberSearch;
import com.bb.model.PartnerListVO;
import com.bb.model.RetailListSearch;
import com.bb.model.RetailLowerSearch;
import com.bb.model.RetailPointSearch;
import com.bb.model.RetailSearch;
import com.bb.model.RetailSet;
import com.bb.model.UserDetailInfo;
import com.bb.model.UserListSearch;
import com.bb.model.UserSearch;
@Repository("retailDao")
public class RetailDaoImpl implements RetailDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int getRetailListCnt(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getRetailListCnt", search);
}
@Override
public List<HashMap> getRetailList(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRetailList", search);
}
@Override
public int getRetailListCnt2(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getRetailListCnt2", search);
}
@Override
public List<PartnerListVO> getRetailList2(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRetailList2", search);
}
@Override
public void settingSave(@Valid RetailSet retailSet) {
// TODO Auto-generated method stub
sqlSession.update("settingSave", retailSet);
}
@Override
public int getRetailSettingListCnt(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getRetailSettingListCnt", search);
}
@Override
public List<HashMap> getRetailSettingList(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRetailSettingList", search);
}
@Override
public List<HashMap> getRetailBalanceList(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRetailBalanceList", search);
}
@Override
public int getRetailBalanceListCnt(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getRetailBalanceListCnt", search);
}
@Override
public int retailDetailListCnt(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("retailDetailListCnt", search);
}
@Override
public List<HashMap> retailDetailList(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("retailDetailList", search);
}
@Override
public int retailSummryListCnt(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("retailSummryListCnt", search);
}
@Override
public List<HashMap> retailSummryList(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("summryList", search);
}
@Override
public List<HashMap> retailBalanceDetail(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("retailBalanceDetail", search);
}
@Override
public List<HashMap> getMyBetPointInfo(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyBetPointInfo", search);
}
@Override
public HashMap getMySummary(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMySummary", search);
}
@Override
public HashMap getMySummaryNew(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMySummaryNew", search);
}
@Override
public HashMap getMyCashInfo(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyCashInfo", search);
}
@Override
public List<HashMap> getMyLoginMem(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyLoginMem", search);
}
@Override
public List<HashMap> getMemList(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMemList", search);
}
@Override
public long getRetailBalcePoint(@Valid RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getRetailBalcePoint", search);
}
@Override
public void updateRetailPointStatus(@Valid RetailSearch search) {
// TODO Auto-generated method stub
sqlSession.update("updateRetailPointStatus", search);
}
@Override
public List<HashMap> myMemIds(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("myMemIds", search);
}
@Override
public List<CategoryRateVo> getMyCategoryRateList(MemberSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyCategoryRateList", search);
}
@Override
public List<CategoryRateVo> getBotCategoryRateList(MemberSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBotCategoryRateList", search);
}
@Override
public int updateCasinoRate(BotMemRateVo item) {
// TODO Auto-generated method stub
return sqlSession.update("updateCasinoRate", item);
}
@Override
public int updateHcasinoRate(BotMemRateVo item) {
// TODO Auto-generated method stub
return sqlSession.update("updateHcasinoRate", item);
}
@Override
public int updateSlotRate(BotMemRateVo item) {
// TODO Auto-generated method stub
return sqlSession.update("updateSlotRate", item);
}
@Override
public int updateMiniRate(BotMemRateVo item) {
// TODO Auto-generated method stub
return sqlSession.update("updateMiniRate", item);
}
@Override
public int updateSportRate(BotMemRateVo item) {
// TODO Auto-generated method stub
return sqlSession.update("updateSportRate", item);
}
@Override
public List<HashMap> getMyUnderPartnerLevels(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyUnderPartnerLevels", search);
}
@Override
public int getMyMemListCnt(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyMemListCnt", search);
}
@Override
public List<HashMap> getMyMemList(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyMemList", search);
}
@Override
public int getMyMemDirectListCnt(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyMemDirectListCnt", search);
}
@Override
public List<HashMap> getMyMemDirectList(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyMemDirectList", search);
}
@Override
public int getMyPartnerListCnt(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyPartnerListCnt", search);
}
@Override
public List<HashMap> getMyPartnerList(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyPartnerList", search);
}
@Override
public List<HashMap> getMyPartnerList2(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyPartnerList2", search);
}
@Override
public List<HashMap> getMyPartnerDirectList(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyPartnerDirectList", search);
}
@Override
public int partnerBonusSettingSave(ChargingPointSettingVO settingVO) {
// TODO Auto-generated method stub
return sqlSession.update("partnerBonusSettingSave", settingVO);
}
@Override
public int getRetailPointListCnt(RetailPointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getRetailPointListCnt", search);
}
@Override
public List<HashMap> getRetailPointList(RetailPointSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getRetailPointList", search);
}
@Override
public List<HashMap> getPartnerHierarchy(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPartnerHierarchy", search);
}
@Override
public List<HashMap<String, Object>> getBottomRateList(Member search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBottomRateList", search);
}
@Override
public int userLockWithBottom(HashMap<String, String> param) {
// TODO Auto-generated method stub
return sqlSession.update("userLockWithBottom", param);
}
@Override
public HashMap<String, String> getBotCashInfo(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBotCashInfo", search);
}
@Override
public int getMyLoginMemListCnt(MemberListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyLoginMemListCnt", search);
}
@Override
public List<LoginUserVO> getMyLoginMemList(MemberListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getMyLoginMemList", search);
}
@Override
public HashMap<String, String> getPartnerInfo(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getPartnerInfoV2", search);
}
@Override
public String getNextTargetLevel(RetailLowerSearch param) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getNextTargetLevel", param);
}
@Override
public int getLowerPartnerListCnt(RetailLowerSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getLowerPartnerListCnt", search);
}
@Override
public List<HashMap<String, Object>> getLowerPartnerList(RetailLowerSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getLowerPartnerList", search);
}
@Override
public UserDetailInfo getUserDetailInfo(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getUserDetailInfo", search);
}
@Override
public int setUserDetailInfo(UserDetailInfo info) {
// TODO Auto-generated method stub
return sqlSession.update("setUserDetailInfo", info);
}
@Override
public List<HashMap<String, String>> getDetailLoginLog(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDetailLoginLog", search);
}
@Override
public int getDetailMsgLogCnt(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDetailMsgLogCnt", search);
}
@Override
public List<HashMap<String, Object>> getDetailMsgLog(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDetailMsgLog", search);
}
@Override
public int getDetailCashLogCnt(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDetailCashLogCnt", search);
}
@Override
public List<HashMap<String, Object>> getDetailCashLog(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDetailCashLog", search);
}
@Override
public int getDetailRollingLogCnt(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDetailRollingLogCnt", search);
}
@Override
public List<HashMap<String, Object>> getDetailRollingLog(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDetailRollingLog", search);
}
@Override
public List<HashMap<String, Object>> getDetailRollingLogNew(UserListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDetailRollingLogNew", search);
}
@Override
public List<HashMap> getPartnerHierarchy2(RetailSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getPartnerHierarchy2", search);
}
@Override
public HashMap<String, String> getMyBetStatData(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getMyBetStatData", search);
}
@Override
public List<HashMap<String, String>> getBottomBetStatList(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getBottomBetStatList", search);
}
@Override
public HashMap<String, String> getBottomBetStatSum(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBottomBetStatSum", search);
}
@Override
public List<HashMap<String, String>> getDailyBetList(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDailyBetList", search);
}
@Override
public HashMap<String, String> getDailyBetSum(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDailyBetSum", search);
}
@Override
public List<HashMap<String, String>> getDailyUserList(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDailyUserList", search);
}
@Override
public HashMap<String, String> getDailyUserSum(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getDailyUserSum", search);
}
@Override
public List<HashMap<String, String>> getDailyPartnerList(UserSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getDailyPartnerList", search);
}
@Override
public int getBotCnt(Member searchBot) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getBotCnt", searchBot);
}
}

View File

@@ -0,0 +1,18 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import com.bb.model.MemberListSearch;
import com.bb.model.SiteSearch;
public interface SuperDao {
int getCompanyListCnt(@Valid MemberListSearch search);
List<HashMap> getCompanyList(@Valid MemberListSearch search);
}

View File

@@ -0,0 +1,38 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import jakarta.validation.Valid;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.bb.model.MemberListSearch;
import com.bb.model.SiteSearch;
@Repository("superDao")
public class SuperDaoImpl implements SuperDao{
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
@Override
public int getCompanyListCnt(@Valid MemberListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectOne("getCompanyListCnt",search );
}
@Override
public List<HashMap> getCompanyList(@Valid MemberListSearch search) {
// TODO Auto-generated method stub
return sqlSessionSub.selectList("getCompanyList",search );
}
}

View File

@@ -0,0 +1,217 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.validation.Valid;
import com.bb.model.AdminTokenInfo;
import com.bb.model.ApiVendorCompInfo;
import com.bb.model.BlankSpinRate;
import com.bb.model.ChargingPointSettingVO;
import com.bb.model.CodeSearch;
import com.bb.model.CompResetInfo;
import com.bb.model.DashInfo;
import com.bb.model.GameUseInfo;
import com.bb.model.GraphInfo;
import com.bb.model.IdListSearch;
import com.bb.model.LoginUserVO;
import com.bb.model.MemListSearchVO;
import com.bb.model.Member;
import com.bb.model.MemberDetail;
import com.bb.model.MemberHierarchyVo;
import com.bb.model.MemberInsert;
import com.bb.model.MemberInsert2;
import com.bb.model.MemberListSearch;
import com.bb.model.MemberSearch;
import com.bb.model.MemberStatus;
import com.bb.model.MemberTokenInfo;
import com.bb.model.MemberUpdate;
import com.bb.model.Month10Info;
import com.bb.model.MultipleRate;
import com.bb.model.MultipleRateInfo;
import com.bb.model.NewMemRateItem;
import com.bb.model.Site;
import com.bb.model.SiteSearch;
import com.bb.model.Top15Info;
import com.bb.model.TreeListSearch;
import com.bb.model.TripleAuthInfo;
import com.bb.model.UserListSearch;
import com.bb.model.UserSearch;
public interface UserDao {
Member login(MemberSearch param);
Site getSiteInfoByKey(String reqKey);
Site swaggerlogin(HashMap param);
HashMap adminLogin(SiteSearch search);
int insertMember(@Valid Member signupMember);
void insertDividendRateType(@Valid Member signupMember);
void insertMemCommssion(@Valid Member signupMember);
void insertMemBetLimit(@Valid Member signupMember);
void insertMemBurdenRate(@Valid Member signupMember);
MemberDetail getMember(Member member);
void updateStatus(@Valid MemberStatus status);
List<HashMap> getMemberRate(Member search);
List<HashMap> getMemberRateByNormal(Member search);
int insertSiteInfo(@Valid MemberInsert signupMember);
List<HashMap> getMemTreeList(@Valid TreeListSearch search);
HashMap getHeadCashInfo(HashMap param);
void memberRateUpdate(HashMap param);
void updateAllBottomRate(HashMap param);
int idCheck(@Valid Member signupMember);
int idCheckByAdmin(@Valid Member signupMember);
int nameCheck(@Valid Member signupMember);
int phoneCheck(@Valid Member signupMember);
int accCheck(@Valid Member signupMember);
Site getSiteInfo(String siteId);
HashMap getMemberDetail_1(Member search);
HashMap getMemberDetail_2(Member search);
HashMap getMemberDetail_3(Member search);
void updateMember(MemberUpdate signupMember);
void memberRateBetYn(HashMap param);
int adminJoin(@Valid MemberInsert signupMember);
int adminJoin2(MemberInsert2 signupMember);
int insertCompany(@Valid MemberInsert signupMember);
HashMap getMemberListCnt(@Valid MemberListSearch search);
List<HashMap> getMemberList(@Valid MemberListSearch search);
int getMemStatusListCnt(@Valid MemberListSearch search);
List<HashMap> getMemStatusList(@Valid MemberListSearch search);
int getMemLogListCnt(@Valid MemberListSearch search);
List<HashMap> getMemLogList(@Valid MemberListSearch search);
int getMemLoginListCnt(MemberListSearch search);
List<LoginUserVO> getMemLoginList(MemberListSearch search);
int getIpListCnt(@Valid MemberListSearch search);
List<HashMap> getIpList(@Valid MemberListSearch search);
void recUpdate(@Valid MemberListSearch signupMember);
void recUpdateFlow(@Valid MemberListSearch signupMember);
void updateOutAmtYn(@Valid MemberStatus status);
List<HashMap> getMemInfo(HashMap ti);
void gameUseUpdate(@Valid GameUseInfo gui);
List<HashMap> gameUseList(@Valid GameUseInfo gui);
void updatePwd(@Valid Site site);
void updateMemPwd(@Valid Site site);
int getDeniedIpCheck(HashMap<String,String> param);
int getDeniedPhoneCheck(@Valid Member signupMember);
int getDeniedAccCheck(@Valid Member signupMember);
void updateAdminPwd(@Valid Site site);
List<HashMap<String,String>> getAdminIpList(Map ipParam);
List<HashMap> miniGameInfo(HashMap ti);
HashMap adminSuperLogin(SiteSearch search);
List<HashMap> getMemberFlowList(HashMap memberDetail);
List<HashMap> getPartnerFlowList(HashMap memberDetail);
HashMap getSuperHeadCashInfo();
int getIdListCnt(IdListSearch search);
List<HashMap> getIdList(IdListSearch search);
List<HashMap> getBISubPointRate(Member search);
MemberDetail getMemByTriple(Member search);
int insertTripleAuthInfo(TripleAuthInfo user);
int updateMemCash(MemberDetail memberVo);
int adminCheck(String adminId);
int updateMemListIcon(@Valid MemberUpdate memberVO);
int resetPassword(Member memberVO);
List<String> getTopUserList(Member search);
List<HashMap<String,String>> getTopUserList2(Member search);
ApiVendorCompInfo getApiVendorCompInfo(HashMap<String, String> param);
ApiVendorCompInfo getApiVendorCompInfoByCron(HashMap<String, String> param);
int insertBaseRcmdUser(MemberInsert baseRcmdUser);
String getBaseRecommenderId(Member search);
Long getUserTimeout(Member searchMem);
int updateUserTimeout(Member searchMem);
int getMemRollingListCnt(MemberListSearch search);
List<HashMap> getMemRollingList(MemberListSearch search);
List<HashMap> getPartnerMemIds(Member searchMem);
HashMap getPartnerMemId(Member searchMem);
List<HashMap> getPartnerLevels(CodeSearch codesSearch);
String getPartnerLevelByRecId(@Valid MemberInsert signupMember);
List<HashMap> getPartnerBotUserList(Member search);
List<HashMap> getPartnerRateList(MemberSearch search);
HashMap getPartnerMemberDetail(Member search);
void updateBlankSpinRate(@Valid BlankSpinRate rate);
void updateAllBlankSpinRate(@Valid BlankSpinRate rate);
int insertAdminHeadInfo(@Valid MemberInsert signupMember);
Integer getCheckMemberToken(MemberTokenInfo param);
Integer getCheckAdminToken(AdminTokenInfo param);
HashMap<String, String> getNewMsgInfo(Member member);
HashMap<String, String> getUserGameInfo(HashMap<String, String> param);
HashMap<String, String> getLastGameInfo(Member searchMem);
HashMap getLastGameInfoNew(HashMap logParam);
HashMap<String, String> getHeadTopInfo(HashMap<String, String> param);
HashMap<String, String> getLastGameInfoNoLimit(Member searchMem);
HashMap<String, String> getPartnerLevelUpInfo(MemberDetail targetUser);
void updatePartnerLevel(HashMap<String, String> user);
HashMap<String, String> getUserCashAmt(MemberSearch param);
TripleAuthInfo getTripleAuthInfo(Member search);
HashMap getMemberMap(Member search);
// HashMap getMemBetInfo(TripleVO tripleVO);
int getLoginTryCount(MemberSearch search);
void setLoginLock(MemberSearch search);
HashMap getMemChargingPointInfo(HashMap pointParam);
void updateFstChrgByJoinFlag(HashMap param);
HashMap<String, Object> getBonusSettingInfo(HashMap<String, Long> param);
int userChangeFlag(HashMap flagParam);
int bonusSettingSave(ChargingPointSettingVO settingVO);
int checkSitePrefix(String sitePrefix);
int getNormalRetailCnt(Member user);
int userChangeSymLock(HashMap lockParam);
int setUserLock(HashMap<String, String> lockParam);
double getUserMinPR(HashMap<String, String> minParam);
List<HashMap<String, String>> getUserHierarchyList(MemberHierarchyVo search);
int checkMyBottom(HashMap<String, String> searchMap);
List<MultipleRate> getMultipleRateList(MultipleRateInfo param);
int updateMyMultipleRate(HashMap updParam);
int updateTopMultipleMinRate(HashMap updParam);
int updateBottomMultipleMaxRate(HashMap updParam);
List<NewMemRateItem> getMemRateItemList(NewMemRateItem rateItem);
NewMemRateItem getMemRateItem(@Valid NewMemRateItem rateItem);
int updateMyRate(HashMap updParam);
int updateTopMinRate(HashMap updParam);
int updateBottomMaxRate(HashMap updParam);
int updateCashOutFlag(HashMap flagParam);
HashMap<String, String> getMemberMap2(Member search);
List<DashInfo> getDashInfoInfo(HashMap<String, String> param);
List<GraphInfo> getGraphInfo(HashMap<String, String> param);
int updLoginFailCnt(Member member);
String getLoginUserBetData(MemberListSearch search);
LoginUserVO getLoginUserReportData(MemberListSearch search);
int getMemberTreeListCnt(MemListSearchVO search);
List<HashMap> getMemberTreeList(MemListSearchVO search);
List<HashMap> getUserTreeHierarchy(MemListSearchVO search);
int settingCashInOut(HashMap<String, String> param);
List<HashMap> getIpDetailList(MemberListSearch search);
HashMap<String, String> getTotalInfo(Member param);
int updateMemCashByAmount(HashMap cashParam);
HashMap<String, String> getMemBankInfo(HashMap<String, String> param);
int resetUserLock(HashMap<String, String> lockParam);
List<Top15Info> getTop15Info(HashMap<String, String> paramMap);
Month10Info getMonth10Info(String siteId);
List<HashMap<String, Object>> delCheckMemList(CompResetInfo compResetInfo);
int deleteUsers(CompResetInfo compResetInfo);
int updateAdminHeadInfo(CompResetInfo compResetInfo);
int updMemPhone(HashMap<String, String> param);
HashMap<String, String> getTotalBalance(Member search2);
List<HashMap<String, Object>> getCountInfo(Member search2);
int getLowerUserListCnt(UserListSearch search);
List<HashMap<String, Object>> getLowerUserList(UserListSearch search);
List<HashMap<String, Object>> getLoginUserList(UserSearch search);
int getPlayGameListCnt(UserListSearch search);
List<HashMap<String, Object>> getPlayGameList(UserListSearch search);
int getDetailBetListCnt(UserListSearch search);
List<HashMap<String, Object>> getDetailBetList(UserListSearch search);
int getDetailBetListNewCnt(UserListSearch search);
List<HashMap<String, Object>> getDetailBetListNew(UserListSearch search);
int getTotalChangePointAmt(Member search);
TripleAuthInfo getTripleAuthInfo2(Member user);
int getIsMyBottomCnt(Member search);
List<HashMap<String, String>> getPassAllResetList(String siteId);
HashMap getSiteCashBonusInfo(HashMap param);
List<HashMap<String, String>> getSiteCashBonusList(long siteIdx);
MemberDetail getMemByRvHoldem(Member searchMem);
int insertRvHoldemAuthInfo(HashMap userMap);
HashMap<String, String> getRvHoldemCheckInfo(String uid);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
public interface VendorDao {
List<HashMap<String, Object>> getNexusSkinInfo(HashMap<String, Object> siteParam);
List<HashMap<String, Object>> getNexusSkinList(HashMap<String, Object> vendorInfo);
HashMap<String, Object> getNexusSkin(HashMap<String, Object> skinInfo);
int nexusSkinUpdate(HashMap<String, Object> skinInfo);
int updateTripleCredit(HashMap<String, String> siteInfo);
int updateTriplePoint(HashMap<String, String> siteInfo);
}

View File

@@ -0,0 +1,63 @@
package com.bb.dao;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
@Repository("vendorDao")
public class VendorDaoImpl implements VendorDao {
/** 메인DB 연결 */
@Autowired @Qualifier("sqlSessionMain")
protected SqlSession sqlSession;
/** 서브DB 연결 */
@Autowired @Qualifier("sqlSessionSub")
protected SqlSession sqlSessionSub;
/** 트리플DB 연결 */
@Autowired @Qualifier("sqlSessionTriple")
protected SqlSession sqlSessionTriple;
@Override
public List<HashMap<String, Object>> getNexusSkinInfo(HashMap<String, Object> siteParam) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectList("getNexusSkinInfo", siteParam);
}
@Override
public List<HashMap<String, Object>> getNexusSkinList(HashMap<String, Object> vendorInfo) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectList("getNexusSkinList", vendorInfo);
}
@Override
public HashMap<String, Object> getNexusSkin(HashMap<String, Object> skinInfo) {
// TODO Auto-generated method stub
return sqlSessionTriple.selectOne("getNexusSkin", skinInfo);
}
@Override
public int nexusSkinUpdate(HashMap<String, Object> skinInfo) {
// TODO Auto-generated method stub
return sqlSessionTriple.update("nexusSkinUpdate", skinInfo);
}
@Override
public int updateTripleCredit(HashMap<String, String> siteInfo) {
// TODO Auto-generated method stub
return sqlSessionTriple.update("updateTripleCredit", siteInfo);
}
@Override
public int updateTriplePoint(HashMap<String, String> siteInfo) {
// TODO Auto-generated method stub
return sqlSessionTriple.update("updateTriplePoint", siteInfo);
}
}

View File

@@ -0,0 +1,37 @@
package com.bb.exception;
import com.bb.model.ApiResponse;
/**
* @FileName : ApiException
* @Project : skhappy
* @Date : 2019. 04. 10.
* @Author : pulip
* @Description :
*/
public class ApiException extends Exception {
protected ApiResponse apiResponse;
public ApiException() {
this("E001", "오류가 발생하였습니다.");
}
public ApiException(String message) {
this("E001", message);
}
/*public ApiException(ApiResponse apiResponse) {
this(apiResponse, "오류가 발생하였습니다.");
}*/
public ApiException(String resultCode, String message) {
this.apiResponse = new ApiResponse();
this.apiResponse.setResultCode(resultCode);
this.apiResponse.setResultMessage(message);
}
public ApiResponse getApiResponse() {
return this.apiResponse;
}
}

View File

@@ -0,0 +1,9 @@
package com.bb.exception;
public class NoDataApiException extends ApiException {
public NoDataApiException() {
super("9004", "조회된 데이터가 없습니다.");
}
}

View File

@@ -0,0 +1,10 @@
package com.bb.exception;
public class RequestArraySizeApiException extends ApiException {
public RequestArraySizeApiException(String parameterName) {
super("9003", "요청 배열 파라미터 크기에 오류가 있습니다. : " + parameterName);
}
}

View File

@@ -0,0 +1,9 @@
package com.bb.exception;
public class RequestHeaderApiException extends ApiException {
public RequestHeaderApiException(String headerName) {
super("9001", "요청 헤더정보가 없습니다 : " + headerName);
}
}

View File

@@ -0,0 +1,8 @@
package com.bb.exception;
public class RequestParameterApiException extends ApiException {
public RequestParameterApiException(String parameterName) {
super("9002", "필수 요청 파라미터가 없습니다. : " + parameterName);
}
}

View File

@@ -0,0 +1,404 @@
package com.bb.front;
import java.net.SocketTimeoutException;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.List;
import org.apache.http.conn.ConnectTimeoutException;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.ResourceAccessException;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.ApiVendorCompInfo;
import com.bb.model.BetSearch;
import com.bb.model.BetSplusSearch;
import com.bb.model.PageFormVO;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.BetService;
import com.bb.service.CommonService;
import com.bb.service.TripleService;
import com.bb.service.UserService;
import com.bb.util.PagingUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/bet")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiBetController {
private final UserService userService;
private final CommonService commonService;
private final BetService betService;
private final TripleService tripleService;
private final JwtManager jwtManager;
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = new DecimalFormat("#0.00");
@ResponseBody
@PostMapping(value="/sportBetlist")
public ApiResponse sportBetlist( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSplusSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getSportBetListCnt(search); // Use blankSpinSetType
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> betList = betService.getSportBetList(search); // Use blankSpinSetType
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betlist")
public ApiResponse betlist( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
search.setMemId(tokenInfo.getMid());
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getUserBetListCnt(search); // Use blankSpinSetType
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
List<HashMap> betList = betService.getUserBetList(search); // Use blankSpinSetType
System.out.println("betList" + betList.size());
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betlistNew")
public ApiResponse betlistNew( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
search.setMemId(tokenInfo.getMid());
final String LOG_PREFIX = "#-USER::betlist::"+tokenInfo.getSid()+":::";
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getUserBetListNewCnt(search); // Use blankSpinSetType
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(search);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
List<HashMap> betList = betService.getUserBetListNew(search); // Use blankSpinSetType
System.out.println("betList" + betList.size());
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betDetail")
public ApiResponse betDetail( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
String betType = betService.getBetType(search.getBetId());
String detail = "";
if(betType.equals("triple")) {
HashMap<String, String> param = new HashMap<String, String>();
param.put("siteId", tokenInfo.getSid());
param.put("apiVendorCode", betType);
ApiVendorCompInfo vendorCompInfo = userService.getApiVendorCompInfo(param);
if(vendorCompInfo != null) {
detail = tripleService.getBetDetail(vendorCompInfo, search.getBetId());
}
log.info("triple bet detail: " + detail);
} else {
log.info("not found bet detail");
}
apiResponse.put("detail", detail);
apiResponse.success();
} catch (ResourceAccessException rae) {
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error("[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error("[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error("[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/betDetailTest")
public ApiResponse betDetailTest( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
//Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
if(search.getOldYn() == null || search.getOldYn().equals("")) {
search.setOldYn("N");
}
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
String betType = betService.getBetType(search.getBetId());
String detail = "";
if(betType.equals("triple")) {
HashMap<String, String> param = new HashMap<String, String>();
param.put("siteId", tokenInfo.getSid());
param.put("apiVendorCode", betType);
ApiVendorCompInfo vendorCompInfo = userService.getApiVendorCompInfo(param);
if(vendorCompInfo != null) {
detail = tripleService.getBetDetailTest(vendorCompInfo, search.getBetId());
}
log.info("triple bet detail: " + detail);
} else {
log.info("not found bet detail");
}
apiResponse.put("detail", detail);
apiResponse.success();
} catch (ResourceAccessException rae) {
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error("[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error("[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error("[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,457 @@
package com.bb.front;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.Board;
import com.bb.model.BoardListSearch;
import com.bb.model.Comment;
import com.bb.model.Message;
import com.bb.model.MessageListSearch;
import com.bb.model.PageFormVO;
import com.bb.model.Site;
import com.bb.service.BoardService;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import com.bb.util.PagingUtil;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/board")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiBoardController {
private final BoardService boardService;
private final UserService userService;
private final CommonService commonService;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping(value={"/{boardType}/list"})
public ApiResponse blist(@RequestHeader String token, HttpServletRequest request, @PathVariable String boardType, @Valid @RequestBody BoardListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
final String boardTypeKeyword = "answer|bbs|faq|favor|nt|snt";
if(boardType.equals("qna")) {
boardType = "faq";
}
if(!boardTypeKeyword.contains(boardType)) {
log.error("[REQUEST: "+request.getRequestURI()+"] Board["+boardType+"] boardType Error");
throw new ApiException("BRD02", "boardType Error");
}
search.setBoardType(boardType);
search.setIsUser("Y");
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0) search.setPage(1);
search.setSiteId(tokenInfo.getSid());
int totalCount = boardService.getBoardListCnt(search);
if(totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(10);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<Board> boardList = boardService.getBoardList(search);
List<Integer> boardIdxList = boardService.getBoardIdxList(search);
apiResponse.put("list", boardList);
apiResponse.put("idxList", boardIdxList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/{boartType}/datail"})
public ApiResponse datail(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody Board board) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
board.setSiteId(tokenInfo.getSid());
Board boardetail = boardService.getBoard(board);
if(!tokenInfo.getSid().equals(boardetail.getSiteId())) {
throw new ApiException("1000", "accessDinied");
}
if(boardetail.getBoardType().equals("faq") && !tokenInfo.getMid().equals(boardetail.getRegId())) {
throw new ApiException("1000", "accessDinied");
}
if(boardetail.getBoardType().equals("faq") && boardetail.getStatus().equals("ANSWER") && boardetail.getIsReadUser().equals("N")) {
boardService.userAnswerCmtRead(boardetail);
}
boardService.viewAdd(boardetail);
apiResponse.put("board", boardetail);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/{boardType}/save"})
public ApiResponse bsave(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody Board board) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(board.getBoardIdx() != null ) {
Board boardetail = boardService.getBoard(board);
if(!boardetail.getRegId().equals(tokenInfo.getMid())) {
throw new ApiException("2000", "accessDinied");
}
}
board.setSiteId(tokenInfo.getSid());
board.setRegId(tokenInfo.getMid());
int res = boardService.saveBoard(board);
try {
Map logParam = new HashMap();
logParam.put("siteId", site.getSiteId());
logParam.put("memId", tokenInfo.getMid());
logParam.put("actionType", 2);
commonService.updateAcctionLog(logParam);
} catch(Exception e){System.out.print(e.toString());}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/cmtSave"})
public ApiResponse cmtsave(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody Comment comment) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(comment.getCmtIdx() != null) {
Comment commentrdetail = boardService.getComment(comment);
if(!commentrdetail.getRegId().equals(tokenInfo.getMid())) {
throw new ApiException("2000", "accessDinied");
}
}
comment.setRegId(tokenInfo.getMid());
int res = boardService.saveCmt(comment);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/flowBoard"})
public ApiResponse siteFlowBoard(@RequestHeader String token, HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
// Site site = getSiteByCheck(request);
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
BoardListSearch search = new BoardListSearch();
search.setSiteId(tokenInfo.getSid());
Board flowBoard = boardService.getSiteFlowBoard(search);
log.info("[REQUEST: "+request.getRequestURI()+"] " + flowBoard);
String content = "";
if(flowBoard != null) {
content = flowBoard.getContent();
}
apiResponse.put("content", content);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/msgList", "/msgHeadList"})
public ApiResponse msgList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody MessageListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if("msgHeadList".indexOf(request.getRequestURI()) > -1){
search.setMsgType("head");
} else {
search.setMsgType("msg");
}
search.setHiddenYn("N");
log.info("[REQUEST: "+request.getRequestURI()+"] " + search);
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
search.setSiteId(tokenInfo.getSid());
search.setRecieveId(tokenInfo.getMid());
int totalCount = boardService.getUserMsgListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(10);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<Message> boardList = boardService.getUserMsgList(search);
apiResponse.put("list", boardList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/msgRead"})
public ApiResponse msgRead(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody Message message) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
message.setSiteId(tokenInfo.getSid());
message.setRecieveId(tokenInfo.getMid());
log.info("[REQUEST: "+request.getRequestURI()+"] " + message);
if(message.getMsgIdx() != null && message.getMsgIdx()!=0) {
log.info("[MSG READ idx: " + message.getMsgIdx()+"]");
boardService.msgRead(message);
} else {
log.info("[MSG READ ALL]");
boardService.allRead(message);
}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/msgUpdate"})
public ApiResponse msgUpdate(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody Message message) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
message.setSiteId(tokenInfo.getSid());
message.setRecieveId(tokenInfo.getMid());
log.info("[REQUEST: "+request.getRequestURI()+"] " + message);
if(message.getMsgIdx() != null && message.getMsgIdx() != 0) {
log.info("[MSG DEL idx: " + message.getMsgIdx()+"]");
message.setStatus("N");
boardService.msgUpdate(message);
} else {
log.info("[MSG DEL ALL]");
boardService.msgDelList(message);
}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,232 @@
package com.bb.front;
import java.util.HashMap;
import java.util.List;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.Bank;
import com.bb.model.Banner;
import com.bb.model.BlockSearch;
import com.bb.model.Site;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.StringUtils;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/etc")
@RequiredArgsConstructor
//@SecurityRequirement(name = "Authorization")
public class ApiEtcController {
private final CommonService commonService;
private final UserService userService;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping(value="/bank")
public ApiResponse bank(HttpServletRequest request, @RequestBody SiteSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(site.getSiteId());
List<Bank> bankList = commonService.getBankList(search) ;
apiResponse.put("list", bankList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/banner")
public ApiResponse banner(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site == null) {
throw new ApiException("1000", "accessDinied");
}
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(site.getSiteId());
List<Banner> bannerList = commonService.getBannerList(paramSite) ;
apiResponse.put("list", bannerList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/popupList")
public ApiResponse popupList(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site == null) {
throw new ApiException("1000", "accessDinied");
}
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(site.getSiteId());
List<Banner> popupList = commonService.getPopupList(paramSite);
apiResponse.put("list", popupList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/siteOption")
public ApiResponse siteOption(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(site.getSiteId());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
apiResponse.put("siteOption", siteOption);
String refer = request.getHeader("Referer");
if(refer != null) {
// String refer = "https://goodidea.tistory.com:8888/qr/aaa/ddd.html?abc=def&ddd=fgf#sharp";
String[] urls = StringUtils.extractUrlParts(refer);
// log.info(urls.toString());
// log.info(urls[2]);
String domain = urls[2];
paramSite.setEtc1(domain);
log.info(paramSite.toString());
String joinRecommanderId = commonService.getJoinRecommanderId(paramSite);
if(joinRecommanderId == null) joinRecommanderId = "";
apiResponse.put("joinRecommanderId", joinRecommanderId);
}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/blocks")
public ApiResponse blocks( HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
BlockSearch paramSite = new BlockSearch();
paramSite.setSiteId(site.getSiteId());
List<HashMap> adminLogLis = commonService.getSiteBlockList(paramSite);
apiResponse.put("list", adminLogLis);
apiResponse.put("ip", IPKit.getIpAddressByRequest(request));
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/jackpot")
public ApiResponse jackpot(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site == null) {
throw new ApiException("1000", "accessDinied");
}
HashMap paramSite = new HashMap<>();
paramSite.put("siteIdx", site.getSiteIdx());
String jackpot = commonService.getJackpot(paramSite) ;
apiResponse.put("jackpot", jackpot);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,413 @@
package com.bb.front;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtClame;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.ApiVendorCompInfo;
import com.bb.model.Banner;
import com.bb.model.BoardListSearch;
import com.bb.model.CashSearch;
import com.bb.model.Member;
import com.bb.model.Site;
import com.bb.model.SiteSearch;
import com.bb.service.BoardService;
import com.bb.service.CashService;
import com.bb.service.CommonService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import io.jsonwebtoken.ExpiredJwtException;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiFrontController {
private final UserService userService;
private final CashService cashService;
private final BoardService boardService;
private final CommonService commonService;
@Autowired
RestTemplate restTemplate;
private final JwtManager jwtManager;
@GetMapping("/health")
public String health( HttpServletRequest request,ModelMap model) throws Exception {
return "alive";
}
@ResponseBody
@PostMapping(value="/main")
public ApiResponse main(@RequestHeader String token, HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/getToken")
public ApiResponse getToken(@RequestHeader String token, HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
JwtClame jwtinfo = new JwtClame();
jwtinfo.setSiteIdx(site.getSiteIdx());
jwtinfo.setSiteId(site.getSiteId());
jwtinfo.setMemId(tokenInfo.getMid());
jwtinfo.setMemIdx(tokenInfo.getMidx());
jwtinfo.setPartnerLevel(tokenInfo.getPartnerLevel());
int tokenValidationSec = commonService.getSiteLogoutTimeLimit(site.getSiteId());
log.info("#-getToken::tokenValidationSec: " + tokenValidationSec);
String tok = jwtManager.generateToken(jwtinfo, tokenValidationSec);
apiResponse.put("token", tok);
//로그인 로그 ,
try {
Map logParam = new HashMap();
logParam.put("siteId", site.getSiteId());
logParam.put("memId", tokenInfo.getMid());
logParam.put("logType", "TOKEN");
logParam.put("logoutYn", "");
logParam.put("logName", "로그인토큰");
logParam.put("logDesc", "토큰갱신");
logParam.put("regId", "");
logParam.put("regIp", IPKit.getIpAddressByRequest(request));
logParam.put("token", tok);
commonService.insertlog(logParam);
logParam.put("actionType", 2);
commonService.updateAcctionLog(logParam);
} catch(Exception e){System.out.print(e.toString());}
apiResponse.success();
} catch(ExpiredJwtException je) {
log.error("#-getToken::"+je.getMessage());
} catch(ApiException e) {
log.error("#-getToken::"+e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error("#-getToken::"+e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@SecurityRequirement(name = "Authorization")
@ResponseBody
@PostMapping(value="/main/popupList")
public ApiResponse popupList(@RequestHeader String token, HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
List<Banner> popupList = commonService.getLoginPopupList(paramSite);
apiResponse.put("list", popupList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value="/main/cashList")
public ApiResponse cashList(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
CashSearch inParam = new CashSearch();
inParam.setSiteId(site.getSiteId());
inParam.setCashType("1");
List<HashMap<String, String>> cashInList = cashService.getMainCashList(inParam);
CashSearch outParam = new CashSearch();
outParam.setSiteId(site.getSiteId());
outParam.setCashType("-1");
List<HashMap<String, String>> cashOutList = cashService.getMainCashList(outParam);
apiResponse.put("cashInList", cashInList);
apiResponse.put("cashOutList", cashOutList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/main/nt/list"})
public ApiResponse blist(HttpServletRequest request) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
BoardListSearch search = new BoardListSearch();
search.setSiteId(site.getSiteId());
List<HashMap<String, String>> boardList = boardService.getMainBoardList(search);
apiResponse.put("boardList", boardList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/main/board/list"})
public ApiResponse blist2(HttpServletRequest request, @Valid @RequestBody BoardListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(site.getSiteId());
log.info("#-MAIN::blist2::"+site.getSiteId()+"::: BoardListSearch : " + search);
List<HashMap<String, String>> boardList = boardService.getMainBoardList2(search);
apiResponse.put("boardList", boardList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/isPlayGame"})
public ApiResponse isPlayGame(HttpServletRequest request, @RequestHeader String token) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
Member search = new Member();
search.setMemId(tokenInfo.getMid());
search.setSiteId(tokenInfo.getSid());
search.setIntervalTime(-120);
HashMap<String, String> lastGameInfo = userService.getLastGameInfo(search);
if(lastGameInfo != null && lastGameInfo.get("cashType").toString().equals("BET")) {
// Playing Game
apiResponse.put("isPlayGame", "Y");
} else {
// Not Playing Game
apiResponse.put("isPlayGame", "N");
}
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@GetMapping(value={"/coin"})
public ApiResponse coin(HttpServletRequest request, @RequestHeader String token, @RequestParam String symbol) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-TRIPLE::COIN::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+":::";
log.info(LOG_PREFIX+ "Request symbol : " + symbol);
HashMap<String, String> param = new HashMap<String, String>();
param.put("siteId", tokenInfo.getSid());
param.put("apiVendorCode", "triple");
ApiVendorCompInfo vendorCompInfo = userService.getApiVendorCompInfo(param);
// 헤더에 토큰 세팅
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.set("User-Agent", "PostmanRuntime/7.28.4");
headers.set("Authorization", vendorCompInfo.getClientSecretKey());
headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8")));
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(vendorCompInfo.getApiUrl() + "/getToken");
HttpEntity<HashMap<String, String>> entity = new HttpEntity<>(null, headers);
ResponseEntity<String> tokenRes = restTemplate.postForEntity(builder.toUriString(), entity, String.class);
log.info(LOG_PREFIX+ "Token Response : " + tokenRes.getBody());
JSONObject tokenObj = new JSONObject(tokenRes.getBody());
String apiToken = tokenObj.getJSONObject("data").getString("token");
headers.set("token", apiToken);
builder = UriComponentsBuilder.fromHttpUrl(vendorCompInfo.getApiUrl() + "/coin?symbol=" + symbol + "&currency=usd");
entity = new HttpEntity<>(null, headers);
ResponseEntity<String> coinRes = restTemplate.postForEntity(builder.toUriString(), entity, String.class);
log.info(LOG_PREFIX+ "Coin Response : " + coinRes.getBody());
JSONObject resultObj = new JSONObject(coinRes.getBody());
JSONObject dataObj = resultObj.getJSONObject("data");
JSONObject infoObj = dataObj.getJSONObject("info");
String currencyUsd = infoObj.getString("currentPrice");
builder = UriComponentsBuilder.fromHttpUrl(vendorCompInfo.getApiUrl() + "/coin?symbol=" + symbol + "&currency=krw");
entity = new HttpEntity<>(null, headers);
coinRes = restTemplate.postForEntity(builder.toUriString(), entity, String.class);
log.info(LOG_PREFIX+ "Coin Response : " + coinRes.getBody());
resultObj = new JSONObject(coinRes.getBody());
dataObj = resultObj.getJSONObject("data");
infoObj = dataObj.getJSONObject("info");
String currencyKrw = infoObj.getString("currentPrice");
HashMap<String, String> dataMap = new HashMap<>();
dataMap.put("currencyUsd", currencyUsd);
dataMap.put("currencyKrw", currencyKrw);
apiResponse.put("info", dataMap);
apiResponse.success();
} catch(ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-TRIPLE::COIN::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+":::";
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-TRIPLE::COIN::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+":::";
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,850 @@
package com.bb.front;
import java.net.SocketTimeoutException;
import java.nio.charset.Charset;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.conn.ConnectTimeoutException;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.reactive.function.client.WebClient;
import org.springframework.web.util.UriComponentsBuilder;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.ApiVendorCompInfo;
import com.bb.model.BetSearch;
import com.bb.model.CodeSearch;
import com.bb.model.Member;
import com.bb.model.MemberDetail;
import com.bb.model.PageFormVO;
import com.bb.model.Site;
import com.bb.model.SlotGame;
import com.bb.model.SlotGameName;
import com.bb.model.TripleAuthInfo;
import com.bb.model.VendorGameReq;
import com.bb.model.VendorReq;
import com.bb.service.BetService;
import com.bb.service.CashService;
import com.bb.service.CommonService;
import com.bb.service.RvHoldemService;
import com.bb.service.TripleService;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import com.bb.util.PagingUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import reactor.core.publisher.Mono;
@RestController
@Slf4j
@RequestMapping("/api/minigame")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiMinigameController {
private final UserService userService;
private final CashService cashService;
private final BetService betService;
private final CommonService commonService;
private final TripleService tripleService;
private final RvHoldemService rvHoldemService;
@Autowired
WebClient webClient;
private final JwtManager jwtManager;
private static final long serialVersionUID = 1L;
private static NumberFormat formatter = new DecimalFormat("#0.00");
@ResponseBody
@PostMapping(value="/getGame")
public synchronized ApiResponse getGame(@RequestHeader String token, HttpServletRequest request, @RequestBody VendorGameReq gameReq) {
Long requestTimeout = System.currentTimeMillis();
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1999", "accessDinied_not_found_site");
}
if(token==null) {
throw new ApiException("1000", "accessDinied_not_found_token");
}
String isPartnerBetYn = site.getIsOnlyFlex();
String lauchURL = null;
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-getGame::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::";
log.info(LOG_PREFIX+ "START::"+requestTimeout);
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(gameReq);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
Member searchMem = new Member();
searchMem.setSiteIdx(tokenInfo.getSidx());
searchMem.setSiteId(tokenInfo.getSid());
searchMem.setMemIdx(tokenInfo.getMidx());
searchMem.setMemId(tokenInfo.getMid());
MemberDetail memDetail = userService.getMember(searchMem);
if(memDetail == null) {
throw new ApiException("U003", "unknown user");
}
String abuseLockYn = memDetail.getAbuseLockYn();
String abuseLockTime = memDetail.getAbuseLockTime();
if("Y".equals(abuseLockYn)) {
log.error(LOG_PREFIX+ "ABZ01::" + "부정행위가 감지되었습니다. 2분뒤 다시 요청하세요.");
throw new ApiException("ABZ01", "부정행위가 감지되었습니다. 2분뒤 다시 요청하세요.");
} else {
if(!"".equals(abuseLockTime)) {
HashMap<String,String> lockParam = new HashMap<>();
lockParam.put("siteId", tokenInfo.getSid());
lockParam.put("memId", tokenInfo.getMid());
lockParam.put("cntReset", "N");
int lockResult = userService.resetUserLock(lockParam);
log.error(LOG_PREFIX+ "resetUserLock::result::" + lockResult);
}
}
// Timeout 체크
Long userTimeout = userService.getUserTimeout(searchMem);
log.info(LOG_PREFIX+ "getUserTimeout()::"+userTimeout);
log.info("[TIMEOUT requestTimeout : " + requestTimeout + "]");
log.info("[TIMEOUT userTimeout : " + userTimeout + "]");
userTimeout = userTimeout + (1*1000);
log.info("[TIMEOUT userTimeout+5s : " + userTimeout + "]");
if(requestTimeout < userTimeout) {
log.info("마지막 요청으로부터 5초 이내에 다시 요청");
throw new ApiException("T999", "이미 처리된 요청입니다.");
} else {
log.info("마지막 요청으로부터 5초 이후에 다시 요청");
searchMem.setGameUrlTimeout(requestTimeout);
int result = userService.updateUserTimeout(searchMem);
log.info(LOG_PREFIX+ "updateUserTimeout()::"+userTimeout);
log.info("[TIMEOUT result : " + result + "]");
}
// 게임 실행 전 체크
HashMap<String, String> param = new HashMap<String, String>();
param.put("siteId", tokenInfo.getSid());
param.put("memId", tokenInfo.getMid());
param.put("vendorCode", gameReq.getVendorKey());
HashMap<String, String> gameInfo = userService.getUserGameInfo(param);
log.info(LOG_PREFIX+ "getUserGameInfo()::"+gameInfo.toString());
// Credit 체크
/*
long credit = Long.valueOf(gameInfo.get("creditAmt").toString());
if(credit <= 0) {
throw new ApiException("B0099", "No Credit");
}
*/
// 파트너 회원 게임 실행 불가
if("N".equals(isPartnerBetYn) && !"NORMAL".equals(gameInfo.get("partnerLevel").toString())) {
throw new ApiException("B0090", "파트너회원은 게임을 할 수 없습니다. 고객센터에 문의하세요.");
}
// betYn 체크
if("N".equals(gameInfo.get("isbetYn").toString())) {
throw new ApiException("B0091", "게임을 할 수 없는 상태입니다. 고객센터에 문의하세요.");
}
// Member Lock 체크
if("Y".equals(gameInfo.get("memLockYn").toString())) {
throw new ApiException("U0011", "memLock");
}
// 사이트점검 체크
if("Y".equals(gameInfo.get("siteCheckYn").toString())) {
throw new ApiException("B0093", "사이트 점검중 입니다. 잠시 후 다시 접속해주세요.");
}
// 허용 게임 체크
String vendorComp = gameInfo.get("vendorComp").toString();
if(vendorComp == null || vendorComp.equals("")) {
throw new ApiException("B0092", "실행할 수 없는 게임입니다. 고객센터에 문의하세요.");
}
ApiVendorCompInfo apiVendor = new ApiVendorCompInfo();
apiVendor.setApiVendorCode(vendorComp);
apiVendor.setSiteIdxHex(gameInfo.get("siteIdxHex").toString());
apiVendor.setSiteId(tokenInfo.getSid());
apiVendor.setType(gameInfo.get("type").toString());
apiVendor.setApiUrl(gameInfo.get("apiUrl").toString());
apiVendor.setClientId(gameInfo.get("clientId").toString());
apiVendor.setClientSecretKey(gameInfo.get("clientSecretKey").toString());
apiVendor.setCallBackUrl(gameInfo.get("callBackUrl").toString());
apiVendor.setCronRunYn(gameInfo.get("cronRunYn").toString());
apiVendor.setLanguage("");
apiVendor.setCashDecimal(gameInfo.get("cashDecimal").toString());
switch (vendorComp) {
case "triple":
lauchURL = getTripleUrl(request, searchMem, gameReq, apiVendor, requestTimeout, userTimeout);
break;
case "rvholdem":
lauchURL = getRvHoldemUrl(request, searchMem, gameReq, apiVendor, requestTimeout, userTimeout);
break;
default:
break;
}
log.info(LOG_PREFIX+ "END");
apiResponse.put("gameurl", lauchURL);
apiResponse.success();
} catch (ResourceAccessException rae) {
log.error("#-getGame::ResourceAccessException::"+ "[ResourceAccessException]"+rae.toString());
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-getGame::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::";
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error(LOG_PREFIX+ "[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error(LOG_PREFIX+ "[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error(LOG_PREFIX+ "[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch(ApiException e) {
final String LOG_PREFIX = "#-getGame::ApiException::";
log.error(LOG_PREFIX+ "[ApiException]"+e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
final String LOG_PREFIX = "#-getGame::Exception::";
log.error(LOG_PREFIX+ "[Exception]"+e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private synchronized String getTripleUrl(HttpServletRequest request, Member searchMem, VendorGameReq gameReq, ApiVendorCompInfo apiVendor, Long requestTimeout, Long userTimeout)
throws ResourceAccessException, ApiException, Exception {
// TODO Auto-generated method stub
String siteId = searchMem.getSiteId();
String memId = searchMem.getMemId();
final String LOG_PREFIX = "#-getGame::"+siteId+"::"+memId+"::getTripleUrl::";
log.info(LOG_PREFIX+ apiVendor);
String lauchURL = null;
MemberDetail tripleUser = userService.getMemByTriple(searchMem);
log.info(LOG_PREFIX+ "getMemByTriple()");
String userIp = IPKit.getIpAddressByRequest(request);
if(userIp.equals("0:0:0:0:0:0:0:1")) {
userIp = "211.114.32.97";
}
if(gameReq.getGameType() == null || "".equals(gameReq.getGameType())) {
gameReq.setGameType("casino");
}
String tripleToken = "";
// Vendor, Game 값 가져오기.
String vendorKey = "";
String gameKey = "";
CodeSearch codeSrch = new CodeSearch();
codeSrch.setMasterCode("kplay");
codeSrch.setGroupCode(gameReq.getGameType());
codeSrch.setCode(gameReq.getVendorKey());
HashMap code = commonService.getCode(codeSrch);
log.info(LOG_PREFIX+ "getCode()");
vendorKey = (String) code.get("tripleVendor");
if(gameReq.getGameKey() != null && !"".equals(gameReq.getGameKey())) {
gameKey = gameReq.getGameKey();
} else {
gameKey = (String) code.get("tripleLobby");
}
log.info(LOG_PREFIX+ "vendorKey::" + vendorKey);
log.info(LOG_PREFIX+ "gameKey::" + gameKey);
if(gameKey == null) {
gameKey = "";
}
HashMap<String, String> lastGameInfo = userService.getLastGameInfoNoLimit(searchMem);
log.info(LOG_PREFIX+ "getLastGameInfoNoLimit()::" + lastGameInfo);
String vendorName = code.get("codeName").toString();
String gameName = gameReq.getGameName();
if(gameName == null || gameName.equals("")) gameName = "LOBBY";
String gameInMsg = "";
if(lastGameInfo != null && lastGameInfo.get("cashType").toString().equals("BET") && lastGameInfo.get("vendorComp").toString().equals(apiVendor.getApiVendorCode())) {
log.info("###- TRIPLE API -### TRIPLE GAME => TRIPLE GAME");
gameInMsg = "["+lastGameInfo.get("vendorComp").toString()+"]["+apiVendor.getApiVendorCode()+"]";
} else {
if(lastGameInfo != null && lastGameInfo.get("cashType").toString().equals("BET")) {
log.info("###- TRIPLE API -### OTHER GAME => TRIPLE GAME");
gameInMsg = "["+lastGameInfo.get("vendorComp").toString()+"]["+apiVendor.getApiVendorCode()+"]";
} else {
log.info("###- TRIPLE API -### CASH => TRIPLE GAME");
gameInMsg = "[cash]["+apiVendor.getApiVendorCode()+"]";
}
}
HttpHeaders authheaders = new HttpHeaders();
authheaders.setContentType(MediaType.APPLICATION_JSON);
authheaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
authheaders.set("User-Agent", "PostmanRuntime/7.28.4");
authheaders.set("Authorization", apiVendor.getClientSecretKey());
authheaders.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8")));
// 게임실행 API Proc
String tripleUsername = tripleUser.getSiteIdxHex() + tripleUser.getMemId();
log.info(LOG_PREFIX+ tripleUser.toString());
log.info(LOG_PREFIX+ "tripleUsername: " + tripleUsername);
UriComponentsBuilder authBuilder = UriComponentsBuilder.fromHttpUrl(apiVendor.getApiUrl() + "/auth");
HashMap<String, String> authParams = new HashMap<String, String>();
authParams.put("userId", tripleUsername);
authParams.put("nickName", tripleUsername);
authParams.put("balance", "0");
HttpEntity<HashMap<String, String>> authEntity = new HttpEntity<>(authParams, authheaders);
log.info(LOG_PREFIX+ apiVendor.getApiUrl() + "/auth"+"::Request::" + authParams.toString());
Mono<String> authUserMono = webClient.post()
.uri(authBuilder.toUriString())
.headers(httpHeaders -> httpHeaders.addAll(authheaders))
.bodyValue(authParams)
.retrieve()
.bodyToMono(String.class);
String authUserResponse = authUserMono.block();
log.info(LOG_PREFIX+ apiVendor.getApiUrl() + "/auth"+"::Response::" + authUserResponse);
JSONObject userJson = new JSONObject(authUserResponse);
String authResultCode = userJson.getString("resultCode");
log.info(LOG_PREFIX+ "authResultCode::"+authResultCode);
if("0".equals(authResultCode)) {
JSONObject authData = new JSONObject(userJson.getString("data"));
String id = authData.getString("userId");
tripleToken = authData.getString("token");
//토큰 받아서 로비 링크로 이동
if("".equals(tripleUser.getUsername())) {
TripleAuthInfo user = new TripleAuthInfo();
user.setSiteId(tripleUser.getSiteId());
user.setMemId(tripleUser.getMemId());
user.setId(Integer.valueOf(id));
user.setUsername(tripleUsername);
user.setNickname(tripleUsername);
userService.insertTripleAuthInfo(user);
log.info(LOG_PREFIX+ "insertTripleAuthInfo()");
}
// 헤더에 토큰 세팅
HttpHeaders playheaders = new HttpHeaders();
playheaders.setContentType(MediaType.APPLICATION_JSON);
playheaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
playheaders.set("User-Agent", "PostmanRuntime/7.28.4");
playheaders.set("Authorization", apiVendor.getClientSecretKey());
playheaders.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8")));
playheaders.set("token", tripleToken);
UriComponentsBuilder playBuilder = UriComponentsBuilder.fromHttpUrl(apiVendor.getApiUrl() + "/play");
// UriComponentsBuilder playBuilder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/api" + "/play");
HashMap<String, String> playParams = new HashMap<String, String>();
playParams.put("userId", tripleUsername);
playParams.put("vendorKey", vendorKey);
playParams.put("gameKey", gameKey);
playParams.put("balance", Integer.toString(tripleUser.getCashAmt()));
playParams.put("userIp", userIp);
int isMobile = mobileYn(request);
if(isMobile == 1) {
playParams.put("isMobile", "Y");
} else {
playParams.put("isMobile", "N");
}
if(vendorKey.equals("M01") && !apiVendor.getCashDecimal().equals("1")) {
playParams.put("language", "");
playParams.put("decYn", "Y");
} else {
playParams.put("language", "KR");
playParams.put("decYn", "");
}
playParams.put("currency", "KRW");
playParams.put("requestAT", Long.toString(System.currentTimeMillis()));
//HttpEntity<HashMap<String, String>> playEntity = new HttpEntity<>(playParams, playheaders);
log.info(LOG_PREFIX+ apiVendor.getApiUrl() + "/play"+"::Request::" + playParams.toString());
Mono<String> playUserMono = webClient.post()
.uri(playBuilder.toUriString())
.headers(httpHeaders -> httpHeaders.addAll(playheaders))
.bodyValue(playParams)
.retrieve()
.bodyToMono(String.class);
String playUserResponse = playUserMono.block(); // Blocking to get the response synchronously
log.info(LOG_PREFIX+ apiVendor.getApiUrl() + "/play"+"::Response::" + playUserResponse);
JSONObject playJson = new JSONObject(playUserResponse);
String playResultCode = playJson.getString("resultCode");
log.info(LOG_PREFIX+ "playResultCode::"+playResultCode);
if("0".equals(playResultCode)) {
JSONObject playData = new JSONObject(playJson.getString("data"));
String callbackType = playData.getString("callbackType");
HashMap lockParam = new HashMap<>();
lockParam.put("siteId", searchMem.getSiteId());
lockParam.put("memId", searchMem.getMemId());
lockParam.put("symLock", "N");
int result = userService.userChangeSymLock(lockParam);
log.info(LOG_PREFIX+ "userChangeSymLock(N) Result=" + result);
lauchURL = playData.getString("gameurl");
log.info(LOG_PREFIX+ "lauchURL::" + lauchURL);
HashMap flagParam = new HashMap<>();
flagParam.put("siteId", searchMem.getSiteId());
flagParam.put("memId", searchMem.getMemId());
flagParam.put("changeFlag", "N");
int result2 = userService.userChangeFlag(flagParam);
log.info(LOG_PREFIX+ "userChangeFlag(N) Result=" + result2);
} else {
log.error(LOG_PREFIX+ "resultMessage1::" + userJson.getString("resultMessage"));
throw new ApiException(playResultCode, playJson.getString("resultMessage"));
}
} else {
log.error(LOG_PREFIX+ "resultMessage2::" + userJson.getString("resultMessage"));
throw new ApiException("1011", userJson.getString("resultMessage"));
}
// 게임 접속 로그
String logDesc = gameInMsg+"[venderKey:"+vendorKey+"][gameKey:"+gameKey+"][requestTimeout:"+requestTimeout+"][userTimeout:"+userTimeout+"]";
try {
Map logParam = new HashMap();
logParam.put("siteId", searchMem.getSiteId());
logParam.put("memId", searchMem.getMemId());
logParam.put("logType", "GAME_IN");
logParam.put("logoutYn", "");
logParam.put("logName", "triple");
logParam.put("logDesc", logDesc);
logParam.put("vendorName", vendorName);
logParam.put("gameName", gameName);
logParam.put("regId", "");
logParam.put("regIp", userIp);
logParam.put("token", "");
commonService.insertlog(logParam);
log.info(LOG_PREFIX+ "insertlog()");
} catch(Exception e){
log.error(LOG_PREFIX+ "[Exception]"+e.toString());
}
return lauchURL;
}
private String getRvHoldemUrl(HttpServletRequest request, Member searchMem, VendorGameReq gameReq,
ApiVendorCompInfo apiVendor, Long requestTimeout, Long userTimeout) throws ResourceAccessException, ApiException, Exception {
String siteId = searchMem.getSiteId();
String memId = searchMem.getMemId();
final String LOG_PREFIX = "#-getGame::"+siteId+"::"+memId+"::getTripleUrl::";
log.info(LOG_PREFIX+ apiVendor);
String lauchURL = null;
String userIp = IPKit.getIpAddressByRequest(request);
if(userIp.equals("0:0:0:0:0:0:0:1")) {
userIp = "211.114.32.97";
}
HashMap<String, String> lastGameInfo = userService.getLastGameInfoNoLimit(searchMem);
log.info(LOG_PREFIX+ "getLastGameInfoNoLimit()::" + lastGameInfo);
String gameInMsg = "";
if(lastGameInfo != null && lastGameInfo.get("cashType").toString().equals("BET") && lastGameInfo.get("vendorComp").toString().equals(apiVendor.getApiVendorCode())) {
log.info(LOG_PREFIX+ "###- RV-HOLDEM GAME => RV-HOLDEM GAME");
gameInMsg = "["+lastGameInfo.get("vendorComp").toString()+"]["+apiVendor.getApiVendorCode()+"]";
} else {
if(lastGameInfo != null && lastGameInfo.get("cashType").toString().equals("BET")) {
log.info(LOG_PREFIX+ "###- OTHER GAME => RV-HOLDEM GAME");
gameInMsg = "["+lastGameInfo.get("vendorComp").toString()+"]["+apiVendor.getApiVendorCode()+"]";
} else {
log.info(LOG_PREFIX+ "###- CASH => RV-HOLDEM GAME");
gameInMsg = "[cash]["+apiVendor.getApiVendorCode()+"]";
}
}
// Get User Info
MemberDetail user = userService.getMemByRvHoldem(searchMem);
// 게임실행 API Proc
String uid = user.getSiteIdxHex() + user.getMemId();
int userId = 0;
if(user.getUserId() == null) {
// Create user
JSONObject params = new JSONObject();
params.put("uid", uid);
params.put("nickname", user.getMemNick());
params.put("agentCode", apiVendor.getClientId());
params.put("userLevel", 1);
userId = rvHoldemService.createUser(LOG_PREFIX, apiVendor, params);
if(userId != 0) {
// Insert rvholdem user info
HashMap userMap = new HashMap<>();
userMap.put("siteId", siteId);
userMap.put("memId", memId);
userMap.put("userId", userId);
userMap.put("uid", uid);
userMap.put("nickname", user.getMemNick());
int result = userService.insertRvHoldemAuthInfo(userMap);
log.info(LOG_PREFIX+ "Insert rvholdem user info result : " + result);
} else {
log.error(LOG_PREFIX+ "RvHoldemService.createUser() Fail..");
throw new ApiException("1011", "RvHoldemService.createUser() Fail..");
}
} else {
userId = user.getUserId().intValue();
}
// Get game link
JSONObject params = new JSONObject();
params.put("userId", userId);
params.put("nickname", user.getMemNick());
params.put("agentCode", apiVendor.getClientId());
params.put("userLevel", 1);
lauchURL = rvHoldemService.gameLink(LOG_PREFIX, apiVendor, params);
if(lauchURL == null) {
log.error(LOG_PREFIX+ "RvHoldemService.gameLink() Fail..");
throw new ApiException("1011", "RvHoldemService.gameLink() Fail..");
}
// 게임 접속 로그
String logDesc = gameInMsg+"[requestTimeout:"+requestTimeout+"][userTimeout:"+userTimeout+"]";
try {
Map logParam = new HashMap();
logParam.put("siteId", searchMem.getSiteId());
logParam.put("memId", searchMem.getMemId());
logParam.put("logType", "GAME_IN");
logParam.put("logoutYn", "");
logParam.put("logName", "triple");
logParam.put("logDesc", logDesc);
logParam.put("vendorName", "RV-HOLDEM");
logParam.put("gameName", "");
logParam.put("regId", "");
logParam.put("regIp", userIp);
logParam.put("token", "");
commonService.insertlog(logParam);
log.info(LOG_PREFIX+ "insertlog()");
} catch(Exception e){
log.error(LOG_PREFIX+ "[Exception]"+e.toString());
}
return lauchURL;
}
@ResponseBody
@PostMapping(value="/getSlotList")
public ApiResponse getSlotList(@RequestHeader String token, HttpServletRequest request, @RequestBody VendorReq gameReq) {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
String siteId = tokenInfo.getSid();
String memId = tokenInfo.getMid();
final String LOG_PREFIX = "#-getSlotList::"+siteId+"::"+memId+":::";
log.info(LOG_PREFIX+ "========== START ==========");
Member search = new Member();
search.setMemId(tokenInfo.getMid());
search.setSiteId(tokenInfo.getSid());
List<SlotGame> gamesList = null;
CodeSearch codeSearch = new CodeSearch();
codeSearch.setSiteId(tokenInfo.getSid());
codeSearch.setCode(gameReq.getVendorKey());
log.info(LOG_PREFIX+ "CodeSearch::" + codeSearch);
String vendorComp = commonService.getApiVendor(codeSearch);
log.info(LOG_PREFIX+ "vendorComp::" + vendorComp);
if(vendorComp == null || vendorComp.equals("")) {
throw new ApiException("B0099", "실행할 수 없는 게임입니다. 고객센터에 문의하세요.");
}
HashMap<String, String> siteParam = new HashMap<>();
siteParam.put("siteId", tokenInfo.getSid());
siteParam.put("apiVendorCode", vendorComp);
ApiVendorCompInfo apiVendor = userService.getApiVendorCompInfo(siteParam);
if(apiVendor == null) {
throw new ApiException("B0099", "실행할 수 없는 게임입니다. 고객센터에 문의하세요.");
}
switch (vendorComp) {
case "triple":
gamesList = getTripleGameList(search, gameReq, apiVendor);
break;
default:
break;
}
apiResponse.put("games", gamesList);
log.info(LOG_PREFIX+ "========== END ==========");
apiResponse.success();
} catch (ResourceAccessException rae) {
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error("[ConnectTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("ConnectTimeoutException");
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error("[SocketTimeoutException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("SocketTimeoutException");
}
if(rae.getCause() instanceof InterruptedException) {
log.error("[InterruptedException]"+rae.getMessage());
apiResponse.setResultCode("TE99");
apiResponse.setResultMessage("InterruptedException");
}
} catch(ApiException e) {
log.error("[ApiException]"+e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error("[Exception]"+e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private List<SlotGame> getTripleGameList(Member search, VendorReq gameReq, ApiVendorCompInfo apiVendor) throws ResourceAccessException, ApiException, Exception {
String siteId = search.getSiteId();
String memId = search.getMemId();
final String LOG_PREFIX = "#-getSlotList::"+siteId+"::"+memId+"::TRIPLE:::";
log.info(LOG_PREFIX+ "VendorReq::"+gameReq);
log.info(LOG_PREFIX+ "ApiVendorCompInfo::"+apiVendor);
MemberDetail tripleUser = userService.getMemByTriple(search);
String tripleUsername = tripleUser.getSiteIdxHex() + tripleUser.getMemId();
List<SlotGame> gamesList = new ArrayList<SlotGame>();
// Vendor, Game 값 가져오기.
CodeSearch codeSrch = new CodeSearch();
codeSrch.setMasterCode("kplay");
codeSrch.setGroupCode(gameReq.getGameType());
codeSrch.setCode(gameReq.getVendorKey());
HashMap code = commonService.getCode(codeSrch);
String venderKey = code.get("tripleVendor").toString();
log.info(LOG_PREFIX+ "venderKey::"+venderKey);
// RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.set("User-Agent", "PostmanRuntime/7.28.4");
headers.set("Authorization", apiVendor.getClientSecretKey());
headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8")));
// 게임실행 API Proc
UriComponentsBuilder slotBuilder = UriComponentsBuilder.fromHttpUrl(apiVendor.getApiUrl() + "/games");
// UriComponentsBuilder slotBuilder = UriComponentsBuilder.fromHttpUrl("http://localhost:8080/api" + "/games");
HashMap<String, String> slotParams = new HashMap<String, String>();
slotParams.put("userId", tripleUsername);
slotParams.put("vendorKey", venderKey);
//HttpEntity<HashMap<String, String>> slotEntity = new HttpEntity<>(slotParams, headers);
log.info(LOG_PREFIX+ "Request::"+ apiVendor.getApiUrl() + "/games"+"::Request::" + slotParams.toString());
Mono<String> slotResMono = webClient.post()
.uri(slotBuilder.toUriString())
.headers(httpHeaders -> httpHeaders.addAll(headers))
.bodyValue(slotParams)
.retrieve()
.bodyToMono(String.class);
String slotRes = slotResMono.block(); // Blocking to get the response synchronously
JSONObject slotJson = new JSONObject(slotRes);
String slotResultCode = slotJson.getString("resultCode");
log.info(LOG_PREFIX+ "Response::"+slotResultCode);
if("0".equals(slotResultCode)) {
JSONObject slotData = new JSONObject(slotJson.getString("data"));
JSONArray games = slotData.getJSONArray("list");
int length = games.length();
for(int i=0; i<length; i++) {
SlotGame game = new SlotGame();
JSONObject objGame = games.getJSONObject(i);
game.setId(objGame.getString("gameIdx"));
game.setKey(objGame.getString("gameKey"));
SlotGameName gameName = new SlotGameName();
gameName.setKo(objGame.getString("gameName"));
gameName.setEn(objGame.getString("gameNameEn"));
game.setNames(gameName);
game.setImage(objGame.getString("gameImg"));
gamesList.add(game);
}
} else {
log.error(LOG_PREFIX+ "Response::ERROR::resultMessage::" + slotJson.getString("resultMessage"));
throw new ApiException("1011", slotJson.getString("resultMessage"));
}
return gamesList;
}
public int mobileYn(HttpServletRequest request) {
HttpSession session = request.getSession(true);
String userAgent = request.getHeader("user-agent");
String referer = request.getHeader("referer");
String vt = "";
int res = 0;
if(!(request.getParameter("vt") == null || "".equals(request.getParameter("vt")))) {
vt = request.getParameter("vt");
if("M".equals(vt)) {
session.setAttribute("isMobile", "mobile");
res = 1;
}
if("W".equals(vt)) {
session.setAttribute("isMobile", "web");
res = 0;
}
}
return res;
}
@ResponseBody
@PostMapping(value="/powerballResult")
public ApiResponse powerballResult( @RequestHeader String token, HttpServletRequest request, @RequestBody BetSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
Site site = getSiteByCheck(request);
if(site==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
search.setSiteId(tokenInfo.getSid());
search.setMemId(tokenInfo.getMid());
PageFormVO pageVo= new PageFormVO();
if(search.getPage()==0)search.setPage(1);
int totalCount = betService.getPowerballResultListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
commonForm.setCount_per_list(10);
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap> betList = betService.getPowerballResultList(search);
apiResponse.put("list", betList);
apiResponse.success();
} catch(ApiException e) {
log.error(e.toString());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
private Site getSiteByCheck(HttpServletRequest request) {
Site site = userService.getSiteInfoByKey(request.getHeader("Authorization").toString());
return site;
}
}

View File

@@ -0,0 +1,79 @@
package com.bb.front;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.PassimAddrReq;
import com.bb.model.PassimAddrRes;
import com.bb.service.PassimService;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/passim")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiPassimController {
private final PassimService passimService;
private final JwtManager jwtManager;
@ResponseBody
@PostMapping("/h2h/address")
public ApiResponse createAddress(@RequestHeader String token, HttpServletRequest request, @RequestBody PassimAddrReq req) {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-passim::createAddress::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::";
req.setMemIdx(tokenInfo.getMidx());
ObjectMapper objectMapper = new ObjectMapper();
String reqJsonStr = objectMapper.writeValueAsString(req);
JSONObject reqObj = new JSONObject(reqJsonStr);
log.info(LOG_PREFIX+ "Request {}", reqObj);
PassimAddrRes res = passimService.createAddress(LOG_PREFIX, req);
if(res != null) {
apiResponse.put("address", res.getAddress());
apiResponse.put("tag", res.getTag());
apiResponse.success();
} else {
log.error(LOG_PREFIX+ "Create address fail...");
apiResponse.fail();
}
} catch(ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-user::cash:in::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::";
log.error(LOG_PREFIX+ "[ApiException] "+e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
log.error(e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,170 @@
package com.bb.front;
import java.io.IOException;
import java.net.SocketTimeoutException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.io.IOUtils;
import org.apache.http.conn.ConnectTimeoutException;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.ResourceAccessException;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import com.bb.model.TestDto;
import com.bb.service.UserService;
import com.bb.util.IPKit;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Controller
public class TestController {
@Autowired
private UserService userService;
@Autowired
RestTemplate restTemplate;
@CrossOrigin
@PostMapping("/test")
public TestDto hello(HttpServletRequest request, @RequestBody TestDto dto) throws IOException {
ServletInputStream inputStream = request.getInputStream();
byte[] bytes = IOUtils.toByteArray(inputStream);
String s = new String(bytes, StandardCharsets.UTF_8);
log.info("s = " + s);
log.info("dto = " + dto);
return dto;
}
@GetMapping("/test/evo")
public String evoRedirect(HttpServletRequest request, @RequestParam String type) {
final String LOG_PREFIX = "#-evoRedirect::type::"+type+":::";
final String SITE_ID = "peanuts";
final String MEM_ID = "mpt01";
final String SECRET_KEY = "peanuts9mGIpbi211k";
final String API_URL = "https://oprvendor.com/api";
final String TRIPLE_USERNAME = "007"+MEM_ID;
String lauchURL = "";
String userIp = IPKit.getIpAddressByRequest(request);
if(userIp.equals("0:0:0:0:0:0:0:1")) {
userIp = "211.114.32.97";
}
String vendorKey = "";
if(type.equals("1")) {
vendorKey = "C01";
} else {
vendorKey = "C01";
}
try {
HttpHeaders header = new HttpHeaders();
header.setContentType(MediaType.APPLICATION_JSON);
header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
header.set("User-Agent", "PostmanRuntime/7.28.4");
header.set("Authorization", SECRET_KEY);
header.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8")));
UriComponentsBuilder authBuilder = UriComponentsBuilder.fromHttpUrl(API_URL + "/auth");
HashMap<String, String> authParams = new HashMap<String, String>();
authParams.put("userId", TRIPLE_USERNAME);
authParams.put("nickName", TRIPLE_USERNAME);
authParams.put("balance", "0");
HttpEntity<HashMap<String, String>> authEntity = new HttpEntity<>(authParams, header);
log.info(LOG_PREFIX+ "/auth"+"::Request::" + authParams.toString());
ResponseEntity<String> authUser = restTemplate.postForEntity(authBuilder.toUriString(), authEntity, String.class);
log.info(LOG_PREFIX+ "/auth"+"::Response::" + authUser.getBody());
JSONObject userJson = new JSONObject(authUser.getBody());
String authResultCode = userJson.getString("resultCode");
if("0".equals(authResultCode)) {
JSONObject authData = new JSONObject(userJson.getString("data"));
String tripleToken = authData.getString("token");
// 헤더에 토큰 세팅
header.set("token", tripleToken);
UriComponentsBuilder playBuilder = UriComponentsBuilder.fromHttpUrl(API_URL + "/play");
HashMap<String, String> playParams = new HashMap<String, String>();
playParams.put("userId", TRIPLE_USERNAME);
playParams.put("vendorKey", vendorKey);
playParams.put("gameKey", "");
playParams.put("balance", "0");
playParams.put("userIp", userIp);
playParams.put("isMobile", "N");
playParams.put("language", "KR");
playParams.put("decYn", "");
playParams.put("currency", "KRW");
playParams.put("requestAT", Long.toString(System.currentTimeMillis()));
HttpEntity<HashMap<String, String>> playEntity = new HttpEntity<>(playParams, header);
log.info(LOG_PREFIX+ "/play"+"::Request::" + playParams.toString());
ResponseEntity<String> playUser = restTemplate.postForEntity(playBuilder.toUriString(), playEntity, String.class);
log.info(LOG_PREFIX+ "/play"+"::Response::" + playUser.getBody());
JSONObject playJson = new JSONObject(playUser.getBody());
String playResultCode = playJson.getString("resultCode");
if("0".equals(playResultCode)) {
JSONObject playData = new JSONObject(playJson.getString("data"));
HashMap lockParam = new HashMap<>();
lockParam.put("siteId", SITE_ID);
lockParam.put("memId", MEM_ID);
lockParam.put("symLock", "N");
int result = userService.userChangeSymLock(lockParam);
log.info(LOG_PREFIX+ "userChangeSymLock(N) Result=" + result);
lauchURL = playData.getString("gameurl");
log.info(LOG_PREFIX+ "lauchURL::" + lauchURL);
}
}
} catch (ResourceAccessException rae) {
log.error("#-getGame::ResourceAccessException::"+ "[ResourceAccessException]"+rae.toString());
if(rae.getCause() instanceof ConnectTimeoutException) {
log.error(LOG_PREFIX+ "[ConnectTimeoutException]"+rae.getMessage());
}
if(rae.getCause() instanceof SocketTimeoutException) {
log.error(LOG_PREFIX+ "[SocketTimeoutException]"+rae.getMessage());
}
if(rae.getCause() instanceof InterruptedException) {
log.error(LOG_PREFIX+ "[InterruptedException]"+rae.getMessage());
}
} catch (Exception e) {
log.error(LOG_PREFIX+ "[Exception]"+e.toString());
e.printStackTrace();
}
return "redirect:"+lauchURL;
}
}

View File

@@ -0,0 +1,389 @@
package com.bb.front.v2;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.BoardListSearch;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.service.BoardService;
import com.bb.service.CommonService;
import com.bb.service.MainService;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/v2/main")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiV2MainController {
private final MainService mainService;
private final BoardService boardService;
private final CommonService commonService;
private final JwtManager jwtManager;
/*
* 메인 및 모든화면 상단 정보 (회원수, 보유머니, 보유포인트, 슬롯롤링%, 카지노롤링%)
*/
@ResponseBody
@PostMapping(value="/topInfo")
public ApiResponse topInfo(HttpServletRequest request, @RequestHeader String token) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::retail::topInfo::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
HashMap<String, String> param = new HashMap<>();
param.put("siteId", tokenInfo.getSid());
param.put("memId", tokenInfo.getMid());
HashMap<String, String> mainTopInfo = mainService.getMainTopInfo(param);
if(mainTopInfo == null) {
mainTopInfo = new HashMap<>();
mainTopInfo.put("siteId", tokenInfo.getSid());
mainTopInfo.put("memId", tokenInfo.getMid());
mainTopInfo.put("userCnt", "0");
mainTopInfo.put("totalCashAmt", "0");
mainTopInfo.put("totalPointAmt", "0");
mainTopInfo.put("casinoRate", "0");
mainTopInfo.put("slotRate", "0");
}
apiResponse.put("mainTopInfo", mainTopInfo);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::topInfo::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::topInfo::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* 메인 통계 정보1 (충전, 환전, 보유금지급, 보유금회수, 금일신규회원, 금일배팅손익)
*/
@ResponseBody
@PostMapping(value="/statistics")
public ApiResponse mainStatistics(HttpServletRequest request, @RequestHeader String token) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::retail::mainStatistics::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
HashMap<String, String> param = new HashMap<>();
param.put("siteId", tokenInfo.getSid());
param.put("memId", tokenInfo.getMid());
param.put("blankSpinSetType", siteOption.getBlankSpinSetType());
HashMap<String, String> mainStatisticsInfo = mainService.getMainStatistics(param); // Use blankSpinSetType
if(mainStatisticsInfo == null) {
mainStatisticsInfo = new HashMap<>();
mainStatisticsInfo.put("siteId", tokenInfo.getSid());
mainStatisticsInfo.put("memId", tokenInfo.getMid());
mainStatisticsInfo.put("dCashIn", "0");
mainStatisticsInfo.put("dCashInCnt", "0");
mainStatisticsInfo.put("dCashOut", "0");
mainStatisticsInfo.put("dCashOutCnt", "0");
mainStatisticsInfo.put("dPayment", "0");
mainStatisticsInfo.put("dPayback", "0");
mainStatisticsInfo.put("dJoinCnt", "0");
mainStatisticsInfo.put("dBetBEP", "0");
}
apiResponse.put("mainStatisticsInfo", mainStatisticsInfo);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::mainStatistics::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::mainStatistics::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* 머니입출금 개요
*/
@ResponseBody
@PostMapping(value="/cashReport")
public ApiResponse cashReport(HttpServletRequest request, @RequestHeader String token, @RequestBody HashMap<String, String> param) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::retail::cashReport::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
if(param == null || param.get("startDate") == null || param.get("endDate") == null) {
throw new ApiException("1000", "accessDinied");
}
param.put("siteId", tokenInfo.getSid());
param.put("memId", tokenInfo.getMid());
param.put("blankSpinSetType", siteOption.getBlankSpinSetType());
log.info(LOG_PREFIX+ "param : " + param.toString());
HashMap<String, String> cashReport = mainService.getMainCashReport(param); // Use blankSpinSetType
if(cashReport == null) {
cashReport = new HashMap<>();
cashReport.put("siteId", tokenInfo.getSid());
cashReport.put("memId", tokenInfo.getMid());
cashReport.put("cashIn", "0");
cashReport.put("payment", "0");
cashReport.put("inPaymentSum", "0");
cashReport.put("cashOut", "0");
cashReport.put("payback", "0");
cashReport.put("outPaybackSum", "0");
cashReport.put("normalCashAmt", "0");
cashReport.put("partnerCashAmt", "0");
cashReport.put("betAmt", "0");
cashReport.put("winAmt", "0");
cashReport.put("betBEP", "0");
cashReport.put("totalPointAmt", "0");
}
apiResponse.put("cashReport", cashReport);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::cashReport::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::cashReport::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* 나의 자금 변동내역
*/
@ResponseBody
@PostMapping(value="/myCashReport")
public ApiResponse myCashReport(HttpServletRequest request, @RequestHeader String token, @RequestBody HashMap<String, String> param) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::retail::myCashReport::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
if(param == null || param.get("startDate") == null || param.get("endDate") == null) {
throw new ApiException("1000", "accessDinied");
}
param.put("siteId", tokenInfo.getSid());
param.put("memId", tokenInfo.getMid());
log.info(LOG_PREFIX+ "param : " + param.toString());
HashMap<String, String> myCashReport = mainService.getMyCashReport(param);
if(myCashReport == null) {
myCashReport = new HashMap<>();
myCashReport.put("siteId", tokenInfo.getSid());
myCashReport.put("memId", tokenInfo.getMid());
myCashReport.put("cashIn", "0");
myCashReport.put("adminPayment", "0");
myCashReport.put("upperPayment", "0");
myCashReport.put("myPayback", "0");
myCashReport.put("changePoint", "0");
myCashReport.put("increaseTotal", "0");
myCashReport.put("cashOut", "0");
myCashReport.put("adminPayback", "0");
myCashReport.put("upperPayback", "0");
myCashReport.put("myPayment", "0");
myCashReport.put("decreaseTotal", "0");
}
apiResponse.put("myCashReport", myCashReport);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::myCashReport::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::myCashReport::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* 메인 공지사항
*/
@ResponseBody
@PostMapping(value={"notiList"})
public ApiResponse notiList(HttpServletRequest request, @RequestHeader String token) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::retail::notiList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
BoardListSearch search = new BoardListSearch();
search.setSiteId(tokenInfo.getSid());
List<HashMap<String, String>> boardList = boardService.getMainBoardList(search);
apiResponse.put("boardList", boardList);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::notiList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::notiList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* 최근 지급/회수
*/
@ResponseBody
@PostMapping(value="/newPayLog")
public ApiResponse mainNewPayLog(HttpServletRequest request, @RequestHeader String token) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token==null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::retail::mainNewPayLog::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
HashMap<String, String> param = new HashMap<>();
param.put("siteId", tokenInfo.getSid());
param.put("memId", tokenInfo.getMid());
log.info(LOG_PREFIX+ "param : " + param.toString());
HashMap<String, Object> mainNewPayLog = mainService.getMainNewPayLog(param);
apiResponse.put("mainNewPayLog", mainNewPayLog);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::mainNewPayLog::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::retail::mainNewPayLog::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,482 @@
package com.bb.front.v2;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.bb.exception.ApiException;
import com.bb.jwt.JwtManager;
import com.bb.model.ApiResponse;
import com.bb.model.PageFormVO;
import com.bb.model.SiteOption;
import com.bb.model.SiteSearch;
import com.bb.model.UserListSearch;
import com.bb.model.UserSearch;
import com.bb.service.CommonService;
import com.bb.service.RateService;
import com.bb.service.RetailService;
import com.bb.service.UserService;
import com.bb.util.PagingUtil;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@RestController
@Slf4j
@RequestMapping("/api/v2/user")
@RequiredArgsConstructor
@SecurityRequirement(name = "Authorization")
public class ApiV2UserController {
private final JwtManager jwtManager;
private final RetailService retailService;
private final UserService userService;
private final RateService rateService;
private final CommonService commonService;
private final PasswordEncoder passwordEncoder;
/*
* [직하부 회원 목록] API
*/
@ResponseBody
@PostMapping(value={"/lowerUserList"})
public ApiResponse lowerUserList(@RequestHeader String token, HttpServletRequest request, @RequestBody UserListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::user::lowerUserList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
if(search == null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(tokenInfo.getSid());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
if(search.getStartDate() == null || search.getStartDate().equals("")) {
search.setStartDate(nDateStr+" 00:00:00");
}
if(search.getEndDate() == null || search.getEndDate().equals("")) {
search.setEndDate(nDateStr+" 23:59:59");
}
if(search.getTreeOption() == null || "".equals(search.getTreeOption())) {
search.setTreeOption("N");
}
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
log.info(LOG_PREFIX+ "UserListSearch::"+search.toString());
if(search.getMemId() == null || search.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
PageFormVO pageVo= new PageFormVO();
if(search.getPage() == 0) search.setPage(1);
int totalCount = userService.getLowerUserListCnt(search); // Use blankSpinSetType
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, Object>> list = userService.getLowerUserList(search); // Use blankSpinSetType
apiResponse.put("list", list);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::lowerUserList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::lowerUserList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* [접속중 회원 목록] API
*/
@ResponseBody
@PostMapping(value={"/loginList"})
public ApiResponse loginList(@RequestHeader String token, HttpServletRequest request, @RequestBody UserSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::user::loginList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
if(search == null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(tokenInfo.getSid());
if(search.getTreeOption() == null || "".equals(search.getTreeOption())) {
search.setTreeOption("N");
}
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
log.info(LOG_PREFIX+ "UserSearch::"+search.toString());
if(search.getMemId() == null || search.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
List<HashMap<String, Object>> list = userService.getLoginUserList(search); // Use blankSpinSetType
apiResponse.put("list", list);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::loginList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::loginList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* [회원 상세 - 게임실행 목록] API
*/
@ResponseBody
@PostMapping(value={"/detail/playGameList"})
public ApiResponse playGameList(@RequestHeader String token, HttpServletRequest request, @RequestBody UserListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::user::playGameList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
if(search == null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(tokenInfo.getSid());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
if(search.getStartDate() == null || search.getStartDate().equals("")) {
search.setStartDate(nDateStr+" 00:00:00");
}
if(search.getEndDate() == null || search.getEndDate().equals("")) {
search.setEndDate(nDateStr+" 23:59:59");
}
log.info(LOG_PREFIX+ "UserListSearch::"+search.toString());
if(search.getMemId() == null || search.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
PageFormVO pageVo= new PageFormVO();
if(search.getPage() == 0) search.setPage(1);
int totalCount = userService.getPlayGameListCnt(search);
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, Object>> list = userService.getPlayGameList(search);
apiResponse.put("list", list);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::playGameList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::playGameList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
/*
* [회원 상세 - 게임베팅 목록] API
*/
@ResponseBody
@PostMapping(value={"/detail/betList"})
public ApiResponse detailBetList(@RequestHeader String token, HttpServletRequest request, @RequestBody UserListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::user::detailBetList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
if(search == null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(tokenInfo.getSid());
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
if(search.getStartDate() == null || search.getStartDate().equals("")) {
search.setStartDate(nDateStr+" 00:00:00");
}
if(search.getEndDate() == null || search.getEndDate().equals("")) {
search.setEndDate(nDateStr+" 23:59:59");
}
log.info(LOG_PREFIX+ "UserListSearch::"+search.toString());
if(search.getMemId() == null || search.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
PageFormVO pageVo= new PageFormVO();
if(search.getPage() == 0) search.setPage(1);
int totalCount = userService.getDetailBetListCnt(search); // Use blankSpinSetType
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, Object>> list = userService.getDetailBetList(search); // Use blankSpinSetType
apiResponse.put("list", list);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::detailBetList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::detailBetList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
@ResponseBody
@PostMapping(value={"/detail/betListNew"})
public ApiResponse detailBetListNew(@RequestHeader String token, HttpServletRequest request, @RequestBody UserListSearch search) throws Exception {
ApiResponse apiResponse = new ApiResponse();
try {
if(token == null) {
throw new ApiException("1000", "accessDinied");
}
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
if(!( tokenInfo.getPartnerLevel().contains("PTN") || tokenInfo.getType().equals("PARTNER") || tokenInfo.getType().equals("P_NORMAL")) ) {
throw new ApiException("1000", "accessDinied");
}
final String LOG_PREFIX = "#-v2::user::detailBetList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
if(search == null) {
throw new ApiException("1000", "accessDinied");
}
search.setSiteId(tokenInfo.getSid());
SiteSearch paramSite = new SiteSearch();
paramSite.setSiteId(tokenInfo.getSid());
SiteOption siteOption = commonService.getSiteSetting(paramSite);
search.setBlankSpinSetType(siteOption.getBlankSpinSetType());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long nDate = System.currentTimeMillis();
String nDateStr = sdf.format(nDate);
if(search.getStartDate() == null || search.getStartDate().equals("")) {
search.setStartDate(nDateStr+" 00:00:00");
}
if(search.getEndDate() == null || search.getEndDate().equals("")) {
search.setEndDate(nDateStr+" 23:59:59");
}
log.info(LOG_PREFIX+ "UserListSearch::"+search.toString());
if(search.getMemId() == null || search.getMemId().equals("")) {
throw new ApiException("1000", "accessDinied");
}
PageFormVO pageVo= new PageFormVO();
if(search.getPage() == 0) search.setPage(1);
int totalCount = userService.getDetailBetListNewCnt(search); // Use blankSpinSetType
if (totalCount != 0) {
PageFormVO commonForm = new PageFormVO();
commonForm.setFunction_name("goPage");
commonForm.setPage(search.getPage());
commonForm.setCount_per_page(20);
if(search.getCount_per_list()==0) {
commonForm.setCount_per_list(10);
} else {
commonForm.setCount_per_list(search.getCount_per_list());
}
commonForm.setTatal_list_count(totalCount);
pageVo = PagingUtil.setPageUtil(commonForm);
search.setLimit(pageVo.getLimit());
search.setOffset(pageVo.getOffset());
search.setTatal_list_count(totalCount);
apiResponse.put("pageInfo", pageVo);
}
List<HashMap<String, Object>> list = userService.getDetailBetListNew(search); // Use blankSpinSetType
apiResponse.put("list", list);
apiResponse.success();
} catch (ApiException e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::detailBetList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "ApiException::" + e.getApiResponse());
apiResponse = e.getApiResponse();
} catch (Exception e) {
JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token);
final String LOG_PREFIX = "#-v2::user::detailBetList::"+tokenInfo.getSid()+"::"+tokenInfo.getMid()+"::::";
log.error(LOG_PREFIX+ "Exception::" + e.toString());
e.printStackTrace();
apiResponse.fail();
}
return apiResponse;
}
}

View File

@@ -0,0 +1,14 @@
package com.bb.jwt;
import lombok.Data;
@Data
public class JwtClame {
private Integer siteIdx;
private Integer memIdx;
private String siteId;
private String memId;
private String type;
private String partnerLevel;
}

View File

@@ -0,0 +1,25 @@
package com.bb.jwt;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.bb.jwt.JwtManager;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JwtConfig {
@Value("${jwt.secret}")
private String jwtSecret;
@Value("${jwt.validity-in-seconds}")
private long tokenValidityInSeconds;
@Bean
public JwtManager jwtManager() {
return new JwtManager(jwtSecret, tokenValidityInSeconds);
}
}

View File

@@ -0,0 +1,166 @@
package com.bb.jwt;
import java.nio.charset.StandardCharsets;
import java.security.Key;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class JwtManager {
private String secretKey;
private long TOKEN_VALIDATION_SECOND;
public JwtManager(String secretKey, long TOKEN_VALIDATION_SECOND) {
this.secretKey = secretKey;
this.TOKEN_VALIDATION_SECOND = TOKEN_VALIDATION_SECOND;
}
// secretKey 로드
private Key getSigninKey() {
byte[] keyBytes = secretKey.getBytes(StandardCharsets.UTF_8);
return Keys.hmacShaKeyFor(keyBytes);
}
// 토큰 생성
public String generateToken(JwtClame jwtinfo) {
Claims claims = Jwts.claims();
claims.put("sidx", jwtinfo.getSiteIdx());
claims.put("midx", jwtinfo.getMemIdx());
claims.put("mid", jwtinfo.getMemId());
claims.put("sid", jwtinfo.getSiteId());
claims.put("type", jwtinfo.getType());
claims.put("partnerLevel", jwtinfo.getPartnerLevel());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long currentTMS = System.currentTimeMillis();
Date issuedAt = new Date(currentTMS);
String issuedAtStr = sdf.format(issuedAt);
Date expiration = new Date(currentTMS + (TOKEN_VALIDATION_SECOND * 1000));
String expirationStr = sdf.format(expiration);
log.debug("[JwtManager.generateToken(jwtinfo)] sid: " + jwtinfo.getSiteId() + ", sidx: " + jwtinfo.getSiteIdx());
log.debug("[JwtManager.generateToken(jwtinfo)] mid: " + jwtinfo.getMemId() + ", midx: " + jwtinfo.getMemIdx());
log.debug("[JwtManager.generateToken(jwtinfo)] IAT: " + issuedAtStr);
log.debug("[JwtManager.generateToken(jwtinfo)] EAT: " + expirationStr);
log.info("#-JwtManager::generateToken::admin::"+jwtinfo.getSiteId()+"::"+jwtinfo.getMemId()+"::IAT::"+issuedAtStr+"::EAT::"+expirationStr);
return Jwts.builder()
.setClaims(claims)
.setIssuedAt(issuedAt)
.setExpiration(expiration)
.signWith(getSigninKey(), SignatureAlgorithm.HS256)
.compact();
}
// 토큰 생성
public String generateToken(JwtClame jwtinfo, int tokenValidationSec) {
Claims claims = Jwts.claims();
claims.put("sidx", jwtinfo.getSiteIdx());
claims.put("midx", jwtinfo.getMemIdx());
claims.put("mid", jwtinfo.getMemId());
claims.put("sid", jwtinfo.getSiteId());
claims.put("type", jwtinfo.getType());
claims.put("partnerLevel", jwtinfo.getPartnerLevel());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
long currentTMS = System.currentTimeMillis();
Date issuedAt = new Date(currentTMS);
String issuedAtStr = sdf.format(issuedAt);
Date expiration = new Date(currentTMS + (tokenValidationSec * 1000));
String expirationStr = sdf.format(expiration);
log.debug("[JwtManager.generateToken(jwtinfo, tokenValidationSec)] sid: " + jwtinfo.getSiteId() + ", sidx: " + jwtinfo.getSiteIdx());
log.debug("[JwtManager.generateToken(jwtinfo, tokenValidationSec)] mid: " + jwtinfo.getMemId() + ", midx: " + jwtinfo.getMemIdx());
log.debug("[JwtManager.generateToken(jwtinfo, tokenValidationSec)] IAT: " + issuedAtStr);
log.debug("[JwtManager.generateToken(jwtinfo, tokenValidationSec)] EAT: " + expirationStr);
log.info("#-JwtManager::generateToken::user::"+jwtinfo.getSiteId()+"::"+jwtinfo.getMemId()+"::IAT::"+issuedAtStr+"::EAT::"+expirationStr);
return Jwts.builder()
.setClaims(claims)
.setIssuedAt(issuedAt)
.setExpiration(expiration)
.signWith(getSigninKey(), SignatureAlgorithm.HS256)
.compact();
}
// 토큰 정보 리턴
public TokenInfo getTokenInfo(String token) {
Claims body = getClaims(token);
Set<String> keySet = body.keySet();
for (String s : keySet) {
// log.info("s = " + s);
}
Integer sidx = body.get("sidx", Integer.class);
Integer midx = body.get("midx", Integer.class);
String mid = body.get("mid", String.class);
String sid = body.get("sid", String.class);
String type = body.get("type", String.class);
String partnerLevel = body.get("partnerLevel", String.class);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date issuedAt = body.getIssuedAt();
String issuedAtStr = sdf.format(issuedAt);
Date expiration = body.getExpiration();
String expirationStr = sdf.format(expiration);
log.debug("[JwtManager.getTokenInfo(token)] sid: " + sid + ", sidx: " + sidx);
log.debug("[JwtManager.getTokenInfo(token)] mid: " + mid + ", midx: " + midx);
log.debug("[JwtManager.getTokenInfo(token)] IAT: " + issuedAtStr);
log.debug("[JwtManager.getTokenInfo(token)] EAT: " + expirationStr);
log.debug("#-JwtManager::generateToken::admin::"+sid+"::"+mid+"::IAT::"+issuedAtStr+"::EAT::"+expirationStr);
return new TokenInfo(sidx, midx, sid, mid, type, partnerLevel, issuedAt, expiration);
}
// 토큰정보 해석
private Claims getClaims(String token) {
Claims body = Jwts.parserBuilder()
.setSigningKey(getSigninKey())
.build()
.parseClaimsJws(token)
.getBody();
return body;
}
@Getter
public class TokenInfo {
private Integer sidx;
private Integer midx;
private String mid;
private String sid;
private String type;
private String partnerLevel;
private Date issuedAt;
private Date expire;
public TokenInfo(Integer sidx, Integer midx, String sid, String mid, String type, String partnerLevel, Date issuedAt, Date expire) {
this.sidx = sidx;
this.midx = midx;
this.sid = sid;
this.mid = mid;
this.type = type;
this.partnerLevel = partnerLevel;
this.issuedAt = issuedAt;
this.expire = expire;
}
@Override
public String toString() {
return "TokenInfo [sidx=" + sidx + ", midx=" + midx + ", mid=" + mid + ", sid=" + sid + ", type=" + type
+ ", partnerLevel=" + partnerLevel + ", issuedAt=" + issuedAt + ", expire=" + expire + "]";
}
}
}

View File

@@ -0,0 +1,17 @@
package com.bb.model;
import lombok.Data;
@Data
public class Admin {
private Integer siteIdx;
private String siteId;
private String adminId;
private String adminName;
private String adminPass;
private String adminOtp;
private String loginYn;
private String regDate;
private String regId;
private String delYn;
}

View File

@@ -0,0 +1,20 @@
package com.bb.model;
import lombok.Data;
@Data
public class AdminBetSearch extends PageFormVO {
private String betId;
private String siteId;
private String idType;
private String memId;
private String gameCategory;
private String isBlankSpinYn;
private String startDate;
private String endDate;
private String orderColumn;
private String orderType;
private String oldYn;
}

View File

@@ -0,0 +1,17 @@
package com.bb.model;
import lombok.Data;
@Data
public class AdminCashSearch extends PageFormVO {
private int idx;
private String siteId;
private String memId;
private String searchType; // "cash", "point"
private String userType; // "N"(일반회원), "P"(파트너), ""(전체)
private String listType; // "2", "-2"
private String startDate;
private String endDate;
private String oldYn;
}

View File

@@ -0,0 +1,12 @@
package com.bb.model;
import lombok.Data;
@Data
public class AdminIp {
private String siteId;
private String adminId;
private String ip;
private String regId;
private String delYn;
}

View File

@@ -0,0 +1,14 @@
package com.bb.model;
import lombok.Data;
@Data
public class AdminLogSearch extends PageFormVO{
private String siteId;
private String adminId;
private String logType;
private String startDate;
private String endDate;
private String regIp;
}

Some files were not shown because too many files have changed in this diff Show More