From ea0292491af7db61f60fec2f173e719887d61a9f Mon Sep 17 00:00:00 2001 From: gong01 Date: Fri, 6 Mar 2026 02:52:38 +0800 Subject: [PATCH] initial commit --- .editorconfig | 9 + .gitignore | 77 + .mvn/wrapper/MavenWrapperDownloader.java | 117 + deploy-aws.sh | 83 + deploy-aws2.sh | 96 + filePath_IS_UNDEFINED/error-2026-01-07.0.gz | Bin 0 -> 1559 bytes jenkinsfile | 90 + jenkinsfile2 | 90 + mvnw | 310 + mvnw.cmd | 182 + pom-real.xml | 217 + pom.xml | 222 + runApi.sh | 108 + .../java/com/bb/ApiServerApplication.java | 15 + .../bb/admin/controller/AgentController.java | 671 ++ .../bb/admin/controller/CreditController.java | 559 ++ .../bb/admin/controller/GuestController.java | 401 + .../admin/controller/InsuranceController.java | 424 + .../bb/admin/controller/MainController.java | 274 + .../bb/admin/controller/ManualController.java | 246 + .../bb/admin/controller/StatController.java | 339 + .../bb/admin/controller/UserController.java | 273 + .../java/com/bb/api/ApiAgentController.java | 1273 +++ .../com/bb/api/ApiBlockGameController.java | 734 ++ .../api/ApiCallbackSpeedTestController.java | 301 + .../com/bb/api/ApiCallbackTestController.java | 1640 ++++ .../java/com/bb/api/ApiCommonController.java | 635 ++ .../java/com/bb/api/ApiCreditController.java | 580 ++ .../java/com/bb/api/ApiMainController.java | 382 + .../java/com/bb/api/ApiSettingController.java | 407 + .../java/com/bb/api/ApiStatController.java | 1058 ++ .../java/com/bb/api/ApiTransController.java | 1710 ++++ .../java/com/bb/api/ApiUserController.java | 389 + .../java/com/bb/common/bean/RedisSession.java | 62 + .../controller/BetResultProcController.java | 11 + .../com/bb/common/model/InChatMessageVO.java | 39 + .../com/bb/common/model/OutChatMessageVO.java | 43 + .../java/com/bb/common/model/OutLoginVO.java | 51 + .../java/com/bb/config/AccessLogFilter.java | 125 + src/main/java/com/bb/config/ApiKeyFilter.java | 39 + src/main/java/com/bb/config/AsyncConfig.java | 59 + .../com/bb/config/AuthFailureHandler.java | 35 + src/main/java/com/bb/config/AuthProvider.java | 144 + .../com/bb/config/AuthSuccessHandler.java | 89 + .../bb/config/CachedByteArrayInputStream.java | 33 + src/main/java/com/bb/config/CorsConfig.java | 23 + .../com/bb/config/CustomRequestWrapper.java | 45 + .../config/CustomServletWrappingFilter.java | 25 + .../CustomWebAuthenticationDetails.java | 20 + .../CustomWebAuthenticationDetailsSource.java | 18 + src/main/java/com/bb/config/DbConfig.java | 130 + .../java/com/bb/config/GlobalModelAdvice.java | 21 + .../java/com/bb/config/GuestProvider.java | 86 + .../java/com/bb/config/HttpInterceptor.java | 83 + .../java/com/bb/config/InterceptorConfig.java | 17 + .../java/com/bb/config/OpenapiConfig.java | 55 + src/main/java/com/bb/config/RedisConfig.java | 26 + .../com/bb/config/RestTemplateConfig.java | 43 + .../java/com/bb/config/SecurityConfig.java | 122 + .../com/bb/config/SecurityContextConfig.java | 26 + .../java/com/bb/config/WebClientConfig.java | 43 + .../java/com/bb/config/WebSocketConfig.java | 32 + .../com/bb/config/WebSocketInterceptor.java | 32 + .../bb/controller/PragmaticController.java | 5 + src/main/java/com/bb/dao/CallBackDao.java | 14 + src/main/java/com/bb/dao/CallBackDaoImpl.java | 39 + src/main/java/com/bb/dao/CoinDao.java | 10 + src/main/java/com/bb/dao/CoinDaoImpl.java | 38 + src/main/java/com/bb/dao/CommonDao.java | 23 + src/main/java/com/bb/dao/CommonDaoImpl.java | 60 + src/main/java/com/bb/dao/CreditDao.java | 98 + src/main/java/com/bb/dao/CreditDaoImpl.java | 261 + src/main/java/com/bb/dao/SettingDao.java | 34 + src/main/java/com/bb/dao/SettingDaoImpl.java | 104 + src/main/java/com/bb/dao/SiteDao.java | 489 + src/main/java/com/bb/dao/SiteDaoImpl.java | 1396 +++ src/main/java/com/bb/dao/SplusDao.java | 24 + src/main/java/com/bb/dao/SplusDaoImpl.java | 78 + src/main/java/com/bb/dao/StatDao.java | 89 + src/main/java/com/bb/dao/StatDaoImpl.java | 236 + src/main/java/com/bb/dao/TplusDao.java | 5 + src/main/java/com/bb/dao/TplusDaoImpl.java | 24 + src/main/java/com/bb/dao/TransDao.java | 36 + src/main/java/com/bb/dao/TransDaoImpl.java | 98 + .../java/com/bb/exception/ApiException.java | 37 + .../com/bb/exception/NoDataApiException.java | 9 + .../RequestArraySizeApiException.java | 10 + .../exception/RequestHeaderApiException.java | 9 + .../RequestParameterApiException.java | 8 + .../java/com/bb/front/ApiCoinController.java | 177 + .../java/com/bb/front/ApiFrontController.java | 4401 +++++++++ .../com/bb/front/CallBackAceController.java | 1679 ++++ .../bb/front/CallBackBetGambleController.java | 964 ++ .../com/bb/front/CallBackBombController.java | 559 ++ .../bb/front/CallBackBombDemoController.java | 159 + .../com/bb/front/CallBackBtiController.java | 1682 ++++ .../bb/front/CallBackDpcoreController.java | 1286 +++ .../com/bb/front/CallBackNexusController.java | 1684 ++++ .../com/bb/front/CallBackOnixController.java | 973 ++ .../java/com/bb/front/CallBackPowerBall.java | 710 ++ .../com/bb/front/CallBackPowerBallGame.java | 469 + .../com/bb/front/CallBackPracpController.java | 1193 +++ .../bb/front/CallBackPragmaticController.java | 1731 ++++ .../com/bb/front/CallBackPrimeController.java | 823 ++ .../front/CallBackSplusCasinoController.java | 1491 +++ .../bb/front/CallBackSvendorController.java | 827 ++ .../com/bb/front/CallBackTheaController.java | 650 ++ .../bb/front/CallBackThenutController.java | 767 ++ .../com/bb/front/CallBackTowerController.java | 531 + .../com/bb/front/CallBackTplusController.java | 1092 +++ .../bb/front/CallbackBetRadarController.java | 674 ++ .../com/bb/front/CallbackGrandController.java | 402 + .../com/bb/front/CallbackGsoftController.java | 784 ++ .../com/bb/front/CallbackPandaController.java | 965 ++ .../com/bb/front/CallbackPinkController.java | 851 ++ .../bb/front/CallbackSpeedTestController.java | 747 ++ src/main/java/com/bb/jwt/JwtClame.java | 11 + src/main/java/com/bb/jwt/JwtConfig.java | 25 + src/main/java/com/bb/jwt/JwtManager.java | 180 + src/main/java/com/bb/model/ApiResponse.java | 104 + src/main/java/com/bb/model/ApiTestVO.java | 25 + src/main/java/com/bb/model/AuthParam.java | 23 + src/main/java/com/bb/model/BalanceParam.java | 14 + src/main/java/com/bb/model/BanGameSearch.java | 13 + src/main/java/com/bb/model/Bet.java | 24 + src/main/java/com/bb/model/BetParam.java | 21 + .../java/com/bb/model/BetRadarResponse.java | 12 + src/main/java/com/bb/model/BlockGameVO.java | 23 + src/main/java/com/bb/model/BoardSearch.java | 15 + src/main/java/com/bb/model/BombAuthVO.java | 23 + src/main/java/com/bb/model/BombReponseVo.java | 96 + .../java/com/bb/model/CallbackTestResult.java | 18 + src/main/java/com/bb/model/CashParam.java | 28 + src/main/java/com/bb/model/Channel.java | 8 + src/main/java/com/bb/model/CheckVo.java | 15 + src/main/java/com/bb/model/CmnSearch.java | 19 + src/main/java/com/bb/model/CncpResponse.java | 13 + src/main/java/com/bb/model/CncpResult.java | 12 + src/main/java/com/bb/model/CoinVo.java | 39 + src/main/java/com/bb/model/CommonParam.java | 12 + .../java/com/bb/model/CommonParamAdmin.java | 11 + src/main/java/com/bb/model/Credit.java | 52 + src/main/java/com/bb/model/CreditPoint.java | 28 + .../java/com/bb/model/CreditPointSearch.java | 29 + .../java/com/bb/model/CreditSearchVO.java | 42 + src/main/java/com/bb/model/CronStatusVo.java | 14 + src/main/java/com/bb/model/DgMember.java | 16 + src/main/java/com/bb/model/DgOrder.java | 11 + src/main/java/com/bb/model/DgParamVo.java | 12 + src/main/java/com/bb/model/DgReponseVo.java | 114 + .../java/com/bb/model/DowinReponseVo.java | 79 + src/main/java/com/bb/model/EvoResponse.java | 117 + .../com/bb/model/EvolutionAamsSessionVo.java | 9 + .../bb/model/EvolutionGameDetailTableVo.java | 10 + .../com/bb/model/EvolutionGameDetailVo.java | 8 + .../java/com/bb/model/EvolutionGameVo.java | 9 + .../bb/model/EvolutionPromoTransactionVo.java | 17 + .../com/bb/model/EvolutionTransactionVo.java | 12 + src/main/java/com/bb/model/EvolutionVo.java | 18 + src/main/java/com/bb/model/ExtrApiInfo.java | 20 + src/main/java/com/bb/model/ExtrResponse.java | 12 + src/main/java/com/bb/model/Game.java | 14 + src/main/java/com/bb/model/GameVo.java | 15 + src/main/java/com/bb/model/GsoftApiInfo.java | 20 + src/main/java/com/bb/model/GsoftResponse.java | 12 + src/main/java/com/bb/model/GsoftTrxVO.java | 71 + src/main/java/com/bb/model/GsoftVO.java | 70 + src/main/java/com/bb/model/Insure.java | 43 + src/main/java/com/bb/model/Jackpot.java | 9 + src/main/java/com/bb/model/LunchParamVO.java | 10 + src/main/java/com/bb/model/Member.java | 29 + src/main/java/com/bb/model/MemberParam.java | 15 + src/main/java/com/bb/model/NexusApiInfo.java | 29 + .../java/com/bb/model/NexusBalanceData.java | 14 + src/main/java/com/bb/model/NexusResponse.java | 14 + src/main/java/com/bb/model/NexusSmlData.java | 44 + .../java/com/bb/model/NexusSmlRequest.java | 15 + src/main/java/com/bb/model/NexusTrplVO.java | 46 + src/main/java/com/bb/model/OTPInfo.java | 17 + src/main/java/com/bb/model/OnixResponse.java | 48 + src/main/java/com/bb/model/PageFormVO.java | 88 + src/main/java/com/bb/model/PandaResponse.java | 12 + src/main/java/com/bb/model/PlayParam.java | 39 + src/main/java/com/bb/model/PowerballData.java | 11 + .../java/com/bb/model/PowerballRequest.java | 71 + .../java/com/bb/model/PowerballResponse.java | 14 + src/main/java/com/bb/model/PpaReponseVo.java | 84 + src/main/java/com/bb/model/PrimeResponse.java | 13 + src/main/java/com/bb/model/RaveResponse.java | 14 + src/main/java/com/bb/model/ReportSearch.java | 33 + src/main/java/com/bb/model/ScResponse.java | 89 + src/main/java/com/bb/model/Site.java | 65 + src/main/java/com/bb/model/SitePwdVO.java | 14 + src/main/java/com/bb/model/SiteSearch.java | 49 + .../java/com/bb/model/SiteVendorSkinVO.java | 36 + src/main/java/com/bb/model/SlotGame.java | 15 + src/main/java/com/bb/model/SlotGameName.java | 10 + .../java/com/bb/model/SvendorResponse.java | 15 + src/main/java/com/bb/model/TheaResponse.java | 12 + .../java/com/bb/model/ThenutResponse.java | 14 + src/main/java/com/bb/model/TplusApiInfo.java | 20 + src/main/java/com/bb/model/TplusCBData.java | 41 + .../java/com/bb/model/TplusCBRequest.java | 17 + src/main/java/com/bb/model/TplusData.java | 23 + src/main/java/com/bb/model/TplusResponse.java | 20 + src/main/java/com/bb/model/TransSearchVO.java | 53 + src/main/java/com/bb/model/TrfApiInfo.java | 16 + src/main/java/com/bb/model/UserKickParam.java | 8 + src/main/java/com/bb/model/UserSearch.java | 33 + src/main/java/com/bb/model/Vendor.java | 12 + .../bb/model/VendorChangeBalanceLogVo.java | 21 + src/main/java/com/bb/model/VendorsParam.java | 5 + src/main/java/com/bb/model/VinusData.java | 26 + src/main/java/com/bb/model/VinusResponse.java | 17 + .../java/com/bb/model/WithdrewRequest.java | 11 + .../java/com/bb/service/AsyncSiteService.java | 297 + .../java/com/bb/service/BetRadarService.java | 11 + .../com/bb/service/BetRadarServiceImpl.java | 138 + .../java/com/bb/service/CallBackService.java | 14 + .../com/bb/service/CallBackServiceImpl.java | 755 ++ .../com/bb/service/CallBackTestService.java | 14 + .../bb/service/CallBackTestServiceImpl.java | 504 + src/main/java/com/bb/service/CoinService.java | 10 + .../java/com/bb/service/CoinServiceImpl.java | 32 + .../java/com/bb/service/CommonService.java | 36 + .../com/bb/service/CommonServiceImpl.java | 571 ++ .../java/com/bb/service/CreditService.java | 88 + .../com/bb/service/CreditServiceImpl.java | 347 + .../java/com/bb/service/EvoJsonService.java | 109 + .../java/com/bb/service/GrandService.java | 15 + .../java/com/bb/service/GrandServiceImpl.java | 133 + .../java/com/bb/service/GsoftService.java | 22 + .../java/com/bb/service/GsoftServiceImpl.java | 458 + .../java/com/bb/service/NexusService.java | 31 + .../java/com/bb/service/NexusServiceImpl.java | 944 ++ .../java/com/bb/service/PandaService.java | 13 + .../java/com/bb/service/PandaServiceImpl.java | 213 + .../com/bb/service/PointAsyncService.java | 28 + .../java/com/bb/service/PowerBallService.java | 14 + .../com/bb/service/PowerBallServiceImpl.java | 388 + .../java/com/bb/service/PracpService.java | 15 + .../java/com/bb/service/PracpServiceImpl.java | 277 + .../java/com/bb/service/PragmaticService.java | 20 + .../com/bb/service/PragmaticServiceImpl.java | 276 + .../java/com/bb/service/SettingService.java | 34 + .../com/bb/service/SettingServiceImpl.java | 108 + src/main/java/com/bb/service/SiteService.java | 460 + .../java/com/bb/service/SiteServiceImpl.java | 1943 ++++ .../java/com/bb/service/SplusService.java | 24 + .../java/com/bb/service/SplusServiceImpl.java | 242 + src/main/java/com/bb/service/StatService.java | 96 + .../java/com/bb/service/StatServiceImpl.java | 229 + .../java/com/bb/service/SvendorService.java | 19 + .../com/bb/service/SvendorServiceImpl.java | 291 + .../java/com/bb/service/ThenutService.java | 27 + .../com/bb/service/ThenutServiceImpl.java | 470 + .../java/com/bb/service/TowerService.java | 14 + .../java/com/bb/service/TowerServiceImpl.java | 137 + .../java/com/bb/service/TplusService.java | 27 + .../java/com/bb/service/TplusServiceImpl.java | 655 ++ .../java/com/bb/service/TransService.java | 57 + .../java/com/bb/service/TransServiceImpl.java | 759 ++ src/main/java/com/bb/util/AesUtil.java | 114 + src/main/java/com/bb/util/DateTimeUtils.java | 295 + src/main/java/com/bb/util/GameInsert.java | 0 src/main/java/com/bb/util/HmacUtils.java | 30 + src/main/java/com/bb/util/HttpUtil.java | 93 + src/main/java/com/bb/util/IPKit.java | 201 + src/main/java/com/bb/util/OkhttpUtils.java | 128 + src/main/java/com/bb/util/PagingUtil.java | 90 + src/main/java/com/bb/util/SHA256.java | 24 + src/main/java/com/bb/util/SHA256WithRSA.java | 109 + src/main/java/com/bb/util/StringUtils.java | 464 + .../java/com/bb/util/TOTPTokenGenerator.java | 57 + src/main/java/com/bb/util/TempKey.java | 50 + src/main/resources/application-local.yml | 109 + src/main/resources/application-real.yml | 109 + src/main/resources/application.properties | 10 + src/main/resources/authentication.properties | 5 + src/main/resources/db1/CALLBACKLOG.xml | 52 + src/main/resources/db1/COIN.xml | 97 + src/main/resources/db1/COMMON.xml | 24 + src/main/resources/db1/CREDIT.xml | 592 ++ src/main/resources/db1/SETTING.xml | 25 + src/main/resources/db1/SITE.xml | 2198 +++++ src/main/resources/db1/SPLUS.xml | 136 + src/main/resources/db1/STAT.xml | 179 + src/main/resources/db1/TPLUS.xml | 5 + src/main/resources/db1/TRANS.xml | 10 + src/main/resources/db2/CALLBACKLOG.xml | 15 + src/main/resources/db2/COIN.xml | 43 + src/main/resources/db2/COMMON.xml | 72 + src/main/resources/db2/CREDIT.xml | 1654 ++++ src/main/resources/db2/SETTING.xml | 206 + src/main/resources/db2/SITE.xml | 869 ++ src/main/resources/db2/STAT.xml | 1225 +++ src/main/resources/db2/TRANS.xml | 908 ++ src/main/resources/logback-spring.xml | 49 + src/main/resources/static/css/all.min.css | 6 + src/main/resources/static/css/common.css | 118 + src/main/resources/static/css/dev_api_doc.css | 299 + src/main/resources/static/css/header.css | 96 + src/main/resources/static/css/login.css | 23 + src/main/resources/static/css/main.css | 468 + src/main/resources/static/css/popup.css | 69 + .../static/fonts/sunn-main/README.md | 107 + .../static/fonts/sunn-main/SUIT-Bold.eot | Bin 0 -> 432512 bytes .../static/fonts/sunn-main/SUIT-Bold.otf | Bin 0 -> 290236 bytes .../static/fonts/sunn-main/SUIT-Bold.svg | 8488 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-Bold.ttf | Bin 0 -> 431160 bytes .../static/fonts/sunn-main/SUIT-Bold.woff | Bin 0 -> 229160 bytes .../static/fonts/sunn-main/SUIT-Bold.woff2 | Bin 0 -> 167948 bytes .../static/fonts/sunn-main/SUIT-ExtraBold.eot | Bin 0 -> 431072 bytes .../static/fonts/sunn-main/SUIT-ExtraBold.otf | Bin 0 -> 293652 bytes .../static/fonts/sunn-main/SUIT-ExtraBold.svg | 8489 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-ExtraBold.ttf | Bin 0 -> 429600 bytes .../fonts/sunn-main/SUIT-ExtraBold.woff | Bin 0 -> 228880 bytes .../fonts/sunn-main/SUIT-ExtraBold.woff2 | Bin 0 -> 167600 bytes .../fonts/sunn-main/SUIT-ExtraLight.eot | Bin 0 -> 444988 bytes .../fonts/sunn-main/SUIT-ExtraLight.otf | Bin 0 -> 288020 bytes .../fonts/sunn-main/SUIT-ExtraLight.svg | 8614 +++++++++++++++++ .../fonts/sunn-main/SUIT-ExtraLight.ttf | Bin 0 -> 443532 bytes .../fonts/sunn-main/SUIT-ExtraLight.woff | Bin 0 -> 225972 bytes .../fonts/sunn-main/SUIT-ExtraLight.woff2 | Bin 0 -> 161984 bytes .../static/fonts/sunn-main/SUIT-Heavy.eot | Bin 0 -> 429100 bytes .../static/fonts/sunn-main/SUIT-Heavy.otf | Bin 0 -> 289988 bytes .../static/fonts/sunn-main/SUIT-Heavy.svg | 8334 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-Heavy.ttf | Bin 0 -> 427692 bytes .../static/fonts/sunn-main/SUIT-Heavy.woff | Bin 0 -> 225212 bytes .../static/fonts/sunn-main/SUIT-Heavy.woff2 | Bin 0 -> 164188 bytes .../static/fonts/sunn-main/SUIT-Light.eot | Bin 0 -> 442264 bytes .../static/fonts/sunn-main/SUIT-Light.otf | Bin 0 -> 289304 bytes .../static/fonts/sunn-main/SUIT-Light.svg | 8600 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-Light.ttf | Bin 0 -> 440840 bytes .../static/fonts/sunn-main/SUIT-Light.woff | Bin 0 -> 228136 bytes .../static/fonts/sunn-main/SUIT-Light.woff2 | Bin 0 -> 165120 bytes .../static/fonts/sunn-main/SUIT-Medium.eot | Bin 0 -> 437264 bytes .../static/fonts/sunn-main/SUIT-Medium.otf | Bin 0 -> 288132 bytes .../static/fonts/sunn-main/SUIT-Medium.svg | 8544 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-Medium.ttf | Bin 0 -> 435836 bytes .../static/fonts/sunn-main/SUIT-Medium.woff | Bin 0 -> 228628 bytes .../static/fonts/sunn-main/SUIT-Medium.woff2 | Bin 0 -> 166796 bytes .../static/fonts/sunn-main/SUIT-Regular.eot | Bin 0 -> 438968 bytes .../static/fonts/sunn-main/SUIT-Regular.otf | Bin 0 -> 288260 bytes .../static/fonts/sunn-main/SUIT-Regular.svg | 8554 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-Regular.ttf | Bin 0 -> 437548 bytes .../static/fonts/sunn-main/SUIT-Regular.woff | Bin 0 -> 227796 bytes .../static/fonts/sunn-main/SUIT-Regular.woff2 | Bin 0 -> 164372 bytes .../static/fonts/sunn-main/SUIT-SemiBold.eot | Bin 0 -> 435692 bytes .../static/fonts/sunn-main/SUIT-SemiBold.otf | Bin 0 -> 288460 bytes .../static/fonts/sunn-main/SUIT-SemiBold.svg | 8545 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-SemiBold.ttf | Bin 0 -> 434272 bytes .../static/fonts/sunn-main/SUIT-SemiBold.woff | Bin 0 -> 229184 bytes .../fonts/sunn-main/SUIT-SemiBold.woff2 | Bin 0 -> 167104 bytes .../static/fonts/sunn-main/SUIT-Thin.eot | Bin 0 -> 448220 bytes .../static/fonts/sunn-main/SUIT-Thin.otf | Bin 0 -> 276796 bytes .../static/fonts/sunn-main/SUIT-Thin.svg | 8575 ++++++++++++++++ .../static/fonts/sunn-main/SUIT-Thin.ttf | Bin 0 -> 446812 bytes .../static/fonts/sunn-main/SUIT-Thin.woff | Bin 0 -> 217216 bytes .../static/fonts/sunn-main/SUIT-Thin.woff2 | Bin 0 -> 154208 bytes .../resources/static/fonts/sunn-main/SUIT.css | 99 + .../static/fonts/sunn-main/SUIT.html | 890 ++ .../resources/static/fonts/sunn-main/SUIT.jpg | Bin 0 -> 1125205 bytes src/main/resources/static/html/health.html | 1 + .../resources/static/html/jquery-2.2.4.min.js | 4 + src/main/resources/static/html/socket.html | 54 + src/main/resources/static/img/copy2.png | Bin 0 -> 488 bytes src/main/resources/static/img/dash_bg.svg | 3 + src/main/resources/static/img/exclamaMark.svg | 1 + src/main/resources/static/img/icon_agency.svg | 3 + .../resources/static/img/icon_agency_on.svg | 3 + src/main/resources/static/img/icon_cw.svg | 3 + src/main/resources/static/img/icon_cw_on.svg | 3 + src/main/resources/static/img/icon_dash.svg | 8 + src/main/resources/static/img/icon_dash1.svg | 3 + src/main/resources/static/img/icon_dash2.svg | 3 + src/main/resources/static/img/icon_dash3.svg | 3 + src/main/resources/static/img/icon_dash4.svg | 3 + src/main/resources/static/img/icon_dash5.svg | 3 + .../resources/static/img/icon_dashUser.svg | 3 + .../resources/static/img/icon_dash_on.svg | 8 + src/main/resources/static/img/icon_dev.svg | 10 + src/main/resources/static/img/icon_dev_on.svg | 10 + src/main/resources/static/img/icon_down.svg | 3 + .../resources/static/img/icon_download.svg | 7 + src/main/resources/static/img/icon_gear.svg | 11 + .../resources/static/img/icon_gear_on.svg | 11 + src/main/resources/static/img/icon_insur.svg | 6 + .../resources/static/img/icon_insur_on.svg | 6 + src/main/resources/static/img/icon_limit.svg | 9 + .../resources/static/img/icon_limit_on.svg | 9 + src/main/resources/static/img/icon_money.svg | 3 + src/main/resources/static/img/icon_my.svg | 38 + src/main/resources/static/img/icon_mypage.svg | 6 + .../resources/static/img/icon_mypage_on.svg | 6 + src/main/resources/static/img/icon_total.svg | 3 + .../resources/static/img/icon_total_on.svg | 3 + src/main/resources/static/img/icon_up.svg | 3 + src/main/resources/static/img/icon_user.svg | 3 + src/main/resources/static/img/icon_x.svg | 6 + src/main/resources/static/img/login_bg.jpg | Bin 0 -> 79738 bytes src/main/resources/static/img/logo.ico | Bin 0 -> 1150 bytes .../resources/static/img/logo_tripleA.svg | 28 + src/main/resources/static/img/menu_icon1.svg | 3 + src/main/resources/static/img/menu_icon2.svg | 3 + src/main/resources/static/img/menu_icon4.svg | 3 + src/main/resources/static/img/menu_icon5.svg | 3 + src/main/resources/static/img/menu_icon6.svg | 3 + src/main/resources/static/img/menu_icon7.svg | 3 + src/main/resources/static/img/refImg.png | Bin 0 -> 39084 bytes src/main/resources/static/img/right.svg | 1 + src/main/resources/static/img/select.svg | 1 + src/main/resources/static/index.html | 10 + src/main/resources/static/js/common.js | 36 + src/main/resources/static/js/jquery.min.js | 2 + src/main/resources/static/js/sockjs.min.js | 4 + src/main/resources/static/js/stomp.min.js | 12 + src/main/resources/templates/admin/agent.html | 341 + .../resources/templates/admin/agentAdd.html | 279 + .../templates/admin/agentReport.html | 195 + .../resources/templates/admin/agentqna.html | 94 + .../templates/admin/agentqnaRead.html | 224 + src/main/resources/templates/admin/alert.html | 245 + src/main/resources/templates/admin/api.html | 594 ++ .../resources/templates/admin/apiAll.html | 314 + .../resources/templates/admin/apiAuth.html | 298 + .../templates/admin/apiBetCallback.html | 212 + .../templates/admin/apiBetDetail.html | 273 + .../templates/admin/apiBetInfo1.html | 213 + .../templates/admin/apiBetInfo2.html | 213 + .../resources/templates/admin/apiBetList.html | 280 + .../resources/templates/admin/apiGame.html | 211 + .../templates/admin/apiGamelist.html | 211 + .../resources/templates/admin/apiIntro.html | 167 + .../resources/templates/admin/apiLog.html | 323 + .../resources/templates/admin/apiLogdev.html | 99 + .../resources/templates/admin/apiManual.html | 323 + .../resources/templates/admin/apiPartner.html | 211 + .../resources/templates/admin/apiPlay.html | 322 + .../resources/templates/admin/api_doc.html | 736 ++ .../resources/templates/admin/apiset.html | 152 + src/main/resources/templates/admin/apply.html | 161 + .../resources/templates/admin/applyend.html | 269 + .../resources/templates/admin/applypoint.html | 129 + .../resources/templates/admin/applywait.html | 279 + .../resources/templates/admin/betlimit.html | 167 + .../resources/templates/admin/betlist.html | 2269 +++++ .../resources/templates/admin/charge.html | 171 + .../resources/templates/admin/exchange.html | 135 + .../templates/admin/exchangeapply.html | 153 + .../templates/admin/exchangeend.html | 267 + .../resources/templates/admin/gamelink.html | 94 + .../resources/templates/admin/guestLogin.html | 34 + .../templates/admin/include/left.html | 382 + .../templates/admin/include/top.html | 204 + src/main/resources/templates/admin/index.html | 193 + .../resources/templates/admin/infoRecord.html | 323 + .../templates/admin/insuredApply.html | 159 + .../templates/admin/insuredBetList.html | 150 + .../templates/admin/insuredDownList.html | 87 + .../templates/admin/insuredExchange.html | 133 + .../templates/admin/insuredHistory.html | 90 + .../resources/templates/admin/insuredSet.html | 191 + .../templates/admin/layout/emptylayout.html | 48 + .../templates/admin/layout/layout.html | 400 + src/main/resources/templates/admin/lg.html | 94 + src/main/resources/templates/admin/limit.html | 78 + src/main/resources/templates/admin/login.html | 0 .../resources/templates/admin/mypage.html | 336 + src/main/resources/templates/admin/parse.html | 303 + .../resources/templates/admin/payments.html | 104 + src/main/resources/templates/admin/popup.html | 1589 +++ .../resources/templates/admin/popup2.html | 1345 +++ .../templates/admin/simpleReport.html | 190 + src/main/resources/templates/admin/stat.html | 70 + .../resources/templates/admin/statBottom.html | 64 + .../resources/templates/admin/statCasino.html | 88 + .../resources/templates/admin/statDate.html | 96 + .../resources/templates/admin/statPot.html | 71 + .../templates/admin/statReportday.html | 121 + .../templates/admin/statReportmonth.html | 138 + .../resources/templates/admin/statUser.html | 108 + src/main/resources/templates/admin/std.html | 184 + .../templates/admin/transaction.html | 163 + .../templates/admin/transactionList.html | 119 + src/main/resources/templates/admin/user.html | 175 + .../resources/templates/admin/venderlist.html | 82 + src/main/resources/templates/api.html | 121 + src/main/resources/templates/error/404.html | 36 + src/main/resources/templates/front/lunch.html | 10 + .../templates/front/splus/callback.html | 5 + .../com/bb/ApiServerApplicationTests.java | 13 + 492 files changed, 169588 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .mvn/wrapper/MavenWrapperDownloader.java create mode 100644 deploy-aws.sh create mode 100644 deploy-aws2.sh create mode 100644 filePath_IS_UNDEFINED/error-2026-01-07.0.gz create mode 100644 jenkinsfile create mode 100644 jenkinsfile2 create mode 100644 mvnw create mode 100644 mvnw.cmd create mode 100644 pom-real.xml create mode 100644 pom.xml create mode 100644 runApi.sh create mode 100644 src/main/java/com/bb/ApiServerApplication.java create mode 100644 src/main/java/com/bb/admin/controller/AgentController.java create mode 100644 src/main/java/com/bb/admin/controller/CreditController.java create mode 100644 src/main/java/com/bb/admin/controller/GuestController.java create mode 100644 src/main/java/com/bb/admin/controller/InsuranceController.java create mode 100644 src/main/java/com/bb/admin/controller/MainController.java create mode 100644 src/main/java/com/bb/admin/controller/ManualController.java create mode 100644 src/main/java/com/bb/admin/controller/StatController.java create mode 100644 src/main/java/com/bb/admin/controller/UserController.java create mode 100644 src/main/java/com/bb/api/ApiAgentController.java create mode 100644 src/main/java/com/bb/api/ApiBlockGameController.java create mode 100644 src/main/java/com/bb/api/ApiCallbackSpeedTestController.java create mode 100644 src/main/java/com/bb/api/ApiCallbackTestController.java create mode 100644 src/main/java/com/bb/api/ApiCommonController.java create mode 100644 src/main/java/com/bb/api/ApiCreditController.java create mode 100644 src/main/java/com/bb/api/ApiMainController.java create mode 100644 src/main/java/com/bb/api/ApiSettingController.java create mode 100644 src/main/java/com/bb/api/ApiStatController.java create mode 100644 src/main/java/com/bb/api/ApiTransController.java create mode 100644 src/main/java/com/bb/api/ApiUserController.java create mode 100644 src/main/java/com/bb/common/bean/RedisSession.java create mode 100644 src/main/java/com/bb/common/controller/BetResultProcController.java create mode 100644 src/main/java/com/bb/common/model/InChatMessageVO.java create mode 100644 src/main/java/com/bb/common/model/OutChatMessageVO.java create mode 100644 src/main/java/com/bb/common/model/OutLoginVO.java create mode 100644 src/main/java/com/bb/config/AccessLogFilter.java create mode 100644 src/main/java/com/bb/config/ApiKeyFilter.java create mode 100644 src/main/java/com/bb/config/AsyncConfig.java create mode 100644 src/main/java/com/bb/config/AuthFailureHandler.java create mode 100644 src/main/java/com/bb/config/AuthProvider.java create mode 100644 src/main/java/com/bb/config/AuthSuccessHandler.java create mode 100644 src/main/java/com/bb/config/CachedByteArrayInputStream.java create mode 100644 src/main/java/com/bb/config/CorsConfig.java create mode 100644 src/main/java/com/bb/config/CustomRequestWrapper.java create mode 100644 src/main/java/com/bb/config/CustomServletWrappingFilter.java create mode 100644 src/main/java/com/bb/config/CustomWebAuthenticationDetails.java create mode 100644 src/main/java/com/bb/config/CustomWebAuthenticationDetailsSource.java create mode 100644 src/main/java/com/bb/config/DbConfig.java create mode 100644 src/main/java/com/bb/config/GlobalModelAdvice.java create mode 100644 src/main/java/com/bb/config/GuestProvider.java create mode 100644 src/main/java/com/bb/config/HttpInterceptor.java create mode 100644 src/main/java/com/bb/config/InterceptorConfig.java create mode 100644 src/main/java/com/bb/config/OpenapiConfig.java create mode 100644 src/main/java/com/bb/config/RedisConfig.java create mode 100644 src/main/java/com/bb/config/RestTemplateConfig.java create mode 100644 src/main/java/com/bb/config/SecurityConfig.java create mode 100644 src/main/java/com/bb/config/SecurityContextConfig.java create mode 100644 src/main/java/com/bb/config/WebClientConfig.java create mode 100644 src/main/java/com/bb/config/WebSocketConfig.java create mode 100644 src/main/java/com/bb/config/WebSocketInterceptor.java create mode 100644 src/main/java/com/bb/controller/PragmaticController.java create mode 100644 src/main/java/com/bb/dao/CallBackDao.java create mode 100644 src/main/java/com/bb/dao/CallBackDaoImpl.java create mode 100644 src/main/java/com/bb/dao/CoinDao.java create mode 100644 src/main/java/com/bb/dao/CoinDaoImpl.java create mode 100644 src/main/java/com/bb/dao/CommonDao.java create mode 100644 src/main/java/com/bb/dao/CommonDaoImpl.java create mode 100644 src/main/java/com/bb/dao/CreditDao.java create mode 100644 src/main/java/com/bb/dao/CreditDaoImpl.java create mode 100644 src/main/java/com/bb/dao/SettingDao.java create mode 100644 src/main/java/com/bb/dao/SettingDaoImpl.java create mode 100644 src/main/java/com/bb/dao/SiteDao.java create mode 100644 src/main/java/com/bb/dao/SiteDaoImpl.java create mode 100644 src/main/java/com/bb/dao/SplusDao.java create mode 100644 src/main/java/com/bb/dao/SplusDaoImpl.java create mode 100644 src/main/java/com/bb/dao/StatDao.java create mode 100644 src/main/java/com/bb/dao/StatDaoImpl.java create mode 100644 src/main/java/com/bb/dao/TplusDao.java create mode 100644 src/main/java/com/bb/dao/TplusDaoImpl.java create mode 100644 src/main/java/com/bb/dao/TransDao.java create mode 100644 src/main/java/com/bb/dao/TransDaoImpl.java create mode 100644 src/main/java/com/bb/exception/ApiException.java create mode 100644 src/main/java/com/bb/exception/NoDataApiException.java create mode 100644 src/main/java/com/bb/exception/RequestArraySizeApiException.java create mode 100644 src/main/java/com/bb/exception/RequestHeaderApiException.java create mode 100644 src/main/java/com/bb/exception/RequestParameterApiException.java create mode 100644 src/main/java/com/bb/front/ApiCoinController.java create mode 100644 src/main/java/com/bb/front/ApiFrontController.java create mode 100644 src/main/java/com/bb/front/CallBackAceController.java create mode 100644 src/main/java/com/bb/front/CallBackBetGambleController.java create mode 100644 src/main/java/com/bb/front/CallBackBombController.java create mode 100644 src/main/java/com/bb/front/CallBackBombDemoController.java create mode 100644 src/main/java/com/bb/front/CallBackBtiController.java create mode 100644 src/main/java/com/bb/front/CallBackDpcoreController.java create mode 100644 src/main/java/com/bb/front/CallBackNexusController.java create mode 100644 src/main/java/com/bb/front/CallBackOnixController.java create mode 100644 src/main/java/com/bb/front/CallBackPowerBall.java create mode 100644 src/main/java/com/bb/front/CallBackPowerBallGame.java create mode 100644 src/main/java/com/bb/front/CallBackPracpController.java create mode 100644 src/main/java/com/bb/front/CallBackPragmaticController.java create mode 100644 src/main/java/com/bb/front/CallBackPrimeController.java create mode 100644 src/main/java/com/bb/front/CallBackSplusCasinoController.java create mode 100644 src/main/java/com/bb/front/CallBackSvendorController.java create mode 100644 src/main/java/com/bb/front/CallBackTheaController.java create mode 100644 src/main/java/com/bb/front/CallBackThenutController.java create mode 100644 src/main/java/com/bb/front/CallBackTowerController.java create mode 100644 src/main/java/com/bb/front/CallBackTplusController.java create mode 100644 src/main/java/com/bb/front/CallbackBetRadarController.java create mode 100644 src/main/java/com/bb/front/CallbackGrandController.java create mode 100644 src/main/java/com/bb/front/CallbackGsoftController.java create mode 100644 src/main/java/com/bb/front/CallbackPandaController.java create mode 100644 src/main/java/com/bb/front/CallbackPinkController.java create mode 100644 src/main/java/com/bb/front/CallbackSpeedTestController.java create mode 100644 src/main/java/com/bb/jwt/JwtClame.java create mode 100644 src/main/java/com/bb/jwt/JwtConfig.java create mode 100644 src/main/java/com/bb/jwt/JwtManager.java create mode 100644 src/main/java/com/bb/model/ApiResponse.java create mode 100644 src/main/java/com/bb/model/ApiTestVO.java create mode 100644 src/main/java/com/bb/model/AuthParam.java create mode 100644 src/main/java/com/bb/model/BalanceParam.java create mode 100644 src/main/java/com/bb/model/BanGameSearch.java create mode 100644 src/main/java/com/bb/model/Bet.java create mode 100644 src/main/java/com/bb/model/BetParam.java create mode 100644 src/main/java/com/bb/model/BetRadarResponse.java create mode 100644 src/main/java/com/bb/model/BlockGameVO.java create mode 100644 src/main/java/com/bb/model/BoardSearch.java create mode 100644 src/main/java/com/bb/model/BombAuthVO.java create mode 100644 src/main/java/com/bb/model/BombReponseVo.java create mode 100644 src/main/java/com/bb/model/CallbackTestResult.java create mode 100644 src/main/java/com/bb/model/CashParam.java create mode 100644 src/main/java/com/bb/model/Channel.java create mode 100644 src/main/java/com/bb/model/CheckVo.java create mode 100644 src/main/java/com/bb/model/CmnSearch.java create mode 100644 src/main/java/com/bb/model/CncpResponse.java create mode 100644 src/main/java/com/bb/model/CncpResult.java create mode 100644 src/main/java/com/bb/model/CoinVo.java create mode 100644 src/main/java/com/bb/model/CommonParam.java create mode 100644 src/main/java/com/bb/model/CommonParamAdmin.java create mode 100644 src/main/java/com/bb/model/Credit.java create mode 100644 src/main/java/com/bb/model/CreditPoint.java create mode 100644 src/main/java/com/bb/model/CreditPointSearch.java create mode 100644 src/main/java/com/bb/model/CreditSearchVO.java create mode 100644 src/main/java/com/bb/model/CronStatusVo.java create mode 100644 src/main/java/com/bb/model/DgMember.java create mode 100644 src/main/java/com/bb/model/DgOrder.java create mode 100644 src/main/java/com/bb/model/DgParamVo.java create mode 100644 src/main/java/com/bb/model/DgReponseVo.java create mode 100644 src/main/java/com/bb/model/DowinReponseVo.java create mode 100644 src/main/java/com/bb/model/EvoResponse.java create mode 100644 src/main/java/com/bb/model/EvolutionAamsSessionVo.java create mode 100644 src/main/java/com/bb/model/EvolutionGameDetailTableVo.java create mode 100644 src/main/java/com/bb/model/EvolutionGameDetailVo.java create mode 100644 src/main/java/com/bb/model/EvolutionGameVo.java create mode 100644 src/main/java/com/bb/model/EvolutionPromoTransactionVo.java create mode 100644 src/main/java/com/bb/model/EvolutionTransactionVo.java create mode 100644 src/main/java/com/bb/model/EvolutionVo.java create mode 100644 src/main/java/com/bb/model/ExtrApiInfo.java create mode 100644 src/main/java/com/bb/model/ExtrResponse.java create mode 100644 src/main/java/com/bb/model/Game.java create mode 100644 src/main/java/com/bb/model/GameVo.java create mode 100644 src/main/java/com/bb/model/GsoftApiInfo.java create mode 100644 src/main/java/com/bb/model/GsoftResponse.java create mode 100644 src/main/java/com/bb/model/GsoftTrxVO.java create mode 100644 src/main/java/com/bb/model/GsoftVO.java create mode 100644 src/main/java/com/bb/model/Insure.java create mode 100644 src/main/java/com/bb/model/Jackpot.java create mode 100644 src/main/java/com/bb/model/LunchParamVO.java create mode 100644 src/main/java/com/bb/model/Member.java create mode 100644 src/main/java/com/bb/model/MemberParam.java create mode 100644 src/main/java/com/bb/model/NexusApiInfo.java create mode 100644 src/main/java/com/bb/model/NexusBalanceData.java create mode 100644 src/main/java/com/bb/model/NexusResponse.java create mode 100644 src/main/java/com/bb/model/NexusSmlData.java create mode 100644 src/main/java/com/bb/model/NexusSmlRequest.java create mode 100644 src/main/java/com/bb/model/NexusTrplVO.java create mode 100644 src/main/java/com/bb/model/OTPInfo.java create mode 100644 src/main/java/com/bb/model/OnixResponse.java create mode 100644 src/main/java/com/bb/model/PageFormVO.java create mode 100644 src/main/java/com/bb/model/PandaResponse.java create mode 100644 src/main/java/com/bb/model/PlayParam.java create mode 100644 src/main/java/com/bb/model/PowerballData.java create mode 100644 src/main/java/com/bb/model/PowerballRequest.java create mode 100644 src/main/java/com/bb/model/PowerballResponse.java create mode 100644 src/main/java/com/bb/model/PpaReponseVo.java create mode 100644 src/main/java/com/bb/model/PrimeResponse.java create mode 100644 src/main/java/com/bb/model/RaveResponse.java create mode 100644 src/main/java/com/bb/model/ReportSearch.java create mode 100644 src/main/java/com/bb/model/ScResponse.java create mode 100644 src/main/java/com/bb/model/Site.java create mode 100644 src/main/java/com/bb/model/SitePwdVO.java create mode 100644 src/main/java/com/bb/model/SiteSearch.java create mode 100644 src/main/java/com/bb/model/SiteVendorSkinVO.java create mode 100644 src/main/java/com/bb/model/SlotGame.java create mode 100644 src/main/java/com/bb/model/SlotGameName.java create mode 100644 src/main/java/com/bb/model/SvendorResponse.java create mode 100644 src/main/java/com/bb/model/TheaResponse.java create mode 100644 src/main/java/com/bb/model/ThenutResponse.java create mode 100644 src/main/java/com/bb/model/TplusApiInfo.java create mode 100644 src/main/java/com/bb/model/TplusCBData.java create mode 100644 src/main/java/com/bb/model/TplusCBRequest.java create mode 100644 src/main/java/com/bb/model/TplusData.java create mode 100644 src/main/java/com/bb/model/TplusResponse.java create mode 100644 src/main/java/com/bb/model/TransSearchVO.java create mode 100644 src/main/java/com/bb/model/TrfApiInfo.java create mode 100644 src/main/java/com/bb/model/UserKickParam.java create mode 100644 src/main/java/com/bb/model/UserSearch.java create mode 100644 src/main/java/com/bb/model/Vendor.java create mode 100644 src/main/java/com/bb/model/VendorChangeBalanceLogVo.java create mode 100644 src/main/java/com/bb/model/VendorsParam.java create mode 100644 src/main/java/com/bb/model/VinusData.java create mode 100644 src/main/java/com/bb/model/VinusResponse.java create mode 100644 src/main/java/com/bb/model/WithdrewRequest.java create mode 100644 src/main/java/com/bb/service/AsyncSiteService.java create mode 100644 src/main/java/com/bb/service/BetRadarService.java create mode 100644 src/main/java/com/bb/service/BetRadarServiceImpl.java create mode 100644 src/main/java/com/bb/service/CallBackService.java create mode 100644 src/main/java/com/bb/service/CallBackServiceImpl.java create mode 100644 src/main/java/com/bb/service/CallBackTestService.java create mode 100644 src/main/java/com/bb/service/CallBackTestServiceImpl.java create mode 100644 src/main/java/com/bb/service/CoinService.java create mode 100644 src/main/java/com/bb/service/CoinServiceImpl.java create mode 100644 src/main/java/com/bb/service/CommonService.java create mode 100644 src/main/java/com/bb/service/CommonServiceImpl.java create mode 100644 src/main/java/com/bb/service/CreditService.java create mode 100644 src/main/java/com/bb/service/CreditServiceImpl.java create mode 100644 src/main/java/com/bb/service/EvoJsonService.java create mode 100644 src/main/java/com/bb/service/GrandService.java create mode 100644 src/main/java/com/bb/service/GrandServiceImpl.java create mode 100644 src/main/java/com/bb/service/GsoftService.java create mode 100644 src/main/java/com/bb/service/GsoftServiceImpl.java create mode 100644 src/main/java/com/bb/service/NexusService.java create mode 100644 src/main/java/com/bb/service/NexusServiceImpl.java create mode 100644 src/main/java/com/bb/service/PandaService.java create mode 100644 src/main/java/com/bb/service/PandaServiceImpl.java create mode 100644 src/main/java/com/bb/service/PointAsyncService.java create mode 100644 src/main/java/com/bb/service/PowerBallService.java create mode 100644 src/main/java/com/bb/service/PowerBallServiceImpl.java create mode 100644 src/main/java/com/bb/service/PracpService.java create mode 100644 src/main/java/com/bb/service/PracpServiceImpl.java create mode 100644 src/main/java/com/bb/service/PragmaticService.java create mode 100644 src/main/java/com/bb/service/PragmaticServiceImpl.java create mode 100644 src/main/java/com/bb/service/SettingService.java create mode 100644 src/main/java/com/bb/service/SettingServiceImpl.java create mode 100644 src/main/java/com/bb/service/SiteService.java create mode 100644 src/main/java/com/bb/service/SiteServiceImpl.java create mode 100644 src/main/java/com/bb/service/SplusService.java create mode 100644 src/main/java/com/bb/service/SplusServiceImpl.java create mode 100644 src/main/java/com/bb/service/StatService.java create mode 100644 src/main/java/com/bb/service/StatServiceImpl.java create mode 100644 src/main/java/com/bb/service/SvendorService.java create mode 100644 src/main/java/com/bb/service/SvendorServiceImpl.java create mode 100644 src/main/java/com/bb/service/ThenutService.java create mode 100644 src/main/java/com/bb/service/ThenutServiceImpl.java create mode 100644 src/main/java/com/bb/service/TowerService.java create mode 100644 src/main/java/com/bb/service/TowerServiceImpl.java create mode 100644 src/main/java/com/bb/service/TplusService.java create mode 100644 src/main/java/com/bb/service/TplusServiceImpl.java create mode 100644 src/main/java/com/bb/service/TransService.java create mode 100644 src/main/java/com/bb/service/TransServiceImpl.java create mode 100644 src/main/java/com/bb/util/AesUtil.java create mode 100644 src/main/java/com/bb/util/DateTimeUtils.java create mode 100644 src/main/java/com/bb/util/GameInsert.java create mode 100644 src/main/java/com/bb/util/HmacUtils.java create mode 100644 src/main/java/com/bb/util/HttpUtil.java create mode 100644 src/main/java/com/bb/util/IPKit.java create mode 100644 src/main/java/com/bb/util/OkhttpUtils.java create mode 100644 src/main/java/com/bb/util/PagingUtil.java create mode 100644 src/main/java/com/bb/util/SHA256.java create mode 100644 src/main/java/com/bb/util/SHA256WithRSA.java create mode 100644 src/main/java/com/bb/util/StringUtils.java create mode 100644 src/main/java/com/bb/util/TOTPTokenGenerator.java create mode 100644 src/main/java/com/bb/util/TempKey.java create mode 100644 src/main/resources/application-local.yml create mode 100644 src/main/resources/application-real.yml create mode 100644 src/main/resources/application.properties create mode 100644 src/main/resources/authentication.properties create mode 100644 src/main/resources/db1/CALLBACKLOG.xml create mode 100644 src/main/resources/db1/COIN.xml create mode 100644 src/main/resources/db1/COMMON.xml create mode 100644 src/main/resources/db1/CREDIT.xml create mode 100644 src/main/resources/db1/SETTING.xml create mode 100644 src/main/resources/db1/SITE.xml create mode 100644 src/main/resources/db1/SPLUS.xml create mode 100644 src/main/resources/db1/STAT.xml create mode 100644 src/main/resources/db1/TPLUS.xml create mode 100644 src/main/resources/db1/TRANS.xml create mode 100644 src/main/resources/db2/CALLBACKLOG.xml create mode 100644 src/main/resources/db2/COIN.xml create mode 100644 src/main/resources/db2/COMMON.xml create mode 100644 src/main/resources/db2/CREDIT.xml create mode 100644 src/main/resources/db2/SETTING.xml create mode 100644 src/main/resources/db2/SITE.xml create mode 100644 src/main/resources/db2/STAT.xml create mode 100644 src/main/resources/db2/TRANS.xml create mode 100644 src/main/resources/logback-spring.xml create mode 100644 src/main/resources/static/css/all.min.css create mode 100644 src/main/resources/static/css/common.css create mode 100644 src/main/resources/static/css/dev_api_doc.css create mode 100644 src/main/resources/static/css/header.css create mode 100644 src/main/resources/static/css/login.css create mode 100644 src/main/resources/static/css/main.css create mode 100644 src/main/resources/static/css/popup.css create mode 100644 src/main/resources/static/fonts/sunn-main/README.md create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Bold.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Bold.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Bold.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Bold.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Bold.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Bold.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Heavy.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Heavy.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Heavy.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Heavy.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Heavy.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Heavy.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Light.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Light.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Light.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Light.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Light.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Light.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Medium.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Medium.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Medium.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Medium.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Medium.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Medium.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Regular.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Regular.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Regular.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Regular.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Regular.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Regular.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-SemiBold.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-SemiBold.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-SemiBold.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-SemiBold.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-SemiBold.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-SemiBold.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Thin.eot create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Thin.otf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Thin.svg create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Thin.ttf create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Thin.woff create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT-Thin.woff2 create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT.css create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT.html create mode 100644 src/main/resources/static/fonts/sunn-main/SUIT.jpg create mode 100644 src/main/resources/static/html/health.html create mode 100644 src/main/resources/static/html/jquery-2.2.4.min.js create mode 100644 src/main/resources/static/html/socket.html create mode 100644 src/main/resources/static/img/copy2.png create mode 100644 src/main/resources/static/img/dash_bg.svg create mode 100644 src/main/resources/static/img/exclamaMark.svg create mode 100644 src/main/resources/static/img/icon_agency.svg create mode 100644 src/main/resources/static/img/icon_agency_on.svg create mode 100644 src/main/resources/static/img/icon_cw.svg create mode 100644 src/main/resources/static/img/icon_cw_on.svg create mode 100644 src/main/resources/static/img/icon_dash.svg create mode 100644 src/main/resources/static/img/icon_dash1.svg create mode 100644 src/main/resources/static/img/icon_dash2.svg create mode 100644 src/main/resources/static/img/icon_dash3.svg create mode 100644 src/main/resources/static/img/icon_dash4.svg create mode 100644 src/main/resources/static/img/icon_dash5.svg create mode 100644 src/main/resources/static/img/icon_dashUser.svg create mode 100644 src/main/resources/static/img/icon_dash_on.svg create mode 100644 src/main/resources/static/img/icon_dev.svg create mode 100644 src/main/resources/static/img/icon_dev_on.svg create mode 100644 src/main/resources/static/img/icon_down.svg create mode 100644 src/main/resources/static/img/icon_download.svg create mode 100644 src/main/resources/static/img/icon_gear.svg create mode 100644 src/main/resources/static/img/icon_gear_on.svg create mode 100644 src/main/resources/static/img/icon_insur.svg create mode 100644 src/main/resources/static/img/icon_insur_on.svg create mode 100644 src/main/resources/static/img/icon_limit.svg create mode 100644 src/main/resources/static/img/icon_limit_on.svg create mode 100644 src/main/resources/static/img/icon_money.svg create mode 100644 src/main/resources/static/img/icon_my.svg create mode 100644 src/main/resources/static/img/icon_mypage.svg create mode 100644 src/main/resources/static/img/icon_mypage_on.svg create mode 100644 src/main/resources/static/img/icon_total.svg create mode 100644 src/main/resources/static/img/icon_total_on.svg create mode 100644 src/main/resources/static/img/icon_up.svg create mode 100644 src/main/resources/static/img/icon_user.svg create mode 100644 src/main/resources/static/img/icon_x.svg create mode 100644 src/main/resources/static/img/login_bg.jpg create mode 100644 src/main/resources/static/img/logo.ico create mode 100644 src/main/resources/static/img/logo_tripleA.svg create mode 100644 src/main/resources/static/img/menu_icon1.svg create mode 100644 src/main/resources/static/img/menu_icon2.svg create mode 100644 src/main/resources/static/img/menu_icon4.svg create mode 100644 src/main/resources/static/img/menu_icon5.svg create mode 100644 src/main/resources/static/img/menu_icon6.svg create mode 100644 src/main/resources/static/img/menu_icon7.svg create mode 100644 src/main/resources/static/img/refImg.png create mode 100644 src/main/resources/static/img/right.svg create mode 100644 src/main/resources/static/img/select.svg create mode 100644 src/main/resources/static/index.html create mode 100644 src/main/resources/static/js/common.js create mode 100644 src/main/resources/static/js/jquery.min.js create mode 100644 src/main/resources/static/js/sockjs.min.js create mode 100644 src/main/resources/static/js/stomp.min.js create mode 100644 src/main/resources/templates/admin/agent.html create mode 100644 src/main/resources/templates/admin/agentAdd.html create mode 100644 src/main/resources/templates/admin/agentReport.html create mode 100644 src/main/resources/templates/admin/agentqna.html create mode 100644 src/main/resources/templates/admin/agentqnaRead.html create mode 100644 src/main/resources/templates/admin/alert.html create mode 100644 src/main/resources/templates/admin/api.html create mode 100644 src/main/resources/templates/admin/apiAll.html create mode 100644 src/main/resources/templates/admin/apiAuth.html create mode 100644 src/main/resources/templates/admin/apiBetCallback.html create mode 100644 src/main/resources/templates/admin/apiBetDetail.html create mode 100644 src/main/resources/templates/admin/apiBetInfo1.html create mode 100644 src/main/resources/templates/admin/apiBetInfo2.html create mode 100644 src/main/resources/templates/admin/apiBetList.html create mode 100644 src/main/resources/templates/admin/apiGame.html create mode 100644 src/main/resources/templates/admin/apiGamelist.html create mode 100644 src/main/resources/templates/admin/apiIntro.html create mode 100644 src/main/resources/templates/admin/apiLog.html create mode 100644 src/main/resources/templates/admin/apiLogdev.html create mode 100644 src/main/resources/templates/admin/apiManual.html create mode 100644 src/main/resources/templates/admin/apiPartner.html create mode 100644 src/main/resources/templates/admin/apiPlay.html create mode 100644 src/main/resources/templates/admin/api_doc.html create mode 100644 src/main/resources/templates/admin/apiset.html create mode 100644 src/main/resources/templates/admin/apply.html create mode 100644 src/main/resources/templates/admin/applyend.html create mode 100644 src/main/resources/templates/admin/applypoint.html create mode 100644 src/main/resources/templates/admin/applywait.html create mode 100644 src/main/resources/templates/admin/betlimit.html create mode 100644 src/main/resources/templates/admin/betlist.html create mode 100644 src/main/resources/templates/admin/charge.html create mode 100644 src/main/resources/templates/admin/exchange.html create mode 100644 src/main/resources/templates/admin/exchangeapply.html create mode 100644 src/main/resources/templates/admin/exchangeend.html create mode 100644 src/main/resources/templates/admin/gamelink.html create mode 100644 src/main/resources/templates/admin/guestLogin.html create mode 100644 src/main/resources/templates/admin/include/left.html create mode 100644 src/main/resources/templates/admin/include/top.html create mode 100644 src/main/resources/templates/admin/index.html create mode 100644 src/main/resources/templates/admin/infoRecord.html create mode 100644 src/main/resources/templates/admin/insuredApply.html create mode 100644 src/main/resources/templates/admin/insuredBetList.html create mode 100644 src/main/resources/templates/admin/insuredDownList.html create mode 100644 src/main/resources/templates/admin/insuredExchange.html create mode 100644 src/main/resources/templates/admin/insuredHistory.html create mode 100644 src/main/resources/templates/admin/insuredSet.html create mode 100644 src/main/resources/templates/admin/layout/emptylayout.html create mode 100644 src/main/resources/templates/admin/layout/layout.html create mode 100644 src/main/resources/templates/admin/lg.html create mode 100644 src/main/resources/templates/admin/limit.html create mode 100644 src/main/resources/templates/admin/login.html create mode 100644 src/main/resources/templates/admin/mypage.html create mode 100644 src/main/resources/templates/admin/parse.html create mode 100644 src/main/resources/templates/admin/payments.html create mode 100644 src/main/resources/templates/admin/popup.html create mode 100644 src/main/resources/templates/admin/popup2.html create mode 100644 src/main/resources/templates/admin/simpleReport.html create mode 100644 src/main/resources/templates/admin/stat.html create mode 100644 src/main/resources/templates/admin/statBottom.html create mode 100644 src/main/resources/templates/admin/statCasino.html create mode 100644 src/main/resources/templates/admin/statDate.html create mode 100644 src/main/resources/templates/admin/statPot.html create mode 100644 src/main/resources/templates/admin/statReportday.html create mode 100644 src/main/resources/templates/admin/statReportmonth.html create mode 100644 src/main/resources/templates/admin/statUser.html create mode 100644 src/main/resources/templates/admin/std.html create mode 100644 src/main/resources/templates/admin/transaction.html create mode 100644 src/main/resources/templates/admin/transactionList.html create mode 100644 src/main/resources/templates/admin/user.html create mode 100644 src/main/resources/templates/admin/venderlist.html create mode 100644 src/main/resources/templates/api.html create mode 100644 src/main/resources/templates/error/404.html create mode 100644 src/main/resources/templates/front/lunch.html create mode 100644 src/main/resources/templates/front/splus/callback.html create mode 100644 src/test/java/com/bb/ApiServerApplicationTests.java diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8639b64 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space # 탭 대신 공백 사용 (탭 문자 발생 방지) +indent_size = 4 # 공백은 4칸으로 고정 +end_of_line = lf # 줄바꿈은 무조건 LF로 통일 (리눅스 방식) +charset = utf-8 # 인코딩 통일 +trim_trailing_whitespace = true # 줄 끝의 불필요한 공백 제거 +insert_final_newline = true # 파일 끝에 빈 줄 하나 추가 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d6b284e --- /dev/null +++ b/.gitignore @@ -0,0 +1,77 @@ +HELP.md +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +# --- Build outputs --- +/target/ +/build/ +/out/ + +# --- Maven --- +.mvn/wrapper/maven-wrapper.jar +.mvn/wrapper/maven-wrapper.properties +.settings/ + +# --- Gradle --- +.gradle/ +/gradle/ +/gradlew +gradlew.bat +!gradle/wrapper/gradle-wrapper.jar + +# --- Logs --- +*.log +logs/ +log/ + +# --- Spring Boot --- +*.pid +*.pid.lock +*.iml + +# --- IDE (IntelliJ / Eclipse / STS / VSCode) --- +.idea/ +*.ipr +*.iws +.classpath +.project +.factorypath +.settings/ +.springBeans +.springdsl + +.vscode/ +.history/ +.remote/ + +# --- OS specific --- +.DS_Store +Thumbs.db + +# --- Temporary / cache --- +*.tmp +*.bak +*.swp +*.swo +*.orig +.cache/ +tmp/ +bin/ +generated/ + +# --- Security / credentials (예: 환경변수 파일) --- +.env +*.key +*.pem +*.p12 +# application-*.yml +# application-*.properties +# application.properties + +# --- Docker --- +/docker-compose.override.yml + +# --- API Test Tool --- +api_test_tool/ diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java new file mode 100644 index 0000000..e76d1f3 --- /dev/null +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -0,0 +1,117 @@ +/* + * Copyright 2007-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import java.net.*; +import java.io.*; +import java.nio.channels.*; +import java.util.Properties; + +public class MavenWrapperDownloader { + + private static final String WRAPPER_VERSION = "0.5.6"; + /** + * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. + */ + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; + + /** + * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to + * use instead of the default one. + */ + private static final String MAVEN_WRAPPER_PROPERTIES_PATH = + ".mvn/wrapper/maven-wrapper.properties"; + + /** + * Path where the maven-wrapper.jar will be saved to. + */ + private static final String MAVEN_WRAPPER_JAR_PATH = + ".mvn/wrapper/maven-wrapper.jar"; + + /** + * Name of the property which should be used to override the default download url for the wrapper. + */ + private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; + + public static void main(String args[]) { + System.out.println("- Downloader started"); + File baseDirectory = new File(args[0]); + System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); + + // If the maven-wrapper.properties exists, read it and check if it contains a custom + // wrapperUrl parameter. + File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); + String url = DEFAULT_DOWNLOAD_URL; + if(mavenWrapperPropertyFile.exists()) { + FileInputStream mavenWrapperPropertyFileInputStream = null; + try { + mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); + Properties mavenWrapperProperties = new Properties(); + mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); + url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); + } catch (IOException e) { + System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); + } finally { + try { + if(mavenWrapperPropertyFileInputStream != null) { + mavenWrapperPropertyFileInputStream.close(); + } + } catch (IOException e) { + // Ignore ... + } + } + } + System.out.println("- Downloading from: " + url); + + File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); + if(!outputFile.getParentFile().exists()) { + if(!outputFile.getParentFile().mkdirs()) { + System.out.println( + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + } + } + System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); + try { + downloadFileFromURL(url, outputFile); + System.out.println("Done"); + System.exit(0); + } catch (Throwable e) { + System.out.println("- Error downloading"); + e.printStackTrace(); + System.exit(1); + } + } + + private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } + URL website = new URL(urlString); + ReadableByteChannel rbc; + rbc = Channels.newChannel(website.openStream()); + FileOutputStream fos = new FileOutputStream(destination); + fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); + fos.close(); + rbc.close(); + } + +} diff --git a/deploy-aws.sh b/deploy-aws.sh new file mode 100644 index 0000000..873c95f --- /dev/null +++ b/deploy-aws.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# AWS 서버 파일 업로드 스크립트 +# 사용법: ./deploy-aws.sh + +set -e + +AWS_SERVER=$1 +AWS_USER=$2 +AWS_KEY_PATH=$3 +JAR_FILE=$4 +DEPLOY_PATH=$5 + +if [ -z "$AWS_SERVER" ] || [ -z "$AWS_USER" ] || [ -z "$AWS_KEY_PATH" ] || [ -z "$JAR_FILE" ] || [ -z "$DEPLOY_PATH" ]; then + echo "사용법: $0 " + echo "예시: $0 47.129.51.216 root /path/to/key.pem target/core.jar /home/run" + exit 1 +fi + +echo "=== AWS 서버 파일 업로드 시작 ===" +echo "AWS Server: $AWS_SERVER" +echo "AWS User: $AWS_USER" +echo "JAR File: $JAR_FILE" +echo "Deploy Path: $DEPLOY_PATH" + +# JAR 파일 존재 확인 +if [ ! -f "$JAR_FILE" ]; then + echo "❌ JAR 파일을 찾을 수 없습니다: $JAR_FILE" + exit 1 +fi + +# AWS 키 파일 존재 확인 +if [ ! -f "$AWS_KEY_PATH" ]; then + echo "❌ AWS 키 파일을 찾을 수 없습니다: $AWS_KEY_PATH" + exit 1 +fi + +# AWS 서버 연결 테스트 +echo "AWS 서버 연결 테스트 중..." +ssh -i "$AWS_KEY_PATH" -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$AWS_USER@$AWS_SERVER" "echo 'AWS 서버 연결 성공'" + +if [ $? -ne 0 ]; then + echo "❌ AWS 서버 연결 실패" + exit 1 +fi + +# AWS 서버에서 배포 디렉토리 생성 및 권한 설정 (root 권한으로) +echo "AWS 서버에서 배포 디렉토리 생성 중... (root 권한)" +ssh -i "$AWS_KEY_PATH" "$AWS_USER@$AWS_SERVER" "sudo su - root <<'ROOT_SETUP' + # 배포 디렉토리 및 로그 디렉토리 생성 + mkdir -p $DEPLOY_PATH/logs + chmod -R 755 $DEPLOY_PATH + echo '배포 디렉토리 생성 완료: $DEPLOY_PATH' +ROOT_SETUP +" + +# JAR 파일 이름 추출 +JAR_FILENAME=$(basename "$JAR_FILE") + +# JAR 파일을 AWS 서버로 전송 +echo "JAR 파일을 AWS 서버로 전송 중..." +scp -i "$AWS_KEY_PATH" "$JAR_FILE" "$AWS_USER@$AWS_SERVER:$DEPLOY_PATH/$JAR_FILENAME" + +# JAR 파일 권한 설정 (root가 읽을 수 있도록) +echo "JAR 파일 권한 설정 중... (root 권한)" +ssh -i "$AWS_KEY_PATH" "$AWS_USER@$AWS_SERVER" "sudo su - root <<'ROOT_CHMOD' + chmod 644 $DEPLOY_PATH/$JAR_FILENAME + echo 'JAR 파일 권한 설정 완료' + echo '업로드된 파일: $DEPLOY_PATH/$JAR_FILENAME' + ls -lh $DEPLOY_PATH/$JAR_FILENAME +ROOT_CHMOD +" + +if [ $? -eq 0 ]; then + echo "✅ AWS 서버 파일 업로드 성공!" + echo "JAR 파일이 $DEPLOY_PATH/$JAR_FILENAME 에 업로드되었습니다." +else + echo "❌ AWS 서버 파일 업로드 실패!" + exit 1 +fi + +echo "=== AWS 서버 파일 업로드 완료 ===" + diff --git a/deploy-aws2.sh b/deploy-aws2.sh new file mode 100644 index 0000000..72d6d24 --- /dev/null +++ b/deploy-aws2.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# AWS 서버 파일 업로드 스크립트 +# 사용법: ./deploy-aws.sh + +set -e + +AWS_SERVER=$1 +AWS_USER=$2 +AWS_KEY_PATH=$3 +JAR_FILE=$4 +DEPLOY_PATH=$5 + +if [ -z "$AWS_SERVER" ] || [ -z "$AWS_USER" ] || [ -z "$AWS_KEY_PATH" ] || [ -z "$JAR_FILE" ] || [ -z "$DEPLOY_PATH" ]; then + echo "사용법: $0 " + echo "예시: $0 47.129.51.216 root /path/to/key.pem target/core.jar /home/run" + exit 1 +fi + +echo "=== AWS 서버 파일 업로드 시작 ===" +echo "AWS Server: $AWS_SERVER" +echo "AWS User: $AWS_USER" +echo "JAR File: $JAR_FILE" +echo "Deploy Path: $DEPLOY_PATH" + +# JAR 파일 존재 확인 +if [ ! -f "$JAR_FILE" ]; then + echo "❌ JAR 파일을 찾을 수 없습니다: $JAR_FILE" + exit 1 +fi + +# AWS 키 파일 존재 확인 +if [ ! -f "$AWS_KEY_PATH" ]; then + echo "❌ AWS 키 파일을 찾을 수 없습니다: $AWS_KEY_PATH" + exit 1 +fi + +# AWS 서버 연결 테스트 +echo "AWS 서버 연결 테스트 중..." +ssh -i "$AWS_KEY_PATH" -o ConnectTimeout=10 -o StrictHostKeyChecking=no "$AWS_USER@$AWS_SERVER" "echo 'AWS 서버 연결 성공'" + +if [ $? -ne 0 ]; then + echo "❌ AWS 서버 연결 실패" + exit 1 +fi + +# AWS 서버에서 배포 디렉토리 생성 및 권한 설정 (root 권한으로) +echo "AWS 서버에서 배포 디렉토리 생성 중... (root 권한)" +ssh -i "$AWS_KEY_PATH" "$AWS_USER@$AWS_SERVER" "sudo su - root <q5Rb3%Dci+d4?iM3fao5w^REAL?*A#QH+US2b=nQXC$ z@|w4KeF{-~E05_@3_{zu);OBpw#}HhT-%7~G^8pgSK^ z{K2_80kAnJRdc$n$tum~4C9m9P>p0?$;o$zmY=QEO#wyAHo5vtzfqB&m9G!2?M0X0 z?*ARXQooZEJkl^P{maskJ+JD zW{HDktd=<=2*MrvBn35KL3pttKG~GaFIZ++U)VLYv8foRaRNJrE(u^b}#LW3e&N9f>E3UD?`w_DthnA3t zxzgjE6Iz+3>o;N>^r{<(>ax)WtvVS5q7o`vnDh!J4(c&6TQ!v#GZ%lrpAw3WI8iz3w@hK;8H-Pa=#x77mHG zbLG~-UDO&fpRF#OCidGf_`X$$M(k2q^~?#oX*=9AbLIBL+3*YNJ{JS?#Py-)pp|6w zXBnN0*i@r>pjrG|Iu}-{m*<)V=-F+5l1K1xvhC(lxat-8I95ryIkf3A`5^z08YTat z?B|%{dh%N?xI7yW!0z!9doZp#313hP5+fv>(3S97p<3xzZr>!&IQ45LGwr>(2uYe} zH7u3uZ5RUoLmRWY?km%BBhpz9r0ZFc=|Q_?=^Tp*uOe)XtUbzqKZiZKU}FMRJTknJ zu$}uGsLS-P{LXSS&a0P4pGL@-0K{QOWpSvti?2=vQH;jZyI~+oPP2oppUv(bp-Ee8 z#J2p!;LFzx&z9$mY&L?Gu8VcUdoJ0Ov3u)aRE(w1_L!nxqAm-c!+02p3ndL3ltz&j z`i+jIJNgeyHHS*n=;^?XWxYOFBa)JsJ^Z!a+@O&4#nt5E!)UXv#n5Sgq^49iBJ*iZ zY{{eAJ0#4uWzl9{8q-3#aFWH(->@+EpjA~2zv5R0X(UU9N@u$bF)Ky_#%VIEO~j5% zkg#Z?h$`zyVu4?FToas-1Yr$4?$&vU&2$(+L)7Pcv?h9&+ z7jRLoOSm>Yx?{0pQ5fo)FJ5FeP(u2iz)P5fRh%K)`BFZ>p*0TfuxxU){Y?D|WQ+pW z?mvBMC0B)-8aEw=)?Q<>srRzkBvfu|n)y0N<76E;#N8ZR6G#&}?8sn0N8JcxoO7d~4`%WHkKit$1BlNxRCn8N6VsRO247E~hla0#y z^9K|~AVa%=Axw \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..c8d4337 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,182 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom-real.xml b/pom-real.xml new file mode 100644 index 0000000..3188ec5 --- /dev/null +++ b/pom-real.xml @@ -0,0 +1,217 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.0.0 + + + com.example + apiServer + 0.0.1-SNAPSHOT + apiServer + Demo project for Spring Boot + + real + 17 + 2.0.2 + 0.11.5 + 3.0.0 + 1.18.30 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-websocket + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + nz.net.ultraq.thymeleaf + thymeleaf-layout-dialect + + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + ${mybatis.version} + + + com.mysql + mysql-connector-j + runtime + + + org.mariadb.jdbc + mariadb-java-client + runtime + + + + org.codehaus.jettison + jettison + 1.5.4 + + + com.google.code.gson + gson + + + org.json + json + 20230227 + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + + io.jsonwebtoken + jjwt-api + ${jjwt.version} + + + io.jsonwebtoken + jjwt-impl + ${jjwt.version} + runtime + + + io.jsonwebtoken + jjwt-jackson + ${jjwt.version} + runtime + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + ${springdoc.version} + + + + org.projectlombok + lombok + ${lombok.version} + true + + + org.jsoup + jsoup + 1.15.3 + + + org.apache.httpcomponents.client5 + httpclient5 + + + com.squareup.okhttp3 + okhttp + 4.10.0 + + + + jakarta.xml.bind + jakarta.xml.bind-api + + + com.sun.xml.bind + jaxb-impl + 4.0.0 + runtime + + + com.warrenstrange + googleauth + 1.5.0 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-batch + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springdoc + springdoc-openapi-starter-webmvc-api + 2.0.2 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + 17 + 17 + + + org.projectlombok + lombok + ${lombok.version} + + + org.springframework.boot + spring-boot-configuration-processor + 3.0.0 + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..dff7241 --- /dev/null +++ b/pom.xml @@ -0,0 +1,222 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 3.0.0 + + + com.example + apiServer + 0.0.1-SNAPSHOT + apiServer + Demo project for Spring Boot + + + 17 + 2.0.2 + 0.11.5 + 3.0.0 + 1.18.30 + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-websocket + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + nz.net.ultraq.thymeleaf + thymeleaf-layout-dialect + + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + ${mybatis.version} + + + com.mysql + mysql-connector-j + runtime + + + org.mariadb.jdbc + mariadb-java-client + runtime + + + + org.codehaus.jettison + jettison + 1.5.4 + + + com.google.code.gson + gson + + + org.json + json + 20230227 + + + net.sf.json-lib + json-lib + 2.4 + jdk15 + + + + io.jsonwebtoken + jjwt-api + ${jjwt.version} + + + io.jsonwebtoken + jjwt-impl + ${jjwt.version} + runtime + + + io.jsonwebtoken + jjwt-jackson + ${jjwt.version} + runtime + + + + com.fasterxml.jackson.core + jackson-databind + + + + org.springdoc + springdoc-openapi-starter-webmvc-ui + ${springdoc.version} + + + + org.projectlombok + lombok + ${lombok.version} + true + + + org.jsoup + jsoup + 1.15.3 + + + org.apache.httpcomponents.client5 + httpclient5 + + + com.squareup.okhttp3 + okhttp + 4.10.0 + + + + jakarta.xml.bind + jakarta.xml.bind-api + + + com.sun.xml.bind + jaxb-impl + 4.0.0 + runtime + + + com.warrenstrange + googleauth + 1.5.0 + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.springframework.boot + spring-boot-starter-batch + + + org.springframework.boot + spring-boot-starter-webflux + + + org.springdoc + springdoc-openapi-starter-webmvc-api + 2.0.2 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + 17 + 17 + + + org.projectlombok + lombok + ${lombok.version} + + + org.springframework.boot + spring-boot-configuration-processor + 3.0.0 + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.projectlombok + lombok + + + + + + + \ No newline at end of file diff --git a/runApi.sh b/runApi.sh new file mode 100644 index 0000000..3adc8eb --- /dev/null +++ b/runApi.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +# API 서버 배포 및 실행 스크립트 +# 사용법: sudo ./runApi.sh +# 필요한 경로/파일이 다를 경우 아래 변수만 수정하세요. + +set -euo pipefail + +JAR_NAME="${JAR_NAME:-apiServer-0.0.1-SNAPSHOT.jar}" +PID_FILE="${PID_FILE:-/home/api.pid}" +RUN_DIR="${RUN_DIR:-/home/run}" +BUILD_DIR="${BUILD_DIR:-/home/build}" +BACKUP_DIR="${BACKUP_DIR:-/home/backup}" +JAVA_BIN="${JAVA_BIN:-/home/openjdk17/bin/java}" +# SCOUTER_AGENT="${SCOUTER_AGENT:-/home/scouter/agent.java/scouter.agent.jar}" +# SCOUTER_CONF="${SCOUTER_CONF:-/home/scouter/agent.java/conf/scouter.conf}" +SPRING_PROFILE="${SPRING_PROFILE:-real}" + +timestamp() { + date +"%Y%m%d_%H%M%S" +} + +log() { + echo "[runApi] $*" +} + +ensure_paths() { + mkdir -p "$RUN_DIR" "$BACKUP_DIR" "$BUILD_DIR" +} + +stop_app() { + if [[ -f "$PID_FILE" ]]; then + local pid + pid=$(cat "$PID_FILE" 2>/dev/null || true) + if [[ -n "${pid:-}" ]] && ps -p "$pid" > /dev/null 2>&1; then + log "기존 프로세스 종료: $pid" + kill -9 "$pid" || true + else + log "PID 파일은 있으나 실행 중인 프로세스가 없습니다." + fi + rm -f "$PID_FILE" + else + log "종료할 PID 파일이 없습니다." + fi +} + +backup_old() { + local current="$RUN_DIR/$JAR_NAME" + if [[ -f "$current" ]]; then + local backup="$BACKUP_DIR/oldApi_$(timestamp).jar" + log "기존 JAR 백업 -> $backup" + mv "$current" "$backup" + else + log "백업할 기존 JAR이 없습니다." + fi +} + +copy_new() { + local source="$BUILD_DIR/$JAR_NAME" + local target="$RUN_DIR/$JAR_NAME" + + # 소스와 타겟이 같으면 복사 불필요 + if [[ "$source" == "$target" ]]; then + if [[ -f "$target" ]]; then + log "배포된 JAR 확인 -> $target" + return 0 + else + log "새 JAR을 찾을 수 없습니다: $target" + exit 1 + fi + fi + + if [[ ! -f "$source" ]]; then + log "새 JAR을 찾을 수 없습니다: $source" + exit 1 + fi + + log "새 JAR 복사 -> $target" + cp "$source" "$target" +} + +start_app() { + local target="$RUN_DIR/$JAR_NAME" + log "애플리케이션 시작" + local log_dir="${LOG_DIR:-/home/log/core}" + local log_file="${LOG_FILE:-$log_dir/apiServer.log}" + mkdir -p "$log_dir" + + nohup "$JAVA_BIN" \ + -Duser.timezone=GMT+09:00 \ + -Dspring.profiles.active="$SPRING_PROFILE" \ + -jar "$target" \ + >> "$log_file" 2>&1 & + echo $! > "$PID_FILE" + log "시작 완료 (PID: $(cat "$PID_FILE"))" +} + +main() { + ensure_paths + stop_app + backup_old + copy_new + start_app + log "배포 완료" +} + +main "$@" + diff --git a/src/main/java/com/bb/ApiServerApplication.java b/src/main/java/com/bb/ApiServerApplication.java new file mode 100644 index 0000000..f186b75 --- /dev/null +++ b/src/main/java/com/bb/ApiServerApplication.java @@ -0,0 +1,15 @@ +package com.bb; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.scheduling.annotation.EnableAsync; + +@EnableAsync +@SpringBootApplication +public class ApiServerApplication { + + public static void main(String[] args) { + SpringApplication.run(ApiServerApplication.class, args); + } + +} diff --git a/src/main/java/com/bb/admin/controller/AgentController.java b/src/main/java/com/bb/admin/controller/AgentController.java new file mode 100644 index 0000000..6f67eab --- /dev/null +++ b/src/main/java/com/bb/admin/controller/AgentController.java @@ -0,0 +1,671 @@ +package com.bb.admin.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Random; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +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.reactive.function.client.WebClient; + +import com.bb.model.CommonParamAdmin; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.model.Vendor; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.util.PagingUtil; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + + + +@Slf4j +@Controller +@RequestMapping(value = "/agent") +@PreAuthorize("hasRole('ADMIN')") +public class AgentController { + + @Autowired + SiteService siteService; + + @Autowired + CreditService creditService; + + @Autowired + private WebClient webClient; // 싱글톤 WebClient 주입 + /* + * + * TPA 에이전트 목록 페이지 수정사항 + 1. 에이전트 -> "에이전시" 로 용어수정 + 2. 에이전시 목록 수정사항 : + - 단계 = 레벨. + - 번호 : 생성 순번 (컬럼 맨 앞으로) + - 분류 : 두가지 타입 (추후 추가될수있음) NA(Normal Agency), IA(Insure Agency) + NA, IA + - 타입 : Ota (Operator Agency) : 솔루션 운영하는 에이전시, Ppa (Paper Agency) : 하위 총판만 운영하는 에이전시 + 3. 검색옵션 추가 : 분류, 타입 각각 따로 검색 가능하도록 분리 + 4. 데이터 적용안되어 있는부분 적용 : 요율, 총 지급받은 금액 등 + 요율 : 기준요율만 적시 (벤더별 요율은 상세페이지에서 표시됨) + 5. 소속 에이전트 삭제(어차피 내 소속임) 에이전트 아이디 클릭시 상세페이지 이동 + 6. 가입시각 -> 가입일시로 수정 , 가운데 "T" "%"문자 제거. + 7. 관리 컬럼은 유지 타이틀 이름도 관리 유자, 내용 관리 글자 제거. + "정지"버튼 추가(클릭시 모든기능정지) "블랙"버튼 추가 (클릭시 로그인 및 PT충환전 중지) + 위 기능 구현하도록 작업 + */ + + + @GetMapping("") + public String list( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + + log.info("underSiteCredit" + underSiteCredit); + + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo= new PageFormVO(); + + if(loginSite.getSiteLevel() >0) { + search.setUpperSiteId(loginSite.getSiteId()); + } + + int totalCount = siteService.getSiteListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + List siteList = siteService.getSiteList(search); + model.put("siteList", siteList); + + return "admin/agent"; + } + + + @GetMapping("/detail/{siteIdx}") + public String detail( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + + log.info("#-Agent::DETAIL::underSiteCredit" + underSiteCredit); + + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + log.info("#-Agent::DETAIL::siteIdx {}" , search.getSiteIdx()); + if(loginSite.getSiteLevel() >0) { + search.setUpperSiteId(""+loginSite.getSiteId()); + } + Site targetSite = siteService.getSiteDetail(search); + model.put("targetSite", targetSite); + + model.put("uppersiteIdx", loginSite.getSiteIdx()); + + List vederRateList = siteService.getVenderRateList(targetSite); + model.put("vederRateList", vederRateList); + log.info("#-Agent::DETAIL::vederRateList {}", vederRateList.size()); + log.info("#-Agent::DETAIL::vederRateList {}", vederRateList); + + /* + HashMap vendorParam = new HashMap<>(); + vendorParam.put("siteIdx", search.getSiteIdx()); + vendorParam.put("vendor", "nexus"); + HashMap nexusInfo = siteService.getSiteOnlyVendorInfo(vendorParam); + log.info("#-Agent::DETAIL::nexusInfo::"+nexusInfo); + model.put("nexusInfo", nexusInfo); + + vendorParam.put("vendor", "xtreem"); + HashMap xtreemInfo = siteService.getSiteOnlyVendorInfo(vendorParam); + log.info("#-Agent::DETAIL::xtreemInfo::"+xtreemInfo); + model.put("xtreemInfo", xtreemInfo); + */ + + HashMap parsEvoInfo = siteService.getParseUseYn(targetSite.getSiteIdx()); + int parsEvoAmount = (int) parsEvoInfo.get("parsEvoAmount"); + model.put("parsEvoAmount", parsEvoAmount); + + List mylist = siteService.getSiteVendorList2(targetSite.getSiteIdx()); + List vendorlist = siteService.getVendorList2(targetSite.getSiteIdx()); + model.put("mylist", mylist); + log.info("#-Agent::DETAIL::mylist::"+mylist); + model.put("vendorlist", vendorlist); + log.info("#-Agent::DETAIL::vendorlist::"+vendorlist); + + HashMap creditInfo = siteService.getSiteSubCredit(targetSite.getSiteId()); + model.put("subCreditInfo", creditInfo); + + return "admin/popup"; + } + + @RequestMapping("/saveSvcr") + public @ResponseBody JSONObject saveSvcr(HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin) throws Exception { + final String LOG_PREFIX = "#-SAVE_SCVR:::"; + log.info(LOG_PREFIX + "CommonParamAdmin: " + commonParamAdmin.toString()); + + JSONObject obj = new JSONObject(); + ObjectMapper mapper = new ObjectMapper(); + HashMap paramMap = mapper.readValue(commonParamAdmin.getParam().toString(), new TypeReference() {}); + + if(paramMap.get("vendorIdx") != null) { + SiteSearch targetSearch = new SiteSearch(); + long targetSiteIdx = Long.parseLong(commonParamAdmin.getParam().get("targetSiteIdx").toString()); + targetSearch.setSiteIdx(targetSiteIdx); + Site targetSite = siteService.getSiteDetail(targetSearch); + + String siteUrl = targetSite.getSiteCbUrl() + "/gameRateChange"; + paramMap.put("siteIdx", targetSiteIdx); + + if(Integer.parseInt(paramMap.get("type").toString()) == 0) { + siteService.saveVendorRate(paramMap); + } + siteService.saveSvcr(paramMap, Integer.parseInt(paramMap.get("type").toString())); + + // 외부 API 호출 (WebClient 방식) + if(Integer.parseInt(paramMap.get("type").toString()) == 0) { + sendGameRateChange(siteUrl, paramMap); + } + + if(targetSite.getSiteLevel() < 1) { + siteService.updateVendorUseYn(paramMap); + } + } + obj.put("RES", "SUCCESS"); + return obj; + } + +@RequestMapping("/saveSvcrAll") + public @ResponseBody JSONObject saveSvcrAll(HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin) throws Exception { + final String LOG_PREFIX = "#-SAVE_SCVRALL:::"; + log.info(LOG_PREFIX + "CommonParamAdmin: " + commonParamAdmin.toString()); + + JSONObject obj = new JSONObject(); + + for(int i=0; i < commonParamAdmin.getParamlist().length; i++) { + JSONObject paramData = commonParamAdmin.getParamlist()[i]; + paramData.put("siteIdx", commonParamAdmin.getParam().get("targetSiteIdx")); + ObjectMapper mapper = new ObjectMapper(); + HashMap paramMap = mapper.readValue(paramData.toString(), new TypeReference() {}); + + long targetSiteIdx = Long.parseLong(commonParamAdmin.getParam().get("targetSiteIdx").toString()); + SiteSearch targetSearch = new SiteSearch(); + targetSearch.setSiteIdx(targetSiteIdx); + Site targetSite = siteService.getSiteDetail(targetSearch); + String siteUrl = targetSite.getSiteCbUrl() + "/gameRateChange"; + + if(paramMap.get("vendorIdx") != null) { + paramMap.put("siteIdx", targetSiteIdx); + if(Integer.parseInt(paramMap.get("type").toString()) == 0) { + siteService.saveVendorRate(paramMap); + } + siteService.saveSvcr(paramMap, Integer.parseInt(paramMap.get("type").toString())); + + // 외부 API 호출 (WebClient 방식) + if(Integer.parseInt(paramMap.get("type").toString()) == 0) { + sendGameRateChange(siteUrl, paramMap); + } + + if(targetSite.getSiteLevel() < 1) { + siteService.updateVendorUseYn(paramMap); + } + } + } + obj.put("RES", "SUCCESS"); + return obj; + } + + /** + * WebClient를 이용한 외부 API 호출 공통 메서드 (동기 방식) + */ + private void sendGameRateChange(String url, HashMap paramMap) { + try { + log.info("##### WebClient gmeRateChange 시작 #####"); + + JSONObject paramBody = new JSONObject(); + paramBody.put("siteApiKey", siteService.getSiteKey(paramMap)); + paramBody.put("vendor", siteService.getVendorTitle(paramMap)); + paramBody.put("vendorIdx", paramMap.get("vendorIdx")); + paramBody.put("gameRate", Double.parseDouble(paramMap.get("rate").toString())); + + String response = webClient.post() + .uri(url) + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(paramBody.toString()) + .retrieve() + .bodyToMono(String.class) + .block(); // MVC 환경이므로 결과를 기다림(동기) + + log.info("##### WebClient 응답 완료 : {}", response); + } catch (Exception e) { + log.error("##### WebClient 호출 에러 : {}", e.getMessage()); + } + } + + @GetMapping("/add") + public String add( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + + log.info("underSiteCredit" + underSiteCredit); + + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + return "admin/agentAdd"; + } + + + @RequestMapping("/siteUpdate") + public @ResponseBody JSONObject siteUpdate( HttpServletRequest request, ModelMap model, Site site) throws Exception { + JSONObject obj = new JSONObject(); + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + site.setUpperSiteId(loginSite.getSiteId()); + site.setUpperSiteIdx(loginSite.getSiteIdx()); + final String LOG_PREFIX = "#-super::siteUpdate:::"; + + log.info(LOG_PREFIX+ "Site Info: " + site.toString()); + log.info(LOG_PREFIX+ "Site IP: " + site.getSiteIp()); + siteService.siteUpdate(LOG_PREFIX, site); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/agentUpdate") + public @ResponseBody JSONObject agentUpdate( HttpServletRequest request, ModelMap model, Site site) throws Exception { + JSONObject obj = new JSONObject(); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + // site.setSiteId(loginSite.getSiteId()); + final String LOG_PREFIX = "#-super::agentUpdate:::"; + + if("new".equals(site.getSiteKey())) { + String newsiteKey = makeApiKey(loginSite.getSiteId()); + site.setSiteKey(newsiteKey); + obj.put("DATA", newsiteKey); + } + + log.info(LOG_PREFIX+ "Site Info: " + site.toString()); + log.info(LOG_PREFIX+ "Site IP: " + site.getSiteIp()); + siteService.siteUpdate(LOG_PREFIX, site); + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/agentIpsUpdate") + public @ResponseBody JSONObject agentIpsUpdate( HttpServletRequest request, ModelMap model, Site site) throws Exception { + JSONObject obj = new JSONObject(); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + // site.setSiteId(loginSite.getSiteId()); + + + siteService.agentIpsUpdate(site) ; + + + obj.put("RES", "SUCCESS"); + + + return obj; + } + + @RequestMapping("/forDefault") + public @ResponseBody JSONObject forDefault(HttpServletRequest request, ModelMap model, SiteSearch search) throws Exception { + JSONObject obj = new JSONObject(); + + //Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + //Site site = (Site) authentication.getDetails(); + + Site site = siteService.getSiteDetail(search); + final String LOG_PREFIX = "#-Proc::forDefault::"+site.getSiteIdx()+"::"; + log.info(LOG_PREFIX + "loginSite::" + site.toString()); + log.info(LOG_PREFIX+ "Site IP: " + site.getSiteIp()); + + siteService.siteUpdate(LOG_PREFIX, site); + siteService.forDefaultProc(site); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/saveParsEvoAmount") + public @ResponseBody JSONObject saveParsEvoAmount(HttpServletRequest request, ModelMap model, SiteSearch param) throws Exception { + JSONObject obj = new JSONObject(); + final String LOG_PREFIX = "#-Proc::saveParsEvoAmount::"+param.getSiteIdx()+"::"; + log.info(LOG_PREFIX + "ParsEvoAmount::" + param.getParsEvoAmount()); + + int updResult = siteService.saveParsEvoAmount(param); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/creditRateSave") + public @ResponseBody JSONObject setSave( HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin ) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + Site loginSite = (Site)authentication.getDetails(); + + JSONObject obj = new JSONObject(); + log.info(commonParamAdmin.toString()); + + for(int i=0;i() {}); + if(paramMap.get("vendorIdx")!=null) { + siteService.saveVendorRate(paramMap); + siteService.updateVendorUseYn(paramMap); + } + } + + obj.put("RES", "SUCCESS"); + + return obj; + } + + + @RequestMapping("/insurePoinRateSave") + public @ResponseBody JSONObject insurePointRateSave( HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin ) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + Site loginSite = (Site)authentication.getDetails(); + + JSONObject obj = new JSONObject(); + log.info(commonParamAdmin.toString()); + + for(int i=0;i() {}); + siteService.saveVendorInsurePointRate(paramMap); + } + + obj.put("RES", "SUCCESS"); + + return obj; + } + + + @RequestMapping("/addProc") + public @ResponseBody JSONObject addProc( HttpServletRequest request, ModelMap model, Site site) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + Site loginSite = (Site)authentication.getDetails(); + site.setUpperSiteId(loginSite.getSiteId()); + site.setUpperSiteIdx(loginSite.getSiteIdx()); + site.setSiteKey(makeApiKey(site.getSiteId())); + JSONObject obj = new JSONObject(); + + if(site.getIsTransfer() == null || "".equals(site.getIsTransfer())) { + site.setIsTransfer("N"); + } + + log.info(site.toString()); + + siteService.addProc(site); + obj.put("RES", "SUCCESS"); + + return obj; + } + + + @GetMapping("/transaction") + public String transaction( HttpServletRequest request , ModelMap model , @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo= new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + + int totalCount = creditService.getSiteTranListCnt(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(15); + } 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); + model.put("pageInfo", pageVo.getPagination()); + } + + List list = creditService.getSiteTranList(search); + log.debug(""+list.size()); + model.put("list", list); + + return "admin/transaction"; + } + + + @GetMapping("/gamelink") + public String gamelink( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + search.setSiteIdx(loginSite.getSiteIdx()); + + List mylist = siteService.getSiteVendorList(search); + List vendorlist = siteService.getVendorList(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorlist); + + return "admin/gamelink"; + } + + @GetMapping("/venderlist") + public String venderlist( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/venderlist"; + } + + @GetMapping("/apiset") + public String apiset( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiset"; + } + + + @RequestMapping("/siteVenderUpdate") + public @ResponseBody JSONObject siteVenderUpdate( HttpServletRequest request, ModelMap model, Vendor vendor) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + JSONObject obj = new JSONObject(); + + vendor.setSiteIdx(loginSite.getSiteIdx()); + try { + siteService.siteVenderUpdate(vendor); + obj.put("RES", "SUCCESS"); + } catch(Exception e) { + obj.put("RES", "FAIL"); + } + + return obj; + } + + + @GetMapping("/parseOnOff") + public @ResponseBody JSONObject parseOnOff(HttpServletRequest request, ModelMap model, @RequestParam("pStatus") String pStatus) throws Exception { + JSONObject obj = new JSONObject(); + + final String LOG_PREFIX = "#-Proc::parseOnOff:::"; + + log.info(LOG_PREFIX + "전체 사이트 파싱설정::" + pStatus + "::START"); + + String useYn = ""; + if("on".equals(pStatus)) { + useYn = "Y"; + } else { + useYn = "N"; + } + log.info(LOG_PREFIX + "updateParseUseYN useYn::" + useYn); + int result = siteService.updateParseUseYN(useYn); + log.info(LOG_PREFIX + "updateParseUseYN result::" + result); + + log.info(LOG_PREFIX + "전체 사이트 파싱설정::" + pStatus + "::END"); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + + private String makeApiKey(String param) { + int n = 24; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + + return sb.toString(); + } +} diff --git a/src/main/java/com/bb/admin/controller/CreditController.java b/src/main/java/com/bb/admin/controller/CreditController.java new file mode 100644 index 0000000..6b23135 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/CreditController.java @@ -0,0 +1,559 @@ +package com.bb.admin.controller; + +import java.util.HashMap; +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.bb.model.Credit; +import com.bb.model.CreditPoint; +import com.bb.model.OTPInfo; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.util.PagingUtil; +import com.bb.util.TOTPTokenGenerator; + +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@Controller +@RequestMapping(value = "/cash") +@PreAuthorize("hasRole('ADMIN')") +public class CreditController { + + @Autowired + SiteService siteService; + + @Autowired + CreditService creditService; + + @GetMapping("/charge") + public String charge(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + log.info("underSiteCredit" + underSiteCredit); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo = new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + search.setCreditType("CI"); + + int totalCount = creditService.getCreditListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + HashMap sum = creditService.getCreditSumToday(search); + model.put("sum", sum); + + List list = creditService.getCreditList(search); + log.info("list" + list.size()); + model.put("list", list); + + return "admin/charge"; + } + + @GetMapping("/chargeWait") + public String chargeWait(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + log.info("underSiteCredit" + underSiteCredit); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo = new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + search.setCreditType("CI"); + search.setCreditStatus(request.getParameter("creditStatus")); + log.info(search.getCreditStatus()); + + int totalCount = creditService.getCreditListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + log.info(search.getCreditStatus()); + List list = creditService.getCreditList(search); + log.info("" + list.size()); + model.put("list", list); + + return "admin/apply"; + } + + @GetMapping("/exchange") + public String exchange(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + log.info("underSiteCredit" + underSiteCredit); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo = new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + search.setCreditType("CO"); + search.setCreditStatus(request.getParameter("creditStatus")); + log.info(search.getCreditStatus()); + + int totalCount = creditService.getCreditListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + List list = creditService.getCreditList(search); + model.put("list", list); + + return "admin/exchange"; + } + + @GetMapping("/exchangeWait") + public String exchangeWait(HttpServletRequest request, ModelMap model, + @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + log.info("underSiteCredit" + underSiteCredit); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo = new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + search.setCreditType("CO"); + + int totalCount = creditService.getCreditListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + List list = creditService.getCreditList(search); + model.put("list", list); + + return "admin/exchangeapply"; + } + + @RequestMapping("/addProc") + public @ResponseBody JSONObject addProc(HttpServletRequest request, ModelMap model, Credit credit) + throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + + JSONObject obj = new JSONObject(); + // enum('AI','AO','CI','CO','DP','CD','SDP','SCD') + // inout (받는사람 기준으로 인인지 아웃인지) + // status 바로적립 1, 승인대기 0 + // siteId 타겟사이트 아이디 + final String LOG_PREFIX = "#-super::CREDIT_DEPOSIT:::"; + log.info(LOG_PREFIX + "Credit::" + credit.toString()); + + if ("AI".equals(credit.getCreditType()) || "AO".equals(credit.getCreditType())) { + OTPInfo otpManager = siteService.getOtpInfoByManger(loginSite.getSiteIdx()); + if (otpManager == null || otpManager.getAccount().equals("")) { + log.error(LOG_PREFIX + "OTP정보가 없습니다."); + obj.put("RES", "FAIL"); + obj.put("MSG", "OTP정보가 없습니다."); + return obj; + } else { + log.info(LOG_PREFIX + "OTP Info::" + otpManager.toString()); + String secret = otpManager.getSecretKey(); + if (credit.getOtp() == null || "".equals(credit.getOtp())) { + log.error(LOG_PREFIX + "OTP 번호를 입력하세요."); + obj.put("RES", "FAIL"); + obj.put("MSG", "OTP 번호를 입력하세요."); + return obj; + } + + boolean chkOtp = TOTPTokenGenerator.otpVerify(secret, Integer.parseInt(credit.getOtp())); + if (!chkOtp) { + log.error(LOG_PREFIX + "OTP 번호가 일치하지 않습니다."); + obj.put("RES", "FAIL"); + obj.put("MSG", "OTP 번호가 일치하지 않습니다."); + return obj; + } + } + + SiteSearch search = new SiteSearch(); + search.setSiteId(credit.getTargetSiteId()); + search.setSiteIdx(credit.getTargetSiteIdx()); + Site targetSite = siteService.getSiteDetail(search); + credit.setSiteLevel(targetSite.getSiteLevel()); + } + + if ("AI".equals(credit.getCreditType())) { // 관리 직접 지금 + + if (siteCredit < credit.getCreditAmt()) { + obj.put("RES", "FAIL"); + obj.put("MSG", "크레딧이 모자릅니다."); + return obj; + } + + credit.setInOut("IN"); + credit.setCreditStatus(1); + credit.setSiteIdx(loginSite.getSiteIdx()); + credit.setSiteId(loginSite.getSiteId()); + + } else if ("AO".equals(credit.getCreditType())) { // 관리자 직접환급 + + long targetSiteCredit = siteService.getSiteCredit(credit.getTargetSiteId()); + + if (targetSiteCredit < credit.getCreditAmt()) { + obj.put("RES", "FAIL"); + obj.put("MSG", "해당 에이젼시의 크레딧이 모자릅니다."); + return obj; + } + + credit.setInOut("OUT"); + credit.setCreditStatus(1); + credit.setSiteIdx(loginSite.getSiteIdx()); + credit.setSiteId(loginSite.getSiteId()); + + } else if ("CI".equals(credit.getCreditType())) { // 충전 신청 + + long targetSiteCredit = siteService.getSiteCredit(loginSite.getUpperSiteId()); + if (targetSiteCredit < credit.getCreditAmt()) { + obj.put("RES", "FAIL"); + obj.put("MSG", "싱으; 에이젼시의 크레딧이 모자릅니다. 상위 에이전시에 문의하세요"); + return obj; + } + + credit.setInOut("IN"); + credit.setCreditStatus(0); + + credit.setSiteIdx(loginSite.getUpperSiteIdx());// 상위사이트아이디 + credit.setSiteId(loginSite.getUpperSiteId()); + + credit.setTargetSiteIdx(loginSite.getSiteIdx()); // 타켓사이트 아이디; + credit.setTargetSiteId(loginSite.getSiteId()); + + credit.setCreditRate(loginSite.getSiteCreditRate()); + + } else if ("CO".equals(credit.getCreditType())) { // 환전 신청 + + if (siteCredit < credit.getCreditAmt()) { + obj.put("RES", "FAIL"); + obj.put("MSG", "크레딧이 모자릅니다."); + return obj; + } + + credit.setInOut("OUT"); + credit.setCreditStatus(0); + + credit.setSiteIdx(loginSite.getUpperSiteIdx());// 상위사이트아이디 + credit.setSiteId(loginSite.getUpperSiteId()); + + credit.setTargetSiteIdx(loginSite.getSiteIdx()); // 타켓사이트 아이디; + credit.setTargetSiteId(loginSite.getSiteId()); + + credit.setCreditRate(loginSite.getSiteCreditRate()); + + } else if ("DP".equals(credit.getCreditType())) { // 베팅크레딧 + // credit.setInOut("OUT"); + // credit.setCreditStatus(1); + + } else if ("CD".equals(credit.getCreditType())) { // 윈머니크레딧 + // cash.setInOut("IN"); + // cash.setCreditStatus(1); + } else if ("SDP".equals(credit.getCreditType())) { // 서브포인트충전 신청 + // cash.setInOut("IN"); + // cash.setCreditStatus(0); + + credit.setInOut("IN"); + credit.setCreditStatus(0); + credit.setSiteIdx(loginSite.getUpperSiteIdx());// 상위사이트아이디 + credit.setSiteId(loginSite.getUpperSiteId()); + + credit.setTargetSiteIdx(loginSite.getSiteIdx()); // 타켓사이트 아이디; + credit.setTargetSiteId(loginSite.getSiteId()); + credit.setCreditRate(loginSite.getSiteCreditRate()); + + } else if ("SCD".equals(credit.getCreditType())) { // 서브포인트환전 현재 없음 + + } + + log.info(credit.toString()); + + int res = creditService.insertCredit(credit); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/statusUpdate") + public @ResponseBody JSONObject statusUpdate(HttpServletRequest request, ModelMap model, Credit credit) + throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + // enum('AI','AO','CI','CO','DP','CD','SDP','SCD') + // inout (받는사람 기준으로 인인지 아웃인지) + // status 바로적립 1, 승인대기 0 + // siteId 타겟사이트 아이디 + + JSONObject obj = new JSONObject(); + log.info(credit.toString()); + + int res = creditService.updateStatus(credit); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @GetMapping("/point") + public String point(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + log.info("underSiteCredit" + underSiteCredit); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo = new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + search.setCreditType("CO"); + + int totalCount = creditService.getPointListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + List list = creditService.getPointList(search); + model.put("list", list); + + return "admin/applypoint"; + } + + @RequestMapping("/addPointProc") + public @ResponseBody JSONObject addPointProc(HttpServletRequest request, ModelMap model, CreditPoint point) + throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + JSONObject resObj = new JSONObject(); + + long sitePoint = siteService.getSitePoint(point.getTargetSiteId()); + final String LOG_PREFIX = "#-addPointProc::" + loginSite.getSiteId() + "=>" + point.getTargetSiteId() + ":::"; + long time = System.currentTimeMillis(); + + log.info(LOG_PREFIX + "CreditPoint Info : " + point.toString()); + + OTPInfo otpManager = siteService.getOtpInfoByManger(loginSite.getSiteIdx()); + if (otpManager == null || otpManager.getAccount().equals("")) { + log.error(LOG_PREFIX + "OTP정보가 없습니다."); + resObj.put("RES", "FAIL"); + resObj.put("MSG", "OTP정보가 없습니다."); + return resObj; + } else { + log.info(LOG_PREFIX + "OTP Info::" + otpManager.toString()); + String secret = otpManager.getSecretKey(); + if (point.getOtp() == null || "".equals(point.getOtp())) { + log.error(LOG_PREFIX + "OTP 번호를 입력하세요."); + resObj.put("RES", "FAIL"); + resObj.put("MSG", "OTP 번호를 입력하세요."); + return resObj; + } + + boolean chkOtp = TOTPTokenGenerator.otpVerify(secret, Integer.parseInt(point.getOtp())); + if (!chkOtp) { + log.error(LOG_PREFIX + "OTP 번호가 일치하지 않습니다."); + resObj.put("RES", "FAIL"); + resObj.put("MSG", "OTP 번호가 일치하지 않습니다."); + return resObj; + } + } + + if ("POINT_DEPOSIT".equals(point.getVendor())) { + // 관리자 지급 + String tranId = "POINT_DEPOSIT-" + loginSite.getSiteId() + ">" + point.getTargetSiteId() + "-" + time; + String betId = "포인트 수동지급-" + loginSite.getSiteId() + ">" + point.getTargetSiteId() + "-" + time; + point.setSiteIdx((long) loginSite.getSiteIdx()); + point.setSiteId(loginSite.getSiteId()); + point.setTranId(tranId); + point.setBetId(betId); + point.setPrePointAmt(sitePoint); + + } else if ("POINT_WITHDRAW".equals(point.getVendor())) { + // 관리자 회수 + if (sitePoint < point.getPointAmt().intValue()) { + resObj.put("RES", "FAIL"); + resObj.put("MSG", "해당 에이젼시의 포인트가 부족합니다."); + return resObj; + } + String tranId = "POINT_WITHDRAW-" + loginSite.getSiteId() + ">" + point.getTargetSiteId() + "-" + time; + String betId = "포인트 수동회수-" + loginSite.getSiteId() + ">" + point.getTargetSiteId() + "-" + time; + point.setSiteIdx((long) loginSite.getSiteIdx()); + point.setSiteId(loginSite.getSiteId()); + point.setTranId(tranId); + point.setBetId(betId); + point.setPrePointAmt(sitePoint); + int pointAmt = point.getPointAmt().intValue() * -1; + point.setPointAmt(pointAmt); + } + + log.info(LOG_PREFIX + "CreditPoint Info : " + point.toString()); + int result = creditService.insertPoint(point); + log.info(LOG_PREFIX + "creditService.insertPoint() result : " + result); + + resObj.put("RES", "SUCCESS"); + + return resObj; + } + +} diff --git a/src/main/java/com/bb/admin/controller/GuestController.java b/src/main/java/com/bb/admin/controller/GuestController.java new file mode 100644 index 0000000..dfe9f19 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/GuestController.java @@ -0,0 +1,401 @@ +package com.bb.admin.controller; + +import java.text.SimpleDateFormat; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.annotation.Secured; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +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.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.exception.ApiException; +import com.bb.model.ApiResponse; +import com.bb.model.BetParam; +import com.bb.model.NexusApiInfo; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.model.TplusApiInfo; +import com.bb.service.SiteService; +import com.bb.service.StatService; +import com.bb.util.PagingUtil; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import okhttp3.OkHttpClient; + +@Slf4j +@Controller +@RequestMapping(value = "/guest") +public class GuestController { + + @Autowired + StatService statService; + + @Autowired + SiteService siteService; + + @GetMapping("/guestLogin") + public String guestLogin(HttpServletRequest request, ModelMap model) throws Exception { + + return "admin/guestLogin"; + } + + @GetMapping("/simpleReport") + //@Secured("ROLE_GUEST") + public String simpleReport(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + final String LOG_PREFIX = "#-SUPER::simpleReport::::"; + + if(search.getSearchSiteId() != null && !"".equals(search.getSearchSiteId())) { + Site targetSite = siteService.getSiteSimpleDetail(search); + if(targetSite != null) { + search.setSearchSiteIdx(targetSite.getSiteIdx()); + } else { + search.setSearchSiteIdx(0); + } + } else { + search.setSearchSiteIdx(0); + } + + String toDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + String startDay = ""; + String endDay = ""; + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + startDay = toDay; + search.setStartDate(startDay); + } else { + startDay = search.getStartDate().substring(0, 10); + } + + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + endDay = toDay; + search.setEndDate(endDay); + } else { + endDay = search.getEndDate().substring(0, 10); + } + + log.info(LOG_PREFIX+ "startDay::"+startDay); + log.info(LOG_PREFIX+ "endDay::"+endDay); + log.info(LOG_PREFIX+ "toDay::"+toDay); + search.setSiteDispYn("N"); + if(startDay.equals(toDay) || endDay.equals(toDay)) { + search.setSiteDispYn("Y"); + } + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + PageFormVO pageVo= new PageFormVO(); + int totalCount = statService.getAgentReportCnt(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(30); + commonForm.setTatal_list_count(totalCount); + pageVo = PagingUtil.setPageUtil(commonForm); + search.setLimit(pageVo.getLimit()); + search.setOffset(pageVo.getOffset()); + search.setTatal_list_count(totalCount); + + model.put("pageInfo", pageVo.getPagination()); + } + log.info(LOG_PREFIX+ "search.getStartDate {}", search.getStartDate()); + log.info(LOG_PREFIX+ "search.getEndDate {}", search.getEndDate()); + log.info(LOG_PREFIX+ "search.getSearchSiteIdx {}", search.getSearchSiteIdx()); + log.info(LOG_PREFIX+ "search.getPage {}", search.getPage()); + log.info(LOG_PREFIX+ "search.getLimit {}", search.getLimit()); + log.info(LOG_PREFIX+ "search.getOffset {}", search.getOffset()); + + List siteList = statService.getAgentReportList(search); + model.put("siteList", siteList); + HashMap siteTotal = statService.getAgentReportTotal(search); + model.put("siteTotal", siteTotal); + + return "admin/simpleReport"; + } + + /* + @ResponseBody + @GetMapping(value="/betDetail") + public ApiResponse betDetail(HttpServletRequest request, @RequestParam("betId") String betId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-CMN::BET-DETAIL::"+betId+":::"; + JSONObject saveObj = null; + JSONArray saveObjs = null; + boolean isSaveEvoDetail = false; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site ==null) { + throw new ApiException("1000", "accessDinied"); + } + + // 결과보내기 + String dType = "detail_0"; + + HashMap betInfo = transService.getBetInfoByBetId(param); + log.info(LOG_PREFIX+ "betInfo {}", betInfo); + + if(betInfo == null) betInfo = transService.getSiteBetByRefIdFromOld(param); + log.info(LOG_PREFIX+ "betInfo_OLD {}", betInfo); + + if(betInfo != null) { + String category = betInfo.get("vendorCetegory").toString(); + log.info(LOG_PREFIX+ "Game category : " + category); + + if("svendor".equals(betInfo.get("vendorCode").toString()) + || "pink".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_6"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + apiResponse.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + JSONObject dataObj = svendorService.getDetail(LOG_PREFIX, betInfo); + if(dataObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + if(dataObj.has("gameDetail") && !dataObj.isNull("gameDetail")) { + String detailType = StringUtils.getType(dataObj.getString("gameDetail")); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = dataObj.getString("gameDetail"); + apiResponse.put("detail", detailUrl); + } else if(detailType.equals("JSON")) { + dType = "detail_6"; + apiResponse.put("dType", dType); + JSONObject detailObj = dataObj.getJSONObject("gameDetail"); + saveObj = detailObj; + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } + + } else if("nexus".equals(betInfo.get("vendorCode").toString()) || "ace2".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_3"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + apiResponse.put("detail", detailMap); + } + } else if("prime".equals(betInfo.get("vendorCode").toString()) + || "dpcore".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::PRIME =========="); + dType = "detail_9"; + apiResponse.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + apiResponse.put("detail", detailMap); + } + } else if("onix".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::ONIX =========="); + dType = "detail_8"; + apiResponse.put("dType", dType); + + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + + // Step 1: Get round info from /csapi/getBetting + String bettingUrl = apiBaseUrl + "/csapi/getBetting"; + JSONObject bettingBody = new JSONObject(); + bettingBody.put("userid", betInfo.get("memberId").toString()); + bettingBody.put("sdate", "2000-01-01 00:00:00.000"); + bettingBody.put("edate", "2099-12-31 23:59:59.999"); + bettingBody.put("pagesize", "1"); + bettingBody.put("gameid", "0"); + bettingBody.put("tranid", param.getBetId()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Url: " + bettingUrl); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Body: " + bettingBody.toString()); + + try { + ResponseEntity bettingRes = webClient.post() + .uri(bettingUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(bettingBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(bettingRes != null && bettingRes.getBody() != null) { + JSONObject bettingObj = new JSONObject(bettingRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Response: " + bettingObj.toString()); + + int bettingResult = bettingObj.getInt("result"); + if(bettingResult == 1 && bettingObj.has("data")) { + JSONArray dataArray = bettingObj.getJSONArray("data"); + if(dataArray.length() > 0) { + JSONObject betData = dataArray.getJSONObject(0); + String round = betData.has("round") ? betData.getString("round") : ""; + String realround = betData.has("realround") ? betData.getString("realround") : ""; + String game = betData.has("game") ? betData.getString("game") : ""; + + log.info(LOG_PREFIX+ "ONIX::Betting Info - round: " + round + ", realround: " + realround + ", game: " + game); + + // Step 2: Get detail link from /api/apigamedetail.aspx + if(!round.isEmpty() && !realround.isEmpty()) { + String gtype = game.toLowerCase().contains("slot") || game.toLowerCase().contains("prg") ? "sxprg" : "apievo"; + String detailUrl = apiBaseUrl + "/api/apigamedetail.aspx?gtype=" + gtype; + + if(gtype.equals("apievo")) { + detailUrl += "&round=" + round + "&realround=" + realround; + } else { + detailUrl += "&roundid=" + realround; + } + + log.info(LOG_PREFIX+ "ONIX::Step2 Detail Url: " + detailUrl); + + try { + ResponseEntity detailRes = webClient.get() + .uri(detailUrl) + .retrieve() + .toEntity(String.class) + .block(); + + if(detailRes != null && detailRes.getBody() != null) { + JSONObject detailObj = new JSONObject(detailRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::Step2 Detail Response: " + detailObj.toString()); + + if(detailObj.getInt("result") == 1 && detailObj.has("link")) { + isSaveEvoDetail = true; + JSONObject saveData = new JSONObject(); + saveData.put("link", detailObj.getString("link")); + saveData.put("betInfo", betData); + saveObj = saveData; + + HashMap detailMap = new HashMap<>(); + detailMap.put("link", detailObj.getString("link")); + detailMap.put("betInfo", new Gson().fromJson(betData.toString(), HashMap.class)); + apiResponse.put("detail", detailMap); + log.info(LOG_PREFIX+ "ONIX::Detail loaded successfully"); + } else { + apiResponse.put("detail", "betId is not exist"); + String msg = detailObj.has("msg") ? detailObj.getString("msg") : "Unknown error"; + log.error(LOG_PREFIX+ "ONIX::Detail Error: " + msg); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } catch(Exception detailEx) { + log.error(LOG_PREFIX+ "ONIX::Detail Exception: " + detailEx.getMessage()); + apiResponse.put("detail", "betId is not exist"); + } + } else { + // No round info, use betting data only + isSaveEvoDetail = true; + saveObj = betData; + HashMap detailMap = new Gson().fromJson(betData.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + log.info(LOG_PREFIX+ "ONIX::Betting data loaded (no round info)"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + String errorMsg = bettingObj.has("msg") ? bettingObj.getString("msg") : "Unknown error"; + log.error(LOG_PREFIX+ "ONIX::Betting Error: " + errorMsg); + } + } else { + apiResponse.put("detail", "betId is not exist"); + log.error(LOG_PREFIX+ "ONIX::Betting Response is null"); + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "ONIX::Betting HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "ONIX::Betting status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "ONIX::Betting response body : " + e.getResponseBodyAsString()); + JSONObject errorJson = new JSONObject(e.getResponseBodyAsString()); + String errorMsg = errorJson.has("msg") ? errorJson.getString("msg") : "Betting API error"; + log.error(LOG_PREFIX+ "ONIX::Betting error : " + errorMsg); + throw new ApiException("P209", errorMsg); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ReadTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "ONIX::Betting InterruptedException::" + rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch(Exception e) { + log.error(LOG_PREFIX+ "ONIX::Betting Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + } else if("bet_radar".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::BET_RADAR =========="); + // bet_radar_log 테이블에서 조회 + String radarLogJson = siteService.getMergedBetRadarLog(param.getBetId()); + if(radarLogJson != null && !radarLogJson.isEmpty()) { + log.info(LOG_PREFIX+ "bet_radar_log found, returning merged json"); + dType = "detail_radar"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(radarLogJson, HashMap.class); + apiResponse.put("detail", detailMap); + apiResponse.success(); + return apiResponse; + } + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + + apiResponse.success(); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + */ +} diff --git a/src/main/java/com/bb/admin/controller/InsuranceController.java b/src/main/java/com/bb/admin/controller/InsuranceController.java new file mode 100644 index 0000000..1992200 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/InsuranceController.java @@ -0,0 +1,424 @@ +package com.bb.admin.controller; + +import java.util.HashMap; +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.bb.model.CommonParamAdmin; +import com.bb.model.Insure; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.util.PagingUtil; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@Controller +@RequestMapping(value = "/insurance") +@PreAuthorize("hasRole('ADMIN')") +public class InsuranceController { + + @Autowired + SiteService siteService; + + @Autowired + CreditService creditService; + + + @RequestMapping("/addProc") + public @ResponseBody JSONObject addProc( HttpServletRequest request, ModelMap model, Insure insure) throws Exception { + JSONObject obj = new JSONObject(); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + insure.setSiteId(loginSite.getSiteId()); + insure.setSiteIdx(loginSite.getSiteIdx()); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + + + List vederRateList = siteService.getVenderRateList(loginSite); + if(vederRateList.size() <0) { + obj.put("RES", "FAIL"); + obj.put("MSG", "보험설정을 해주세요."); + return obj; + }else{ + + System.out.println(":dddddddddd" + vederRateList.get(0).get("insureUpSiteIdx")); + if(vederRateList.get(0).get("insureUpSiteIdx") == null || "null".equals(vederRateList.get(0).get("insureUpSiteIdx"))) { + + obj.put("RES", "FAIL"); + obj.put("MSG", "보험적용컴퍼니가 없습니다. 보험설정을 해주세요."); + return obj; + } + } + + insure.setSiteIdx(loginSite.getSiteIdx()); + insure.setSiteId(loginSite.getSiteId()); + insure.setInsureUpSiteId(vederRateList.get(0).get("insureUpSiteId").toString()); + insure.setInsureUpSiteIdx(Long.parseLong(vederRateList.get(0).get("insureUpSiteIdx").toString())); + insure.setPreCreditAmt(siteCredit); + insure.setPreCreditPoint(sitePoint); + insure.setPreInsureAmt(insureAmt); + insure.setPreInsurePoint(insurePointAmt); + insure.setStatus("0"); + insure.setRegId(loginSite.getSiteId()); + + if("TRANIN".equals(insure.getInsureType())){ //충전 신청 + + + + + + }else if("TRANOUT".equals(insure.getInsureType())){ //환전 신청 + + + } + + + + + + int res = creditService.insertInsure(insure); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/updateStatus") + public @ResponseBody JSONObject updateStatus( HttpServletRequest request, ModelMap model, Insure insure) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + insure.setSiteId(loginSite.getSiteId()); + insure.setSiteIdx(loginSite.getSiteIdx()); + // 상위 보험 관련 데이터 가져오기 + + + JSONObject obj = new JSONObject(); + + int res = creditService.updateInsureStatus(insure); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + + + @GetMapping("/set") + public String index( HttpServletRequest request , ModelMap model) throws Exception { + System.out.println("index"); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + //상위 컴파니 불려오기 + + List flowList = siteService.getSiteFlow(loginSite); + model.put("flowList", flowList); + //벤더 리스트 rate 불러오기 + List vederRateList = siteService.getVenderRateList(loginSite); + + int uppersiteIdx = 0; + if(vederRateList.size()>0) { + + try { + uppersiteIdx = Integer.parseInt(vederRateList.get(0).get("insureUpSiteIdx").toString()); + }catch(Exception e) { + uppersiteIdx = 0; + + } + } + model.put("uppersiteIdx", uppersiteIdx); + + /*SELECT * FROM vendors_info vi + LEFT JOIN `site_rate_info` sri ON vi.vendorIdx = sri.vendorIdx + WHERE vi.delYn= 'N' AND vi.useYn ='Y' + AND sri.siteIdx = 1 + */ + model.put("vederRateList", vederRateList); + + return "admin/insuredSet"; + } + + @RequestMapping("/setSave") + public @ResponseBody JSONObject setSave( HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin ) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + + + + + JSONObject obj = new JSONObject(); + log.info(commonParamAdmin.toString()); + + for(int i=0;i() {}); + + siteService.saveVendorInsureRate(paramMap); + } + + + + + + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @GetMapping("/betList") + public String betList( HttpServletRequest request ,ModelMap model , @ModelAttribute("searchVO") SiteSearch search) throws Exception { + System.out.println("index"); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + + + + PageFormVO pageVo= new PageFormVO(); + + if("up".equals(search.getUpdown())){ + search.setSiteIdx(loginSite.getSiteIdx()); + }else if("down".equals(search.getUpdown())){ + search.setUpperSiteId(loginSite.getSiteId()); + } + search.setSearchType("BET"); + search.setStatus("1"); + + int totalCount = creditService.getInsureListCnt(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(15); + } 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); + + model.put("pageInfo", pageVo.getPagination()); + } + + + List list = creditService.getInsureList(search); + + model.put("list", list); + + return "admin/insuredBetList"; + } + + @GetMapping("/history") + public String history( HttpServletRequest request , ModelMap model) throws Exception { + System.out.println("index"); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + + return "admin/insuredHistory"; + } + + @GetMapping("/apply") + public String apply( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + System.out.println("index"); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo= new PageFormVO(); + search.setUpperSiteId(loginSite.getSiteId()); + search.setSearchType("TRANIN"); + + if(search.getStatus()==null || "".equals(search.getStatus())) { + search.setStatus("0"); + } + + + int totalCount = creditService.getInsureListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + model.put("searchVO", search); + List list = creditService.getInsureList(search); + model.put("list", list); + + // model.addObject("long", Long.parseLong(null)); + + + return "admin/insuredApply"; + } + + + + + + @GetMapping("/exchange") + public String exchange( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + System.out.println("index"); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + PageFormVO pageVo= new PageFormVO(); + search.setUpperSiteId(loginSite.getSiteId()); + search.setSearchType("TRANOUT"); + + if(search.getStatus()==null || "".equals(search.getStatus())) { + search.setStatus("0"); + } + + + int totalCount = creditService.getInsureListCnt(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); + + model.put("pageInfo", pageVo.getPagination()); + } + + model.put("searchVO", search); + List list = creditService.getInsureList(search); + model.put("list", list); + + // model.addObject("long", Long.parseLong(null)); + + + return "admin/insuredExchange"; + } + + +} diff --git a/src/main/java/com/bb/admin/controller/MainController.java b/src/main/java/com/bb/admin/controller/MainController.java new file mode 100644 index 0000000..2053d66 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/MainController.java @@ -0,0 +1,274 @@ +package com.bb.admin.controller; + +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.reactive.function.client.WebClient; + +import com.bb.model.ApiTestVO; +import com.bb.model.Site; +import com.bb.service.SiteService; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@Controller +@RequestMapping(value = "") +public class MainController { + + @Autowired + SiteService siteService; + + @Autowired + private WebClient webClient; // 싱글톤 WebClient 주입 + + @GetMapping("/") + @PreAuthorize("permitAll()") + public String first(HttpServletRequest request, ModelMap model) throws Exception { + System.out.println("error/404"); + + String code = request.getParameter("code"); + model.put("code", code); + + return "error/404"; + } + + @GetMapping("/lg") + public String loginsForm(HttpServletRequest request, ModelMap model) throws Exception { + System.out.println("login"); + + return "admin/lg"; + } + + @GetMapping("/index") + @PreAuthorize("hasRole('ADMIN')") + public String index(HttpServletRequest request, ModelMap model) throws Exception { + + System.out.println("index"); + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + // long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", 0); + // HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", 0); + // pot 정보 가져오기 + + // long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + // long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", 0); + model.put("insurePointAmt", 0); + + Map dashInfo = siteService.getDashInfo(loginSite); // 베팅정보 + Map dashInfo2 = siteService.getDashInfo2(loginSite); // 하부에이전수 수. + + model.put("dashInfo", dashInfo); + model.put("dashInfo2", dashInfo2); + + return "admin/index"; + } + + @GetMapping("/mypage") + @PreAuthorize("hasRole('ADMIN')") + public String mypage(HttpServletRequest request, ModelMap model) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + log.info("underSiteCredit" + underSiteCredit); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + Site mypageInfo = siteService.getSiteInfoMypage(loginSite); + model.put("mypageInfo", mypageInfo); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + return "admin/mypage"; + } + + @RequestMapping("/mypage/pwdUpdate") + @PreAuthorize("hasRole('ADMIN')") + public @ResponseBody JSONObject pwdUpdate(HttpServletRequest request, ModelMap model, Site site) throws Exception { + JSONObject obj = new JSONObject(); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + site.setUpperSiteId(loginSite.getSiteId()); + site.setUpperSiteIdx(loginSite.getSiteIdx()); + + Map siteParam = new HashMap(); + siteParam.put("siteId", loginSite.getSiteId()); + siteParam.put("sitePass", site.getNowPass()); + + Site checkSite = siteService.getSiteBypassword(siteParam); + + if (checkSite == null) { + + obj.put("RES", "FAIL"); + obj.put("MSG", "현재 비밀번호를 확인해주세요."); + return obj; + } else { + siteParam.put("newPass", site.getNewPass()); + siteService.updatePass(siteParam); + } + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @RequestMapping("/mypage/siteUpdate") + @PreAuthorize("hasRole('ADMIN')") + public @ResponseBody JSONObject siteUpdate(HttpServletRequest request, ModelMap model, Site site) throws Exception { + JSONObject obj = new JSONObject(); + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + site.setSiteId(loginSite.getSiteId()); + final String LOG_PREFIX = "#-super::mySiteUpdate:::"; + + String siteKey = loginSite.getSiteKey(); + if ("new".equals(site.getSiteKey())) { + siteKey = makeApiKey(loginSite.getSiteId()); + site.setSiteKey(siteKey); + } + + log.info(LOG_PREFIX + "Site Info: " + site.toString()); + log.info(LOG_PREFIX + "Site IP: " + site.getSiteIp()); + siteService.siteUpdate(LOG_PREFIX, site); + + obj.put("RES", "SUCCESS"); + obj.put("DATA", siteKey); + + return obj; + } + + @RequestMapping(value = "/manual/apiTest") + @PreAuthorize("hasRole('ADMIN')") + public @ResponseBody JSONObject apiTest(HttpServletRequest request, ModelMap model, ApiTestVO param) + throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + JSONObject obj = new JSONObject(); + + try { + log.info("##### API Test 시작: {}", param.toString()); + + String apiUrl = param.getApiUrl(); + + // 1. 전송할 바디 데이터 구성 + JSONObject paraJson = new JSONObject(); + paraJson.put("userId", param.getUserId()); + paraJson.put("nickName", param.getNickName()); + paraJson.put("userIp", param.getUserIp()); + paraJson.put("balance", param.getBalance()); + + // 빈 값이 아닐 때만 파라미터 추가 + if (param.getVendorKey() != null && !"".equals(param.getVendorKey())) + paraJson.put("vendorKey", param.getVendorKey()); + if (param.getBetId() != null && !"".equals(param.getBetId())) + paraJson.put("betId", param.getBetId()); + if (param.getStartDate() != null && !"".equals(param.getStartDate())) + paraJson.put("startDate", param.getStartDate()); + if (param.getEndDate() != null && !"".equals(param.getEndDate())) + paraJson.put("endDate", param.getEndDate()); + if (param.getGameKey() != null && !"".equals(param.getGameKey())) + paraJson.put("gameKey", param.getGameKey()); + if (param.getIsMobile() != null && !"".equals(param.getIsMobile())) + paraJson.put("isMobile", param.getIsMobile()); + if (param.getLanguage() != null && !"".equals(param.getLanguage())) + paraJson.put("language", param.getLanguage()); + + // 2. WebClient를 이용한 호출 (동기 방식 .block()) + String responseBody = webClient.post().uri(apiUrl).contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON).header("User-Agent", "PostmanRuntime/7.28.4") + .header("Authorization", loginSite.getSiteKey()) + // 토큰이 있을 경우에만 헤더 추가 + .headers(headers -> { + if (param.getToken() != null && !"".equals(param.getToken())) { + headers.add("token", param.getToken()); + } + }).bodyValue(paraJson.toString()).retrieve().bodyToMono(String.class).block(); // 응답이 올 때까지 대기 + + // 3. 응답 결과 처리 + JSONObject resJson = JSONObject.fromObject(responseBody); + + obj.put("RES", "SUCCESS"); + obj.put("DATA", resJson); + + log.info("##### API Test 응답 완료: {}", resJson.toString()); + + } catch (Exception e) { + log.error("##### API Test 에러 발생: {}", e.toString()); + e.printStackTrace(); + obj.put("RES", "FAIL"); + obj.put("MESSAGE", e.getMessage()); // 에러 메시지도 화면에 전달 + } + + return obj; + } + + @GetMapping("/limit") + @PreAuthorize("hasRole('ADMIN')") + public String limit(HttpServletRequest request, ModelMap model) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + return "admin/limit"; + } + + private String makeApiKey(String param) { + + int n = 10; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'N', 'O', 'P', 'Q', + 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', + 'z' }; + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + } +} diff --git a/src/main/java/com/bb/admin/controller/ManualController.java b/src/main/java/com/bb/admin/controller/ManualController.java new file mode 100644 index 0000000..da97856 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/ManualController.java @@ -0,0 +1,246 @@ +package com.bb.admin.controller; + +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.service.SiteService; + +import lombok.extern.slf4j.Slf4j; + + + +@Slf4j +@Controller +@RequestMapping(value = "") +@PreAuthorize("hasRole('ADMIN')") +public class ManualController { + + @Autowired + SiteService siteService; + + + + @GetMapping("/manual") + public String devmanual( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + return "admin/api_doc"; + + } + + @GetMapping("/apiLogdev") + public String devApiLog( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiLogdev"; + + } + + @GetMapping("/apiIntro") + public String devIntro( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiIntro"; + + } + + @GetMapping("/apiGame") + public String devGame( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiGame"; + + } + + @GetMapping("/apiGamelist") + public String devGamelist( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiGamelist"; + + } + + @GetMapping("/apiPartner") + public String devPartner( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiPartner"; + + } + + @GetMapping("/apiBetList") + public String devBetlist( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + + return "admin/apiBetList"; + + } + + @GetMapping("/apiBetDetail") + public String devBetDe( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiBetDetail"; + + } + + @GetMapping("/apiBetCallback") + public String devBetCall( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiBetCallback"; + + } + + + @GetMapping("/apiBetInfo1") + public String devInfo1( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiBetInfo1"; + + } + + @GetMapping("/apiBetInfo2") + public String devInfo2( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + search.setSiteIdx(loginSite.getSiteIdx()); + + return "admin/apiBetInfo2"; + + } + + + + @GetMapping({"/apiAuth"}) + public String apiAuth( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + return "admin/apiAuth"; + + } + + @GetMapping({"/apiPlay"}) + public String apiPlay( HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + + + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + return "admin/apiPlay"; + + } + +} diff --git a/src/main/java/com/bb/admin/controller/StatController.java b/src/main/java/com/bb/admin/controller/StatController.java new file mode 100644 index 0000000..f775aa0 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/StatController.java @@ -0,0 +1,339 @@ +package com.bb.admin.controller; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; + +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.service.SiteService; +import com.bb.service.StatService; +import com.bb.util.DateTimeUtils; +import com.bb.util.PagingUtil; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequestMapping(value = "/stat") +@PreAuthorize("hasRole('ADMIN')") +public class StatController { + + @Autowired + StatService statService; + + @Autowired + SiteService siteService; + + @GetMapping("") + public String loginForm(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + + System.out.println(search.toString()); + List list = statService.getSiteDailyReportList(search); + model.put("list", list); + + System.out.println(list.size()); + + return "admin/stat"; + } + + @GetMapping("/bottom") + public String index(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setUpperSiteIdx(loginSite.getSiteIdx()); + + List list = statService.getBottomSiteDailyReportList(search); + model.put("list", list); + return "admin/statBottom"; + } + + @GetMapping("/pot") + public String mypage(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + String currDate = DateTimeUtils.getYyyymmdd(); + String yyyy = currDate.substring(0, 4); + search.setSiteIdx(loginSite.getSiteIdx()); + int mm = Integer.parseInt(currDate.substring(4, 6)); + if (search.getStartDate() == null) { + + String mmm = currDate.substring(4, 6); + model.put("yyyy", yyyy); + model.put("mmm", mmm); + search.setStartDate(mmm); + } else { + + String mmm = search.getStartDate(); + model.put("yyyy", yyyy); + model.put("mmm", mmm); + search.setStartDate(mmm); + + } + + // model.put("", yyyy); + model.put("mm", mm); + + HashMap list = statService.getMonthCredit(search); + model.put("list", list); + + return "admin/statPot"; + } + + @GetMapping("/casino") + public String statCasino(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List list = statService.getVendorDailyReportList(search); + model.put("list", list); + + return "admin/statCasino"; + } + + @GetMapping("/user") + public String statUser(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + + if (search.getStartDate() == null || "".equals(search.getStartDate())) { + String currDate = DateTimeUtils.getYyyymm(); + search.setStartDate(currDate.substring(0, 4)); + search.setEndDate(currDate.substring(4, 6)); + } + + System.out.println(search.getStartDate()); + List list = statService.getUserDailyReportList(search); + + model.put("list", list); + model.put("list", list); + + return "admin/statUser"; + } + + @GetMapping("/date") + public String statDate(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + + System.out.println(search.getStartDate()); + List list = statService.getUserReportSum(search); + model.put("list", list); + + return "admin/statDate"; + } + + @GetMapping("/agentReport") + public String agentReport(HttpServletRequest request, ModelMap model, @ModelAttribute("searchVO") SiteSearch search) + throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + final String LOG_PREFIX = "#-SUPER::agentReport::::"; + + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + search.setSiteId(loginSite.getSiteId()); + + if(search.getSearchSiteId() != null && !"".equals(search.getSearchSiteId())) { + Site targetSite = siteService.getSiteSimpleDetail(search); + if(targetSite != null) { + search.setSearchSiteIdx(targetSite.getSiteIdx()); + } else { + search.setSearchSiteIdx(0); + } + } else { + search.setSearchSiteIdx(0); + } + + String toDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + String startDay = ""; + String endDay = ""; + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + startDay = toDay; + search.setStartDate(startDay); + } else { + startDay = search.getStartDate().substring(0, 10); + } + + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + endDay = toDay; + search.setEndDate(endDay); + } else { + endDay = search.getEndDate().substring(0, 10); + } + + log.info(LOG_PREFIX+ "startDay::"+startDay); + log.info(LOG_PREFIX+ "endDay::"+endDay); + log.info(LOG_PREFIX+ "toDay::"+toDay); + search.setSiteDispYn("N"); + if(startDay.equals(toDay) || endDay.equals(toDay)) { + search.setSiteDispYn("Y"); + } + + 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(loginSite.getSiteLevel() > 0) { + search.setUpperSiteId(loginSite.getSiteId()); + } + + int totalCount = statService.getAgentReportCnt(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(30); + commonForm.setTatal_list_count(totalCount); + pageVo = PagingUtil.setPageUtil(commonForm); + search.setLimit(pageVo.getLimit()); + search.setOffset(pageVo.getOffset()); + search.setTatal_list_count(totalCount); + + model.put("pageInfo", pageVo.getPagination()); + } + log.info(LOG_PREFIX+ "search.getStartDate {}", search.getStartDate()); + log.info(LOG_PREFIX+ "search.getEndDate {}", search.getEndDate()); + log.info(LOG_PREFIX+ "search.getSearchSiteIdx {}", search.getSearchSiteIdx()); + log.info(LOG_PREFIX+ "search.getPage {}", search.getPage()); + log.info(LOG_PREFIX+ "search.getLimit {}", search.getLimit()); + log.info(LOG_PREFIX+ "search.getOffset {}", search.getOffset()); + + List siteList = statService.getAgentReportList(search); + model.put("siteList", siteList); + + return "admin/agentReport"; + } + +} diff --git a/src/main/java/com/bb/admin/controller/UserController.java b/src/main/java/com/bb/admin/controller/UserController.java new file mode 100644 index 0000000..fac52b6 --- /dev/null +++ b/src/main/java/com/bb/admin/controller/UserController.java @@ -0,0 +1,273 @@ +package com.bb.admin.controller; + +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.annotation.Secured; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.model.WithdrewRequest; +import com.bb.service.CreditService; +import com.bb.service.GsoftService; +import com.bb.service.SiteService; +import com.bb.service.TplusService; +import com.bb.util.PagingUtil; + +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + + + +@Slf4j +@Controller +@RequestMapping(value = "user") +@PreAuthorize("hasRole('ADMIN')") +public class UserController { + + @Autowired + SiteService siteService; + + @Autowired + TplusService tplusService; + + @Autowired + GsoftService gsoftService; + + @Autowired + CreditService creditService; + + @GetMapping("") + public String loginForm( HttpServletRequest request, ModelMap model , @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", 0); + model.put("siteCredit",siteCredit); + model.put("sitePoint", 0); + model.put("creditWait", 0); + model.put("insureAmt", 0); + model.put("insurePointAmt", 0); + + PageFormVO pageVo= new PageFormVO(); + log.info("#-SUPER::USER_DETAIL::Search : "+search.toString()); + + int totalCount = siteService.getSiteUserListCnt(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(100); + } 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); + + model.put("pageInfo", pageVo.getPagination()); + } + + List list = siteService.getSiteUserList(search); + model.put("list", list); + + return "admin/user"; + } + + + @GetMapping("/parseOnOff") + public @ResponseBody JSONObject parseOnOff(HttpServletRequest request, ModelMap model, @RequestParam("memberIdx") String memberIdx, @RequestParam("pStatus") String pStatus) throws Exception { + JSONObject obj = new JSONObject(); + + final String LOG_PREFIX = "#-Proc::Evo::parseOnOff:::"; + HashMap param = new HashMap<>(); + param.put("memberIdx", memberIdx); + param.put("parseEvoYn", pStatus); + log.info(LOG_PREFIX + "전체 사이트 파싱설정::" + param.toString() + "::START"); + + int result = siteService.updateParseEvoYn(param); + log.info(LOG_PREFIX + "updateParseEvoYn result::" + result + "::END"); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + + @GetMapping("/betlist") + public String index( HttpServletRequest request, ModelMap model , @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + + PageFormVO pageVo= new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + + + int totalCount = creditService.getSiteBetListCnt(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(15); + } 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); + + model.put("pageInfo", pageVo.getPagination()); + } + + + List list = creditService.getSiteBetList(search); + log.debug(""+list.size()); + model.put("list", list); + + + return "admin/betlist"; + } + + + @GetMapping("/transaction") + public String mypage( HttpServletRequest request, ModelMap model ) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + + return "admin/transactionList"; + } + + + @GetMapping("/payments") + public String limit( HttpServletRequest request, ModelMap model ) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + + return "admin/payments"; + } + + + @GetMapping("/std") + public String std ( HttpServletRequest request, ModelMap model , @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + model.put("underSiteCredit", underSiteCredit); + model.put("siteCredit", siteCredit); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + + List venderAcountList = siteService.getTrasferVendorList(); + + + for(HashMap vendor : venderAcountList) { + String balance ="0"; + vendor.put("balance", balance); + } + + model.put("list", venderAcountList); + + return "admin/std"; + } + + + @PostMapping("/withdrawAll") + public synchronized @ResponseBody JSONObject withdrawAll(HttpServletRequest request, ModelMap model, WithdrewRequest withdrewRequest) throws Exception { + log.warn( " member withdrawAll 시작" + withdrewRequest.toString() ); + JSONObject obj = new JSONObject(); + + List allMemberList = siteService.getAllMember2(); + for(HashMap member:allMemberList) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long reqAtL = System.currentTimeMillis(); + String reqAt = sdf.format(reqAtL); + } + + log.info( " member betCheck 끝" ); + obj.put("RES", "SUCCESS"); + return obj; + } + + +} diff --git a/src/main/java/com/bb/api/ApiAgentController.java b/src/main/java/com/bb/api/ApiAgentController.java new file mode 100644 index 0000000..909a82c --- /dev/null +++ b/src/main/java/com/bb/api/ApiAgentController.java @@ -0,0 +1,1273 @@ +package com.bb.api; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +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.reactive.function.client.WebClient; + +import com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.CommonParamAdmin; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SitePwdVO; +import com.bb.model.SiteSearch; +import com.bb.model.Vendor; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.service.StatService; +import com.bb.util.IPKit; +import com.bb.util.PagingUtil; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + + + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/agent") +public class ApiAgentController { + + + @Autowired + SiteService siteService; + + @Autowired + StatService statService; + + @Autowired + CreditService creditService; + + @Autowired + private final JwtManager jwtManager; + + @Autowired + private WebClient webClient; // 싱글톤 WebClient 주입 + + @ResponseBody + @PostMapping("/list") + public ApiResponse list( @RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::AGENT::list::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + org.codehaus.jettison.json.JSONObject reqObj = new org.codehaus.jettison.json.JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + PageFormVO pageVo= new PageFormVO(); + if(search.getUpperSiteId() == null || search.getUpperSiteId().equals("")) { + search.setUpperSiteId(tokenInfo.getSid()); + } + + search.setTopId(tokenInfo.getSid()); + + //아이디 + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + int totalCount = siteService.getSiteListCntForApi(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); + + data.put("pageInfo", pageVo); + } + + List siteList = siteService.getSiteListForApi(search); + data.put("siteList", siteList); + + List downSiteList = siteService.getMyDownSite(search); + data.put("downSiteList", downSiteList); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @GetMapping("/detail/{siteIdx}") + public ApiResponse detail( @RequestHeader String token, HttpServletRequest request, @PathVariable long siteIdx ) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info(tokenInfo.getSid()); + // 여기서 부터 로직 + SiteSearch search = new SiteSearch(); + log.info("siteIdx {}" , site.getSiteIdx()); + search.setUpperSiteId(""+site.getSiteId()); + + search.setSiteIdx(siteIdx); + search.setTopId(tokenInfo.getSid()); + + Site targetSite = siteService.getSiteDetailForApi(search); + data.put("targetSite", targetSite); + data.put("uppersiteIdx", site.getSiteIdx()); + + boolean isMyAgent = false; + List treeInfo = targetSite.getTreeInfo(); + for(HashMap item : treeInfo) { + if(tokenInfo.getSid().equals(item.get("upperSiteId").toString())) { + isMyAgent = true; + } + } + if(!isMyAgent) { + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + HashMap creditInfo = siteService.getCreditInfo(targetSite.getSiteId()); + data.put("creditInfo", creditInfo); + + List vederRateList = siteService.getVenderRateList(targetSite); + List vendorlist = siteService.getVendorListForApi(search); + SiteSearch mySearch = new SiteSearch(); + mySearch.setSiteIdx(site.getSiteIdx()); + List myVendorlist = siteService.getVendorListForApi(mySearch); + + data.put("vederRateList", vederRateList); + data.put("vendorlist", vendorlist); + data.put("myVendorlist", myVendorlist); + log.info("vederRateList {}", vederRateList.size()); + log.info("vederRateList {}", vederRateList); + + // TODO : 에이전트 상세 베팅통계 데이터 + + HashMap ydayBetInfo = statService.getYdayBetInfoBySite(targetSite); + log.info("ydayBetInfo {}", ydayBetInfo); + HashMap monthBetInfo = statService.getMonthBetInfoBySite(targetSite); + log.info("monthBetInfo {}", monthBetInfo); + data.put("ydayBetInfo", ydayBetInfo); // 어제 배팅통계 + data.put("monthBetInfo", monthBetInfo); // 이번달 배팅통계 + + + }catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + + } + + @ResponseBody + @GetMapping("/myInfo") + public ApiResponse myInfo( @RequestHeader String token, HttpServletRequest request) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info(tokenInfo.getSid()); + // 여기서 부터 로직 + SiteSearch search = new SiteSearch(); + log.info("siteIdx {}" , site.getSiteIdx()); + + + search.setSiteIdx(site.getSiteIdx()); + search.setTopId(tokenInfo.getSid()); + + Site targetSite = siteService.getSiteDetailForApi(search); + data.put("targetSite", targetSite); + data.put("uppersiteIdx", site.getSiteIdx()); + + HashMap creditInfo = siteService.getCreditInfo(targetSite.getSiteId()); + data.put("creditInfo", creditInfo); + + List vederRateList = siteService.getVenderRateList(targetSite); + List vendorlist = siteService.getVendorListForApi(search); + SiteSearch mySearch = new SiteSearch(); + mySearch.setSiteIdx(site.getSiteIdx()); + List myVendorlist = siteService.getVendorListForApi(mySearch); + + data.put("vederRateList", vederRateList); + data.put("vendorlist", vendorlist); + data.put("myVendorlist", myVendorlist); + log.info("vederRateList {}", vederRateList.size()); + log.info("vederRateList {}", vederRateList); + + // TODO : 에이전트 상세 베팅통계 데이터 + HashMap ydayBetInfo = statService.getYdayBetInfoBySite(targetSite); + HashMap monthBetInfo = statService.getMonthBetInfoBySite(targetSite); + data.put("ydayBetInfo", ydayBetInfo); // 어제 배팅통계 + data.put("monthBetInfo", monthBetInfo); // 이번달 배팅통계 + + + }catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + + } + + + + @ResponseBody + @GetMapping("/tree") + public ApiResponse tree( @RequestHeader String token, HttpServletRequest request ) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info(tokenInfo.getSid()); + + // 하위 사이트 여부체크 + Map checkDown = new HashMap(); + checkDown.put("me", site.getSiteId()); + checkDown.put("target", site.getSiteId()); + int downCnt = siteService.checkDownSite(checkDown); + if(downCnt ==0) { + apiResponse.setResultCode("99993"); + apiResponse.setResultMessage("agent is not valid"); + return apiResponse; + } + List treeList = siteService.getSiteTreeList(site.getSiteId()); + data.put("list", treeList); + + }catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + + } + + + @ResponseBody + @GetMapping("/tree/{siteId}") + public ApiResponse tree( @RequestHeader String token, HttpServletRequest request, @PathVariable String siteId ) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info(tokenInfo.getSid()); + + // 하위 사이트 여부체크 + Map checkDown = new HashMap(); + checkDown.put("me", site.getSiteId()); + checkDown.put("target", siteId); + int downCnt = siteService.checkDownSite(checkDown); + if(downCnt ==0) { + apiResponse.setResultCode("99993"); + apiResponse.setResultMessage("agent is not valid"); + return apiResponse; + } + List treeList = siteService.getSiteTreeList(siteId); + data.put("list", treeList); + + }catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + + } + + + @ResponseBody + @RequestMapping("/update") + public ApiResponse siteUpdate( @RequestHeader String token, HttpServletRequest request, ModelMap model, @RequestBody Site targetsite) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info(tokenInfo.getSid()); + // 여기서 부터 로직 + + targetsite.setUpperSiteId(site.getSiteId()); + targetsite.setUpperSiteIdx(site.getSiteIdx()); + targetsite.setSiteId(targetsite.getSiteId()); + + int myDownSiteCheck = siteService.getMyDownSiteCheck(targetsite); + if(myDownSiteCheck >0) { + apiResponse.setResultCode("10009"); + apiResponse.setResultMessage("not your bottom sites"); + return apiResponse; + } + siteService.siteUpdateForAPI(targetsite) ; + + + }catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + + + } + + + @ResponseBody + @RequestMapping("/updateSitePwd") + public ApiResponse updateSitePwd(HttpServletRequest request, @RequestHeader String token, @RequestBody SitePwdVO sitePwdVO) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::Agent::updateSitePwd::"+tokenInfo.getSid()+"::::"; + sitePwdVO.setSiteId(tokenInfo.getSid()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "SitePwdVO::"+sitePwdVO); + + int result = siteService.updateSitePwd(sitePwdVO); + log.info(LOG_PREFIX + "updateSitePwd result::"+result); + + if(result > 0) { + log.info(LOG_PREFIX + "Site password update succ"); + apiResponse.success(); + } else { + log.error(LOG_PREFIX + "Site password update fail"); + apiResponse.fail(); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @RequestMapping("/add") + public ApiResponse add(@RequestHeader String token, HttpServletRequest request, ModelMap model, @RequestBody Site addsite) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::AGENT_ADD::"+tokenInfo.getSid()+"::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(addsite); + org.codehaus.jettison.json.JSONObject reqObj = new org.codehaus.jettison.json.JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + log.info(tokenInfo.getSid()); + // 하부사이트 체크 + Site targetsite = new Site(); + targetsite.setUpperSiteId(site.getSiteId()); + targetsite.setUpperSiteIdx(site.getSiteIdx()); + targetsite.setSiteId(addsite.getUpperSiteId()); + + if(addsite.getIsTransfer() == null || "".equals(addsite.getIsTransfer())) { + addsite.setIsTransfer("N"); + } + + int myDownSiteCheck = siteService.getMyDownSiteCheck(targetsite); + if(myDownSiteCheck >0) { + apiResponse.setResultCode("10009"); + apiResponse.setResultMessage("not your bottom sites"); + return apiResponse; + } + + + addsite.setUpperSiteId(addsite.getUpperSiteId()); + addsite.setUpperSiteIdx(addsite.getUpperSiteIdx()); + addsite.setSiteKey(makeApiKey(addsite.getSiteId())); + log.info(LOG_PREFIX+ "addsite {}", addsite); + + Site dupSite = siteService.getSite(addsite); + + log.info(LOG_PREFIX+ "dupSite []", dupSite); + if(dupSite!=null) { + apiResponse.setResultCode("99990"); + apiResponse.setResultMessage("already siteId"); + return apiResponse; + + } else { + + Site upperSite = new Site(); + upperSite.setSiteId(addsite.getUpperSiteId()); + upperSite = siteService.getSite(upperSite); + + addsite.setSiteLevel(upperSite.getSiteLevel()+1); + siteService.addProcAPI(addsite); + } + + } catch(Exception e) { + log.error("#-API::AGENT_ADD::"+ e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + + + } + + /** + * 외부 API 호출 공통 프라이빗 메서드 (중복 코드 방지용) + */ + private void sendExternalRateChange(String url, String siteKey, String vendorName, Object vendorIdx, Object rate) { + try { + log.info("##### WebClient External Call Start ##### URL: {}", url); + + JSONObject paramBody = new JSONObject(); + paramBody.put("siteApiKey", siteKey); + paramBody.put("vendor", vendorName); + paramBody.put("vendorIdx", vendorIdx); + paramBody.put("gameRate", rate); + + String response = webClient.post() + .uri(url) + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(paramBody.toString()) + .retrieve() + .bodyToMono(String.class) + .block(); // 동기 방식 + + log.info("##### WebClient Response: {}", response); + } catch (Exception e) { + log.error("##### WebClient Call Error: {}", e.getMessage()); + } + } + + @RequestMapping("/creditRateSave") + public @ResponseBody JSONObject creditRateSave(HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + Site site = siteService.getSiteInfoAPI(request); + String siteUrl = site.getSiteCbUrl() + "/gameRateChange"; + + JSONObject obj = new JSONObject(); + log.info("#-CREDIT_RATE_SAVE::: CommonParamAdmin: {}", commonParamAdmin.toString()); + + for (int i = 0; i < commonParamAdmin.getParamlist().length; i++) { + JSONObject paramData = commonParamAdmin.getParamlist()[i]; + paramData.put("siteIdx", commonParamAdmin.getParam().get("targetSiteIdx")); + paramData.put("insureUpSiteIdX", loginSite.getSiteIdx()); + + ObjectMapper mapper = new ObjectMapper(); + HashMap paramMap = mapper.readValue(paramData.toString(), new TypeReference() {}); + + if (paramMap.get("vendorIdx") != null) { + int type = Integer.parseInt(paramMap.get("type").toString()); + if (type == 0) { + siteService.saveVendorRate(paramMap); + } + siteService.saveSvcr(paramMap, 1); // 1로 고정된 비즈니스 로직 유지 + + if (type == 0) { + String siteKey = siteService.getSiteKey(paramMap); + String vendorName = siteService.getVendorTitle(paramMap); + sendExternalRateChange(siteUrl, siteKey, vendorName, paramMap.get("vendorIdx"), paramMap.get("rate")); + } + + if (loginSite.getSiteLevel() < 1) { + siteService.updateVendorUseYn(paramMap); + } + } + } + obj.put("RES", "SUCCESS"); + return obj; + } + + @RequestMapping("/saveSvcr") + public @ResponseBody JSONObject saveSvcr(HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + JSONObject obj = new JSONObject(); + ObjectMapper mapper = new ObjectMapper(); + HashMap paramMap = mapper.readValue(commonParamAdmin.getParam().toString(), new TypeReference() {}); + + String siteUrl = loginSite.getSiteCbUrl() + "/gameRateChange"; + + if (paramMap.get("vendorIdx") != null) { + paramMap.put("siteIdx", commonParamAdmin.getParam().get("targetSiteIdx")); + int type = Integer.parseInt(paramMap.get("type").toString()); + + if (type == 0) { + siteService.saveVendorRate(paramMap); + } + siteService.saveSvcr(paramMap, type); + + if (type == 0) { + String siteKey = siteService.getSiteKey(paramMap); + String vendorName = siteService.getVendorTitle(paramMap); + sendExternalRateChange(siteUrl, siteKey, vendorName, paramMap.get("vendorIdx"), paramMap.get("rate")); + } + + if (loginSite.getSiteLevel() < 1) { + siteService.updateVendorUseYn(paramMap); + } + } + obj.put("RES", "SUCCESS"); + return obj; + } + + @RequestMapping("/saveSvcrAll") + public @ResponseBody JSONObject saveSvcrAll(HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + JSONObject obj = new JSONObject(); + String siteUrl = loginSite.getSiteCbUrl() + "/gameRateChange"; + + for (int i = 0; i < commonParamAdmin.getParamlist().length; i++) { + JSONObject paramData = commonParamAdmin.getParamlist()[i]; + paramData.put("siteIdx", commonParamAdmin.getParam().get("targetSiteIdx")); + + ObjectMapper mapper = new ObjectMapper(); + HashMap paramMap = mapper.readValue(paramData.toString(), new TypeReference() {}); + + if (paramMap.get("vendorIdx") != null) { + int type = Integer.parseInt(paramMap.get("type").toString()); + if (type == 0) { + siteService.saveVendorRate(paramMap); + } + siteService.saveSvcr(paramMap, type); + + if (type == 0) { + String siteKey = siteService.getSiteKey(paramMap); + String vendorName = siteService.getVendorTitle(paramMap); + sendExternalRateChange(siteUrl, siteKey, vendorName, paramMap.get("vendorIdx"), paramMap.get("rate")); + } + + if (loginSite.getSiteLevel() < 1) { + siteService.updateVendorUseYn(paramMap); + } + } + } + obj.put("RES", "SUCCESS"); + return obj; + } + + @RequestMapping("/siteVenderUpdate") + public @ResponseBody JSONObject siteVenderUpdate(HttpServletRequest request, ModelMap model, Vendor vendor) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site) authentication.getDetails(); + + Site site = siteService.getSiteInfoAPI(request); + String siteUrl = site.getSiteCbUrl() + "/gameRateChange"; + + JSONObject obj = new JSONObject(); + vendor.setSiteIdx(loginSite.getSiteIdx()); + + try { + siteService.siteVenderUpdate(vendor); + + String siteKey = loginSite.getSiteKey(); + String vendorName = vendor.getVendorCode(); + + // 벤더 이름 가공 로직 + if (vendorName.startsWith("gsoft_")) vendorName = "gsoft"; + if (vendorName.startsWith("trump_")) vendorName = "trump"; + if (vendorName.startsWith("ppk_")) vendorName = "ppk"; + if (vendorName.startsWith("sg_")) vendorName = "sg"; + + String venderRate = siteService.siteVenderRate(vendor); + + // 공통 메서드 호출 + sendExternalRateChange(siteUrl, siteKey, vendorName, vendor.getVendorIdx(), venderRate); + + obj.put("RES", "SUCCESS"); + } catch (Exception e) { + log.error("#-SITE_VENDOR_UPDATE Error: {}", e.toString()); + obj.put("RES", "FAIL"); + } + return obj; + } + + @RequestMapping("/insurePoinRateSave") + public @ResponseBody JSONObject insurePointRateSave( HttpServletRequest request, ModelMap model, CommonParamAdmin commonParamAdmin ) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + + + + + JSONObject obj = new JSONObject(); + log.info(commonParamAdmin.toString()); + + for(int i=0;i() {}); + + siteService.saveVendorInsurePointRate(paramMap); + } + + + + + + + obj.put("RES", "SUCCESS"); + + return obj; + } + + + @RequestMapping("/addProc") + public @ResponseBody JSONObject addProc( HttpServletRequest request, ModelMap model, Site site) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + site.setUpperSiteId(loginSite.getSiteId()); + site.setUpperSiteIdx(loginSite.getSiteIdx()); + + + + site.setSiteKey(makeApiKey(site.getSiteId())); + + + JSONObject obj = new JSONObject(); + + log.info(site.toString()); + siteService.addProcAPI(site); + + obj.put("RES", "SUCCESS"); + + return obj; + } + + @GetMapping("/transaction") + public String transaction( HttpServletRequest request , ModelMap model , @ModelAttribute("searchVO") SiteSearch search) throws Exception { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowtime); + } + + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + if(search.getSearchSiteId() == null || "".equals(search.getSearchSiteId())) { + search.setSearchSiteId(loginSite.getSiteId()); + } + + + PageFormVO pageVo= new PageFormVO(); + search.setSiteId(loginSite.getSiteId()); + search.setSiteIdx(loginSite.getSiteIdx()); + + + int totalCount = creditService.getSiteTranListCnt(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(30); + } 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); + + model.put("pageInfo", pageVo); + } + + + List list = creditService.getSiteTranList(search); + log.debug(""+list.size()); + model.put("list", list); + + List downSiteList = siteService.getMyDownSite(search); + model.put("downSiteList", downSiteList); + + + return "admin/transaction"; + } + + + @GetMapping("/gamelink") + public String gamelink( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List mylist = siteService.getSiteVendorListForApi(search); + + + List vendorlist = siteService.getVendorListForApi(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorlist); + + return "admin/gamelink"; + } + + @GetMapping("/venderset") + public String venderset( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List mylist = siteService.getSiteVendorListForApi(search); + + + List vendorlist = siteService.getVendorListForApi(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorlist); + + return "admin/venderset"; + } + + @GetMapping("/gameCompanySet") + public String gameCompanySet( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List mylist = siteService.getSiteVendorListForApi(search); + + + List vendorlist = siteService.getVendorListForApi(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorlist); + + return "admin/gameCompanySet"; + } + + @GetMapping("/gameSet") + public String gameSet( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List mylist = siteService.getSiteVendorListForApi(search); + + + List vendorlist = siteService.getVendorListForApi(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorlist); + + return "admin/gameSet"; + } + + + + @GetMapping("/betlimit") + public String betlimit( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List mylist = siteService.getSiteVendorListForApi(search); + + search.setSearchType("union"); + search.setSiteIdx(loginSite.getSiteIdx()); + List vendorMaplist = siteService.getVendorMapList(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorMaplist); + + return "admin/betlimit"; + } + + @RequestMapping("/betlimitUpdate") + public @ResponseBody JSONObject betlimitUpdate( HttpServletRequest request, ModelMap model, Vendor vendor) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + + JSONObject obj = new JSONObject(); + + vendor.setSiteIdx(loginSite.getSiteIdx()); + try { + siteService.siteVenderLobbyUpdate(vendor); + + obj.put("RES", "SUCCESS"); + }catch(Exception e) { + System.out.print(e.toString()); + obj.put("RES", "FAIL"); + } + return obj; + } + + @GetMapping("/gamemanage") + public String gameManage( HttpServletRequest request , ModelMap model, @ModelAttribute("searchVO") SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + model.put("loginSite", loginSite); + long siteCredit = siteService.getSiteCredit(loginSite.getSiteId()); + long underSiteCredit = siteService.getUnderSiteCredit(loginSite.getSiteId()); + long sitePoint = siteService.getSitePoint(loginSite.getSiteId()); + model.put("sitePoint", sitePoint); + model.put("siteCredit", siteCredit); + model.put("underSiteCredit", underSiteCredit); + HashMap creditWait = siteService.getCreditWait(loginSite.getSiteIdx()); + model.put("creditWait", creditWait); + + long insureAmt = siteService.getInsureAmt(loginSite.getSiteId()); + long insurePointAmt = siteService.getInsurePointAmt(loginSite.getSiteId()); + model.put("insureAmt", insureAmt); + model.put("insurePointAmt", insurePointAmt); + + search.setSiteIdx(loginSite.getSiteIdx()); + List mylist = siteService.getSiteVendorListForApi(search); + + + List vendorlist = siteService.getVendorListForApi(search); + + model.put("mylist", mylist); + model.put("vendorlist", vendorlist); + + return "admin/gameManage"; + } + + + @RequestMapping("/getMyDownSite") + public @ResponseBody JSONObject getMyDownSite( HttpServletRequest request, ModelMap model, SiteSearch search) throws Exception { + + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + Site loginSite = (Site)authentication.getDetails(); + + JSONObject obj = new JSONObject(); + search.setSiteId(loginSite.getSiteId()); + + try { + List downSiteList = siteService.getMyDownSite(search); + obj.put("downSiteList", downSiteList); + obj.put("RES", "SUCCESS"); + }catch(Exception e) { + obj.put("RES", "FAIL"); + } + return obj; + } + + + + + + + + + private String makeApiKey(String param) { + + int n = 24; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return sb.toString(); + + + } + + +} diff --git a/src/main/java/com/bb/api/ApiBlockGameController.java b/src/main/java/com/bb/api/ApiBlockGameController.java new file mode 100644 index 0000000..fd2575c --- /dev/null +++ b/src/main/java/com/bb/api/ApiBlockGameController.java @@ -0,0 +1,734 @@ +package com.bb.api; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +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 com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.BlockGameVO; +import com.bb.model.CmnSearch; +import com.bb.model.Game; +import com.bb.model.GameVo; +import com.bb.model.Site; +import com.bb.service.CommonService; +import com.bb.service.SettingService; +import com.bb.service.SiteService; +import com.bb.util.IPKit; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/block") +public class ApiBlockGameController { + + @Autowired + SiteService siteService; + + @Autowired + SettingService settingService; + + @Autowired + CommonService commonService; + + @Autowired + private final JwtManager jwtManager; + + + @ResponseBody + @PostMapping("/vendor-selectbox") + public ApiResponse vendorSelectBox(@RequestHeader String token, HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::vendorSelectBox::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + List> list = settingService.getBlockVendorSelectBoxList("CASINO"); + log.info(LOG_PREFIX + "Block-Vendor-SelectBoxList cnt::"+list.size()); + + responseData.put("list", list); + + + } catch(Exception e) { + e.printStackTrace(); + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/table-selectbox") + public ApiResponse tableSelectBox(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::tableSelectBox::"+tokenInfo.getSid()+"::::"; + search.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "Request Param::"+search); + List> list = settingService.getBlockTableSelectBoxList(search); + log.info(LOG_PREFIX + "Block-Table-SelectBoxList cnt::"+list.size()); + + responseData.put("list", list); + + + } catch(Exception e) { + e.printStackTrace(); + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/table-list") + public ApiResponse blockTableList(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::blockTableList::"+tokenInfo.getSid()+"::::"; + search.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "Request Param::"+search); + List> list = settingService.getBlockTableSelectBoxList(search); + List> mylist = new ArrayList>(); + String blockTableIds = settingService.getBlockTableIds(search); + if(blockTableIds == null) blockTableIds = ""; + //String[] blockTableArr = blockTableIds.split("|"); + for(HashMap item : list) { + String tableId = item.get("tableId").toString()+"|"; + if(!"".equals(blockTableIds) && blockTableIds.contains(tableId)) { + mylist.add(item); + } + } + + responseData.put("list", mylist); + responseData.put("blockTableIds", blockTableIds); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/table/save") + public ApiResponse blockGameSave(@RequestHeader String token, HttpServletRequest request, @RequestBody BlockGameVO param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::blockGameSave::"+tokenInfo.getSid()+"::::"; + param.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "BF::BlockGameVO::"+param); + CmnSearch search = new CmnSearch(); + search.setSiteIdx(param.getSiteIdx()); + search.setVendorIdx(param.getVendorIdx()); + + String vendorTitle = settingService.getVendorTitle(search); + if(vendorTitle == null || "".equals(vendorTitle)) { + log.error(LOG_PREFIX+ "VendorTitle is not null or empty"); + apiResponse.setResultCode("99"); + apiResponse.setResultMessage("VendorTitle is not null or empty"); + return apiResponse; + } + param.setVendorTitle(vendorTitle); + + String blockTableIds = settingService.getBlockTableIds(search); + if(blockTableIds == null) blockTableIds = ""; + log.info(LOG_PREFIX +"BF::blockTableIds::" + blockTableIds); + + if(!"".equals(blockTableIds) && blockTableIds.contains(param.getBlockTableId())) { + log.info(LOG_PREFIX + param.getBlockTableId() + " is already saved"); + } else { + blockTableIds = blockTableIds + param.getBlockTableId() + "|"; + log.info(LOG_PREFIX +"AF::blockTableIds::" + blockTableIds); + param.setBlockTableIds(blockTableIds); + log.info(LOG_PREFIX +"AF::BlockGameVO::" + param); + int saveResult = settingService.blockTableIdSave(param); + log.info(LOG_PREFIX + "blockTableIdSave result::"+saveResult); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/table/delete") + public ApiResponse blockGameDelete(@RequestHeader String token, HttpServletRequest request, @RequestBody BlockGameVO param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::blockGameDelete::"+tokenInfo.getSid()+"::::"; + param.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "BF::BlockGameVO::"+param); + CmnSearch search = new CmnSearch(); + search.setSiteIdx(param.getSiteIdx()); + search.setVendorIdx(param.getVendorIdx()); + + String vendorTitle = settingService.getVendorTitle(search); + if(vendorTitle == null || "".equals(vendorTitle)) { + log.error(LOG_PREFIX+ "VendorTitle is not null or empty"); + apiResponse.setResultCode("99"); + apiResponse.setResultMessage("VendorTitle is not null or empty"); + return apiResponse; + } + param.setVendorTitle(vendorTitle); + + String blockTableIds = settingService.getBlockTableIds(search); + if(blockTableIds == null) blockTableIds = ""; + log.info(LOG_PREFIX +"BF::blockTableIds::" + blockTableIds); + + if(!"".equals(blockTableIds) && !blockTableIds.contains(param.getBlockTableId())) { + log.info(LOG_PREFIX + param.getBlockTableId() + " is not found"); + } else { + blockTableIds = blockTableIds.replace(param.getBlockTableId() + "|", ""); + log.info(LOG_PREFIX +"AF::blockTableIds::" + blockTableIds); + param.setBlockTableIds(blockTableIds); + log.info(LOG_PREFIX +"AF::BlockGameVO::" + param); + int saveResult = settingService.blockTableIdSave(param); + log.info(LOG_PREFIX + "blockTableIdSave result::"+saveResult); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/slotVendors") + public ApiResponse slotVendors(@RequestHeader String token, HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::slotVendors::"+tokenInfo.getSid()+"::::"; + + CmnSearch search = new CmnSearch(); + search.setSiteIdx((long) site.getSiteIdx()); + search.setCategory("SLOT"); + + // 여기서 부터 로직 + List> list = settingService.getBlockVendorSelectBoxList2(search); + + responseData.put("list", list); + + + } catch(Exception e) { + e.printStackTrace(); + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/slotGames") + public ApiResponse slotGames(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::slotGames::"+tokenInfo.getSid()+"::::"; + search.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "Request Param::"+search); + + HashMap apiInfo = commonService.getVendorApiInfo(search); + log.info(LOG_PREFIX + "API Info::"+apiInfo.toString()); + // -- grand, svendor, tower, tplus + List gameList = null; + if("grand".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getGrandGameList(LOG_PREFIX, apiInfo); + } else if("svendor".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getSevenGameList(LOG_PREFIX, apiInfo); + } else if("pink".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getSevenGameList(LOG_PREFIX, apiInfo); + } else if("tplus".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getTplusGameList(LOG_PREFIX, apiInfo); + } else if("pracp".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getPracpGameList(LOG_PREFIX, apiInfo); + } else if("nexus".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getNexusGameList(LOG_PREFIX, apiInfo); + } else if("ace2".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getNexusGameList(LOG_PREFIX, apiInfo); + } else if("tower".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getTowerGameList(LOG_PREFIX, apiInfo); + } else { + log.error(LOG_PREFIX + "Not found vendor company"); + } + + responseData.put("list", gameList); + + } catch(Exception e) { + e.printStackTrace(); + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/slot-block/gameList") + public ApiResponse slotBlockGameList(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::slotGames::"+tokenInfo.getSid()+"::::"; + search.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "Request Param::"+search); + + HashMap apiInfo = commonService.getVendorApiInfo(search); + log.info(LOG_PREFIX + "API Info::"+apiInfo.toString()); + // -- grand, svendor, tower, tplus + List gameList = null; + if("grand".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getGrandGameList(LOG_PREFIX, apiInfo); + } else if("svendor".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getSevenGameList(LOG_PREFIX, apiInfo); + } else if("pink".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getSevenGameList(LOG_PREFIX, apiInfo); + } else if("tplus".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getTplusGameList(LOG_PREFIX, apiInfo); + } else if("pracp".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getPracpGameList(LOG_PREFIX, apiInfo); + } else if("nexus".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getNexusGameList(LOG_PREFIX, apiInfo); + } else if("ace2".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getNexusGameList(LOG_PREFIX, apiInfo); + } else if("tower".equals(apiInfo.get("vendorTitle").toString())) { + gameList = commonService.getTowerGameList(LOG_PREFIX, apiInfo); + } else { + log.error(LOG_PREFIX + "Not found vendor company"); + } + + List mylist = new ArrayList<>(); + String blockTableIds = settingService.getBlockTableIds(search); + if(blockTableIds == null) blockTableIds = ""; + //String[] blockTableArr = blockTableIds.split("|"); + for(GameVo item : gameList) { + String tableId = item.getGameId()+"|"; + if(!"".equals(blockTableIds) && blockTableIds.contains(tableId)) { + mylist.add(item); + } + } + + responseData.put("list", mylist); + responseData.put("blockTableIds", blockTableIds); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/slot-block/save") + public ApiResponse SlotBlockSave(@RequestHeader String token, HttpServletRequest request, @RequestBody BlockGameVO param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::SlotBlockSave::"+tokenInfo.getSid()+"::::"; + param.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "BF::BlockGameVO::"+param); + CmnSearch search = new CmnSearch(); + search.setSiteIdx(param.getSiteIdx()); + search.setVendorIdx(param.getVendorIdx()); + + String blockTableIds = settingService.getBlockTableIds(search); + if(blockTableIds == null) blockTableIds = ""; + log.info(LOG_PREFIX +"BF::blockTableIds::" + blockTableIds); + + if(!"".equals(blockTableIds) && blockTableIds.contains(param.getBlockTableId())) { + log.info(LOG_PREFIX + param.getBlockTableId() + " is already saved"); + } else { + blockTableIds = blockTableIds + param.getBlockTableId() + "|"; + log.info(LOG_PREFIX +"AF::blockTableIds::" + blockTableIds); + param.setBlockTableIds(blockTableIds); + log.info(LOG_PREFIX +"AF::BlockGameVO::" + param); + int saveResult = settingService.blockTableIdSave(param); + log.info(LOG_PREFIX + "blockTableIdSave result::"+saveResult); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/slot-block/delete") + public ApiResponse SlotBlockDelete(@RequestHeader String token, HttpServletRequest request, @RequestBody BlockGameVO param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::BLOCK::SlotBlockDelete::"+tokenInfo.getSid()+"::::"; + param.setSiteIdx((long) site.getSiteIdx()); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "BF::BlockGameVO::"+param); + CmnSearch search = new CmnSearch(); + search.setSiteIdx(param.getSiteIdx()); + search.setVendorIdx(param.getVendorIdx()); + + String blockTableIds = settingService.getBlockTableIds(search); + if(blockTableIds == null) blockTableIds = ""; + log.info(LOG_PREFIX +"BF::blockTableIds::" + blockTableIds); + + if(!"".equals(blockTableIds) && !blockTableIds.contains(param.getBlockTableId())) { + log.info(LOG_PREFIX + param.getBlockTableId() + " is not found"); + } else { + blockTableIds = blockTableIds.replace(param.getBlockTableId() + "|", ""); + log.info(LOG_PREFIX +"AF::blockTableIds::" + blockTableIds); + param.setBlockTableIds(blockTableIds); + log.info(LOG_PREFIX +"AF::BlockGameVO::" + param); + int saveResult = settingService.blockTableIdSave(param); + log.info(LOG_PREFIX + "blockTableIdSave result::"+saveResult); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + +} diff --git a/src/main/java/com/bb/api/ApiCallbackSpeedTestController.java b/src/main/java/com/bb/api/ApiCallbackSpeedTestController.java new file mode 100644 index 0000000..75c2adb --- /dev/null +++ b/src/main/java/com/bb/api/ApiCallbackSpeedTestController.java @@ -0,0 +1,301 @@ +package com.bb.api; + +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Valid; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +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.RestController; + +import com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.CallbackTestResult; +import com.bb.model.Site; +import com.bb.service.CallBackTestService; +import com.bb.service.SiteService; +import com.bb.util.IPKit; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/spdtest") +public class ApiCallbackSpeedTestController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackTestService callBackService; + + @Autowired + private final JwtManager jwtManager; + + private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + private static final SecureRandom random = new SecureRandom(); + + public static List generateRandomStrings(int stringLength, int count) { + Set uniqueStrings = new HashSet<>(); + + while (uniqueStrings.size() < count) { + StringBuilder sb = new StringBuilder(stringLength); + for (int i = 0; i < stringLength; i++) { + sb.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length()))); + } + + // 시간 기반으로 중복 확률 줄이기 (나노타임 일부 추가) + sb.append(Long.toHexString(System.nanoTime()).substring(0, 4)); + + uniqueStrings.add(sb.toString()); + } + + return new ArrayList<>(uniqueStrings); + } + + + @GetMapping("/testBalance") + public ApiResponse testBalance(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + log.error("#-API::SPD_TEST::testBalance::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("#-API::SPD_TEST::testBalance::site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + if(token == null || token.equals("")) { + log.error("#-API::SPD_TEST::testBalance::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization token check"); + return apiResponse; + } + + try { + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SPD_TEST::testBalance::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + log.info(LOG_PREFIX+ "callBackService.getTestBalance() START--"); + JSONObject responseObj = callBackService.getTestBalance(LOG_PREFIX, memberId, token, request.getHeader("Authorization").toString()); + log.info(LOG_PREFIX+ "callBackService.getTestBalance() END--"); + + JSONObject dataObj = responseObj.getJSONObject("data"); + JSONArray resultArray = dataObj.getJSONArray("resultList"); + for(int i=0; i= 0) ) { + log.error("#-API::SPD_TEST::testCasino::site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + if(token == null || token.equals("")) { + log.error("#-API::SPD_TEST::testCasino::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization token check"); + return apiResponse; + } + + try { + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SPD_TEST::testCasino::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + log.info(LOG_PREFIX+ "callBackService.getTestChangeBalance() START--"); + JSONObject responseObj = callBackService.getTestChangeBalance(LOG_PREFIX, memberId, token, request.getHeader("Authorization").toString()); + log.info(LOG_PREFIX+ "callBackService.getTestChangeBalance() END--"); + + JSONObject dataObj = responseObj.getJSONObject("data"); + JSONArray resultArray = dataObj.getJSONArray("resultList"); + for(int i=0; i= 0) ) { + log.error("#-API::SPD_TEST::testSlot::site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + if(token == null || token.equals("")) { + log.error("#-API::SPD_TEST::testSlot::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization token check"); + return apiResponse; + } + + try { + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SPD_TEST::testSlot::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + log.info(LOG_PREFIX+ "callBackService.getTestChangeBalanceSlot() START--"); + JSONObject responseObj = callBackService.getTestChangeBalanceSlot(LOG_PREFIX, memberId, token, request.getHeader("Authorization").toString()); + log.info(LOG_PREFIX+ "callBackService.getTestChangeBalanceSlot() END--"); + + JSONObject dataObj = responseObj.getJSONObject("data"); + JSONArray resultArray = dataObj.getJSONArray("resultList"); + for(int i=0; i= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CB_TEST::testBalance::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + JSONObject responseObj = callBackService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + if(resultCode == 0) { + result.setIndex(1); + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + } else { + result.setIndex(1); + result.setStatus("FAIL"); + result.setMsg("[balance] 실패"); + } + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/testBet") + public ApiResponse testBet(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CB_TEST::testBet::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + int betAmt = 100; + int winAmt = 200; + + // 2-1 call balance + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + JSONObject responseObj = callBackService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + if(resultCode == 0) { + result.setIndex(1); + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = responseObj.getInt("balance"); + } else { + result.setIndex(1); + result.setStatus("FAIL"); + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+ctms+memberId; + String tranId = "D"+site.getSiteIdx()+ctms+memberId; + + // 2-2 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(2); + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 2-3 call bet 중복 + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 98) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(3); + result.setStatus("SUCCESS"); + result.setMsg("[bet 중복] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[bet 중복] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[bet 중복] 실패: 배팅중복 시 result_code=98 입니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 2-4 call win + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(4); + result.setStatus("SUCCESS"); + result.setMsg("[win] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[win] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[win] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/testBetOver") + public ApiResponse testBetOver(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CB_TEST::testBetOver::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + + // 3-1 call balance + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + JSONObject responseObj = callBackService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + if(resultCode == 0) { + result.setIndex(1); + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = responseObj.getInt("balance"); + } else { + result.setIndex(1); + result.setStatus("FAIL"); + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+ctms+memberId; + String tranId = "D"+site.getSiteIdx()+ctms+memberId; + + + int betAmt = balance + 100; + // 3-2 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 80) { + int balanceAfter = balance; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(2); + result.setStatus("SUCCESS"); + result.setMsg("[bet over] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet over] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet over] 실패: 배팅금 초과 시 result_code=80 입니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/testWin") + public ApiResponse testWin(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CB_TEST::testWin::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + int betAmt = 100; + int winAmt = 200; + + // 4-1 call balance + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + JSONObject responseObj = callBackService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + if(resultCode == 0) { + result.setIndex(1); + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = responseObj.getInt("balance"); + } else { + result.setIndex(1); + result.setStatus("FAIL"); + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+ctms+memberId; + String tranId = "D"+site.getSiteIdx()+ctms+memberId; + + // 4-2 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(2); + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 4-3 call win + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(3); + result.setStatus("SUCCESS"); + result.setMsg("[win] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[win] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[win] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 4-4 call win 중복 + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 98) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(4); + result.setStatus("SUCCESS"); + result.setMsg("[win 중복] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[win 중복] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[win 중복] 실패: 결과중복 시 result_code=98 입니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/testCancel") + public ApiResponse testCancel(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CB_TEST::testCancel::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + int betAmt = 100; + int winAmt = 100; + + // 5-1 call balance + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + JSONObject responseObj = callBackService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + if(resultCode == 0) { + result.setIndex(1); + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = responseObj.getInt("balance"); + } else { + result.setIndex(1); + result.setStatus("FAIL"); + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+ctms+memberId; + String tranId = "D"+site.getSiteIdx()+ctms+memberId; + + // 5-2 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(2); + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 5-3 call Cancel + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 1); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(3); + result.setStatus("SUCCESS"); + result.setMsg("[cancel] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[cancel] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[cancel] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 5-4 call Cancel 중복 + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 98) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(4); + result.setStatus("SUCCESS"); + result.setMsg("[cancel 중복] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[cancel 중복] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[cancel 중복] 실패: 결과중복 시 result_code=98 입니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/testAdjust") + public ApiResponse testAdjust(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CB_TEST::testAdjust::"+tokenInfo.getSid()+"::"; + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + int betAmt = 100; + int winAmt = 200; + int adjustAmt1 = 50; + int adjustAmt2 = -50; + + // 6-1 call balance + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + JSONObject responseObj = callBackService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + if(resultCode == 0) { + result.setIndex(1); + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = responseObj.getInt("balance"); + } else { + result.setIndex(1); + result.setStatus("FAIL"); + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+ctms+memberId; + String tranId = "D"+site.getSiteIdx()+ctms+memberId; + + // 6-2 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(2); + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(2); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 6-3 call win + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(3); + result.setStatus("SUCCESS"); + result.setMsg("[win] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[win] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(3); + result.setStatus("FAIL"); + result.setMsg("[win] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 6-4 call adjust 잔액증가 + ctms = System.currentTimeMillis(); + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "adjust"); + requestBody.put("debit", 0); + requestBody.put("credit", adjustAmt1); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt + adjustAmt1; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(4); + result.setStatus("SUCCESS"); + result.setMsg("[adjust 잔액증가] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[adjust 잔액증가] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(4); + result.setStatus("FAIL"); + result.setMsg("[adjust 잔액증가] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 6-5 call adjust 잔액증가 중복 + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 98) { + int balanceAfter = balance - betAmt + winAmt + adjustAmt1; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(5); + result.setStatus("SUCCESS"); + result.setMsg("[adjust 잔액증가 중복] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(5); + result.setStatus("FAIL"); + result.setMsg("[adjust 잔액증가 중복] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + balance = responseObj.getInt("balance"); + } else { + result.setIndex(5); + result.setStatus("FAIL"); + result.setMsg("[adjust 잔액증가 중복] 실패: 결과중복 시 result_code=98 입니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + + ctms = System.currentTimeMillis(); + betId = "B"+site.getSiteIdx()+ctms+memberId; + tranId = "D"+site.getSiteIdx()+ctms+memberId; + + // 6-6 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(6); + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(6); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(6); + result.setStatus("FAIL"); + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 6-7 call win + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(7); + result.setStatus("SUCCESS"); + result.setMsg("[win] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(7); + result.setStatus("FAIL"); + result.setMsg("[win] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(7); + result.setStatus("FAIL"); + result.setMsg("[win] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 6-8 call adjust 잔액감소 + ctms = System.currentTimeMillis(); + tranId = "C"+site.getSiteIdx()+ctms+memberId; + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", tranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "nexus"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "adjust"); + requestBody.put("debit", 0); + requestBody.put("credit", adjustAmt2); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 0) { + int balanceAfter = balance - betAmt + winAmt + adjustAmt2; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(8); + result.setStatus("SUCCESS"); + result.setMsg("[adjust] 잔액감소 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(8); + result.setStatus("FAIL"); + result.setMsg("[adjust] 잔액감소 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(8); + result.setStatus("FAIL"); + result.setMsg("[adjust] 잔액감소 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + // 6-9 call adjust 잔액감소 중복 + responseObj = callBackService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + if(resultCode == 98) { + int balanceAfter = balance - betAmt + winAmt + adjustAmt2; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setIndex(9); + result.setStatus("SUCCESS"); + result.setMsg("[adjust 중복] 잔액감소 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + } else { + result.setIndex(9); + result.setStatus("FAIL"); + result.setMsg("[adjust 중복] 잔액감소 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + } else { + result.setIndex(9); + result.setStatus("FAIL"); + result.setMsg("[adjust 중복] 잔액감소 실패: 결과중복 시 result_code=98 입니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + return apiResponse; + } + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + +} diff --git a/src/main/java/com/bb/api/ApiCommonController.java b/src/main/java/com/bb/api/ApiCommonController.java new file mode 100644 index 0000000..d03ded5 --- /dev/null +++ b/src/main/java/com/bb/api/ApiCommonController.java @@ -0,0 +1,635 @@ +package com.bb.api; + +import java.nio.charset.Charset; +import java.security.MessageDigest; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Controller; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.GetMapping; +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.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; +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.BanGameSearch; +import com.bb.model.CmnSearch; +import com.bb.model.Site; +import com.bb.service.CommonService; +import com.bb.service.SiteService; +import com.bb.util.IPKit; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/cmn") +public class ApiCommonController { + + @Autowired + SiteService siteService; + + @Autowired + CommonService commonService; + + @Autowired + WebClient webClient; + + @Autowired + private final JwtManager jwtManager; + + @ResponseBody + @PostMapping("/code/category") + public ApiResponse gameCategoryList(@RequestHeader String token, HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if (site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if (!(site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) + || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0)) { + log.error("site.getSiteIp(" + site.getSiteIp() + "), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CMN::gameCategoryList::" + tokenInfo.getSid() + "::::"; + + // 여기서 부터 로직 + log.info(LOG_PREFIX); + + List> list = commonService.getGameCategoryList(); + responseData.put("list", list); + + } catch (Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @PostMapping("/code/vendor") + public ApiResponse gameVendorList(@RequestHeader String token, HttpServletRequest request, + @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if (site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if (!(site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) + || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0)) { + log.error("site.getSiteIp(" + site.getSiteIp() + "), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CMN::gameVendorList::" + tokenInfo.getSid() + "::::"; + + // 여기서 부터 로직 + log.info(LOG_PREFIX); + + List> list = commonService.getGameVendorList(search); + responseData.put("list", list); + + } catch (Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @GetMapping("/banGameSet/{vendorTitle}/{vendorIdx}/{skin}") + public ApiResponse banGameSetByGet(@RequestHeader String token, HttpServletRequest request, + @PathVariable("vendorTitle") String vendorTitle, @PathVariable("vendorIdx") Long vendorIdx, + @PathVariable("skin") String skin) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if (site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if (!(site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) + || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0)) { + log.error("site.getSiteIp(" + site.getSiteIp() + "), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CMN::banGameSetByGet::" + tokenInfo.getSid() + "::::"; + + BanGameSearch search = new BanGameSearch(); + search.setVendorTitle(vendorTitle); + search.setVendorIdx(vendorIdx); + search.setSkin(skin); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "BanGameSearch : " + search.toString()); + + if (search.getVendorTitle() == null || "".equals(search.getVendorTitle())) { + apiResponse.setResultCode("-1"); + apiResponse.setResultMessage("vendorTitle is not empty"); + return apiResponse; + } + + List> banGameList = commonService.getBanGameList(search); + if (banGameList == null || banGameList.size() == 0) { + apiResponse.setResultCode("-2"); + apiResponse.setResultMessage("banGameList empty"); + return apiResponse; + } + + log.info(LOG_PREFIX + "BanGameSearch : " + banGameList.toString()); + + if ("nexus".equals(search.getVendorTitle())) { + HashMap apiInfo = banGameList.get(0); + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiAgentId = apiInfo.get("apiAgentId").toString(); + String apiKey = apiInfo.get("apiSecretKey").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + for (HashMap item : banGameList) { + String apiVendorKey = item.get("apiVendorCode").toString(); + String vendorCetegory = item.get("vendorCetegory").toString(); + + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", apiVendorKey); + if (vendorCetegory.equals("CASINO")) { + if (search.getSkin() == null || search.getSkin().equals("")) + search.setSkin("B"); + bodyObj.put("skin", search.getSkin()); + } else if (vendorCetegory.equals("SLOT")) { + bodyObj.put("skin", "SLOT"); + bodyObj.put("type", "Slot"); + search.setSkin(""); + } else { + + } + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX + "bodyJson::" + bodyJson); + + String hashCode = getHashCode(LOG_PREFIX, bodyJson, apiKey); + headers.set("hash", hashCode); + headers.set("agent", apiAgentId); + log.info(LOG_PREFIX + "HttpHeaders::" + headers.toString()); + + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiBaseUrl + "/games"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", apiVendorKey); + if (vendorCetegory.equals("CASINO")) { + params.add("skin", search.getSkin()); + } else if (vendorCetegory.equals("SLOT")) { + params.add("skin", "SLOT"); + params.add("type", "Slot"); + } else { + + } + + try { + String responseBody = webClient.post().uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)).bodyValue(params).retrieve() + .bodyToMono(String.class).block(); + + JSONObject resObj = new JSONObject(responseBody); + if (resObj.getInt("code") == 0) { + JSONArray games = resObj.getJSONArray("games"); + int length = games.length(); + + for (int i = 0; i < length; i++) { + JSONObject objGame = games.getJSONObject(i); + JSONObject objName = objGame.getJSONObject("names"); + + String gameType = objGame.getString("type"); + String gameId = objGame.getString("id"); + String gameKey = objGame.getString("key"); + String gameTitleEn = objName.getString("en"); + String gameTitleKo = objName.getString("ko"); + + item.put("banGameType", gameType); + item.put("banGameId", gameId); + item.put("banGameName", gameTitleEn + "||" + gameTitleKo); + item.put("banGameNameEng", gameTitleEn); + item.put("banGameKey", gameKey); + item.put("skin", search.getSkin()); + + log.info(LOG_PREFIX + "item : " + item.toString()); + int result = commonService.insertBanGameInfo(item); + log.info(LOG_PREFIX + "insertBanGameInfo result : " + result); + /* + * if(apiVendorKey.equals("evolution_casino")) { result = + * commonService.insertNexusGameInfo(item); log.info(LOG_PREFIX+ + * "insertNexusGameInfo result : " + result); } + */ + } + + } else { + apiResponse.setResultCode("-99"); + apiResponse.setResultMessage("api fail"); + return apiResponse; + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException : " + e.getMessage()); + throw new ApiException("E901", "API call failed"); + } catch (WebClientRequestException e) { + log.error(LOG_PREFIX + "WebClientRequestException : " + e.getMessage()); + throw new ApiException("E902", "Network error"); + } + } + + } else if ("ace2".equals(search.getVendorTitle())) { + HashMap apiInfo = banGameList.get(0); + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiAgentId = apiInfo.get("apiAgentId").toString(); + String apiKey = apiInfo.get("apiSecretKey").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + for (HashMap item : banGameList) { + String apiVendorKey = item.get("apiVendorCode").toString(); + String vendorCetegory = item.get("vendorCetegory").toString(); + + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", apiVendorKey); + if (vendorCetegory.equals("CASINO")) { + if (search.getSkin() == null || search.getSkin().equals("")) + search.setSkin("B"); + bodyObj.put("skin", search.getSkin()); + } else if (vendorCetegory.equals("SLOT")) { + bodyObj.put("skin", "SLOT"); + bodyObj.put("type", "Slot"); + search.setSkin(""); + } else { + + } + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX + "bodyJson::" + bodyJson); + + String hashCode = getHashCode(LOG_PREFIX, bodyJson, apiKey); + headers.set("hash", hashCode); + headers.set("agent", apiAgentId); + log.info(LOG_PREFIX + "HttpHeaders::" + headers.toString()); + + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiBaseUrl + "/games"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", apiVendorKey); + if (vendorCetegory.equals("CASINO")) { + params.add("skin", search.getSkin()); + } else if (vendorCetegory.equals("SLOT")) { + params.add("skin", "SLOT"); + params.add("type", "Slot"); + } else { + + } + + try { + String responseBody = webClient.post().uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)).bodyValue(params).retrieve() + .bodyToMono(String.class).block(); + + JSONObject resObj = new JSONObject(responseBody); + if (resObj.getInt("code") == 0) { + JSONArray games = resObj.getJSONArray("games"); + int length = games.length(); + + for (int i = 0; i < length; i++) { + JSONObject objGame = games.getJSONObject(i); + JSONObject objName = objGame.getJSONObject("names"); + + String gameType = objGame.getString("type"); + String gameId = objGame.getString("id"); + String gameKey = objGame.getString("key"); + String gameTitleEn = objName.getString("en"); + String gameTitleKo = objName.getString("ko"); + + item.put("banGameType", gameType); + item.put("banGameId", gameId); + item.put("banGameName", gameTitleEn + "||" + gameTitleKo); + item.put("banGameNameEng", gameTitleEn); + item.put("banGameKey", gameKey); + item.put("skin", search.getSkin()); + + log.info(LOG_PREFIX + "item : " + item.toString()); + int result = commonService.insertBanGameInfo(item); + log.info(LOG_PREFIX + "insertBanGameInfo result : " + result); + /* + * if(apiVendorKey.equals("evolution_casino")) { result = + * commonService.insertNexusGameInfo(item); log.info(LOG_PREFIX+ + * "insertNexusGameInfo result : " + result); } + */ + } + + } else { + apiResponse.setResultCode("-99"); + apiResponse.setResultMessage("api fail"); + return apiResponse; + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException : " + e.getMessage()); + throw new ApiException("E901", "API call failed"); + } catch (WebClientRequestException e) { + log.error(LOG_PREFIX + "WebClientRequestException : " + e.getMessage()); + throw new ApiException("E902", "Network error"); + } + } + + } else if ("dpcore".equals(search.getVendorTitle())) { + HashMap apiInfo = banGameList.get(0); + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiAgentId = apiInfo.get("apiAgentId").toString(); + String apiKey = "Bearer " + apiInfo.get("apiSecretKey").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", apiKey); + String gameUrl = apiBaseUrl + "/api/gameList"; + + for (HashMap item : banGameList) { + String apiVendorKey = item.get("apiVendorCode").toString(); + JSONObject prams = new JSONObject(); + + log.info(LOG_PREFIX + "DPCORE::Game List Url: " + gameUrl); + log.info(LOG_PREFIX + "DPCORE::Game List Headers: " + headers.toString()); + + try { + String responseBody = webClient.post().uri(gameUrl).headers(h -> h.addAll(headers)) + .bodyValue(prams.toString()).retrieve().bodyToMono(String.class).block(); + + JSONArray games = new JSONArray(responseBody); + int length = games.length(); + + for (int i = 0; i < length; i++) { + JSONObject objGame = games.getJSONObject(i); + String gameType = objGame.getString("gameType"); + String gameId = objGame.getString("tableId"); + String gameKey = objGame.getString("tableId"); + String gameTitleEn = objGame.getString("tableName"); + String gameTitleKo = objGame.getString("tableName"); + + item.put("banGameType", gameType); + item.put("banGameId", gameId); + item.put("banGameName", gameTitleEn + "||" + gameTitleKo); + item.put("banGameNameEng", gameTitleEn); + item.put("banGameKey", gameKey); + item.put("skin", search.getSkin()); + + log.info(LOG_PREFIX + "item : " + item.toString()); + int result = commonService.insertBanGameInfo(item); + log.info(LOG_PREFIX + "insertBanGameInfo result : " + result); + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException : " + e.getMessage()); + throw new ApiException("E901", "API call failed"); + } catch (WebClientRequestException e) { + log.error(LOG_PREFIX + "WebClientRequestException : " + e.getMessage()); + throw new ApiException("E902", "Network error"); + } + } + } else if ("pink".equals(search.getVendorTitle())) { + HashMap apiInfo = banGameList.get(0); + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiAgentId = apiInfo.get("apiAgentId").toString(); + String apiKey = apiInfo.get("apiSecretKey").toString(); + String apiVendorCode = apiInfo.get("apiVendorCode").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.set("Authorization", apiKey); + + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiBaseUrl + "/gamelist"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendor", apiVendorCode); + params.add("type", "all"); + + log.info(LOG_PREFIX + "HttpHeaders::" + headers.toString()); + log.info(LOG_PREFIX + "params::" + params.toString()); + + try { + String responseBody = webClient.post().uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)).bodyValue(params).retrieve().bodyToMono(String.class) + .block(); + JSONObject resObj = new JSONObject(responseBody); + + if (resObj.getInt("code") == 0) { + log.info(LOG_PREFIX + "gameList::Response::code::" + resObj.getInt("code")); + log.info(LOG_PREFIX + "gameList::Response::msg::" + resObj.getString("msg")); + JSONArray games = resObj.getJSONArray("data"); + int length = games.length(); + + for (int i = 0; i < length; i++) { + JSONObject objGame = games.getJSONObject(i); + String gameType = objGame.getString("type"); + String gameId = objGame.getString("game"); + String gameKey = objGame.getString("game"); + String gameTitleEn = objGame.getString("name"); + String gameTitleKo = objGame.getString("kname"); + + apiInfo.put("banGameType", gameType); + apiInfo.put("banGameId", gameId); + apiInfo.put("banGameName", gameTitleEn + "||" + gameTitleKo); + apiInfo.put("banGameNameEng", gameTitleEn); + apiInfo.put("banGameKey", gameKey); + apiInfo.put("skin", search.getSkin()); + + log.info(LOG_PREFIX + "item : " + apiInfo.toString()); + int result = commonService.insertBanGameInfo(apiInfo); + log.info(LOG_PREFIX + "insertBanGameInfo result : " + result); + } + } else { + apiResponse.setResultCode("-99"); + apiResponse.setResultMessage("api fail"); + return apiResponse; + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException : " + e.getMessage()); + throw new ApiException("E901", "API call failed"); + } catch (WebClientRequestException e) { + log.error(LOG_PREFIX + "WebClientRequestException : " + e.getMessage()); + throw new ApiException("E902", "Network error"); + } + } else if ("onix".equals(search.getVendorTitle())) { + HashMap apiInfo = banGameList.get(0); + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiAgentId = apiInfo.get("apiAgentId").toString(); + String apiKey = "Bearer " + apiInfo.get("apiSecretKey").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", apiKey); + String gameUrl = apiBaseUrl + "/csapi/Provider"; + + for (HashMap item : banGameList) { + String apiVendorKey = item.get("apiVendorCode").toString(); + JSONObject prams = new JSONObject(); + prams.put("type", "0"); + prams.put("gameid", "SxCasino"); + prams.put("code", "evolution"); + prams.put("gametype", "live"); + + log.info(LOG_PREFIX + "ONIX::Game List Url: " + gameUrl); + log.info(LOG_PREFIX + "ONIX::Game List Headers: " + headers.toString()); + + try { + String responseBody = webClient.post().uri(gameUrl).headers(h -> h.addAll(headers)) + .bodyValue(prams.toString()).retrieve().bodyToMono(String.class).block(); + JSONObject resObj = new JSONObject(responseBody); + int resultCode = resObj.getInt("result"); + + if(resultCode == 1) { + JSONArray games = resObj.getJSONArray("data"); + int length = games.length(); + + for (int i = 0; i < length; i++) { + JSONObject objGame = games.getJSONObject(i); + String gameType = objGame.getString("type"); + String gameId = objGame.getString("subcode"); + String gameTitleEn = objGame.getString("name_eng"); + String gameTitleKo = objGame.getString("name_kor"); + + item.put("banGameType", gameType); + item.put("banGameId", gameId); + item.put("banGameName", gameTitleEn + "||" + gameTitleKo); + item.put("banGameNameEng", gameTitleEn); + item.put("skin", search.getSkin()); + + log.info(LOG_PREFIX + "item : " + item.toString()); + int result = commonService.insertBanGameInfo(item); + log.info(LOG_PREFIX + "insertBanGameInfo result : " + result); + } + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException : " + e.getMessage()); + throw new ApiException("E901", "API call failed"); + } catch (WebClientRequestException e) { + log.error(LOG_PREFIX + "WebClientRequestException : " + e.getMessage()); + throw new ApiException("E902", "Network error"); + } + } + } + + } catch (Exception e) { + log.error("#-API::CMN::banGameSet::" + e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + private String getHashCode(String LOG_PREFIX, String body, String secretKey) { + String hashCode = ""; + LOG_PREFIX = LOG_PREFIX + "::getHashCode::"; + try { + // Json String Body + Secret Key + String result = body + secretKey; + // String result = + // "{\"username\":\"057007mptest01\",\"nickname\":\"007mptest01\",\"siteUsername\":\"057007mptest01\"}"; + log.info(LOG_PREFIX + "Body + Secret Key::" + result); + // SHA-256 Hash make + MessageDigest digestObj = MessageDigest.getInstance("SHA-256"); + byte[] hash_data = digestObj.digest(result.getBytes("UTF-8")); + + // Base64 encoding + hashCode = Base64.getEncoder().encodeToString(hash_data); + log.info(LOG_PREFIX + "hashCode::" + hashCode); + } catch (Exception e) { + log.error("#-NexusService::getHashCode::Exception::" + e.getMessage()); + } + + return hashCode; + } + +} diff --git a/src/main/java/com/bb/api/ApiCreditController.java b/src/main/java/com/bb/api/ApiCreditController.java new file mode 100644 index 0000000..80ef1b5 --- /dev/null +++ b/src/main/java/com/bb/api/ApiCreditController.java @@ -0,0 +1,580 @@ +package com.bb.api; + +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.stereotype.Controller; +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 com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.Credit; +import com.bb.model.CreditPointSearch; +import com.bb.model.CreditSearchVO; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.util.IPKit; +import com.bb.util.PagingUtil; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/credit") +public class ApiCreditController { + + @Autowired + SiteService siteService; + + @Autowired + CreditService creditService; + + @Autowired + private final JwtManager jwtManager; + + + @ResponseBody + @PostMapping("/list") + public ApiResponse creditList(@RequestHeader String token, HttpServletRequest request, @RequestBody CreditSearchVO search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CREDIT::creditList::"+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.getSiteIdx() == null || search.getSiteId() == null || search.getSiteId().equals("")) { + search.setSiteId(site.getSiteId()); + search.setSiteIdx((long) site.getSiteIdx()); + } + + if(search.getOrderStr() == null || search.getOrderStr().equals("")) { + search.setOrderStr("UPDATE_DESC"); + } + + search.setTransType(search.getTransType().trim()); + + if(search.getTransType().equals("AD-AI") || search.getTransType().equals("AD-AO") || search.getTransType().equals("AD")) { + // 관리자 지급/회수 + search.setUpperSiteIdx((long) 2); + search.setUpperSiteId("tripleSuper"); + search.setTargetSiteIdx(search.getSiteIdx()); + search.setTargetSiteId(search.getSiteId()); + + search.setSearchSiteId(""); + } else if(search.getTransType().equals("UP-AI") || search.getTransType().equals("UP-AO") || search.getTransType().equals("UP")) { + // 상부가 지급/회수 + search.setTargetSiteIdx(search.getSiteIdx()); + search.setTargetSiteId(search.getSiteId()); + } else if(search.getTransType().equals("DW-AI") || search.getTransType().equals("DW-AO") || search.getTransType().equals("DW")) { + // 하부에 지급/회수 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + } else if(search.getTransType().equals("MAI") || search.getTransType().equals("MAO") || search.getTransType().equals("MAIO")) { + // 회원에 충전/환전 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + } else { + // 전체 검색 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + search.setTargetSiteIdx(search.getSiteIdx()); + search.setTargetSiteId(search.getSiteId()); + } + + log.info(LOG_PREFIX+ "CreditSearchVO::"+search.toString()); + + int totalCount = creditService.getTransCreditListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = creditService.getTransCreditList(search); + responseData.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/transaction") + public ApiResponse transaction(@RequestHeader String token, HttpServletRequest request, @RequestBody CreditSearchVO search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CREDIT::transaction::"+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.getSiteIdx() == null || search.getSiteId() == null || search.getSiteId().equals("")) { + search.setSiteId(site.getSiteId()); + search.setSiteIdx((long) site.getSiteIdx()); + } + + if(search.getOrderStr() == null || search.getOrderStr().equals("")) { + search.setOrderStr("UPDATE_DESC"); + } + + search.setTransType(search.getTransType().trim()); + + search.setStartDatePartition(StringUtils.convertToDateOnly(search.getStartDate())); + search.setEndDatePartition(StringUtils.convertToDateOnly(search.getEndDate())); + + if(search.getTransType().equals("AD-AI") || search.getTransType().equals("AD-AO") || search.getTransType().equals("AD")) { + // 관리자 지급/회수 + search.setUpperSiteIdx((long) 2); + search.setUpperSiteId("tripleSuper"); + search.setTargetSiteIdx(search.getSiteIdx()); + search.setTargetSiteId(search.getSiteId()); + + search.setSearchSiteId(""); + } else if(search.getTransType().equals("UP-AI") || search.getTransType().equals("UP-AO") || search.getTransType().equals("UP")) { + // 상부가 지급/회수 + search.setTargetSiteIdx(search.getSiteIdx()); + search.setTargetSiteId(search.getSiteId()); + } else if(search.getTransType().equals("DW-AI") || search.getTransType().equals("DW-AO") || search.getTransType().equals("DW")) { + // 하부에 지급/회수 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + } else if(search.getTransType().equals("MAI") || search.getTransType().equals("MAO") || search.getTransType().equals("MAIO")) { + // 회원에 충전/환전 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + } else if(search.getTransType().equals("DP") || search.getTransType().equals("CD") || search.getTransType().equals("CDP")) { + // 회원 베팅/결과 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + } else { + // 전체 검색 + search.setUpperSiteIdx(search.getSiteIdx()); + search.setUpperSiteId(search.getSiteId()); + search.setTargetSiteIdx(search.getSiteIdx()); + search.setTargetSiteId(search.getSiteId()); + } + + log.info(LOG_PREFIX+ "CreditSearchVO::"+search.toString()); + + int totalCount = creditService.getTotalTransactionListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = creditService.getTotalTransactionList(search); + responseData.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/addProc") + public ApiResponse addProc(@RequestHeader String token, HttpServletRequest request, @RequestBody Credit credit) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CREDIT::addProc::"+tokenInfo.getSid()+"::::"; + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(credit); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + if("tripleSuper".equals(site.getSiteId())){ + apiResponse.setResultCode("9991"); + apiResponse.setResultMessage("Super admin is not allow"); + return apiResponse; + } + + if("AI".equals(credit.getCreditType())) { + // 관리자 or 상부 직접 지급 + long siteCredit = siteService.getSiteCredit(tokenInfo.getSid()); + if(siteCredit < credit.getCreditAmt()) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("크레딧이 모자릅니다"); + return apiResponse; + } + + if(credit.getTargetSiteId() == null || credit.getTargetSiteId().equals("")) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("대상이 존재하지 않습니다"); + return apiResponse; + } + + credit.setInOut("IN"); + credit.setCreditStatus(1); + credit.setSiteIdx(site.getSiteIdx()); + credit.setSiteId(site.getSiteId()); + + + + } else if("AO".equals(credit.getCreditType())) { + // 관리자 or 상부 직접환급 + + if(credit.getTargetSiteId() == null || credit.getTargetSiteId().equals("")) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("대상이 존재하지 않습니다"); + return apiResponse; + } + + long targetSiteCredit = siteService.getSiteCredit(credit.getTargetSiteId()); + if(targetSiteCredit < credit.getCreditAmt()) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("해당 에이젼시의 크레딧이 모자릅니다"); + return apiResponse; + } + + credit.setInOut("OUT"); + credit.setCreditStatus(1); + credit.setSiteIdx(site.getSiteIdx()); + credit.setSiteId(site.getSiteId()); + + } else { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("알 수 없는 요청"); + return apiResponse; + } + + log.info(LOG_PREFIX+ "Credit::AF::"+credit.toString()); + + int result = creditService.insertCredit(credit); + + + log.info(LOG_PREFIX+ "insertCredit result::"+result); + + + } catch(Exception e) { + log.error(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/pointList") + public ApiResponse pointList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody CreditPointSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::TRANS::betlist::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + + PageFormVO pageVo = new PageFormVO(); + search.setSearchSiteId(site.getSiteId()); + search.setSearchSiteIdx((long) site.getSiteIdx()); + search.setStartDate(search.getStartDate()+".000"); + search.setEndDate(search.getEndDate()+".999"); + + if(search.getOrderStr() == null || search.getOrderStr().equals("")) { + search.setOrderStr("BETDATE_DESC"); + } + + log.info(LOG_PREFIX+ "CreditPointSearch::"+search.toString()); + + int totalCount = creditService.getCreditPointListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = creditService.getCreditPointList(search); + responseData.put("list", list); + + } catch(Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/betList") + public ApiResponse betList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody CreditPointSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::TRANS::betlist::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + + PageFormVO pageVo = new PageFormVO(); + search.setSearchSiteId(site.getSiteId()); + search.setSearchSiteIdx((long) site.getSiteIdx()); + search.setStartDate(search.getStartDate()+".000"); + search.setEndDate(search.getEndDate()+".999"); + + if(search.getOrderStr() == null || search.getOrderStr().equals("")) { + search.setOrderStr("BETDATE_DESC"); + } + + log.info(LOG_PREFIX+ "CreditPointSearch::"+search.toString()); + + search.setStartDatePartition(StringUtils.convertToDateOnly(search.getStartDate())); + search.setEndDatePartition(StringUtils.convertToDateOnly(search.getEndDate())); + + int totalCount = creditService.getCreditBetListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = creditService.getCreditBetList(search); + responseData.put("list", list); + + } catch(Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } +} diff --git a/src/main/java/com/bb/api/ApiMainController.java b/src/main/java/com/bb/api/ApiMainController.java new file mode 100644 index 0000000..a603add --- /dev/null +++ b/src/main/java/com/bb/api/ApiMainController.java @@ -0,0 +1,382 @@ +package com.bb.api; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +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.jwt.JwtClame; +import com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.BoardSearch; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.service.SiteService; +import com.bb.service.StatService; +import com.bb.util.IPKit; +import com.bb.util.PagingUtil; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1") +public class ApiMainController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + + @Autowired + StatService statService; + + + @ResponseBody + @PostMapping(value="/login") + public ApiResponse agentBalance(HttpServletRequest request, @RequestBody JSONObject requestBody) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-NSOFT::LOGIN::"+requestBody.getString("apiId")+":::"; + try { + // apiKey 체크 + log.info(LOG_PREFIX+ "Request Body: "+requestBody.toString()); + String agentId = requestBody.getString("apiId"); + if(agentId != null && "tripleSuper".equals(agentId)){ + apiResponse.setResultCode("9991"); + apiResponse.setResultMessage("Super admin login is not allow"); + return apiResponse; + } + + if("".equals(agentId)) { + apiResponse.setResultCode("9998"); + apiResponse.setResultMessage("apiId is not null"); + return apiResponse; + } + + String agentPwd = requestBody.getString("apiPwd"); + if("".equals(agentPwd)) { + apiResponse.setResultCode("9998"); + apiResponse.setResultMessage("agentPwd is not null"); + return apiResponse; + } + Map loginParam = new HashMap(); + loginParam.put("siteId", agentId); + loginParam.put("sitePwd", agentPwd); + + Site siteLogin = siteService.getSiteLoginApi(loginParam); + if(siteLogin == null) { + apiResponse.setResultCode("9997"); + apiResponse.setResultMessage("agent info check"); + return apiResponse; + } + + log.info(siteLogin.getIps() +","+IPKit.getIpAddressByRequest(request) ); + if( !( siteLogin.getIps() == null || "".equals(siteLogin.getIps()) || "3.3.3.3".equals(siteLogin.getIps()) || siteLogin.getIps().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("#API::LOGIN::"+siteLogin.getSiteId() +"::siteLogin.getIps("+siteLogin.getIps()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + + JwtClame jwtinfo = new JwtClame(); + jwtinfo.setSiteId(siteLogin.getSiteId()); + String token = jwtManager.generateTokenAdmin(jwtinfo); + String refresh_token = jwtManager.generateTokenRefresh(jwtinfo); + + Map data = new HashMap(); + data.put("siteKey", siteLogin.getSiteKey()); + data.put("token", token); + data.put("refresh_token", refresh_token); + data.put("isTransfer", siteLogin.getIsTransfer()); + data.put("useParseStatMenu", siteLogin.getUseParseStatMenu()); + log.info("#API::LOGIN::data::" + data.toString()); + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/myCredit") + public ApiResponse myCredit(@RequestHeader String token, HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + //토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info(tokenInfo.getSid()); + long siteCredit = siteService.getSiteCredit(tokenInfo.getSid()); + long sitePoint = siteService.getSitePoint(tokenInfo.getSid()); + data.put("credit", siteCredit); + data.put("point", sitePoint); + data.put("siteLevel", site.getSiteLevel()); + if(site.getSiteLevel() == 1) { + HashMap creditInfo = siteService.getSiteSubCredit(tokenInfo.getSid()); + data.put("subCreditInfo", creditInfo); + } else { + data.put("subCreditInfo", null); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/myBetInfo") + public ApiResponse myBetInfo(@RequestHeader String token, HttpServletRequest request, @RequestBody JSONObject param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + String authorization = request.getHeader("Authorization").toString(); + log.info("#-myBetInfo::Authorization::"+authorization); + log.info("#-myBetInfo::param::"+param); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + + log.info("#-myBetInfo::site::"+tokenInfo.getSid()); + + SiteSearch search = new SiteSearch(); + search.setSiteIdx(site.getSiteIdx()); + search.setStartDate(param.getString("targetDate")); + log.info("#-myBetInfo::search::"+search); + List stat = statService.getDashBoardList(search) ; + data.put("info", stat); + + List statM = statService.getDashBoardMonth(search) ; + data.put("infoM", statM); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + log.error("#-myBetInfo::Exception::"+ e.getMessage()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/board/list") + public ApiResponse boardList(@RequestHeader String token, HttpServletRequest request, @RequestBody BoardSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::MAIN::boardList::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + search.setSiteIdx(site.getSiteIdx()); + search.setSiteId(tokenInfo.getSid()); + log.info(LOG_PREFIX + "BoardSearch::"+search); + + if(search.getViewType() == null || search.getViewType().equals("")) { + search.setViewType("main"); + } + + if(search.getBoardType() == null || search.getBoardType().equals("")) { + search.setBoardType("notice"); + } + + if(search.getViewType().equals("main")) { + List> list = siteService.getBoardList(search); + responseData.put("boardList", list); + } else { + PageFormVO pageVo = new PageFormVO(); + int totalCount = siteService.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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = siteService.getBoardList(search); + responseData.put("boardList", list); + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/board/{boardIdx}") + public ApiResponse boardList(@RequestHeader String token, HttpServletRequest request, @PathVariable long boardIdx) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::MAIN::boardList::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "BoardIdx::"+boardIdx); + + HashMap detail = siteService.getBoardDetail(boardIdx); + responseData.put("boardDetail", detail); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } +} diff --git a/src/main/java/com/bb/api/ApiSettingController.java b/src/main/java/com/bb/api/ApiSettingController.java new file mode 100644 index 0000000..0d8e1c7 --- /dev/null +++ b/src/main/java/com/bb/api/ApiSettingController.java @@ -0,0 +1,407 @@ +package com.bb.api; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jakarta.servlet.http.HttpServletRequest; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +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 com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.CmnSearch; +import com.bb.model.Site; +import com.bb.model.SiteVendorSkinVO; +import com.bb.service.BetRadarService; +import com.bb.service.SettingService; +import com.bb.service.SiteService; +import com.bb.util.IPKit; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/setting") +public class ApiSettingController { + + @Autowired + SiteService siteService; + + @Autowired + SettingService settingService; + + @Autowired + BetRadarService betRadarService; + + @Autowired + private final JwtManager jwtManager; + + + @ResponseBody + @PostMapping("/vendor") + public ApiResponse settingVendorList(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SETTING::settingVendorList::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + if(search.getSiteIdx() == null || search.getSiteIdx() == 0) { + search.setSiteIdx((long) site.getSiteIdx()); + search.setSiteId(tokenInfo.getSid()); + } + log.info(LOG_PREFIX + "CmnSearch::"+search.toString()); + + List> list = settingService.getSettingVendorList(search); + for(HashMap item : list) { + Long vendorIdx = (Long) item.get("vendorIdx"); + String vendorTitle = item.get("vendorTitle").toString(); + search.setVendorIdx(vendorIdx); + search.setVendorTitle(vendorTitle); + List> skinList = settingService.getSettingSkinList(search); + item.put("skinList", skinList); + } + responseData.put("list", list); + + + } catch(Exception e) { + e.printStackTrace(); + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/skin") + public ApiResponse settingSkinList(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SETTING::settingSkinList::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "CmnSearch::"+search.toString()); + + List> list = settingService.getSettingSkinList(search); + responseData.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/vendor/save") + public ApiResponse settingVendorSave(@RequestHeader String token, HttpServletRequest request, @RequestBody List param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SETTING::settingSkinList::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONArray reqObj = new JSONArray(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + log.info(LOG_PREFIX + "List::"+param.toString()); + + for(SiteVendorSkinVO item : param) { + if(!item.getCategory().equals("CASINO") && !item.getCategory().equals("HCASINO")) { + item.setSkinType("A"); + } + + switch (item.getSkinType()) { + case "A": item.setNexusSkinType("A"); + item.setExtrSkinType("1"); + break; + case "B": item.setNexusSkinType("B"); + item.setExtrSkinType("2"); + break; + case "C": item.setNexusSkinType("C"); + item.setExtrSkinType("3"); + break; + case "D": item.setNexusSkinType("D"); + item.setExtrSkinType("4"); + break; + case "E": item.setNexusSkinType("E"); + item.setExtrSkinType("5"); + break; + case "F": item.setNexusSkinType("E"); + item.setExtrSkinType("6"); + break; + case "G": item.setNexusSkinType("E"); + item.setExtrSkinType("7"); + break; + case "H": item.setNexusSkinType("E"); + item.setExtrSkinType("8"); + break; + case "I": item.setNexusSkinType("E"); + item.setExtrSkinType("9"); + break; + case "J": item.setNexusSkinType("E"); + item.setExtrSkinType("10"); + break; + default: item.setNexusSkinType("A"); + item.setExtrSkinType("1"); + break; + } + + + int saveResult = settingService.settingVendorSkinSave(item); + log.info(LOG_PREFIX + "vendorIdx::"+item.getVendorIdx()+"::saveResult::"+saveResult); + } + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/whiteIp") + public ApiResponse whiteIpList(@RequestHeader String token, HttpServletRequest request, @RequestBody CmnSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SETTING::whiteIpList::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + if(search.getSiteIdx() == null || search.getSiteIdx() == 0) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("대상이 존재하지 않습니다"); + return apiResponse; + } + log.info(LOG_PREFIX + "CmnSearch::"+search.toString()); + + List list = settingService.getWhiteIpList(search); + responseData.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @PostMapping("/getSportsSetting") + public ApiResponse getSportsSetting(@RequestHeader String token, HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::SETTING::getSportsSetting::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + HashMap apiInfo = settingService.getBetRadarApiInfo(tokenInfo.getSid()); + if(apiInfo == null || apiInfo.get("apiKey") == null) { + apiResponse.setResultCode("8888"); + apiResponse.setResultMessage("Not found 'BetRadar' settings.."); + log.info(LOG_PREFIX+ "Not found 'BetRadar' settings.."); + return apiResponse; + } + log.info(LOG_PREFIX + "ApiInfo::"+apiInfo.toString()); + + String url = betRadarService.getSportsSetting(LOG_PREFIX, apiInfo); + responseData.put("url", url); + + + } catch(Exception e) { + e.printStackTrace(); + log.info("#-API::SETTING::getSportsSetting::"+ e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + log.info("#-API::SETTING::getSportsSetting::"+ e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } +} diff --git a/src/main/java/com/bb/api/ApiStatController.java b/src/main/java/com/bb/api/ApiStatController.java new file mode 100644 index 0000000..707add6 --- /dev/null +++ b/src/main/java/com/bb/api/ApiStatController.java @@ -0,0 +1,1058 @@ +package com.bb.api; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +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 com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.PageFormVO; +import com.bb.model.ReportSearch; +import com.bb.model.Site; +import com.bb.model.SiteSearch; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.service.StatService; +import com.bb.util.DateTimeUtils; +import com.bb.util.IPKit; +import com.bb.util.PagingUtil; +import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/stat") +public class ApiStatController { + + @Autowired + StatService statService; + + @Autowired + SiteService siteService; + + @Autowired + CreditService creditService; + + @Autowired + private final JwtManager jwtManager; + + + @ResponseBody + @PostMapping("/error") + public ApiResponse error(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::statMain::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowtime); + } + + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + PageFormVO pageVo= new PageFormVO(); + search.setSiteId(site.getSiteId()); + search.setSiteIdx(site.getSiteIdx()); + + log.info(LOG_PREFIX+ "SiteSearch {}", search); + int totalCount = siteService.getSiteCallbackErrLogListCnt(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); + + data.put("pageInfo", pageVo); + } + + log.info(LOG_PREFIX+ "SiteSearch {}", search); + List errorList = siteService.getSiteCallbackErrLogList(search); + data.put("list", errorList); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + + @ResponseBody + @PostMapping("/credit") + public ApiResponse credit(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::statMain::credit::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowtime); + } + + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + log.info(LOG_PREFIX+ "BF::SiteSearch {}", search); + + PageFormVO pageVo= new PageFormVO(); + + if(search.getSearchSiteId() == null || "".equals(search.getSearchSiteId())) { + search.setSiteIdx(site.getSiteIdx()); + search.setSiteId(site.getSiteId()); + } else { + Site tergetSite = new Site(); + tergetSite.setSiteId(search.getSearchSiteId()); + tergetSite = siteService.getSite(tergetSite); + search.setSiteIdx(tergetSite.getSiteIdx()); + search.setSiteId(search.getSearchSiteId()); + log.info(LOG_PREFIX+ "tergetSite {}", tergetSite); + } + + log.info(LOG_PREFIX+ "AF::SiteSearch {}", search); + + + int totalCount = creditService.getStatCreditListCnt(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); + + data.put("pageInfo", pageVo); + } + + List creditList = creditService.getStatCreditList(search); + /* + List adminBotttomList = creditService.getStatCreditAdminBotttomList(search); + long adminBottomInSum = 0; + long adminBottomOutSum = 0; + for(HashMap item : creditList) { + long tempIn = 0; + long tmpOut = 0; + String aDate = item.get("date").toString(); + for(HashMap botItem : adminBotttomList) { + String bDate = botItem.get("date").toString(); + if(aDate.equals(bDate)) { + item.put("adminBottomIn", botItem.get("adminBottomIn").toString()); + item.put("adminBottomOut", botItem.get("adminBottomOut").toString()); + tempIn = Long.parseLong(botItem.get("adminBottomIn").toString()); + tmpOut = Long.parseLong(botItem.get("adminBottomOut").toString()); + } + } + adminBottomInSum = adminBottomInSum + tempIn; + adminBottomOutSum = adminBottomOutSum + tmpOut; + } + */ + HashMap creditTotal = creditService.getStatCreditTotal(search); + /* + creditTotal.put("adminBottomInSum", Long.toString(adminBottomInSum)); + creditTotal.put("adminBottomOutSum", Long.toString(adminBottomOutSum)); + */ + data.put("list", creditList); + data.put("sum", creditTotal); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + + @ResponseBody + @PostMapping("/report") + public ApiResponse report(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::statMain::report::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + search.setSiteIdx(site.getSiteIdx()); + if(search.getSearchSiteId()==null || "".equals(search.getSearchSiteId())) { + search.setSiteId(site.getSiteId()); + } else { + search.setSiteId(search.getSearchSiteId()); + } + + if(search.getWithBottomYN() == null || !"Y".equals(search.getWithBottomYN())) { + search.setWithBottomYN("N"); + } + + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + String startDay = search.getStartDate().substring(0, 10); + String endDay = search.getEndDate().substring(0, 10); + String toDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + + log.info(LOG_PREFIX+ "startDay::"+startDay); + log.info(LOG_PREFIX+ "endDay::"+endDay); + log.info(LOG_PREFIX+ "toDay::"+toDay); + + if(startDay.equals(endDay) && startDay.equals(toDay)) { + // 오늘날짜 한정 특별 검색 + List list = statService.getSiteReportListToDay(search); + data.put("list", list); + + List listSum = statService.getSiteReportListSumToDay(search); + data.put("sum",listSum); + } else { + if(search.getSearchMemId()==null || "".equals(search.getSearchMemId())) { + List list = statService.getSiteReportList(search); + data.put("list", list); + + List listSum = statService.getSiteReportListSum(search); + data.put("sum",listSum); + } else { + List list = statService.getSiteReportMemList(search); + data.put("list", list); + + List listSum = statService.getSiteReportMemListSum(search); + data.put("sum",listSum); + } + } + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + + @ResponseBody + @PostMapping("") + public ApiResponse statMain(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::statMain::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + String prev = statService.getlastMonth(search); + data.put("prev", prev); + + List list = statService.getSiteDailyReportList(search); + data.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/bottom") + public ApiResponse bottom(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::bottom::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + search.setUpperSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + String prev = statService.getlastMonth(search); + data.put("prev", prev); + + List list = statService.getBottomSiteDailyReportList(search); + data.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/pot") + public ApiResponse mypage(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + String currDate = DateTimeUtils.getYyyymmdd(); + String yyyy = currDate.substring(0, 4); + search.setSiteIdx(site.getSiteIdx()); + int mm = Integer.parseInt(currDate.substring(4, 6)); + + if(search.getStartDate() == null) { + String mmm = currDate.substring(4, 6); + data.put("yyyy", yyyy); + data.put("mmm", mmm); + search.setStartDate(mmm); + } else { + String mmm = search.getStartDate(); + data.put("yyyy", yyyy); + data.put("mmm", mmm); + search.setStartDate(mmm); + } + + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + data.put("mm", mm); + + HashMap list = statService.getMonthCredit(search); + data.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/casino") + public ApiResponse statCasino(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowtime); + } + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + List list = statService.getVendorDailyReportList(search); + data.put("list", list); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/user") + public ApiResponse statUser(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + String currDate = DateTimeUtils.getYyyymm(); + search.setStartDate(currDate.substring(0, 4)); + search.setEndDate(currDate.substring(4, 6)); + } + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + List list = statService.getUserDailyReportList(search); + data.put("list", list); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/date") + public ApiResponse statDate(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowtime); + } + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + List list = statService.getUserReportSum(search); + data.put("list", list); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/reportday") + public ApiResponse reportDay(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + String nowmonth = new SimpleDateFormat("yyyy-MM").format(new Date(System.currentTimeMillis())); + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowmonth+"-01"); + } + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + List list = statService.getVendorDailyReportListDay(search); + List listSUM = statService.getVendorDailyReportListDaySUM(search); + data.put("list", list); + data.put("listSUM", listSUM); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/reportmonth") + public ApiResponse reportMonth(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + String nowmonth = new SimpleDateFormat("yyyy-MM").format(new Date(System.currentTimeMillis())); + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getYear() == null || "".equals(search.getYear())) { + search.setStartDate(nowmonth +"-01"); + + String nowmonthArr[] = nowmonth.split("-"); + search.setYear(nowmonthArr[0]); + search.setMonth(nowmonthArr[1]); + } else { + search.setStartDate(search.getYear() +"-"+ search.getMonth() +"-01"); + } + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + List list = statService.getVendorDailyReportListMonth(search); + List listSUM = statService.getVendorDailyReportListMonthSUM(search); + data.put("list", list); + data.put("listSUM", listSUM); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/std") + public ApiResponse std(@RequestHeader String token, HttpServletRequest request, @RequestBody SiteSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::pot::"+tokenInfo.getSid()+"::::"; + + // POJO to JSON + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 여기서 부터 로직 + String nowtime = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + if(search.getStartDate() == null || "".equals(search.getStartDate())) { + search.setStartDate(nowtime); + } + if(search.getEndDate() == null || "".equals(search.getEndDate())) { + search.setEndDate(nowtime); + } + + search.setSiteIdx(site.getSiteIdx()); + log.info(LOG_PREFIX+ "SiteSearch::"+search.toString()); + + List list = statService.getUserReportSum(search); + data.put("list", list); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/hybridReport") + public ApiResponse hybridReport(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody ReportSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::STAT::hybridReport::"+tokenInfo.getSid()+"::::"; + + try { + String toDay = new SimpleDateFormat("yyyy-MM-dd").format(new Date(System.currentTimeMillis())); + String startDay = search.getStartDate().substring(0, 10); + String endDay = search.getEndDate().substring(0, 10); + + search.setIsToday("N"); + if(startDay.equals(toDay) || endDay.equals(toDay)) { + search.setIsToday("Y"); + } + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(search); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + if(search.getWithBottomYN().equals("Y")) { + HashMap report = statService.getHybridReport(search); + HashMap reportTotal = statService.getHybridReportTotal(search); + //List list = statService.getHybridReportList(search); + data.put("hReport", report); + data.put("hReportTotal", reportTotal); + data.put("hReportList", null); + } else { + HashMap report = statService.getHybridReport(search); + data.put("hReport", report); + data.put("hReportTotal", null); + data.put("hReportList", null); + } + + } catch(Exception e) { + log.error(LOG_PREFIX+ "EXCEPTION::"+e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(data); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + +} diff --git a/src/main/java/com/bb/api/ApiTransController.java b/src/main/java/com/bb/api/ApiTransController.java new file mode 100644 index 0000000..2e2bf94 --- /dev/null +++ b/src/main/java/com/bb/api/ApiTransController.java @@ -0,0 +1,1710 @@ +package com.bb.api; + +import java.nio.charset.Charset; +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Base64; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +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.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; +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.BetParam; +import com.bb.model.NexusApiInfo; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.TransSearchVO; +import com.bb.service.AsyncSiteService; +import com.bb.service.PandaService; +import com.bb.service.SiteService; +import com.bb.service.ThenutService; +import com.bb.service.TransService; +import com.bb.util.AesUtil; +import com.bb.util.IPKit; +import com.bb.util.PagingUtil; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import okhttp3.OkHttpClient; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/trans") +public class ApiTransController { + + @Autowired + SiteService siteService; + + @Autowired + TransService transService; + + @Autowired + ThenutService thenutService; + + @Autowired + PandaService pandaService; + + @Autowired + WebClient webClient; + + @Autowired + private final JwtManager jwtManager; + + @Autowired + private AsyncSiteService asyncSiteService; + + + @ResponseBody + @PostMapping("/betList") + public ApiResponse betList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody TransSearchVO search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::TRANS::betlist::"+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(); + search.setSiteId(site.getSiteId()); + search.setSiteIdx((long) site.getSiteIdx()); + + if(search.getOrderStr() == null || search.getOrderStr().equals("")) { + search.setOrderStr("BETDATE_DESC"); + } + + if(search.getBetWinAmt() == null || search.getBetWinAmt().equals("")) { + search.setBetWinAmt("0"); + } + + search.setTopId(tokenInfo.getSid()); + + + search.setStartDatePartition(StringUtils.convertToDateOnly(search.getStartDate())); + search.setEndDatePartition(StringUtils.convertToDateOnly(search.getEndDate())); + + log.info(LOG_PREFIX+ "TransSearchVO::"+search.toString()); + + if(search.getBetWinAmt().equals("0") && search.getOldYN().equals("N") && search.getWithBottomYN().equals("N") + && (search.getResultInfo()==null || search.getResultInfo().equals(""))) { + // Fast Search + log.info(LOG_PREFIX+ "BetList Fast Search!!!"); + int totalCount = transService.getTransBetFastListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> fastList = transService.getTransBetFastList(search); + List> list = new ArrayList>(); + for(HashMap item : fastList) { + String refId = item.get("betId"); + search.setRefId(refId); + HashMap betItem = transService.getBetListItem(search); + list.add(betItem); + } + + responseData.put("list", list); + HashMap listSum = transService.getTransBetFastListSum(search); + responseData.put("listSum", listSum); + + log.info(LOG_PREFIX+ "BetList Total count::"+totalCount); + log.info(LOG_PREFIX+ "BetList list count::"+list.size()); + log.info(LOG_PREFIX+ "BetList listSum::"+listSum); + } else { + // ORG Search + log.info(LOG_PREFIX+ "BetList ORG Search!!!"); + int totalCount = transService.getTransBetListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = transService.getTransBetList(search); + responseData.put("list", list); + HashMap listSum = transService.getTransBetListSum(search); + responseData.put("listSum", listSum); + + log.info(LOG_PREFIX+ "BetList Total count::"+totalCount); + log.info(LOG_PREFIX+ "BetList list count::"+list.size()); + log.info(LOG_PREFIX+ "BetList listSum::"+listSum); + } + + } catch(Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/betDetail") + public ApiResponse betDetail(@RequestHeader String token, HttpServletRequest request, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + JSONObject saveObj = null; + JSONArray saveObjs = null; + boolean isSaveEvoDetail = false; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::TRANS::betDetail::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + log.info(LOG_PREFIX+ "BetParam::"+param.toString()); + responseData.put("betId", param.getBetId()); + String dType = "detail_0"; + + HashMap betInfo = transService.getBetInfoByBetId(param); + + if(betInfo == null) { + betInfo = transService.getSiteBetByRefIdFromOld(param); + log.info(LOG_PREFIX+ "betInfo_OLD {}", betInfo); + } + + log.info(LOG_PREFIX+ "betINfp {}", betInfo); + if(betInfo != null) { + param.setBetId(betInfo.get("refId").toString()); + + String category = betInfo.get("vendorCetegory").toString(); + log.info(LOG_PREFIX+ "Game category : " + category); + + if("pragmatic".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + + String detailURL = transService.getPragmaticDetails(LOG_PREFIX, betInfo); + if(detailURL != null && !detailURL.equals("")) { + HashMap url = new HashMap(); + url.put("url", detailURL); + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + + } else if("svendor".equals(betInfo.get("vendorCode").toString()) + || "pink".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_6"; + responseData.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + responseData.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + JSONObject dataObj = transService.getSvendorDetail(LOG_PREFIX, betInfo); + if(dataObj == null) { + responseData.put("detail", "betId is not exist"); + } else { + if(dataObj.has("gameDetail") && !dataObj.isNull("gameDetail")) { + String detailType = StringUtils.getType(dataObj.getString("gameDetail")); + if(detailType.equals("URL")) { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = dataObj.getString("gameDetail"); + HashMap url = new HashMap(); + url.put("url", detailUrl); + responseData.put("detail", url); + } else if(detailType.equals("JSON")) { + dType = "detail_6"; + responseData.put("dType", dType); + JSONObject detailObj = dataObj.getJSONObject("gameDetail"); + saveObj = detailObj; + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + responseData.put("detail", "betId is not exist"); + } + } + } + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==17 && "tower".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = + betInfo.get("vendorApiUrl").toString() + +"/v2/detail_url" + + "?site_code="+betInfo.get("vendorApiId").toString() + + "&user_id="+betInfo.get("siteHex").toString()+betInfo.get("memberId").toString() + + "&transaction_id="+betInfo.get("transactionId").toString() + + "&vendorCode=pp" + + "&gameCode="+betInfo.get("gameIdx").toString(); + log.info(LOG_PREFIX+" {}" ,detailUrl); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detailUrl) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + + log.info(LOG_PREFIX+ responseString+" {}" ,StringUtils.extractLink(responseString)); + + HashMap url = new HashMap(); + url.put("url", StringUtils.extractLink(responseString)); + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==83 && "splus".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Splus =========="); + dType = "detail_1"; + responseData.put("dType", dType); + + HashMap d = new HashMap(); + List splusDetail = siteService.getSplusDetailData(param); + for(HashMap ttype : splusDetail) { + log.info(LOG_PREFIX+ "{}, {}", ttype.get("tranType").toString(), ttype.get("data").toString()); + HashMap detailMap = new Gson().fromJson(ttype.get("data").toString(), HashMap.class); + d.put(ttype.get("tranType").toString(), detailMap); + } + + responseData.put("detail", d); + + } else if("nexus".equals(betInfo.get("vendorCode").toString()) || "ace2".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Hlink or Xtreem =========="); + + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_3"; + responseData.put("dType", dType); + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + long siteIdx = (long) betInfo.get("siteIdx"); + long memberIdx = (long) betInfo.get("memberIdx"); + String trxId = betInfo.get("vendorTranKey").toString(); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAgentId = betInfo.get("vendorApiId").toString(); + String apiSecretKey = betInfo.get("vendorApiKey").toString(); + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(siteIdx) + .memberIdx(memberIdx) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiSecretKey) + .build(); + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + dType = "detail_3"; + responseData.put("dType", dType); + JSONObject detailObj = transService.getNexusBetDetail(LOG_PREFIX, nexusApiInfo, trxId); + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + JSONArray transactions = detailObj.getJSONArray("transactions"); + if(transactions.length() > 0) { + saveObjs = transactions; + List> detailMap = new Gson().fromJson(transactions.toString(), List.class); + responseData.put("detail", detailMap); + } else { + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("detail", "betId is not exist"); + } + } else { + dType = "detail_2"; + responseData.put("dType", dType); + JSONObject detailObj = transService.getNexusBetDetailUrl(LOG_PREFIX, nexusApiInfo, trxId); + log.info(LOG_PREFIX+ "detailObj::"+detailObj.toString()); + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + HashMap url = new HashMap<>(); + url.put("url", detailObj.getString("url")); + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + } + } + } else if("prime".equals(betInfo.get("vendorCode").toString()) + || "dpcore".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::PRIME =========="); + dType = "detail_9"; + responseData.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + String apiKey = "Bearer "+betInfo.get("vendorApiKey").toString(); + headers.set("Authorization", apiKey); + String detailUrl = betInfo.get("vendorApiUrl").toString() + "/api/getBettingDetails5?"; + String detailParam = "referer="+param.getBetId(); + detailUrl = detailUrl + detailParam; + + log.info(LOG_PREFIX+ "PRIME::Detail Url: " + detailUrl); + log.info(LOG_PREFIX+ "PRIME::Detail Headers: " + headers.toString()); + ResponseEntity response = null; + JSONObject resJson = null; + try { + response = webClient.get() + .uri(detailUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "PRIME::Detail WebClientResponseException : " + e.getMessage()); + log.error(LOG_PREFIX+ "PRIME::Detail status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "PRIME::Detail response body : " + e.getResponseBodyAsString()); + resJson = new JSONObject(e.getResponseBodyAsString()); + log.error(LOG_PREFIX+ "PRIME::Detail error : " + resJson.getString("message")); + throw new ApiException("P209", resJson.getString("message")); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PRIME::Detail InterruptedException::"+rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PRIME::Detail Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + + if(response != null && response.getStatusCode() == HttpStatus.OK) { + isSaveEvoDetail = true; + log.info(LOG_PREFIX+ "PRIME::Play response : " + response.getBody()); + resJson = new JSONObject(response.getBody()); + JSONObject dataObj = resJson; + String gameType = dataObj.optString("gameType"); + JSONArray participants = dataObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + saveObj = dataObj; + HashMap detailMap = new Gson().fromJson(dataObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + responseData.put("detail", "betId is not exist"); + } + } + } else if("grand".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = + betInfo.get("vendorApiUrl").toString() + +"/transactions/detail" + + "?round_id="+betInfo.get("vendorTranKey").toString(); + log.info(LOG_PREFIX+"Request Url : {}" ,detailUrl); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detailUrl) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", "Bearer "+betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + log.info(LOG_PREFIX+ "responseString : " , responseString); + JSONObject responseObj = new JSONObject(responseString); + JSONObject dataObj = responseObj.getJSONObject("data"); + if(dataObj != null) { + HashMap url = new HashMap(); + url.put("url", dataObj.getString("url")); + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("detail", "betId is not exist"); + } + } else if("pracp".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiAgentCode", betInfo.get("vendorApiId").toString()); + apiInfo.put("apiToken", betInfo.get("vendorApiKey").toString()); + apiInfo.put("apiBaseUrl", betInfo.get("vendorApiUrl").toString()); + apiInfo.put("uuid", betInfo.get("uuid").toString()); + apiInfo.put("round_id", betInfo.get("roundId").toString()); + + JSONObject dataObj = transService.getPracpDetail(LOG_PREFIX, apiInfo); + log.info(LOG_PREFIX+ "dataObj : " + dataObj.toString()); + if(dataObj != null) { + HashMap url = new HashMap(); + url.put("url", dataObj.getString("url")); + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + } else if("tplus".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAuthKey = betInfo.get("vendorApiKey").toString(); + String pairTransactionKey = betInfo.get("refId").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAuthKey", apiAuthKey); + apiInfo.put("pairTransactionKey", pairTransactionKey); + + log.info(LOG_PREFIX+ "tplus::apiInfo: " + apiInfo.toString()); + + String detailURL = transService.getTplusDetails(LOG_PREFIX, apiInfo); + if(detailURL != null && !detailURL.equals("")) { + HashMap url = new HashMap(); + url.put("url", detailURL); + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + } else if("onix".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::ONIX =========="); + dType = "detail_8"; + responseData.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String fullDateTime = betInfo.get("betTime").toString(); + String dateOnly = fullDateTime.substring(0, 10); + + // Step 1: Get round info from /csapi/getBetting + String bettingUrl = apiBaseUrl + "/csapi/getBetting"; + JSONObject bettingBody = new JSONObject(); + bettingBody.put("userid", betInfo.get("siteIdxHex").toString()+betInfo.get("memberId").toString()); + bettingBody.put("sdate", dateOnly+" 00:00:00.000"); + bettingBody.put("edate", dateOnly+" 23:59:59.999"); + bettingBody.put("pagesize", "1"); + bettingBody.put("gameid", "0"); + bettingBody.put("roundcode", betInfo.get("uuid").toString()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", "Bearer " + betInfo.get("vendorApiKey").toString()); + + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Url: " + bettingUrl); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Body: " + bettingBody.toString()); + + try { + ResponseEntity bettingRes = webClient.post() + .uri(bettingUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(bettingBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(bettingRes != null && bettingRes.getBody() != null) { + JSONObject bettingObj = new JSONObject(bettingRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Response: " + bettingObj.toString()); + + int bettingResult = bettingObj.getInt("result"); + if(bettingResult == 1 && bettingObj.has("data")) { + JSONArray dataArray = bettingObj.getJSONArray("data"); + if(dataArray.length() > 0) { + isSaveEvoDetail = true; + JSONObject dataObj = dataArray.getJSONObject(0); + JSONObject detailObj = dataObj.getJSONArray("details").getJSONObject(0); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + saveObj = detailObj; + } else { + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("detail", "betId is not exist"); + String errorMsg = bettingObj.has("msg") ? bettingObj.getString("msg") : "Unknown error"; + log.error(LOG_PREFIX+ "ONIX::Betting Error: " + errorMsg); + } + } else { + responseData.put("detail", "betId is not exist"); + log.error(LOG_PREFIX+ "ONIX::Betting Response is null"); + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "ONIX::Betting HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "ONIX::Betting status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "ONIX::Betting response body : " + e.getResponseBodyAsString()); + JSONObject errorJson = new JSONObject(e.getResponseBodyAsString()); + String errorMsg = errorJson.has("msg") ? errorJson.getString("msg") : "Betting API error"; + log.error(LOG_PREFIX+ "ONIX::Betting error : " + errorMsg); + throw new ApiException("P209", errorMsg); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ReadTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "ONIX::Betting InterruptedException::" + rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch(Exception e) { + log.error(LOG_PREFIX+ "ONIX::Betting Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + } + } else if("bet_radar".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::BET_RADAR =========="); + // TODO: 베팅상세 내려주기 + /* + * param.getBetId() 기준으로 bet_radar_log 테이블 조회시 베팅과 결과 두가지가 나옴. + * 결과가 없는경우 베팅만 한가지 있을 수 있음. + * param.getBetId() 기준 bet_radar_log에서 jsonstr(베팅상세 json 원본)을 가져와서 + * 하나의 json으로 합쳐서 내려주기 구현. + */ + // bet_radar_log 테이블에서 조회 + String radarLogJson = siteService.getMergedBetRadarLog(param.getBetId()); + if(radarLogJson != null && !radarLogJson.isEmpty()) { + log.info(LOG_PREFIX+ "bet_radar_log found, returning merged json"); + dType = "detail_radar"; + responseData.put("dType", dType); + HashMap detailMap = new Gson().fromJson(radarLogJson, HashMap.class); + String detailUrl = "https://sportsbook.spokok.com/bets/detail/"+param.getBetId(); + detailMap.put("dLink", detailUrl); + responseData.put("detail", detailMap); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + } else if("thenut".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::THENUT =========="); + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + String detailType = StringUtils.getType(jsonStr); + if(detailType.equals("URL")) { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = jsonStr; + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + responseData.put("detail", url); + } else if(detailType.equals("JSON")) { + dType = "detail_3"; + responseData.put("dType", dType); + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + responseData.put("dType", dType); + responseData.put("detail", "betId is not exist"); + } + } else { + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiKey = betInfo.get("vendorApiKey").toString(); + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("betId", param.getBetId()); + + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + isSaveEvoDetail = true; + dType = "detail_3"; + responseData.put("dType", dType); + JSONObject detailObj = thenutService.getBetDetail(LOG_PREFIX, apiInfo); + if(detailObj == null) { + responseData.put("detail", "betId is not exist"); + } else { + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + saveObj = detailObj; + } + } else { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = thenutService.getBetDetailUrl(LOG_PREFIX, apiInfo); + if(detailUrl == null) { + responseData.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailUrl::"+detailUrl); + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + responseData.put("detail", url); + } + } + } + } else if("panda".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiKey = betInfo.get("vendorApiKey").toString(); + String tranId = betInfo.get("uuid").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("tranId", tranId); + String detailUrl = pandaService.getDetail(LOG_PREFIX, apiInfo); + if(detailUrl == null) { + responseData.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailUrl::"+detailUrl); + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + responseData.put("detail", url); + } + } else { + responseData.put("dType", dType); + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("dType", dType); + responseData.put("detail", "betId is not exist"); + } + + if(saveObj != null || saveObjs != null) { + // check detail data + if(isSaveEvoDetail) { + asyncSiteService.insertEvoDetailProc(LOG_PREFIX, param.getBetId(), saveObj, saveObjs); + } + } else { + log.info(LOG_PREFIX+ "saved detail is null"); + } + + } catch(Exception e) { + e.printStackTrace(); + log.error("#-API::TRANS::betDetail::Exception1::" +e.toString()); + log.error("#-API::TRANS::betDetail::Exception1::" +e.getMessage()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + log.error("#-API::TRANS::betDetail::Exception2::" +e.toString()); + log.error("#-API::TRANS::betDetail::Exception2::" +e.getMessage()); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/nexusDetail") + public ApiResponse nexusDetail(@RequestHeader String token, HttpServletRequest request, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + // apiKey 체크 + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-nexusDetail::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + log.info(LOG_PREFIX+ "BetParam::"+param.toString()); + responseData.put("betId", param.getBetId()); + + HashMap betInfo = transService.getBetInfoByBetId(param); + + if(betInfo == null) { + betInfo = transService.getSiteBetByRefIdFromOld(param); + log.info(LOG_PREFIX+ "betInfo_OLD {}", betInfo); + } + + log.info(LOG_PREFIX+ "betINfp {}", betInfo); + if(betInfo != null) { + if("nexus".equals(betInfo.get("vendorCode").toString()) || "xtreem".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Hlink or Xtreem =========="); + + long siteIdx = (long) betInfo.get("siteIdx"); + long memberIdx = (long) betInfo.get("memberIdx"); + String trxId = betInfo.get("vendorTranKey").toString(); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAgentId = betInfo.get("vendorApiId").toString(); + String apiSecretKey = betInfo.get("vendorApiKey").toString(); + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(siteIdx) + .memberIdx(memberIdx) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiSecretKey) + .build(); + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + JSONObject responseObj = transService.getNexusBetDetail(LOG_PREFIX, nexusApiInfo, trxId); + log.info(LOG_PREFIX+ "responseObj {}", responseObj); + + int resultCode = responseObj.getInt("code"); + if(resultCode == 0) { + JSONArray transactions = responseObj.getJSONArray("transactions"); + + // 금애기치환 + JSONObject transaction = transactions.getJSONObject(0); + JSONObject detailObj = transaction.getJSONObject("detail"); + + if(detailObj.isNull("result")) { + // resultObj가 존재하지 않으면 상세가 없다는 뜻. + HashMap detailMap = new HashMap<>(); + detailMap.put("refId", param.getBetId()); + int result = transService.deleteEvoDetailNull(detailMap); + log.info(LOG_PREFIX+ "deleteEvoDetailNull result::" + result + ", refId::"+param.getBetId()); + } else { + HashMap detailMap = new HashMap<>(); + detailMap.put("refId", param.getBetId()); + detailMap.put("orgDetail", detailObj.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX+ "insertEvoDetail result::" + result + ", refId::"+param.getBetId()); + // TODO : 베팅상세 파싱 치환 작업 + if(result > 0) { + changePaseDetail(LOG_PREFIX, param.getBetId(), detailObj); + } + + result = transService.deleteEvoDetailNull(detailMap); + log.info(LOG_PREFIX+ "deleteEvoDetailNull result::" + result + ", refId::"+param.getBetId()); + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX+ "Duplicate refId::"+param.getBetId()); + } + } + + } else { + responseData.put("detail", "betId is not exist"); + } + } + } + } + } catch(Exception e) { + e.printStackTrace(); + log.error("#-nexusDetail::Exception1::" +e.toString()); + log.error("#-nexusDetail::Exception1::" +e.getMessage()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + log.error("#-nexusDetail::Exception2::" +e.toString()); + log.error("#-nexusDetail::Exception2::" +e.getMessage()); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping("/nexusDetails") + public ApiResponse nexusDetails(HttpServletRequest request, @RequestHeader String token, @RequestParam String startDate, @RequestParam String endDate) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-nexusDetails::"+tokenInfo.getSid()+"::::"; + + if(startDate == null || "".equals(startDate)) { + log.error(LOG_PREFIX+ "startDate is not null or empty or blank"); + apiResponse.setResultCode("-1"); + apiResponse.setResultMessage("startDate is not null or empty or blank"); + return apiResponse; + } + + if(endDate == null || "".equals(endDate)) { + log.error(LOG_PREFIX+ "endDate is not null or empty or blank"); + apiResponse.setResultCode("-2"); + apiResponse.setResultMessage("endDate is not null or empty or blank"); + return apiResponse; + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + // 문자열 -> Date + Date date1 = sdf.parse(startDate); + Date date2 = sdf.parse(endDate); + + // Date -> 밀리세컨즈 + long timeMil1 = date1.getTime(); + long timeMil2 = date2.getTime(); + + // 비교 + long diff = timeMil2 - timeMil1; + + long diffMin = diff / (1000 * 60); + + if(diffMin > 60) { + log.error(LOG_PREFIX+ "End_Start_60분_초과"); + apiResponse.setResultCode("-3"); + apiResponse.setResultMessage("End_Start_60분_초과"); + return apiResponse; + } + + startDate = startDate+".000"; + endDate = endDate+".000"; + responseData.put("BF_START_DATE", startDate); + responseData.put("BF_END_DATE", endDate); + + startDate = makeDateStrForUTC(true, makeEdate(startDate)); + endDate = makeDateStrForUTC(true, makeEdate(endDate)); + String nextReqSDate = endDate; + String resultMsg = ""; + int totalCnt = 0; + int bfDataCnt = 0; + int afDataCnt = 0; + int nullDataCnt = 0; + int duplDataCnt = 0; + log.info(LOG_PREFIX+ "Start 시각 : " + startDate); + log.info(LOG_PREFIX+ "End 시각 : " + endDate); + responseData.put("AF_START_DATE", startDate); + responseData.put("AF_END_DATE", endDate); + + // 여기서 부터 로직 + HashMap apiInfo = transService.getApiInfo("nexus"); + // asyncTransService.getNexusEvoDetail(LOG_PREFIX, apiInfo, startDate, endDate); + + log.info(LOG_PREFIX+ "BATCH_INFO::"); + log.info(LOG_PREFIX+ "BATCH_INFO::"); + log.info(LOG_PREFIX+ "BATCH_INFO:: ============================== S T A R T =============================="); + log.info(LOG_PREFIX+ "BATCH_INFO::"); + log.info(LOG_PREFIX+ "BATCH_INFO::apiInfo : " + apiInfo.toString()); + + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", "evolution-n"); + bodyObj.put("sdate", startDate); + bodyObj.put("eDate", endDate); + bodyObj.put("username", ""); + bodyObj.put("limit", 2000); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "BATCH_INFO::bodyJson :"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/transaction"; + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.get("apiBaseUrl").toString() + "/transaction"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", "evolution-n"); + params.add("sdate", startDate); + params.add("eDate", endDate); + params.add("username", ""); + params.add("limit", 2000); + log.info(LOG_PREFIX+ "BATCH_INFO::apiUrl :"+apiUrl); + ResponseEntity response = null; + try { + response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "BATCH_INFO::WebClientResponseException : " + e.getMessage()); + log.error(LOG_PREFIX+ "BATCH_INFO::status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "BATCH_INFO::response body : " + e.getResponseBodyAsString()); + throw new ApiException("NX001", e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "BATCH_INFO::ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "BATCH_INFO::SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "BATCH_INFO::InterruptedException::"+rae.getMessage()); + } + throw new ApiException("NX002", rae.getMessage()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "BATCH_INFO::Exception : " + e.getMessage()); + throw new ApiException("NX003", e.getMessage()); + } + if(response.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(response.getBody()); + JSONArray transactionsArr = responseObj.getJSONArray("transactions"); + log.info(LOG_PREFIX+ "BATCH_INFO::transactionsArr.length() : " + transactionsArr.length()); + + totalCnt = transactionsArr.length(); + + for(int i=0; i(); + detailMap.put("refId", refId); + int result = transService.deleteEvoDetailNull(detailMap); + log.info(LOG_PREFIX+ "deleteEvoDetailNull result::" + result + ", refId::"+refId); + + nullDataCnt++; + } else { + HashMap detailMap = new HashMap<>(); + detailMap.put("refId", refId); + detailMap.put("orgDetail", detailObj.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX+ "insertEvoDetail result::" + result + ", refId::"+refId); + // TODO : 베팅상세 파싱 치환 작업 + if(result > 0) { + changePaseDetail(LOG_PREFIX, refId, detailObj); + } + + result = transService.deleteEvoDetailNull(detailMap); + log.info(LOG_PREFIX+ "deleteEvoDetailNull result::" + result + ", refId::"+refId); + + afDataCnt++; + } catch(DataIntegrityViolationException de) { + //log.error(LOG_PREFIX+ "Duplicate refId::"+refId); + duplDataCnt++; + } + } + } + } + + resultMsg = "Success"; + + } else { + resultMsg = "Request Fail::"; + log.error(LOG_PREFIX+ "Fail response::"+response.toString()); + } + + responseData.put("resultMsg", resultMsg); + responseData.put("totalCnt", totalCnt); + responseData.put("bfDataCnt", bfDataCnt); + responseData.put("afDataCnt", afDataCnt); + responseData.put("nullDataCnt", nullDataCnt); + responseData.put("duplDataCnt", duplDataCnt); + responseData.put("nextStartDate", nextReqSDate); + + log.info(LOG_PREFIX+ "BATCH_INFO::"); + log.info(LOG_PREFIX+ "BATCH_INFO:: ============================== E N D =============================="); + log.info(LOG_PREFIX+ "BATCH_INFO::"); + log.info(LOG_PREFIX+ "BATCH_INFO::"); + + } catch(Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + private void changePaseDetail(String LOG_PREFIX, String refId, JSONObject detailObj) { + + } + + + @ResponseBody + @PostMapping(value="/betDetail2") + public ApiResponse betDetail2(@RequestHeader String token, HttpServletRequest request, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + // apiKey 체크 + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::TRANS::betDetail::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + log.info(LOG_PREFIX+ "BetParam::"+param.toString()); + responseData.put("betId", param.getBetId()); + String betDetail = siteService.getBetInfo(param); + String dType = "detail_0"; + + if("".equals(betDetail) || betDetail == null) { + HashMap betInfo = transService.getBetInfoByBetId(param); + + if(betInfo == null) { + betInfo = transService.getSiteBetByRefIdFromOld(param); + log.info(LOG_PREFIX+ "betInfo_OLD {}", betInfo); + } + + log.info(LOG_PREFIX+ "betINfp {}", betInfo); + if(betInfo != null) { + String category = betInfo.get("vendorCetegory").toString(); + log.info(LOG_PREFIX+ "Game category : " + category); + + if("svendor".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr)) { + dType = "detail_6"; + responseData.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + responseData.put("detail", detailMap); + } else { + JSONObject dataObj = transService.getSvendorDetail(LOG_PREFIX, betInfo); + if(dataObj == null) { + responseData.put("detail", "betId is not exist"); + } else { + if(dataObj.has("gameDetail") && !dataObj.isNull("gameDetail")) { + String gameType = dataObj.getString("game_type"); + if(gameType.equals("slot")) { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = dataObj.getString("gameDetail"); + responseData.put("detail", detailUrl); + } else { + dType = "detail_6"; + responseData.put("dType", dType); + JSONObject detailObj = dataObj.getJSONObject("gameDetail"); + JSONObject parseJsonObj = null; + detailObj.put("parseData", parseJsonObj); + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } + } else { + responseData.put("detail", "betId is not exist"); + } + } + } + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==17 && "tower".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + responseData.put("dType", dType); + String detailUrl = + betInfo.get("vendorApiUrl").toString() + +"/v2/detail_url" + + "?site_code="+betInfo.get("vendorApiId").toString() + + "&user_id="+betInfo.get("siteHex").toString()+betInfo.get("memberId").toString() + + "&transaction_id="+betInfo.get("transactionId").toString() + + "&vendorCode=pp" + + "&gameCode="+betInfo.get("gameIdx").toString(); + log.info(LOG_PREFIX+" {}" ,detailUrl); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detailUrl) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + + log.info(LOG_PREFIX+ responseString+" {}" ,StringUtils.extractLink(responseString)); + + HashMap url = new HashMap(); + url.put("url", StringUtils.extractLink(responseString)); + + responseData.put("detail", url); + } else { + responseData.put("detail", "betId is not exist"); + } + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==83 && "splus".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Splus =========="); + dType = "detail_1"; + responseData.put("dType", dType); + + HashMap d = new HashMap(); + List splusDetail = siteService.getSplusDetailData(param); + for(HashMap ttype : splusDetail) { + log.info(LOG_PREFIX+ "{}, {}", ttype.get("tranType").toString(), ttype.get("data").toString()); + HashMap detailMap = new Gson().fromJson(ttype.get("data").toString(), HashMap.class); + d.put(ttype.get("tranType").toString(), detailMap); + } + + responseData.put("detail", d); + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==17 && "gsoft".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Gsoft =========="); + dType = "detail_2"; + responseData.put("dType", dType); + + String betId = betInfo.get("refId").toString(); + String roundId = transService.getGsoftRoundIdByBetId(betId); + + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url("https://api.iblive.net/api/apigamedetail.aspx?gtype=sxprg&roundId="+roundId) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Content-Type", "application/json") + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + log.info(LOG_PREFIX+ responseString+" {}" ,responseString); + + org.codehaus.jettison.json.JSONObject resJson = new org.codehaus.jettison.json.JSONObject(responseString); + + HashMap url = new HashMap(); + url.put("url", resJson.getString("link")); + + responseData.put("detail", url); + } + } else if("nexus".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Hlink or Xtreem =========="); + + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr)) { + dType = "detail_3"; + responseData.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + responseData.put("detail", detailMap); + } else { + long siteIdx = (long) betInfo.get("siteIdx"); + long memberIdx = (long) betInfo.get("memberIdx"); + String trxId = betInfo.get("vendorTranKey").toString(); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAgentId = betInfo.get("vendorApiId").toString(); + String apiSecretKey = betInfo.get("vendorApiKey").toString(); + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(siteIdx) + .memberIdx(memberIdx) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiSecretKey) + .build(); + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + dType = "detail_3"; + responseData.put("dType", dType); + JSONObject detailObj = transService.getNexusBetDetail(LOG_PREFIX, nexusApiInfo, trxId); + log.info(LOG_PREFIX+ "detailObj {}", detailObj); + + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + JSONArray transactions = detailObj.getJSONArray("transactions"); + if(transactions.length() > 0) { + List> detailMap = new Gson().fromJson(transactions.toString(), List.class); + responseData.put("detail", detailMap); + } else { + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("detail", "betId is not exist"); + } + } else { + dType = "detail_2"; + responseData.put("dType", dType); + JSONObject detailObj = transService.getNexusBetDetailUrl(LOG_PREFIX, nexusApiInfo, trxId); + log.info(LOG_PREFIX+ "detailObj::"+detailObj.toString()); + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + HashMap detailMap = new HashMap<>(); + detailMap.put("url", detailObj.getString("url")); + responseData.put("detail", detailMap); + } else { + responseData.put("detail", "betId is not exist"); + } + } + } + } else if("honor".equals(betInfo.get("vendorCode").toString()) || "xhlnk".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::Honor =========="); + dType = "detail_5"; + responseData.put("dType", dType); + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr)) { + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + responseData.put("detail", detailMap); + } else { + responseData.put("detail", "betId is not exist"); + } + } else if("prime".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::PRIME =========="); + dType = "detail_9"; + responseData.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr)) { + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + responseData.put("detail", detailMap); + } else { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + String apiKey = "Bearer "+betInfo.get("vendorApiKey").toString(); + headers.set("Authorization", apiKey); + String detailUrl = betInfo.get("vendorApiUrl").toString() + "/api/getBettingDetails5?"; + String detailParam = "referer="+param.getBetId(); + detailUrl = detailUrl + detailParam; + + log.info(LOG_PREFIX+ "PRIME::Detail Url: " + detailUrl); + log.info(LOG_PREFIX+ "PRIME::Detail Headers: " + headers.toString()); + ResponseEntity response = null; + JSONObject resJson = null; + try { + response = webClient.get() + .uri(detailUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "PRIME::Detail WebClientResponseException : " + e.getMessage()); + log.error(LOG_PREFIX+ "PRIME::Detail status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "PRIME::Detail response body : " + e.getResponseBodyAsString()); + resJson = new JSONObject(e.getResponseBodyAsString()); + log.error(LOG_PREFIX+ "PRIME::Detail error : " + resJson.getString("message")); + throw new ApiException("P209", resJson.getString("message")); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PRIME::Detail InterruptedException::"+rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PRIME::Detail Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + + if(response != null && response.getStatusCode() == HttpStatus.OK) { + log.info(LOG_PREFIX+ "PRIME::Play response : " + response.getBody()); + resJson = new JSONObject(response.getBody()); + JSONObject dataObj = resJson; + HashMap detailMap = new Gson().fromJson(dataObj.toString(), HashMap.class); + responseData.put("detail", detailMap); + } else { + responseData.put("detail", "betId is not exist"); + } + } + } else { + responseData.put("dType", dType); + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("dType", dType); + responseData.put("detail", "betId is not exist"); + } + } else { + responseData.put("dType", dType); + log.info(LOG_PREFIX+ "BetDetail::"+betDetail); + HashMap detailMap = new Gson().fromJson(betDetail, HashMap.class); + responseData.put("detail", detailMap); + } + + } catch(Exception e) { + e.printStackTrace(); + log.error("#-API::TRANS::betDetail::Exception1::" +e.toString()); + log.error("#-API::TRANS::betDetail::Exception1::" +e.getMessage()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + log.error("#-API::TRANS::betDetail::Exception2::" +e.toString()); + log.error("#-API::TRANS::betDetail::Exception2::" +e.getMessage()); + apiResponse.fail(); + } + + return apiResponse; + } + + + + private HttpHeaders getHeader(String LOG_PREFIX, HashMap apiInfo, String bodyJson) { + LOG_PREFIX = LOG_PREFIX + "getHeader::"; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String hashCode = getHashCode(LOG_PREFIX, bodyJson, apiInfo.get("apiSecretKey").toString()); + headers.set("hash", hashCode); + headers.set("agent", apiInfo.get("apiAgentId").toString()); + log.info(LOG_PREFIX+ "BATCH_INFO::HttpHeaders::"+headers.toString()); + + return headers; + } + + private String getHashCode(String LOG_PREFIX, String body, String secretKey) { + String hashCode = ""; + LOG_PREFIX = LOG_PREFIX + "BATCH_INFO::getHashCode::"; + try { + // Json String Body + Secret Key + String result = body + secretKey; + // String result = "{\"username\":\"057007mptest01\",\"nickname\":\"007mptest01\",\"siteUsername\":\"057007mptest01\"}"; + log.info(LOG_PREFIX+ "BATCH_INFO::Body + Secret Key::"+result); + // SHA-256 Hash make + MessageDigest digestObj = MessageDigest.getInstance("SHA-256"); + byte[] hash_data = digestObj.digest(result.getBytes("UTF-8")); + + // Base64 encoding + hashCode = Base64.getEncoder().encodeToString(hash_data); + log.info(LOG_PREFIX+ "BATCH_INFO::hashCode::"+hashCode); + } catch(Exception e) { + log.error(LOG_PREFIX+ "BATCH_INFO::#-NexusService::getHashCode::Exception::"+e.getMessage()); + } + + return hashCode; + } + + private String makeDateStrForUTC(boolean flag, String strDate) { + String result = ""; + if(flag) { + // 2022-05-01 00:00:00.000 => 2022-05-01T00:00:00.000Z + result = strDate.replace(" ", "T") + "Z"; + } else { + // 2022-05-01T00:00:00.000Z => 2022-05-01 00:00:00.000 + result = strDate.replace("T", " ").replace("Z", ""); + } + return result; + } + + private String makeEdate(String paramDate) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.HOUR_OF_DAY, -9); + Date date2 = calendar.getTime(); + eDate = sdf.format(date2); + } catch(Exception e) { + log.error(e.getMessage()); + } + return eDate; + } + +} diff --git a/src/main/java/com/bb/api/ApiUserController.java b/src/main/java/com/bb/api/ApiUserController.java new file mode 100644 index 0000000..ccc3a18 --- /dev/null +++ b/src/main/java/com/bb/api/ApiUserController.java @@ -0,0 +1,389 @@ +package com.bb.api; + +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.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +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 com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.CashParam; +import com.bb.model.Credit; +import com.bb.model.Member; +import com.bb.model.PageFormVO; +import com.bb.model.Site; +import com.bb.model.UserSearch; +import com.bb.service.CreditService; +import com.bb.service.SiteService; +import com.bb.service.StatService; +import com.bb.util.IPKit; +import com.bb.util.PagingUtil; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Controller +@RequiredArgsConstructor +@RequestMapping(value = "/api/v1/user") +public class ApiUserController { + + @Autowired + SiteService siteService; + + @Autowired + StatService statService; + + @Autowired + CreditService creditService; + + @Autowired + private final JwtManager jwtManager; + + + @ResponseBody + @PostMapping("/list") + public ApiResponse userList(@RequestHeader String token, HttpServletRequest request, @Valid @RequestBody UserSearch search) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::USER::userList::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + + PageFormVO pageVo= new PageFormVO(); + search.setSiteId(site.getSiteId()); + search.setSiteIdx((long) site.getSiteIdx()); + search.setTopId(tokenInfo.getSid()); + + log.info(LOG_PREFIX+ "UserSearch::"+search.toString()); + + int totalCount = siteService.getUserListCnt(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(30); + } 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); + + responseData.put("pageInfo", pageVo); + } + + List> list = siteService.getUserList(search); + responseData.put("list", list); + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + + @ResponseBody + @GetMapping("/detail/{siteIdx}/{memberIdx}") + public ApiResponse userDetail( @RequestHeader String token, HttpServletRequest request, @PathVariable long siteIdx, @PathVariable long memberIdx) throws Exception { + + ApiResponse apiResponse = new ApiResponse(); + try { + log.info(token.toString()); + Site site = siteService.getSiteInfoAPI(request); + + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::USER::userDetail::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + UserSearch search = new UserSearch(); + search.setSiteIdx(siteIdx); + search.setMemberIdx(memberIdx); + search.setTopId(tokenInfo.getSid()); + + log.info(LOG_PREFIX+ "UserSearch::"+search.toString()); + + HashMap targetUser = siteService.getUserDetail(search); + responseData.put("targetUser", targetUser); // 유저 상세정보 + + boolean isMyAgent = false; + List treeInfo = (List) targetUser.get("treeInfo"); + for(HashMap item : treeInfo) { + if(tokenInfo.getSid().equals(item.get("upperSiteId").toString())) { + isMyAgent = true; + } + } + if(!isMyAgent) { + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + // TODO : 에이전트 상세 베팅통계 데이터 + // TODO : 에이전트 상세 베팅통계 데이터 + HashMap ydayBetInfo = statService.getYdayBetInfoByUser(targetUser); + log.info(LOG_PREFIX+ "ydayBetInfo {}", ydayBetInfo); + HashMap monthBetInfo = statService.getMonthBetInfoByUser(targetUser); + log.info(LOG_PREFIX+ "monthBetInfo {}", monthBetInfo); + responseData.put("ydayBetInfo", ydayBetInfo); // 어제 배팅통계 + responseData.put("monthBetInfo", monthBetInfo); // 이번달 배팅통계 + + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping("/cashInOut") + public ApiResponse cashInOut(@RequestHeader String token, HttpServletRequest request, @RequestBody CashParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + try { + Site site = siteService.getSiteInfoAPI(request); + if(site == null) { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + // TO DO 토큰체크 + Map data = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::CASH::cashInOut::"+tokenInfo.getSid()+"::::"; + + // 여기서 부터 로직 + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + if("tripleSuper".equals(site.getSiteId())){ + apiResponse.setResultCode("9991"); + apiResponse.setResultMessage("Super admin is not allow"); + return apiResponse; + } + + if("N".equals(site.getIsTransfer())) { + apiResponse.setResultCode("9992"); + apiResponse.setResultMessage("NOT_TRANSFER_SITE"); + return apiResponse; + } + + //회원정보 + param.setSiteIdx(site.getSiteIdx()); + Member member = siteService.getMember2(param); + if(member == null) { + // Fail + log.error(LOG_PREFIX+ "9993:NOT_FOUND_USER"); + apiResponse.setResultCode("9993"); + apiResponse.setResultMessage("NOT_FOUND_USER"); + return apiResponse; + } + log.info(LOG_PREFIX+ "Member::"+member.toString()); + + long amount = Long.parseLong(param.getAmount()); + + // Insert credit_info : MAI, IN / MAO, OUT + Credit credit = new Credit(); + credit.setSiteIdx(site.getSiteIdx()); + credit.setSiteId(site.getSiteId()); + credit.setTargetSiteIdx(member.getMemberIdx()); + credit.setTargetSiteId(member.getMemberId()); + credit.setCreditType(param.getCreditType()); + if("MAI".equals(credit.getCreditType())) { + // 관리자 > 회원 보유금 지급 + long siteCredit = site.getCredit(); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "9994:사이트 크레딧 부족"); + apiResponse.setResultCode("9994"); + apiResponse.setResultMessage("사이트 크레딧 부족"); + return apiResponse; + } + credit.setCreditRate(null); + credit.setInOut("IN"); + credit.setTranId("회원 보유금 지급"); + credit.setCreditAmt(Long.parseLong(param.getAmount())); + credit.setUserAmt(Long.parseLong(param.getAmount())); + credit.setCreditStatus(1); + credit.setWaitTime(-5); // 재요청 대기시간 5초 + credit.setPreBalance(member.getUserBalance()); + int cnt = creditService.checkRequestTime(credit); + if(cnt > 0) { + // Fail + log.error(LOG_PREFIX+ "T1005:재요청 대기시간 5초"); + apiResponse.setResultCode("T1005"); + apiResponse.setResultMessage("재요청 대기시간 5초"); + return apiResponse; + } + + log.info(LOG_PREFIX+ "Credit::"+credit.toString()); + int result = creditService.insertCreditByCash(credit); + log.info(LOG_PREFIX+ "insertCredit result::"+result); + if(result < 0) { + // Fail + log.error(LOG_PREFIX+ "T1009:DEPOSIT_FAIL"); + apiResponse.setResultCode("T1009"); + apiResponse.setResultMessage("DEPOSIT_FAIL"); + return apiResponse; + } + + } else if("MAO".equals(credit.getCreditType())) { + // 관리자 < 회원 보유금 회수 + long userBalance = member.getUserBalance(); + if(param.getWithAll() != null && param.getWithAll().equals("Y")) { + amount = userBalance; + param.setAmount(Long.toString(amount)); + } + + if(userBalance < amount) { + log.error(LOG_PREFIX+ "9995:유저 잔액 부족"); + apiResponse.setResultCode("9995"); + apiResponse.setResultMessage("유저 잔액 부족"); + return apiResponse; + } + credit.setCreditRate(null); + credit.setInOut("OUT"); + credit.setTranId("회원 보유금 회수"); + credit.setCreditAmt(Long.parseLong(param.getAmount())); + credit.setUserAmt(Long.parseLong(param.getAmount())); + credit.setCreditStatus(1); + credit.setWaitTime(-5); // 재요청 대기시간 5초 + credit.setPreBalance(member.getUserBalance()); + int cnt = creditService.checkRequestTime(credit); + if(cnt > 0) { + // Fail + log.error(LOG_PREFIX+ "T1005:재요청 대기시간 5초"); + apiResponse.setResultCode("T1005"); + apiResponse.setResultMessage("재요청 대기시간 5초"); + return apiResponse; + } + + log.info(LOG_PREFIX+ "Credit::"+credit.toString()); + int result = creditService.insertCreditByCash(credit); + log.info(LOG_PREFIX+ "insertCredit result::"+result); + if(result < 0) { + // Fail + log.error(LOG_PREFIX+ "T1009:WITHDRAW_FAIL"); + apiResponse.setResultCode("T1009"); + apiResponse.setResultMessage("WITHDRAW_FAIL"); + return apiResponse; + } + + } else { + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("알 수 없는 요청"); + return apiResponse; + } + + } catch(Exception e) { + log.error(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + apiResponse.success(); + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + +} diff --git a/src/main/java/com/bb/common/bean/RedisSession.java b/src/main/java/com/bb/common/bean/RedisSession.java new file mode 100644 index 0000000..c78a45e --- /dev/null +++ b/src/main/java/com/bb/common/bean/RedisSession.java @@ -0,0 +1,62 @@ +package com.bb.common.bean; + +import java.util.concurrent.TimeUnit; + +import jakarta.annotation.Resource; + +//import org.springframework.data.redis.core.ValueOperations; +import org.springframework.stereotype.Component; + +import com.bb.common.model.OutLoginVO; +import com.bb.util.TempKey; +import com.google.gson.Gson; + + + +//@Component +/* +public class RedisSession { + + @Resource(name="redisTemplate") + private ValueOperations tokens; + private Gson gson = new Gson(); + + public String getToken(OutLoginVO outLoginVO) { + TempKey tempKey = new TempKey(); + String newToken = tempKey.getKey(300); + String oldToken = getCheckId(outLoginVO); + String token = null; + if(oldToken == null) { + token = newToken; + }else { + token = oldToken; + } + setToken(token, outLoginVO); + return token; + } + + private String getCheckId(OutLoginVO outLoginVO) { + String oldToken = (String) tokens.get(outLoginVO.getId()+outLoginVO.getDomain()); + return oldToken; + } + + private void setToken(String token, OutLoginVO outLoginVO) { + if(outLoginVO.getTimeout()==0 || outLoginVO.getTimeUnit()==null) { + tokens.set(token, gson.toJson(outLoginVO), 30, TimeUnit.MINUTES); + tokens.set(outLoginVO.getId()+outLoginVO.getDomain(), token, 30, TimeUnit.MINUTES); + }else { + tokens.set(token, gson.toJson(outLoginVO), outLoginVO.getTimeout(), outLoginVO.getTimeUnit()); + tokens.set(outLoginVO.getId()+outLoginVO.getDomain(), token, outLoginVO.getTimeout(), outLoginVO.getTimeUnit()); + } + } + + public OutLoginVO getUserVO(String token) { + OutLoginVO outLoginVO = gson.fromJson(tokens.get(token), OutLoginVO.class); + if(outLoginVO != null) { + setToken(token, outLoginVO); + } + return outLoginVO; + } + +} +*/ diff --git a/src/main/java/com/bb/common/controller/BetResultProcController.java b/src/main/java/com/bb/common/controller/BetResultProcController.java new file mode 100644 index 0000000..bf504d0 --- /dev/null +++ b/src/main/java/com/bb/common/controller/BetResultProcController.java @@ -0,0 +1,11 @@ +package com.bb.common.controller; + +public class BetResultProcController { + + //베팅결과 가져와서 우리족 디비에넣고 해당사이트에로 연동 URL 보내주기 (베팅 , 당첨 ) + + //해당 사이트 크레딧 처리 + + + +} diff --git a/src/main/java/com/bb/common/model/InChatMessageVO.java b/src/main/java/com/bb/common/model/InChatMessageVO.java new file mode 100644 index 0000000..eed86f2 --- /dev/null +++ b/src/main/java/com/bb/common/model/InChatMessageVO.java @@ -0,0 +1,39 @@ +package com.bb.common.model; + +public class InChatMessageVO { + + private String token; // 사용자 정보를 가져올 토큰 + private String content; // 메세지 내용 + private String type; // 채팅 타입 + private String chatId; // 채팅 고유 아이디 + + public String getToken() { + return token; + } + public void setToken(String token) { + this.token = token; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + public String getChatId() { + return chatId; + } + public void setChatId(String chatId) { + this.chatId = chatId; + } + @Override + public String toString() { + return "InChatMessageVO [token=" + token + ", content=" + content + ", type=" + type + ", chatId=" + chatId + + "]"; + } +} diff --git a/src/main/java/com/bb/common/model/OutChatMessageVO.java b/src/main/java/com/bb/common/model/OutChatMessageVO.java new file mode 100644 index 0000000..98425be --- /dev/null +++ b/src/main/java/com/bb/common/model/OutChatMessageVO.java @@ -0,0 +1,43 @@ +package com.bb.common.model; + +public class OutChatMessageVO { + + private String id; + private String content; + + + + + public String getId() { + return id; + } + + + + + public void setId(String id) { + this.id = id; + } + + + + + public String getContent() { + return content; + } + + + + + public void setContent(String content) { + this.content = content; + } + + + + + @Override + public String toString() { + return "OutChatMessageVO [id=" + id + ", content=" + content + "]"; + } +} diff --git a/src/main/java/com/bb/common/model/OutLoginVO.java b/src/main/java/com/bb/common/model/OutLoginVO.java new file mode 100644 index 0000000..d612eef --- /dev/null +++ b/src/main/java/com/bb/common/model/OutLoginVO.java @@ -0,0 +1,51 @@ +package com.bb.common.model; + +import java.io.Serializable; +import java.util.concurrent.TimeUnit; + +public class OutLoginVO implements Serializable { + + private static final long serialVersionUID = 1L; + + private String id; + private String name; + private String domain; + private int timeout; + private TimeUnit timeUnit; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getDomain() { + return domain; + } + public void setDomain(String domain) { + this.domain = domain; + } + public int getTimeout() { + return timeout; + } + public void setTimeout(int timeout) { + this.timeout = timeout; + } + public TimeUnit getTimeUnit() { + return timeUnit; + } + public void setTimeUnit(TimeUnit timeUnit) { + this.timeUnit = timeUnit; + } + @Override + public String toString() { + return "OutLoginVO [id=" + id + ", name=" + name + ", domain=" + domain + ", timeout=" + timeout + ", timeUnit=" + + timeUnit + "]"; + } +} diff --git a/src/main/java/com/bb/config/AccessLogFilter.java b/src/main/java/com/bb/config/AccessLogFilter.java new file mode 100644 index 0000000..e26479d --- /dev/null +++ b/src/main/java/com/bb/config/AccessLogFilter.java @@ -0,0 +1,125 @@ +package com.bb.config; + +/* +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import jakarta.servlet.*; +import jakarta.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.io.UnsupportedEncodingException; + +@Component +public class AccessLogFilter implements Filter { + + private static final Logger LOG = LoggerFactory.getLogger(AccessLogFilter.class); + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + + @Override + public void destroy() { + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + CustomRequestWrapper customRequestWrapper = new CustomRequestWrapper((HttpServletRequest) servletRequest); + String accessLog = buildAccessLog(customRequestWrapper); + LOG.info(accessLog); + + try { + filterChain.doFilter(customRequestWrapper, servletResponse); + } finally { + customRequestWrapper.setBody(null); + } + } + + private String buildAccessLog(CustomRequestWrapper customRequestWrapper) { + + String requestURL = getRequestURL(customRequestWrapper); + String remoteAddr = getRemoteAddr(customRequestWrapper); + String method = getMethod(customRequestWrapper); + String queryString = getQueryString(customRequestWrapper); + String requestBody = getRequestBody(customRequestWrapper); + + StringBuilder sb = new StringBuilder(); + sb.append("##### ACCESS LOG {"); + if (requestURL != null) { + sb + .append("\"").append("requestURL").append("\"") + .append(":") + .append("\"").append(requestURL).append("\""); + } + if (remoteAddr != null) { + sb + .append(",") + .append("\"").append("remoteAddr").append("\"") + .append(":") + .append("\"").append(remoteAddr).append("\""); + } + if (method != null) { + sb + .append(",") + .append("\"").append("method").append("\"") + .append(":") + .append("\"").append(method).append("\""); + } + if (queryString != null) { + sb + .append(",") + .append("\"").append("queryString").append("\"") + .append(":") + .append("\"").append(queryString).append("\""); + } + if (requestBody != null && requestBody.length() > 0) { + sb + .append(",") + .append("\"").append("body").append("\"") + .append(":") + .append("\"").append(requestBody).append("\""); + } + sb.append("}"); + return sb.toString(); + } + + private String getRequestBody(CustomRequestWrapper customRequestWrapper) { + String content = null; + String method = customRequestWrapper.getMethod().toLowerCase(); + + // POST, PUT + application/json + if (method.startsWith("p")) { + if (customRequestWrapper.getContentType().toLowerCase().indexOf("json") > 0) { + try { + content = new String(customRequestWrapper.getBody(), customRequestWrapper.getCharacterEncoding()); + } catch (UnsupportedEncodingException e) { + LOG.error(e.getMessage()); + } + } + } + return content; + } + + private String getQueryString(CustomRequestWrapper customRequestWrapper) { + String queryString = null; + if (customRequestWrapper.getQueryString() != null) { + queryString = customRequestWrapper.getQueryString(); + } + return queryString; + } + + private String getMethod(CustomRequestWrapper customRequestWrapper) { + return customRequestWrapper.getMethod(); + } + + private String getRemoteAddr(CustomRequestWrapper customRequestWrapper) { + return customRequestWrapper.getRemoteAddr(); + } + + private String getRequestURL(CustomRequestWrapper customRequestWrapper) { + return customRequestWrapper.getRequestURL().toString(); + } + +} + */ diff --git a/src/main/java/com/bb/config/ApiKeyFilter.java b/src/main/java/com/bb/config/ApiKeyFilter.java new file mode 100644 index 0000000..0b151f5 --- /dev/null +++ b/src/main/java/com/bb/config/ApiKeyFilter.java @@ -0,0 +1,39 @@ +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); + } + } +} diff --git a/src/main/java/com/bb/config/AsyncConfig.java b/src/main/java/com/bb/config/AsyncConfig.java new file mode 100644 index 0000000..8404efb --- /dev/null +++ b/src/main/java/com/bb/config/AsyncConfig.java @@ -0,0 +1,59 @@ +package com.bb.config; + +import java.util.concurrent.Executor; + +import org.springframework.context.annotation.Bean; +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 = 10; + + // 동시 동작하는 최대 Thread의 수 + private final int MAX_POOL_SIZE = 50; + + // MaxPoolSize 초과 요청에서 Thread 생성 요청 시, 해당 요청을 Queue에 저장하는데 이때 최대 수용 가능한 Queue의 수 + private final int QUEUE_CAPACITY = 500; + + // maxPoolSize가 모두 사용되다가 idle(쓰레드 휴식상태)로 돌아갔을 때 종료하기까지 대기하는 걸리는 시간 + private final int KEEP_ALIVE_SECONDS = 60; + + // 생성되는 Thread 접두사 지정 + private final String CUSTOM_THREAD_NAME_PREFIX = "HSLOT-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; + } + + // 포인트 처리 전용 Executor 추가 + @Bean(name = "pointTaskExecutor") + public Executor pointTaskExecutor() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(5); + executor.setMaxPoolSize(10); + executor.setQueueCapacity(100); + executor.setKeepAliveSeconds(60); + executor.setThreadNamePrefix("PointAsync-"); + executor.setWaitForTasksToCompleteOnShutdown(true); + executor.initialize(); + return executor; + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/AuthFailureHandler.java b/src/main/java/com/bb/config/AuthFailureHandler.java new file mode 100644 index 0000000..c9bf26e --- /dev/null +++ b/src/main/java/com/bb/config/AuthFailureHandler.java @@ -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?code=1"); + } +} diff --git a/src/main/java/com/bb/config/AuthProvider.java b/src/main/java/com/bb/config/AuthProvider.java new file mode 100644 index 0000000..3eacac4 --- /dev/null +++ b/src/main/java/com/bb/config/AuthProvider.java @@ -0,0 +1,144 @@ +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.stereotype.Component; +import org.springframework.stereotype.Repository; + +import com.bb.admin.controller.MainController; +import com.bb.exception.ApiException; +import com.bb.model.OTPInfo; +import com.bb.model.Site; +import com.bb.service.SiteService; +import com.bb.util.TOTPTokenGenerator; + +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 + SiteService siteService; + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + String id = authentication.getName(); + String password = authentication.getCredentials().toString(); + String verificationCode = ((CustomWebAuthenticationDetails) authentication.getDetails()).getVerificationCode(); + + final String LOG_PREFIX = "#-AP::"+id+":::"; + log.info(LOG_PREFIX+ "Authentication::"+authentication.toString()); + log.info(LOG_PREFIX+ "verificationCode::"+verificationCode); + + Site agency = null; + boolean isAdmin = false; + if(!"".equals(id)) { + log.info(LOG_PREFIX+ "Super Login!!!"); + isAdmin = true; + agency = siteService.getSiteLogin(authentication); + } else { + log.info(LOG_PREFIX+ "Guest Login!!!"); + isAdmin = false; + agency = siteService.getGuestLogin(); + id = "oms"; + } + + OTPInfo otpInfo = siteService.getOtpInfo(agency.getSiteIdx()); + if(otpInfo == null || otpInfo.getAccount().equals("")) { + log.error(LOG_PREFIX+ "OTP 정보를 찾을 수 없습니다."); + return null; + } + + if(otpInfo.getSecretKey() == null || otpInfo.getSecretKey().equals("")) { + // Create New OTP + otpInfo = TOTPTokenGenerator.getGoogleAuthQRUrl(otpInfo); + + log.info(LOG_PREFIX+ "makeOtp:: secret : " + otpInfo.getSecretKey()); + log.info(LOG_PREFIX+ "makeOtp::account : " + otpInfo.getAccount()); + log.info(LOG_PREFIX+ "makeOtp:: issuer : " + otpInfo.getIssuer()); + log.info(LOG_PREFIX+ "makeOtp:: URL : " + otpInfo.getUrl()); + + int result = siteService.registSuperOtp(otpInfo); + log.info(LOG_PREFIX+ "makeOtp:: result : " + result); + } else { + log.info(LOG_PREFIX+ "OTP Info : " + otpInfo); + String secret = otpInfo.getSecretKey(); + + if(verificationCode == null || verificationCode.equals("")) { + log.error(LOG_PREFIX+ "OTP 번호를 입력하세요."); + return null; + } + + boolean chkOtp = TOTPTokenGenerator.otpVerify(secret, Integer.parseInt(verificationCode)); + if(!chkOtp) { + log.error(LOG_PREFIX+ "OTP 번호가 일치하지 않습니다."); + return null; + } + } + + if(isAdmin) { + OTPInfo otpManager = siteService.getOtpInfoByManger(agency.getSiteIdx()); + if(otpManager.getSecretKey() == null || otpManager.getSecretKey().equals("")) { + // Create New Manager OTP + otpManager = TOTPTokenGenerator.getGoogleAuthQRUrl(otpManager); + + log.info(LOG_PREFIX+ "Manager makeOtp:: secret : " + otpManager.getSecretKey()); + log.info(LOG_PREFIX+ "ManagermakeOtp::account : " + otpManager.getAccount()); + log.info(LOG_PREFIX+ "ManagermakeOtp:: issuer : " + otpManager.getIssuer()); + log.info(LOG_PREFIX+ "ManagermakeOtp:: URL : " + otpManager.getUrl()); + + log.info(LOG_PREFIX+ "Manager otpManager:: " + otpManager.toString()); + int result = siteService.registSuperOtp(otpManager); + log.info(LOG_PREFIX+ "ManagermakeOtp:: result : " + result); + } + } + + if(agency == null) { + return null; + } else { + Site loginVO = new Site(); + loginVO = agency; + + List roles = new ArrayList(); + if(isAdmin) { + roles.add(new SimpleGrantedAuthority("ROLE_ADMIN")); + } else { + roles.add(new SimpleGrantedAuthority("ROLE_GUEST")); + } + + UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(id, password, roles); + result.setDetails(loginVO); + // log.info(LOG_PREFIX+ "UsernamePasswordAuthenticationToken result::"+result.getDetails().toString()); + + return result; + } + + } + + + + @Override + public boolean supports(Class authentication) { + return authentication.equals(UsernamePasswordAuthenticationToken.class); + } + +} diff --git a/src/main/java/com/bb/config/AuthSuccessHandler.java b/src/main/java/com/bb/config/AuthSuccessHandler.java new file mode 100644 index 0000000..48dc386 --- /dev/null +++ b/src/main/java/com/bb/config/AuthSuccessHandler.java @@ -0,0 +1,89 @@ +package com.bb.config; + +import java.io.IOException; + +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; + +import com.bb.common.model.OutLoginVO; +import com.bb.model.Site; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; +import org.springframework.security.web.context.HttpSessionSecurityContextRepository; +import org.springframework.security.web.context.SecurityContextRepository; +import org.springframework.stereotype.Component; + +/** + * Description: 스프링시큐리티 인증 성공 핸들러 (Spring Security 6 대응) + * 작성된 코드에서 JSON 출력 로직을 제거하고 명시적 세션 저장을 추가했습니다. + */ +@Slf4j +@Component +public class AuthSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { + + // [1번 방식 핵심] SecurityContextConfig에서 등록한 빈을 주입받아 사용합니다. + // 이를 통해 SecurityConfig와의 순환 참조 문제를 해결합니다. + @Autowired + private SecurityContextRepository securityContextRepository; + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, + Authentication authentication) throws ServletException, IOException { + + // 1. [핵심] SecurityContext 생성 및 명시적 저장 + // Spring Security 6부터는 이 과정이 있어야 리다이렉트 후 @Secured가 권한을 올바르게 인식합니다. + SecurityContext context = SecurityContextHolder.createEmptyContext(); + context.setAuthentication(authentication); + SecurityContextHolder.setContext(context); + + // [수정] 빈으로 주입받은 repository를 통해 세션에 SecurityContext를 영구 저장 (Persistence) + securityContextRepository.saveContext(context, request, response); + request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, context); + + // 2. 로그인 사용자 정보 추출 (UserDetails 대신 사용 중인 Site 객체) + Site login = (Site) authentication.getDetails(); + final String LOG_PREFIX = "#-AS::" + (login != null ? login.getSiteId() : "Unknown") + ":::"; + + String authorities = authentication.getAuthorities() + .stream() + .map(GrantedAuthority::getAuthority) + .reduce((a, b) -> a + ", " + b) + .orElse("없음"); + + log.info(LOG_PREFIX + "로그인 성공 - 권한: " + authorities); + + // 3. 커스텀 세션 정보 저장 + HttpSession session = request.getSession(true); + session.setAttribute("user", login); + + // 4. 권한에 따른 리다이렉트 경로 결정 + String targetUrl; + if (authorities.contains("ROLE_ADMIN")) { + // 관리자 세션 추가 정보 설정 (필요 시) + OutLoginVO outLoginVO = new OutLoginVO(); + outLoginVO.setDomain(login != null ? login.getDomain() : ""); + outLoginVO.setId(login != null ? login.getSiteId() : ""); + + targetUrl = "/index"; + } else { + targetUrl = "/guest/simpleReport"; + } + + log.info(LOG_PREFIX + "Redirecting to: " + targetUrl); + + // 5. 리다이렉트 실행 (Clear prior attributes and redirect) + clearAuthenticationAttributes(request); + getRedirectStrategy().sendRedirect(request, response, targetUrl); + + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/CachedByteArrayInputStream.java b/src/main/java/com/bb/config/CachedByteArrayInputStream.java new file mode 100644 index 0000000..dc2c480 --- /dev/null +++ b/src/main/java/com/bb/config/CachedByteArrayInputStream.java @@ -0,0 +1,33 @@ +package com.bb.config; + + +import jakarta.servlet.ReadListener; +import jakarta.servlet.ServletInputStream; +import java.io.ByteArrayInputStream; + +public class CachedByteArrayInputStream extends ServletInputStream { + private ByteArrayInputStream in; + + public CachedByteArrayInputStream(byte[] body) { + this.in = new ByteArrayInputStream(body); + } + + @Override + public boolean isFinished() { + return false; + } + + @Override + public boolean isReady() { + return false; + } + + @Override + public void setReadListener(ReadListener readListener) { + } + + @Override + public int read() { + return in.read(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/CorsConfig.java b/src/main/java/com/bb/config/CorsConfig.java new file mode 100644 index 0000000..20a2e87 --- /dev/null +++ b/src/main/java/com/bb/config/CorsConfig.java @@ -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(false) // 쿠키 요청을 허용한다(다른 도메인 서버 + .maxAge(86400); + + WebMvcConfigurer.super.addCorsMappings(registry); + + } +} diff --git a/src/main/java/com/bb/config/CustomRequestWrapper.java b/src/main/java/com/bb/config/CustomRequestWrapper.java new file mode 100644 index 0000000..490d949 --- /dev/null +++ b/src/main/java/com/bb/config/CustomRequestWrapper.java @@ -0,0 +1,45 @@ +package com.bb.config; + +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequestWrapper; +import java.io.ByteArrayOutputStream; +import java.io.DataInputStream; +import java.io.IOException; + +public class CustomRequestWrapper extends HttpServletRequestWrapper { + + private byte[] body; + + public CustomRequestWrapper(HttpServletRequest httpServletRequest) { + super(httpServletRequest); + try { +// this.body = IOUtils.toByteArray(httpServletRequest.getInputStream()); + DataInputStream dis = new DataInputStream(httpServletRequest.getInputStream()); + ByteArrayOutputStream os = new ByteArrayOutputStream(); +// byte[] buffer = new byte[0xFFFF]; + byte[] buffer = new byte[1024]; + for (int len = dis.read(buffer); len != -1; len = dis.read(buffer)) { + os.write(buffer, 0, len); + } + os.flush(); + this.body = os.toByteArray(); + } catch (IOException ioe) { + System.out.println("IOException"); + } + } + + public byte[] getBody() { + return body; + } + + public void setBody(byte[] body) { + this.body = body; + } + + @Override + public ServletInputStream getInputStream() { + return new CachedByteArrayInputStream(this.body); + } + +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/CustomServletWrappingFilter.java b/src/main/java/com/bb/config/CustomServletWrappingFilter.java new file mode 100644 index 0000000..66eade9 --- /dev/null +++ b/src/main/java/com/bb/config/CustomServletWrappingFilter.java @@ -0,0 +1,25 @@ +package com.bb.config; + + +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; +import org.springframework.web.util.ContentCachingRequestWrapper; +import org.springframework.web.util.ContentCachingResponseWrapper; + +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; + +@Component +public class CustomServletWrappingFilter extends OncePerRequestFilter { + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { + ContentCachingRequestWrapper wrappingRequest = new ContentCachingRequestWrapper(request); + ContentCachingResponseWrapper wrappingResponse = new ContentCachingResponseWrapper(response); + filterChain.doFilter(wrappingRequest, wrappingResponse); + wrappingResponse.copyBodyToResponse(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/CustomWebAuthenticationDetails.java b/src/main/java/com/bb/config/CustomWebAuthenticationDetails.java new file mode 100644 index 0000000..5877062 --- /dev/null +++ b/src/main/java/com/bb/config/CustomWebAuthenticationDetails.java @@ -0,0 +1,20 @@ +package com.bb.config; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.security.web.authentication.WebAuthenticationDetails; + +public class CustomWebAuthenticationDetails extends WebAuthenticationDetails { + + private String verificationCode; + + public CustomWebAuthenticationDetails(HttpServletRequest request) { + super(request); + verificationCode = request.getParameter("code"); + } + + public String getVerificationCode() { + return verificationCode; + } + +} diff --git a/src/main/java/com/bb/config/CustomWebAuthenticationDetailsSource.java b/src/main/java/com/bb/config/CustomWebAuthenticationDetailsSource.java new file mode 100644 index 0000000..a058946 --- /dev/null +++ b/src/main/java/com/bb/config/CustomWebAuthenticationDetailsSource.java @@ -0,0 +1,18 @@ +package com.bb.config; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.security.authentication.AuthenticationDetailsSource; +import org.springframework.security.web.authentication.WebAuthenticationDetails; +import org.springframework.stereotype.Component; + +@Component +public class CustomWebAuthenticationDetailsSource implements AuthenticationDetailsSource { + + @Override + public WebAuthenticationDetails buildDetails(HttpServletRequest context) { + // TODO Auto-generated method stub + return new CustomWebAuthenticationDetails(context); + } + +} diff --git a/src/main/java/com/bb/config/DbConfig.java b/src/main/java/com/bb/config/DbConfig.java new file mode 100644 index 0000000..7fe6ce0 --- /dev/null +++ b/src/main/java/com/bb/config/DbConfig.java @@ -0,0 +1,130 @@ +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 트리플-Main 생성 */ + @Bean + @Primary + @ConfigurationProperties(prefix = "spring.datasource1") + public DataSource mysql1DataSource() { + return DataSourceBuilder.create() + .type(HikariDataSource.class) + .build(); + } + + /** DataSource 트리플-Sub 생성 */ + @Bean + @ConfigurationProperties(prefix = "spring.datasource2") + public DataSource mysql2DataSource() { + return DataSourceBuilder.create() + .type(HikariDataSource.class) + .build(); + } + + /** sqlSessionFactory 트리플-Main 생성 */ + @Bean + @Primary + public SqlSessionFactory sqlSessionFactoryMain(@Autowired @Qualifier("mysql1DataSource") 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 트리플-Sub 생성 */ + @Bean + public SqlSessionFactory sqlSessionFactory(@Autowired @Qualifier("mysql2DataSource") 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 트리플-Main 생성 */ + @Bean + @Primary + public SqlSession sqlSessionMain(@Autowired @Qualifier("sqlSessionFactoryMain") SqlSessionFactory factory) { + return new SqlSessionTemplate(factory); + } + + /** sqlSession 트리플-Sub 생성 */ + @Bean + public SqlSession sqlSessionSub(@Autowired @Qualifier("sqlSessionFactory") 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; + } + + + + + + + +} diff --git a/src/main/java/com/bb/config/GlobalModelAdvice.java b/src/main/java/com/bb/config/GlobalModelAdvice.java new file mode 100644 index 0000000..991434d --- /dev/null +++ b/src/main/java/com/bb/config/GlobalModelAdvice.java @@ -0,0 +1,21 @@ +package com.bb.config; + +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ModelAttribute; + +@ControllerAdvice +public class GlobalModelAdvice { + + @ModelAttribute("currentURI") + public String currentURI(HttpServletRequest request) { + String uri = request.getRequestURI(); + String query = request.getQueryString(); + + // 쿼리 스트링이 있다면 URI 뒤에 붙여서 반환 (예: /insurance/betList?updown=up) + if (query != null && !query.isEmpty()) { + return uri + "?" + query; + } + return uri; + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/GuestProvider.java b/src/main/java/com/bb/config/GuestProvider.java new file mode 100644 index 0000000..718c643 --- /dev/null +++ b/src/main/java/com/bb/config/GuestProvider.java @@ -0,0 +1,86 @@ +package com.bb.config; + +import java.util.ArrayList; +import java.util.List; + +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.stereotype.Component; + +import com.bb.model.OTPInfo; +import com.bb.model.Site; +import com.bb.service.SiteService; +import com.bb.util.TOTPTokenGenerator; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Component("guestProvider") +public class GuestProvider implements AuthenticationProvider { + + @Autowired + SiteService siteService; + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + String verificationCode = ((CustomWebAuthenticationDetails) authentication.getDetails()).getVerificationCode(); + + final String LOG_PREFIX = "#-GuestProvider:::"; + log.info(LOG_PREFIX+ "Authentication::"+authentication.toString()); + log.info(LOG_PREFIX+ "verificationCode::"+verificationCode); + + Site guest = siteService.getGuestLogin(); + OTPInfo otpInfo = siteService.getOtpInfo(guest.getSiteIdx()); + + if(otpInfo.getSecretKey() == null || otpInfo.getSecretKey().equals("")) { + // Create New OTP + otpInfo = TOTPTokenGenerator.getGoogleAuthQRUrl(otpInfo); + + log.info(LOG_PREFIX+ "makeOtp:: secret : " + otpInfo.getSecretKey()); + log.info(LOG_PREFIX+ "makeOtp::account : " + otpInfo.getAccount()); + log.info(LOG_PREFIX+ "makeOtp:: issuer : " + otpInfo.getIssuer()); + log.info(LOG_PREFIX+ "makeOtp:: URL : " + otpInfo.getUrl()); + + int result = siteService.registSuperOtp(otpInfo); + log.info(LOG_PREFIX+ "makeOtp:: result : " + result); + } else { + log.info(LOG_PREFIX+ "OTP Info : " + otpInfo); + String secret = otpInfo.getSecretKey(); + + if(verificationCode == null || verificationCode.equals("")) { + log.error(LOG_PREFIX+ "OTP 번호를 입력하세요."); + return null; + } + + boolean chkOtp = TOTPTokenGenerator.otpVerify(secret, Integer.parseInt(verificationCode)); + if(!chkOtp) { + log.error(LOG_PREFIX+ "OTP 번호가 일치하지 않습니다."); + return null; + } + } + + if(guest == null) { + return null; + } else { + List roles = new ArrayList(); + roles.add(new SimpleGrantedAuthority("GUEST")); + + UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken("oms", "ehfrhfo22#", roles); + result.setDetails(guest); + + return result; + } + } + + @Override + public boolean supports(Class authentication) { + // TODO Auto-generated method stub + return authentication.equals(UsernamePasswordAuthenticationToken.class); + } + +} diff --git a/src/main/java/com/bb/config/HttpInterceptor.java b/src/main/java/com/bb/config/HttpInterceptor.java new file mode 100644 index 0000000..325423b --- /dev/null +++ b/src/main/java/com/bb/config/HttpInterceptor.java @@ -0,0 +1,83 @@ +package com.bb.config; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Component; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.ModelAndView; + + +import com.bb.util.StringUtils; + + +import lombok.extern.slf4j.Slf4j; + +import java.io.DataInputStream; +import java.util.Enumeration; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +@Slf4j +@Component +public class HttpInterceptor implements HandlerInterceptor { + private final static String REQUEST_POST = "POST"; + + + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + log.info("Requested Domain (Host): {}", request.getHeader("Host")); + log.info("[preHandle]"+request.getRequestURI() +","+request.getMethod()); + + + log.info("___________________Parameter____________________________ "); + + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info(name + "=" + value); + } + + + log.info("____________________________ Header ____________________________ "); + + Enumeration headers = request.getHeaderNames(); + while (headers.hasMoreElements()) { + String name = (String) headers.nextElement(); + String value = request.getHeader(name); + log.info(name + "=" + value); + } + + + log.info("____________________________ Request Body ____________________________ "); + /* + try { + DataInputStream dis = new DataInputStream(request.getInputStream()); + String str = null; + while ((str = dis.readLine()) != null) { + log.info(new String(str.getBytes("ISO-8859-1"), "euc-kr")+"
"); + // utf-8로 전송된 한글은 깨짐 + + } + }catch(Exception e) { + log.info("ERROR E : {}", e.getMessage()); + } + */ + return true; + } + + @Override + public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + log.info("[postHandle]"+request.getRequestURI()); + } + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex) throws Exception { + log.info("[afterCompletion]"+request.getRequestURI()); + } + +} + diff --git a/src/main/java/com/bb/config/InterceptorConfig.java b/src/main/java/com/bb/config/InterceptorConfig.java new file mode 100644 index 0000000..0f6b8d6 --- /dev/null +++ b/src/main/java/com/bb/config/InterceptorConfig.java @@ -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/*") .addPathPatterns("/api/**") + .excludePathPatterns("/api/login", "/api/signUp"); // 해당 경로는 인터셉터가 가로채지 않는다. + } +} + + diff --git a/src/main/java/com/bb/config/OpenapiConfig.java b/src/main/java/com/bb/config/OpenapiConfig.java new file mode 100644 index 0000000..468bdbd --- /dev/null +++ b/src/main/java/com/bb/config/OpenapiConfig.java @@ -0,0 +1,55 @@ +package com.bb.config; + +// 중요: 패키지 경로에 .models 가 추가되었습니다. +import org.springdoc.core.models.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.annotations.servers.Server; + +@Configuration +@OpenAPIDefinition( + servers = { + @Server(url = "https://oprvender.com"), + @Server(url = "http://localhost"), + @Server(url = "http://lz.akrra.cc") + }, + info = @Info(title = "My API", version = "v1") +) +@SecurityScheme( + name = "Authorization", + 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(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/RedisConfig.java b/src/main/java/com/bb/config/RedisConfig.java new file mode 100644 index 0000000..a9bb656 --- /dev/null +++ b/src/main/java/com/bb/config/RedisConfig.java @@ -0,0 +1,26 @@ +package com.bb.config; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +//import org.springframework.data.redis.connection.RedisConnectionFactory; +//import org.springframework.data.redis.core.StringRedisTemplate; +/* +@Configuration +public class RedisConfig { + + @Bean + public StringRedisTemplate stringRedisTemplate( + @Qualifier("redisConnectionFactory") RedisConnectionFactory redisConnectionFactory + ) { + + StringRedisTemplate template = new StringRedisTemplate(); + template.setConnectionFactory(redisConnectionFactory); + + return template; + } + + + +} +*/ diff --git a/src/main/java/com/bb/config/RestTemplateConfig.java b/src/main/java/com/bb/config/RestTemplateConfig.java new file mode 100644 index 0000000..cff219f --- /dev/null +++ b/src/main/java/com/bb/config/RestTemplateConfig.java @@ -0,0 +1,43 @@ +package com.bb.config; + +import org.apache.hc.client5.http.classic.HttpClient; +import org.apache.hc.client5.http.impl.classic.HttpClientBuilder; +import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager; +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 { + + @Bean + public HttpClient httpClient() { + // HttpClient 5에서는 PoolingHttpClientConnectionManager를 사용하여 커넥션 풀을 관리합니다. + PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(); + connectionManager.setMaxTotal(4096); // 최대 오픈되는 커넥션 수 + connectionManager.setDefaultMaxPerRoute(200); // IP, 포트 1쌍에 대해 수행할 커넥션 수 + + return HttpClientBuilder.create() + .setConnectionManager(connectionManager) + .build(); + } + + @Bean + public HttpComponentsClientHttpRequestFactory factory(HttpClient httpClient) { + // HttpClient 5를 사용하는 팩토리 생성 + HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient); + + // Spring Boot 3/HttpClient 5에서는 타임아웃 설정을 팩토리에서 직접 관리하거나 + // 필요한 경우 빌더 단계에서 설정합니다. + factory.setConnectTimeout(3000); // 연결시간초과, ms + // 주의: v5용 팩토리에서 setReadTimeout은 지원되지 않을 수 있으므로, + // 런타임 에러 시 빌더의 RequestConfig 설정을 사용해야 합니다. + return factory; + } + + @Bean + public RestTemplate restTemplate(HttpComponentsClientHttpRequestFactory factory) { + return new RestTemplate(factory); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/SecurityConfig.java b/src/main/java/com/bb/config/SecurityConfig.java new file mode 100644 index 0000000..965edc8 --- /dev/null +++ b/src/main/java/com/bb/config/SecurityConfig.java @@ -0,0 +1,122 @@ +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.security.access.expression.method.DefaultMethodSecurityExpressionHandler; +import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.context.SecurityContextRepository; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Configuration +@EnableWebSecurity +@EnableMethodSecurity(securedEnabled = true, prePostEnabled = true, proxyTargetClass = true) // EnableGlobalMethodSecurity 대체 +@ComponentScan(basePackages = {"com.bb.*"}) +public class SecurityConfig { + + @Autowired + AuthProvider authProvider; + + @Autowired + AuthFailureHandler authFailureHandler; + + @Autowired + AuthSuccessHandler authSuccessHandler; + + @Autowired + CustomWebAuthenticationDetailsSource authenticationDetailsSource; + + static final String SERVER_HOST_1 = "139-162-90-184.ip.linodeusercontent.com"; + static final String SERVER_HOST_2 = "139-162-90-179.ip.linodeusercontent.com"; + + @Bean + public MethodSecurityExpressionHandler methodSecurityExpressionHandler() { + DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler(); + // ROLE_ 접두사 규칙을 강제합니다. + expressionHandler.setDefaultRolePrefix("ROLE_"); + return expressionHandler; + } + /** + * 기존 web.ignoring() 설정 부분 + */ + @Bean + public WebSecurityCustomizer webSecurityCustomizer() { + return (web) -> web.ignoring().requestMatchers( + "/v3/api-docs", "/swagger-resources/**", "/webjars/**", "/swagger/**", "/favicon.ico", + "/html/**", "/resources/**", "/websocket", "/websocket/**", "/images/**", + "/img/**", "/css/**", "/js/**" + ); + } + + /** + * 관리자 및 메인 보안 설정 (SecurityFilterChain) + */ + @Bean + public SecurityFilterChain filterChain(HttpSecurity http, SecurityContextRepository securityContextRepository) throws Exception { + + http + .cors(cors -> cors.configurationSource(corsConfigurationSource())) + .csrf(csrf -> csrf.disable()) + .headers(headers -> headers.frameOptions(frame -> frame.disable())) + .securityContext(context -> context + .securityContextRepository(securityContextRepository) + ) + .authenticationProvider(authProvider); + + http.authorizeHttpRequests(auth -> auth + .requestMatchers("/", "/login/**", "/lg/**", "/api/**", "/actuator/**", "/lunch/**", "/websocket", "/websocket/**", "/guest/guestLogin").permitAll() + .anyRequest().authenticated() + ); + + http.formLogin(form -> form + .loginPage("/lg") + .loginProcessingUrl("/authenticate") + .failureHandler(authFailureHandler) + .successHandler(authSuccessHandler) + .usernameParameter("id") + .passwordParameter("pw") + .authenticationDetailsSource(authenticationDetailsSource) + ); + + return http.build(); + } + + @Bean + public FilterRegistrationBean filterRegistrationBean() { + FilterRegistrationBean 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(false); + + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + return source; + } +} diff --git a/src/main/java/com/bb/config/SecurityContextConfig.java b/src/main/java/com/bb/config/SecurityContextConfig.java new file mode 100644 index 0000000..ee30bba --- /dev/null +++ b/src/main/java/com/bb/config/SecurityContextConfig.java @@ -0,0 +1,26 @@ +package com.bb.config; + +import jakarta.annotation.PostConstruct; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.context.HttpSessionSecurityContextRepository; +import org.springframework.security.web.context.SecurityContextRepository; + +@Configuration // @Component보다 설정을 위한 @Configuration 권장 +public class SecurityContextConfig { + + @PostConstruct + public void init() { + // 부모 스레드의 SecurityContext를 자식 스레드에서 상속받도록 설정 + SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL); + } + + /** + * [핵심] 세션 저장소를 빈으로 등록하여 순환 참조 방지 및 공유 + */ + @Bean + public SecurityContextRepository securityContextRepository() { + return new HttpSessionSecurityContextRepository(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/WebClientConfig.java b/src/main/java/com/bb/config/WebClientConfig.java new file mode 100644 index 0000000..e47f160 --- /dev/null +++ b/src/main/java/com/bb/config/WebClientConfig.java @@ -0,0 +1,43 @@ +package com.bb.config; + +import io.netty.channel.ChannelOption; +import io.netty.handler.timeout.ReadTimeoutHandler; +import io.netty.handler.timeout.WriteTimeoutHandler; +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.WebClient; +import reactor.netty.http.client.HttpClient; +import reactor.netty.resources.ConnectionProvider; + +import java.time.Duration; +import java.util.concurrent.TimeUnit; + +@Configuration +public class WebClientConfig { + + @Bean + public WebClient webClient() { + // 1. 커넥션 풀 설정 + ConnectionProvider provider = ConnectionProvider.builder("my-connection-pool") + .maxConnections(4096) // 기존 MaxTotal(4096)과 매칭 + .pendingAcquireTimeout(Duration.ofMillis(3000)) + .maxIdleTime(Duration.ofSeconds(20)) + .build(); + + // 2. 타임아웃 및 Netty HttpClient 설정 + HttpClient httpClient = HttpClient.create(provider) + .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 3000) // 기존 ConnectTimeout(3000)과 매칭 + .responseTimeout(Duration.ofSeconds(8)) // 응답 대기 시간 + .doOnConnected(conn -> + conn.addHandlerLast(new ReadTimeoutHandler(9, TimeUnit.SECONDS)) + .addHandlerLast(new WriteTimeoutHandler(9, TimeUnit.SECONDS)) + ); + + // 3. WebClient 빈 생성 + return WebClient.builder() + .clientConnector(new ReactorClientHttpConnector(httpClient)) + .codecs(configurer -> configurer.defaultCodecs().maxInMemorySize(2 * 1024 * 1024)) // 2MB + .build(); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/WebSocketConfig.java b/src/main/java/com/bb/config/WebSocketConfig.java new file mode 100644 index 0000000..c2feaad --- /dev/null +++ b/src/main/java/com/bb/config/WebSocketConfig.java @@ -0,0 +1,32 @@ +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 { // implements로 변경 + + @Override + public void configureMessageBroker(MessageBrokerRegistry config) { + config.enableSimpleBroker("/topic"); + config.setApplicationDestinationPrefixes("/app"); + } + + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + // 기존 allowedOriginPatterns("*") 유지 + registry.addEndpoint("/websocket") + .setAllowedOriginPatterns("*") + .withSockJS(); + } + + @Override + public void configureClientInboundChannel(ChannelRegistration registration) { + registration.interceptors(new WebSocketInterceptor()); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/config/WebSocketInterceptor.java b/src/main/java/com/bb/config/WebSocketInterceptor.java new file mode 100644 index 0000000..7da575a --- /dev/null +++ b/src/main/java/com/bb/config/WebSocketInterceptor.java @@ -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 { // implements로 변경 + Set 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(); + + // 인터페이스에는 super.preSend()가 없으므로 message를 그대로 리턴합니다. + return message; + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/controller/PragmaticController.java b/src/main/java/com/bb/controller/PragmaticController.java new file mode 100644 index 0000000..cbf3586 --- /dev/null +++ b/src/main/java/com/bb/controller/PragmaticController.java @@ -0,0 +1,5 @@ +package com.bb.controller; + +public class PragmaticController { + +} diff --git a/src/main/java/com/bb/dao/CallBackDao.java b/src/main/java/com/bb/dao/CallBackDao.java new file mode 100644 index 0000000..aef044c --- /dev/null +++ b/src/main/java/com/bb/dao/CallBackDao.java @@ -0,0 +1,14 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; + +public interface CallBackDao { + + void insertCallBackErrLog(HashMap logParam); + + void insertBetRadarLog(HashMap sData); + + List getBetRadarLogByBetId(String betId); + +} diff --git a/src/main/java/com/bb/dao/CallBackDaoImpl.java b/src/main/java/com/bb/dao/CallBackDaoImpl.java new file mode 100644 index 0000000..525a8b5 --- /dev/null +++ b/src/main/java/com/bb/dao/CallBackDaoImpl.java @@ -0,0 +1,39 @@ +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("callBackDao") +public class CallBackDaoImpl implements CallBackDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public void insertCallBackErrLog(HashMap logParam) { + sqlSession.insert("insertCallBackErrLog", logParam); + + } + + @Override + public void insertBetRadarLog(HashMap sData) { + // TODO Auto-generated method stub + sqlSession.insert("insertBetRadarLog", sData); + } + + @Override + public List getBetRadarLogByBetId(String betId) { + return sqlSessionSub.selectList("getBetRadarLogByBetId", betId); + } + +} diff --git a/src/main/java/com/bb/dao/CoinDao.java b/src/main/java/com/bb/dao/CoinDao.java new file mode 100644 index 0000000..250f228 --- /dev/null +++ b/src/main/java/com/bb/dao/CoinDao.java @@ -0,0 +1,10 @@ +package com.bb.dao; + +import com.bb.model.CoinVo; + +public interface CoinDao { + + void saveCoinInfo(CoinVo coinInfo); + CoinVo getCoinInfo(String coinSymbol, String currency); + +} diff --git a/src/main/java/com/bb/dao/CoinDaoImpl.java b/src/main/java/com/bb/dao/CoinDaoImpl.java new file mode 100644 index 0000000..775a853 --- /dev/null +++ b/src/main/java/com/bb/dao/CoinDaoImpl.java @@ -0,0 +1,38 @@ +package com.bb.dao; + +import java.util.HashMap; +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.CoinVo; + +@Repository("coinDao") +public class CoinDaoImpl implements CoinDao{ + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public void saveCoinInfo(CoinVo coinInfo) { + sqlSession.insert("saveCoinInfo", coinInfo); + + } + + @Override + public CoinVo getCoinInfo(String coinSymbol, String currency) { + Map param = new HashMap(); + param.put("coinSymbol", coinSymbol); + param.put("currency", currency); + return sqlSessionSub.selectOne("getCoinInfo", param); + } + +} diff --git a/src/main/java/com/bb/dao/CommonDao.java b/src/main/java/com/bb/dao/CommonDao.java new file mode 100644 index 0000000..aabdfc7 --- /dev/null +++ b/src/main/java/com/bb/dao/CommonDao.java @@ -0,0 +1,23 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.BanGameSearch; +import com.bb.model.CmnSearch; + +public interface CommonDao { + + List> getGameCategoryList(); + + List> getGameVendorList(CmnSearch search); + + List> getBanGameList(BanGameSearch search); + + int insertBanGameInfo(HashMap item); + + int insertNexusGameInfo(HashMap item); + + HashMap getVendorApiInfo(CmnSearch search); + +} diff --git a/src/main/java/com/bb/dao/CommonDaoImpl.java b/src/main/java/com/bb/dao/CommonDaoImpl.java new file mode 100644 index 0000000..a7dabfb --- /dev/null +++ b/src/main/java/com/bb/dao/CommonDaoImpl.java @@ -0,0 +1,60 @@ +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.BanGameSearch; +import com.bb.model.CmnSearch; + +@Repository("commonDao") +public class CommonDaoImpl implements CommonDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public List> getGameCategoryList() { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getGameCategoryList"); + } + + @Override + public List> getGameVendorList(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getGameVendorList", search); + } + + @Override + public List> getBanGameList(BanGameSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getBanGameList", search); + } + + @Override + public int insertBanGameInfo(HashMap item) { + // TODO Auto-generated method stub + return sqlSession.update("insertBanGameInfo", item); + } + + @Override + public int insertNexusGameInfo(HashMap item) { + // TODO Auto-generated method stub + return sqlSession.update("insertNexusGameInfo", item); + } + + @Override + public HashMap getVendorApiInfo(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getVendorApiInfo", search); + } +} diff --git a/src/main/java/com/bb/dao/CreditDao.java b/src/main/java/com/bb/dao/CreditDao.java new file mode 100644 index 0000000..6415b3f --- /dev/null +++ b/src/main/java/com/bb/dao/CreditDao.java @@ -0,0 +1,98 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; + +import jakarta.validation.Valid; + +import com.bb.model.CashParam; +import com.bb.model.Credit; +import com.bb.model.CreditPoint; +import com.bb.model.CreditPointSearch; +import com.bb.model.CreditSearchVO; +import com.bb.model.Insure; +import com.bb.model.SiteSearch; + +public interface CreditDao { + + void insertCredit(Credit credit); + + void insertCreditByCash(Credit credit); + + void setSiteCreditUpdate(HashMap param); + + int getCreditListCnt(SiteSearch search); + + List getCreditList(SiteSearch search); + + int getSiteTranListCnt(SiteSearch search); + + List getSiteTranList(SiteSearch search); + + void updateStatus(Credit credit); + + int getPointListCnt(SiteSearch search); + + List getPointList(SiteSearch search); + + int getSiteBetListCnt(SiteSearch search); + + List getSiteBetList(SiteSearch search); + + void updateInsureStatus(Insure insure); + + void insertInsure(Insure insure); + + HashMap getMyInsureInfo(int siteIdx); + + HashMap getMyRateInfo(int siteIdx); + + int getInsureListCnt(SiteSearch search); + + List getInsureList(SiteSearch search); + + HashMap getCreditSumToday(SiteSearch search); + + void updateSetStatus(Credit credit2); + + void updateCreditYn(Credit credit); + + String getRoundIdByGsoft(String refId); + + void insertCreditAiAo(Credit credit); + + void insertCreditPoint(HashMap pointParam); + + int insertPoint(CreditPoint point); + + int checkRequestTime(Credit credit); + + int getCashInOutListCnt(CashParam param); + + List getCashInOutList(CashParam param); + + int getTransCreditListCnt(CreditSearchVO search); + + List> getTransCreditList(CreditSearchVO search); + + int getTotalTransactionListCnt(CreditSearchVO search); + + List> getTotalTransactionList(CreditSearchVO search); + + int getCreditPointListCnt(@Valid CreditPointSearch search); + + List> getCreditPointList(@Valid CreditPointSearch search); + + int getCreditBetListCnt(@Valid CreditPointSearch search); + + List> getCreditBetList(@Valid CreditPointSearch search); + + int getStatCreditListCnt(SiteSearch search); + + List getStatCreditList(SiteSearch search); + + HashMap getStatCreditTotal(SiteSearch search); + + void updateSubCredit(Credit credit); + +} diff --git a/src/main/java/com/bb/dao/CreditDaoImpl.java b/src/main/java/com/bb/dao/CreditDaoImpl.java new file mode 100644 index 0000000..cbd6f63 --- /dev/null +++ b/src/main/java/com/bb/dao/CreditDaoImpl.java @@ -0,0 +1,261 @@ +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.CashParam; +import com.bb.model.Credit; +import com.bb.model.CreditPoint; +import com.bb.model.CreditPointSearch; +import com.bb.model.CreditSearchVO; +import com.bb.model.Insure; +import com.bb.model.SiteSearch; + +@Repository("creditDao") +public class CreditDaoImpl implements CreditDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public void insertCredit(Credit credit) { + sqlSession.insert("insertCredit", credit); + } + + @Override + public void insertCreditByCash(Credit credit) { + sqlSession.insert("insertCreditByCash", credit); + } + + @Override + public void setSiteCreditUpdate(HashMap param) { + sqlSession.update("setSiteCreditUpdate", param); + + } + + @Override + public int getCreditListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getCreditListCnt", search); + } + + @Override + public List getCreditList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getCreditList", search); + } + + @Override + public int getSiteTranListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteTranListCnt", search); + } + + @Override + public List getSiteTranList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteTranList", search); + } + + @Override + public void updateStatus(Credit credit) { + // TODO Auto-generated method stub + sqlSession.update("updateStatus", credit); + } + + @Override + public int getPointListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getPointListCnt", search); + } + + @Override + public List getPointList(SiteSearch search) { + return sqlSession.selectList("getPointList", search); + } + + @Override + public int getSiteBetListCnt(SiteSearch search) { + return sqlSession.selectOne("getSiteBetListCnt", search); + } + + @Override + public List getSiteBetList(SiteSearch search) { + return sqlSession.selectList("getSiteBetList", search); + } + + @Override + public void updateInsureStatus(Insure insure) { + // TODO Auto-generated method stub + sqlSession.update("updateInsureStatus", insure); + } + + @Override + public void insertInsure(Insure insure) { + // TODO Auto-generated method stub + sqlSession.insert("insertInsure", insure); + } + + @Override + public HashMap getMyInsureInfo(int siteIdx) { + return sqlSession.selectOne("getMyInsureInfo", siteIdx); + } + + @Override + public HashMap getMyRateInfo(int siteIdx) { + return sqlSession.selectOne("getMyRateInfo", siteIdx); + } + + @Override + public int getInsureListCnt(SiteSearch search) { + return sqlSession.selectOne("getInsureListCnt", search); + } + + @Override + public List getInsureList(SiteSearch search) { + return sqlSession.selectList("getInsureList", search); + } + + @Override + public HashMap getCreditSumToday(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getCreditSumToday", search); + } + + @Override + public void updateSetStatus(Credit credit2) { + // TODO Auto-generated method stub + sqlSession.update("updateSetStatus", credit2); + } + + @Override + public void updateCreditYn(Credit credit) { + // TODO Auto-generated method stub + sqlSession.update("updateCreditYn", credit); + } + + @Override + public String getRoundIdByGsoft(String refId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getRoundIdByGsoft", refId); + } + + @Override + public void insertCreditAiAo(Credit credit) { + // TODO Auto-generated method stub + sqlSession.insert("insertCreditAiAo", credit); + } + + @Override + public void insertCreditPoint(HashMap pointParam) { + // TODO Auto-generated method stub + sqlSession.insert("insertCreditPoint", pointParam); + } + + @Override + public int insertPoint(CreditPoint point) { + // TODO Auto-generated method stub + return sqlSession.insert("insertPoint", point); + } + + @Override + public int checkRequestTime(Credit credit) { + // TODO Auto-generated method stub + return sqlSession.selectOne("checkRequestTime", credit); + } + + @Override + public int getCashInOutListCnt(CashParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getCashInOutListCnt", param); + } + + @Override + public List getCashInOutList(CashParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getCashInOutList", param); + } + + @Override + public int getTransCreditListCnt(CreditSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTransCreditListCnt", search); + } + + @Override + public List> getTransCreditList(CreditSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getTransCreditList", search); + } + + @Override + public int getTotalTransactionListCnt(CreditSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTotalTransactionListCnt", search); + } + + @Override + public List> getTotalTransactionList(CreditSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getTotalTransactionList", search); + } + + @Override + public int getCreditPointListCnt(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getCreditPointListCnt", search); + } + + @Override + public List> getCreditPointList(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getCreditPointList", search); + } + + @Override + public int getCreditBetListCnt(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getCreditBetListCnt", search); + } + + @Override + public List> getCreditBetList(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getCreditBetList", search); + } + + @Override + public int getStatCreditListCnt(SiteSearch search) { + return sqlSessionSub.selectOne("getStatCreditListCnt", search); + } + + @Override + public List getStatCreditList(SiteSearch search) { + return sqlSessionSub.selectList("getStatCreditList", search); + } + + @Override + public HashMap getStatCreditTotal(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getStatCreditTotal", search); + } + + @Override + public void updateSubCredit(Credit credit) { + // TODO Auto-generated method stub + sqlSession.update("updateSubCredit", credit); + } + +} diff --git a/src/main/java/com/bb/dao/SettingDao.java b/src/main/java/com/bb/dao/SettingDao.java new file mode 100644 index 0000000..d0e64f2 --- /dev/null +++ b/src/main/java/com/bb/dao/SettingDao.java @@ -0,0 +1,34 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.BlockGameVO; +import com.bb.model.CmnSearch; +import com.bb.model.SiteVendorSkinVO; + +public interface SettingDao { + + List> getSettingVendorList(CmnSearch search); + + List> getSettingSkinList(CmnSearch search); + + int settingVendorSkinSave(SiteVendorSkinVO item); + + String getWhiteIpListStr(CmnSearch search); + + List> getBlockVendorSelectBoxList(String category); + + List> getBlockVendorSelectBoxList2(CmnSearch search); + + List> getBlockTableSelectBoxList(CmnSearch search); + + String getBlockTableIds(CmnSearch search); + + int blockTableIdSave(BlockGameVO blockGameVO); + + String getVendorTitle(CmnSearch search); + + HashMap getBetRadarApiInfo(String siteId); + +} diff --git a/src/main/java/com/bb/dao/SettingDaoImpl.java b/src/main/java/com/bb/dao/SettingDaoImpl.java new file mode 100644 index 0000000..e060bd3 --- /dev/null +++ b/src/main/java/com/bb/dao/SettingDaoImpl.java @@ -0,0 +1,104 @@ +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.BlockGameVO; +import com.bb.model.CmnSearch; +import com.bb.model.SiteVendorSkinVO; + +@Repository("settingDao") +public class SettingDaoImpl implements SettingDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + + @Override + public List> getSettingVendorList(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getSettingVendorList", search); + } + + + @Override + public List> getSettingSkinList(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getSettingSkinList", search); + } + + + @Override + public int settingVendorSkinSave(SiteVendorSkinVO item) { + // TODO Auto-generated method stub + return sqlSession.update("settingVendorSkinSave", item); + } + + + @Override + public String getWhiteIpListStr(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getWhiteIpListStr", search); + } + + + @Override + public List> getBlockVendorSelectBoxList(String category) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getBlockVendorSelectBoxList", category); + } + + + @Override + public List> getBlockVendorSelectBoxList2(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getBlockVendorSelectBoxList2", search); + } + + + @Override + public List> getBlockTableSelectBoxList(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getBlockTableSelectBoxList", search); + } + + + @Override + public String getBlockTableIds(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBlockTableIds", search); + } + + + @Override + public int blockTableIdSave(BlockGameVO blockGameVO) { + // TODO Auto-generated method stub + return sqlSession.update("blockTableIdSave", blockGameVO); + } + + + @Override + public String getVendorTitle(CmnSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getVendorTitle", search); + } + + + @Override + public HashMap getBetRadarApiInfo(String siteId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBetRadarApiInfo", siteId); + } + + +} diff --git a/src/main/java/com/bb/dao/SiteDao.java b/src/main/java/com/bb/dao/SiteDao.java new file mode 100644 index 0000000..618d73f --- /dev/null +++ b/src/main/java/com/bb/dao/SiteDao.java @@ -0,0 +1,489 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.security.core.Authentication; + +import com.bb.model.BalanceParam; +import com.bb.model.BetParam; +import com.bb.model.BoardSearch; +import com.bb.model.CashParam; +import com.bb.model.CommonParam; +import com.bb.model.Game; +import com.bb.model.Member; +import com.bb.model.OTPInfo; +import com.bb.model.Site; +import com.bb.model.SitePwdVO; +import com.bb.model.SiteSearch; +import com.bb.model.TrfApiInfo; +import com.bb.model.UserSearch; +import com.bb.model.Vendor; +import com.bb.model.VendorChangeBalanceLogVo; + + +public interface SiteDao { + + Site getSiteInfo(String authorization); + + Site getSiteInfoAPI(String authorization); + + Member getMember(CommonParam commonParam); + + Member getMember2(CashParam param); + + void insertMember(CommonParam commonParam); + + HashMap getVenderApiInfo(CommonParam commonParam); + + int commonBetinsert(HashMap tranParam); + + int commonBetinsert2(HashMap tranParam); + + List getCbList(); + + void updateCbApi(HashMap upParam); + + HashMap getSiteApiInfo(HashMap sParam); + + HashMap getSiteApiInfo2(HashMap sParam); + + Site getSiteLogin(Authentication authentication); + + Site getSiteLoginApi(Map site); + + Site getGuestLogin(); + + int getSiteListCnt(SiteSearch search); + + List getSiteList(SiteSearch search); + + void addProc(Site site); + + void addCreditInfo(Site site); + + void addsiteFlow(Site site); + + void insertVendors(Site site); + + Site getSiteInfoMypage(Site site); + + long getSiteCredit(String siteId); + + long getUnderSiteCredit(String siteId); + + long getSitePoint(String siteId); + + void addPointInfo(Site site); + + HashMap getCreditWait(int siteIdx); + + int getSiteUserListCnt(SiteSearch search); + + List getSiteUserList(SiteSearch search); + + int getTranCheck(String tranId); + + void insertError(HashMap eParam); + + int getFinalErr(String betId); + + void updateSid(Member member); + + long getInsureAmt(String siteId); + + long getInsurePointAmt(String siteId); + + void insertinsurance(Site site); + + void insertinsurancePoint(Site site); + + List getVenderRateList(Site loginSite); + + int getBetCancelCount(String betId); + + void updateBombKey(Member member); + + Member getMemByBombAccId(HashMap memParam); + + void insertBetDetail(Map detailMap); + + String getBetInfo(BetParam param); + + List getSiteFlow(Site loginSite); + + void saveVendorRate(HashMap paramMap); + + HashMap getEvoApiInfo(); + + String getSiteIdByRefId(String refId); + + void updateDetailLastTime(HashMap evoInfo); + + Site getSiteDetail(SiteSearch search); + + Site getSiteSimpleDetail(SiteSearch search); + + HashMap getVenderApiInfoByToken(Map paramV); + + Site getSiteBypassword(Map siteParam); + + void updatePass(Map siteParam); + + void siteUpdate(Site site); + + void saveVendorInsurePointRate(HashMap paramMap); + + HashMap getDashInfo(Site loginSite); + + HashMap getDashInfo2(Site loginSite); + + void insertVendorsRate(Site site); + + HashMap getMicroApiInfo(); + + int getApiStatus(HashMap tranParam); + + void saveVendorInsureRate(HashMap paramMap); + + void updateVendorUseYn(HashMap paramMap); + + List getSiteVendorList(SiteSearch search); + + List getVendorList(SiteSearch search); + + void siteVenderUpdate(Vendor vendor); + + HashMap getDowinApiInfo(); + + long getSiteMaxBet(HashMap sParam); + + Long getUserMaxBet(HashMap sParam); + + int getBetCheckByHc(String refId); + + void updatePragmaticId(Member member); + + HashMap getProgmaticApiInfo(); + + HashMap getSiteApiInfoByPra(HashMap sParam); + + String getlastDepostId(HashMap dParam); + + List getNotUseMemberListProgama(); + + List getGameList(HashMap param); + + HashMap getOnlyVenderInfo(CommonParam commonParam); + + int getBotaAutoCancelCnt(String tranId); + + int getBotaBetCnt(String tranId); + + HashMap getProgmaticApiInfo2(); + + List getBotaBetListMinute(); + + String getSiteIdByRefId2(String string); + + int getTranIdCheck(String string); + + int getTranIdCheck2(String string); + + HashMap getSiteMember(String string); + + void updateDebitCancel(String refId); + + void insertSiteCallBackLog(HashMap logParam); + + List getBetList(BetParam param); + + List getMonsterGameList(); + + HashMap getProgmaticApiInfo3(String code); + + long getBetCancelAmt(String string); + + int getBetIdCheck(String refId); + + int getBetIdCheck2(String refId); + + int getTranCheck2(String betId); + + void insertSlotCity(HashMap slotMap); + + void botaAutoCancel(HashMap tranParam); + + void seattleCredit(); + + void updateDecimal(HashMap decimalParam); + + List getonlyDebitList(); + + void insertAutoLose(HashMap loseCredit); + + HashMap getBetCheck(BetParam param); + + int callbackTokenCheck(String token); + + HashMap getVenderInfo(BalanceParam param); + + String getRefIdByTranId(String tranId); + + List getCreditReSendList(); + + void updateMemCancelCnt(long memberIdx); + + Long getMemberIdx(HashMap memParam); + + int insertVendorChangeBalanceLog(VendorChangeBalanceLogVo logVo); + + HashMap getGsoftVendorInfo(String gameID); + + String getCreditRate(HashMap upParam); + + void inserDemoUSer(String bombToken); + + HashMap getDemoByBombAccId(HashMap memParam); + + void updateDemoUSer(HashMap memParam); + + List getTrasferVendorList(); + + List getAllMember(); + + int gethourBetCheck(long member); + + List getAllMember2(); + + HashMap getUserVendorInfo(HashMap memParam); + + Member getMemberByToken(Map authParam); + + HashMap getSiteApiInfoByToken(Map authParam); + + double getBetDepositAmt(String tranId); + + void insertSplusTran(Map trxParam); + + void updateSplusTran(Map trxParam); + + String getCbData(String reserve_id); + + void updatesPurchaseId(Map trxParam); + + double getBetGapAmt(String pid); + + void insertToken(String base64Token); + + int getSplusToken(String base64Token); + + String getRefIdByPurchaseId(String purchase_id); + + List getSplusDetailData(BetParam param); + + String getKorNameTeam(String txt); + + String getKorNameLeague(String txt); + + void insertVendorsCodeRate(Site site); + + HashMap getBetInfoByTranId(String reference); + + int getSuccDebitCnt(String betId); + + HashMap getSiteVendorInfo(HashMap param); + + int updatePowerballApiInfo(HashMap registParam); + + List> getPowerBallInfoList(String gameType); + + HashMap getSiteApiInfoByApiKey(HashMap param); + + HashMap getSiteApiInfoByCallbackKey(HashMap param); + + int updMemLastVendorIdx(HashMap memParam); + + List getVendorListByVendorKey(HashMap venderInfo); + + void vendorUpdate(HashMap venderInfo); + + List getNexusSkinListByVendorKey(HashMap venderInfo); + + void nexusSkinUpdate(HashMap venderInfo); + + String getParseTarget(); + + String getParseTargetExtr(); + + HashMap getParseUseYn(int siteIdx); + + void insertParseUse(HashMap parseParam); + + List getApiBetVendorList(int siteIdx); + + int getApiBetTransactionCnt(BetParam param); + + List getApiBetTransactionList(BetParam param); + + void updVendorMapForDefault(Site site); + + void updVendorCreditRateForDefault(Site site); + + void deleteVendorAccountForDefault(Site site); + + HashMap getParseUserYn(HashMap pum); + + void setParseUserYn(HashMap pum); + + OTPInfo getOtpInfo(long siteIdx); + + OTPInfo getOtpInfoByManger(long siteIdx); + + int registSuperOtp(OTPInfo param); + + HashMap getSiteOnlyVendorInfo(HashMap vendorParam); + + TrfApiInfo getTrfApiInfo(HashMap mapParam); + + void agentIpsUpdate(Site site); + + int insertEvoDetail(HashMap detailMap); + + HashMap getCommonApiInfo(HashMap commonParam); + + HashMap getBeforeTranInfo(String vendorTranKey); + + List getParseTargetGame(String gameType); + + String getOrgDetailData(BetParam param); + + String getParDetailData(BetParam param); + + HashMap getBetInfoByTranKey(String vendorTranKey); + + HashMap getParseInfo(HashMap param); + + int getBlockParseGameId(String gameId); + + HashMap getBeforeTranInfo2(String vendorTranKey); + + String getMemberByIdx(HashMap memParam); + + List getSiteVendorList2(int siteIdx); + + List getVendorList2(int siteIdx); + + void saveSvcr(HashMap paramMap); + + int siteVenderCodeCheck(HashMap paramMap); + + void saveVendorRate2(HashMap paramMap); + + String getSiteKey(HashMap paramMap); + + String getVendorTitle(HashMap paramMap); + + Long getUserTimeout(HashMap accLog); + + int updateUserTimeout(HashMap accLog); + + String getGameKeyByNexusGameId(String gameId); + + String getDebitIsParse(String betId); + + int updateParseUseYN(String useYn); + + int insertTheaTrxId(HashMap param); + + HashMap getApiKeyInfo(String vendorTitle); + + HashMap getApiKeyInfo2(HashMap keyParam); + + HashMap getRefBetInfoByTranId(String tranId); + + int updMemberBalance(HashMap balanceMap); + + int getMemberBalance(HashMap balanceMap); + + HashMap getMemberId(String vendorUsername); + + int checkMemberId(String vendorUsername); + + HashMap getNewSiteApiInfo(String vendorUsername); + + HashMap getNewSiteVendorInfo(HashMap param); + + int updateTestCnt(Site site); + + int updateParseEvoYn(HashMap param); + + int saveParsEvoAmount(SiteSearch param); + + int getUserBalance(HashMap balanceMap); + + List getMyDownSite(SiteSearch search); + + HashMap getCreditInfo(String siteId); + + int checkDownSite(Map checkDown); + + List getSiteTreeList(String siteId); + + int getMyDownSiteCheck(Site targetsite); + + void insertParseUseYn(Site site); + + int updateSitePwd(SitePwdVO sitePwdVO); + + Site getSite(Site site); + + void siteVenderLobbyUpdate(Vendor vendor); + + List getVendorMapList(SiteSearch search); + + List geLobbyList(SiteSearch search); + + String siteVenderRate(Vendor vendor); + + int getBoardListCnt(BoardSearch search); + + List> getBoardList(BoardSearch search); + + HashMap getBoardDetail(long boardIdx); + + int getSiteCallbackErrLogListCnt(SiteSearch search); + + List getSiteCallbackErrLogList(SiteSearch search); + + List getSiteTreeInfo(HashMap param); + + int getUserListCnt(UserSearch search); + + List> getUserList(UserSearch search); + + HashMap getUserDetail(UserSearch search); + + void insertCmsIp(Site site); + + int getSiteListCntForApi(SiteSearch search); + + List getSiteListForApi(SiteSearch search); + + Site getSiteDetailForApi(SiteSearch search); + + List getVendorListForApi(SiteSearch search); + + List getSiteVendorListForApi(SiteSearch search); + + HashMap getRefIdByVendorTranKey(String vendorTranKey); + + int updateUserMaxBet(HashMap param); + + int insertTranLog(HashMap logParam); + + HashMap getSiteSubCredit(String siteId); + + String getBetAmountByTranParam(HashMap param); +} diff --git a/src/main/java/com/bb/dao/SiteDaoImpl.java b/src/main/java/com/bb/dao/SiteDaoImpl.java new file mode 100644 index 0000000..527c5a8 --- /dev/null +++ b/src/main/java/com/bb/dao/SiteDaoImpl.java @@ -0,0 +1,1396 @@ +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.security.core.Authentication; +import org.springframework.stereotype.Repository; + +import com.bb.model.BalanceParam; +import com.bb.model.BetParam; +import com.bb.model.BoardSearch; +import com.bb.model.CashParam; +import com.bb.model.CommonParam; +import com.bb.model.Game; +import com.bb.model.Member; +import com.bb.model.OTPInfo; +import com.bb.model.Site; +import com.bb.model.SitePwdVO; +import com.bb.model.SiteSearch; +import com.bb.model.TrfApiInfo; +import com.bb.model.UserSearch; +import com.bb.model.Vendor; +import com.bb.model.VendorChangeBalanceLogVo; + +@Repository("siteDao") +public class SiteDaoImpl implements SiteDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public Site getSiteInfo(String authorization) { + return sqlSession.selectOne("getSiteInfo", authorization); + } + + @Override + public Site getSiteInfoAPI(String authorization) { + return sqlSession.selectOne("getSiteInfoAPI", authorization); + } + + @Override + public Member getMember(CommonParam commonParam) { + return sqlSession.selectOne("getMember", commonParam); + } + + @Override + public Member getMember2(CashParam param) { + return sqlSession.selectOne("getMember2", param); + } + + @Override + public void insertMember(CommonParam commonParam) { + sqlSession.insert("insertMember", commonParam); + + } + + @Override + public HashMap getVenderApiInfo(CommonParam commonParam) { + return sqlSession.selectOne("getVenderApiInfo", commonParam); + } + + + @Override + public List getCbList() { + // TODO Auto-generated method stub + return sqlSession.selectList("getCbList", null); + } + + @Override + public void updateCbApi(HashMap upParam) { + // TODO Auto-generated method stub + sqlSession.update("updateCbApi", upParam); + } + + @Override + public HashMap getSiteApiInfo(HashMap sParam) { + return sqlSessionSub.selectOne("getSiteApiInfo", sParam); + } + + @Override + public HashMap getSiteApiInfo2(HashMap sParam) { + return sqlSessionSub.selectOne("getSiteApiInfo2", sParam); + } + + @Override + public int commonBetinsert(HashMap tranParam) { + // TODO Auto-generated method stub + return sqlSession.update("commonBetinsert", tranParam); + } + + @Override + public int commonBetinsert2(HashMap tranParam) { + // TODO Auto-generated method stub + return sqlSession.update("commonBetinsert2", tranParam); + } + + @Override + public Site getSiteLogin(Authentication authentication) { + return sqlSession.selectOne("getSiteLogin", authentication); + } + + @Override + public Site getSiteLoginApi(Map site) { + return sqlSessionSub.selectOne("getSiteLoginApi", site); + } + + @Override + public Site getGuestLogin() { + return sqlSession.selectOne("getGuestLogin"); + } + + @Override + public int getSiteListCnt(SiteSearch search) { + return sqlSession.selectOne("getSiteListCnt", search); + } + + @Override + public List getSiteList(SiteSearch search) { + return sqlSession.selectList("getSiteList", search); + } + + @Override + public void addProc(Site site) { + sqlSession.insert("addProc",site ); + } + + @Override + public void addCreditInfo(Site site) { + sqlSession.insert("addCreditInfo",site ); + } + + @Override + public void addsiteFlow(Site site) { + sqlSession.insert("addsiteFlow",site ); + } + + @Override + public void insertVendors(Site site) { + sqlSession.insert("insertVendors",site ); + + } + + @Override + public Site getSiteInfoMypage(Site site) { + return sqlSession.selectOne("getSiteInfoMypage", site); + } + + @Override + public long getSiteCredit(String siteId) { + return sqlSession.selectOne("getSiteCredit", siteId); + } + + @Override + public long getUnderSiteCredit(String siteId) { + return sqlSession.selectOne("getUnderSiteCredit", siteId); + } + + @Override + public long getSitePoint(String siteId) { + return sqlSessionSub.selectOne("getSitePoint", siteId); + } + + @Override + public void addPointInfo(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("addPointInfo",site ); + } + + @Override + public HashMap getCreditWait(int siteIdx) { + return sqlSession.selectOne("getCreditWait", siteIdx); + } + + @Override + public int getSiteUserListCnt(SiteSearch search) { + return sqlSession.selectOne("getSiteUserListCnt", search); + } + + @Override + public List getSiteUserList(SiteSearch search) { + return sqlSession.selectList("getSiteUserList", search); + } + + @Override + public int getTranCheck(String tranId) { + return sqlSession.selectOne("getTranCheck", tranId); + } + + @Override + public void insertError(HashMap eParam) { + sqlSession.insert("insertError",eParam ); + + } + + @Override + public int getFinalErr(String betId) { + return sqlSession.selectOne("getFinalErr", betId); + } + + @Override + public void updateSid(Member member) { + sqlSession.update("updateSid",member ); + + } + + @Override + public long getInsureAmt(String siteId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getInsureAmt", siteId); + } + + @Override + public long getInsurePointAmt(String siteId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getInsurePointAmt", siteId); + } + + @Override + public void insertinsurance(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("insertinsurance", site); + } + + @Override + public void insertinsurancePoint(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("insertinsurancePoint", site); + } + + @Override + public List getVenderRateList(Site loginSite) { + // TODO Auto-generated method stub + return sqlSession.selectList("getVenderRateList", loginSite); + } + + @Override + public int getBetCancelCount(String betId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetCancelCount", betId); + } + + @Override + public void updateBombKey(Member member) { + // TODO Auto-generated method stub + sqlSession.update("updateBombKey", member); + } + + @Override + public Member getMemByBombAccId(HashMap memParam) { + return sqlSession.selectOne("getMemByBombAccId", memParam); + } + + + @Override + public void insertBetDetail(Map detailMap) { + // TODO Auto-generated method stub + sqlSession.insert("insertBetDetail", detailMap); + } + + @Override + public String getBetInfo(BetParam param) { + // TODO Auto-generated method stub + sqlSession.update("updateVariable", "SET @@group_concat_max_len = 50240"); + return sqlSession.selectOne("getBetInfo", param); + + } + + @Override + public List getSiteFlow(Site loginSite) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteFlow", loginSite); + + } + + @Override + public void saveVendorRate(HashMap paramMap) { + // TODO Auto-generated method stub + sqlSession.insert("saveVendorRate", paramMap); + } + + @Override + public HashMap getEvoApiInfo() { + // TODO Auto-generated method stub + return sqlSession.selectOne("getEvoApiInfo", null); + } + + @Override + public String getSiteIdByRefId(String refId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteIdByRefId", refId); + } + + @Override + public void updateDetailLastTime(HashMap evoInfo) { + // TODO Auto-generated method stub + //System.out.print("endDate " + evoInfo.get("endDate")); + sqlSession.insert("updateDetailLastTime", evoInfo); + } + + @Override + public Site getSiteDetail(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteDetail", search); + } + + @Override + public Site getSiteSimpleDetail(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getSiteSimpleDetail", search); + } + + @Override + public HashMap getVenderApiInfoByToken(Map paramV) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getVenderApiInfoByToken", paramV); + } + + @Override + public Site getSiteBypassword(Map siteParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteBypassword", siteParam); + } + + @Override + public void updatePass(Map siteParam) { + sqlSession.update("updatePass", siteParam); + + } + + @Override + public void siteUpdate(Site site) { + sqlSession.update("siteUpdate", site); + + } + + @Override + public void saveVendorInsurePointRate(HashMap paramMap) { + // TODO Auto-generated method stub + sqlSession.insert("saveVendorInsurePointRate", paramMap); + } + + @Override + public HashMap getDashInfo(Site loginSite) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getDashInfo", loginSite); + } + + @Override + public HashMap getDashInfo2(Site loginSite) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getDashInfo2", loginSite); + } + + @Override + public void insertVendorsRate(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("insertVendorsRate", site); + } + + @Override + public HashMap getMicroApiInfo() { + // TODO Auto-generated method stub + return sqlSession.selectOne("getMicroApiInfo", null); + } + + @Override + public int getApiStatus(HashMap tranParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getApiStatus", tranParam); + } + + @Override + public void saveVendorInsureRate(HashMap paramMap) { + // TODO Auto-generated method stub + sqlSession.insert("saveVendorInsureRate", paramMap); + } + + @Override + public void updateVendorUseYn(HashMap paramMap) { + // TODO Auto-generated method stub + sqlSession.update("updateVendorUseYn", paramMap); + } + + @Override + public List getSiteVendorList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteVendorList", search); + } + + @Override + public List getVendorList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getVendorList", search); + } + + @Override + public void siteVenderUpdate(Vendor vendor) { + // TODO Auto-generated method stub + sqlSession.update("siteVenderUpdate", vendor); + } + + @Override + public HashMap getDowinApiInfo() { + // TODO Auto-generated method stub + return sqlSession.selectOne("getDowinApiInfo", null); + } + + @Override + public long getSiteMaxBet(HashMap sParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteMaxBet", sParam); + } + + @Override + public Long getUserMaxBet(HashMap sParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getUserMaxBet", sParam); + } + + @Override + public int getBetCheckByHc(String refId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetCheckByHc", refId); + } + + @Override + public void updatePragmaticId(Member member) { + // TODO Auto-generated method stub + sqlSession.update("updatePragmaticId", member); + } + + @Override + public HashMap getProgmaticApiInfo() { + // TODO Auto-generated method stub + return sqlSession.selectOne("getProgmaticApiInfo", null); + } + + @Override + public HashMap getProgmaticApiInfo2() { + // TODO Auto-generated method stub + return sqlSession.selectOne("getProgmaticApiInfo2", null); + } + + @Override + public HashMap getSiteApiInfoByPra(HashMap sParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteApiInfoByPra", sParam); + } + + @Override + public String getlastDepostId(HashMap dParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getlastDepostId", dParam); + } + + @Override + public List getNotUseMemberListProgama() { + // TODO Auto-generated method stub + return sqlSession.selectList("getNotUseMemberListProgama", null); + } + + @Override + public List getGameList(HashMap param) { + // TODO Auto-generated method stub + return sqlSession.selectList("getGameList", param); + } + + @Override + public HashMap getOnlyVenderInfo(CommonParam commonParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getOnlyVenderInfo", commonParam); + } + + @Override + public int getBotaAutoCancelCnt(String tranId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBotaAutoCancelCnt", tranId); + } + + @Override + public int getBotaBetCnt(String tranId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBotaBetCnt", tranId); + } + + @Override + public List getBotaBetListMinute() { + // TODO Auto-generated method stub + return sqlSession.selectList("getBotaBetListMinute", null); + } + + @Override + public String getSiteIdByRefId2(String string) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteIdByRefId2", string); + } + + @Override + public int getTranIdCheck(String string) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getTranIdCheck", string); + } + + @Override + public int getTranIdCheck2(String string) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getTranIdCheck2", string); + } + + @Override + public HashMap getSiteMember(String string) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteMember", string); + } + + @Override + public void updateDebitCancel(String refId) { + // TODO Auto-generated method stub + sqlSession.update("updateDebitCancel", refId); + } + + @Override + public void insertSiteCallBackLog(HashMap logParam) { + // TODO Auto-generated method stub + sqlSession.insert("insertSiteCallBackLog", logParam); + } + + @Override + public List getBetList(BetParam param) { + // TODO Auto-generated method stub + return sqlSession.selectList("getBetList", param); + } + + @Override + public List getMonsterGameList() { + // TODO Auto-generated method stub + return sqlSession.selectList("getMonsterGameList", null); + } + + @Override + public HashMap getProgmaticApiInfo3(String code) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getProgmaticApiInfo3", code); + } + + @Override + public long getBetCancelAmt(String string) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetCancelAmt", string); + } + + @Override + public int getBetIdCheck(String refId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetIdCheck", refId); + } + + @Override + public int getBetIdCheck2(String refId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetIdCheck2", refId); + } + + @Override + public int getTranCheck2(String tranId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getTranCheck2", tranId); + } + + @Override + public void insertSlotCity(HashMap slotMap) { + // TODO Auto-generated method stub + sqlSession.insert("insertSlotCity", slotMap); + } + + @Override + public void botaAutoCancel(HashMap tranParam) { + // TODO Auto-generated method stub + sqlSession.update("botaAutoCancel", tranParam); + } + + @Override + public void seattleCredit() { + // TODO Auto-generated method stub + sqlSession.insert("seattleCredit", null); + } + + @Override + public void updateDecimal(HashMap decimalParam) { + sqlSession.update("updateDecimal", decimalParam); + + } + + @Override + public List getonlyDebitList() { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getonlyDebitList", null); + } + + @Override + public void insertAutoLose(HashMap loseCredit) { + // TODO Auto-generated method stub + sqlSession.insert("insertAutoLose", loseCredit); + } + + @Override + public HashMap getBetCheck(BetParam param) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetCheck", param); + } + + @Override + public int callbackTokenCheck(String token) { + // TODO Auto-generated method stub + return sqlSession.selectOne("callbackTokenCheck", token); + } + + @Override + public HashMap getVenderInfo(BalanceParam param) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getVenderInfo", param); + } + + @Override + public String getRefIdByTranId(String tranId) { + return sqlSession.selectOne("getRefIdByTranId", tranId); + + } + + @Override + public List getCreditReSendList() { + return sqlSessionSub.selectList("getCreditReSendList", null); + + } + + @Override + public void updateMemCancelCnt(long memberIdx) { + // TODO Auto-generated method stub + sqlSession.update("updateMemCancelCnt", memberIdx); + } + + @Override + public Long getMemberIdx(HashMap memParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getMemberIdx", memParam); + } + + @Override + public int insertVendorChangeBalanceLog(VendorChangeBalanceLogVo logVo) { + // TODO Auto-generated method stub + return sqlSession.insert("insertVendorChangeBalanceLog", logVo); + } + + @Override + public HashMap getGsoftVendorInfo(String gameID) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getGsoftVendorInfo", gameID); + } + + @Override + public String getCreditRate(HashMap upParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getCreditRate", upParam); + } + + @Override + public void inserDemoUSer(String bombToken) { + sqlSession.insert("inserDemoUSer", bombToken); + } + + @Override + public HashMap getDemoByBombAccId(HashMap memParam) { + return sqlSession.selectOne("getDemoByBombAccId", memParam); + } + + @Override + public void updateDemoUSer(HashMap memParam) { + sqlSession.insert("updateDemoUSer", memParam); + + } + + @Override + public List getTrasferVendorList() { + return sqlSessionSub.selectList("getTrasferVendorList", null); + } + + @Override + public List getAllMember() { + return sqlSessionSub.selectList("getAllMember", null); + } + + @Override + public int gethourBetCheck(long member) { + return sqlSessionSub.selectOne("gethourBetCheck", member); + } + + @Override + public List getAllMember2() { + return sqlSessionSub.selectList("getAllMember2", null); + } + + @Override + public HashMap getUserVendorInfo(HashMap memParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getUserVendorInfo", memParam); + } + + + @Override + public Member getMemberByToken(Map authParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getMemberByToken", authParam); + } + + @Override + public HashMap getSiteApiInfoByToken(Map authParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteApiInfoByToken", authParam); + } + + @Override + public double getBetDepositAmt(String tranId) { + double res =0; + try { + res = sqlSession.selectOne("getBetDepositAmt", tranId); + }catch(Exception e) { + res =0; + } + return res; + + } + + @Override + public void insertSplusTran(Map trxParam) { + sqlSession.insert("insertSplusTran", trxParam); + + } + + @Override + public void updateSplusTran(Map trxParam) { + sqlSession.update("updateSplusTran", trxParam); + + } + + @Override + public String getCbData(String reserve_id) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getCbData", reserve_id); + } + + @Override + public void updatesPurchaseId(Map trxParam) { + sqlSession.update("updatesPurchaseId", trxParam); + } + + @Override + public double getBetGapAmt(String pid) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetGapAmt", pid); + } + + @Override + public void insertToken(String base64Token) { + sqlSession.insert("insertToken", base64Token); + } + + @Override + public int getSplusToken(String base64Token) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSplusToken", base64Token); + } + + @Override + public String getRefIdByPurchaseId(String purchaseId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getRefIdByPurchaseId", purchaseId); + } + + @Override + public List getSplusDetailData(BetParam param) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSplusDetailData", param); + } + + @Override + public String getKorNameTeam(String txt) { + return sqlSession.selectOne("getKorNameTeam", txt); + + } + + @Override + public String getKorNameLeague(String txt) { + return sqlSession.selectOne("getKorNameLeague", txt); + + } + + @Override + public void insertVendorsCodeRate(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("insertVendorsCodeRate", site); + } + + @Override + public HashMap getBetInfoByTranId(String tranId) { + return sqlSession.selectOne("getBetInfoByTranId", tranId); + + } + + @Override + public int getSuccDebitCnt(String betId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSuccDebitCnt", betId); + } + + @Override + public HashMap getSiteVendorInfo(HashMap param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getSiteVendorInfo", param); + } + + @Override + public int updatePowerballApiInfo(HashMap registParam) { + // TODO Auto-generated method stub + return sqlSession.update("updatePowerballApiInfo", registParam); + } + + @Override + public List> getPowerBallInfoList(String gameType) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getPowerBallInfoList", gameType); + } + + @Override + public HashMap getSiteApiInfoByApiKey(HashMap param) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteApiInfoByApiKey", param); + } + + @Override + public HashMap getSiteApiInfoByCallbackKey(HashMap param) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteApiInfoByCallbackKey", param); + } + + @Override + public int updMemLastVendorIdx(HashMap memParam) { + // TODO Auto-generated method stub + return sqlSession.update("updMemLastVendorIdx", memParam); + } + + @Override + public List getVendorListByVendorKey(HashMap venderInfo) { + return sqlSession.selectList("getVendorListByVendorKey", venderInfo); + } + + @Override + public void vendorUpdate(HashMap venderInfo) { + sqlSession.update("vendorUpdate", venderInfo); + + } + + @Override + public List getNexusSkinListByVendorKey(HashMap venderInfo) { + return sqlSession.selectList("getNexusSkinListByVendorKey", venderInfo); + } + + @Override + public void nexusSkinUpdate(HashMap venderInfo) { + sqlSession.update("nexusSkinUpdate", venderInfo); + + } + + @Override + public String getParseTarget() { + return sqlSession.selectOne("getParseTarget", null); + } + + @Override + public String getParseTargetExtr() { + return sqlSessionSub.selectOne("getParseTargetExtr", null); + } + + @Override + public HashMap getParseUseYn(int siteIdx) { + return sqlSession.selectOne("getParseUseYn", siteIdx); + } + + @Override + public void insertParseUse(HashMap parseParam) { + sqlSession.insert("insertParseUse", parseParam); + + } + + @Override + public List getApiBetVendorList(int siteIdx) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getApiBetVendorList", siteIdx); + } + + @Override + public int getApiBetTransactionCnt(BetParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getApiBetTransactionCnt", param); + } + + @Override + public List getApiBetTransactionList(BetParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getApiBetTransactionList", param); + } + + @Override + public void updVendorMapForDefault(Site site) { + // TODO Auto-generated method stub + sqlSession.update("updVendorMapForDefault", site); + } + + @Override + public void updVendorCreditRateForDefault(Site site) { + // TODO Auto-generated method stub + sqlSession.update("updVendorCreditRateForDefault", site); + } + + @Override + public void deleteVendorAccountForDefault(Site site) { + // TODO Auto-generated method stub + sqlSession.update("deleteVendorAccountForDefault", site); + } + + @Override + public HashMap getParseUserYn(HashMap pum) { + return sqlSession.selectOne("getParseUserYn", pum); + } + + @Override + public void setParseUserYn(HashMap pum) { + sqlSession.update("setParseUserYn", pum); + + } + + @Override + public OTPInfo getOtpInfo(long siteIdx) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getOtpInfo", siteIdx); + } + + @Override + public OTPInfo getOtpInfoByManger(long siteIdx) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getOtpInfoByManger", siteIdx); + } + + @Override + public int registSuperOtp(OTPInfo param) { + // TODO Auto-generated method stub + return sqlSession.insert("registSuperOtp", param); + } + + @Override + public HashMap getSiteOnlyVendorInfo(HashMap vendorParam) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getSiteOnlyVendorInfo", vendorParam); + } + + @Override + public TrfApiInfo getTrfApiInfo(HashMap mapParam) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTrfApiInfo", mapParam); + } + + @Override + public void agentIpsUpdate(Site site) { + sqlSession.update("agentIpsUpdate", site); + + } + + @Override + public int insertEvoDetail(HashMap detailMap) { + // TODO Auto-generated method stub + return sqlSession.insert("insertEvoDetail", detailMap); + } + + @Override + public HashMap getCommonApiInfo(HashMap commonParam) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getCommonApiInfo", commonParam); + } + + @Override + public HashMap getBeforeTranInfo(String vendorTranKey) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBeforeTranInfo", vendorTranKey); + } + + @Override + public List getParseTargetGame(String gameType) { + return sqlSession.selectList("getParseTargetGame", gameType); + } + + @Override + public String getOrgDetailData(BetParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getOrgDetailData", param); + } + + @Override + public String getParDetailData(BetParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getParDetailData", param); + } + + @Override + public HashMap getBetInfoByTranKey(String vendorTranKey) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBetInfoByTranKey", vendorTranKey); + } + + @Override + public HashMap getParseInfo(HashMap param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getParseInfo", param); + } + + @Override + public int getBlockParseGameId(String gameId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBlockParseGameId", gameId); + } + + @Override + public HashMap getBeforeTranInfo2(String vendorTranKey) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBeforeTranInfo2", vendorTranKey); + } + + @Override + public String getMemberByIdx(HashMap memParam) { + return sqlSession.selectOne("getMemberByIdx", memParam); + } + + @Override + public List getSiteVendorList2(int siteIdx) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteVendorList2", siteIdx); + } + + @Override + public List getVendorList2(int siteIdx) { + // TODO Auto-generated method stub + return sqlSession.selectList("getVendorList2", siteIdx); + } + + @Override + public void saveSvcr(HashMap paramMap) { + // TODO Auto-generated method stub + sqlSession.insert("saveSvcr", paramMap); + } + + @Override + public int siteVenderCodeCheck(HashMap paramMap) { + // TODO Auto-generated method stub + return sqlSession.selectOne("siteVenderCodeCheck", paramMap); + } + + @Override + public void saveVendorRate2(HashMap paramMap) { + // TODO Auto-generated method stub + sqlSession.update("saveVendorRate2", paramMap); + } + + @Override + public String getSiteKey(HashMap paramMap) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteKey", paramMap); + } + + @Override + public String getVendorTitle(HashMap paramMap) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getVendorTitle", paramMap); + } + + @Override + public Long getUserTimeout(HashMap accLog) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getUserTimeout", accLog); + } + + @Override + public int updateUserTimeout(HashMap accLog) { + // TODO Auto-generated method stub + return sqlSession.update("updateUserTimeout", accLog); + } + + @Override + public String getGameKeyByNexusGameId(String gameId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getGameKeyByNexusGameId", gameId); + } + + @Override + public String getDebitIsParse(String betId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getDebitIsParse", betId); + } + + @Override + public int updateParseUseYN(String useYn) { + // TODO Auto-generated method stub + return sqlSession.update("updateParseUseYN", useYn); + } + + @Override + public int insertTheaTrxId(HashMap param) { + // TODO Auto-generated method stub + return sqlSession.insert("insertTheaTrxId", param); + } + + @Override + public HashMap getApiKeyInfo(String vendorTitle) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getApiKeyInfo", vendorTitle); + } + + @Override + public HashMap getApiKeyInfo2(HashMap keyParam) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getApiKeyInfo2", keyParam); + } + + @Override + public HashMap getRefBetInfoByTranId(String tranId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getRefBetInfoByTranId", tranId); + } + + @Override + public int updMemberBalance(HashMap balanceMap) { + // TODO Auto-generated method stub + return sqlSession.update("updMemberBalance", balanceMap); + } + + @Override + public int getMemberBalance(HashMap balanceMap) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getMemberBalance", balanceMap); + } + + @Override + public HashMap getMemberId(String vendorUsername) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getMemberId", vendorUsername); + } + + @Override + public int checkMemberId(String vendorUsername) { + // TODO Auto-generated method stub + return sqlSession.selectOne("checkMemberId", vendorUsername); + } + + @Override + public HashMap getNewSiteApiInfo(String vendorUsername) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getNewSiteApiInfo", vendorUsername); + } + + @Override + public HashMap getNewSiteVendorInfo(HashMap param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getNewSiteVendorInfo", param); + } + + @Override + public int updateTestCnt(Site site) { + // TODO Auto-generated method stub + return sqlSession.update("updateTestCnt", site); + } + + @Override + public int updateParseEvoYn(HashMap param) { + // TODO Auto-generated method stub + return sqlSession.update("updateParseEvoYn", param); + } + + @Override + public int saveParsEvoAmount(SiteSearch param) { + // TODO Auto-generated method stub + return sqlSession.update("saveParsEvoAmount", param); + } + + @Override + public int getUserBalance(HashMap balanceMap) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getUserBalance", balanceMap); + } + + @Override + public List getMyDownSite(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getMyDownSite", search); + } + + @Override + public HashMap getCreditInfo(String siteId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getCreditInfo", siteId); + } + + @Override + public int checkDownSite(Map checkDown) { + // TODO Auto-generated method stub + return sqlSession.selectOne("checkDownSite", checkDown); + } + + @Override + public List getSiteTreeList(String siteId) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteTreeList", siteId); + } + + @Override + public int getMyDownSiteCheck(Site targetsite) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getMyDownSiteCheck", targetsite); + } + + @Override + public void insertParseUseYn(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("insertParseUseYn", site); + } + + @Override + public int updateSitePwd(SitePwdVO sitePwdVO) { + // TODO Auto-generated method stub + return sqlSession.update("updateSitePwd", sitePwdVO); + } + + @Override + public Site getSite(Site site) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getSite", site); + } + + @Override + public void siteVenderLobbyUpdate(Vendor vendor) { + // TODO Auto-generated method stub + sqlSession.update("siteVenderLobbyUpdate", vendor); + } + + @Override + public List getVendorMapList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getVendorMapList", search); + } + + @Override + public List geLobbyList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("geLobbyList", search); + } + + @Override + public String siteVenderRate(Vendor vendor) { + // TODO Auto-generated method stub + return sqlSession.selectOne("siteVenderRate", vendor); + } + + @Override + public int getBoardListCnt(BoardSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBoardListCnt", search); + } + + @Override + public List> getBoardList(BoardSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getBoardList", search); + } + + @Override + public HashMap getBoardDetail(long boardIdx) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBoardDetail", boardIdx); + } + + @Override + public int getSiteCallbackErrLogListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getSiteCallbackErrLogListCnt", search); + } + + @Override + public List getSiteCallbackErrLogList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getSiteCallbackErrLogList", search); + } + + @Override + public List getSiteTreeInfo(HashMap param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getSiteTreeInfo", param); + } + + @Override + public int getUserListCnt(UserSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getUserListCnt", search); + } + + @Override + public List> getUserList(UserSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getUserList", search); + } + + @Override + public HashMap getUserDetail(UserSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getUserDetail", search); + } + + @Override + public void insertCmsIp(Site site) { + // TODO Auto-generated method stub + sqlSession.insert("insertCmsIp", site); + } + + @Override + public int getSiteListCntForApi(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteListCntForApi", search); + } + + @Override + public List getSiteListForApi(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteListForApi", search); + } + + @Override + public Site getSiteDetailForApi(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteDetailForApi", search); + } + + @Override + public List getVendorListForApi(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getVendorListForApi", search); + } + + @Override + public List getSiteVendorListForApi(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteVendorListForApi", search); + } + + @Override + public HashMap getRefIdByVendorTranKey(String vendorTranKey) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getRefIdByVendorTranKey", vendorTranKey); + } + + @Override + public int updateUserMaxBet(HashMap param) { + return sqlSession.update("updateUserMaxBet", param); + } + + @Override + public int insertTranLog(HashMap logParam) { + return sqlSession.insert("insertTranLog", logParam); + } + + @Override + public HashMap getSiteSubCredit(String siteId) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteSubCredit", siteId); + } + + @Override + public String getBetAmountByTranParam(HashMap param) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getBetAmountByTranParam", param); + } + +} diff --git a/src/main/java/com/bb/dao/SplusDao.java b/src/main/java/com/bb/dao/SplusDao.java new file mode 100644 index 0000000..dbff911 --- /dev/null +++ b/src/main/java/com/bb/dao/SplusDao.java @@ -0,0 +1,24 @@ +package com.bb.dao; + + +import java.util.Map; + +public interface SplusDao { + + void insertSplus(Map splusBetParam); + + void udpateEvent(Map eventParam); + + void udpateBet(Map splusBetParam); + + void cancelBet(Map splusBetParam); + + int getReserveCnt(Map trxParam); + + int getCommitCnt(Map trxParam); + + int getDeReverseCnt(Map trxParam); + + int getCustomerCnt(Map trxParam); + +} diff --git a/src/main/java/com/bb/dao/SplusDaoImpl.java b/src/main/java/com/bb/dao/SplusDaoImpl.java new file mode 100644 index 0000000..8e873ba --- /dev/null +++ b/src/main/java/com/bb/dao/SplusDaoImpl.java @@ -0,0 +1,78 @@ +package com.bb.dao; + +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; + +@Repository("splusDao") +public class SplusDaoImpl implements SplusDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + + @Override + public void insertSplus(Map splusBetParam) { + System.out.print("dsfsdfsdfsdfsdfsdf"); + sqlSession.insert("insertSplus", splusBetParam); + + } + + + @Override + public void udpateEvent(Map eventParam) { + sqlSession.update("udpateEvent", eventParam); + + } + + + @Override + public void udpateBet(Map splusBetParam) { + sqlSession.update("udpateBet", splusBetParam); + + } + + + @Override + public void cancelBet(Map splusBetParam) { + sqlSession.update("udpacancelBeteBet", splusBetParam); + + } + + + @Override + public int getReserveCnt(Map trxParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getReserveCnt", trxParam); + } + + + @Override + public int getCommitCnt(Map trxParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getCommitCnt", trxParam); + } + + + @Override + public int getDeReverseCnt(Map trxParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getDeReverseCnt", trxParam); + } + + + @Override + public int getCustomerCnt(Map trxParam) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getCustomerCnt", trxParam); + } + +} diff --git a/src/main/java/com/bb/dao/StatDao.java b/src/main/java/com/bb/dao/StatDao.java new file mode 100644 index 0000000..53d9cb1 --- /dev/null +++ b/src/main/java/com/bb/dao/StatDao.java @@ -0,0 +1,89 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.ReportSearch; +import com.bb.model.Site; +import com.bb.model.SiteSearch; + +import jakarta.validation.Valid; + + +public interface StatDao { + + int getSiteDailyReportListCnt(SiteSearch search); + + List getSiteDailyReportList(SiteSearch search); + + int getVendorDailyReportListCnt(SiteSearch search); + + List getVendorDailyReportList(SiteSearch search); + + List getBottomSiteDailyReportList(SiteSearch search); + + HashMap getMonthCredit(SiteSearch search); + + List getUserDailyReportList(SiteSearch search); + + List getUserReportSum(SiteSearch search); + + List getAdminPushInfo(); + + int getAgentReportCnt(SiteSearch search); + + List getAgentReportList(SiteSearch search); + + int getAgentReportCnt2(SiteSearch search); + + List getAgentReportList2(SiteSearch search); + + HashMap getAgentReportTotal(SiteSearch search); + + + + String getlastMonth(SiteSearch search); + + List getVendorDailyReportListDay(SiteSearch search); + + List getVendorDailyReportListMonth(SiteSearch search); + + List getVendorDailyReportListDaySUM(SiteSearch search); + + List getVendorDailyReportListMonthSUM(SiteSearch search); + + List getSiteReportList(SiteSearch search); + + List getSiteReportListSum(SiteSearch search); + + List getSiteReportMemList(SiteSearch search); + + List getSiteReportMemListSum(SiteSearch search); + + List getSiteReportListToDay(SiteSearch search); + + List getSiteReportListSumToDay(SiteSearch search); + + List getDashBoardList(SiteSearch search); + + List getDashBoardMonth(SiteSearch search); + + HashMap getYdayBetInfoBySite(Site targetSite); + + HashMap getMonthBetInfoBySite(Site targetSite); + + HashMap getYdayBetInfoByUser(HashMap targetUser); + + HashMap getMonthBetInfoByUser(HashMap targetUser); + + HashMap getVendorDailyReportMonthByParse(SiteSearch search); + + List getVendorDailyReportListDayByParse(SiteSearch search); + + HashMap getHybridReport(ReportSearch search); + + List getHybridReportList(@Valid ReportSearch search); + + HashMap getHybridReportTotal(@Valid ReportSearch search); + +} diff --git a/src/main/java/com/bb/dao/StatDaoImpl.java b/src/main/java/com/bb/dao/StatDaoImpl.java new file mode 100644 index 0000000..b315225 --- /dev/null +++ b/src/main/java/com/bb/dao/StatDaoImpl.java @@ -0,0 +1,236 @@ +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.ReportSearch; +import com.bb.model.Site; +import com.bb.model.SiteSearch; + +import jakarta.validation.Valid; + +@Repository("statDao") +public class StatDaoImpl implements StatDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public int getSiteDailyReportListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getSiteDailyReportListCnt", search); + } + + @Override + public List getSiteDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getSiteDailyReportList", search); + } + + @Override + public int getVendorDailyReportListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getVendorDailyReportListCnt", search); + } + + @Override + public List getVendorDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getVendorDailyReportList", search); + } + + @Override + public List getBottomSiteDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getBottomSiteDailyReportList", search); + } + + @Override + public HashMap getMonthCredit(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getMonthCredit", search); + } + + @Override + public List getUserDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getUserDailyReportList", search); + } + + @Override + public List getUserReportSum(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectList("getUserReportSum", search); + } + + @Override + public List getAdminPushInfo() { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getAdminPushInfo", null); + } + + @Override + public int getAgentReportCnt(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getAgentReportCnt", search); + } + + @Override + public List getAgentReportList(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getAgentReportList", search); + } + + @Override + public int getAgentReportCnt2(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getAgentReportCnt2", search); + } + + @Override + public List getAgentReportList2(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getAgentReportList2", search); + } + + @Override + public HashMap getAgentReportTotal(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getAgentReportTotal", search); + } + + + + @Override + public String getlastMonth(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSession.selectOne("getlastMonth", search); + } + + @Override + public List getVendorDailyReportListDay(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getVendorDailyReportListDay", search); + } + + @Override + public List getVendorDailyReportListMonth(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getVendorDailyReportListMonth", search); + } + + @Override + public List getVendorDailyReportListDaySUM(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getVendorDailyReportListDaySUM", search); + } + + @Override + public List getVendorDailyReportListMonthSUM(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getVendorDailyReportListMonthSUM", search); + } + + @Override + public List getSiteReportList(SiteSearch search) { + return sqlSessionSub.selectList("getSiteReportList", search); + } + + @Override + public List getSiteReportListSum(SiteSearch search) { + return sqlSessionSub.selectList("getSiteReportListSum", search); + } + + @Override + public List getSiteReportMemList(SiteSearch search) { + return sqlSessionSub.selectList("getSiteReportMemList", search); + } + + @Override + public List getSiteReportMemListSum(SiteSearch search) { + return sqlSessionSub.selectList("getSiteReportMemListSum", search); + } + + @Override + public List getSiteReportListToDay(SiteSearch search) { + return sqlSessionSub.selectList("getSiteReportListToDay", search); + } + + @Override + public List getSiteReportListSumToDay(SiteSearch search) { + return sqlSessionSub.selectList("getSiteReportListSumToDay", search); + } + + @Override + public List getDashBoardList(SiteSearch search) { + return sqlSessionSub.selectList("getDashBoardList", search); + } + + @Override + public List getDashBoardMonth(SiteSearch search) { + return sqlSessionSub.selectList("getDashBoardMonth", search); + } + + @Override + public HashMap getYdayBetInfoBySite(Site targetSite) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getYdayBetInfoBySite", targetSite); + } + + @Override + public HashMap getMonthBetInfoBySite(Site targetSite) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getMonthBetInfoBySite", targetSite); + } + + @Override + public HashMap getYdayBetInfoByUser(HashMap targetUser) { + return sqlSessionSub.selectOne("getYdayBetInfoByUser", targetUser); + } + + @Override + public HashMap getMonthBetInfoByUser(HashMap targetUser) { + return sqlSessionSub.selectOne("getMonthBetInfoByUser", targetUser); + } + + @Override + public HashMap getVendorDailyReportMonthByParse(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getVendorDailyReportMonthByParse", search); + } + + @Override + public List getVendorDailyReportListDayByParse(SiteSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getVendorDailyReportListDayByParse", search); + } + + @Override + public HashMap getHybridReport(ReportSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getHybridReport", search); + } + + @Override + public List getHybridReportList(@Valid ReportSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getHybridReportList", search); + } + + @Override + public HashMap getHybridReportTotal(@Valid ReportSearch search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getHybridReportTotal", search); + } + +} diff --git a/src/main/java/com/bb/dao/TplusDao.java b/src/main/java/com/bb/dao/TplusDao.java new file mode 100644 index 0000000..c8f3d39 --- /dev/null +++ b/src/main/java/com/bb/dao/TplusDao.java @@ -0,0 +1,5 @@ +package com.bb.dao; + +public interface TplusDao { + +} diff --git a/src/main/java/com/bb/dao/TplusDaoImpl.java b/src/main/java/com/bb/dao/TplusDaoImpl.java new file mode 100644 index 0000000..e24c5e3 --- /dev/null +++ b/src/main/java/com/bb/dao/TplusDaoImpl.java @@ -0,0 +1,24 @@ +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.CronStatusVo; + +@Repository("tplusDao") +public class TplusDaoImpl implements TplusDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + +} diff --git a/src/main/java/com/bb/dao/TransDao.java b/src/main/java/com/bb/dao/TransDao.java new file mode 100644 index 0000000..5ab9d0a --- /dev/null +++ b/src/main/java/com/bb/dao/TransDao.java @@ -0,0 +1,36 @@ +package com.bb.dao; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.BetParam; +import com.bb.model.NexusTrplVO; +import com.bb.model.TransSearchVO; + +public interface TransDao { + + int getTransBetListCnt(TransSearchVO search); + + List> getTransBetList(TransSearchVO search); + + HashMap getTransBetListSum(TransSearchVO search); + + int getTransBetFastListCnt(TransSearchVO search); + + List> getTransBetFastList(TransSearchVO search); + + HashMap getBetListItem(String betId); + + HashMap getTransBetFastListSum(TransSearchVO search); + + HashMap getBetInfoByBetId(BetParam param); + + String getGsoftRoundIdByBetId(String betId); + + HashMap getSiteBetByRefIdFromOld(BetParam param); + + HashMap getApiInfo(String vendorTitle); + + int deleteEvoDetailNull(HashMap detailMap); + +} diff --git a/src/main/java/com/bb/dao/TransDaoImpl.java b/src/main/java/com/bb/dao/TransDaoImpl.java new file mode 100644 index 0000000..b5c03d7 --- /dev/null +++ b/src/main/java/com/bb/dao/TransDaoImpl.java @@ -0,0 +1,98 @@ +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.BetParam; +import com.bb.model.NexusTrplVO; +import com.bb.model.TransSearchVO; + +@Repository("transDao") +public class TransDaoImpl implements TransDao { + + /** 메인DB 연결 */ + @Autowired @Qualifier("sqlSessionMain") + protected SqlSession sqlSession; + + /** 서브DB 연결 */ + @Autowired @Qualifier("sqlSessionSub") + protected SqlSession sqlSessionSub; + + @Override + public int getTransBetListCnt(TransSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTransBetListCnt", search); + } + + @Override + public List> getTransBetList(TransSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getTransBetList", search); + } + + @Override + public HashMap getTransBetListSum(TransSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTransBetListSum", search); + } + + @Override + public int getTransBetFastListCnt(TransSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTransBetFastListCnt", search); + } + + @Override + public List> getTransBetFastList(TransSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectList("getTransBetFastList", search); + } + + @Override + public HashMap getBetListItem(String betId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBetListItem", betId); + } + + @Override + public HashMap getTransBetFastListSum(TransSearchVO search) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getTransBetFastListSum", search); + } + + @Override + public HashMap getBetInfoByBetId(BetParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getBetInfoByBetId", param); + } + + @Override + public String getGsoftRoundIdByBetId(String betId) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getGsoftRoundIdByBetId", betId); + } + + @Override + public HashMap getSiteBetByRefIdFromOld(BetParam param) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getSiteBetByRefIdFromOld", param); + } + + @Override + public HashMap getApiInfo(String vendorTitle) { + // TODO Auto-generated method stub + return sqlSessionSub.selectOne("getApiInfo", vendorTitle); + } + + @Override + public int deleteEvoDetailNull(HashMap detailMap) { + // TODO Auto-generated method stub + return sqlSession.delete("deleteEvoDetailNull", detailMap); + } + +} diff --git a/src/main/java/com/bb/exception/ApiException.java b/src/main/java/com/bb/exception/ApiException.java new file mode 100644 index 0000000..b33d59f --- /dev/null +++ b/src/main/java/com/bb/exception/ApiException.java @@ -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; + } +} diff --git a/src/main/java/com/bb/exception/NoDataApiException.java b/src/main/java/com/bb/exception/NoDataApiException.java new file mode 100644 index 0000000..a104a98 --- /dev/null +++ b/src/main/java/com/bb/exception/NoDataApiException.java @@ -0,0 +1,9 @@ +package com.bb.exception; + + + +public class NoDataApiException extends ApiException { + public NoDataApiException() { + super("9004", "조회된 데이터가 없습니다."); + } +} diff --git a/src/main/java/com/bb/exception/RequestArraySizeApiException.java b/src/main/java/com/bb/exception/RequestArraySizeApiException.java new file mode 100644 index 0000000..faef2c4 --- /dev/null +++ b/src/main/java/com/bb/exception/RequestArraySizeApiException.java @@ -0,0 +1,10 @@ +package com.bb.exception; + + + + +public class RequestArraySizeApiException extends ApiException { + public RequestArraySizeApiException(String parameterName) { + super("9003", "요청 배열 파라미터 크기에 오류가 있습니다. : " + parameterName); + } +} diff --git a/src/main/java/com/bb/exception/RequestHeaderApiException.java b/src/main/java/com/bb/exception/RequestHeaderApiException.java new file mode 100644 index 0000000..f6e7a62 --- /dev/null +++ b/src/main/java/com/bb/exception/RequestHeaderApiException.java @@ -0,0 +1,9 @@ +package com.bb.exception; + + + +public class RequestHeaderApiException extends ApiException { + public RequestHeaderApiException(String headerName) { + super("9001", "요청 헤더정보가 없습니다 : " + headerName); + } +} diff --git a/src/main/java/com/bb/exception/RequestParameterApiException.java b/src/main/java/com/bb/exception/RequestParameterApiException.java new file mode 100644 index 0000000..ed816c0 --- /dev/null +++ b/src/main/java/com/bb/exception/RequestParameterApiException.java @@ -0,0 +1,8 @@ +package com.bb.exception; + + +public class RequestParameterApiException extends ApiException { + public RequestParameterApiException(String parameterName) { + super("9002", "필수 요청 파라미터가 없습니다. : " + parameterName); + } +} diff --git a/src/main/java/com/bb/front/ApiCoinController.java b/src/main/java/com/bb/front/ApiCoinController.java new file mode 100644 index 0000000..a4025e2 --- /dev/null +++ b/src/main/java/com/bb/front/ApiCoinController.java @@ -0,0 +1,177 @@ +package com.bb.front; + +import java.io.IOException; +import java.net.InetAddress; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.web.bind.annotation.PostMapping; +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.CoinVo; +import com.bb.model.Site; +import com.bb.service.CoinService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +@RestController +@Slf4j +@RequestMapping("/api/coin") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class ApiCoinController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + CoinService coinService; + + @ResponseBody + @PostMapping(value="") + public ApiResponse getCoinInfo(@RequestHeader String token, HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + String coinSymbol = request.getParameter("symbol"); + String currency = request.getParameter("currency"); + try { + + + //apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site==null) { + throw new ApiException("1000", "accessDinied"); + } + if(token==null) { + throw new ApiException("1000", "accessDinied"); + } + + //토큰체크 + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + if(token == null) { + log.error("#-p1::agentBalance::"+ "access denied token"); + throw new ApiException("1000", "access denied token"); + } + + + CoinVo coinVo = coinService.getCoinInfo(coinSymbol, currency); + + + apiResponse.put("info",coinVo); + apiResponse.success(); + return apiResponse; + + + }catch(Exception e) { + log.info("ddd" +e.toString()); + apiResponse.fail(); + return apiResponse; + } + } + + @Scheduled(fixedDelay = 300*1000) // 5분 + public void getCoinAllInfo() throws Exception { + +// Authentication auth = +// new UsernamePasswordAuthenticationToken("system", null, +// AuthorityUtils.createAuthorityList("ROLE_ADMIN")); +// SecurityContextHolder.getContext().setAuthentication(auth); + + String hostname = InetAddress.getLocalHost().getHostName(); + if("ip-172-31-40-216.ap-northeast-3.compute.internal".equals(hostname)) { // 3번 서버 호스트 네임으로 빠꺼야함 + String[] currency = {"usd","krw"}; + String cgApiKey = "CG-wJAwrJWZCSbzmBhk545CTcR3"; + try { + + for(int cu=0;cu= 0) ) { + log.error("site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("access denied IP"); + return apiResponse; + } + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfoAdmin(token); + final String LOG_PREFIX = "#-API::USER::userKick::"+tokenInfo.getSid()+"::::"; + + log.info(LOG_PREFIX+ "UserKickParam::"+param.toString()); + + // 회원 정보 조회 + CashParam cashParam = new CashParam(); + cashParam.setSiteIdx(site.getSiteIdx()); + cashParam.setMemberId(param.getUserid()); + Member member = siteService.getMember2(cashParam); + + if(member == null) { + log.error(LOG_PREFIX+ "NOT_FOUND_USER"); + apiResponse.setResultCode("0"); + apiResponse.setResultMessage("존재하지 않는 유저입니다"); + return apiResponse; + } + + // 유저의 마지막 접속 벤더 조회 + String lastVendor = null; + if(member.getLastInVendorIdx() > 0) { + // lastInVendorIdx로 벤더 정보 조회 + HashMap vendorParam = new HashMap<>(); + vendorParam.put("siteIdx", member.getSiteIdx()); + vendorParam.put("vendorIdx", member.getLastInVendorIdx()); + + HashMap vendorInfo = siteService.getSiteOnlyVendorInfo(vendorParam); + if(vendorInfo != null && vendorInfo.containsKey("vendorCode")) { + lastVendor = vendorInfo.get("vendorCode"); + log.info(LOG_PREFIX + "Found last vendor: " + lastVendor + " (vendorIdx: " + member.getLastInVendorIdx() + ")"); + } + } + + boolean kickResult = false; + + if(lastVendor != null && !lastVendor.isEmpty()) { + log.info(LOG_PREFIX + "Last vendor: " + lastVendor); + + // 벤더별 강제 종료 처리 + switch(lastVendor.toLowerCase()) { + case "dpcore": + // TODO: DPCore API 호출 + log.info(LOG_PREFIX + "Calling DPCore kick API"); + kickResult = true; + break; + case "ace2": + // TODO: Ace API 호출 + log.info(LOG_PREFIX + "Calling Ace kick API"); + kickResult = true; + break; + case "onix": + // Onix API 호출 + try { + HashMap onixVendorParam = new HashMap<>(); + onixVendorParam.put("siteIdx", member.getSiteIdx()); + onixVendorParam.put("vendorCode", "onix"); + HashMap onixApiInfo = siteService.getSiteOnlyVendorInfo(onixVendorParam); + + if(onixApiInfo != null && !onixApiInfo.isEmpty()) { + String apiUrl = onixApiInfo.get("apiUrl"); + String apiKey = onixApiInfo.get("apiKey"); + + if(apiUrl != null && apiKey != null) { + String kickUrl = apiUrl + "/csapi/kick"; + log.info(LOG_PREFIX + "Calling Onix kick API: " + kickUrl); + + try { + // Request Body 생성 + HashMap requestBody = new HashMap<>(); + requestBody.put("userid", member.getMemberId()); + + // WebClient로 Onix kick API 호출 + String response = webClient.post() + .uri(kickUrl) + .header("Authorization", "Bearer " + apiKey) + .header("Content-Type", "application/json") + .bodyValue(requestBody) + .retrieve() + .bodyToMono(String.class) + .block(); + + log.info(LOG_PREFIX + "Onix API Response: " + response); + + // Response 파싱 + if(response != null && response.contains("\"result\":1")) { + kickResult = true; + log.info(LOG_PREFIX + "Onix kick success"); + } else { + log.error(LOG_PREFIX + "Onix kick failed: " + response); + } + } catch(Exception apiException) { + log.error(LOG_PREFIX + "Onix API call exception", apiException); + } + } + } + } catch(Exception e) { + log.error(LOG_PREFIX + "Onix kick API error", e); + } + break; + case "pink": + // TODO: Pink API 호출 + log.info(LOG_PREFIX + "Calling Pink kick API"); + kickResult = true; + break; + default: + log.info(LOG_PREFIX + "Vendor not supported for kick: " + lastVendor); + kickResult = true; + break; + } + } else { + log.info(LOG_PREFIX + "No vendor info found, returning success"); + kickResult = true; + } + + if(kickResult) { + log.info(LOG_PREFIX+ "USER_KICK_SUCCESS::"+param.getUserid()); + apiResponse.setResultCode("1"); + apiResponse.setResultMessage("강퇴 성공"); + } else { + log.error(LOG_PREFIX+ "USER_KICK_FAILED::"+param.getUserid()); + apiResponse.setResultCode("0"); + apiResponse.setResultMessage("강퇴 실패"); + } + + } catch(Exception e) { + log.error(e.toString()); + e.printStackTrace(); + apiResponse.setResultCode("0"); + apiResponse.setResultMessage("token is no valid"); + } + + } catch (Exception e) { + log.error("Kick API error", e); + e.printStackTrace(); + apiResponse.setResultCode("0"); + apiResponse.setResultMessage("강퇴 실패"); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/auth") + public synchronized ApiResponse auth(HttpServletRequest request, @RequestBody AuthParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-auth::"+param.getUserId()+"::::"; + + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "A1001:Access denied Key"); + apiResponse.setResultCode("A1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + System.out.println("site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(" + +site.getSiteIp()+")" + +IPKit.getIpAddressByRequest(request) +","+ site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) ); + + if( !( site.getSiteIp() == null || "".equals(site.getSiteIp()) || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 ) ) { + log.error(LOG_PREFIX+ "site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + log.error(LOG_PREFIX+ "A1002:Access denied IP"); + apiResponse.setResultCode("A1002"); + apiResponse.setResultMessage("Access denied IP"); + return apiResponse; + } + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + try { + //회원아이디 유표성체크 + String regex = "^[a-zA-z0-9]{3,25}$"; + Pattern p = Pattern.compile(regex); + + Matcher m = p.matcher(param.getUserId()); + + if(!m.matches()) { + log.error(LOG_PREFIX+ "A1003:Check user id"); + apiResponse.setResultCode("A1003"); + apiResponse.setResultMessage("Check user id"); + return apiResponse; + } + + if(param.getUserId().length() > 19) { + log.error(LOG_PREFIX+ "A1004:Check user id length"); + apiResponse.setResultCode("A1004"); + apiResponse.setResultMessage("Check user id length"); + return apiResponse; + } + + + // 회원 유뮤체크 + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(site.getSiteIdx()); + commonParam.setAuthParam(param); + Member member = siteService.getMember(commonParam); + + // 회원 없을경우 가입시키기 + if(member == null) { + siteService.insertMember(commonParam); + member = siteService.getMember(commonParam); + } + + // 폭탄게임 전용 본인 체크키 업데이트 + if(member.getDowinId() == null || "".equals(member.getDowinId())) { + String bombToken = new TempKey().generateAuthKey(); + member.setBombAccId(bombToken); + member.setDowinId(bombToken); + siteService.updateBombKey(member); + } + + log.info(LOG_PREFIX+ "member::result: " + member.toString()); + + // 토큰생성 + JwtClame jwtinfo = new JwtClame(); + jwtinfo.setSiteId(site.getSiteId()); + jwtinfo.setMemId(commonParam.getAuthParam().getUserId()); + String tok = jwtManager.generateToken(jwtinfo); + + + // 파워볼 API Key 발급 및 site_vendor_map.vendorApiId, site_vendor_map.vendorApiKey 세팅 선처리 + try { + + } catch(Exception e) { + log.error(LOG_PREFIX+ "POWER_BALL::Exception: " + e.getMessage()); + log.error(LOG_PREFIX+ "POWER_BALL::Exception: " + e.toString()); + } + + // 결과보내기 + apiResponse.put("userId", member.getMemberIdx()); + apiResponse.put("token", tok); + apiResponse.success(); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @GetMapping(value="/playBombDemo") + public ApiResponse playBombDemo(HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + String lauchURL=""; + String bombToken = new TempKey().generateAuthKey(); + + siteService.inserDemoUSer(bombToken); + + + String gameUrl ="http://tpabomb.com?"; + String gameUrl2 = "userID="+bombToken; + + String language = "en"; + + + + gameUrl2 += "&cc=pan" ; + gameUrl2 += "&nation=" + language; + gameUrl2 += "&loginToken=" +bombToken; + + + log.info("###-BOMB API-### Request : " + gameUrl2); + lauchURL = gameUrl + AesUtil.getAES128_Encode(gameUrl2); + apiResponse.put("gameurl", lauchURL); + + return apiResponse; + + } + + @ResponseBody + @PostMapping(value="/play") + public ApiResponse play(@RequestHeader String token, HttpServletRequest request, @RequestBody PlayParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + final String LOG_PREFIX = "#-play::"+param.getUserId()+"::::"; + + try { + if(param.getRequestAT() == null || param.getRequestAT().equals("")) { + param.setRequestAT(Long.toString(System.currentTimeMillis())); + } + long requestAT1 = Long.parseLong(param.getRequestAT()); + long currentAT1 = System.currentTimeMillis(); + SimpleDateFormat chkSdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String requestATStr1 = chkSdf1.format(requestAT1); + String currentATStr1 = chkSdf1.format(currentAT1); + log.info(LOG_PREFIX+ "## /play ##[requestATStr:"+requestATStr1+"][currentATStr:"+currentATStr1+"]"); + log.info(LOG_PREFIX+ "Authorization::"+request.getHeader("Authorization")); + log.info(LOG_PREFIX+ "token::"+token); + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + String ip = param.getUserIp(); + String[] ipArray = ip.split(","); + log.info(LOG_PREFIX+ "ipArray::"+ipArray.toString()); + ip = ipArray[0]; + param.setUserIp(ip); + + log.info(LOG_PREFIX+ "PlayParam::"+param.toString()); + /* Date타입으로 변경 */ + double diff1 = (currentAT1 - requestAT1) / 1000.0; // 초 + if(diff1 > 3.5) { + log.error(LOG_PREFIX+ "/play ## "+diff1+"초 통신 지연발생[requestATStr:"+requestATStr1+"][currentATStr:"+currentATStr1+"]"); + log.error(LOG_PREFIX+ "P1001:Network time delay"); + throw new ApiException("P1001", "Network time delay"); + } + + //apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site==null) { + log.error(LOG_PREFIX+ "P1002:Access denied Key"); + throw new ApiException("P1002", "Access denied Key"); + } + if(token==null) { + log.error(LOG_PREFIX+ "P1003:Access token check"); + throw new ApiException("P1003", "Access token check"); + } + + //토큰체크 + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + log.info(LOG_PREFIX+ "TokenInfo::"+tokenInfo.toString()); + + final String IS_TRANSFER = site.getIsTransfer(); + + //회원정보 + AuthParam authParam = new AuthParam(); + authParam.setUserId(tokenInfo.getMid()); + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(site.getSiteIdx()); + commonParam.setAuthParam(authParam); + commonParam.setPlayParam(param); + log.info(LOG_PREFIX+ "CommonParam::"+commonParam.toString()); + Member member = siteService.getMember(commonParam); + + //회사명 회사연동 벤더변 벤더연동 + HashMap venderInfo = siteService.getVenderApiInfo(commonParam); + if(venderInfo == null) { + venderInfo = siteService.getOnlyVenderInfo(commonParam); + if(venderInfo == null) { + log.error(LOG_PREFIX+ "P1004:Vendor not setting"); + throw new ApiException("P1004", "Vendor not setting"); + } + } + + // userMaxBet 처리 (유저별 최대베팅제한금액) + Long userMaxBet = param.getUserMaxBet(); + if(userMaxBet == null) { + userMaxBet = 0L; // 값이 비워져있으면 0으로 처리 + } + + // site_member 테이블에 userMaxBet 저장 + HashMap userMaxBetParam = new HashMap<>(); + userMaxBetParam.put("siteIdx", site.getSiteIdx()); + userMaxBetParam.put("memberIdx", member.getMemberIdx()); + userMaxBetParam.put("userMaxBet", userMaxBet); + int updateResult = siteService.updateUserMaxBet(userMaxBetParam); + log.info(LOG_PREFIX+ "updateUserMaxBet Result: " + updateResult + ", userMaxBet: " + userMaxBet); + + // tran_log 테이블에 로그 기록 시도 (실패해도 게임 플레이는 계속됨) + try { + HashMap tranLogParam = new HashMap<>(); + tranLogParam.put("siteIdx", site.getSiteIdx()); + tranLogParam.put("vendorIdx", venderInfo.get("vendorIdx")); + tranLogParam.put("gameIdx", param.getGameKey()); + + // body에 memberIdx와 userMaxBet 정보 포함 + JSONObject bodyJson = new JSONObject(); + bodyJson.put("memberIdx", member.getMemberIdx()); + bodyJson.put("memberId", member.getMemberId()); + bodyJson.put("userMaxBet", userMaxBet); + bodyJson.put("userId", param.getUserId()); + bodyJson.put("gameKey", param.getGameKey()); + tranLogParam.put("body", bodyJson.toString()); + + int logResult = siteService.insertTranLog(tranLogParam); + log.info(LOG_PREFIX+ "insertTranLog Result: " + logResult); + } catch (Exception e) { + log.error(LOG_PREFIX+ "insertTranLog failed but continue play: " + e.getMessage()); + } + + long userBalance = 0; + long siteCredit = site.getCredit(); + String lauchURL =""; + String callbackType = "S"; + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + if(param.getBalance() == null) { + log.error(LOG_PREFIX+ "P1005:User balance not null"); + throw new ApiException("P1005", "User balance not null"); + } + + userBalance = param.getBalance(); + + if(siteCredit < userBalance) { + log.error(LOG_PREFIX+ "P1006:Insufficient site credit"); + throw new ApiException("P1006", "Insufficient site credit"); + } + } + + log.info(LOG_PREFIX+ "venderInfo::" + venderInfo.toString()); + final int START_VENDOR_IDX = Integer.parseInt(venderInfo.get("vendorIdx").toString()); + final String START_VENDOR_TITLE = venderInfo.get("vendorTitle").toString(); + + Long requestTime = System.currentTimeMillis(); + HashMap accLog = new HashMap<>(); + accLog.put("siteIdx", site.getSiteIdx()); + accLog.put("memberIdx", member.getMemberIdx()); + // Timeout 체크 + Long userTimeout = siteService.getUserTimeout(accLog); + if(userTimeout == null) { + userTimeout = requestTime; + } else { + userTimeout = userTimeout + (1*1000); + } + if(requestTime < userTimeout) { + log.error(LOG_PREFIX+ "P1007:재요청 대기시간(8초)"); + throw new ApiException("P1007", "재요청 대기시간(8초)"); + } else { + log.info(LOG_PREFIX+ "마지막 요청으로부터 8초 이후에 요청"); + accLog.put("requestTime", requestTime); + int result = siteService.updateUserTimeout(accLog); + log.info(LOG_PREFIX+ "updateUserTimeout()::"+userTimeout); + log.info(LOG_PREFIX+ "[TIMEOUT result : " + result + "]"); + } + + + // Parsing start user set + HashMap usePaeseY = siteService.getParseUseYn(site.getSiteIdx()); + boolean isParseStartUser = false; + HashMap pum = new HashMap(); + if(usePaeseY != null && "Y".equals(usePaeseY.get("useYn").toString()) && START_VENDOR_IDX == 1 + && (START_VENDOR_TITLE.equals("dpcore")) + ) { + int parsEvoAmount = (int) usePaeseY.get("parsEvoAmount"); + long totalEvoBetAmt = member.getTotalEvoBetAmt(); + String parseEvoYn = member.getParseEvoYn(); + if(parsEvoAmount == 0) { + isParseStartUser = true; + } else { + if(parsEvoAmount < totalEvoBetAmt && parseEvoYn.equals("Y")) { + isParseStartUser = true; + } else { + isParseStartUser = false; + } + } + } else { + isParseStartUser = false; + } + + // Parsing start user set + String apiUsername = ""; + String apiNickname = ""; + String changeUrl = ""; + String changeApiKey = ""; + if(START_VENDOR_TITLE.equals("svendor") || START_VENDOR_TITLE.equals("pink")) { + apiUsername = member.getVendorUsername(); + if(apiUsername==null || "".equals(apiUsername)) { + + int cnt = 0; + do { + apiUsername = StringUtils.generateString(12); + cnt = siteService.checkMemberId(apiUsername); + } while(cnt != 0); + member.setVendorUsername(apiUsername); + } + apiNickname = site.getSiteId().substring(0, 2) + "_" + member.getMemberId(); + + // ##--isTransfer 처리-## + // Member balance sync + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", member.getSiteIdx()); + balanceMap.put("memberIdx", member.getMemberIdx()); + balanceMap.put("memberId", member.getMemberId()); + balanceMap.put("vendorUsername", member.getVendorUsername()); + int updBalanceResult = siteService.updMemberBalance(balanceMap); + log.info(LOG_PREFIX+ "updMemberBalance Result : " + updBalanceResult); + } else { + apiUsername = site.getSiteIdxHex() + member.getMemberId(); + apiNickname = apiUsername; + } + log.info(LOG_PREFIX+ "[PLAY_INFO] Mamber::" + member.toString()); + log.info(LOG_PREFIX+ "[PLAY_INFO] ParseUserMap::" + pum.toString()); + log.info(LOG_PREFIX+ "[PLAY_INFO] isParseStartUser::" + isParseStartUser); + log.info(LOG_PREFIX+ "[PLAY_INFO] START_VENDOR_IDX::" + START_VENDOR_IDX); + log.info(LOG_PREFIX+ "[PLAY_INFO] userBalance::" + userBalance); + log.info(LOG_PREFIX+ "[PLAY_INFO] apiUsername::" + apiUsername); + log.info(LOG_PREFIX+ "[PLAY_INFO] apiNickname::" + apiNickname); + log.info(LOG_PREFIX+ "[PLAY_INFO] changeUrl::" + changeUrl); + log.info(LOG_PREFIX+ "[PLAY_INFO] changeApiKey::" + changeApiKey); + + if(venderInfo.get("vendorCode").toString().contains("org_pragmatic")) { + + String tok = apiUsername; + log.info(LOG_PREFIX+ "[PLAY_INFO] tok::" + tok); + venderInfo.put("username", apiUsername); + + if("org_pragmatic_casino".equals(venderInfo.get("vendorCode").toString())) { + venderInfo.put("game_key", "101"); + }else { + venderInfo.put("game_key", param.getGameKey()); + + } + + lauchURL = pragmaticService.getLaunchUrl(LOG_PREFIX, tok, venderInfo, param, site.getSiteIdxHex() + member.getMemberId()); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + + } else if(venderInfo.get("vendorCode").toString().contains("panda_pragmatic_slot")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentId = venderInfo.get("vendorApiId").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiVendor = venderInfo.get("vendorGameCode").toString(); + String apiGameCode = param.getGameKey(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAgentId", apiAgentId); + apiInfo.put("apiKey", apiKey); + apiInfo.put("apiVendor", apiVendor); + apiInfo.put("apiGameCode", apiGameCode); + apiInfo.put("apiUsername", site.getSiteIdxHex() + member.getMemberId()); + apiInfo.put("apiNickname", apiNickname); + log.info(LOG_PREFIX+ "PANDA::API Info::" + apiInfo); + + lauchURL = pandaService.getLaunchUrl(LOG_PREFIX, apiInfo); + + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + + } else if(venderInfo.get("vendorCode").toString().contains("pracp_pragmatic_slot")) { + + venderInfo.put("username", site.getSiteIdxHex() + member.getMemberId()); + venderInfo.put("vendor_key","pragmatic_slot"); + venderInfo.put("game_key", param.getGameKey()); + + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentCode = venderInfo.get("vendorApiId").toString(); + String apiToken = venderInfo.get("vendorApiKey").toString(); + String apiProviderCode = venderInfo.get("vendorGameCode").toString(); + String apiGameCode = param.getGameKey(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAgentCode", apiAgentCode); + apiInfo.put("apiToken", apiToken); + apiInfo.put("apiProviderCode", apiProviderCode); + apiInfo.put("apiGameCode", apiGameCode); + apiInfo.put("apiPlayerCode", site.getSiteIdxHex() + member.getMemberId()); + log.info(LOG_PREFIX+ "PRACP::API Info::" + apiInfo); + + lauchURL = pracpService.getLaunchUrl(LOG_PREFIX, apiInfo); + + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + + } else if(venderInfo.get("vendorCode").toString().contains("grand_pragmatic_slot")) { + + venderInfo.put("username", site.getSiteIdxHex() + member.getMemberId()); + venderInfo.put("vendor_key","pragmatic_slot"); + venderInfo.put("game_key", param.getGameKey()); + lauchURL = grandService.getLaunchUrl(venderInfo); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + + } else if(venderInfo.get("vendorCode").toString().contains("svendor_") + || venderInfo.get("vendorCode").toString().contains("pink_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgent = venderInfo.get("vendorApiId").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiVendor = venderInfo.get("vendorGameCode").toString(); + String apiUserIp = param.getUserIp(); + String apiGameKey = ""; + String apiGameSkin = ""; + + String category = venderInfo.get("vendorGameCategory").toString(); + String vendorKey = venderInfo.get("vendorKey").toString(); + + + if("SLOT".equals(category)) { + apiGameKey = param.getGameKey(); + } else { + // Casino + if(vendorKey.equals("C01")) { + // Evolution + apiGameKey = "top_games"; + if(param.getSkinType() != null && !param.getSkinType().equals("")) { + apiGameSkin = param.getSkinType(); + } else { + apiGameSkin = venderInfo.get("extrSkinType").toString(); + } + } else if(vendorKey.equals("C02")) { + // Pragmatic Live + apiGameKey = "101"; + } else if(vendorKey.equals("C03")) { + // Dream Gaming + apiGameKey = "dgcasino"; + } else if(vendorKey.equals("C04")) { + // 보타 카지노 + apiGameKey = "bota"; + } else if(vendorKey.equals("C10")) { + // Asia Gaming + apiGameKey = "0"; + } else if(vendorKey.equals("C05")) { + // Microgaming Casino + apiGameKey = "MGL_GRAND_LobbyAll"; + } else if(vendorKey.equals("C08")) { + // Oriental Gaming + apiGameKey = "1"; + } else if(vendorKey.equals("C09")) { + // Ezugi + apiGameKey = "1008"; + } else if(vendorKey.equals("C32")) { + // 섹시 바카라 + apiGameKey = "MX-LIVE-001"; + } else { + apiGameKey = ""; + } + } + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAgent", apiAgent); + apiInfo.put("apiKey", apiKey); + apiInfo.put("userid", apiUsername); + apiInfo.put("nickname", apiUsername); + apiInfo.put("userip", param.getUserIp()); + apiInfo.put("category", category); + apiInfo.put("vendor", apiVendor); + apiInfo.put("game", apiGameKey); + apiInfo.put("skin", apiGameSkin); + log.info(LOG_PREFIX+ "PINK::API Info::" + apiInfo); + + // Create User + JSONObject createRes = svendorService.create(LOG_PREFIX, apiInfo); + log.info(LOG_PREFIX+ "PINK::createRes::" + createRes.toString()); + if(createRes.getInt("code") == 0 || createRes.getInt("code") == 97) { + lauchURL = svendorService.playUrl(LOG_PREFIX, apiInfo); + } else { + throw new ApiException("Svendor User Create ERROR"); + } + + log.info(LOG_PREFIX+ "PINK::lauchURL: " + lauchURL); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + + } else if((venderInfo.get("vendorCode").toString().startsWith("tower_pragmatic_slot"))) { + + String gameApiUrl = venderInfo.get("vendorApiUrl").toString(); + gameApiUrl += "/v2/play?site_code="+venderInfo.get("vendorApiId").toString(); + gameApiUrl += "&user_id="+site.getSiteIdxHex()+member.getMemberId(); + gameApiUrl += "&nickname="+site.getSiteIdxHex()+member.getMemberId(); + gameApiUrl += "&vendorCode="+venderInfo.get("vendorGameCode").toString(); + gameApiUrl += "&gameCode="+param.getGameKey(); + gameApiUrl += "&user_ip="+param.getUserIp(); + gameApiUrl += "&session_token="+token; + + venderInfo.put("gameApiUrl", gameApiUrl); + String launchUrl = towerService.getLaunchUrl(venderInfo); + + apiResponse.put("gameurl", launchUrl); + apiResponse.put("callbackType", "S"); + + } else if("splus".equals(venderInfo.get("vendorCode").toString())) { + + lauchURL = venderInfo.get("vendorApiUrl").toString() +"?operatorToken="+URLEncoder.encode(token, "UTF-8"); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + + } else if("bti_zeno".equals(venderInfo.get("vendorCode").toString())) { + + lauchURL = venderInfo.get("vendorApiUrl").toString() +"?operatorToken="+URLEncoder.encode(token, "UTF-8"); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + + } else if("bet_radar".equals(venderInfo.get("vendorCode").toString())) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiDevice = "DESKTOP"; + + if(param.getIsMobile().equals("Y")) { + apiDevice = "MOBILE"; + } + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("apiUsername", apiUsername); + apiInfo.put("apiNickname", apiNickname); + apiInfo.put("apiDevice", apiDevice); + + lauchURL = betRadarService.gameLaunch(LOG_PREFIX, apiInfo); + if(lauchURL == null || lauchURL.equals("")) { + log.error(LOG_PREFIX+ "BET_RADAR::GAME_LAUNCH:::Error"); + throw new ApiException("P111", "GAME_START_ERROR"); + } else { + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } + + } else if("tpabomb".equals(venderInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "bomb::"+ "###-BOMB API-### param: " + param.toString()); + //String gameUrl ="http://"+venderInfo.get("vendorAuthApiUrl").toString()+"/user/login/"+venderInfo.get("vendorApiId").toString(); + String gameUrl ="http://"+venderInfo.get("vendorAuthApiUrl").toString()+"?"; + String gameUrl2 = "userID="+site.getSiteIdxHex()+member.getMemberId(); + + String language = "KR"; + if( !(param.getLanguage() == null || "".equals(param.getLanguage()))) { + language = param.getLanguage(); + } + + + log.info(LOG_PREFIX+ "bomb::"+ "###-BOMB API-### param.getDecYn(): " + param.getDecYn()); + + + if("Y".equals(param.getDecYn())) { + gameUrl2 += "&cc=tbomb2"; + } else { + gameUrl2 += "&cc=" + venderInfo.get("vendorApiId").toString(); + param.setDecYn("N"); + } + + + HashMap decimalParam = new HashMap(); + decimalParam.put("bombAccId", member.getBombAccId()); + decimalParam.put("decYn",param.getDecYn()); + siteService.updateDecimal(decimalParam); + + + gameUrl2 += "&nation=" + language; + gameUrl2 += "&loginToken=" + member.getBombAccId(); + + + log.info(LOG_PREFIX+ "bomb::"+ "###-BOMB API-### gameUrl2 : " + gameUrl2); + lauchURL = gameUrl + AesUtil.getAES128_Encode(gameUrl2); + log.info(LOG_PREFIX+ "bomb::"+ "###-BOMB API-### lauchURL : " + lauchURL); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + + } else if(venderInfo.get("vendorCode").toString().contains("pbg_ball")) { + // PowerBall API 게임실행 Proc + venderInfo.put("userId", site.getSiteIdxHex()+member.getMemberId()); + lauchURL = powerBallService.getGameUrl(venderInfo, LOG_PREFIX); + if(lauchURL != null && !lauchURL.equals("")) { + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } else { + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl() FAIL"); + throw new ApiException("PowerBall_99", "Game Start Error"); + } + } else if(venderInfo.get("vendorCode").toString().contains("nexus_")) { + String vendorGameCategory = venderInfo.get("vendorGameCategory").toString(); + String vendorKey = venderInfo.get("vendorKey").toString(); + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentId = venderInfo.get("vendorApiId").toString(); + String apiAgentSecretKey = venderInfo.get("vendorApiKey").toString(); + String apiVendorKey = venderInfo.get("vendorGameCode").toString(); + String apiGameKey = ""; + if("SLOT".equals(vendorGameCategory)) { + apiGameKey = param.getGameKey(); + } else { + // Casino + // apiGameKey = "A"; // 1,000 ~ 1,000,000 + // apiGameKey = venderInfo.get("nexusSkinType").toString(); + if(param.getSkinType() != null && !param.getSkinType().equals("")) { + apiGameKey = param.getSkinType(); + } else { + apiGameKey = venderInfo.get("nexusSkinType").toString(); + } + log.info(LOG_PREFIX+ "NEXUS::apiSkin::" + apiGameKey); + } + + String apiUserIp = param.getUserIp(); + String apiLanguage = "ko"; + String apiPlatform = "desktop"; + + if(param.getIsMobile().equals("Y")) { + apiPlatform = "mobile"; + } + + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(member.getSiteIdx()) + .memberIdx(member.getMemberIdx()) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiAgentSecretKey) + .vendorKey(apiVendorKey) + .gameKey(apiGameKey) + .username(apiUsername) + .nickname(apiNickname) + .siteUsername(apiUsername) + .ip(apiUserIp) + .language(apiLanguage) + .platform(apiPlatform) + .build(); + log.info(LOG_PREFIX+ "NEXUS::NexusApiInfo::" + nexusApiInfo); + + // Create User + JSONObject userObj = nexusService.createUser(LOG_PREFIX, nexusApiInfo); + if(!(userObj.getInt("code")==0 || userObj.getInt("code")==-500)) { + log.error(LOG_PREFIX+ "NEXUS::createUser::error::code::" + userObj.getInt("code")); + log.error(LOG_PREFIX+ "NEXUS::createUser::error::message::" + userObj.getString("msg")); + throw new ApiException("NX"+userObj.getInt("code"), userObj.getString("msg")); + } + + // Game url + lauchURL = nexusService.gameStart(LOG_PREFIX, nexusApiInfo); + if(lauchURL != null && !lauchURL.equals("")) { + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } else { + log.error(LOG_PREFIX+ "NEXUS::gameStart() FAIL"); + throw new ApiException("NEXUS_99", "Game Start Error"); + } + + } else if(venderInfo.get("vendorCode").toString().contains("ace2_")) { + String vendorGameCategory = venderInfo.get("vendorGameCategory").toString(); + String vendorKey = venderInfo.get("vendorKey").toString(); + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentId = venderInfo.get("vendorApiId").toString(); + String apiAgentSecretKey = venderInfo.get("vendorApiKey").toString(); + String apiVendorKey = venderInfo.get("vendorGameCode").toString(); + String apiGameKey = ""; + if("SLOT".equals(vendorGameCategory)) { + apiGameKey = param.getGameKey(); + } else { + // Casino + // apiGameKey = "A"; // 1,000 ~ 1,000,000 + // apiGameKey = venderInfo.get("nexusSkinType").toString(); + if(param.getSkinType() != null && !param.getSkinType().equals("")) { + apiGameKey = param.getSkinType(); + } else { + apiGameKey = venderInfo.get("nexusSkinType").toString(); + } + log.info(LOG_PREFIX+ "ACE::apiSkin::" + apiGameKey); + } + + String apiUserIp = param.getUserIp(); + String apiLanguage = "ko"; + String apiPlatform = "desktop"; + + if(param.getIsMobile().equals("Y")) { + apiPlatform = "mobile"; + } + + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(member.getSiteIdx()) + .memberIdx(member.getMemberIdx()) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiAgentSecretKey) + .vendorKey(apiVendorKey) + .gameKey(apiGameKey) + .username(apiUsername) + .nickname(apiNickname) + .siteUsername(apiUsername) + .ip(apiUserIp) + .language(apiLanguage) + .platform(apiPlatform) + .build(); + log.info(LOG_PREFIX+ "ACE::NexusApiInfo::" + nexusApiInfo); + + // Create User + JSONObject userObj = nexusService.createUser(LOG_PREFIX, nexusApiInfo); + if(!(userObj.getInt("code")==0 || userObj.getInt("code")==-500)) { + log.error(LOG_PREFIX+ "ACE::createUser::error::code::" + userObj.getInt("code")); + log.error(LOG_PREFIX+ "ACE::createUser::error::message::" + userObj.getString("msg")); + throw new ApiException("AC"+userObj.getInt("code"), userObj.getString("msg")); + } + + // Game url + lauchURL = nexusService.gameStart(LOG_PREFIX, nexusApiInfo); + if(lauchURL != null && !lauchURL.equals("")) { + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } else { + log.error(LOG_PREFIX+ "ACE::gameStart() FAIL"); + throw new ApiException("ACE_99", "Game Start Error"); + } + + } else if(venderInfo.get("vendorCode").toString().contains("tplus_")) { + // 게임실행 API Proc + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long reqAtL = System.currentTimeMillis(); + String reqAt = sdf.format(reqAtL); + + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAuthKey = venderInfo.get("vendorApiKey").toString(); + String thirdparty = venderInfo.get("vendorGameCode").toString(); + String uuid = param.getGameKey(); + TplusApiInfo apiInfo = TplusApiInfo.builder() + .siteIdx(member.getSiteIdx()) + .memberIdx(member.getMemberIdx()) + .apiBaseUrl(apiBaseUrl) + .clientId(venderInfo.get("vendorApiId").toString()) + .apiAuthKey(apiAuthKey) + .thirdparty(thirdparty) + .uuid(uuid) + .apiUsername(apiUsername) + .reqAt(reqAt).build(); + + log.info(LOG_PREFIX+ "tplus::apiInfo: " + apiInfo); + + + /* + Long tplusBalance = tplusService.getBalanceUser(LOG_PREFIX, apiInfo); + if(tplusBalance == null) { + log.error(LOG_PREFIX+ "tplus::Get Balance Error"); + throw new ApiException("H999", "BALANCE_ERROR"); + } + */ + + lauchURL = tplusService.getGameLink(LOG_PREFIX, apiInfo); + if(lauchURL == null || lauchURL.equals("")) { + log.error(LOG_PREFIX+"tplus::tplusService.getGameLink() Error"); + throw new ApiException("99", "GET_GAMELINK_ERROR"); + } + log.info(LOG_PREFIX+ "tplus::lauchURL: " + lauchURL); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + + } else if(venderInfo.get("vendorCode").toString().contains("prime_") + || venderInfo.get("vendorCode").toString().contains("dpcore_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiHybrdUrl = venderInfo.get("vendorAuthApiUrl").toString(); + String apiKey = "Bearer "+venderInfo.get("vendorApiKey").toString(); + String apiVendor = venderInfo.get("vendorGameCode").toString(); // Evolution + String apiGameId = venderInfo.get("nexusSkinType").toString(); // Evolution Top Games Lobby + if(param.getSkinType() != null && !param.getSkinType().equals("")) { + apiGameId = param.getSkinType(); + } + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", apiKey); + String gameUrl = ""; + JSONObject playParams = new JSONObject(); + if(venderInfo.get("vendorCode").toString().contains("prime_")) { + gameUrl = apiBaseUrl + "/aapi/play"; + apiGameId = "evolution_top_games"; + apiVendor = "1"; + } else { + // dpcore의 경우 + + gameUrl = apiBaseUrl + "/dapi/play"; + + apiGameId = "evolution_top_games"; + } + playParams.put("username", apiUsername); + playParams.put("game_id", apiGameId); + playParams.put("vendor", apiVendor); + String apiSkin = ""; + if(param.getSkinType() != null && !param.getSkinType().equals("")) { + apiSkin = param.getSkinType(); + } else { + apiSkin = venderInfo.get("nexusSkinType").toString(); + } + playParams.put("skin", apiSkin); + playParams.put("domain", apiHybrdUrl); + + if(isParseStartUser) { + playParams.put("genuine", false); + } else { + playParams.put("genuine", true); + } + + log.info(LOG_PREFIX+ "PRIME::Play Url: " + gameUrl); + log.info(LOG_PREFIX+ "PRIME::Play Headers: " + headers.toString()); + log.info(LOG_PREFIX+ "PRIME::Play Params: " + playParams.toString()); + + ResponseEntity playRes = null; + JSONObject playJson = null; + try { + playRes = webClient.post() + .uri(gameUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(playParams.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "PRIME::Play HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "PRIME::Play status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "PRIME::Play response body : " + e.getResponseBodyAsString()); + playJson = new JSONObject(e.getResponseBodyAsString()); + log.error(LOG_PREFIX+ "PRIME::Play error : " + playJson.getString("message")); + throw new ApiException("P109", playJson.getString("message")); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Play ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Play SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PRIME::Play InterruptedException::"+rae.getMessage()); + } + throw new ApiException("P110", rae.getMessage()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PRIME::Play Exception : " + e.getMessage()); + throw new ApiException("P111", e.getMessage()); + } + + if(playRes != null && playRes.getStatusCode() == HttpStatus.OK) { + log.info(LOG_PREFIX+ "PRIME::Play response : " + playRes.getBody()); + playJson = new JSONObject(playRes.getBody()); + + if(playJson.has("entry") && !apiHybrdUrl.equals("")) { + log.info(LOG_PREFIX+ "수정도메인 실행"); + lauchURL = "https://"+apiHybrdUrl+playJson.getString("entry"); + } else { + log.info(LOG_PREFIX+ "기본도메인 실행"); + lauchURL = playJson.getString("url"); + } + log.info(LOG_PREFIX+ "PRIME::Play lauchURL : " + lauchURL); + + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } + + } else if(venderInfo.get("vendorCode").toString().contains("onix_")) { + // Onix API 게임실행 Proc + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiId = venderInfo.get("vendorApiId").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiGameCode = venderInfo.get("vendorGameCode").toString(); + String apiGameLobby = "evolution"; // Evolution 로비 (항상 evolution 고정) + + // if(param.getSkinType() != null && !param.getSkinType().equals("")) { + // apiGameLobby = param.getSkinType(); + // } + + log.info(LOG_PREFIX+ "[ONIX] API Base URL: " + apiBaseUrl); + log.info(LOG_PREFIX+ "[ONIX] API ID: " + apiId); + log.info(LOG_PREFIX+ "[ONIX] Game Code: " + apiGameCode); + + // Step 1: 사용자 생성 + HttpHeaders createHeaders = new HttpHeaders(); + createHeaders.setContentType(MediaType.APPLICATION_JSON); + createHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + createHeaders.set("Authorization", "Bearer " + apiKey); + + String createUrl = apiBaseUrl + "/csapi/create"; + JSONObject createBody = new JSONObject(); + createBody.put("userid", apiUsername); + + log.info(LOG_PREFIX+ "ONIX::Create Url: " + createUrl); + log.info(LOG_PREFIX+ "ONIX::Create Body: " + createBody.toString()); + + ResponseEntity createRes = null; + try { + createRes = webClient.post() + .uri(createUrl) + .headers(h -> h.addAll(createHeaders)) + .bodyValue(createBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(createRes != null && createRes.getStatusCode() == HttpStatus.OK) { + JSONObject createJson = new JSONObject(createRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::Create Response: " + createJson.toString()); + int createResult = createJson.getInt("result"); + if(createResult != 1) { + log.error(LOG_PREFIX+ "ONIX::User Create Failed: " + createJson.getString("msg")); + throw new ApiException("ONX01", "User Create Error"); + } + } else { + throw new ApiException("ONX01", "User Create Response Error"); + } + } catch(ApiException e) { + throw e; + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "ONIX::Create HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "ONIX::Create status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "ONIX::Create response body : " + e.getResponseBodyAsString()); + JSONObject errorJson = new JSONObject(e.getResponseBodyAsString()); + String errorMsg = errorJson.has("msg") ? errorJson.getString("msg") : "User Create Error"; + log.error(LOG_PREFIX+ "ONIX::Create error : " + errorMsg); + throw new ApiException("ONX01", errorMsg); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Create ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Create ReadTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "ONIX::Create InterruptedException::" + rae.getMessage()); + } + throw new ApiException("ONX01", rae.getMessage()); + } catch(Exception e) { + log.error(LOG_PREFIX+ "ONIX::Create Exception : " + e.getMessage()); + throw new ApiException("ONX01", e.getMessage()); + } + + // Step 2: 게임 URL 생성 + String gameUrl = apiBaseUrl + "/csapi/getGameUrl"; + JSONObject gameUrlBody = new JSONObject(); + gameUrlBody.put("code", apiGameCode); + gameUrlBody.put("subcode", apiGameLobby); + gameUrlBody.put("userid", apiUsername); + gameUrlBody.put("platform", param.getIsMobile().equals("Y") ? "mobile" : "pc"); + gameUrlBody.put("lobby", "0"); + + log.info(LOG_PREFIX+ "ONIX::GameUrl Url: " + gameUrl); + log.info(LOG_PREFIX+ "ONIX::GameUrl Body: " + gameUrlBody.toString()); + + ResponseEntity gameUrlRes = null; + try { + gameUrlRes = webClient.post() + .uri(gameUrl) + .headers(h -> h.addAll(createHeaders)) + .bodyValue(gameUrlBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(gameUrlRes != null && gameUrlRes.getStatusCode() == HttpStatus.OK) { + JSONObject gameUrlJson = new JSONObject(gameUrlRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::GameUrl Response: " + gameUrlJson.toString()); + int gameUrlResult = gameUrlJson.getInt("result"); + if(gameUrlResult == 1) { + lauchURL = gameUrlJson.getString("link"); + log.info(LOG_PREFIX+ "ONIX::Game Launch URL: " + lauchURL); + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } else { + log.error(LOG_PREFIX+ "ONIX::Game URL Generation Failed: " + gameUrlJson.getString("msg")); + throw new ApiException("ONX02", gameUrlJson.getString("msg")); + } + } else { + throw new ApiException("ONX02", "Game URL Response Error"); + } + } catch(ApiException e) { + throw e; + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "ONIX::GameUrl HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "ONIX::GameUrl status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "ONIX::GameUrl response body : " + e.getResponseBodyAsString()); + JSONObject errorJson = new JSONObject(e.getResponseBodyAsString()); + String errorMsg = errorJson.has("msg") ? errorJson.getString("msg") : "Game URL Generation Error"; + log.error(LOG_PREFIX+ "ONIX::GameUrl error : " + errorMsg); + throw new ApiException("ONX02", errorMsg); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::GameUrl ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::GameUrl ReadTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "ONIX::GameUrl InterruptedException::" + rae.getMessage()); + } + throw new ApiException("ONX02", rae.getMessage()); + } catch(Exception e) { + log.error(LOG_PREFIX+ "ONIX::GameUrl Exception : " + e.getMessage()); + throw new ApiException("ONX02", e.getMessage()); + } + } else if(venderInfo.get("vendorCode").toString().contains("thenut_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String vendorGameCategory = venderInfo.get("vendorGameCategory").toString(); + String vendorKey = venderInfo.get("vendorKey").toString(); + String apiVendor = venderInfo.get("vendorGameCode").toString(); + String apiGameCode = ""; + if("SLOT".equals(vendorGameCategory)) { + apiGameCode = param.getGameKey(); + } else { + if(vendorKey.equals("C01")) { + apiGameCode = "evolution_top_games"; + } + } + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("apiVendor", apiVendor); + apiInfo.put("apiGameCode", apiGameCode); + apiInfo.put("apiUsername", apiUsername); + apiInfo.put("apiNickname", apiNickname); + log.info(LOG_PREFIX+ "THENUT::API Info::" + apiInfo); + + // Get User Info + JSONObject userObj = thenutService.getUser(LOG_PREFIX, apiInfo); + if(userObj == null) { + // Create User + userObj = thenutService.createUser(LOG_PREFIX, apiInfo); + if(userObj == null) { + log.error(LOG_PREFIX+ "THENUT_01::Create User Error"); + throw new ApiException("THENUT_01", "Create User Error"); + } + } + + // Get User Token + String userToken = thenutService.createUserToken(LOG_PREFIX, apiInfo); + if(userToken == null || userToken.equals("")) { + log.error(LOG_PREFIX+ "THENUT_02::Get User Token Error"); + throw new ApiException("THENUT_02", "Get User Token Error"); + } else { + apiInfo.put("apiUserToken", userToken); + } + + // Get Game Url + lauchURL = thenutService.getGameUrl(LOG_PREFIX, apiInfo); + if(lauchURL != null && !lauchURL.equals("")) { + apiResponse.put("gameurl", lauchURL); + apiResponse.put("callbackType", "S"); + callbackType = "S"; + } else { + log.error(LOG_PREFIX+ "getGameUrl() FAIL"); + throw new ApiException("THENUT_99", "Game Start Error"); + } + } + + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", member.getSiteIdx()); + memParam.put("memberIdx", member.getMemberIdx()); + memParam.put("vendorPrefix", null); + + long lastInVendorIdx = START_VENDOR_IDX; + memParam.put("lastInVendorIdx", lastInVendorIdx); + int updResult = siteService.updMemLastVendorIdx(memParam); + log.info(LOG_PREFIX+ "updMemLastVendorIdx Result : " + updResult); + if(updResult >= 0) { + apiResponse.success(); + log.info(LOG_PREFIX+ "apiResponse : " + apiResponse.toString()); + log.info("#START_PLAY::"+venderInfo.get("vendorCode").toString()+"::"+param.getUserId()); + } else { + throw new ApiException("2000", "not setting"); + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "[ConnectTimeoutException]"+rae.getMessage()); + apiResponse.setResultCode("TE99"); + apiResponse.setResultMessage("ConnectTimeoutException"); + apiResponse.fail(); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "[SocketTimeoutException]"+rae.getMessage()); + apiResponse.setResultCode("TE99"); + apiResponse.setResultMessage("SocketTimeoutException"); + apiResponse.fail(); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "[InterruptedException]"+rae.getMessage()); + apiResponse.setResultCode("TE99"); + apiResponse.setResultMessage("InterruptedException"); + apiResponse.fail(); + } + } catch(ApiException e) { + log.error(LOG_PREFIX+ "[ApiException]"+e.getApiResponse()); + apiResponse = e.getApiResponse(); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + log.error(LOG_PREFIX+ "[Exception]"+e.getLocalizedMessage()); + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + log.error(LOG_PREFIX+ "[Exception]"+e.getStackTrace().toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @PostMapping(value="/games") + public ApiResponse games(HttpServletRequest request, @RequestBody PlayParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + final String LOG_PREFIX = "#-games::"+param.getUserId()+"::::"; + + //apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site==null) { + log.error(LOG_PREFIX+ "G1001:Access denied Key"); + throw new ApiException("G1001", "Access denied Key"); + } + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(site.getSiteIdx()); + commonParam.setPlayParam(param); + log.info("#-games::"+param.getUserId()+"::::"+ commonParam.toString()); + HashMap venderInfo = siteService.getOnlyVenderInfo(commonParam); + if(venderInfo ==null) { + log.error(LOG_PREFIX+ "G1002:Vendor not setting"); + throw new ApiException("G1002", "Vendor not setting"); + } + + List gameList = new ArrayList<>(); + + if(venderInfo.get("vendorCode").toString().contains("org_pragmatic")) { + + gameList = pragmaticService.getGameList(LOG_PREFIX, venderInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("panda_pragmatic_slot")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentId = venderInfo.get("vendorApiId").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiVendor = venderInfo.get("vendorGameCode").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAgentId", apiAgentId); + apiInfo.put("apiKey", apiKey); + apiInfo.put("apiVendor", apiVendor); + log.info(LOG_PREFIX+ "PANDA::API Info::" + apiInfo); + + gameList = pandaService.getGameList(LOG_PREFIX, apiInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("pracp_pragmatic_slot")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentCode = venderInfo.get("vendorApiId").toString(); + String apiToken = venderInfo.get("vendorApiKey").toString(); + String apiProviderCode = venderInfo.get("vendorGameCode").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAgentCode", apiAgentCode); + apiInfo.put("apiToken", apiToken); + apiInfo.put("apiProviderCode", apiProviderCode); + log.info(LOG_PREFIX+ "PRACP::API Info::" + apiInfo); + + gameList = pracpService.getGameList(LOG_PREFIX, apiInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("grand_pragmatic_slot")) { + venderInfo.put("vendor_key", "pragmatic_slot"); + gameList = grandService.getGameList(venderInfo); + + } else if((venderInfo.get("vendorCode").toString().startsWith("tower_pragmatic_slot"))) { + gameList = towerService.getGameList(venderInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("nexus_") + || venderInfo.get("vendorCode").toString().contains("ace2_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgentId = venderInfo.get("vendorApiId").toString(); + String apiAgentSecretKey = venderInfo.get("vendorApiKey").toString(); + String apiVendorKey = venderInfo.get("vendorGameCode").toString(); + + NexusApiInfo apiInfo = NexusApiInfo.builder() + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiAgentSecretKey) + .vendorKey(apiVendorKey) + .skin("SLOT") + .type("Slot") + .build(); + + gameList = nexusService.gameList(LOG_PREFIX, apiInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("tplus_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAuthKey = venderInfo.get("vendorApiKey").toString(); + String thirdparty = venderInfo.get("vendorGameCode").toString(); + + TplusApiInfo apiInfo = TplusApiInfo.builder() + .apiBaseUrl(apiBaseUrl) + .apiAuthKey(apiAuthKey) + .thirdparty(thirdparty) + .build(); + + log.info(LOG_PREFIX+ "TplusApiInfo : " + apiInfo); + + gameList = tplusService.gameList(LOG_PREFIX, apiInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("svendor_") + || venderInfo.get("vendorCode").toString().contains("pink_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiAgent = venderInfo.get("vendorApiId").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiVendor = venderInfo.get("vendorGameCode").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiAgent", apiAgent); + apiInfo.put("apiKey", apiKey); + apiInfo.put("vendor", apiVendor); + + gameList = svendorService.gameList(LOG_PREFIX, apiInfo); + + } else if(venderInfo.get("vendorCode").toString().contains("onix_")) { + String apiBaseUrl = venderInfo.get("vendorApiUrl").toString(); + String apiId = venderInfo.get("vendorApiId").toString(); + String apiKey = venderInfo.get("vendorApiKey").toString(); + String apiGameCode = venderInfo.get("vendorGameCode").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + + String listUrl = apiBaseUrl + "/csapi/Provider"; + JSONObject listBody = new JSONObject(); + listBody.put("type", "2"); + listBody.put("gameid", apiGameCode); + listBody.put("code", apiGameCode); + listBody.put("gametype", "live"); + + log.info(LOG_PREFIX+ "ONIX::Game List Url: " + listUrl); + log.info(LOG_PREFIX+ "ONIX::Game List Body: " + listBody.toString()); + + try { + ResponseEntity res = webClient.post() + .uri(listUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(listBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(res != null && res.getBody() != null) { + JSONObject resObj = new JSONObject(res.getBody()); + int result = resObj.getInt("result"); + if(result == 1) { + JSONArray games = resObj.getJSONArray("data"); + int length = games.length(); + for(int i=0; i apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("apiVendor", vendorCode); + log.info(LOG_PREFIX+ "THENUT::API Info::" + apiInfo); + + gameList = thenutService.getGameList(LOG_PREFIX, apiInfo); + apiResponse.put("list", gameList); + + } else { + gameList = siteService.getGameList(venderInfo); + } + + String banGameId = venderInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + log.info(LOG_PREFIX+ "banGameIds : " + banGameId); + List list = new ArrayList<>(); + for(Game item : gameList) { + String gameId = item.getGameKey().toLowerCase(); + if(!"".equals(gameId) && !"".equals(banGameId) && banGameId.contains(gameId+"|")) { + log.info(LOG_PREFIX+ "banGameId: " + gameId + ", banGame: " + item.getGameName()); + } else { + list.add(item); + } + } + + apiResponse.put("list", list); + + apiResponse.success(); + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/members") + public ApiResponse members(@RequestHeader String token, HttpServletRequest request, @RequestBody MemberParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + + apiResponse.success(); + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/creditInfo") + public ApiResponse creditInfo(HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site ==null) { + throw new ApiException("1000", "accessDinied"); + } + + long targetSiteCredit = siteService.getSiteCredit(site.getSiteId()); + apiResponse.put("credit", targetSiteCredit); + + long targetSitePoint = siteService.getSitePoint(site.getSiteId()); + apiResponse.put("point", targetSitePoint); + + apiResponse.success(); + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @PostMapping(value="/betInfo") + public ApiResponse betinfo(HttpServletRequest request, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-BET-DETAIL::"+param.getBetId()+":::"; + JSONObject saveObj = null; + JSONArray saveObjs = null; + boolean isSaveEvoDetail = false; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site ==null) { + throw new ApiException("1000", "accessDinied"); + } + + // 결과보내기 + apiResponse.put("betId", param.getBetId()); + String dType = "detail_0"; + + HashMap betInfo = transService.getBetInfoByBetId(param); + log.info(LOG_PREFIX+ "betInfo {}", betInfo); + + if(betInfo == null) betInfo = transService.getSiteBetByRefIdFromOld(param); + log.info(LOG_PREFIX+ "betInfo_OLD {}", betInfo); + + if(betInfo != null) { + param.setBetId(betInfo.get("refId").toString()); + + String category = betInfo.get("vendorCetegory").toString(); + log.info(LOG_PREFIX+ "Game category : " + category); + + if("pragmatic".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + + String detailURL = pragmaticService.getDetails(LOG_PREFIX, betInfo); + if(detailURL != null && !detailURL.equals("")) { + HashMap url = new HashMap(); + url.put("url", detailURL); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + + } else if("svendor".equals(betInfo.get("vendorCode").toString()) + || "pink".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_6"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + apiResponse.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + JSONObject dataObj = svendorService.getDetail(LOG_PREFIX, betInfo); + if(dataObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + if(dataObj.has("gameDetail") && !dataObj.isNull("gameDetail")) { + String detailType = StringUtils.getType(dataObj.getString("gameDetail")); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = dataObj.getString("gameDetail"); + HashMap url = new HashMap(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } else if(detailType.equals("JSON")) { + dType = "detail_6"; + apiResponse.put("dType", dType); + JSONObject detailObj = dataObj.getJSONObject("gameDetail"); + saveObj = detailObj; + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==17 && "tower".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detail_url = + betInfo.get("vendorApiUrl").toString() + +"/v2/detail_url" + + "?site_code="+betInfo.get("vendorApiId").toString() + + "&user_id="+betInfo.get("siteHex").toString()+betInfo.get("memberId").toString() + + "&transaction_id="+betInfo.get("transactionId").toString() + + "&vendorCode=pp" + + "&gameCode="+betInfo.get("gameIdx").toString(); + log.info(LOG_PREFIX+" {}" ,detail_url); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detail_url) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + log.info(LOG_PREFIX+ "responseString::"+responseString); + log.info(LOG_PREFIX+ "url::"+StringUtils.extractLink(responseString)); + String detailUrl = StringUtils.extractLink(responseString); + String detailType = StringUtils.getType(detailUrl); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + HashMap url = new HashMap(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + /* + HashMap url = new HashMap(); + url.put("url", StringUtils.extractLink(responseString)); + apiResponse.put("detail", url); + */ + } else { + apiResponse.put("detail", "betId is not exist"); + } + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==83 && "splus".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_1"; + apiResponse.put("dType", dType); + HashMap d = new HashMap(); + List splusDetail = siteService.getSplusDetailData(param); + for(HashMap ttype : splusDetail) { + log.info(LOG_PREFIX+ "{}, {}", ttype.get("tranType").toString(), ttype.get("data").toString()); + HashMap detailMap = new Gson().fromJson(ttype.get("data").toString(), HashMap.class); + d.put(ttype.get("tranType").toString(), detailMap); + } + + apiResponse.put("detail", d); + + } else if("nexus".equals(betInfo.get("vendorCode").toString()) || "ace2".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_3"; + apiResponse.put("dType", dType); + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + long siteIdx = (long) betInfo.get("siteIdx"); + long memberIdx = (long) betInfo.get("memberIdx"); + String trxId = betInfo.get("vendorTranKey").toString(); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAgentId = betInfo.get("vendorApiId").toString(); + String apiSecretKey = betInfo.get("vendorApiKey").toString(); + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(siteIdx) + .memberIdx(memberIdx) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiSecretKey) + .build(); + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + dType = "detail_3"; + apiResponse.put("dType", dType); + JSONObject detailObj = nexusService.getDetail(LOG_PREFIX, nexusApiInfo, trxId); + if(detailObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + JSONArray transactions = detailObj.getJSONArray("transactions"); + if(transactions.length() > 0) { + List> detailMap = new Gson().fromJson(transactions.toString(), List.class); + saveObjs = transactions; + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } else { + dType = "detail_2"; + apiResponse.put("dType", dType); + JSONObject detailObj = nexusService.getDetailUrl(LOG_PREFIX, nexusApiInfo, trxId); + if(detailObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailObj::"+detailObj.toString()); + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + HashMap url = new HashMap<>(); + url.put("url", detailObj.getString("url")); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } + } + } else if("prime".equals(betInfo.get("vendorCode").toString()) + || "dpcore".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::PRIME =========="); + dType = "detail_9"; + apiResponse.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + String apiKey = "Bearer "+betInfo.get("vendorApiKey").toString(); + headers.set("Authorization", apiKey); + String detailUrl = betInfo.get("vendorApiUrl").toString() + "/api/getBettingDetails5?"; + String detailParam = "referer="+param.getBetId(); + detailUrl = detailUrl + detailParam; + + log.info(LOG_PREFIX+ "PRIME::Detail Url: " + detailUrl); + log.info(LOG_PREFIX+ "PRIME::Detail Headers: " + headers.toString()); + ResponseEntity response = null; + JSONObject resJson = null; + try { + response = webClient.get() + .uri(detailUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "PRIME::Detail HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "PRIME::Detail status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "PRIME::Detail response body : " + e.getResponseBodyAsString()); + resJson = new JSONObject(e.getResponseBodyAsString()); + log.error(LOG_PREFIX+ "PRIME::Detail error : " + resJson.getString("message")); + throw new ApiException("P209", resJson.getString("message")); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PRIME::Detail InterruptedException::"+rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PRIME::Detail Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + + if(response != null && response.getStatusCode() == HttpStatus.OK) { + isSaveEvoDetail = true; + log.info(LOG_PREFIX+ "PRIME::Detail response : " + response.getBody()); + resJson = new JSONObject(response.getBody()); + + JSONObject dataObj = resJson; + String gameType = dataObj.optString("gameType"); + JSONArray participants = dataObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + saveObj = dataObj; + HashMap detailMap = new Gson().fromJson(dataObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } else if("grand".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = + betInfo.get("vendorApiUrl").toString() + +"/transactions/detail" + + "?round_id="+betInfo.get("vendorTranKey").toString(); + log.info(LOG_PREFIX+"Request Url : {}" ,detailUrl); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detailUrl) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", "Bearer "+betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + log.info(LOG_PREFIX+ "responseString : " , responseString); + JSONObject responseObj = new JSONObject(responseString); + JSONObject dataObj = responseObj.getJSONObject("data"); + if(dataObj != null) { + HashMap url = new HashMap(); + url.put("url", dataObj.getString("url")); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else if("pracp".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiAgentCode", betInfo.get("vendorApiId").toString()); + apiInfo.put("apiToken", betInfo.get("vendorApiKey").toString()); + apiInfo.put("apiBaseUrl", betInfo.get("vendorApiUrl").toString()); + apiInfo.put("uuid", betInfo.get("uuid").toString()); + apiInfo.put("round_id", betInfo.get("roundId").toString()); + + JSONObject dataObj = pracpService.getDetail(LOG_PREFIX, apiInfo); + log.info(LOG_PREFIX+ "dataObj : " + dataObj.toString()); + if(dataObj != null) { + HashMap url = new HashMap(); + url.put("url", dataObj.getString("url")); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else if("tplus".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAuthKey = betInfo.get("vendorApiKey").toString(); + String pairTransactionKey = betInfo.get("refId").toString(); + TplusApiInfo apiInfo = TplusApiInfo.builder() + .apiBaseUrl(apiBaseUrl) + .apiAuthKey(apiAuthKey) + .pairTransactionKey(pairTransactionKey).build(); + + log.info(LOG_PREFIX+ "tplus::apiInfo: " + apiInfo); + + String detailURL = tplusService.getDetails(LOG_PREFIX, apiInfo); + if(detailURL != null && !detailURL.equals("")) { + HashMap url = new HashMap(); + url.put("url", detailURL); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else if("onix".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::ONIX =========="); + dType = "detail_8"; + apiResponse.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String fullDateTime = betInfo.get("betTime").toString(); + String dateOnly = fullDateTime.substring(0, 10); + + // Step 1: Get round info from /csapi/getBetting + String bettingUrl = apiBaseUrl + "/csapi/getBetting"; + JSONObject bettingBody = new JSONObject(); + bettingBody.put("userid", betInfo.get("siteIdxHex").toString()+betInfo.get("memberId").toString()); + bettingBody.put("sdate", dateOnly+" 00:00:00.000"); + bettingBody.put("edate", dateOnly+" 23:59:59.999"); + bettingBody.put("pagesize", "1"); + bettingBody.put("gameid", "0"); + bettingBody.put("roundcode", betInfo.get("uuid").toString()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", "Bearer " + betInfo.get("vendorApiKey").toString()); + + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Url: " + bettingUrl); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Body: " + bettingBody.toString()); + + try { + ResponseEntity bettingRes = webClient.post() + .uri(bettingUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(bettingBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(bettingRes != null && bettingRes.getBody() != null) { + JSONObject bettingObj = new JSONObject(bettingRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Response: " + bettingObj.toString()); + + int bettingResult = bettingObj.getInt("result"); + if(bettingResult == 1 && bettingObj.has("data")) { + JSONArray dataArray = bettingObj.getJSONArray("data"); + if(dataArray.length() > 0) { + isSaveEvoDetail = true; + JSONObject dataObj = dataArray.getJSONObject(0); + JSONObject detailObj = dataObj.getJSONArray("details").getJSONObject(0); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + saveObj = detailObj; + + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + String errorMsg = bettingObj.has("msg") ? bettingObj.getString("msg") : "Unknown error"; + log.error(LOG_PREFIX+ "ONIX::Betting Error: " + errorMsg); + } + } else { + apiResponse.put("detail", "betId is not exist"); + log.error(LOG_PREFIX+ "ONIX::Betting Response is null"); + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "ONIX::Betting HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "ONIX::Betting status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "ONIX::Betting response body : " + e.getResponseBodyAsString()); + JSONObject errorJson = new JSONObject(e.getResponseBodyAsString()); + String errorMsg = errorJson.has("msg") ? errorJson.getString("msg") : "Betting API error"; + log.error(LOG_PREFIX+ "ONIX::Betting error : " + errorMsg); + throw new ApiException("P209", errorMsg); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ReadTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "ONIX::Betting InterruptedException::" + rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch(Exception e) { + log.error(LOG_PREFIX+ "ONIX::Betting Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + } + } else if("bet_radar".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::BET_RADAR =========="); + // TODO: 베팅상세 내려주기 + /* + * param.getBetId() 기준으로 bet_radar_log 테이블 조회시 베팅과 결과 두가지가 나옴. + * 결과가 없는경우 베팅만 한가지 있을 수 있음. + * param.getBetId() 기준 bet_radar_log에서 jsonstr(베팅상세 json 원본)을 가져와서 + * 하나의 json으로 합쳐서 내려주기 구현. + */ + // bet_radar_log 테이블에서 조회 + + String radarLogJson = siteService.getMergedBetRadarLog(param.getBetId()); + if(radarLogJson != null && !radarLogJson.isEmpty()) { + log.info(LOG_PREFIX+ "bet_radar_log found, returning merged json"); + dType = "detail_radar"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(radarLogJson, HashMap.class); + String detailUrl = "https://sportsbook.spokok.com/bets/detail/"+param.getBetId(); + detailMap.put("dLink", detailUrl); + apiResponse.put("detail", detailMap); + apiResponse.success(); + return apiResponse; + } + + } else if("thenut".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::THENUT =========="); + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + String detailType = StringUtils.getType(jsonStr); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = jsonStr; + HashMap url = new HashMap(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } else if(detailType.equals("JSON")) { + dType = "detail_3"; + apiResponse.put("dType", dType); + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + } else { + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiKey = betInfo.get("vendorApiKey").toString(); + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("betId", param.getBetId()); + + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + isSaveEvoDetail = true; + dType = "detail_3"; + apiResponse.put("dType", dType); + JSONObject detailObj = thenutService.getBetDetail(LOG_PREFIX, apiInfo); + if(detailObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + saveObj = detailObj; + } + } else { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = thenutService.getBetDetailUrl(LOG_PREFIX, apiInfo); + if(detailUrl == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailUrl::"+detailUrl); + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } + } + } + } else if("panda".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiKey = betInfo.get("vendorApiKey").toString(); + String tranId = betInfo.get("uuid").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("tranId", tranId); + String detailUrl = pandaService.getDetail(LOG_PREFIX, apiInfo); + if(detailUrl == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailUrl::"+detailUrl); + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + + if(saveObj != null || saveObjs != null) { + // check detail data + if(isSaveEvoDetail) { + asyncSiteService.insertEvoDetailProc(LOG_PREFIX, param.getBetId(), saveObj, saveObjs); + } + } else { + log.info(LOG_PREFIX+ "saved detail is null"); + } + + apiResponse.success(); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/betList") + public ApiResponse betList(HttpServletRequest request, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site ==null) { + throw new ApiException("1000", "accessDinied"); + } + param.setSiteIdx(site.getSiteIdx()); + // 결과보내기 + List betList = new ArrayList<>(); + String nextStartDate = ""; + if(betList.size()>0) { + nextStartDate = betList.get(betList.size()-1).get("regDate").toString(); + } else { + + } + + apiResponse.put("list", betList); + apiResponse.put("nextStartDate", nextStartDate); + + apiResponse.success(); + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + public ApiResponse parseUseUpdate(HttpServletRequest request, @RequestBody PlayParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + //apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site==null) { + throw new ApiException("1000", "accessDinied"); + } + + if(param.getParseUseYn()!=null && !"".equals(param.getParseUseYn())) { + HashMap parseParam = new HashMap(); + parseParam.put("siteIdx", site.getSiteIdx()); + parseParam.put("siteId", site.getSiteId()); + parseParam.put("useYn", param.getParseUseYn()); + siteService.insertParseUse(parseParam); + } + HashMap ParseUseYn = siteService.getParseUseYn(site.getSiteIdx()); + if(ParseUseYn==null || "N".equals(ParseUseYn.get("useYn").toString())) { + apiResponse.put("currentUseYn","N"); + }else { + apiResponse.put("currentUseYn","Y"); + } + + + + apiResponse.success(); + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + /** + * 파싱 API 사용하기 위한 토큰 발급 + * @param request + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/getToken") + public synchronized ApiResponse getToken(HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + // apiKey 체크 + String Authorization = request.getHeader("Authorization").toString(); + String LOG_PREFIX = "#-getToken::"+Authorization+"::::"; + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + LOG_PREFIX = "#-getToken::"+Authorization+"::"+site.getSiteId()+"::::"; +// +// if(!( +// site.getSiteIp() == null || +// "".equals(site.getSiteIp()) || +// "3.3.3.3".equals(site.getSiteIp()) || +// site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0 +// )) { +// log.error(LOG_PREFIX+ "site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); +// log.error(LOG_PREFIX+ "T1002:Access denied IP"); +// apiResponse.setResultCode("T1002"); +// apiResponse.setResultMessage("Access denied IP"); +// return apiResponse; +// } +// + // 토큰생성 + JwtClame jwtinfo = new JwtClame(); + jwtinfo.setSiteId(site.getSiteId()); + jwtinfo.setMemId(""); + String tok = jwtManager.generateToken(jwtinfo); + + // 결과보내기 + apiResponse.put("token", tok); + apiResponse.success(); + + return apiResponse; + } + + /** + * 파싱 API - 보유중인 알 + * @param request + * @param token + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/agentBalance") + public ApiResponse agentBalance(HttpServletRequest request, @RequestHeader String token) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-p1::agentBalance::"+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + //토큰체크 + if(token == null) { + log.error("#-p1::agentBalance::"+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-p1::agentBalance::"+tokenInfo.getSid()+"::::"; + + + long targetSiteCredit = siteService.getSiteCredit(tokenInfo.getSid()); + log.info(LOG_PREFIX + "targetSiteCredit: " + targetSiteCredit); + apiResponse.put("credit", targetSiteCredit); + + long targetSitePoint = siteService.getSitePoint(tokenInfo.getSid()); + log.info(LOG_PREFIX + "targetSitePoint: " + targetSitePoint); + apiResponse.put("point", targetSitePoint); + + apiResponse.success(); + + } catch (Exception e) { + log.error("#-p1::agentBalance::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/p1/balance") + public ApiResponse apiBalance(HttpServletRequest request, @RequestHeader String token, @RequestBody CashParam param) { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-apiBalance::"+param.getMemberId()+"::::"; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + //토큰체크 + if(token == null) { + log.error(LOG_PREFIX+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + final String IS_TRANSFER = site.getIsTransfer(); + if(IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "T1008:NOT_TRANSFER_SITE"); + apiResponse.setResultCode("T1008"); + apiResponse.setResultMessage("NOT_TRANSFER_SITE"); + return apiResponse; + } + + //회원정보 + AuthParam authParam = new AuthParam(); + authParam.setUserId(param.getMemberId()); + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(site.getSiteIdx()); + commonParam.setAuthParam(authParam); + log.info(LOG_PREFIX+ "CommonParam::"+commonParam.toString()); + Member member = siteService.getMember(commonParam); + if(member == null) { + // Fail + log.error(LOG_PREFIX+ "T1004:NOT_FOUND_USER"); + apiResponse.setResultCode("T1004"); + apiResponse.setResultMessage("NOT_FOUND_USER"); + return apiResponse; + } + log.info(LOG_PREFIX+ "Member::"+member.toString()); + + apiResponse.put("balance", member.getUserBalance()); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + apiResponse.success(); + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/p1/deposit") + public ApiResponse apiDeposit(HttpServletRequest request, @RequestHeader String token, @RequestBody CashParam param) { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-apiDeposit::"+param.getMemberId()+"::::"; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + //토큰체크 + if(token == null) { + log.error(LOG_PREFIX+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + final String IS_TRANSFER = site.getIsTransfer(); + if(IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "T1008:NOT_TRANSFER_SITE"); + apiResponse.setResultCode("T1008"); + apiResponse.setResultMessage("NOT_TRANSFER_SITE"); + return apiResponse; + } + + //회원정보 + param.setSiteIdx(site.getSiteIdx()); + Member member = siteService.getMember2(param); + if(member == null) { + // Fail + log.error(LOG_PREFIX+ "T1004:NOT_FOUND_USER"); + apiResponse.setResultCode("T1004"); + apiResponse.setResultMessage("NOT_FOUND_USER"); + return apiResponse; + } + log.info(LOG_PREFIX+ "Member::"+member.toString()); + + long amount = Long.parseLong(param.getAmount()); + long userBalance = member.getUserBalance(); + long siteCredit = site.getCredit(); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "T1006:사이트 크레딧 부족"); + apiResponse.setResultCode("T1006"); + apiResponse.setResultMessage("사이트 크레딧 부족"); + return apiResponse; + } + + // Insert credit_info : MAI, IN + Credit credit = new Credit(); + credit.setSiteIdx(site.getSiteIdx()); + credit.setSiteId(site.getSiteId()); + credit.setTargetSiteIdx(member.getMemberIdx()); + credit.setTargetSiteId(member.getMemberId()); + credit.setCreditType("MAI"); + credit.setCreditRate(null); + credit.setInOut("IN"); + credit.setTranId("회원 충전"); + credit.setCreditAmt(Long.parseLong(param.getAmount())); + credit.setUserAmt(Long.parseLong(param.getAmount())); + credit.setCreditStatus(1); + credit.setWaitTime(-10); // 재요청 대기시간 10초 + int cnt = creditService.checkRequestTime(credit); + if(cnt > 0) { + // Fail + log.error(LOG_PREFIX+ "T1005:재요청 대기시간 10초"); + apiResponse.setResultCode("T1005"); + apiResponse.setResultMessage("재요청 대기시간 10초"); + return apiResponse; + } + int result = creditService.insertCreditByCash(credit); + if(result < 0) { + // Fail + log.error(LOG_PREFIX+ "T1009:DEPOSIT_FAIL"); + apiResponse.setResultCode("T1009"); + apiResponse.setResultMessage("DEPOSIT_FAIL"); + return apiResponse; + } else { + // TODO: 성공 시 잔액 담아서 내려주기 + apiResponse.put("bfBalance", userBalance); + apiResponse.put("balance", userBalance+amount); + } + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + apiResponse.success(); + + return apiResponse; + } + + + @ResponseBody + @PostMapping(value="/p1/withdraw") + public ApiResponse apiWithdraw(HttpServletRequest request, @RequestHeader String token, @RequestBody CashParam param) { + ApiResponse apiResponse = new ApiResponse(); + final String LOG_PREFIX = "#-apiWithdraw::"+param.getMemberId()+"::::"; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + //토큰체크 + if(token == null) { + log.error(LOG_PREFIX+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + final String IS_TRANSFER = site.getIsTransfer(); + if(IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "T1008:NOT_TRANSFER_SITE"); + apiResponse.setResultCode("T1008"); + apiResponse.setResultMessage("NOT_TRANSFER_SITE"); + return apiResponse; + } + + //회원정보 + param.setSiteIdx(site.getSiteIdx()); + Member member = siteService.getMember2(param); + if(member == null) { + // Fail + log.error(LOG_PREFIX+ "T1004:NOT_FOUND_USER"); + apiResponse.setResultCode("T1004"); + apiResponse.setResultMessage("NOT_FOUND_USER"); + return apiResponse; + } + log.info(LOG_PREFIX+ "Member::"+member.toString()); + + long amount = Long.parseLong(param.getAmount()); + long userBalance = member.getUserBalance(); + + if(param.getWithAll() != null && param.getWithAll().equals("Y")) { + amount = userBalance; + param.setAmount(Long.toString(amount)); + } + + if(userBalance < amount) { + log.error(LOG_PREFIX+ "T1007:유저 잔액 부족"); + apiResponse.setResultCode("T1007"); + apiResponse.setResultMessage("유저 잔액 부족"); + return apiResponse; + } + + // Insert credit_info : MAO, OUT + Credit credit = new Credit(); + credit.setSiteIdx(site.getSiteIdx()); + credit.setSiteId(site.getSiteId()); + credit.setTargetSiteIdx(member.getMemberIdx()); + credit.setTargetSiteId(member.getMemberId()); + credit.setCreditType("MAO"); + credit.setCreditRate(null); + credit.setInOut("OUT"); + credit.setTranId("회원 환전"); + credit.setCreditAmt(Long.parseLong(param.getAmount())); + credit.setUserAmt(Long.parseLong(param.getAmount())); + credit.setCreditStatus(1); + credit.setWaitTime(-10); // 재요청 대기시간 10초 + int cnt = creditService.checkRequestTime(credit); + if(cnt > 0) { + // Fail + log.error(LOG_PREFIX+ "T1005:재요청 대기시간 10초"); + apiResponse.setResultCode("T1005"); + apiResponse.setResultMessage("재요청 대기시간 10초"); + return apiResponse; + } + int result = creditService.insertCreditByCash(credit); + if(result < 0) { + // Fail + log.error(LOG_PREFIX+ "T1009:WITHDRAW_FAIL"); + apiResponse.setResultCode("T1009"); + apiResponse.setResultMessage("WITHDRAW_FAIL"); + return apiResponse; + } else { + // TODO: 성공 시 잔액 담아서 내려주기 + apiResponse.put("bfBalance", userBalance); + apiResponse.put("balance", userBalance-amount); + } + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + apiResponse.success(); + + return apiResponse; + } + + + /** + * 파싱 API - 충환전내역 가져오기 + * @param request + * @param token + * @param param + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/cashInOut") + public ApiResponse apiCashInOut(HttpServletRequest request, @RequestHeader String token, @RequestBody CashParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + JwtManager.TokenInfo tokenInfo = null; + + try { + //토큰체크 + if(token == null) { + log.error("#-p1::apiCashInOut::TOKEN_ERROR::"+request.getHeader("Authorization").toString()+"::"+ "access denied token"); + log.error("#-p1::apiCashInOut::"+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + tokenInfo = jwtManager.getTokenInfo(token); + + } catch (Exception e) { + log.error("#-p1::apiCashInOut::TOKEN_ERROR::"+request.getHeader("Authorization").toString()+"::"+ "[Exception]"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + final String LOG_PREFIX = "#-p1::apiCashInOut::"+tokenInfo.getSid()+"::::"; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + param.setSiteIdx(site.getSiteIdx()); + if(param.getCount() == null || param.getCount().equals("")) { + param.setCount("100"); + } + + int count = Integer.parseInt(param.getCount()); + if(count > 2000) { + param.setCount("2000"); + } + + if(param.getStartDate() == null || param.getStartDate().equals("")) { + log.error(LOG_PREFIX+ "T1011:StartDate is not null"); + apiResponse.setResultCode("T1011"); + apiResponse.setResultMessage("StartDate is not null"); + return apiResponse; + } + param.setStartDate(param.getStartDate().replace("T", " ")); + + if(param.getEndDate() != null && !"".equals(param.getEndDate())) { + param.setEndDate(param.getEndDate().replace("T", " ")); + } + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + final String IS_TRANSFER = site.getIsTransfer(); + if(IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "T1008:NOT_TRANSFER_SITE"); + apiResponse.setResultCode("T1008"); + apiResponse.setResultMessage("NOT_TRANSFER_SITE"); + return apiResponse; + } + + // TODO: 입출금 내역 API 구현.. + int totalCnt = creditService.getCashInOutListCnt(param); + List list = creditService.getCashInOutList(param); + String nextStartDate = ""; + if(list.size() > 0) { + nextStartDate = list.get(list.size()-1).get("regDate").toString(); + } else { + nextStartDate = param.getStartDate(); + } + + apiResponse.put("total", totalCnt); + apiResponse.put("list", list); + apiResponse.put("nextStartDate", nextStartDate); + + apiResponse.success(); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + + /** + * 파싱 API - 사용가능한 벤더사 리스트 + * @param request + * @param token + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/vendorList") + public ApiResponse betVendorList(HttpServletRequest request, @RequestHeader String token) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-p1::vendorList::"+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + //토큰체크 + if(token == null) { + log.error("#-p1::vendorList::"+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-p1::betVendorList::"+tokenInfo.getSid()+"::::"; + + // 결과보내기 + List vendorList = siteService.getApiBetVendorList(site.getSiteIdx()); + log.info(LOG_PREFIX + "vendorList size: " + vendorList.size()); + apiResponse.put("list", vendorList); + apiResponse.success(); + + } catch (Exception e) { + log.error("#-p1::betVendorList::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + /** + * 파싱 API - 배팅내역 가져오기 + * @param request + * @param token + * @param param + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/transaction") + public ApiResponse betTransactionList(HttpServletRequest request, @RequestHeader String token, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + JwtManager.TokenInfo tokenInfo = null; + + try { + //토큰체크 + if(token == null) { + log.error("#-p1::betTransactionList::TOKEN_ERROR::"+request.getHeader("Authorization").toString()+"::"+ "access denied token"); + log.error("#-p1::betTransactionList::"+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + tokenInfo = jwtManager.getTokenInfo(token); + + } catch (Exception e) { + log.error("#-p1::betTransactionList::TOKEN_ERROR::"+request.getHeader("Authorization").toString()+"::"+ "[Exception]"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + final String LOG_PREFIX = "#-p1::betTransactionList::"+tokenInfo.getSid()+"::::"; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + param.setSiteIdx(site.getSiteIdx()); + if(param.getCount() == null || param.getCount().equals("")) { + param.setCount("100"); + } + + int count = Integer.parseInt(param.getCount()); + if(count > 2000) { + param.setCount("3000"); + } + + if(param.getIsDetail() == null || param.getIsDetail().equals("")) param.setIsDetail("N"); + log.info(LOG_PREFIX + "BetParam: " + param); + + // 결과보내기 + int betCnt = siteService.getApiBetTransactionCnt(param); + log.info(LOG_PREFIX + "total: " + betCnt); + List betList = siteService.getApiBetTransactionList(param); + if(param.getIsDetail().equals("Y")) { + for(HashMap item : betList) { + if(item.get("detail") != null && !"".equals(item.get("detail").toString())) { + JSONObject detailObj = new JSONObject(item.get("detail").toString()); + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + item.put("detail", detailMap); + } + } + } + log.info(LOG_PREFIX + "list size: " + betList.size()); + String nextStartDate = ""; + if(betList.size() > 0) { + nextStartDate = betList.get(betList.size()-1).get("regDate").toString(); + } else { + nextStartDate = param.getStartDate(); + } + + apiResponse.put("total", betCnt); + apiResponse.put("list", betList); + apiResponse.put("nextStartDate", nextStartDate); + + apiResponse.success(); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + /** + * 파싱 API - 배팅내역 가져오기 + * @param request + * @param token + * @param param + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/transactionPage") + public ApiResponse transactionPage(HttpServletRequest request, @RequestHeader String token, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + JwtManager.TokenInfo tokenInfo = null; + + try { + //토큰체크 + if(token == null) { + log.error("#-p1::transactionPage::TOKEN_ERROR::"+request.getHeader("Authorization").toString()+"::"+ "access denied token"); + log.error("#-p1::transactionPage::"+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + tokenInfo = jwtManager.getTokenInfo(token); + + } catch (Exception e) { + log.error("#-p1::transactionPage::TOKEN_ERROR::"+request.getHeader("Authorization").toString()+"::"+ "[Exception]"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + final String LOG_PREFIX = "#-p1::transactionPage::"+tokenInfo.getSid()+"::::"; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error(LOG_PREFIX+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + param.setSiteIdx(site.getSiteIdx()); + if(param.getCount() == null || param.getCount().equals("")) { + param.setCount("100"); + } + + int count = Integer.parseInt(param.getCount()); + if(count > 2000) { + param.setCount("3000"); + } + + if(param.getIsDetail() == null || param.getIsDetail().equals("")) param.setIsDetail("N"); + + log.info(LOG_PREFIX + "BetParam: " + param); + + // 결과보내기 + int betCnt = siteService.getApiBetTransactionCnt(param); + log.info(LOG_PREFIX + "total: " + betCnt); + List betList = siteService.getApiBetTransactionList(param); + if(param.getIsDetail().equals("Y")) { + for(HashMap item : betList) { + if(item.get("detail") != null && !"".equals(item.get("detail").toString())) { + JSONObject detailObj = new JSONObject(item.get("detail").toString()); + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + item.put("detail", detailMap); + } + } + } + log.info(LOG_PREFIX + "list size: " + betList.size()); + String nextStartDate = ""; + if(betList.size() > 0) { + nextStartDate = betList.get(betList.size()-1).get("regDate").toString(); + } else { + nextStartDate = param.getStartDate(); + } + + apiResponse.put("total", betCnt); + apiResponse.put("list", betList); + apiResponse.put("nextStartDate", nextStartDate); + + apiResponse.success(); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + /** + * 파싱 API - 배팅내역 가져오기 (에볼루션전용-상세내용 포함) + * @param request + * @param token + * @param param + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/betListDetail") + public ApiResponse betListDetail(HttpServletRequest request, @RequestHeader String token, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-p1::betTransactionList::"+ "access denied Key"); + throw new ApiException("999", "access denied Key"); + } + + //토큰체크 + if(token == null) { + log.error("#-p1::betTransactionList::"+ "access denied token"); + throw new ApiException("1000", "access denied token"); + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-p1::betListDetail::"+tokenInfo.getSid()+"::::"; + log.info(LOG_PREFIX + "Request Body: " + param.toString()); + + long siteIdx = site.getSiteIdx(); + String startDateStr = param.getStartDate(); + String endDateStr = param.getEndDate(); + String memberId = param.getMemberId(); + int count = Integer.parseInt(param.getCount()); + + if(count < 100) { + count = 100; + } + if(count > 2000) { + count = 2000; + } + + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(siteIdx) + .build(); + JSONObject detailObj = nexusService.getTransaction(LOG_PREFIX, nexusApiInfo); + + apiResponse.success(); + + } catch (Exception e) { + log.error("#-p1::betTransactionList::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + /** + * 파싱 API - 배팅상세 가져오기 + * @param request + * @param token + * @param param + * @return + * @throws Exception + */ + @ResponseBody + @PostMapping(value="/p1/betDetail") + public ApiResponse betDetail(HttpServletRequest request, @RequestHeader String token, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + JSONObject saveObj = null; + JSONArray saveObjs = null; + boolean isSaveEvoDetail = false; + + try { + // apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-p1::betDetail::"+ "T1001:Access denied Key"); + apiResponse.setResultCode("T1001"); + apiResponse.setResultMessage("Access denied Key"); + return apiResponse; + } + + //토큰체크 + if(token == null) { + log.error("#-p1::betDetail::"+ "T1003:Access token check"); + apiResponse.setResultCode("T1003"); + apiResponse.setResultMessage("Access token check"); + return apiResponse; + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-p1::betDetail::"+tokenInfo.getSid()+"::"+param.getBetId()+"::::"; + + ObjectMapper objectMapper = new ObjectMapper(); + String reqJsonStr = objectMapper.writeValueAsString(param); + JSONObject reqObj = new JSONObject(reqJsonStr); + log.info(LOG_PREFIX+ "Request {}", reqObj); + + // 결과보내기 + apiResponse.put("betId", param.getBetId()); + String dType = "detail_0"; + + HashMap betInfo = transService.getBetInfoByBetId(param); + log.info(LOG_PREFIX+ "betInfo {}", betInfo); + + if(betInfo == null) betInfo = transService.getSiteBetByRefIdFromOld(param); + log.info(LOG_PREFIX+ "betInfo_OLD {}", betInfo); + + if(betInfo != null) { + param.setBetId(betInfo.get("refId").toString()); + + String category = betInfo.get("vendorCetegory").toString(); + log.info(LOG_PREFIX+ "Game category : " + category); + + if("pragmatic".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + + String detailURL = pragmaticService.getDetails(LOG_PREFIX, betInfo); + if(detailURL != null && !detailURL.equals("")) { + HashMap url = new HashMap(); + url.put("url", detailURL); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + + } else if("svendor".equals(betInfo.get("vendorCode").toString()) + || "pink".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_6"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(jsonStr, HashMap.class); + apiResponse.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + JSONObject dataObj = svendorService.getDetail(LOG_PREFIX, betInfo); + if(dataObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + if(dataObj.has("gameDetail") && !dataObj.isNull("gameDetail")) { + String detailType = StringUtils.getType(dataObj.getString("gameDetail")); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = dataObj.getString("gameDetail"); + HashMap url = new HashMap(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } else if(detailType.equals("JSON")) { + dType = "detail_6"; + apiResponse.put("dType", dType); + JSONObject detailObj = dataObj.getJSONObject("gameDetail"); + saveObj = detailObj; + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==17 && "tower".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detail_url = + betInfo.get("vendorApiUrl").toString() + +"/v2/detail_url" + + "?site_code="+betInfo.get("vendorApiId").toString() + + "&user_id="+betInfo.get("siteHex").toString()+betInfo.get("memberId").toString() + + "&transaction_id="+betInfo.get("transactionId").toString() + + "&vendorCode=pp" + + "&gameCode="+betInfo.get("gameIdx").toString(); + log.info(LOG_PREFIX+" {}" ,detail_url); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detail_url) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + log.info(LOG_PREFIX+ "responseString::"+responseString); + log.info(LOG_PREFIX+ "url::"+StringUtils.extractLink(responseString)); + String detailUrl = StringUtils.extractLink(responseString); + String detailType = StringUtils.getType(detailUrl); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + HashMap url = new HashMap(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + /* + HashMap url = new HashMap(); + url.put("url", StringUtils.extractLink(responseString)); + apiResponse.put("detail", url); + */ + } else { + apiResponse.put("detail", "betId is not exist"); + } + + } else if(Integer.parseInt(betInfo.get("vendorIdx").toString())==83 && "splus".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_1"; + apiResponse.put("dType", dType); + HashMap d = new HashMap(); + List splusDetail = siteService.getSplusDetailData(param); + for(HashMap ttype : splusDetail) { + log.info(LOG_PREFIX+ "{}, {}", ttype.get("tranType").toString(), ttype.get("data").toString()); + HashMap detailMap = new Gson().fromJson(ttype.get("data").toString(), HashMap.class); + d.put(ttype.get("tranType").toString(), detailMap); + } + + apiResponse.put("detail", d); + + } else if("nexus".equals(betInfo.get("vendorCode").toString()) || "ace2".equals(betInfo.get("vendorCode").toString())) { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + dType = "detail_3"; + apiResponse.put("dType", dType); + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + isSaveEvoDetail = true; + long siteIdx = (long) betInfo.get("siteIdx"); + long memberIdx = (long) betInfo.get("memberIdx"); + String trxId = betInfo.get("vendorTranKey").toString(); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAgentId = betInfo.get("vendorApiId").toString(); + String apiSecretKey = betInfo.get("vendorApiKey").toString(); + NexusApiInfo nexusApiInfo = NexusApiInfo.builder() + .siteIdx(siteIdx) + .memberIdx(memberIdx) + .apiBaseUrl(apiBaseUrl) + .agentId(apiAgentId) + .agentSecretKey(apiSecretKey) + .build(); + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + dType = "detail_3"; + apiResponse.put("dType", dType); + JSONObject detailObj = nexusService.getDetail(LOG_PREFIX, nexusApiInfo, trxId); + if(detailObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + JSONArray transactions = detailObj.getJSONArray("transactions"); + if(transactions.length() > 0) { + List> detailMap = new Gson().fromJson(transactions.toString(), List.class); + saveObjs = transactions; + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } else { + dType = "detail_2"; + apiResponse.put("dType", dType); + JSONObject detailObj = nexusService.getDetailUrl(LOG_PREFIX, nexusApiInfo, trxId); + if(detailObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailObj::"+detailObj.toString()); + int resultCode = detailObj.getInt("code"); + if(resultCode == 0) { + HashMap url = new HashMap<>(); + url.put("url", detailObj.getString("url")); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } + } + } else if("prime".equals(betInfo.get("vendorCode").toString()) + || "dpcore".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::PRIME =========="); + dType = "detail_9"; + apiResponse.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + String apiKey = "Bearer "+betInfo.get("vendorApiKey").toString(); + headers.set("Authorization", apiKey); + String detailUrl = betInfo.get("vendorApiUrl").toString() + "/api/getBettingDetails5?"; + String detailParam = "referer="+param.getBetId(); + detailUrl = detailUrl + detailParam; + + log.info(LOG_PREFIX+ "PRIME::Detail Url: " + detailUrl); + log.info(LOG_PREFIX+ "PRIME::Detail Headers: " + headers.toString()); + ResponseEntity response = null; + JSONObject resJson = null; + try { + response = webClient.get() + .uri(detailUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "PRIME::Detail HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "PRIME::Detail status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "PRIME::Detail response body : " + e.getResponseBodyAsString()); + resJson = new JSONObject(e.getResponseBodyAsString()); + log.error(LOG_PREFIX+ "PRIME::Detail error : " + resJson.getString("message")); + throw new ApiException("P209", resJson.getString("message")); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "PRIME::Detail SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PRIME::Detail InterruptedException::"+rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PRIME::Detail Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + + if(response != null && response.getStatusCode() == HttpStatus.OK) { + isSaveEvoDetail = true; + log.info(LOG_PREFIX+ "PRIME::Detail response : " + response.getBody()); + resJson = new JSONObject(response.getBody()); + + JSONObject dataObj = resJson; + String gameType = dataObj.optString("gameType"); + JSONArray participants = dataObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + saveObj = dataObj; + HashMap detailMap = new Gson().fromJson(dataObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } + } else if("grand".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = + betInfo.get("vendorApiUrl").toString() + +"/transactions/detail" + + "?round_id="+betInfo.get("vendorTranKey").toString(); + log.info(LOG_PREFIX+"Request Url : {}" ,detailUrl); + OkHttpClient client = new OkHttpClient().newBuilder().build(); + okhttp3.Request requestok2 = new okhttp3.Request.Builder() + .url(detailUrl) + .method("GET", null)// + .addHeader("User-agent", "Mozilla") + .addHeader("Authorization", "Bearer "+betInfo.get("vendorApiKey").toString()) + .build(); + okhttp3.Response response = client.newCall(requestok2).execute(); + + if(response.isSuccessful()){ + okhttp3.ResponseBody body = response.body(); + String responseString = body.string(); + log.info(LOG_PREFIX+ "responseString : " , responseString); + JSONObject responseObj = new JSONObject(responseString); + JSONObject dataObj = responseObj.getJSONObject("data"); + if(dataObj != null) { + HashMap url = new HashMap(); + url.put("url", dataObj.getString("url")); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else if("pracp".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiAgentCode", betInfo.get("vendorApiId").toString()); + apiInfo.put("apiToken", betInfo.get("vendorApiKey").toString()); + apiInfo.put("apiBaseUrl", betInfo.get("vendorApiUrl").toString()); + apiInfo.put("uuid", betInfo.get("uuid").toString()); + apiInfo.put("round_id", betInfo.get("roundId").toString()); + + JSONObject dataObj = pracpService.getDetail(LOG_PREFIX, apiInfo); + log.info(LOG_PREFIX+ "dataObj : " + dataObj.toString()); + if(dataObj != null) { + HashMap url = new HashMap(); + url.put("url", dataObj.getString("url")); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else if("tplus".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiAuthKey = betInfo.get("vendorApiKey").toString(); + String pairTransactionKey = betInfo.get("refId").toString(); + TplusApiInfo apiInfo = TplusApiInfo.builder() + .apiBaseUrl(apiBaseUrl) + .apiAuthKey(apiAuthKey) + .pairTransactionKey(pairTransactionKey).build(); + + log.info(LOG_PREFIX+ "tplus::apiInfo: " + apiInfo); + + String detailURL = tplusService.getDetails(LOG_PREFIX, apiInfo); + if(detailURL != null && !detailURL.equals("")) { + HashMap url = new HashMap(); + url.put("url", detailURL); + apiResponse.put("detail", url); + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else if("onix".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::ONIX =========="); + dType = "detail_8"; + apiResponse.put("dType", dType); + + String jsonStr = siteService.getOrgDetailData(param); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String fullDateTime = betInfo.get("betTime").toString(); + String dateOnly = fullDateTime.substring(0, 10); + + // Step 1: Get round info from /csapi/getBetting + String bettingUrl = apiBaseUrl + "/csapi/getBetting"; + JSONObject bettingBody = new JSONObject(); + bettingBody.put("userid", betInfo.get("siteIdxHex").toString()+betInfo.get("memberId").toString()); + bettingBody.put("sdate", dateOnly+" 00:00:00.000"); + bettingBody.put("edate", dateOnly+" 23:59:59.999"); + bettingBody.put("pagesize", "1"); + bettingBody.put("gameid", "0"); + bettingBody.put("roundcode", betInfo.get("uuid").toString()); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", "Bearer " + betInfo.get("vendorApiKey").toString()); + + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Url: " + bettingUrl); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Body: " + bettingBody.toString()); + + try { + ResponseEntity bettingRes = webClient.post() + .uri(bettingUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(bettingBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(bettingRes != null && bettingRes.getBody() != null) { + JSONObject bettingObj = new JSONObject(bettingRes.getBody()); + log.info(LOG_PREFIX+ "ONIX::Step1 getBetting Response: " + bettingObj.toString()); + + int bettingResult = bettingObj.getInt("result"); + if(bettingResult == 1 && bettingObj.has("data")) { + JSONArray dataArray = bettingObj.getJSONArray("data"); + if(dataArray.length() > 0) { + isSaveEvoDetail = true; + JSONObject dataObj = dataArray.getJSONObject(0); + JSONObject detailObj = dataObj.getJSONArray("details").getJSONObject(0); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + saveObj = detailObj; + + } else { + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("detail", "betId is not exist"); + String errorMsg = bettingObj.has("msg") ? bettingObj.getString("msg") : "Unknown error"; + log.error(LOG_PREFIX+ "ONIX::Betting Error: " + errorMsg); + } + } else { + apiResponse.put("detail", "betId is not exist"); + log.error(LOG_PREFIX+ "ONIX::Betting Response is null"); + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "ONIX::Betting HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "ONIX::Betting status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "ONIX::Betting response body : " + e.getResponseBodyAsString()); + JSONObject errorJson = new JSONObject(e.getResponseBodyAsString()); + String errorMsg = errorJson.has("msg") ? errorJson.getString("msg") : "Betting API error"; + log.error(LOG_PREFIX+ "ONIX::Betting error : " + errorMsg); + throw new ApiException("P209", errorMsg); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "ONIX::Betting ReadTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "ONIX::Betting InterruptedException::" + rae.getMessage()); + } + throw new ApiException("P210", rae.getMessage()); + } catch(Exception e) { + log.error(LOG_PREFIX+ "ONIX::Betting Exception : " + e.getMessage()); + throw new ApiException("P211", e.getMessage()); + } + } + } else if("bet_radar".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::BET_RADAR =========="); + // TODO: 베팅상세 내려주기 + /* + * param.getBetId() 기준으로 bet_radar_log 테이블 조회시 베팅과 결과 두가지가 나옴. + * 결과가 없는경우 베팅만 한가지 있을 수 있음. + * param.getBetId() 기준 bet_radar_log에서 jsonstr(베팅상세 json 원본)을 가져와서 + * 하나의 json으로 합쳐서 내려주기 구현. + */ + // bet_radar_log 테이블에서 조회 + String radarLogJson = siteService.getMergedBetRadarLog(param.getBetId()); + if(radarLogJson != null && !radarLogJson.isEmpty()) { + log.info(LOG_PREFIX+ "bet_radar_log found, returning merged json"); + dType = "detail_radar"; + apiResponse.put("dType", dType); + HashMap detailMap = new Gson().fromJson(radarLogJson, HashMap.class); + String detailUrl = "https://sportsbook.spokok.com/bets/detail/"+param.getBetId(); + detailMap.put("dLink", detailUrl); + apiResponse.put("detail", detailMap); + apiResponse.success(); + return apiResponse; + } + } else if("thenut".equals(betInfo.get("vendorCode").toString())) { + log.info(LOG_PREFIX+ "========== BetDetail::THENUT =========="); + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + String detailType = StringUtils.getType(jsonStr); + if(detailType.equals("URL")) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = jsonStr; + HashMap url = new HashMap(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } else if(detailType.equals("JSON")) { + dType = "detail_3"; + apiResponse.put("dType", dType); + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + } else { + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiKey = betInfo.get("vendorApiKey").toString(); + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("betId", param.getBetId()); + + if("CASINO".equals(betInfo.get("vendorCetegory").toString())) { + isSaveEvoDetail = true; + dType = "detail_3"; + apiResponse.put("dType", dType); + JSONObject detailObj = thenutService.getBetDetail(LOG_PREFIX, apiInfo); + if(detailObj == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + saveObj = detailObj; + } + } else { + dType = "detail_2"; + apiResponse.put("dType", dType); + String detailUrl = thenutService.getBetDetailUrl(LOG_PREFIX, apiInfo); + if(detailUrl == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailUrl::"+detailUrl); + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } + } + } + } else if("panda".equals(betInfo.get("vendorCode").toString())) { + dType = "detail_2"; + apiResponse.put("dType", dType); + String apiBaseUrl = betInfo.get("vendorApiUrl").toString(); + String apiKey = betInfo.get("vendorApiKey").toString(); + String tranId = betInfo.get("uuid").toString(); + + HashMap apiInfo = new HashMap<>(); + apiInfo.put("apiBaseUrl", apiBaseUrl); + apiInfo.put("apiKey", apiKey); + apiInfo.put("tranId", tranId); + String detailUrl = pandaService.getDetail(LOG_PREFIX, apiInfo); + if(detailUrl == null) { + apiResponse.put("detail", "betId is not exist"); + } else { + log.info(LOG_PREFIX+ "detailUrl::"+detailUrl); + HashMap url = new HashMap<>(); + url.put("url", detailUrl); + apiResponse.put("detail", url); + } + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + } else { + apiResponse.put("dType", dType); + apiResponse.put("detail", "betId is not exist"); + } + + if(saveObj != null || saveObjs != null) { + // check detail data + if(isSaveEvoDetail) { + asyncSiteService.insertEvoDetailProc(LOG_PREFIX, param.getBetId(), saveObj, saveObjs); + } + } else { + log.info(LOG_PREFIX+ "saved detail is null"); + } + + apiResponse.success(); + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + /** + * 파싱 API - 파싱설정 + * @param request + * @param token + * @param param + * @return + * @throws Exception + */ + + @ResponseBody + @PostMapping(value="/p1/parseUseUpdate") + public ApiResponse parseUseUpdate(HttpServletRequest request, @RequestHeader String token, @RequestBody PlayParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + //apiKey 체크 + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-p1::parseUseUpdate::"+ "access denied Key"); + throw new ApiException("999", "access denied Key"); + } + + //토큰체크 + if(token == null) { + log.error("#-p1::parseUseUpdate::"+ "access denied token"); + throw new ApiException("1000", "access denied token"); + } + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-p1::parseUseUpdate::"+tokenInfo.getSid()+"::::"; + + + if(param.getParseUseYn()!=null && !"".equals(param.getParseUseYn())) { + HashMap parseParam = new HashMap(); + parseParam.put("siteIdx", site.getSiteIdx()); + parseParam.put("siteId", site.getSiteId()); + parseParam.put("useYn", param.getParseUseYn()); + siteService.insertParseUse(parseParam); + log.info(LOG_PREFIX + "insertParseUse SUCC"); + } + + HashMap ParseUseYn = siteService.getParseUseYn(site.getSiteIdx()); + if(ParseUseYn==null || "N".equals(ParseUseYn.get("useYn").toString())) { + apiResponse.put("currentUseYn","N"); + } else { + apiResponse.put("currentUseYn","Y"); + } + log.info(LOG_PREFIX + "ParseUseYn: " + apiResponse.toString()); + + apiResponse.success(); + } catch (Exception e) { + log.error("#-p1::parseUseUpdate::"+e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + /** + * url과 파라미터 및 헤더정보를 가지고 그대로 해당 url에 바이패스하는 함수 + */ + @PostMapping("/bypass") + public ResponseEntity bypass( + @RequestParam String targetUrl, + @RequestParam String targetMethod, + @RequestParam(required = false) String targetParameter, + @RequestParam(defaultValue = "JSON") String parameterType, + @RequestParam(required = false) String targetContentType, + HttpServletRequest request) { + + log.info("=== Bypass Request Started ==="); + log.info("Target URL: {}", targetUrl); + log.info("Target Method: {}", targetMethod); + log.info("Parameter Type: {}", parameterType); + + try { + HttpMethod httpMethod = HttpMethod.valueOf(targetMethod.toUpperCase()); + + // 헤더 설정 + HttpHeaders headers = createHeaders(request, targetContentType, parameterType); + + // URL 및 요청 엔티티 준비 + String finalUrl; + + if (isGetOrDelete(httpMethod)) { + // GET/DELETE: 쿼리 파라미터로 추가 + finalUrl = buildUrlWithQueryParams(targetUrl, targetParameter, parameterType); + log.info("GET/DELETE request to: {}", finalUrl); + } else { + // POST/PUT: Body에 데이터 포함 + finalUrl = targetUrl; + } + + WebClient.RequestBodySpec requestSpec = webClient.method(httpMethod).uri(finalUrl); + requestSpec.headers(h -> h.addAll(headers)); + + if (!isGetOrDelete(httpMethod)) { + String body = hasParameter(targetParameter) ? targetParameter : null; + if (body != null) { + requestSpec.bodyValue(body); + } + log.info("POST/PUT request to: {} with body length: {}", + finalUrl, body != null ? body.length() : 0); + } + + ResponseEntity response = requestSpec.retrieve() + .toEntity(String.class) + .block(); + + log.info("Response received - Status: {}, Body length: {}", + response.getStatusCode(), + response.getBody() != null ? response.getBody().length() : 0); + + // 응답 헤더 복사 (일부 시스템 헤더 제외) + HttpHeaders responseHeaders = new HttpHeaders(); + response.getHeaders().forEach((key, value) -> { + if (!isSystemHeader(key)) { + responseHeaders.put(key, value); + } + }); + + return ResponseEntity.status(response.getStatusCode()) + .headers(responseHeaders) + .body(response.getBody()); + + } catch (WebClientResponseException e) { + // 4xx 에러 (클라이언트 에러) + log.error("Client error - Status: {}, Body: {}", e.getStatusCode().value(), e.getResponseBodyAsString()); + return ResponseEntity.status(e.getStatusCode().value()) + .body(e.getResponseBodyAsString()); + + } catch (WebClientRequestException e) { + // 타임아웃이나 연결 에러 + log.error("Connection error: {}", e.getMessage()); + return ResponseEntity.status(HttpStatus.REQUEST_TIMEOUT) + .body(createErrorResponse("연결 타임아웃 또는 네트워크 에러: " + e.getMessage())); + + } catch (IllegalArgumentException e) { + log.error("Invalid HTTP method: {}", targetMethod); + return ResponseEntity.status(HttpStatus.BAD_REQUEST) + .body(createErrorResponse("잘못된 HTTP 메소드: " + targetMethod)); + + } catch (Exception e) { + log.error("Bypass failed: ", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(createErrorResponse("요청 처리 중 오류 발생: " + e.getMessage())); + } + } + + + /** + * 에볼루션 상세 콜백 + * @param request + * @param requestBody + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(path = "/evoDetail") + public ApiResponse evoDetail(HttpServletRequest request, @RequestBody BetParam param) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + final String LOG_PREFIX = "#-API::evoDetail::"+param.getBetId()+"::::"; + + try { + String jsonStr = siteService.getOrgDetailData(param); + log.info(LOG_PREFIX+ "jsonStr : " + jsonStr); + if(jsonStr != null && !"".equals(jsonStr) && !"{}".equals(jsonStr)) { + + JSONObject detailObj = new JSONObject(jsonStr); + String gameType = detailObj.optString("gameType"); + JSONArray participants = detailObj.optJSONArray("participants"); + if (participants != null) { + for (int i = 0; i < participants.length(); i++) { + // result 객체 가져오기 (없으면 생성) + JSONObject participant = participants.optJSONObject(i); + JSONObject result = participant.optJSONObject("result"); + if (result == null) { + result = new JSONObject(); + participant.put("result", result); + } + + // link 값 세팅 + String raw = "betId="+param.getBetId()+"&gameType="+gameType; + String encrypted = AesUtil.encrypt(raw); + result.put("link", "https://fst.tx-direction.cc/detailsPage/"+encrypted); + } + } + + HashMap detailMap = new Gson().fromJson(detailObj.toString(), HashMap.class); + apiResponse.put("detail", detailMap); + } + + apiResponse.success(); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + apiResponse.fail(); + } + + return apiResponse; + } + + + /** + * 헤더 생성 + */ + private HttpHeaders createHeaders(HttpServletRequest request, String targetContentType, String parameterType) { + HttpHeaders headers = new HttpHeaders(); + + // 원본 요청의 주요 헤더들 복사 + copyImportantHeaders(request, headers); + + // Content-Type 설정 + setContentType(headers, targetContentType, parameterType); + + // 브라우저와 유사한 추가 헤더들 + setBrowserLikeHeaders(headers); + + log.debug("Request headers: {}", headers); + return headers; + } + + /** + * 중요한 헤더들 복사 + */ + private void copyImportantHeaders(HttpServletRequest request, HttpHeaders headers) { + // Authorization 헤더 (인증 정보) + String authorization = request.getHeader("Authorization"); + if (authorization != null) { + headers.add("Authorization", authorization); + log.debug("Copied Authorization header"); + } + + // API Key 관련 헤더들 + String apiKey = request.getHeader("X-API-Key"); + if (apiKey != null) { + headers.add("X-API-Key", apiKey); + } + + String apiToken = request.getHeader("X-API-Token"); + if (apiToken != null) { + headers.add("X-API-Token", apiToken); + } + + // 커스텀 헤더들 (X-로 시작하는 것들) + Enumeration headerNames = request.getHeaderNames(); + while (headerNames.hasMoreElements()) { + String headerName = headerNames.nextElement(); + if (headerName.startsWith("X-") && !headerName.equals("X-Forwarded-For")) { + headers.add(headerName, request.getHeader(headerName)); + log.debug("Copied custom header: {}", headerName); + } + } + } + + /** + * Content-Type 설정 + */ + private void setContentType(HttpHeaders headers, String targetContentType, String parameterType) { + if (targetContentType != null && !targetContentType.trim().isEmpty()) { + // 명시적으로 지정된 Content-Type 사용 + try { + headers.setContentType(MediaType.parseMediaType(targetContentType)); + log.debug("Set explicit Content-Type: {}", targetContentType); + } catch (Exception e) { + log.warn("Invalid targetContentType: {}, using parameterType instead", targetContentType); + setContentTypeByParameterType(headers, parameterType); + } + } else { + // parameterType을 기반으로 Content-Type 설정 + setContentTypeByParameterType(headers, parameterType); + } + } + + /** + * 파라미터 타입에 따른 Content-Type 설정 + */ + private void setContentTypeByParameterType(HttpHeaders headers, String parameterType) { + String upperParamType = parameterType.toUpperCase(); + switch (upperParamType) { + case "FORM": + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + break; + case "XML": + headers.setContentType(MediaType.APPLICATION_XML); + break; + case "TEXT": + headers.setContentType(MediaType.TEXT_PLAIN); + break; + case "HTML": + headers.setContentType(MediaType.TEXT_HTML); + break; + default: + headers.setContentType(MediaType.APPLICATION_JSON); + break; + } + log.debug("Set Content-Type by parameter type: {}", headers.getContentType()); + } + + /** + * 브라우저와 유사한 헤더 설정 + */ + private void setBrowserLikeHeaders(HttpHeaders headers) { + // User-Agent가 없으면 설정 + if (!headers.containsKey("User-Agent")) { + headers.add("User-Agent", + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + } + + // Accept 헤더 + if (!headers.containsKey("Accept")) { + headers.add("Accept", "*/*"); + } + + // 기타 브라우저 헤더들 + headers.add("Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"); + headers.add("Accept-Encoding", "gzip, deflate, br"); + headers.add("Cache-Control", "no-cache"); + headers.add("Pragma", "no-cache"); + } + + /** + * GET/DELETE 메소드 확인 + */ + private boolean isGetOrDelete(HttpMethod method) { + return method == HttpMethod.GET || method == HttpMethod.DELETE; + } + + /** + * 파라미터 존재 확인 + */ + private boolean hasParameter(String parameter) { + return parameter != null && !parameter.trim().isEmpty(); + } + + /** + * 쿼리 파라미터가 포함된 URL 생성 + */ + private String buildUrlWithQueryParams(String baseUrl, String parameter, String parameterType) { + if (!hasParameter(parameter)) { + return baseUrl; + } + + try { + UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(baseUrl); + + String upperParamType = parameterType.toUpperCase(); + if ("FORM".equals(upperParamType)) { + // Form 데이터를 쿼리 파라미터로 파싱 + String[] pairs = parameter.split("&"); + for (String pair : pairs) { + String[] keyValue = pair.split("=", 2); + if (keyValue.length == 2) { + builder.queryParam(keyValue[0], keyValue[1]); + } + } + } else { + // JSON이나 기타 형식은 data 파라미터로 + builder.queryParam("data", URLEncoder.encode(parameter, "UTF-8")); + } + + return builder.toUriString(); + } catch (Exception e) { + log.warn("Failed to build URL with query params: {}", e.getMessage()); + String separator = baseUrl.contains("?") ? "&" : "?"; + return baseUrl + separator + "data=" + parameter; + } + } + + /** + * 시스템 헤더 확인 (응답에서 제외할 헤더들) + */ + private boolean isSystemHeader(String headerName) { + String lowerName = headerName.toLowerCase(); + return lowerName.equals("transfer-encoding") || + lowerName.equals("connection") || + lowerName.equals("server") || + lowerName.equals("date") || + lowerName.startsWith("access-control-"); + } + + /** + * 에러 응답 생성 + */ + private String createErrorResponse(String message) { + return String.format("{\"success\":false,\"error\":\"%s\",\"timestamp\":%d}", + message.replace("\"", "\\\""), System.currentTimeMillis()); + } + +} diff --git a/src/main/java/com/bb/front/CallBackAceController.java b/src/main/java/com/bb/front/CallBackAceController.java new file mode 100644 index 0000000..986380a --- /dev/null +++ b/src/main/java/com/bb/front/CallBackAceController.java @@ -0,0 +1,1679 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; + +import jakarta.servlet.http.HttpServletRequest; + +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.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +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 org.springframework.web.client.ResourceAccessException; + +import com.bb.model.NexusBalanceData; +import com.bb.model.NexusResponse; +import com.bb.model.NexusSmlData; +import com.bb.model.NexusSmlRequest; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/ace2") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackAceController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @RequestMapping(path = "/callBalance") + public ResponseEntity callBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("apiKey"); + net.sf.json.JSONObject params = requestBody.getJSONObject("params"); + String siteUsername = params.getString("siteUsername"); + String requestedAt = params.getString("requestedAt"); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::ACE::::callBalance::"+memberId+"::"+requestedAt+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "ace2"); + sParam.put("apiKey", apiKey); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfoByApiKey(sParam); + if(siteApiInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + if(siteApiInfo.get("memberIdx") == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + long startTimestamp = System.currentTimeMillis(); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("BALANCE_CALLBACK_ERROR"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.5) { + log.error(LOG_PREFIX+ "잔액요청 응답시간("+diffTime+"초) 초과"); + } + log.info(LOG_PREFIX + "resData::"+resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + NexusBalanceData data = new NexusBalanceData(); + data.setBalance(balance); + data.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("BALANCE_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callBet") + public ResponseEntity callBet(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::ACE::"+memberId+"::"+data.getTransactionKey()+"::callBet:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "ace2"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + // vendors_info.useYn 게임막기 기능 + if("N".equals(siteVendorInfo.get("vendorAllUseYn").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("사용불가 벤더사"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "사용불가 벤더사::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + Long lastInVendorIdx = Long.parseLong(siteVendorInfo.get("lastInVendorIdx").toString()); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + if(lastInVendorIdx.longValue() != vendorIdx.longValue()) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("VendorIdx doesn't match"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = Math.abs(amountD.intValue()); + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("NO_SITE_CREDIT"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NO_SITE_CREDIT::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + if(amount < 0) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("MAX_BET_AMOUNT_OVER"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + String gameName = data.getGameName(); + String gameType = data.getGameType().replaceAll(" ", "").toLowerCase(); + if(data.getGameId() == null) data.setGameId(""); + String gameId = data.getGameId().replaceAll(" ", "").toLowerCase(); + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + // Ban Game Type Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 501L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameType:"+gameType+"이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_TYPE"); + logParam.put("errorMsg", "gameType:"+gameType+"이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("Ban Game Type : " + gameType); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + if(!"".equals(gameId) && !"".equals(banGameId) && banGameId.contains(gameId+"|")) { + // Ban Game Id Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 502L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameId:"+gameId+"("+gameName+")이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_ID"); + logParam.put("errorMsg", "gameId:"+gameId+"("+gameName+")이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Id : " + gameId); + + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("Ban Game Id : " + gameId); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "ace2"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", data.getGameName()); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "ace2"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", data.getGameName()); + + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + if(data.getIsBonus().equals("true")) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 80) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액을 확인하여 주세요"); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액을 확인하여 주세요"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("BET_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callResult") + public ResponseEntity callResult(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::ACE::"+memberId+"::"+data.getTransactionKey()+"::callResult:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + if(data.getType().equals("turn_promotion")) { + data.setVendorKey("pragmaticplay_casino"); + } + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "ace2"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = Math.abs(amountD.intValue()); + if(amount < 0) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("NOT_FOUND_REF_DATA"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = data.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "ace2"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "ace2"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + if(data.getIsBonus().equals("true") || data.getIsPromo().equals("true") || data.getType().equals("turn_promotion")) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("RESULT_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callCancel") + public ResponseEntity callCancel(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::ACE::"+memberId+"::"+data.getTransactionKey()+"::callCancel:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "ace2"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = Math.abs(amountD.intValue()); + if(amount < 0) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("NOT_FOUND_REF_DATA"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = data.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "ace2"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "ace2"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("RESULT_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callAdjust") + public ResponseEntity callAdjust(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::ACE::"+memberId+"::"+data.getTransactionKey()+"::callAdjust:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "ace2"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = amountD.intValue(); + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("NOT_FOUND_REF_DATA"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = data.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "ace2"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", gameName); + if(amount >= 0) { + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + } else { + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount*-1); + tranParam.put("creditAmt", "0"); + } + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "ace2"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "adjust"); + if(amount >= 0) { + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + } else { + callBackObj.put("debit", amount*-1); + callBackObj.put("credit", 0); + } + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_ADJUST request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_ADJUST_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_ADJUST_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_ADJUST status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_ADJUST response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_ADJUST_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_ADJUST_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("RESULT_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + /** + * 에볼루션 상세 콜백 + * @param request + * @param requestBody + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(path = "/callDetail") + public ResponseEntity callDetail(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("apiKey"); + final String LOG_PREFIX = "#-CB::ACE::callDetail::"+apiKey+":::"; + // log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + JSONObject bodyObj = new JSONObject(requestBody.toString()); + JSONArray params = bodyObj.getJSONArray("params"); + String prevRefId = ""; + for(int i=0; i(); + detailMap.put("refId", refId); + detailMap.put("orgDetail", orgDetail.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX2+ "insertEvoDetail result::" + result); + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX2+ "Duplicate refId"); + continue; + } + + } + + + response = new NexusResponse(); + response.setCode(0); + response.setMsg("SUCCESS"); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-8); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-9); + response.setMsg("DETAIL_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + /** + * UTC 시간을 한국 시간(KST)으로 변환 + * @param utcTimeStr UTC 시간 문자열 (예: 2026-02-06T04:39:05.243Z) + * @return 한국 시간 문자열 (예: 2026-02-06T13:39:05.243+09:00) + */ + private static String convertUtcToKstTime(String utcTimeStr) { + try { + if (utcTimeStr == null || !utcTimeStr.endsWith("Z")) { + return utcTimeStr; + } + + // UTC 시간 파싱 + Instant instant = Instant.parse(utcTimeStr); + // 한국 시간대로 변환 (UTC+9) + ZonedDateTime kstTime = instant.atZone(ZoneId.of("Asia/Seoul")); + // ISO 8601 형식으로 포맷 (타임존 포함) + return kstTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } catch (Exception e) { + log.error("UTC to KST conversion error: " + e.getMessage()); + return utcTimeStr; // 변환 실패시 원본 반환 + } + } + + /** + * JSON 객체를 재귀적으로 순회하며 시간 필드를 UTC에서 KST로 변환 + * @param jsonObj 변환할 JSON 객체 + */ + private static void convertUtcToKst(JSONObject jsonObj) { + try { + // 변환할 시간 필드 목록 + String[] timeFields = {"startedAt", "settledAt", "placedOn", "recordedAt"}; + + Iterator keys = jsonObj.keys(); + while (keys.hasNext()) { + String key = keys.next(); + Object value = jsonObj.get(key); + + // 시간 필드인 경우 변환 + for (String timeField : timeFields) { + if (key.equals(timeField) && value instanceof String) { + String utcTime = (String) value; + String kstTime = convertUtcToKstTime(utcTime); + jsonObj.put(key, kstTime); + break; + } + } + + // 중첩된 JSONObject인 경우 재귀 호출 + if (value instanceof JSONObject) { + convertUtcToKst((JSONObject) value); + } + // 중첩된 JSONArray인 경우 각 요소 처리 + else if (value instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) value; + for (int i = 0; i < jsonArray.length(); i++) { + Object arrayItem = jsonArray.get(i); + if (arrayItem instanceof JSONObject) { + convertUtcToKst((JSONObject) arrayItem); + } + } + } + } + } catch (Exception e) { + log.error("JSON time conversion error: " + e.getMessage()); + } + } + + private static String makeDateStrForUTC(boolean flag, String strDate) { + String result = ""; + if(flag) { + // 2022-05-01 00:00:00.000 => 2022-05-01T00:00:00.000Z + result = strDate.replace(" ", "T") + "Z"; + } else { + // 2022-05-01T00:00:00.000Z => 2022-05-01 00:00:00.000 + result = strDate.replace("T", " ").replace("Z", ""); + } + return result; + } + + private static String makeEdate(String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + if(paramDate == null) { + // eDate = sdf.format(System.currentTimeMillis()); + eDate = sdf.format(System.currentTimeMillis() - 32400000); + } else { + Date date = sdf.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf.format(date2); + } + } catch(Exception e) { + log.error(e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallBackBetGambleController.java b/src/main/java/com/bb/front/CallBackBetGambleController.java new file mode 100644 index 0000000..a4a08fd --- /dev/null +++ b/src/main/java/com/bb/front/CallBackBetGambleController.java @@ -0,0 +1,964 @@ +package com.bb.front; + +import java.util.HashMap; +import java.util.Random; + +import jakarta.servlet.http.HttpServletRequest; + +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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 org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.AuthParam; +import com.bb.model.CheckVo; +import com.bb.model.CommonParam; +import com.bb.model.EvoResponse; +import com.bb.model.EvolutionVo; +import com.bb.model.Member; +import com.bb.model.PlayParam; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@RestController +@Slf4j +@RequestMapping("/api/callback/evot") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackBetGambleController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + WebClient webClient; + + + + @ResponseBody + @RequestMapping(value="/test") + public EvoResponse test(HttpServletRequest request, @RequestBody EvolutionVo evo) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + try { + log.debug(evo.toString()); + + JSONObject member = new JSONObject(); + member.put("userId", "moka_gk01"); + + log.info("# site.getSiteCbUrl() : " + "https://dev-api.allboxstage.com/triple/balance"); + log.info("# site.getSiteCbUrl() : " + member.toString()); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri("https://dev-api.allboxstage.com/triple/balance") + .headers(h -> h.addAll(header)) + .bodyValue(member.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error("test::HttpClientErrorException : " + e.getMessage()); + log.error("test::status code : " + e.getStatusCode().value()); + log.error("test::response body : " + e.getResponseBodyAsString()); + evoResponse.fail(); + return evoResponse; + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error("test::ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error("test::SocketTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("test::InterruptedException::" + rae.getMessage()); + } + log.error("test::WebClientRequestException : " + rae.getMessage()); + evoResponse.fail(); + return evoResponse; + } + + if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { + log.info("status code : {}", responseEntity.getStatusCode()); + log.info("body: {}", responseEntity.getBody()); + + JSONObject resData = new JSONObject(responseEntity.getBody()); + + if(resData.getInt("result_code") == 0) { + evoResponse.setUuid(evo.getUuid()); + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.setBonus(0.0); + evoResponse.success(); + }else { + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.fail(); + } + } else { + log.error("test::Unexpected response status code"); + evoResponse.fail(); + } + + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + + @ResponseBody + @RequestMapping(value="/") + public ApiResponse main(HttpServletRequest request, @RequestBody CheckVo check) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + try { + + + + apiResponse.success(); + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + @ResponseBody + @RequestMapping(value={"/sid"}) + public EvoResponse sid(HttpServletRequest request, @RequestBody CheckVo check) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + System.out.print("sid CHECK " + check.toString()); + try { + + + + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx",Integer.parseInt(check.getUserId().substring(0, 3), 16)); + sParam.put("memberId", check.getUserId().substring(3, check.getUserId().length())); + String memberId =check.getUserId().substring(3, check.getUserId().length()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + + AuthParam param = new AuthParam(); + param.setBalance(0); + param.setUserId(memberId); + param.setNickName(check.getUserId()); + + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + commonParam.setAuthParam(param); + + System.out.print("CHECK " + check.toString()); + + Member member = siteService.getMember(commonParam); + + if(member == null) { + siteService.insertMember(commonParam); + member = siteService.getMember(commonParam); + } + + String sid = makeApiKey(""); + member.setLastSid(sid); + siteService.updateSid(member); + evoResponse.setSid(sid); + evoResponse.setUuid(check.getUuid()); + evoResponse.success(); + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + @ResponseBody + @RequestMapping(value={"/check"}) + public EvoResponse check(HttpServletRequest request, @RequestBody CheckVo check) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + try { + System.out.print("check CHECK " + check.toString()); + + evoResponse.setSid(check.getSid()); + evoResponse.setUuid(check.getUuid()); + + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx",Integer.parseInt(check.getUserId().substring(0, 3), 16)); + sParam.put("memberId", check.getUserId().substring(3, check.getUserId().length())); + String memberId =check.getUserId().substring(3, check.getUserId().length()); + + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + + AuthParam param = new AuthParam(); + param.setBalance(0); + param.setUserId(memberId); + param.setNickName(check.getUserId()); + + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + commonParam.setAuthParam(param); + + System.out.print("CHECK " + check.toString()); + + Member member = siteService.getMember(commonParam); + + // 회원 없을경우 가입시키기 + + if(member == null) { + + System.out.print("CHECK INVALID_PARAMETER"); + + evoResponse.fail("INVALID_PARAMETER"); + return evoResponse; + } + + /* + if(!check.getSid().equals(member.getLastSid())) { + evoResponse.fail("INVALID_SID"); + return evoResponse; + } + */ + + evoResponse.success(); + + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + + @ResponseBody + @RequestMapping(value="/balance") + public EvoResponse balance(HttpServletRequest request, @RequestBody EvolutionVo evo) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + try { + log.debug(evo.toString()); + + //사이트정보 + HashMap sParam = new HashMap(); + + sParam.put("siteIdx",Integer.parseInt(evo.getUserId().substring(0, 3), 16)); + sParam.put("memberId", evo.getUserId().substring(3, evo.getUserId().length())); + String memberId =evo.getUserId().substring(3, evo.getUserId().length()); + /* + AuthParam param = new AuthParam(); + param.setBalance(0); + param.setUserId("moka_"+evo.getUserId()); + param.setNickName(evo.getUserId()); + + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(1); + commonParam.setAuthParam(param); + + Member memberS = siteService.getMember(commonParam); + if(!evo.getSid().equals(memberS.getLastSid())) { + evoResponse.fail("INVALID_SID"); + return evoResponse; + } + + */ + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + + if(siteApiInfo==null) { + + evoResponse.setBalance(null); + evoResponse.fail(); + return evoResponse; + } + + JSONObject member = new JSONObject(); + member.put("userId", memberId); + + log.info("# site.getSiteCbUrl() : " + siteApiInfo.get("siteCbUrl")+"/balance"); + log.info("# site.getSiteCbUrl() : " + member.toString()); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/balance") + .headers(h -> h.addAll(header)) + .bodyValue(member.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error("balance::HttpClientErrorException : " + e.getMessage()); + log.error("balance::status code : " + e.getStatusCode().value()); + log.error("balance::response body : " + e.getResponseBodyAsString()); + evoResponse.setBalance(null); + evoResponse.fail(); + return evoResponse; + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error("balance::ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error("balance::SocketTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("balance::InterruptedException::" + rae.getMessage()); + } + log.error("balance::WebClientRequestException : " + rae.getMessage()); + evoResponse.setBalance(null); + evoResponse.fail(); + return evoResponse; + } + + if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { + log.info("status code : {}", responseEntity.getStatusCode()); + log.info("body: {}", responseEntity.getBody()); + + JSONObject resData = new JSONObject(responseEntity.getBody()); + + if(resData.getInt("result_code") == 0) { + evoResponse.setUuid(evo.getUuid()); + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.setBonus(0.0); + evoResponse.success(); + }else { + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.fail(); + } + } else { + log.error("balance::Unexpected response status code"); + evoResponse.setBalance(null); + evoResponse.fail(); + } + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + + @ResponseBody + @RequestMapping(value="/debit") + public EvoResponse debit (HttpServletRequest request, @RequestBody EvolutionVo evo) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + + try { + log.debug(evo.toString()); + //사이트정보 + //사이트정보 + HashMap sParam = new HashMap(); + + sParam.put("siteIdx",Integer.parseInt(evo.getUserId().substring(0, 3), 16)); + sParam.put("memberId", evo.getUserId().substring(3, evo.getUserId().length())); + String memberId =evo.getUserId().substring(3, evo.getUserId().length()); + + + /* + AuthParam param = new AuthParam(); + param.setBalance(0); + param.setUserId("moka_"+evo.getUserId()); + param.setNickName(evo.getUserId()); + + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(1); + commonParam.setAuthParam(param); + + Member memberS = siteService.getMember(commonParam); + if(!evo.getSid().equals(memberS.getLastSid())) { + evoResponse.fail("INVALID_SID"); + return evoResponse; + } + */ + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + + if(siteApiInfo==null) { + + evoResponse.setBalance(null); + evoResponse.fail(); + return evoResponse; + } + + // 사이트에 크레딧이 없을경우 에러 보냄 베팅막음 + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + if(targetSiteCredit < evo.getTransaction().getAmount() ) { + System.out.println("no siteCredit"); + evoResponse.setBalance(null); + evoResponse.fail("INSUFFICIENT_FUNDS2"); + return evoResponse; + } + + +//최대베팅액 (userMaxBet 우선 적용) + sParam.put("vendorIdx", 1); + long maxBet = siteService.getSiteMaxBet(sParam); + + // userMaxBet 조회 + long userMaxBet = 0; + Long userMaxBetObj = siteService.getUserMaxBet(sParam); + if(userMaxBetObj != null) { + userMaxBet = userMaxBetObj; + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : maxBet; + System.out.println("MaxBet Info - siteMaxBet: " + maxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(evo.getTransaction().getAmount() > finalMaxBet) { + System.out.println("Over bet money - finalMaxBet: " + finalMaxBet); + evoResponse.setBalance(null); + evoResponse.fail("INSUFFICIENT_FUNDS3"); + return evoResponse; + } + + + int fatErrCnt = siteService.getFinalErr(evo.getTransaction().getRefId()); + + if(fatErrCnt > 0) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + + HttpHeaders headerb = new HttpHeaders(); + headerb.add("Content-Type", "application/json"); + headerb.add("Accept", "application/json"); + + ResponseEntity responseEntityb = null; + try { + responseEntityb = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/balance") + .headers(h -> h.addAll(headerb)) + .bodyValue(member.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error("debit(fatErrCnt)::HttpClientErrorException : " + e.getMessage()); + log.error("debit(fatErrCnt)::status code : " + e.getStatusCode().value()); + log.error("debit(fatErrCnt)::response body : " + e.getResponseBodyAsString()); + evoResponse.fail(); + return evoResponse; + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error("debit(fatErrCnt)::ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error("debit(fatErrCnt)::SocketTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("debit(fatErrCnt)::InterruptedException::" + rae.getMessage()); + } + log.error("debit(fatErrCnt)::WebClientRequestException : " + rae.getMessage()); + evoResponse.fail(); + return evoResponse; + } + + if(responseEntityb != null && responseEntityb.getStatusCode() == HttpStatus.OK) { + log.info("status code : {}", responseEntityb.getStatusCode()); + log.info("body: {}", responseEntityb.getBody()); + + JSONObject resDatab = new JSONObject(responseEntityb.getBody()); + + evoResponse.setBalance(resDatab.getDouble("balance")); + evoResponse.fail("FINAL_ERROR_ACTION_FAILED"); + return evoResponse; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", siteId+evo.getTransaction().getId()); + tranParam.put("refId", siteId+evo.getTransaction().getRefId()); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", siteApiInfo.get("memberIdx")); + tranParam.put("memberId", memberId); + tranParam.put("vendorIdx", 1); + tranParam.put("vendorCode", "evolution"); + tranParam.put("vendorTranKey", evo.getTransaction().getId()); + tranParam.put("gameIdx", evo.getGame().getType()); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", evo.getTransaction().getAmount()); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("completed", false); + + try { + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + PlayParam param = new PlayParam(); + param.setVendorKey("C01"); + commonParam.setPlayParam(param); + HashMap venderInfo = siteService.getVenderApiInfo(commonParam); + tranParam.put("vendorApiId", venderInfo.get("vendorApiId").toString()); + }catch(Exception e) {System.out.println("VI ERR:" + e.toString());} + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + + debit.put("betId", siteId+evo.getTransaction().getRefId()); + debit.put("tranId", siteId+evo.getTransaction().getId()); + debit.put("userId", memberId); + debit.put("vendorIdx", 1); + debit.put("vendorKey","C01"); + debit.put("vendor", "evolution"); + debit.put("gameIdx", 1); + debit.put("gameKey",evo.getGame().getType()); + debit.put("tranType", "debit"); + debit.put("debit", evo.getTransaction().getAmount()); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus",0); + + log.info("send code : {}", debit.toString()); + + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/changebalance") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error("debit::HttpClientErrorException : " + e.getMessage()); + log.error("debit::status code : " + e.getStatusCode().value()); + log.error("debit::response body : " + e.getResponseBodyAsString()); + evoResponse.fail(); + return evoResponse; + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error("debit::ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error("debit::SocketTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("debit::InterruptedException::" + rae.getMessage()); + } + log.error("debit::WebClientRequestException : " + rae.getMessage()); + evoResponse.fail(); + return evoResponse; + } + + if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { + log.info("status code : {}", responseEntity.getStatusCode()); + log.info("bodyD: {}", responseEntity.getBody()); + + JSONObject resData = new JSONObject(responseEntity.getBody()); + log.info("result_Dcode: {}", resData.getInt("result_code")); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + log.info("result_Dcode: {}2"); + evoResponse.setUuid(evo.getUuid()); + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.setBonus(0.0); + + evoResponse.success(); + }else if(resData.getLong("result_code") == 80) { + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.fail("INSUFFICIENT_FUNDS"); + + }else if(resData.getLong("result_code") == 98) { + log.info("result_Dcode 98: {}1"); + evoResponse.fail("BET_ALREADY_EXIST"); + evoResponse.setBalance( resData.getDouble("balance")); + }else { + evoResponse.fail(); + } + } else { + log.error("debit::Unexpected response status code"); + evoResponse.fail(); + } + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + + @ResponseBody + @RequestMapping(value={"/credit","/cancel"}) + public EvoResponse credit (HttpServletRequest request, @RequestBody EvolutionVo evo) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + + try { + log.debug(evo.toString()); + //사이트정보 + HashMap sParam = new HashMap(); + + sParam.put("siteIdx",Integer.parseInt(evo.getUserId().substring(0, 3), 16)); + sParam.put("memberId", evo.getUserId().substring(3, evo.getUserId().length())); + String memberId =evo.getUserId().substring(3, evo.getUserId().length()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId",siteId+evo.getTransaction().getId()); + tranParam.put("refId", siteId+evo.getTransaction().getRefId()); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", siteApiInfo.get("memberIdx")); + tranParam.put("memberId", memberId); + tranParam.put("vendorIdx", 1); + tranParam.put("vendorCode", "evolution"); + tranParam.put("vendorTranKey", evo.getTransaction().getId()); + tranParam.put("gameIdx", evo.getGame().getType()); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", evo.getTransaction().getAmount()); + + tranParam.put("completed", true); + + tranParam.put("isCancel", "N"); + + if(request.getRequestURI().indexOf("cancel") > 0 ) { + tranParam.put("isCancel", "Y"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + + + try { + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + PlayParam param = new PlayParam(); + param.setVendorKey("C01"); + commonParam.setPlayParam(param); + HashMap venderInfo = siteService.getVenderApiInfo(commonParam); + tranParam.put("vendorApiId", venderInfo.get("vendorApiId").toString()); + }catch(Exception e) {System.out.println("VI ERR:" + e.toString());} + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + + debit.put("betId", siteId+evo.getTransaction().getRefId()); + debit.put("tranId", siteId+evo.getTransaction().getId()); + debit.put("userId", memberId); + debit.put("vendorIdx", 1); + debit.put("vendorKey","C01"); + debit.put("vendor", "evolution"); + debit.put("gameIdx", 1); + debit.put("gameKey",evo.getGame().getType()); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", evo.getTransaction().getAmount()); + debit.put("isCancel",0); + debit.put("isBonus",0); + + if(request.getRequestURI().indexOf("cancel") > 0 ) { + debit.put("isCancel",1); + } + + log.info("send code : {}", debit.toString()); + + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/changebalance") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error("credit::HttpClientErrorException : " + e.getMessage()); + log.error("credit::status code : " + e.getStatusCode().value()); + log.error("credit::response body : " + e.getResponseBodyAsString()); + evoResponse.fail(); + return evoResponse; + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error("credit::ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error("credit::SocketTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("credit::InterruptedException::" + rae.getMessage()); + } + log.error("credit::WebClientRequestException : " + rae.getMessage()); + evoResponse.fail(); + return evoResponse; + } + + if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { + log.info("status code : {}", responseEntity.getStatusCode()); + log.info("bodyC: {}", responseEntity.getBody()); + + JSONObject resData = new JSONObject(responseEntity.getBody()); + log.info("result_DCcode: {}", resData.getInt("result_code")); + if(resData.getLong("result_code") == 0) { + log.info("siteService.updateCbApi(tranParam)"); + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + + evoResponse.setUuid(evo.getUuid()); + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.setBonus(0.0); + evoResponse.success(); + }else if(resData.getLong("result_code") == 99) { + + if(request.getRequestURI().indexOf("cancel") > 0 ) { + + HashMap eParam = new HashMap(); + eParam.put("betId", evo.getTransaction().getRefId()); + eParam.put("errorType", "FATAL_ERROR"); + + siteService.insertError(eParam); + } + + evoResponse.fail("BET_DOES_NOT_EXIST"); + evoResponse.setBalance( resData.getDouble("balance")); + + }else if(resData.getLong("result_code") == 98) { + evoResponse.fail("BET_ALREADY_SETTLED"); + evoResponse.setBalance( resData.getDouble("balance")); + }else { + evoResponse.fail(); + } + } else { + log.error("credit::Unexpected response status code"); + evoResponse.fail(); + } + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + + + @ResponseBody + @RequestMapping(value={"/promo_payout"}) + public EvoResponse promo_payout (HttpServletRequest request, @RequestBody EvolutionVo evo) throws Exception { + EvoResponse evoResponse = new EvoResponse(); + + try { + log.debug(evo.toString()); + //사이트정보 + HashMap sParam = new HashMap(); + String[] usrinfo = evo.getUserId().split("_"); + + sParam.put("siteIdx",Integer.parseInt(evo.getUserId().substring(0, 3), 16)); + sParam.put("memberId", evo.getUserId().substring(3, evo.getUserId().length())); + String memberId =evo.getUserId().substring(3, evo.getUserId().length()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId",siteId+evo.getPromoTransaction().getId()); + tranParam.put("refId", siteId+evo.getPromoTransaction().getId()); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", siteApiInfo.get("memberIdx")); + tranParam.put("memberId", memberId); + tranParam.put("vendorIdx", 1); + tranParam.put("vendorCode", "evolution"); + tranParam.put("vendorTranKey", evo.getPromoTransaction().getId()); + tranParam.put("gameIdx", evo.getPromoTransaction().getType()); + tranParam.put("tranType", "promo"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", evo.getPromoTransaction().getAmount()); + + tranParam.put("isCancel", "N"); + + if(request.getRequestURI().indexOf("cancel") > 0 ) { + tranParam.put("isCancel", "Y"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + + tranParam.put("completed", true); + try { + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + PlayParam param = new PlayParam(); + param.setVendorKey("C01"); + commonParam.setPlayParam(param); + HashMap venderInfo = siteService.getVenderApiInfo(commonParam); + tranParam.put("vendorApiId", venderInfo.get("vendorApiId").toString()); + }catch(Exception e) {System.out.println("VI ERR:" + e.toString());} + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + + debit.put("betId", siteId+evo.getPromoTransaction().getId()); + debit.put("tranId", siteId+evo.getPromoTransaction().getId()); + debit.put("userId", memberId); + debit.put("vendorIdx", 1); + debit.put("vendorKey","C01"); + debit.put("vendor","evolution"); + debit.put("gameIdx", 1); + debit.put("gameKey",evo.getPromoTransaction().getType()); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", evo.getPromoTransaction().getAmount()); + debit.put("isCancel",0); + debit.put("isBonus",1); + + log.info("send code : {}", debit.toString()); + + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/changebalance") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + } catch(WebClientResponseException e) { + log.error("promo_payout::HttpClientErrorException : " + e.getMessage()); + log.error("promo_payout::status code : " + e.getStatusCode().value()); + log.error("promo_payout::response body : " + e.getResponseBodyAsString()); + evoResponse.fail(); + return evoResponse; + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error("promo_payout::ConnectTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error("promo_payout::SocketTimeoutException::" + rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("promo_payout::InterruptedException::" + rae.getMessage()); + } + log.error("promo_payout::WebClientRequestException : " + rae.getMessage()); + evoResponse.fail(); + return evoResponse; + } + + if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { + log.info("status code : {}", responseEntity.getStatusCode()); + log.info("bodyC: {}", responseEntity.getBody()); + + JSONObject resData = new JSONObject(responseEntity.getBody()); + log.info("result_DCcode: {}", resData.getInt("result_code")); + if(resData.getLong("result_code") == 0) { + log.info("siteService.updateCbApi(tranParam)"); + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + + evoResponse.setUuid(evo.getUuid()); + evoResponse.setBalance( resData.getDouble("balance")); + evoResponse.setBonus(0.0); + evoResponse.success(); + }else if(resData.getLong("result_code") == 99) { + evoResponse.fail("BET_DOES_NOT_EXIST"); + evoResponse.setBalance( resData.getDouble("balance")); + + }else if(resData.getLong("result_code") == 98) { + evoResponse.fail("BET_ALREADY_SETTLED"); + evoResponse.setBalance( resData.getDouble("balance")); + + }else if(resData.getLong("result_code") == 70) { + evoResponse.fail("BET_ALREADY_SETTLED"); + evoResponse.setBalance( resData.getDouble("balance")); + + }else { + evoResponse.fail(); + } + } else { + log.error("promo_payout::Unexpected response status code"); + evoResponse.fail(); + } + + } catch (Exception e) { + log.info(e.toString()); + e.printStackTrace(); + evoResponse.fail(); + } + + return evoResponse; + } + + + + private String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + + } + +} + diff --git a/src/main/java/com/bb/front/CallBackBombController.java b/src/main/java/com/bb/front/CallBackBombController.java new file mode 100644 index 0000000..a9af7ad --- /dev/null +++ b/src/main/java/com/bb/front/CallBackBombController.java @@ -0,0 +1,559 @@ +package com.bb.front; + +import java.text.SimpleDateFormat; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.bb.jwt.JwtManager; +import com.bb.model.BombAuthVO; +import com.bb.model.BombReponseVo; +import com.bb.model.CommonParam; +import com.bb.model.Member; +import com.bb.model.PlayParam; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; +import com.bb.util.AesUtil; +import com.google.gson.Gson; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@RestController +@Slf4j +@RequestMapping("/api/cb/pbomb") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackBombController { + + // https://oprvender.com/api/cb/live + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @ResponseBody + @RequestMapping(value = "/loginAuth", method = RequestMethod.POST) + public BombReponseVo minegameLoginAuth(@RequestBody BombAuthVO bombAuthVO, HttpServletRequest request) + throws Exception { + BombReponseVo bombReponseVo = new BombReponseVo(); + log.info("#bomb::loginAuth::" + "bombAuthVO" + bombAuthVO.toString()); + Gson gson = new Gson(); + bombAuthVO = gson.fromJson(AesUtil.getAES128_Decode(bombAuthVO.getEp()), BombAuthVO.class); + log.info("#bomb::loginAuth::" + "dec bombAuthVO" + bombAuthVO.toString()); + + HashMap memParam = new HashMap(); + memParam.put("bombAccId", bombAuthVO.getLoginToken()); + + Member member = siteService.getMemByBombAccId(memParam); + + try { + String accID = bombAuthVO.getAccID(); + String token = bombAuthVO.getLoginToken(); + + log.info("#bomb::loginAuth::" + accID); + log.info("#bomb::loginAuth::" + token); + log.info("#bomb::loginAuth::" + member); + + if (member.getBombAccId().equals(token)) { + + log.info("#bomb::loginAuth::" + 1111111); + + bombReponseVo.setAccId(accID); + bombReponseVo.setNickName(member.getMemberNick()); + bombReponseVo.setCode(0); + bombReponseVo.setDemo(false); + + // 밸런스 가져오기 + + HashMap sParam = new HashMap(); + // String[] usrinfo = accID.split("_"); + + // String memberId =""; + // String siteId =""; + sParam.put("siteIdx", Integer.parseInt(accID.substring(0, 3), 16)); + sParam.put("memberId", accID.substring(3, accID.length())); + String memberId = accID.substring(3, accID.length()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + + JSONObject parammember = new JSONObject(); + parammember.put("userId", member.getMemberId()); + + // 밸런스가져오기 + JSONObject resData = callBackService.getBalance(siteApiInfo, parammember); + if(resData == null) { + log.info("#bomb::debit::" + "balance callback error"); + bombReponseVo.setCode(-1); + return bombReponseVo; + } + + // JSONObject resData = new JSONObject(responseEntity.getBody()); + + if (resData.getInt("result_code") == 0) { + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + bombReponseVo.setBalance("" + (resData.getDouble("balance") * 0.01)); + } else { + bombReponseVo.setBalance("" + resData.getDouble("balance")); + } + } else { + bombReponseVo.fail(); + } + + } else { + bombReponseVo.fail(); + } + } catch (Exception e) { + bombReponseVo.fail(); + } + + log.info("#bomb::loginAuth::" + "BOMB AUTH RESbody: {}", bombReponseVo); + return bombReponseVo; + } + + @ResponseBody + @RequestMapping(value = "/bet", method = RequestMethod.POST) + public BombReponseVo minegameEncBet(@RequestBody BombAuthVO bombAuthVO, HttpServletRequest request) + throws Exception { + BombReponseVo bombReponseVo = new BombReponseVo(); + + Gson gson = new Gson(); + bombAuthVO = gson.fromJson(AesUtil.getAES128_Decode(bombAuthVO.getEp()), BombAuthVO.class); + + JSONObject obj = new JSONObject(); + + HashMap memParam = new HashMap(); + memParam.put("bombAccId", bombAuthVO.getLoginToken()); + Member member = siteService.getMemByBombAccId(memParam); + + try { + String accID = bombAuthVO.getAccID(); + String userID = bombAuthVO.getUserID(); + String token = bombAuthVO.getLoginToken(); + String transferId = bombAuthVO.getTransferId(); + Integer roomNo = bombAuthVO.getRoomNo(); + double betAmount = (double) bombAuthVO.getAmount(); + + log.info("#bomb::debit::" + "bombgame bet accID : " + accID); + log.info("#bomb::debit::" + "bombgame bet userID : " + userID); + log.info("#bomb::debit::" + "bombgame bet token : " + token); + log.info("#bomb::debit::" + "bombgame bet roomNo : " + roomNo); + log.info("#bomb::debit::" + "bombgame bet transferId : " + transferId); + log.info("#bomb::debit::" + "bombgame bet betAmount : " + betAmount); + + // 밸런스 가져오기 + + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(accID.substring(0, 3), 16)); + sParam.put("memberId", accID.substring(3, accID.length())); + String memberId = accID.substring(3, accID.length()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + + // 사이트에 크레딧이 없을경우 에러 보냄 베팅막음 + long targetSiteCredit = siteService.getSiteCredit(siteId); + if (targetSiteCredit < betAmount) { + log.info("#bomb::debit::" + "no siteCredit"); + bombReponseVo.setCode(-1); + return bombReponseVo; + } + + // 최대베팅액 (userMaxBet 우선 적용) + sParam.put("vendorIdx", 5); + long maxBet = siteService.getSiteMaxBet(sParam); + + // userMaxBet 조회 + long userMaxBet = 0; + Long userMaxBetObj = siteService.getUserMaxBet(sParam); + if(userMaxBetObj != null) { + userMaxBet = userMaxBetObj; + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : maxBet; + log.info("#bomb::debit::MaxBet Info - siteMaxBet: " + maxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if (betAmount > finalMaxBet) { + log.info("#bomb::debit::" + "Over bet money - finalMaxBet: " + finalMaxBet); + bombReponseVo.setCode(-1); + return bombReponseVo; + } + + JSONObject parammember = new JSONObject(); + parammember.put("userId", member.getMemberId()); + + log.info("#bomb::debit::" + siteApiInfo); + JSONObject resData2 = callBackService.getBalance(siteApiInfo, parammember); + if(resData2 == null) { + log.info("#bomb::debit::" + "balance callback error"); + bombReponseVo.setCode(-1); + return bombReponseVo; + } + + if (resData2.getInt("result_code") == 0) { + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + bombReponseVo.setBalance("" + (resData2.getDouble("balance") * 0.01)); + } else { + bombReponseVo.setBalance("" + resData2.getDouble("balance")); + } + + } else { + bombReponseVo.fail(); + } + + if (betAmount < 0) { + + bombReponseVo.setCode(-99); + + } else { + if (member.getBombAccId().equals(token)) { + double curCashAmount = resData2.getDouble("balance"); + + if (curCashAmount >= betAmount) { + + // betAmount 만큼 cashAmt 차감 + // memberService.updateMineMemCashAmt(bombAuthVO); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", siteId + "D" + bombAuthVO.getTransferId()); + tranParam.put("refId", siteId + bombAuthVO.getTransferId()); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + tranParam.put("siteId", siteId); + + tranParam.put("memberIdx", siteApiInfo.get("memberIdx")); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "MINIGAME"); + tranParam.put("vendorIdx", 5); + tranParam.put("vendorCode", "tpabomb"); + tranParam.put("vendorTranKey", bombAuthVO.getTransferId()); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""+roomNo); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", betAmount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("completed", false); + + try { + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + PlayParam param = new PlayParam(); + param.setVendorKey("M01"); + commonParam.setPlayParam(param); + HashMap venderInfo = siteService.getVenderApiInfo(commonParam); + tranParam.put("vendorApiId", venderInfo.get("vendorApiId").toString()); + } catch (Exception e) { + log.info("#bomb::debit::" + "VI ERR:" + e.toString()); + } + siteService.commonBetinsert(tranParam); + + + JSONObject debit = new JSONObject(); + debit.put("betId", siteId + bombAuthVO.getTransferId()); + debit.put("tranId", siteId + "D" + bombAuthVO.getTransferId()); + debit.put("userId", memberId); + debit.put("vendorIdx", 5); + debit.put("vendorKey", "M01"); + debit.put("vendor", "tpabomb"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""+roomNo); + debit.put("gameId", ""); + debit.put("gameType", ""); + debit.put("tranType", "debit"); + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + Double betAmountD = betAmount * 100; + debit.put("debit", betAmountD.longValue()); + } else { + debit.put("debit", betAmount); + } + + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long nDate = System.currentTimeMillis(); + String betDateTimeStr = sdf.format(nDate); + debit.put("requestAt", betDateTimeStr); + + JSONObject resData = callBackService.changeBalance("#bomb::", siteApiInfo, debit); + + log.info("#bomb::debit::" + "result_Dcode: {}", resData.getInt("result_code")); + + if (resData.getLong("result_code") == 0) { + bombReponseVo.setCode(0); + bombReponseVo.setBalance("" + resData.getDouble("balance")); + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + bombReponseVo.setBalance("" + (resData.getDouble("balance") * 0.01)); + } else { + bombReponseVo.setBalance("" + resData.getDouble("balance")); + } + + tranParam.put("balance", bombReponseVo.getBalance()); + int res = siteService.updateCbApi(tranParam); + log.info("#bomb::debit::" + "result_Dcode: {}2"); + + } else if (resData.getLong("result_code") == 80) { + bombReponseVo.setCode(-1); + + } else if (resData.getLong("result_code") == 98) { + log.info("#bomb::debit::" + "result_Dcode 98: {}1"); + bombReponseVo.setCode(-1); + } else { + bombReponseVo.setCode(-1); + } + + } else { + bombReponseVo.setCode(-1); + obj.put("code", -1); + log.info("#bomb::debit::" + "bombgame info curr cash : " + curCashAmount + ", reqest : " + + betAmount); + } + + } else { + bombReponseVo.setCode(-99); + log.info("#bomb::debit::" + "bombgame info token : " + member.getBombAccId() + ", reqest : " + + token); + } + } + + } catch (Exception e) { + bombReponseVo.setCode(-1); + log.info("#bomb::debit::" + e); + } + + return bombReponseVo; + } + + @ResponseBody + @RequestMapping(value = { "/payout", "/end" }, method = RequestMethod.POST) + public BombReponseVo minegameEncCredit(@RequestBody BombAuthVO bombAuthVO, HttpServletRequest request) + throws Exception { + BombReponseVo bombReponseVo = new BombReponseVo(); + log.info("#bomb::credit::" + "bombAuthVO" + bombAuthVO.toString()); + Gson gson = new Gson(); + bombAuthVO = gson.fromJson(AesUtil.getAES128_Decode(bombAuthVO.getEp()), BombAuthVO.class); + + JSONObject obj = new JSONObject(); + + HashMap memParam = new HashMap(); + memParam.put("bombAccId", bombAuthVO.getLoginToken()); + Member member = siteService.getMemByBombAccId(memParam); + + try { + String accID = bombAuthVO.getAccID(); + String userID = bombAuthVO.getUserID(); + String token = bombAuthVO.getLoginToken(); + String transferId = bombAuthVO.getTransferId(); + Integer roomNo = bombAuthVO.getRoomNo(); + double betAmount = (double) bombAuthVO.getAmount(); + + String bombs = bombAuthVO.getBombs(); + String play = bombAuthVO.getPlay(); + String endDate = bombAuthVO.getEndDate(); + + log.info("#bomb::credit::" + "bombgame bet accID : " + accID); + log.info("#bomb::credit::" + "bombgame bet userID : " + userID); + log.info("#bomb::credit::" + "bombgame bet token : " + token); + log.info("#bomb::credit::" + "bombgame bet roomNo : " + roomNo); + log.info("#bomb::credit::" + "bombgame bet transferId : " + transferId); + log.info("#bomb::credit::" + "bombgame bet betAmount : " + betAmount); + + log.info("#bomb::credit::" + "bombgame bet bombs : " + bombs); + log.info("#bomb::credit::" + "bombgame bet play : " + play); + + // 밸런스 가져오기 + + HashMap sParam = new HashMap(); + sParam.put("siteIdx", Integer.parseInt(accID.substring(0, 3), 16)); + sParam.put("memberId", accID.substring(3, accID.length())); + String memberId = accID.substring(3, accID.length()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + + JSONObject parammember = new JSONObject(); + parammember.put("userId", member.getMemberId()); + + JSONObject resData2 = callBackService.getBalance(siteApiInfo, parammember); + if(resData2 == null) { + log.info("#bomb::credit::" + "balance callback error"); + bombReponseVo.setCode(-1); + return bombReponseVo; + } + + if (resData2.getInt("result_code") == 0) { + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + bombReponseVo.setBalance("" + (resData2.getDouble("balance") * 0.01)); + } else { + bombReponseVo.setBalance("" + resData2.getDouble("balance")); + } + + } else { + bombReponseVo.fail(); + } + + if (betAmount < 0) { + + bombReponseVo.setCode(-99); + + } else { + if (member.getBombAccId().equals(token)) { + double curCashAmount = resData2.getDouble("balance"); + + if (betAmount >= 0) { + + // betAmount 만큼 cashAmt 차감 + // memberService.updateMineMemCashAmt(bombAuthVO); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", siteId + "C" + bombAuthVO.getTransferId()); + tranParam.put("refId", siteId + bombAuthVO.getTransferId()); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + tranParam.put("siteId", siteId); + + tranParam.put("memberIdx", siteApiInfo.get("memberIdx")); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "MINIGAME"); + tranParam.put("vendorIdx", 5); + tranParam.put("vendorCode", "tpabomb"); + tranParam.put("vendorTranKey", bombAuthVO.getTransferId()); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""+roomNo); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", betAmount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + + tranParam.put("completed", true); + + // 게임별로 상세내역 넣어주기 있을 경우에만 + JSONObject detail = new JSONObject(); + + detail.put("roomNo ", roomNo); + detail.put("play", play); + detail.put("bombs", bombs); + tranParam.put("detail", detail.toString()); + + try { + CommonParam commonParam = new CommonParam(); + commonParam.setSiteIdx(Integer.parseInt(siteApiInfo.get("siteIdx").toString())); + PlayParam param = new PlayParam(); + param.setVendorKey("M01"); + commonParam.setPlayParam(param); + HashMap venderInfo = siteService.getVenderApiInfo(commonParam); + tranParam.put("vendorApiId", venderInfo.get("vendorApiId").toString()); + } catch (Exception e) { + log.info("#bomb::credit::" + "VI ERR:" + e.toString()); + } + siteService.commonBetinsert(tranParam); + JSONObject debit = new JSONObject(); + + debit.put("betId", siteId + bombAuthVO.getTransferId()); + debit.put("tranId", siteId + "C" + bombAuthVO.getTransferId()); + debit.put("userId", memberId); + debit.put("vendorIdx", 5); + debit.put("vendorKey", "M01"); + debit.put("vendor", "tpabomb"); + debit.put("gameIdx", 1); + debit.put("gameKey", roomNo); + debit.put("gameId", ""); + debit.put("gameType", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + Double betAmountD = betAmount * 100; + debit.put("credit", betAmountD.longValue()); + } else { + + debit.put("credit", betAmount); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long nDate = System.currentTimeMillis(); + String betDateTimeStr = sdf.format(nDate); + debit.put("requestAt", betDateTimeStr); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("detail", detail); + + + + JSONObject resData = callBackService.changeBalance("#bomb::", siteApiInfo, debit); + log.info("#bomb::credit::" + "result_Dcode: {}", resData.getInt("result_code")); + + if (resData.getLong("result_code") == 0) { + + bombReponseVo.setCode(0); + + if ("Y".equals(siteApiInfo.getOrDefault("bombDecYn", "").toString())) { + bombReponseVo.setBalance("" + (resData.getDouble("balance") * 0.01)); + } else { + bombReponseVo.setBalance("" + resData.getDouble("balance")); + } + + tranParam.put("balance", bombReponseVo.getBalance()); + int res = siteService.updateCbApi(tranParam); + log.info("#bomb::debit::" + "result_Dcode: {}2"); + + } else if (resData.getLong("result_code") == 80) { + bombReponseVo.setCode(-1); + + } else if (resData.getLong("result_code") == 98) { + log.info("#bomb::credit::" + "result_Dcode 98: {}1"); + bombReponseVo.setCode(-1); + } else { + bombReponseVo.setCode(-1); + } + + } else { + bombReponseVo.setCode(-1); + obj.put("code", -1); + log.info("#bomb::credit::" + "bombgame info curr cash : " + curCashAmount + ", reqest : " + + betAmount); + } + + } else { + bombReponseVo.setCode(-99); + log.info("#bomb::credit::" + "bombgame info token : " + member.getBombAccId() + ", reqest : " + + token); + } + } + + } catch (Exception e) { + bombReponseVo.setCode(-1); + log.info("#bomb::credit::" + e); + } + + return bombReponseVo; + } + +} diff --git a/src/main/java/com/bb/front/CallBackBombDemoController.java b/src/main/java/com/bb/front/CallBackBombDemoController.java new file mode 100644 index 0000000..31bc0a0 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackBombDemoController.java @@ -0,0 +1,159 @@ +package com.bb.front; + +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.bb.jwt.JwtManager; +import com.bb.model.BombAuthVO; +import com.bb.model.BombReponseVo; +import com.bb.service.SiteService; +import com.bb.util.AesUtil; +import com.google.gson.Gson; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@RestController +@Slf4j +@RequestMapping("/api/cb/demopbomb") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackBombDemoController { + + // https://oprvender.com/api/cb/live + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + + + + @ResponseBody + @RequestMapping(value="/loginAuth", method=RequestMethod.POST) + public BombReponseVo minegameLoginAuth(@RequestBody BombAuthVO bombAuthVO, HttpServletRequest request) throws Exception { + BombReponseVo bombReponseVo = new BombReponseVo(); + System.out.println("bombAuthVO" + bombAuthVO.toString()); + Gson gson = new Gson(); + bombAuthVO = gson.fromJson(AesUtil.getAES128_Decode(bombAuthVO.getEp()), BombAuthVO.class); + System.out.println("dec bombAuthVO" + bombAuthVO.toString()); + + + HashMap memParam = new HashMap(); + memParam.put("bombAccId", bombAuthVO.getLoginToken()); + HashMap demomember = siteService.getDemoByBombAccId(memParam); + + try { + String accID = bombAuthVO.getAccID(); + String token= bombAuthVO.getLoginToken(); + + + + if(demomember.get("bombAccId").toString().equals(token)) { + + + System.out.println(1111111); + + + bombReponseVo.setAccId(accID); + bombReponseVo.setNickName( demomember.get("bombAccId").toString()); + bombReponseVo.setCode(0); + bombReponseVo.setBalance(""+(Double.parseDouble(demomember.get("creditAmt").toString()))); + bombReponseVo.setDemo(true); + + + + } else { + bombReponseVo.fail(); + } + }catch(Exception e) { + bombReponseVo.fail(); + } + + log.info("BOMB AUTH RESbody: {}", bombReponseVo); + return bombReponseVo; + } + + + + + @ResponseBody + @RequestMapping(value="/bet", method=RequestMethod.POST) + public BombReponseVo minegameEncBet(@RequestBody BombAuthVO bombAuthVO, HttpServletRequest request) throws Exception { + BombReponseVo bombReponseVo = new BombReponseVo(); + + Gson gson = new Gson(); + bombAuthVO = gson.fromJson(AesUtil.getAES128_Decode(bombAuthVO.getEp()), BombAuthVO.class); + + JSONObject obj = new JSONObject(); + + + + + HashMap memParam = new HashMap(); + memParam.put("bombAccId", bombAuthVO.getLoginToken()); + HashMap demomember = siteService.getDemoByBombAccId(memParam); + double balance = Double.parseDouble(demomember.get("creditAmt").toString()); + double betAmount = (double)bombAuthVO.getAmount(); + log.warn("DEMO BALANCE memINFO {} {} ", demomember.toString(), betAmount); + if(balance < balance - betAmount) { + + bombReponseVo.setCode(-99); + return bombReponseVo; + } else { + bombReponseVo.setBalance("" +( balance - betAmount)); + memParam.put("creditAmt", "" +( balance - betAmount)); + siteService.updateDemoUSer(memParam); + } + log.warn("DEMO BALANCE memParam {}", memParam.toString()); + + return bombReponseVo; + } + + + @ResponseBody + @RequestMapping(value={"/payout", "/end"}, method=RequestMethod.POST) + public BombReponseVo minegameEncCredit(@RequestBody BombAuthVO bombAuthVO, HttpServletRequest request) throws Exception { + BombReponseVo bombReponseVo = new BombReponseVo(); + + Gson gson = new Gson(); + bombAuthVO = gson.fromJson(AesUtil.getAES128_Decode(bombAuthVO.getEp()), BombAuthVO.class); + + JSONObject obj = new JSONObject(); + + + + + HashMap memParam = new HashMap(); + memParam.put("bombAccId", bombAuthVO.getLoginToken()); + HashMap demomember = siteService.getDemoByBombAccId(memParam); + + double balance = Double.parseDouble(demomember.get("creditAmt").toString()); + double betAmount = (double)bombAuthVO.getAmount(); + log.warn("DEMO BALANCE memINFO {} {} ", demomember.toString(), betAmount); + bombReponseVo.setBalance("" +( balance + betAmount)); + memParam.put("creditAmt", "" +( balance + betAmount)); + siteService.updateDemoUSer(memParam); + log.warn("DEMO BALANCE memParam {}", memParam.toString()); + return bombReponseVo; + + + + } + + + + +} diff --git a/src/main/java/com/bb/front/CallBackBtiController.java b/src/main/java/com/bb/front/CallBackBtiController.java new file mode 100644 index 0000000..da6f0e9 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackBtiController.java @@ -0,0 +1,1682 @@ +package com.bb.front; + +import java.math.BigDecimal; +import java.net.URLDecoder; +import java.text.DecimalFormat; +import java.util.Date; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import org.json.XML; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +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.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.jwt.JwtManager; +import com.bb.model.Member; +import com.bb.service.SiteService; +import com.bb.service.SplusService; +import com.bb.util.StringUtils.StringBuilderPlus; +import com.google.gson.Gson; + +import io.jsonwebtoken.ExpiredJwtException; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@Controller +@RequestMapping("/api/cb/bti") +@RequiredArgsConstructor +public class CallBackBtiController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + SplusService splusService; + + @Autowired + WebClient webClient; + + @CrossOrigin(origins = "*") + @GetMapping(value = "/js/refresh") + public @ResponseBody JSONObject refreshToken(HttpServletRequest request, ModelMap model) throws Exception { + log.info("#-bti::refreshToken::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::refreshToken::" + name + "=" + value); + } + log.info("#-bti::refreshToken::___________________Request____________________________"); + + StringBuilderPlus sp = new StringBuilderPlus(); + JSONObject resData = new JSONObject(); + + try { + String base64Token = URLDecoder.decode(request.getParameter("token"), "UTF-8"); + Map authParam = new HashMap(); + + if ("F0IjoxNTE2MjM5MDIyfQ".equals(base64Token)) { + authParam.put("memberId", "007maker1"); + authParam.put("siteId", "peanuts9"); + } else if ("F0IjoxNTE1MjM3MDIyfQ".equals(base64Token)) { + authParam.put("memberId", "00Dmat02"); + authParam.put("siteId", "aplus1"); + } else { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(base64Token); + authParam.put("memberId", tokenInfo.getMid()); + authParam.put("siteId", tokenInfo.getSid()); + } + + // 회사정보 + HashMap siteApiInfo = siteService.getSiteApiInfoByToken(authParam); + log.info("#-bti::refreshToken::::siteApiInfo {}", siteApiInfo); + + if ("F0IjoxNTE2MjM5MDIyfQ".equals(base64Token)) { + authParam.put("siteIdx", 87); + } else if ("F0IjoxNTE1MjM3MDIyfQ".equals(base64Token)) { + authParam.put("siteIdx", 12); + } else { + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + } + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + int res = siteService.getSplusToken(base64Token); + + DecimalFormat formatter = new DecimalFormat("0.00"); + double balance = getBalnce("#-bti::refreshToken::", siteApiInfo.get("siteCbUrl").toString(), + authParam.get("memberId").toString()); + + resData.put("status", "success"); + resData.put("balance", "" + formatter.format(new BigDecimal(balance))); + + siteService.insertToken(base64Token); + + } catch (Exception e) { + log.error("#-bti::refreshToken::::Exception :" + e.getMessage()); + resData.put("status", "failure"); + resData.put("balance", "0.00"); + } + + return resData; + } + + @GetMapping(value = "/ValidateToken", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String validateToken(HttpServletRequest request, ModelMap model) throws Exception { + log.info("#-bti::validateToken::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::validateToken::" + name + "=" + value); + } + log.info("#-bti::validateToken::___________________Request____________________________"); + + StringBuilderPlus sp = new StringBuilderPlus(); + String base64Token = URLDecoder.decode(request.getParameter("auth_token"), "UTF-8"); + // JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(base64Token); + + DecimalFormat formatter = new DecimalFormat("0.00"); + String logUsername = ""; + Map authParam = new HashMap(); + JwtManager.TokenInfo tokenInfo = null; + try { + tokenInfo = jwtManager.getTokenInfo(base64Token); + authParam.put("memberId", tokenInfo.getMid()); + authParam.put("siteId", tokenInfo.getSid()); + logUsername = tokenInfo.getMid(); + } catch (ExpiredJwtException ee) { + log.error("#-bti::validateToken::ExpiredJwtException::" + base64Token); + sp.appendLine("error_code=-3"); + sp.append("error_message=TokenNotValid"); + return sp.toString(); + } + + final String LOG_PREFIX = "#-bti::validateToken::" + logUsername + ":::"; + + // 회사정보 + HashMap siteApiInfo = siteService.getSiteApiInfoByToken(authParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX + "Not found site..."); + sp.appendLine("error_code=-2"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + log.info(LOG_PREFIX + "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + log.error(LOG_PREFIX + "Not found member..."); + sp.appendLine("error_code=-2"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } else { + log.info(LOG_PREFIX + "Callback Url : " + siteApiInfo.get("siteCbUrl") + "/balance/sportsD"); + JSONObject members = new JSONObject(); + members.put("userId", authParam.get("memberId").toString()); + + // 회원 머니 + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/balance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(members.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + if (responseEntity != null) { + log.info(LOG_PREFIX + "status code : {}", responseEntity.getStatusCode()); + log.info(LOG_PREFIX + "body: {}", responseEntity.getBody()); + } + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject(responseEntity.getBody()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=OK"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance")*0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("cust_id=" + siteApiInfo.get("siteIdxHex").toString() + member.getMemberId()); + sp.appendLine("cust_login=" + member.getMemberNick()); + sp.appendLine("city=EN"); + sp.appendLine("country=EN"); + sp.append("currency_code=MNT"); + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=0.00"); + return sp.toString(); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=0.00"); + return sp.toString(); + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception::" + e.getMessage()); + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=0.00"); + return sp.toString(); + } + } + siteService.insertToken(base64Token); + // model.put("resultStr", returnString); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); + // 활용한 응답 생성; + } + + // 베팅 예약 크레딧 차람 + @RequestMapping(value = "/reserve", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String reserve(HttpServletRequest request, @RequestBody(required = false) String parambody) + throws Exception { + log.info("#-bti::reserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::reserve::" + name + "=" + value); + } + log.info("#-bti::reserve::___________________Request____________________________"); + + HashMap splusParam = new HashMap(); + + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + String purchase_id = "null"; + String req_id = "null"; + final String LOG_PREFIX = "#-bti::reserve::" + memberId + "::" + reserve_id + "::" + purchase_id+ "::" + req_id + ":::"; + + DecimalFormat formatter = new DecimalFormat("0.00"); + Map trxParam = new HashMap(); + trxParam.put("tranType", "reserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", cust_id); + + org.json.JSONObject paramjson = new org.json.JSONObject(); + + try { + log.info(LOG_PREFIX+ "BF::parambody : "+ parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", parambody); + paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "MF::parambody {}", paramjson.toString()); + trxParam.put("data", paramjson.toString()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::002"); + log.error(LOG_PREFIX+ "error {}", e.getMessage()); + } + + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + + if (siteApiInfo == null) { + sp.appendLine("error_code=-2"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + log.error(LOG_PREFIX+ "Exception::Not found user"); + sp.appendLine("error_code=-2"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "0"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + int resCnt = splusService.getReserveCnt(trxParam); + + if(resCnt == 0) { + try { + log.info(LOG_PREFIX+ "trxParam : "+trxParam.toString()); + siteService.insertSplusTran(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "ERROR {}", e.getMessage()); + } + } + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + + if(resCnt > 0) { + log.error(LOG_PREFIX+ "reserve::중복"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + double amount = Double.parseDouble(amountStr); + + log.info(LOG_PREFIX+ "targetSiteCredit < amount {}, {}", targetSiteCredit, amount); + if (targetSiteCredit < amount && amount > 0) { + log.error(LOG_PREFIX+ "Exception::크레딧 부족"); + sp.appendLine("error_code=-4"); + sp.append("error_message=InsufficientFunds"); + return sp.toString(); + } + + if (balance < amount && amount > 0) { + log.error(LOG_PREFIX+ "Exception::유저잔액 부족"); + sp.appendLine("error_code=-4"); + sp.appendLine("error_message=InsufficientFunds"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + + // 최대베팅액 (userMaxBet 우선 적용) + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", member.getMemberId()); + sParam.put("vendorIdx", 84); + long maxBet = siteService.getSiteMaxBet(sParam); + + // userMaxBet 조회 + long userMaxBet = 0; + Long userMaxBetObj = siteService.getUserMaxBet(sParam); + if(userMaxBetObj != null) { + userMaxBet = userMaxBetObj; + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : maxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + maxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + double maxBetD = finalMaxBet; + if (amount > maxBetD) { + log.error(LOG_PREFIX+ "Exception::최대 베팅금 초과 - finalMaxBet: " + finalMaxBet); + sp.appendLine("error_code=-10"); + sp.append("error_message= max bet limit - overBet"); + return sp.toString(); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#R"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 84); + tranParam.put("vendorCode", "bti_zeno"); + tranParam.put("vendorTranKey", reserve_id + "#R"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", refId + "#R"); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 84); + debit.put("vendorKey", "SP3"); + debit.put("vendor", "bti_zeno"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameId", ""); + debit.put("gameType", ""); + debit.put("tranType", "debit"); + debit.put("debit", fakeAmount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + + HashMap detailMap = new Gson().fromJson(paramjson.toString(), HashMap.class); + debit.put("status", "bet"); + debit.put("detail", detailMap); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + if (resData.getLong("result_code") == 0) { + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + trxParam.put("cbResultCode", resData.get("result_code").toString()); + siteService.updateSplusTran(trxParam); + + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.append("trx_id=" + trxId); + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + + splusService.insertSplus(tranParam, paramjson); + + } else { + log.info(LOG_PREFIX+ "Callback Error: "+resData.toString()); + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception::" + e.getMessage()); + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + } + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + // 베팅 예약 취소 크레딧 복구 + @GetMapping(value = "/cancelreserve", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String cancelReserve(HttpServletRequest request) throws Exception { + log.info("#-bti::cancelReserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::cancelReserve::" + name + "=" + value); + } + log.info("#-bti::cancelReserve::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0.00"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + String purchase_id = "null"; + String req_id = "null"; + final String LOG_PREFIX = "#-bti::cancelReserve::" + memberId + "::" + reserve_id + "::" + purchase_id+ "::" + req_id + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "cancelReserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", customer_id); + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error:: siteApiInfo null"); + sp.appendLine("error_code=-2"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + log.error(LOG_PREFIX+ "Error:: Member null"); + sp.appendLine("error_code=-2"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "9"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + + log.info(LOG_PREFIX+ "refId : "+refId + "#R"); + double amount = siteService.getBetDepositAmt(refId + "#R"); + log.info(LOG_PREFIX+ "amount :" + amount); + trxParam.put("amount", amount); + + int resCnt = splusService.getReserveCnt(trxParam); + + if(resCnt == 0) { + try { + log.info(LOG_PREFIX+ "trxParam : "+trxParam.toString()); + siteService.insertSplusTran(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "ERROR {}", e.getMessage()); + } + } + + if(resCnt > 0) { + log.error(LOG_PREFIX+ "cancelReserve::중복"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + + if (amount == 0.0) { + log.error(LOG_PREFIX+ "Error:: amount 0"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=ReserveID not exists"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + return sp.toString(); + } + + log.info(LOG_PREFIX+ "amount:{}, balance:{}", amount, balance); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#C"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 84); + tranParam.put("vendorCode", "bti_zeno"); + tranParam.put("vendorTranKey", reserve_id + "#C"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", refId + "#C"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 84); + debit.put("vendorKey", "SP3"); + debit.put("vendor", "bti_zeno"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 1); + debit.put("isBonus", 0); + debit.put("status", "betCancel"); + debit.put("decYn", "Y"); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + ResponseEntity responseEntity = null; + org.codehaus.jettison.json.JSONObject resData = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + if (resData.getLong("result_code") == 0) { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } else { + log.error(LOG_PREFIX+ "Callback Error::" + resData.toString()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + + siteService.updateSplusTran(trxParam); + splusService.cancelSplus(tranParam); + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + log.error(LOG_PREFIX + "Callback Error::" + e.toString()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception::" + e.getMessage()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + + // 뭔지 잘 모르겠슴 + @GetMapping(value = "/commitreserve", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String commitReserve(HttpServletRequest request) throws Exception { + log.info("#-bti::commitReserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::commitReserve::" + name + "=" + value); + } + log.info("#-bti::commitReserve::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0.00"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + String req_id = "null"; + final String LOG_PREFIX = "#-bti::commitReserve::" + memberId + "::" + reserve_id + "::" + purchase_id+ "::" + req_id + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "commitReserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", customer_id); + trxParam.put("purchase_id", purchase_id); + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error:: siteApiInfo null"); + sp.appendLine("error_code=-1"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX + "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + log.error(LOG_PREFIX+ "Error:: member null"); + sp.appendLine("error_code=-1"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "1"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + double amount = siteService.getBetDepositAmt(refId + "#R"); + double gap = siteService.getBetGapAmt(purchase_id); + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + + int cmtCnt = splusService.getCommitCnt(trxParam); + if(cmtCnt > 0) { + log.error(LOG_PREFIX+ "commitReserve::중복"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + +// if (amount == 0.0) { +// log.error(LOG_PREFIX+ "Error:: amount 0"); +// sp.appendLine("error_code=-20"); +// sp.appendLine("error_message=ReserveNotFound"); +// sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); +// return sp.toString(); +// } + + if (gap > 0 && gap < amount) { + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#CR"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 84); + tranParam.put("vendorCode", "bti_zeno"); + tranParam.put("vendorTranKey", purchase_id + "#CR"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", gap); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = gap;// *100; + debit.put("betId", refId); + debit.put("tranId", refId + "#CR"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 84); + debit.put("vendorKey", "SP3"); + debit.put("vendor", "bti_zeno"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + debit.put("status", "commitReserve"); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + balance = resData.getDouble("balance");// *0.01; + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception::" + e.getMessage()); + } + + } + + trxParam.put("amount", gap); + try { + log.info(LOG_PREFIX+ "trxParam : "+trxParam.toString()); + siteService.insertSplusTran(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "ERROR {}", e.getMessage()); + } + + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + // 뭔지 잘 모르겠슴 + @RequestMapping(value = "/debitreserve", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String debitReserve(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + log.info("#-bti::debitReserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::debitReserve::" + name + "=" + value); + } + log.info("#-bti::debitReserve::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0.00"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String req_id = URLDecoder.decode(request.getParameter("req_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-bti::debitReserve::" + memberId + "::" + reserve_id + "::" + purchase_id+ "::" + req_id + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "debitReserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("req_id", req_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", customer_id); + trxParam.put("purchase_id", purchase_id); + try { + log.info(LOG_PREFIX+ "BF::parambody : "+ parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", parambody); + org.json.JSONObject paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + trxParam.put("data", paramjson.toString()); + } catch (Exception e) { + log.info(LOG_PREFIX+ "error {}", e.getMessage()); + } + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + sp.appendLine("error_code=0"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + sp.appendLine("error_code=0"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "1"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + double balance = 0.0; + try { + String cbData = siteService.getCbData(reserve_id); + org.codehaus.jettison.json.JSONObject cbDataJson = new org.codehaus.jettison.json.JSONObject(cbData); + balance = cbDataJson.getDouble("balance");// *0.01; + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::001"); + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + } + + int deReverseCnt = splusService.getDeReverseCnt(trxParam); + if(deReverseCnt > 0) { + log.error(LOG_PREFIX+ "debitReserve::중복"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + + try { + log.info(LOG_PREFIX+ "trxParam : "+trxParam.toString()); + siteService.insertSplusTran(trxParam); + siteService.updatesPurchaseId(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "ERROR {}", e.getMessage()); + } + + // 구매아이디 보내주기 + try { + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + + debit.put("betId", refId); + debit.put("purchaseId", purchase_id); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + try { + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/purchaseId") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + } + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::002"); + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + } + + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + + // 베팅 예약 크레딧 차람 + @RequestMapping(value = "/debitcustomer", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String debitCustomer(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + log.info("#-bti::debitCustomer::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::debitCustomer::" + name + "=" + value); + } + log.info("#-bti::debitCustomer::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0.00"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String req_id = URLDecoder.decode(request.getParameter("req_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + String reserveId = siteService.getRefIdByPurchaseId(purchase_id); + final String LOG_PREFIX = "#-bti::debitCustomer::" + memberId + "::" + reserveId + "::" + purchase_id+ "::" + req_id + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "debitCustomer"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserveId); + trxParam.put("req_id", req_id); + trxParam.put("purchase_id", purchase_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", cust_id); + + org.json.JSONObject paramjson = new org.json.JSONObject(); + try { + log.info(LOG_PREFIX+ "BF::parambody : "+ parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", parambody); + paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "MF::parambody {}", paramjson.toString()); + + trxParam.put("data", paramjson.toString()); + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + } catch (Exception e) { + log.info(LOG_PREFIX+ "error {}", e.getMessage()); + } + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + sp.appendLine("error_code=0"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + sp.appendLine("error_code=0"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserveId; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "3"; + trxParam.put("trxId", trxId); + trxParam.put("refId", refId + "#DC"); + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + double amount = Double.parseDouble(amountStr); + + int custCnt = splusService.getCustomerCnt(trxParam); + if(custCnt > 0) { + log.error(LOG_PREFIX+ "debitCustomer::중복"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + + try { + log.info(LOG_PREFIX+ "trxParam : "+trxParam.toString()); + siteService.insertSplusTran(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "ERROR {}", e.getMessage()); + } + + if (member == null) { + sp.appendLine("error_code=-2"); + sp.append("error_message=not validateToken"); + + return sp.toString(); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#DC"); + tranParam.put("refId", refId + "#DC"); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 84); + tranParam.put("vendorCode", "bti_zeno"); + tranParam.put("vendorTranKey", purchase_id + "#DC"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId + "#DC"); + debit.put("tranId", refId + "#DC"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 84); + debit.put("vendorKey", "SP3"); + debit.put("vendor", "bti_zeno"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "debit"); + debit.put("debit", fakeAmount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("minusBalanceYn", "Y"); + HashMap detailMap = new Gson().fromJson(paramjson.toString(), HashMap.class); + debit.put("status", "debitCustomer"); + debit.put("detail", detailMap); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + if (resData.getLong("result_code") == 0) { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } else { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + siteService.updateSplusTran(trxParam); + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception::" + e.getMessage()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + private double getBalnce(String LOG_PREFIX, String cbUrl, String memId) { + LOG_PREFIX = LOG_PREFIX + "==> getBalnce::"; + double balance = 0L; + + try { + log.info(LOG_PREFIX + "Callback Url :" + cbUrl + "/balance/sportsD"); + JSONObject members = new JSONObject(); + members.put("userId", memId); + members.put("decYn", "Y"); + + // 회원 머니 + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + try { + ResponseEntity responseEntity = webClient.post() + .uri(cbUrl + "/balance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(members.toString()) + .retrieve() + .toEntity(String.class) + .block(); + log.info(LOG_PREFIX + "status code : {}", responseEntity.getStatusCode()); + log.info(LOG_PREFIX + "body: {}", responseEntity.getBody()); + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + balance = resData.getDouble("balance");// * 0.01; + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + } + + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception :" + e.getMessage()); + } + + return balance; + } + + // 베팅 예약 크레딧 차람 + @RequestMapping(value = "/creditcustomer", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String creditCustomer(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + log.info("#-bti::creditCustomer::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-bti::creditCustomer::" + name + "=" + value); + } + log.info("#-bti::creditCustomer::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0.00"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String req_id = URLDecoder.decode(request.getParameter("req_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + String reserveId = siteService.getRefIdByPurchaseId(purchase_id); + final String LOG_PREFIX = "#-bti::creditCustomer::" + memberId + "::" + reserveId + "::" + purchase_id+ "::" + req_id + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "creditCustomer"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserveId); + trxParam.put("req_id", req_id); + trxParam.put("purchase_id", purchase_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", cust_id); + + org.json.JSONObject paramjson = new org.json.JSONObject(); + try { + log.info(LOG_PREFIX+ "BF::parambody : "+ parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", parambody); + paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "MF::parambody {}", paramjson.toString()); + + trxParam.put("data", paramjson.toString()); + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + } catch (Exception e) { + log.info(LOG_PREFIX+ "error {}", e.getMessage()); + } + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + sp.appendLine("error_code=0"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + sp.appendLine("error_code=0"); + sp.append("error_message=CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserveId; + Date dt = new Date(); + String trxId = "" + dt.getTime() + "4"; + trxParam.put("trxId", trxId); + trxParam.put("refId", refId); + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + double amount = Double.parseDouble(amountStr); + + int custCnt = splusService.getCustomerCnt(trxParam); + if(custCnt > 0) { + log.error(LOG_PREFIX+ "creditCustomer::중복"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error"); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.append("trx_id=" + trxId); + return sp.toString(); + } + + try { + log.info(LOG_PREFIX+ "trxParam : "+trxParam.toString()); + siteService.insertSplusTran(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "ERROR {}", e.getMessage()); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", req_id + "#CC"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 84); + tranParam.put("vendorCode", "bti_zeno"); + tranParam.put("vendorTranKey", purchase_id + "#CC"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", req_id + "#CC"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 84); + debit.put("vendorKey", "SP3"); + debit.put("vendor", "bti_zeno"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + HashMap detailMap = new Gson().fromJson(paramjson.toString(), HashMap.class); + debit.put("status", "end"); + debit.put("detail", detailMap); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + org.codehaus.jettison.json.JSONObject resData = null; + + try { + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sportsD") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + log.info(LOG_PREFIX+ "status code : {}", responseEntity.getStatusCode()); + log.info(LOG_PREFIX+ "body: {}", responseEntity.getBody()); + + if (resData.getLong("result_code") == 0) { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } else { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX + "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX + "WebClientResponseException Body::" + e.getResponseBodyAsString()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX + "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX + "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX + "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX + "WebClientRequestException::" + e.getMessage()); + } + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception::" + e.getMessage()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + siteService.updateSplusTran(trxParam); + + splusService.updateSplus(tranParam, paramjson); + + log.info(LOG_PREFIX+ "Response: "+sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + private String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'N', 'O', 'P', 'Q', + 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', + 'z' }; + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + } + +} diff --git a/src/main/java/com/bb/front/CallBackDpcoreController.java b/src/main/java/com/bb/front/CallBackDpcoreController.java new file mode 100644 index 0000000..22afb1c --- /dev/null +++ b/src/main/java/com/bb/front/CallBackDpcoreController.java @@ -0,0 +1,1286 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; + +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.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; + +import com.bb.model.NexusResponse; +import com.bb.model.PrimeResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/dpcore") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackDpcoreController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam("username") String primeUsername) throws Exception { + PrimeResponse response = null; + + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(primeUsername.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::DPCORE::balance::Invalid username format (hex expected): {}", primeUsername); + log.error("#-CB::DPCORE::balance::Error Msg: NOT_FOUND_USER"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + String memberId = primeUsername.substring(3, primeUsername.length()); + final String LOG_PREFIX = "#-CB::DPCORE::balance::"+memberId+":::"; + log.info(LOG_PREFIX+ "Request::" + primeUsername); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + log.info(LOG_PREFIX + "SITE_API_INFO_PARAM::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + response = new PrimeResponse(); + response.setBalance(balance); + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/changeBalance") + public ResponseEntity changeBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + ResponseEntity resEntity = null; + + String primeUsername = requestBody.getString("username"); + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(primeUsername.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::DPCORE::balance::Invalid username format (hex expected): {}", primeUsername); + log.error("#-CB::DPCORE::balance::Error Msg: NOT_FOUND_USER"); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + String memberId = primeUsername.substring(3, primeUsername.length()); + net.sf.json.JSONObject transaction = requestBody.getJSONObject("transaction"); + net.sf.json.JSONObject game = transaction.getJSONObject("details").getJSONObject("game"); + String transactionId = transaction.getString("id"); + String transactionType = transaction.getString("type"); + + final String LOG_PREFIX = "#-CB::DPCORE::changeBalance::"+memberId+"::"+transactionId+"::"+transactionType+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + // "processed_at":"2025-01-16T09:25:23.000000Z" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = transaction.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== MF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = makeEdate(LOG_PREFIX, betDateTimeStr, 32400000); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "dpcore"); + sParam.put("vendorGameCode", game.getString("vendor_code")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다"); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + if(transactionType.equals("bet")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callBet(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("win")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount, requestBody); + + } else if(transactionType.equals("cancel")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callCancel(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("adjust")) { + int amount = requestBody.getInt("amount"); + //resEntity = callAdjust(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("promo_win")) { + int amount = Math.abs(requestBody.getInt("amount")); + //resEntity = callPromoWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else { + log.error(LOG_PREFIX+ "unknown_transaction_type"); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + + return resEntity; + } + + private ResponseEntity callBet(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callBet:::"; + ResponseEntity resEntity = null; + PrimeResponse response = new PrimeResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = ""; + if(game.has("gameType")) { + gameType = game.getString("gameType").replaceAll(" ", "").toLowerCase(); + } else { + gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + } + + // gameType 변환 (하부로 전달 시 blackjack으로 통일) + if ("classicbetstackerbj".equals(gameType) || "freebet".equals(gameType) + || "funfun21scalablebj".equals(gameType) || "easybj".equals(gameType) + || "lightningscalablebj".equals(gameType) || "classicfreebet".equals(gameType) + || gameType.contains("blackjack")) { + gameType = "blackjack"; + } + + String betKey = game.getString("id")+"#"+transaction.getString("referer_id"); + String roundId = betKey; + String gameName = game.getString("title"); + + String tableId = game.getString("game_code"); + String targetTableId = tableId.replaceAll(" ", "").toLowerCase(); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); // 501 + return resEntity; + } + + if(!"".equals(targetTableId) && !"".equals(banGameId) && banGameId.contains(targetTableId+"|")) { + log.error(LOG_PREFIX+ "Ban Game Id : " + banGameId); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); // 502 + return resEntity; + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + /* + int cnt1 = siteService.getTranIdCheck(tranId); + if(cnt1 != 0) { + // 중복베팅 + log.error(LOG_PREFIX+ "중복베팅"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + */ + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(balance); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + boolean isParsing = false; + log.info(LOG_PREFIX + "BF_isParsing::"+isParsing); + Boolean genuine = false; + if(transaction.has("genuine")) { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is true"); + genuine = transaction.getBoolean("genuine"); + log.info(LOG_PREFIX + "transaction.genuine::"+genuine.booleanValue()); + // genuine = true : 정품 + // genuine = null or false : 하이브리드(파싱) + if(genuine != null && genuine.booleanValue() == true) { + isParsing = false; + if(game.has("id")) { + roundId = game.getString("id"); + } + } else { + isParsing = true; + } + } else { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is false"); + isParsing = true; + } + log.info(LOG_PREFIX + "AF_isParsing::"+isParsing); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "dpcore"); + tranParam.put("vendorTranKey", roundId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", roundId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "dpcore"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", game.getString("type")); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + response.setBeforeBalance(balance+amount); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 80) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response.setBalance(balance); + log.error(LOG_PREFIX+ "Response::금액을 확인하여 주세요::" + response.toString()); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + response.setBeforeBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callWin(String LOG_PREFIX, long siteIdx, String memberId, net.sf.json.JSONObject transaction, + String betDateTimeStr, HashMap siteVendorInfo, int amount, net.sf.json.JSONObject requestBody) { + + LOG_PREFIX = LOG_PREFIX + "callWin:::"; + ResponseEntity resEntity = null; + PrimeResponse response = new PrimeResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = ""; + if(game.has("gameType")) { + gameType = game.getString("gameType").replaceAll(" ", "").toLowerCase(); + } else { + gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + } + + // gameType 변환 (하부로 전달 시 blackjack으로 통일) + if ("classicbetstackerbj".equals(gameType) || "freebet".equals(gameType) + || "funfun21scalablebj".equals(gameType) || "easybj".equals(gameType) + || "lightningscalablebj".equals(gameType) || "classicfreebet".equals(gameType) + || gameType.contains("blackjack")) { + gameType = "blackjack"; + } + + String tableId = game.getString("game_code"); + String betKey = game.getString("id")+"#"+transaction.getString("referer_id"); + String roundId = betKey; + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + /* + int cnt1 = siteService.getTranIdCheck(tranId); + if(cnt1 != 0) { + // 중복베팅 + log.error(LOG_PREFIX+ "중복베팅"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + */ + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(balance); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + } else { + int cnt2 = siteService.getBetIdCheck(betId); + if(cnt2 == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + } + + boolean isParsing = false; + log.info(LOG_PREFIX + "BF_isParsing::"+isParsing); + Boolean genuine = false; + if(transaction.has("genuine")) { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is true"); + genuine = transaction.getBoolean("genuine"); + log.info(LOG_PREFIX + "transaction.genuine::"+genuine.booleanValue()); + // genuine = true : 정품 + // genuine = null or false : 하이브리드(파싱) + if(genuine != null && genuine.booleanValue() == true) { + isParsing = false; + if(game.has("id")) { + roundId = game.getString("id"); + } + } else { + isParsing = true; + } + } else { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is false"); + isParsing = true; + } + log.info(LOG_PREFIX + "AF_isParsing::"+isParsing); + + String isDebitParse = siteService.getDebitIsParse(betId); + log.info(LOG_PREFIX + "isDebitParse::"+isDebitParse); + if(isDebitParse == null) { + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } else { + if("P".equals(isDebitParse)) { + isParsing = true; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "dpcore"); + tranParam.put("vendorTranKey", roundId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", game.getString("title")); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", roundId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "dpcore"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", game.getString("title")); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + + /** + * issueFlag : flag=Y 유저 이면 결과 강제취소처리 + */ + String issueFlag = siteVendorInfo.get("issueFlag").toString(); + if("Y".equals(issueFlag)) { + // ##-- issueFlag 전처리 + if(amount <= 0) { // 여러가지 경우를 테스트함 + int betAmount = Integer.parseInt(siteService.getBetAmountByTranParam(tranParam)); + tranParam.put("creditAmt", betAmount); + tranParam.put("isCancel", "Y"); + + callBackObj.put("credit", betAmount); + callBackObj.put("isCancel", 1); + } + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + response.setBeforeBalance(balance-amount); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + response.setBeforeBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + /** + * issueFlag : flag=Y 유저 이면 결과 강제취소처리 + */ + if("Y".equals(issueFlag)) { + // ##-- issueFlag 후처리 + log.error(LOG_PREFIX+ "issueFlag=Y, 결과 강제취소처리"); + + asyncCallBackService.asyncIssueLogSave(LOG_PREFIX, requestBody, tranParam); + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callCancel(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + ResponseEntity resEntity = null; + PrimeResponse response = new PrimeResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = ""; + if(game.has("gameType")) { + gameType = game.getString("gameType").replaceAll(" ", "").toLowerCase(); + } else { + gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + } + + // gameType 변환 (하부로 전달 시 blackjack으로 통일) + if ("classicbetstackerbj".equals(gameType) || "freebet".equals(gameType) + || "funfun21scalablebj".equals(gameType) || "easybj".equals(gameType) + || "lightningscalablebj".equals(gameType) || "classicfreebet".equals(gameType) + || gameType.contains("blackjack")) { + gameType = "blackjack"; + } + + String tableId = game.getString("game_code"); + String betKey = game.getString("id")+"#"+transaction.getString("referer_id"); + String roundId = betKey; + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + /* + int cnt1 = siteService.getTranIdCheck(tranId); + if(cnt1 != 0) { + // 중복베팅 + log.error(LOG_PREFIX+ "중복베팅"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + */ + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(balance); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + } else { + int cnt2 = siteService.getBetIdCheck(betId); + if(cnt2 == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + } + + boolean isParsing = false; + log.info(LOG_PREFIX + "BF_isParsing::"+isParsing); + Boolean genuine = false; + if(transaction.has("genuine")) { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is true"); + genuine = transaction.getBoolean("genuine"); + log.info(LOG_PREFIX + "transaction.genuine::"+genuine.booleanValue()); + // genuine = true : 정품 + // genuine = null or false : 하이브리드(파싱) + if(genuine != null && genuine.booleanValue() == true) { + isParsing = false; + if(game.has("id")) { + roundId = game.getString("id"); + } + } else { + isParsing = true; + } + } else { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is false"); + isParsing = true; + } + log.info(LOG_PREFIX + "AF_isParsing::"+isParsing); + + String isDebitParse = siteService.getDebitIsParse(betId); + log.info(LOG_PREFIX + "isDebitParse::"+isDebitParse); + if(isDebitParse == null) { + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } else { + if("P".equals(isDebitParse)) { + isParsing = true; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "dpcore"); + tranParam.put("vendorTranKey", roundId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", game.getString("title")); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", roundId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "dpcore"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", game.getString("title")); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + response.setBeforeBalance(balance-amount); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + response.setBeforeBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + /** + * 에볼루션 상세 콜백 + * @param request + * @param requestBody + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(path = "/callDetail") + public ResponseEntity callDetail(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("apiKey"); + final String LOG_PREFIX = "#-CB::DPCORE::callDetail::ace::"+apiKey+":::"; + //log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + JSONObject bodyObj = new JSONObject(requestBody.toString()); + JSONArray params = bodyObj.getJSONArray("params"); + String prevVendorTranKey = ""; + for(int i=0; i(); + detailMap.put("refId", refId); + detailMap.put("orgDetail", orgDetail.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX2+ "insertEvoDetail result::" + result); + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX2+ "Duplicate refId"); + continue; + } + } + } + } else { + log.info(LOG_PREFIX+ "Not found json key _id"); + } + } + + response = new NexusResponse(); + response.setCode(0); + response.setMsg("SUCCESS"); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-8); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-9); + response.setMsg("DETAIL_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + /** + * UTC 시간을 한국 시간(KST)으로 변환 + * @param utcTimeStr UTC 시간 문자열 (예: 2026-02-06T04:39:05.243Z) + * @return 한국 시간 문자열 (예: 2026-02-06T13:39:05.243+09:00) + */ + private static String convertUtcToKstTime(String utcTimeStr) { + try { + if (utcTimeStr == null || !utcTimeStr.endsWith("Z")) { + return utcTimeStr; + } + + // UTC 시간 파싱 + Instant instant = Instant.parse(utcTimeStr); + // 한국 시간대로 변환 (UTC+9) + ZonedDateTime kstTime = instant.atZone(ZoneId.of("Asia/Seoul")); + // ISO 8601 형식으로 포맷 (타임존 포함) + return kstTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } catch (Exception e) { + log.error("UTC to KST conversion error: " + e.getMessage()); + return utcTimeStr; // 변환 실패시 원본 반환 + } + } + + /** + * JSON 객체를 재귀적으로 순회하며 시간 필드를 UTC에서 KST로 변환 + * @param jsonObj 변환할 JSON 객체 + */ + private static void convertUtcToKst(JSONObject jsonObj) { + try { + // 변환할 시간 필드 목록 + String[] timeFields = {"startedAt", "settledAt", "placedOn", "recordedAt"}; + + Iterator keys = jsonObj.keys(); + while (keys.hasNext()) { + String key = keys.next(); + Object value = jsonObj.get(key); + + // 시간 필드인 경우 변환 + for (String timeField : timeFields) { + if (key.equals(timeField) && value instanceof String) { + String utcTime = (String) value; + String kstTime = convertUtcToKstTime(utcTime); + jsonObj.put(key, kstTime); + break; + } + } + + // 중첩된 JSONObject인 경우 재귀 호출 + if (value instanceof JSONObject) { + convertUtcToKst((JSONObject) value); + } + // 중첩된 JSONArray인 경우 각 요소 처리 + else if (value instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) value; + for (int i = 0; i < jsonArray.length(); i++) { + Object arrayItem = jsonArray.get(i); + if (arrayItem instanceof JSONObject) { + convertUtcToKst((JSONObject) arrayItem); + } + } + } + } + } catch (Exception e) { + log.error("JSON time conversion error: " + e.getMessage()); + } + } + + private static String makeEdate(String LOG_PREFIX, String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf1.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf2.format(date2); + } catch(Exception e) { + log.error(LOG_PREFIX+ "makeEdate::Exception::"+e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallBackNexusController.java b/src/main/java/com/bb/front/CallBackNexusController.java new file mode 100644 index 0000000..e7806de --- /dev/null +++ b/src/main/java/com/bb/front/CallBackNexusController.java @@ -0,0 +1,1684 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; + +import jakarta.servlet.http.HttpServletRequest; + +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.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +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 org.springframework.web.client.ResourceAccessException; + +import com.bb.model.NexusBalanceData; +import com.bb.model.NexusResponse; +import com.bb.model.NexusSmlData; +import com.bb.model.NexusSmlRequest; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/nexus") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackNexusController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @RequestMapping(path = "/callBalance") + public ResponseEntity callBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("apiKey"); + net.sf.json.JSONObject params = requestBody.getJSONObject("params"); + String siteUsername = params.getString("siteUsername"); + String requestedAt = params.getString("requestedAt"); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::NEXUS::::callBalance::"+memberId+"::"+requestedAt+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "nexus"); + sParam.put("apiKey", apiKey); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfoByApiKey(sParam); + if(siteApiInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + if(siteApiInfo.get("memberIdx") == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + long startTimestamp = System.currentTimeMillis(); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("BALANCE_CALLBACK_ERROR"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.5) { + log.error(LOG_PREFIX+ "잔액요청 응답시간("+diffTime+"초) 초과"); + } + log.info(LOG_PREFIX + "resData::"+resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + NexusBalanceData data = new NexusBalanceData(); + data.setBalance(balance); + data.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("BALANCE_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callBet") + public ResponseEntity callBet(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::NEXUS::"+memberId+"::"+data.getTransactionKey()+"::callBet:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "nexus"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + // vendors_info.useYn 게임막기 기능 + if("N".equals(siteVendorInfo.get("vendorAllUseYn").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("사용불가 벤더사"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "사용불가 벤더사::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + Long lastInVendorIdx = Long.parseLong(siteVendorInfo.get("lastInVendorIdx").toString()); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + if(lastInVendorIdx.longValue() != vendorIdx.longValue()) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("VendorIdx doesn't match"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = Math.abs(amountD.intValue()); + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("NO_SITE_CREDIT"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NO_SITE_CREDIT::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + if(amount < 0) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("MAX_BET_AMOUNT_OVER"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + String gameName = data.getGameName(); + String gameType = data.getGameType().replaceAll(" ", "").toLowerCase(); + if(data.getGameId() == null) data.setGameId(""); + String gameId = data.getGameId().replaceAll(" ", "").toLowerCase(); + String gameKey = null; + if(vendorIdx == 1) { + gameKey = siteService.getGameKeyByNexusGameId(data.getGameId()); + } + if(gameKey == null) gameKey = gameId; + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + // Ban Game Type Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 501L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameType:"+gameType+"이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_TYPE"); + logParam.put("errorMsg", "gameType:"+gameType+"이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("Ban Game Type : " + gameType); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + if(!"".equals(gameId) && !"".equals(banGameId) && banGameId.contains(gameId+"|")) { + // Ban Game Id Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 502L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameId:"+gameId+"("+gameName+")이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_ID"); + logParam.put("errorMsg", "gameId:"+gameId+"("+gameName+")이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Id : " + gameId); + + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("Ban Game Id : " + gameId); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "nexus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", data.getGameName()); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "nexus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", data.getGameName()); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + if(data.getIsBonus().equals("true")) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 80) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액을 확인하여 주세요"); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액을 확인하여 주세요"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "잔액부족::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("BET_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callResult") + public ResponseEntity callResult(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::NEXUS::"+memberId+"::"+data.getTransactionKey()+"::callResult:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + if(data.getType().equals("turn_promotion")) { + data.setVendorKey("pragmaticplay_casino"); + } + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "nexus"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = Math.abs(amountD.intValue()); + if(amount < 0) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("NOT_FOUND_REF_DATA"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = data.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "nexus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "nexus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + if(data.getIsBonus().equals("true") || data.getIsPromo().equals("true") || data.getType().equals("turn_promotion")) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("RESULT_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callCancel") + public ResponseEntity callCancel(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::NEXUS::"+memberId+"::"+data.getTransactionKey()+"::callCancel:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "nexus"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = Math.abs(amountD.intValue()); + if(amount < 0) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("NOT_FOUND_REF_DATA"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = data.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "nexus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "nexus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance - amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("RESULT_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/callAdjust") + public ResponseEntity callAdjust(HttpServletRequest request, @RequestBody NexusSmlRequest requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + NexusSmlData data = requestBody.getParams(); + String siteUsername = data.getSiteUsername(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = data.getCreatedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + betDateTimeStr = makeEdate(betDateTimeStr, 32400000); + } + data.setBetDateTime(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::NEXUS::"+memberId+"::"+data.getTransactionKey()+"::callAdjust:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "nexus"); + sParam.put("vendorGameCode", data.getVendorKey()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new NexusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = Double.parseDouble(data.getAmount()); + int amount = amountD.intValue(); + + String vendorTranKey = data.getTransactionKey(); + String tranId = data.getTransactionKey(); + String betId = data.getParentTransactionKey(); + if(betId == null || betId.equals("")) { + betId = data.getTransactionKey(); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("NOT_FOUND_REF_DATA"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = data.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "nexus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", data.getGameType()); + tranParam.put("gameId", data.getGameId()); + tranParam.put("gameIdx", gameName); + if(amount >= 0) { + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + } else { + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount*-1); + tranParam.put("creditAmt", "0"); + } + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "nexus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + if(data.getGameId() == null) data.setGameId(""); + callBackObj.put("gameId", data.getGameId()); + callBackObj.put("gameType", data.getGameType()); + callBackObj.put("tranType", "adjust"); + if(amount >= 0) { + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + } else { + callBackObj.put("debit", amount*-1); + callBackObj.put("credit", 0); + } + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_ADJUST request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_ADJUST_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_ADJUST_END-----"); + + JSONObject resData = null; + if(data.getGameCategory().equals("casino")) { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_ADJUST status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_ADJUST response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(balance); + balanceData.setBeforeBalance(balance + amount); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + } else { + response = new NexusResponse(); + response.setCode(-999); + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response.setMsg(msg); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_ADJUST_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_ADJUST_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + NexusBalanceData balanceData = new NexusBalanceData(); + balanceData.setBalance(afBalance); + balanceData.setBeforeBalance(balance); + balanceData.setCurrency("KRW"); + response = new NexusResponse(); + response.setCode(0); + response.setData(balanceData); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(data.getGameCategory().equals("casino")) { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-999); + response.setMsg("RESULT_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + /** + * 에볼루션 상세 콜백 + * @param request + * @param requestBody + * @return + * @throws Exception + */ + @ResponseBody + @RequestMapping(path = "/callDetail") + public ResponseEntity callDetail(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + NexusResponse response = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("apiKey"); + final String LOG_PREFIX = "#-CB::callDetail::nexus::"+apiKey+":::"; + // log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + JSONObject bodyObj = new JSONObject(requestBody.toString()); + JSONArray params = bodyObj.getJSONArray("params"); + String prevRefId = ""; + for(int i=0; i(); + detailMap.put("refId", refId); + detailMap.put("orgDetail", orgDetail.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX2+ "insertEvoDetail result::" + result); + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX2+ "Duplicate refId"); + continue; + } + + } + + response = new NexusResponse(); + response.setCode(0); + response.setMsg("SUCCESS"); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new NexusResponse(); + response.setCode(-8); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new NexusResponse(); + response.setCode(-9); + response.setMsg("DETAIL_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + /** + * UTC 시간을 한국 시간(KST)으로 변환 + * @param utcTimeStr UTC 시간 문자열 (예: 2026-02-06T04:39:05.243Z) + * @return 한국 시간 문자열 (예: 2026-02-06T13:39:05.243+09:00) + */ + private static String convertUtcToKstTime(String utcTimeStr) { + try { + if (utcTimeStr == null || !utcTimeStr.endsWith("Z")) { + return utcTimeStr; + } + + // UTC 시간 파싱 + Instant instant = Instant.parse(utcTimeStr); + // 한국 시간대로 변환 (UTC+9) + ZonedDateTime kstTime = instant.atZone(ZoneId.of("Asia/Seoul")); + // ISO 8601 형식으로 포맷 (타임존 포함) + return kstTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } catch (Exception e) { + log.error("UTC to KST conversion error: " + e.getMessage()); + return utcTimeStr; // 변환 실패시 원본 반환 + } + } + + /** + * JSON 객체를 재귀적으로 순회하며 시간 필드를 UTC에서 KST로 변환 + * @param jsonObj 변환할 JSON 객체 + */ + private static void convertUtcToKst(JSONObject jsonObj) { + try { + // 변환할 시간 필드 목록 + String[] timeFields = {"startedAt", "settledAt", "placedOn", "recordedAt"}; + + Iterator keys = jsonObj.keys(); + while (keys.hasNext()) { + String key = keys.next(); + Object value = jsonObj.get(key); + + // 시간 필드인 경우 변환 + for (String timeField : timeFields) { + if (key.equals(timeField) && value instanceof String) { + String utcTime = (String) value; + String kstTime = convertUtcToKstTime(utcTime); + jsonObj.put(key, kstTime); + break; + } + } + + // 중첩된 JSONObject인 경우 재귀 호출 + if (value instanceof JSONObject) { + convertUtcToKst((JSONObject) value); + } + // 중첩된 JSONArray인 경우 각 요소 처리 + else if (value instanceof JSONArray) { + JSONArray jsonArray = (JSONArray) value; + for (int i = 0; i < jsonArray.length(); i++) { + Object arrayItem = jsonArray.get(i); + if (arrayItem instanceof JSONObject) { + convertUtcToKst((JSONObject) arrayItem); + } + } + } + } + } catch (Exception e) { + log.error("JSON time conversion error: " + e.getMessage()); + } + } + + + private static String makeDateStrForUTC(boolean flag, String strDate) { + String result = ""; + if(flag) { + // 2022-05-01 00:00:00.000 => 2022-05-01T00:00:00.000Z + result = strDate.replace(" ", "T") + "Z"; + } else { + // 2022-05-01T00:00:00.000Z => 2022-05-01 00:00:00.000 + result = strDate.replace("T", " ").replace("Z", ""); + } + return result; + } + + private static String makeEdate(String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + if(paramDate == null) { + // eDate = sdf.format(System.currentTimeMillis()); + eDate = sdf.format(System.currentTimeMillis() - 32400000); + } else { + Date date = sdf.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf.format(date2); + } + } catch(Exception e) { + log.error(e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallBackOnixController.java b/src/main/java/com/bb/front/CallBackOnixController.java new file mode 100644 index 0000000..e2f6665 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackOnixController.java @@ -0,0 +1,973 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +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.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.client.RestTemplate; + +import com.bb.model.OnixResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +/** + * Onix Seamless API Callback Controller + * + * API 엔드포인트: + * - /balance: 유저 잔고 조회 + * - /changeBalance: 유저 머니 변경 (베팅, 승리, 취소 등) + * + * 모든 응답은 2초 이내로 반환되어야 함 + * CORS 헤더 필수: Access-Control-Allow-Origin: * + */ +@Slf4j +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +@RequestMapping("/api/callback/onix") +public class CallBackOnixController { + + @Autowired + private SiteService siteService; + + @Autowired + private CallBackService callBackService; + + @Autowired + private AsyncSiteService asyncCallBackService; + + @Autowired + RestTemplate restTemplate; + + + @ResponseBody + @RequestMapping(path = {"/balance", "/balance/"}) + public ResponseEntity balance(HttpServletRequest request, @RequestParam("userid") String onixUsername) throws Exception { + OnixResponse response = null; + + long siteIdx = Long.parseLong(onixUsername.substring(0, 3), 16); + String memberId = onixUsername.substring(3, onixUsername.length()); + final String LOG_PREFIX = "#-CB::ONIX::balance::"+memberId+":::"; + log.info(LOG_PREFIX+ "Request::" + onixUsername); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + log.info(LOG_PREFIX + "SITE_API_INFO_PARAM::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new OnixResponse(); + response.setResult(0); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + response = new OnixResponse(); + response.setResult(0); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + long balance = 0L; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response = new OnixResponse(); + response.setResult(0); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.OK); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + balance = resData.getLong("balance"); // int -> long 변경 + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + // Onix 문서: {"result":1, "balance": 10000} 형식으로 응답 + response = new OnixResponse(); + response.setResult(1); // 성공 = 1 + response.setBalance(balance); + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new OnixResponse(); + response.setResult(0); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new OnixResponse(); + response.setResult(0); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + @PostMapping(path = {"/changeBalance", "/changeBalance/"}) + public ResponseEntity changeBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) { + + ResponseEntity resEntity = null; + log.info("#-CB::ONIX::changeBalance::Request::" + requestBody.toString()); + + String onixUsername = requestBody.getString("userid"); + long siteIdx = Long.parseLong(onixUsername.substring(0, 3), 16); + String memberId = onixUsername.substring(3, onixUsername.length()); + String transactionId = requestBody.getString("tranid"); + String transactionType = requestBody.getString("type"); + + final String LOG_PREFIX = "#-CB::ONIX::changeBalance::"+memberId+"::"+transactionId+"::"+transactionType+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + // "time":"2023-07-05 21:16:39.473" + String betDateTimeStr = requestBody.getString("time"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + //log.info(LOG_PREFIX+ "========== MF_betDateTimeStr::" + betDateTimeStr); + //betDateTimeStr = makeEdate(LOG_PREFIX, betDateTimeStr, 32400000); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + // 사이트 정보 조회 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "onix"); + sParam.put("vendorGameCode", "evolution"); + log.info(LOG_PREFIX + "getSiteVendorInfo::" + sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + + if(siteVendorInfo == null) { + log.error(LOG_PREFIX + "존재하지 않는 회원입니다"); + OnixResponse response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + if(transactionType.equals("bet")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callBet(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("win") || transactionType.equals("lose")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callWin(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("cancel")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callCancel(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else { + log.error(LOG_PREFIX + "unknown_transaction_type"); + OnixResponse response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + OnixResponse response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + + } catch (Exception e) { + log.error(LOG_PREFIX + "[Exception]" + e.toString()); + e.printStackTrace(); + OnixResponse response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + log.info(LOG_PREFIX + "Response::" + resEntity.toString()); + + return resEntity; + } + + private ResponseEntity callBet(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callBet:::"; + ResponseEntity resEntity = null; + OnixResponse response = new OnixResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + + String gameType = ""; // transaction.optString("gametype"); + String gameName = transaction.optString("title"); + + String tableId = transaction.optString("subcode"); + String targetTableId = tableId.replaceAll(" ", "").toLowerCase(); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if (!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType + "|")) { + log.error(LOG_PREFIX + "Ban Game Type : " + gameType); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + if (!"".equals(targetTableId) && !"".equals(banGameId) && banGameId.contains(targetTableId + "|")) { + log.error(LOG_PREFIX + "Ban Game Id : " + banGameId); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("tranid"); + String betId = transaction.getString("realround"); + String betKey = betId; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + } + + if (siteVendorInfo.get("lastInVendorIdx") == null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if (lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX + "VendorIdx doesn't match"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if (siteCredit < amount && IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX + "NO_SITE_CREDIT"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if (finalMaxBet < amount) { + log.error(LOG_PREFIX + "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX + "finalMaxBet : " + finalMaxBet + ", amount : " + amount); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + boolean isParsing = false; + String game = transaction.optString("game"); + if("evolution_new".equals(game)) { + isParsing = true; + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "onix"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "onix"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if (resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if (resData.getLong("result_code") == 98) { + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if (resData.getLong("result_code") == 80) { + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else { + String msg = ""; + if (resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX + msg); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + log.error(LOG_PREFIX + "beforeBalance is less than amount"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response = OnixResponse.success(afBalance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX + "[Exception]" + e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + private ResponseEntity callWin(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callWin:::"; + ResponseEntity resEntity = null; + OnixResponse response = new OnixResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("tranid"); + String betId = transaction.getString("realround"); + String betKey = betId; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + net.sf.json.JSONArray details = transaction.optJSONArray("details"); + net.sf.json.JSONObject detailObj = null; + String gameType = ""; // transaction.optString(""); + String gameName = transaction.optString("title"); + if(details != null && details.size() > 0) { + detailObj = details.optJSONObject(0); + if(detailObj != null) { + gameType = detailObj.optString("gameType"); + HashMap detailMap = new HashMap<>(); + detailMap.put("refId", betId); + detailMap.put("orgDetail", detailObj.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX+ "insertEvoDetail result::" + result); + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX+ "Duplicate refId"); + } + } + if(gameType == null) gameType = ""; + } + String tableId = transaction.optString("subcode"); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + } + + if (siteVendorInfo.get("lastInVendorIdx") == null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if (lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX + "VendorIdx doesn't match"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + } + + boolean isParsing = false; + String game = transaction.optString("game"); + if("evolution_new".equals(game)) { + isParsing = true; + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "onix"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "onix"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if (resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if (resData.getLong("result_code") == 98) { + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else { + String msg = ""; + if (resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX + msg); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response = OnixResponse.success(afBalance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX + "[Exception]" + e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + private ResponseEntity callCancel(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callCancel:::"; + ResponseEntity resEntity = null; + OnixResponse response = new OnixResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("tranid"); + String betId = transaction.getString("realround"); + String betKey = betId; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + net.sf.json.JSONArray details = transaction.optJSONArray("details"); + net.sf.json.JSONObject detailObj = null; + String gameType = ""; // transaction.optString(""); + String gameName = transaction.optString("title"); + if(details != null && details.size() > 0) { + detailObj = details.optJSONObject(0); + if(detailObj != null) { + gameType = detailObj.optString("gameType"); + HashMap detailMap = new HashMap<>(); + detailMap.put("refId", betId); + detailMap.put("orgDetail", detailObj.toString()); + detailMap.put("parDetail", null); + try { + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX+ "insertEvoDetail result::" + result); + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX+ "Duplicate refId"); + } + } + if(gameType == null) gameType = ""; + } + String tableId = transaction.optString("subcode"); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + } + + if (siteVendorInfo.get("lastInVendorIdx") == null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if (lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX + "VendorIdx doesn't match"); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + return resEntity; + } + } + + boolean isParsing = false; + String game = transaction.optString("game"); + if("evolution_new".equals(game)) { + isParsing = true; + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "onix"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "onix"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if (resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if (resData.getLong("result_code") == 98) { + long balance = resData.getLong("balance"); + response = OnixResponse.success(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else { + String msg = ""; + if (resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX + msg); + response = OnixResponse.failure(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response = OnixResponse.success(afBalance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX + "[Exception]" + e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + private static String makeEdate(String LOG_PREFIX, String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf1.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf2.format(date2); + } catch(Exception e) { + log.error(LOG_PREFIX+ "makeEdate::Exception::"+e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallBackPowerBall.java b/src/main/java/com/bb/front/CallBackPowerBall.java new file mode 100644 index 0000000..7d665fb --- /dev/null +++ b/src/main/java/com/bb/front/CallBackPowerBall.java @@ -0,0 +1,710 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.util.HashMap; +import java.util.List; + +import jakarta.servlet.http.HttpServletRequest; + +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.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.PowerballData; +import com.bb.model.PowerballRequest; +import com.bb.model.PowerballResponse; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@RestController +@Slf4j +@RequestMapping("/api/callback/powerball") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackPowerBall { + + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + WebClient webClient; + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam String id, @RequestParam String siteName) throws Exception { + PowerballResponse response = null; + PowerballData data = null; + HttpStatus httpStatus = HttpStatus.OK; + + //사이트정보 + HashMap sParam = new HashMap(); + long siteIdx = Long.parseLong(id.substring(0, 3), 16); + String memberId = id.substring(3, id.length()); + final String LOG_PREFIX = "#-CB::POWER_BALL::"+memberId+"::BALANCE::::"; + + log.info(LOG_PREFIX+ "id:"+id+", siteName:"+siteName); + + try { + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NOT_FOUND_USER"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX + "SEND_BALANCE request body: " + member.toString()); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/balance") + .headers(h -> h.addAll(header)) + .bodyValue(member.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX+ "SEND_BALANCE status code: " + responseEntity.getStatusCode()); + log.info(LOG_PREFIX+ "SEND_BALANCE response body: " + responseEntity.getBody()); + + JSONObject resData = new JSONObject(responseEntity.getBody()); + int balance = resData.getInt("balance"); + + response = new PowerballResponse(); + response.setResult("SUCCESS"); + response.setMsg(""); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance(Integer.toString(balance)); + response.setData(data); + + } catch (WebClientResponseException e) { + // HttpServerErrorException handling + if (e.getStatusCode().is5xxServerError()) { + log.error(LOG_PREFIX+ "WebClientResponseException 5xx: " + e.getResponseBodyAsString()); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("BALANCE_SERVER_ERROR"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + // HttpClientErrorException handling + else if (e.getStatusCode().is4xxClientError()) { + log.error(LOG_PREFIX+ "WebClientResponseException 4xx: " + e.getResponseBodyAsString()); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("BALANCE_SERVER_ERROR"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } else { + log.error(LOG_PREFIX+ "WebClientResponseException: " + e.getResponseBodyAsString()); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("BALANCE_SERVER_ERROR"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + + } catch (WebClientRequestException e) { + // 타임아웃 등 연결 오류 + Throwable cause = e.getCause(); + if (cause instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException: " + cause.getMessage()); + } else if (cause instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException: " + cause.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException: " + e.getMessage()); + } + + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("TIMEOUT_ERROR"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + + /* + } catch (ResourceAccessException rae) { + 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()); + } + + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("TIMEOUT_ERROR"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + */ + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception: " + e.getMessage()); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("BALANCE_SERVER_ERROR"); + data = new PowerballData(); + data.setSiteId(siteName); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + + log.error(LOG_PREFIX+ "Response Body: " + response.toString()); + ResponseEntity res = new ResponseEntity(response, httpStatus); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/bet") + public ResponseEntity bet(HttpServletRequest request, @RequestBody net.sf.json.JSONObject reqBodyObj) throws Exception { + PowerballResponse response = null; + PowerballData data = null; + HttpStatus httpStatus = HttpStatus.OK; + + ObjectMapper mapper = new ObjectMapper(); + PowerballRequest reqBody = mapper.readValue(reqBodyObj.toString(), new TypeReference() {}); + + //사이트정보 + HashMap sParam = new HashMap(); + long siteIdx = Long.parseLong(reqBody.getId().substring(0, 3), 16); + String memberId = reqBody.getId().substring(3, reqBody.getId().length()); + + String siteId = reqBody.getSiteId(); + String id = reqBody.getId(); + String transactionId = reqBody.getBetId(); + String gameName = reqBody.getGameName(); + + String gameType = reqBody.getGameType(); + String gameTypeName = ""; + String betType = reqBody.getBetType(); + String betTypeName = ""; + String rateType = ""; + + final String LOG_PREFIX = "#-CB::POWER_BALL::"+memberId+"::"+transactionId+"::BET::::"; + + log.info(LOG_PREFIX+ "reqBodyObj:"+reqBodyObj); + log.info(LOG_PREFIX+ "reqBody:"+reqBody); + + try { + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", ""); + sParam.put("vendorGameCode", "powerball"); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NOT_FOUND_USER"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "siteVendorInfo::"+siteVendorInfo.toString()); + + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + int amount = Math.abs(reqBody.getBetAmt()); + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NO_SITE_CREDIT"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = transactionId; + String tranId = siteId + "#D#" + vendorTranKey; + String betId = siteId + "#" + vendorTranKey; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + List> infoList = siteService.getPowerBallInfoList(gameType); + for(HashMap info : infoList) { + if(betType.equals(info.get("betType").toString())) { + gameTypeName = info.get("gameTypeName").toString(); + betTypeName = info.get("betTypeName").toString(); + rateType = info.get("rateType").toString(); + } + } + + if(gameTypeName.equals("") || betTypeName.equals("")) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NOT_FOUND_GAME_TYPE"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "powerball"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", gameName+"("+gameTypeName+")"); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", 0); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject debit = new JSONObject(); + debit.put("betId", betId); + debit.put("tranId", tranId); + debit.put("userId", memberId); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "powerball"); + debit.put("gameIdx", vendorIdx); + debit.put("gameKey", gameName+"("+gameTypeName+")"); + debit.put("gameType", gameType); + debit.put("gameId", ""); + debit.put("tranType", "debit"); + debit.put("debit", amount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + + /** + * betType : 유저가 배팅한 타입 + * gameType : 게임 타입 + * resultType : 결과 타입 + */ + + JSONArray detailsArr = new JSONArray(); + + JSONObject detailItem = new JSONObject(); + detailItem.put("detailId", betType+"("+betTypeName+")"); + detailItem.put("detailType", rateType); + detailItem.put("detailName", gameType+"("+gameTypeName+")"); + detailItem.put("betAmt", amount); + detailItem.put("betWinAmt", 0); + detailsArr.put(detailItem); + + debit.put("betDetails", detailsArr); + + log.info(LOG_PREFIX + "SEND_DEBIT request body: " + debit.toString()); + JSONObject resData = new JSONObject(); + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, debit); + log.info(LOG_PREFIX + "SEND_DEBIT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_DEBIT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + + response = new PowerballResponse(); + response.setResult("SUCCESS"); + response.setMsg(""); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance(Integer.toString(balance)); + response.setData(data); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg(msg); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("TIMEOUT_ERROR"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception: " + e.getMessage()); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("BET_SERVER_ERROR"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + + + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "Response Body: " + response.toString()); + ResponseEntity res = new ResponseEntity(response, httpStatus); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/result") + public ResponseEntity result(HttpServletRequest request, @RequestBody net.sf.json.JSONObject reqBodyObj) throws Exception { + PowerballResponse response = null; + PowerballData data = null; + HttpStatus httpStatus = HttpStatus.OK; + + ObjectMapper mapper = new ObjectMapper(); + PowerballRequest reqBody = mapper.readValue(reqBodyObj.toString(), new TypeReference() {}); + + //사이트정보 + HashMap sParam = new HashMap(); + long siteIdx = Long.parseLong(reqBody.getId().substring(0, 3), 16); + String memberId = reqBody.getId().substring(3, reqBody.getId().length()); + + String siteId = reqBody.getSiteId(); + String id = reqBody.getId(); + String transactionId = reqBody.getBetId(); + String gameName = reqBody.getGameName(); + + String gameType = reqBody.getGameType(); + String gameTypeName = ""; + String betType = reqBody.getBetType(); + String betTypeName = ""; + if(reqBody.getResultType() == null) { + reqBody.setResultType(""); + } + String resultType = reqBody.getResultType(); + String resultTypeName = ""; + String rateType = ""; + + final String LOG_PREFIX = "#-CB::POWER_BALL::"+memberId+"::"+transactionId+"::RESULT::::"; + + log.info(LOG_PREFIX+ "reqBodyObj:"+reqBodyObj); + log.info(LOG_PREFIX+ "reqBody:"+reqBody); + + try { + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", ""); + sParam.put("vendorGameCode", "powerball"); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NOT_FOUND_USER"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "siteVendorInfo::"+siteVendorInfo.toString()); + + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + int amount = Math.abs(reqBody.getBetWinAmt()); + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NO_SITE_CREDIT"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorTranKey = transactionId; + String tranId = siteId + "#C#" + vendorTranKey; + String betId = siteId + "#" + vendorTranKey; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + List> infoList = siteService.getPowerBallInfoList(gameType); + for(HashMap info : infoList) { + if(betType.equals(info.get("betType").toString())) { + gameTypeName = info.get("gameTypeName").toString(); + betTypeName = info.get("betTypeName").toString(); + rateType = info.get("rateType").toString(); + } + if(resultType.equals(info.get("betType").toString())) { + resultTypeName = info.get("betTypeName").toString(); + } + } + + if(gameTypeName.equals("") || betTypeName.equals("")) { + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("NOT_FOUND_GAME_TYPE"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + log.error(LOG_PREFIX+ "Response Body: "+response.toString()); + return new ResponseEntity(response, httpStatus); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "powerball"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", gameName+"("+gameTypeName+")"); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + /** + * betType : 유저가 배팅한 타입 + * gameType : 게임 타입 + * resultType : 결과 타입 + */ + + JSONArray detailsArr = new JSONArray(); + JSONObject detailItem = new JSONObject(); + detailItem.put("detailId", betType+"("+betTypeName+")"); + detailItem.put("detailType", rateType); + detailItem.put("detailName", gameType+"("+gameTypeName+")"); + detailItem.put("betAmt", 0); + detailItem.put("betWinAmt", amount); + + JSONObject detailCredit = new JSONObject(); + detailCredit.put("rateType", rateType); + detailCredit.put("betType", betType); + detailCredit.put("betTypeName", betTypeName); + detailCredit.put("gameType", gameType); + detailCredit.put("gameTypeName", gameTypeName); + detailCredit.put("resultType", resultType); + detailCredit.put("resultTypeName", resultTypeName); + detailCredit.put("betAmt", reqBody.getBetAmt()); + detailCredit.put("betWinAmt", reqBody.getBetWinAmt()); + + detailItem.put("detail", detailCredit); + detailsArr.put(detailItem); + + tranParam.put("detail", detailCredit.toString()); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject credit = new JSONObject(); + credit.put("betId", betId); + credit.put("tranId", tranId); + credit.put("userId", memberId); + credit.put("vendorIdx", vendorIdx); + credit.put("vendorKey", vendorKey); + credit.put("vendor", "powerball"); + credit.put("gameIdx", vendorIdx); + credit.put("gameKey", gameName+"("+gameTypeName+")"); + credit.put("gameType", gameType); + credit.put("gameId", ""); + credit.put("tranType", "credit"); + credit.put("debit", 0); + credit.put("credit", amount); + credit.put("isCancel", 0); + credit.put("isBonus", 0); + credit.put("betDetails", detailsArr); + + log.info(LOG_PREFIX + "SEND_CREDIT request body: " + credit.toString()); + JSONObject resData = new JSONObject(); + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, credit); + log.info(LOG_PREFIX + "SEND_CREDIT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CREDIT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + + response = new PowerballResponse(); + response.setResult("SUCCESS"); + response.setMsg(""); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance(Integer.toString(balance)); + response.setData(data); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg(msg); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("TIMEOUT_ERROR"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception: " + e.getMessage()); + response = new PowerballResponse(); + response.setResult("FAILED"); + response.setMsg("RESULT_SERVER_ERROR"); + data = new PowerballData(); + data.setSiteId(siteId); + data.setMemId(id); + data.setBalance("0"); + response.setData(data); + } + + + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "Response Body: " + response.toString()); + ResponseEntity res = new ResponseEntity(response, httpStatus); + + return res; + } +} diff --git a/src/main/java/com/bb/front/CallBackPowerBallGame.java b/src/main/java/com/bb/front/CallBackPowerBallGame.java new file mode 100644 index 0000000..0dd3246 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackPowerBallGame.java @@ -0,0 +1,469 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.util.HashMap; +import java.util.UUID; + +import org.apache.http.conn.ConnectTimeoutException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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 org.springframework.web.client.ResourceAccessException; + +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@RestController +@Slf4j +@RequestMapping("/api/callback/pbg") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackPowerBallGame { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + JSONObject resData = new JSONObject(); + HttpStatus httpStatus = null; + String userId = requestBody.getString("userId"); + + long siteIdx = Long.parseLong(userId.substring(0, 3), 16); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PBG::balance::"+memberId+":::"; + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo==null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "Callback URL::" + siteApiInfo.get("siteCbUrl")+"/balance"); + log.info(LOG_PREFIX+ "Callback Param::" + member.toString()); + + member.put("userId", memberId); + org.codehaus.jettison.json.JSONObject resBalancedData = callBackService.getBalance(siteApiInfo, member); + if(resBalancedData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + int balance = resBalancedData.getInt("balance"); + resData.put("success", true); + + JSONObject data = new JSONObject(); + + data.put("balance", balance); + resData.put("data", data); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + resData.put("success", false); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + resData.put("success", false); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "Response: "+resData.toString()); + + return new ResponseEntity(resData, HttpStatus.OK); + } + + + @ResponseBody + @PostMapping(path = "/bet", produces = "application/json") // JSON만 생산 + public ResponseEntity bet(HttpServletRequest request, @RequestBody JSONObject requestBody) throws Exception { + + String userId = requestBody.getString("userId"); + //JSONObject transaction = requestBody.getJSONObject("transaction"); + String tranType = "bet"; + long siteIdx = Long.parseLong(userId.substring(0, 3), 16); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PBG::bet::"+memberId+"::"+tranType+":::"; + log.info(LOG_PREFIX+ "Request Body: "+requestBody.toString()); + + JSONObject resData = new JSONObject(); + HttpStatus httpStatus = null; + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "pbg"); + sParam.put("vendorGameCode", "pbg"); + HashMap siteApiInfo = siteService.getSiteVendorInfo(sParam); + if(siteApiInfo==null) { + log.error(LOG_PREFIX+ "siteApiInfo is null "+tranType+" "+userId+"::"+ "Error Msg: NOT_FOUND_SITE_INFO"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + long amount = requestBody.getLong("betAmt"); + + long memberIdx = Long.parseLong(siteApiInfo.get("memberIdx").toString()); + long vendorIdx = Long.parseLong(siteApiInfo.get("vendorIdx").toString()); + + String siteId = siteApiInfo.get("siteId").toString(); + String vendorApiId = siteApiInfo.get("vendorApiId").toString(); + String vendorKey = siteApiInfo.get("vendorKey").toString(); + + // 2025-06-10T07:12:54.355000Z + + String betDateTimeStr = requestBody.getString("betDate")+".000"; + + + if(amount < 0) { + long siteCredit = Long.parseLong(siteApiInfo.get("credit").toString()); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "SITE_IDX: "+siteIdx+" NO_SITE_CREDIT"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + long siteMaxBet = Long.parseLong(siteApiInfo.get("siteMaxBet").toString()); + if(siteMaxBet < amount) { + log.error(LOG_PREFIX+ "SITE_IDX: "+siteIdx+"MAX_BET_AMOUNT_OVER"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + } + UUID uuid = UUID.randomUUID(); + String uid = uuid.toString(); + + String vendorTranKey = requestBody.getString("gameId")+uid; + String tranId = requestBody.getString("gameId")+uid; + String betId = requestBody.getString("gameId"); + + String gameName = requestBody.getString("gameType") +"_"+requestBody.getString("betType"); + String gameId = "1"; + String gameType = "minigame"; + + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "MINIGAME"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pbg"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", gameName); + + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", Math.abs(amount)); + tranParam.put("creditAmt", "0"); + + //tranParam.put("isCancel", "N"); + + tranParam.put("isCancel", "N"); + + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX+ "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX+ "-----INSERT_BET_END-----"); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pbg"); + callBackObj.put("gameIdx", 1); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", Math.abs(amount)); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + + callBackObj.put("requestAt", ""); + log.info(LOG_PREFIX+ "SEND_BET request body: " + callBackObj.toString()); + org.codehaus.jettison.json.JSONObject resTranData = callBackService.changeBalance(LOG_PREFIX, siteApiInfo, callBackObj); + log.info(LOG_PREFIX+ "SEND_BET response body: " + resTranData.toString()); + + if(resTranData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resTranData.getLong("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX+ "UPDATE_CALLBACK_API_STATUS END"); + + long balance = resTranData.getLong("balance"); + JSONObject data = new JSONObject(); + data.put("balance", balance); + + resData.put("success", true); + resData.put("data", data); + httpStatus = HttpStatus.OK; + + } else if(resTranData.getLong("result_code") == 98) { + // 중복 + + + resData.put("success", false); + + httpStatus = HttpStatus.OK; + } else { + // 실패 + log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[InterruptedException]"+rae.getMessage()); + } + + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[ResourceAccessException]"+rae.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + resData.put("success", false); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "#-PBG::::"+userId+"::"+ "[Exception]"+e.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + resData.put("success", false); + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "::"+userId+"::"+ "Response: "+resData.toString()); + + return new ResponseEntity(resData, httpStatus); + } + + @ResponseBody + @PostMapping(path = "/result", produces = "application/json") // JSON만 생산 + public ResponseEntity result(HttpServletRequest request, @RequestBody JSONObject requestBody) throws Exception { + + String userId = requestBody.getString("userId"); + //JSONObject transaction = requestBody.getJSONObject("transaction"); + String tranType = "result"; + long siteIdx = Long.parseLong(userId.substring(0, 3), 16); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PBG::RESULT::"+memberId+"::"+tranType+":::"; + log.info(LOG_PREFIX+ "Request Body: "+requestBody.toString()); + + JSONObject resData = new JSONObject(); + HttpStatus httpStatus = null; + + net.sf.json.JSONArray resultList = requestBody.getJSONArray("result"); + Long lastBalance =0L; + + try { + for(int r=0;r(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + long amount = tranbet.getLong("betWinAmt"); + + long memberIdx = Long.parseLong(siteApiInfo.get("memberIdx").toString()); + long vendorIdx = Long.parseLong(siteApiInfo.get("vendorIdx").toString()); + + String siteId = siteApiInfo.get("siteId").toString(); + String vendorApiId = siteApiInfo.get("vendorApiId").toString(); + String vendorKey = siteApiInfo.get("vendorKey").toString(); + + // 2025-06-10T07:12:54.355000Z + + String betDateTimeStr = tranbet.getString("betDate")+".000"; + + + UUID uuid = UUID.randomUUID(); + String uid = uuid.toString(); + + String vendorTranKey = tranbet.getString("gameId")+uid; + String tranId = tranbet.getString("gameId")+uid; + String betId = tranbet.getString("gameId"); + + String gameName = tranbet.getString("gameType") +"_"+tranbet.getString("betType"); + String gameId = "1"; + String gameType = "minigame"; + + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "MINIGAME"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pbg"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", gameName); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", Math.abs(amount)); + + //tranParam.put("isCancel", "N"); + + tranParam.put("isCancel", "N"); + + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX+ "-----RESULT-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX+ "-----INSERT_RESULT_END-----"); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pbg"); + callBackObj.put("gameIdx", 1); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", Math.abs(amount)); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + + callBackObj.put("requestAt", ""); + log.info(LOG_PREFIX+ "SEND_RESULT request body: " + callBackObj.toString()); + org.codehaus.jettison.json.JSONObject resTranData = callBackService.changeBalance(LOG_PREFIX, siteApiInfo, callBackObj); + log.info(LOG_PREFIX+ "SEND_RESULT response body: " + resTranData.toString()); + + if(resTranData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resTranData.getLong("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX+ "UPDATE_CALLBACK_API_STATUS END"); + + lastBalance = resTranData.getLong("balance"); + + + } else if(resTranData.getLong("result_code") == 98) { + // 중복 + //resData.put("success", false); + } else { + // 실패 + // log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + Thread.sleep(300); + } catch (Exception e) { + log.error(LOG_PREFIX+ "#-POWER RESULT ERROR::::"+userId+"::"+ "[Exception]"+e.getMessage()); + + //httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + // resData.put("success", false); + } + } + + JSONObject data = new JSONObject(); + data.put("balance", lastBalance); + + resData.put("success", true); + resData.put("data", data); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[InterruptedException]"+rae.getMessage()); + } + + log.error(LOG_PREFIX+ "::"+userId+"::"+ "[ResourceAccessException]"+rae.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + resData.put("success", false); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "#-Grand::::"+userId+"::"+ "[Exception]"+e.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + resData.put("success", false); + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "::"+userId+"::"+ "Response: "+resData.toString()); + + return new ResponseEntity(resData, httpStatus); + } + +} diff --git a/src/main/java/com/bb/front/CallBackPracpController.java b/src/main/java/com/bb/front/CallBackPracpController.java new file mode 100644 index 0000000..3279b4b --- /dev/null +++ b/src/main/java/com/bb/front/CallBackPracpController.java @@ -0,0 +1,1193 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; +import java.util.Base64; +import java.util.HashMap; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.GetMapping; +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.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.ResourceAccessException; + +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@RequestMapping("/api/cb/pracp") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackPracpController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @GetMapping(value = "/{agentId}/balance") + public ResponseEntity balance(HttpServletRequest request, @PathVariable String agentId, @RequestParam("player_code") String playerCode) throws Exception { + JSONObject resData = new JSONObject(); + JSONObject resultObj = new JSONObject(); + HttpStatus httpStatus = HttpStatus.OK; + + HashMap keyParam = new HashMap<>(); + keyParam.put("agentId", agentId); + keyParam.put("vendorTitle", "pracp"); + HashMap apiKeyInfo = siteService.getApiKeyInfo2(keyParam); + + String pracpUserId = decryptAES256(playerCode, apiKeyInfo.get("callbackPrivateKey"), apiKeyInfo.get("callbackPublicKey")); + if(pracpUserId == null || "".equals(pracpUserId)) pracpUserId = playerCode; + + long siteIdx = Long.parseLong(pracpUserId.substring(0, 3), 16); + String memberId = pracpUserId.substring(3, pracpUserId.length()); + final String LOG_PREFIX = "#-CB::PRACP::balance::"+memberId+":::"; + + log.info(LOG_PREFIX+ "PathVariable::agentId::"+agentId); + log.info(LOG_PREFIX+ "RequestParam::playerCode::"+playerCode); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + return new ResponseEntity(resData, httpStatus); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "Callback URL::" + siteApiInfo.get("siteCbUrl")+"/balance"); + log.info(LOG_PREFIX+ "Callback Param::" + member.toString()); + + member.put("userId", memberId); + org.codehaus.jettison.json.JSONObject resBalancedData = callBackService.getBalance(siteApiInfo, member); + if(resBalancedData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + return new ResponseEntity(resData, httpStatus); + } + balance = resBalancedData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + resData.put("status", "OK"); + resultObj.put("balance", balance); + resData.put("result", resultObj); + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "Response: "+resData.toString()); + + return res; + } + + @ResponseBody + @PostMapping(value = "/{agentId}/transaction") + public ResponseEntity transaction(HttpServletRequest request, @PathVariable String agentId, @RequestBody JSONObject requestBody) throws Exception { + ResponseEntity resEntity = null; + JSONObject resData = new JSONObject(); + JSONObject resultObj = new JSONObject(); + HttpStatus httpStatus = HttpStatus.OK; + + HashMap keyParam = new HashMap<>(); + keyParam.put("agentId", agentId); + keyParam.put("vendorTitle", "pracp"); + HashMap apiKeyInfo = siteService.getApiKeyInfo2(keyParam); + + String playerCode = requestBody.getString("player_code"); + String pracpUserId = decryptAES256(playerCode, apiKeyInfo.get("callbackPrivateKey"), apiKeyInfo.get("callbackPublicKey")); + if(pracpUserId == null || "".equals(pracpUserId)) pracpUserId = playerCode; + + long siteIdx = Long.parseLong(pracpUserId.substring(0, 3), 16); + String memberId = pracpUserId.substring(3, pracpUserId.length()); + String transactionId = requestBody.getString("uuid"); + final String LOG_PREFIX = "#-CB::PRACP::transaction::"+memberId+"::"+transactionId+"::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + log.info(LOG_PREFIX+ "PathVariable::agentId::"+agentId); + log.info(LOG_PREFIX+ "RequestParam::playerCode::"+playerCode); + + try { + String transactionType = requestBody.getString("type"); + String vendorGameCode = requestBody.getString("provider_code"); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = ""; + betDateTimeStr = sdf.format(System.currentTimeMillis()); + log.info(LOG_PREFIX+ "========== betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "pracp"); + sParam.put("vendorGameCode", vendorGameCode); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다"); + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + resEntity = new ResponseEntity(resData, httpStatus); + return resEntity; + } + + if(transactionType.equals("Bet")) { + log.info(LOG_PREFIX+ "callBet() ================= type: "+transactionType); + int amount = Math.abs(requestBody.getInt("amount")); + resData = callBet(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("Win")) { + log.info(LOG_PREFIX+ "callWin() ================= type: "+transactionType); + int amount = Math.abs(requestBody.getInt("amount")); + resData = callWin(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("Cancel")) { + log.info(LOG_PREFIX+ "callCancel() ================= type: "+transactionType); + int amount = 0; + if(requestBody.has("amount")) { + amount = requestBody.getInt("amount"); + } + resData = callCancel(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("Promo")) { + log.info(LOG_PREFIX+ "callPromo() ================= type: "+transactionType); + int amount = requestBody.getInt("amount"); + resData = callPromo(LOG_PREFIX, siteIdx, memberId, requestBody, betDateTimeStr, siteVendorInfo, amount); + + } else { + log.error(LOG_PREFIX+ "unknown_transaction_type"); + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + + resData.put("status", "FAIL"); + resultObj.put("balance", 0); + resData.put("result", resultObj); + } + + log.info(LOG_PREFIX+ "Response: "+resData.toString()); + resEntity = new ResponseEntity(resData, httpStatus); + + return resEntity; + } + + + private JSONObject callBet(String LOG_PREFIX, long siteIdx, String memberId, JSONObject requestBody, + String betDateTimeStr, HashMap siteVendorInfo, int amount) { + JSONObject response = new JSONObject(); + JSONObject resultObj = new JSONObject(); + + try { + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String vendorTranKey = requestBody.getString("round_id"); + String tranId = requestBody.getString("uuid"); + String betId = requestBody.getString("refer_uuid"); + if(betId == null || "".equals(betId)) betId = tranId; + + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + String gameId = requestBody.getString("game_code").replaceAll(" ", "").toLowerCase(); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + String gameName = requestBody.getString("game_name"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + LOG_PREFIX = LOG_PREFIX + "callBet:::"; + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + return response; + } + + if(!"".equals(gameId) && !"".equals(banGameId) && banGameId.contains(gameId+"|")) { + log.error(LOG_PREFIX+ "Ban Game Id : " + banGameId); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + return response; + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + return response; + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + return response; + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + return response; + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.put("status", "BET_ALREADY_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return response; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "SLOT"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pracp"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pracp"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + org.codehaus.jettison.json.JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.put("status", "OK"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.put("status", "BET_ALREADY_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 80) { + int balance = resData.getInt("balance"); + response.put("status", "INSUFFICIENT_FUNDS"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response.put("status", "INSUFFICIENT_FUNDS"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "잔액부족::Response::" + response.toString()); + return response; + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.put("status", "OK"); + resultObj.put("balance", afBalance); + response.put("result", resultObj); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + + return response; + } + + private JSONObject callWin(String LOG_PREFIX, long siteIdx, String memberId, JSONObject requestBody, + String betDateTimeStr, HashMap siteVendorInfo, int amount) { + JSONObject response = new JSONObject(); + JSONObject resultObj = new JSONObject(); + + try { + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String vendorTranKey = requestBody.getString("round_id"); + String tranId = requestBody.getString("uuid"); + String betId = requestBody.getString("refer_uuid"); + if(betId == null || "".equals(betId)) betId = tranId; + + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + String gameId = requestBody.getString("game_code").replaceAll(" ", "").toLowerCase(); + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + String gameName = requestBody.getString("game_name"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + LOG_PREFIX = LOG_PREFIX + "callWin:::"; + + int siteMaxWin = Integer.parseInt(siteVendorInfo.get("siteMaxWin").toString()); + int overCreditAmt = 0; + if(siteMaxWin < amount && siteMaxWin != 0) { + log.error(LOG_PREFIX+ "MAX_WIN_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxWin : " + siteMaxWin +", amount : " + amount); + overCreditAmt = amount - siteMaxWin; + amount = siteMaxWin; + log.error(LOG_PREFIX+ "Change amount : " + amount +", overCreditAmt : " + overCreditAmt); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.put("status", "BET_ALREADY_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return response; + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.put("status", "BET_DOES_NOT_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return response; + } + + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "SLOT"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pracp"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("overCreditAmt", overCreditAmt); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pracp"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + org.codehaus.jettison.json.JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.put("status", "OK"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.put("status", "BET_ALREADY_SETTLED"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 99) { + int balance = resData.getInt("balance"); + response.put("status", "BET_DOES_NOT_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.put("status", "OK"); + resultObj.put("balance", afBalance); + response.put("result", resultObj); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + + return response; + } + + private JSONObject callCancel(String LOG_PREFIX, long siteIdx, String memberId, + JSONObject requestBody, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + JSONObject response = new JSONObject(); + JSONObject resultObj = new JSONObject(); + + try { + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String vendorTranKey = requestBody.getString("round_id"); + String tranId = requestBody.getString("uuid"); + + String referUuid = requestBody.getString("refer_uuid"); + // 참조되는 트랜잭션 찾기 + HashMap refInfo = siteService.getRefBetInfoByTranId(referUuid); + if(refInfo == null) { + response.put("status", "BET_DOES_NOT_EXIST"); + resultObj.put("balance", 0); + response.put("result", resultObj); + return response; + } + + String betId = refInfo.get("refId").toString(); + String referTranType = refInfo.get("tranType").toString(); + + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + String gameId = requestBody.getString("game_code").replaceAll(" ", "").toLowerCase(); + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + String gameName = requestBody.getString("game_name"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + LOG_PREFIX = LOG_PREFIX + "callCancel:::"; + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.put("status", "BET_ALREADY_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return response; + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.put("status", "BET_DOES_NOT_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "NOT_FOUND_REF_DATA::Response::" + response.toString()); + return response; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "SLOT"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pracp"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + if(referTranType.equals("debit")) { + // 배팅 취소 + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", Math.abs(amount)); + } else { + // 당첨 취소 + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", Math.abs(amount)); + tranParam.put("creditAmt", "0"); + } + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pracp"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + if(referTranType.equals("debit")) { + // 배팅 취소 + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", Math.abs(amount)); + callBackObj.put("isCancel", 1); + } else { + // 당첨 취소 + callBackObj.put("tranType", "adjust"); + callBackObj.put("debit", Math.abs(amount)); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + } + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + org.codehaus.jettison.json.JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.put("status", "OK"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.put("status", "BET_ALREADY_SETTLED"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 99) { + int balance = resData.getInt("balance"); + response.put("status", "BET_DOES_NOT_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = 0; + if(referTranType.equals("debit")) { + // 배팅 취소 + afBalance = balance + Math.abs(amount); + } else { + // 당첨 취소 + afBalance = balance - Math.abs(amount); + } + + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.put("status", "OK"); + resultObj.put("balance", afBalance); + response.put("result", resultObj); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + + return response; + } + + private JSONObject callPromo(String LOG_PREFIX, long siteIdx, String memberId, + JSONObject requestBody, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + JSONObject response = new JSONObject(); + JSONObject resultObj = new JSONObject(); + + try { + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + String vendorTranKey = requestBody.getString("round_id"); + String tranId = requestBody.getString("uuid"); + String betId = requestBody.getString("refer_uuid"); + if(betId == null || "".equals(betId)) betId = tranId; + + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + String gameId = requestBody.getString("game_code").replaceAll(" ", "").toLowerCase(); + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + String gameName = requestBody.getString("game_name"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + LOG_PREFIX = LOG_PREFIX + "callPromo:::"; + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.put("status", "BET_ALREADY_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return response; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "SLOT"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pracp"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pracp"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 1); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_PROMO request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_PROMO_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_PROMO_END-----"); + + org.codehaus.jettison.json.JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_PROMO status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_PROMO response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.put("status", "OK"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.put("status", "BET_ALREADY_SETTLED"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else if(resData.getLong("result_code") == 99) { + int balance = resData.getInt("balance"); + response.put("status", "BET_DOES_NOT_EXIST"); + resultObj.put("balance", balance); + response.put("result", resultObj); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_PROMO_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_PROMO_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.put("status", "OK"); + resultObj.put("balance", afBalance); + response.put("result", resultObj); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response.put("status", "FAIL"); + resultObj.put("balance", 0); + response.put("result", resultObj); + } + + return response; + } + + private static String decryptAES256(String encryptedData, String keyBase64, String ivBase64) { + try { + // JS의 encryptedData = encryptedData.split(" ").join("+")와 동일 + encryptedData = encryptedData.replace(" ", "+"); + + System.out.println("[DECRYPT] Starting decryption process"); + System.out.println("[DECRYPT] Input data:"); + System.out.println("encryptedData = " + encryptedData); + System.out.println("keyBase64 = " + keyBase64); + System.out.println("ivBase64 = " + ivBase64); + + // Base64 → byte[] + byte[] keyBytes = Base64.getDecoder().decode(keyBase64); + byte[] ivBytes = Base64.getDecoder().decode(ivBase64); + byte[] encryptedBytes = Base64.getDecoder().decode(encryptedData); + + System.out.println("[DECRYPT] Key and IV buffers created successfully"); + + // Key, IV 설정 + SecretKeySpec secretKey = new SecretKeySpec(keyBytes, "AES"); + IvParameterSpec ivSpec = new IvParameterSpec(ivBytes); + + // Cipher 생성 (AES-256-CBC + PKCS5Padding) + Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, secretKey, ivSpec); + + // 복호화 + byte[] decryptedBytes = cipher.doFinal(encryptedBytes); + String decrypted = new String(decryptedBytes, StandardCharsets.UTF_8); + + System.out.println("[DECRYPT] Decryption successful"); + System.out.println("[DECRYPT] Decrypted result: " + + (decrypted.length() > 10 ? decrypted.substring(0, 10) + "..." : decrypted)); + + return decrypted; + + } catch (Exception e) { + System.err.println("[DECRYPT] Decryption failed with error: " + e.getMessage()); + return ""; + } + } +} diff --git a/src/main/java/com/bb/front/CallBackPragmaticController.java b/src/main/java/com/bb/front/CallBackPragmaticController.java new file mode 100644 index 0000000..b5b59b2 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackPragmaticController.java @@ -0,0 +1,1731 @@ +package com.bb.front; + +import java.net.URLDecoder; +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import org.codehaus.jettison.json.JSONException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +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 org.springframework.web.reactive.function.client.WebClient; + +import com.bb.jwt.JwtManager; +import com.bb.model.BetParam; +import com.bb.model.Member; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@RestController +@Slf4j +@RequestMapping("/api/callback/pp/") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackPragmaticController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + WebClient webClient; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + @CrossOrigin + @PostMapping(value = "/Authenticate") + public @ResponseBody JSONObject authenticate(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("token"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + /* + * String ipAdress = URLDecoder.decode(request.getParameter("ipAdress"), + * "UTF-8"); String chosenBalance = + * URLDecoder.decode(request.getParameter("chosenBalance"), "UTF-8"); String + * lunchingType = URLDecoder.decode(request.getParameter("lunchingType"), + * "UTF-8"); String proviousToken = + * URLDecoder.decode(request.getParameter("proviousToken"), "UTF-8"); + */ + + try { + //String userId = token; + HashMap sParam = new HashMap(); + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::authenticate:::"; + log.info(LOG_PREFIX+ "userId : " + userId); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + + double balance = 0L; + // ##--isTransfer 처리-## + if (IS_TRANSFER.equals("Y")) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + + } else { + DecimalFormat formatter = new DecimalFormat("0.##"); + + org.codehaus.jettison.json.JSONObject memberParam = new org.codehaus.jettison.json.JSONObject(); + memberParam.put("userId", memberId); + org.codehaus.jettison.json.JSONObject cbResData = callBackService.getBalance(siteApiInfo, memberParam); + balance = cbResData.getDouble("balance"); + } + + double bonus = 0.00; + resData.put("userId", siteApiInfo.get("siteIdxHex").toString() + memberId); + resData.put("currency", "VND"); + resData.put("cash", balance); + resData.put("bonus", bonus); + resData.put("error", 0); + resData.put("description", "Success"); + + } catch (Exception e) { + log.info(e.toString()); + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/Balance") + public @ResponseBody JSONObject balance(HttpServletRequest request, @RequestBody(required = false) String parambody) + throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + // String token = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + /* + * String ipAdress = URLDecoder.decode(request.getParameter("ipAdress"), + * "UTF-8"); String chosenBalance = + * URLDecoder.decode(request.getParameter("chosenBalance"), "UTF-8"); String + * lunchingType = URLDecoder.decode(request.getParameter("lunchingType"), + * "UTF-8"); String proviousToken = + * URLDecoder.decode(request.getParameter("proviousToken"), "UTF-8"); + */ + + try { + HashMap sParam = new HashMap(); + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::balance:::"; + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + double balance = 0L; + // ##--isTransfer 처리-## + if (IS_TRANSFER.equals("Y")) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + + } else { + + org.codehaus.jettison.json.JSONObject memberParam = new org.codehaus.jettison.json.JSONObject(); + memberParam.put("userId", memberId); + org.codehaus.jettison.json.JSONObject cbResData = callBackService.getBalance(siteApiInfo, memberParam); + balance = cbResData.getDouble("balance"); + } + + double bonus = 0.00; + + resData.put("currency", "VND"); + resData.put("cash", balance); + resData.put("bonus", bonus); + resData.put("error", 0); + resData.put("description", "Success"); + + } catch (Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + + + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/Bet") + public @ResponseBody JSONObject bet(HttpServletRequest request, @RequestBody(required = false) String parambody) + throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String gameId = URLDecoder.decode(request.getParameter("gameId"), "UTF-8"); + String roundId = URLDecoder.decode(request.getParameter("roundId"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String reference = URLDecoder.decode(request.getParameter("reference"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + String timestamp = URLDecoder.decode(request.getParameter("timestamp"), "UTF-8"); + String roundDetails = URLDecoder.decode(request.getParameter("roundDetails"), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::bet:::"; + log.info(LOG_PREFIX+ "# sparam () : " + sParam.toString()); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam siteApiInfo () : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + log.info(LOG_PREFIX+ "# sparam BET 0() : no setting"); + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // ##--isTransfer 처리-## + log.info(LOG_PREFIX+ "# sparam authParam {} ", authParam.toString()); + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + log.info(LOG_PREFIX+ "# sparam BET1 () : no member"); + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + log.info(LOG_PREFIX+ "# sparam targetSiteCredit {} ", targetSiteCredit); + + double amount = Double.parseDouble(amountStr); + log.info(LOG_PREFIX+ "# sparam amount {} ", amount); + + + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + if ((targetSiteCredit < amount || targetSiteCredit < 0) && IS_TRANSFER.equals("N") ) { + log.info(LOG_PREFIX+ "# sparam BET2 () : no cash"); + resData.put("error", 1); + resData.put("description", "Insufficient balance"); + return resData; + } + + int vendorIdx = 17; + String vendorKey = "S02"; + String vendorCetegory = "SLOT"; + if (!(gameId.startsWith("vs") || gameId.startsWith("cs"))) { + vendorIdx = 2; + vendorKey = "C02"; + vendorCetegory = "CASINO"; + } + + sParam.put("vendorIdx", vendorIdx); + long maxBet = siteService.getSiteMaxBet(sParam); + + // userMaxBet 조회 (userMaxBet 우선 적용) + long userMaxBet = 0; + Long userMaxBetObj = siteService.getUserMaxBet(sParam); + if(userMaxBetObj != null) { + userMaxBet = userMaxBetObj; + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : maxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + maxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if (amount > finalMaxBet) { + log.info(LOG_PREFIX + "# sparam finalMaxBet {} ", finalMaxBet); + log.info(LOG_PREFIX + "# sparam BET3 () : max bet limit"); + resData.put("error", 310); + resData.put("description", "bet limits"); + + return resData; + } + + HashMap tranParam = new HashMap(); + + String refId = siteId + roundId; + + log.info(LOG_PREFIX+ "# sparam refId {}", siteId + roundId); + + tranParam.put("tranId", siteId + reference); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", reference); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameId); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + + tranParam.put("isTransfer", IS_TRANSFER); + double balance = 0L; + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", siteId + reference); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", gameId); + debit.put("gameType", "slot"); + debit.put("gameId", gameId); + debit.put("tranType", "debit"); + debit.put("debit", fakeAmount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + + if (IS_TRANSFER.equals("Y")) { + + + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(siteId + reference); + + + try { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + if (balance < amount) { + resData.put("error", 1); + resData.put("description","Insufficient balance"); + return resData; + } + + + if (cntTr == 0) { + siteService.commonBetinsert(tranParam); + } + double afBalance = balance - amount; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (double)afBalance); + tranParam.put("preBalance", (double)balance); + if (cntTr == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + if (cntTr == 0) { + resData.put("cash", afBalance); + }else { + resData.put("cash", balance); + } + resData.put("bonus", 0); + resData.put("usedPromo", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC BET - ", siteApiInfo, debit); + } else { + asyncCallBackService.asyncChangeBalance("PRAGMATIC BET - ", siteApiInfo, debit); + } + } + + } catch (Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + + + + + return resData; + } + + } else { + + siteService.commonBetinsert(tranParam); + + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + + if (vendorCetegory.equals("SLOT")) { + cbResData = callBackService.changeBalanceSlot("PRAGMATIC BET - ", siteApiInfo, debit); + } else { + cbResData = callBackService.changeBalance("PRAGMATIC BET - ", siteApiInfo, debit); + } + + log.info(LOG_PREFIX+ "cbResData {}", cbResData.toString()); + + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + if (cbResData.getLong("result_code") == 0 ) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("usedPromo", 0); + resData.put("error", 0); + resData.put("description", "Success"); + } else if (cbResData.getLong("result_code") == 80) { + resData.put("error", 1); + resData.put("description", "Insufficient balance"); + return resData; + } else if (cbResData.getLong("result_code") == 81) { + resData.put("error", 310); + resData.put("description", "bet limits"); + return resData; + } else { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::bet:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/Refund") + public @ResponseBody JSONObject refund(HttpServletRequest request, @RequestBody(required = false) String parambody) + throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String reference = URLDecoder.decode(request.getParameter("reference"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::refund:::"; + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + // 베팅 정보 가져오기 없으면 에러 + HashMap betInfo = siteService.getBetInfoByTranId(reference); + + double amount = Double.parseDouble(betInfo.get("depositAmt").toString()); + + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + + int vendorIdx = Integer.parseInt(betInfo.get("vendorIdx").toString()); + String vendorKey = "S02"; + String vendorCetegory = "SLOT"; + if(vendorIdx!=17) { + vendorKey = "C02"; + vendorCetegory = "CASINO"; + } + + HashMap tranParam = new HashMap(); + + String refId = betInfo.get("refId").toString(); + + tranParam.put("tranId", betInfo.get("tranId").toString() + "#R"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", Integer.parseInt(betInfo.get("vendorIdx").toString())); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", reference); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", betInfo.get("gameIdx").toString()); + tranParam.put("gameIdx", betInfo.get("gameIdx").toString()); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + + tranParam.put("isTransfer", IS_TRANSFER); + + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", betInfo.get("tranId").toString() + "#R"); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", betInfo.get("gameIdx").toString()); + debit.put("gameType", "slot"); + debit.put("gameId", betInfo.get("gameIdx").toString()); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 1); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + + + if (IS_TRANSFER.equals("N")) { + siteService.commonBetinsert(tranParam); + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + if (vendorCetegory.equals("SLOT")) { + cbResData = callBackService.changeBalanceSlot("PRAGMATIC REFUND - ", siteApiInfo, debit); + } else { + cbResData = callBackService.changeBalance("PRAGMATIC REFUND - ", siteApiInfo, debit); + } + + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + + if (cbResData.getLong("result_code") == 0 ) { + int res = siteService.updateCbApi(tranParam); + } + + resData.put("transactionId", reference); + resData.put("currency", "VND"); + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + } else { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + + }else { + + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(betInfo.get("tranId").toString() + "#R"); + + if(cntTr==0) { + siteService.commonBetinsert(tranParam); + } + try { + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance + amount; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (double)afBalance); + tranParam.put("preBalance", (double)balance); + if(cntTr==0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + if(cntTr==0) { + resData.put("cash", afBalance); + }else { + resData.put("cash", balance); + } + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC REFUND - ", siteApiInfo, debit); + } else { + asyncCallBackService.asyncChangeBalance("PRAGMATIC REFUND - ", siteApiInfo, debit); + } + } + + }catch(Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::refund:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/Result") + public @ResponseBody JSONObject result(HttpServletRequest request, @RequestBody(required = false) String parambody) + throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String gameId = URLDecoder.decode(request.getParameter("gameId"), "UTF-8"); + String roundId = URLDecoder.decode(request.getParameter("roundId"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String reference = URLDecoder.decode(request.getParameter("reference"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + String timestamp = URLDecoder.decode(request.getParameter("timestamp"), "UTF-8"); + String roundDetails = URLDecoder.decode(request.getParameter("roundDetails"), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::result:::"; + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + double amount = Double.parseDouble(amountStr); + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + int vendorIdx = 17; + String vendorKey = "S02"; + String vendorCetegory = "SLOT"; + if (!(gameId.startsWith("vs") || gameId.startsWith("cs"))) { + vendorIdx = 2; + vendorKey = "C02"; + vendorCetegory = "CASINO"; + } + + HashMap tranParam = new HashMap(); + + String refId = siteId + roundId; + + tranParam.put("tranId", siteId + reference); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", reference); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameId); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + tranParam.put("isTransfer", IS_TRANSFER); + + + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject (); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", siteId + reference); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", gameId); + debit.put("gameType", "slot"); + debit.put("gameId", gameId); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + + + + if (IS_TRANSFER.equals("N")) { + + siteService.commonBetinsert(tranParam); + + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + if (vendorCetegory.equals("SLOT")) { + cbResData = callBackService.changeBalanceSlot("PRAGMATIC SEAMLESS Result - ", siteApiInfo, debit); + } else { + cbResData = callBackService.changeBalance("PRAGMATIC SEAMLESS Result - ", siteApiInfo, debit); + } + + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + if (cbResData.getLong("result_code") == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + } else { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + + }else { + + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(siteId + reference); + + + if(cntTr == 0) { + siteService.commonBetinsert(tranParam); + } + + try { + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance + amount; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (double)afBalance); + tranParam.put("preBalance", (double)balance); + if(cntTr == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + if(cntTr == 0) { + resData.put("cash", afBalance); + }else { + resData.put("cash", balance); + } + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC TRANSFER RESULT - ", siteApiInfo, debit); + } else { + asyncCallBackService.asyncChangeBalance("PRAGMATIC TRANSFER RESULT - ", siteApiInfo, debit); + } + } + + }catch(Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::result:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/BonusWin") + public @ResponseBody JSONObject bonusWin(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String reference = URLDecoder.decode(request.getParameter("reference"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + String timestamp = URLDecoder.decode(request.getParameter("timestamp"), "UTF-8"); + String roundDetails = URLDecoder.decode(request.getParameter("roundDetails"), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::bonusWin:::"; + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + double amount = Double.parseDouble(amountStr); + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + HashMap tranParam = new HashMap(); + + String refId = siteId + reference; + + tranParam.put("tranId", refId); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "SLOT"); + tranParam.put("vendorIdx", 17); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", reference); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", providerId); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + tranParam.put("isTransfer", IS_TRANSFER); + + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", siteId + reference); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 17); + debit.put("vendorKey", "S02"); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", "slot"); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 1); + debit.put("decYn", "Y"); + + + if (IS_TRANSFER.equals("N")) { + siteService.commonBetinsert(tranParam); + + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + cbResData = callBackService.changeBalanceSlot("PRAGMATIC SEAMLESS BONUS - ", siteApiInfo, debit); + + + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + if(cbResData.getLong("result_code") == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + } else { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + }else { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(siteId + reference); + if(cntTr == 0) { + siteService.commonBetinsert(tranParam); + } + try { + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance + amount; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (double)afBalance); + tranParam.put("preBalance", (double)balance); + if(cntTr == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + if(cntTr == 0) { + resData.put("cash", afBalance); + }else{ + resData.put("cash", balance); + } + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC TRANSFER BONUS - ", siteApiInfo, debit); + } + + + }catch(Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::bonusWin:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/PromoWin") + public @ResponseBody JSONObject promoWin(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String reference = URLDecoder.decode(request.getParameter("reference"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + String timestamp = URLDecoder.decode(request.getParameter("timestamp"), "UTF-8"); + String roundId = URLDecoder.decode(request.getParameter("roundId"), "UTF-8"); + String gameId = URLDecoder.decode(request.getParameter("gameId "), "UTF-8"); + String campaignId = URLDecoder.decode(request.getParameter("campaignId"), "UTF-8"); + String campaignType = URLDecoder.decode(request.getParameter("campaignType "), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::promoWin:::"; + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + double amount = Double.parseDouble(amountStr); + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + int vendorIdx = 17; + String vendorKey = "S02"; + String vendorCetegory = "SLOT"; + if (!(gameId.startsWith("vs") || gameId.startsWith("cs"))) { + vendorIdx = 2; + vendorKey = "C02"; + vendorCetegory = "CASINO"; + } + + HashMap tranParam = new HashMap(); + + String refId = siteId + reference; + + tranParam.put("tranId", refId); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", reference); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", providerId); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + tranParam.put("isTransfer", IS_TRANSFER); + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", siteId + reference); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", gameId); + debit.put("gameType", "slot"); + debit.put("gameId", gameId); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 1); + debit.put("decYn", "Y"); + + if (IS_TRANSFER.equals("N")) { + siteService.commonBetinsert(tranParam); + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + if (vendorCetegory.equals("SLOT")) { + cbResData = callBackService.changeBalanceSlot("PRAGMATIC PromoWin - ", siteApiInfo, debit); + } else { + cbResData = callBackService.changeBalance("PRAGMATIC PromoWin - ", siteApiInfo, debit); + } + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + if (cbResData.getLong("result_code") == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + } else { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + + }else { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(siteId + reference); + if(cntTr == 0) { + siteService.commonBetinsert(tranParam); + } + try { + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance + amount; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (double)afBalance); + tranParam.put("preBalance", (double)balance); + if(cntTr == 0) { + int res = siteService.updateCbApi(tranParam); + } + resData.put("transactionId", reference); + resData.put("currency", "VND"); + if(cntTr == 0) { + resData.put("cash", afBalance); + }else { + resData.put("cash", balance); + } + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC TRANSFER PromoWin - ", siteApiInfo, debit); + } else { + asyncCallBackService.asyncChangeBalance("PRAGMATIC TRANSFER PromoWin - ", siteApiInfo, debit); + } + } + + + }catch(Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::promoWin:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/JackpotWin") + public @ResponseBody JSONObject jackpotWin(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String gameId = URLDecoder.decode(request.getParameter("gameId"), "UTF-8"); + String roundId = URLDecoder.decode(request.getParameter("roundId"), "UTF-8"); + String jackpotId = URLDecoder.decode(request.getParameter("jackpotId"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String reference = URLDecoder.decode(request.getParameter("reference"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + String timestamp = URLDecoder.decode(request.getParameter("timestamp"), "UTF-8"); + String roundDetails = URLDecoder.decode(request.getParameter("roundDetails"), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::jackpotWin:::"; + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + double amount = Double.parseDouble(amountStr); + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + int vendorIdx = 17; + String vendorKey = "S02"; + String vendorCetegory = "SLOT"; + if (!(gameId.startsWith("vs") || gameId.startsWith("cs"))) { + vendorIdx = 2; + vendorKey = "C02"; + vendorCetegory = "CASINO"; + } + + HashMap tranParam = new HashMap(); + + String refId = siteId + roundId; + + tranParam.put("tranId", siteId + jackpotId + "#J"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", reference); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", providerId); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + tranParam.put("isTransfer", IS_TRANSFER); + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", siteId + jackpotId + "#J"); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", gameId); + debit.put("gameType", "slot"); + debit.put("gameId", gameId); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 1); + debit.put("decYn", "Y"); + + if (IS_TRANSFER.equals("N")) { + siteService.commonBetinsert(tranParam); + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + if (vendorCetegory.equals("SLOT")) { + cbResData = callBackService.changeBalanceSlot("PRAGMATIC JackpotWin - ", siteApiInfo, debit); + } else { + cbResData = callBackService.changeBalance("PRAGMATIC JackpotWin - ", siteApiInfo, debit); + } + + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + if (cbResData.getLong("result_code") == 0) { + int res = siteService.updateCbApi(tranParam); + } + + resData.put("transactionId", reference); + resData.put("currency", "VND"); + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + } else { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + }else { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(siteId + jackpotId + "#J"); + if(cntTr == 0) { + siteService.commonBetinsert(tranParam); + } + try { + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance + amount; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (long)afBalance); + tranParam.put("preBalance", (long)balance); + if(cntTr == 0) { + int res = siteService.updateCbApi(tranParam); + } + + resData.put("transactionId", reference); + resData.put("currency", "VND"); + if(cntTr == 0) { + resData.put("cash", afBalance); + }else { + resData.put("cash", balance); + } + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC TRANSFER JackpotWin - ", siteApiInfo, debit); + } else { + asyncCallBackService.asyncChangeBalance("PRAGMATIC TRANSFER JackpotWin - ", siteApiInfo, debit); + } + } + + + }catch(Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::jackpotWin:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("status", "failure"); + resData.put("balance", "0.00"); + } + return resData; + } + + @CrossOrigin + @PostMapping(value = "/EndRound") + public @ResponseBody JSONObject endRound(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + JSONObject resData = new JSONObject(); + String hash = URLDecoder.decode(request.getParameter("hash"), "UTF-8"); + String userId = URLDecoder.decode(request.getParameter("userId"), "UTF-8"); + String gameId = URLDecoder.decode(request.getParameter("gameId"), "UTF-8"); + String roundId = URLDecoder.decode(request.getParameter("roundId"), "UTF-8"); + String providerId = URLDecoder.decode(request.getParameter("providerId"), "UTF-8"); + + try { + HashMap sParam = new HashMap(); + + sParam.put("siteIdx", Integer.parseInt(userId.substring(0, 3), 16)); + sParam.put("memberId", userId.substring(3, userId.length())); + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::endRound:::"; + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + String siteId = siteApiInfo.get("siteId").toString(); + log.info(LOG_PREFIX+ "# sparam() : " + siteApiInfo.toString()); + + if (siteApiInfo == null) { + + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + resData.put("error", 2); + resData.put("description", "Player not found or logged out."); + return resData; + } + + // 크레딧 정보가 없는경우 체크 + BetParam betCheckParam = new BetParam(); + betCheckParam.setBetId(siteId + roundId); + HashMap betCheck = siteService.getBetCheck(betCheckParam); + + int vendorIdx = 17; + String vendorKey = "S02"; + String vendorCetegory = "SLOT"; + if (!(gameId.startsWith("vs") || gameId.startsWith("cs"))) { + vendorIdx = 2; + vendorKey = "C02"; + vendorCetegory = "CASINO"; + } + + + final String IS_TRANSFER = siteApiInfo.get("isTransfer").toString(); + + if (Integer.parseInt(betCheck.get("credit").toString()) == 0) { + + HashMap tranParam = new HashMap(); + + String refId = siteId + roundId; + + tranParam.put("tranId", siteId + roundId + "#CLOSE"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pragmatic"); + tranParam.put("vendorTranKey", roundId + "#CLOSE"); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameId); + + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", "dfngtnslt_est88"); + tranParam.put("isTransfer", IS_TRANSFER); + + + org.codehaus.jettison.json.JSONObject debit = new org.codehaus.jettison.json.JSONObject(); + + debit.put("betId", refId); + debit.put("tranId", siteId + roundId + "#CLOSE"); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "pragmatic"); + debit.put("gameIdx", 1); + debit.put("gameKey", gameId); + debit.put("gameType", "slot"); + debit.put("gameId", gameId); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 1); + debit.put("decYn", "Y"); + + if (IS_TRANSFER.equals("N")) { + siteService.commonBetinsert(tranParam); + + org.codehaus.jettison.json.JSONObject cbResData = new org.codehaus.jettison.json.JSONObject(); + if (vendorCetegory.equals("SLOT")) { + cbResData = callBackService.changeBalanceSlot("PRAGMATIC ENDGame - ", siteApiInfo, debit); + } else { + cbResData = callBackService.changeBalance("PRAGMATIC ENDGame - ", siteApiInfo, debit); + } + + + if (cbResData.getLong("result_code") == 0 || cbResData.getLong("result_code") == 98) { + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", Double.parseDouble(cbResData.getString("balance"))); + if (cbResData.getLong("result_code") == 0 ) { + int res = siteService.updateCbApi(tranParam); + } + + resData.put("cash", Double.parseDouble(cbResData.getString("balance"))); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + } + }else { + + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(siteId + roundId + "#CLOSE"); + if(cntTr ==0) { + siteService.commonBetinsert(tranParam); + } + try { + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + tranParam.put("balance", (long)afBalance); + tranParam.put("preBalance", (long)balance); + if(cntTr ==0) { + int res = siteService.updateCbApi(tranParam); + } + if(cntTr ==0) { + resData.put("cash", afBalance); + }else { + resData.put("cash", balance); + } + + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + debit.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot("PRAGMATIC TRANSFER ENDGame - ", siteApiInfo, debit); + } else { + asyncCallBackService.asyncChangeBalance("PRAGMATIC TRANSFER ENDGame - ", siteApiInfo, debit); + } + } + + + }catch(Exception e) { + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + } + } else { + if (IS_TRANSFER.equals("N")) { + double balance = getBalanceDouble(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + resData.put("cash", balance); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + }else { + + double balance = 0L; + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteApiInfo.get("siteIdx")); + balanceMap.put("memberId", memberId); + balance = Double.parseDouble("" + siteService.getUserBalance(balanceMap)); + + double afBalance = balance; + log.info(LOG_PREFIX+ "siteService.updateCbApi(tranParam)"); + + resData.put("cash", afBalance); + resData.put("bonus", 0); + resData.put("error", 0); + resData.put("description", "Success"); + + } + + } + + } catch (Exception e) { + String memberId = userId.substring(3, userId.length()); + final String LOG_PREFIX = "#-CB::PP::"+memberId+"::endRound:::"; + log.error(LOG_PREFIX+ e.toString()); + resData.put("error", 120); + resData.put("description", "Internal Server Error(no-retry)"); + } + return resData; + } + + private org.codehaus.jettison.json.JSONObject getBalance(String LOG_PREFIX, HashMap siteApiInfo, JSONObject member) + throws JSONException { + + org.codehaus.jettison.json.JSONObject res = new org.codehaus.jettison.json.JSONObject(); + + log.info(LOG_PREFIX+ "# site.getSiteCbUrl() : " + siteApiInfo.get("siteCbUrl") + "/balance"); + log.info(LOG_PREFIX+ "# site.getSiteCbUrl() : " + member.toString()); + String url = siteApiInfo.get("siteCbUrl") + "/balance"; + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(url) + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(member.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX+ "status code : {}", responseEntity != null ? responseEntity.getStatusCode() : "NULL"); + log.info(LOG_PREFIX+ "body: {}", responseEntity != null ? responseEntity.getBody() : ""); + + } catch (Exception ex) { + log.error(LOG_PREFIX+ "error calling site cb /balance", ex); + throw ex; + } + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity != null ? responseEntity.getBody() : "{}"); + + return resData; + + } + + private double getBalanceDouble(String LOG_PREFIX, String cbUrl, String memId) { + double balance = 0L; + try { + + log.info(LOG_PREFIX+ "balance: {}", cbUrl + "/balance"); + + JSONObject members = new JSONObject(); + members.put("userId", memId); + members.put("decYn", "Y"); + + // 회원 머니 + ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(cbUrl + "/balance") + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36") + .bodyValue(members.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX+ "status code : {}", responseEntity != null ? responseEntity.getStatusCode() : "NULL"); + log.info(LOG_PREFIX+ "body: {}", responseEntity != null ? responseEntity.getBody() : ""); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity != null ? responseEntity.getBody() : "{}"); + balance = Double.parseDouble(resData.getString("balance")); // 문자열이어도 안전("balance");// * 0.01; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "error calling cb balance", e); + throw e; + } + } catch (Exception e) { + + } + return balance; + + } + + private String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'N', 'O', 'P', 'Q', + 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', + 'z' }; + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + } + +} diff --git a/src/main/java/com/bb/front/CallBackPrimeController.java b/src/main/java/com/bb/front/CallBackPrimeController.java new file mode 100644 index 0000000..d141e09 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackPrimeController.java @@ -0,0 +1,823 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; + +import com.bb.model.PrimeResponse; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/prime") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackPrimeController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam("username") String primeUsername) throws Exception { + PrimeResponse response = null; + + long siteIdx = Long.parseLong(primeUsername.substring(0, 3), 16); + String memberId = primeUsername.substring(3, primeUsername.length()); + final String LOG_PREFIX = "#-CB::PRIME::balance::"+memberId+":::"; + log.info(LOG_PREFIX+ "Request::" + primeUsername); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + log.info(LOG_PREFIX + "SITE_API_INFO_PARAM::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + int balance = resData.getInt("balance"); + + response = new PrimeResponse(); + response.setBalance(balance); + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new PrimeResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/changeBalance") + public ResponseEntity changeBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + ResponseEntity resEntity = null; + + String primeUsername = requestBody.getString("username"); + long siteIdx = Long.parseLong(primeUsername.substring(0, 3), 16); + String memberId = primeUsername.substring(3, primeUsername.length()); + net.sf.json.JSONObject transaction = requestBody.getJSONObject("transaction"); + net.sf.json.JSONObject game = transaction.getJSONObject("details").getJSONObject("game"); + String transactionId = transaction.getString("id"); + String transactionType = transaction.getString("type"); + + final String LOG_PREFIX = "#-CB::PRIME::changeBalance::"+memberId+"::"+transactionId+"::"+transactionType+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + // "processed_at":"2025-01-16T09:25:23.000000Z" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = transaction.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== MF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = makeEdate(LOG_PREFIX, betDateTimeStr, 32400000); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "prime"); + sParam.put("vendorGameCode", game.getString("vendor_code")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다"); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + if(transactionType.equals("bet")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callBet(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("win")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("cancel")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callCancel(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("adjust")) { + int amount = requestBody.getInt("amount"); + //resEntity = callAdjust(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("promo_win")) { + int amount = Math.abs(requestBody.getInt("amount")); + //resEntity = callPromoWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else { + log.error(LOG_PREFIX+ "unknown_transaction_type"); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + PrimeResponse response = new PrimeResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + + return resEntity; + } + + private ResponseEntity callBet(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callBet:::"; + ResponseEntity resEntity = null; + PrimeResponse response = new PrimeResponse(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + String betKey = game.getString("id")+"#"+transaction.getString("referer_id"); + String gameName = game.getString("title"); + + String tableId = game.getString("game_code"); + String targetTableId = tableId.replaceAll(" ", "").toLowerCase(); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); // 501 + return resEntity; + } + + if(!"".equals(targetTableId) && !"".equals(banGameId) && banGameId.contains(targetTableId+"|")) { + log.error(LOG_PREFIX+ "Ban Game Id : " + banGameId); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); // 502 + return resEntity; + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + /* + int cnt1 = siteService.getTranIdCheck(tranId); + if(cnt1 != 0) { + // 중복베팅 + log.error(LOG_PREFIX+ "중복베팅"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + */ + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + boolean isParsing = false; + log.info(LOG_PREFIX + "BF_isParsing::"+isParsing); + Boolean genuine = false; + if(transaction.has("genuine")) { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is true"); + genuine = transaction.getBoolean("genuine"); + log.info(LOG_PREFIX + "transaction.genuine::"+genuine.booleanValue()); + // genuine = true : 정품 + // genuine = null or false : 하이브리드(파싱) + if(genuine != null && genuine.booleanValue() == true) { + isParsing = false; + } else { + isParsing = true; + } + } else { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is false"); + isParsing = true; + } + log.info(LOG_PREFIX + "AF_isParsing::"+isParsing); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "prime"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", tableId); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "prime"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", game.getString("type")); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + response.setBeforeBalance(balance+amount); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 80) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callWin(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callWin:::"; + ResponseEntity resEntity = null; + PrimeResponse response = new PrimeResponse(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String tableId = game.getString("game_code"); + String betKey = game.getString("id")+"#"+transaction.getString("referer_id"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + /* + int cnt1 = siteService.getTranIdCheck(tranId); + if(cnt1 != 0) { + // 중복베팅 + log.error(LOG_PREFIX+ "중복베팅"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + */ + + int cnt2 = siteService.getBetIdCheck(betId); + if(cnt2 == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + boolean isParsing = false; + log.info(LOG_PREFIX + "BF_isParsing::"+isParsing); + Boolean genuine = false; + if(transaction.has("genuine")) { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is true"); + genuine = transaction.getBoolean("genuine"); + log.info(LOG_PREFIX + "transaction.genuine::"+genuine.booleanValue()); + // genuine = true : 정품 + // genuine = null or false : 하이브리드(파싱) + if(genuine != null && genuine.booleanValue() == true) { + isParsing = false; + } else { + isParsing = true; + } + } else { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is false"); + isParsing = true; + } + log.info(LOG_PREFIX + "AF_isParsing::"+isParsing); + + String isDebitParse = siteService.getDebitIsParse(betId); + log.info(LOG_PREFIX + "isDebitParse::"+isDebitParse); + if(isDebitParse == null) { + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } else { + if("P".equals(isDebitParse)) { + isParsing = true; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "prime"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", tableId); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", game.getString("title")); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "prime"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", game.getString("title")); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", game.getString("type")); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + response.setBeforeBalance(balance-amount); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callCancel(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + ResponseEntity resEntity = null; + PrimeResponse response = new PrimeResponse(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String tableId = game.getString("game_code"); + String betKey = game.getString("id")+"#"+transaction.getString("referer_id"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + /* + int cnt1 = siteService.getTranIdCheck(tranId); + if(cnt1 != 0) { + // 중복베팅 + log.error(LOG_PREFIX+ "중복베팅"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + */ + + int cnt2 = siteService.getBetIdCheck(betId); + if(cnt2 == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + boolean isParsing = false; + log.info(LOG_PREFIX + "BF_isParsing::"+isParsing); + Boolean genuine = false; + if(transaction.has("genuine")) { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is true"); + genuine = transaction.getBoolean("genuine"); + log.info(LOG_PREFIX + "transaction.genuine::"+genuine.booleanValue()); + // genuine = true : 정품 + // genuine = null or false : 하이브리드(파싱) + if(genuine != null && genuine.booleanValue() == true) { + isParsing = false; + } else { + isParsing = true; + } + } else { + log.info(LOG_PREFIX + "transaction.has(\"genuine\") is false"); + isParsing = true; + } + log.info(LOG_PREFIX + "AF_isParsing::"+isParsing); + + String isDebitParse = siteService.getDebitIsParse(betId); + log.info(LOG_PREFIX + "isDebitParse::"+isDebitParse); + if(isDebitParse == null) { + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } else { + if("P".equals(isDebitParse)) { + isParsing = true; + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "prime"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", tableId); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", tableId); + tranParam.put("gameIdx", game.getString("title")); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + if(isParsing) { + tranParam.put("isTie", "P"); + } else { + tranParam.put("isTie", "N"); + } + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "prime"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", game.getString("title")); + callBackObj.put("gameId", tableId); + callBackObj.put("gameType", game.getString("type")); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + if(isParsing) { + callBackObj.put("isData", "Y"); + } else { + callBackObj.put("isData", "N"); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + response.setBeforeBalance(balance-amount); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private static String makeEdate(String LOG_PREFIX, String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf1.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf2.format(date2); + } catch(Exception e) { + log.error(LOG_PREFIX+ "makeEdate::Exception::"+e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallBackSplusCasinoController.java b/src/main/java/com/bb/front/CallBackSplusCasinoController.java new file mode 100644 index 0000000..5998a47 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackSplusCasinoController.java @@ -0,0 +1,1491 @@ +package com.bb.front; + +import java.math.BigDecimal; +import java.net.URLDecoder; +import java.text.DecimalFormat; +import java.util.Date; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +import org.json.XML; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +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.reactive.function.client.WebClient; + +import com.bb.jwt.JwtManager; +import com.bb.model.Member; +import com.bb.service.SiteService; +import com.bb.service.SplusService; +import com.bb.util.StringUtils.StringBuilderPlus; +import com.google.gson.Gson; + +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@Controller +@RequestMapping("/api/cb/splus") +@RequiredArgsConstructor +public class CallBackSplusCasinoController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + SplusService splusService; + + @Autowired + WebClient webClient; + + @CrossOrigin(origins = "*") + @GetMapping(value = "/js/refresh") + public @ResponseBody JSONObject refreshToken(HttpServletRequest request, ModelMap model) throws Exception { + log.info("#-splus::refreshToken::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::refreshToken::" + name + "=" + value); + } + log.info("#-splus::refreshToken::___________________Request____________________________"); + + StringBuilderPlus sp = new StringBuilderPlus(); + JSONObject resData = new JSONObject(); + + try { + String base64Token = URLDecoder.decode(request.getParameter("token"), "UTF-8"); + Map authParam = new HashMap(); + + if ("F0IjoxNTE2MjM5MDIyfQ".equals(base64Token)) { + authParam.put("memberId", "007maker1"); + authParam.put("siteId", "peanuts9"); + } else if ("F0IjoxNTE1MjM3MDIyfQ".equals(base64Token)) { + authParam.put("memberId", "00Dmat02"); + authParam.put("siteId", "aplus1"); + } else { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(base64Token); + authParam.put("memberId", tokenInfo.getMid()); + authParam.put("siteId", tokenInfo.getSid()); + } + + // 회사정보 + HashMap siteApiInfo = siteService.getSiteApiInfoByToken(authParam); + log.info("#-splus::refreshToken::::siteApiInfo {}", siteApiInfo); + + if ("F0IjoxNTE2MjM5MDIyfQ".equals(base64Token)) { + authParam.put("siteIdx", 87); + } else if ("F0IjoxNTE1MjM3MDIyfQ".equals(base64Token)) { + authParam.put("siteIdx", 12); + } else { + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + } + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + int res = siteService.getSplusToken(base64Token); + + DecimalFormat formatter = new DecimalFormat("0"); + double balance = getBalnce("#-splus::refreshToken::", siteApiInfo.get("siteCbUrl").toString(), + authParam.get("memberId").toString()); + + resData.put("status", "success"); + resData.put("balance", "" + formatter.format(new BigDecimal(balance))); + + siteService.insertToken(base64Token); + + } catch (Exception e) { + log.error("#-splus::refreshToken::::Exception :" + e.getMessage()); + resData.put("status", "failure"); + resData.put("balance", "0.00"); + } + + return resData; + } + + @GetMapping(value = { "/validateToken", "/ValidateToken", "/validatetoken" }, produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String validateToken(HttpServletRequest request, ModelMap model) throws Exception { + log.info("#-splus::validateToken::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::validateToken::" + name + "=" + value); + } + log.info("#-splus::validateToken::___________________Request____________________________"); + + StringBuilderPlus sp = new StringBuilderPlus(); + String base64Token = URLDecoder.decode(request.getParameter("auth_token"), "UTF-8"); + // JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(base64Token); + + DecimalFormat formatter = new DecimalFormat("0"); + String logUsername = ""; + Map authParam = new HashMap(); + if ("F0IjoxNTE2MjM5MDIyfQ".equals(base64Token)) { + authParam.put("memberId", "007maker1"); + authParam.put("siteId", "peanuts9"); + } else if ("F0IjoxNTE1MjM3MDIyfQ".equals(base64Token)) { + authParam.put("memberId", "00Dmat02"); + authParam.put("siteId", "aplus1"); + } else { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(base64Token); + authParam.put("memberId", tokenInfo.getMid()); + authParam.put("siteId", tokenInfo.getSid()); + logUsername = tokenInfo.getMid(); + } + + final String LOG_PREFIX = "#-splus::validateToken::" + logUsername + ":::"; + + // 회사정보 + HashMap siteApiInfo = siteService.getSiteApiInfoByToken(authParam); + log.info(LOG_PREFIX + "siteApiInfo {}", siteApiInfo); + + if ("F0IjoxNTE2MjM5MDIyfQ".equals(base64Token)) { + authParam.put("siteIdx", 87); + } else if ("F0IjoxNTE1MjM3MDIyfQ".equals(base64Token)) { + authParam.put("siteIdx", 12); + } else { + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + } + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + + if (member == null) { + log.error(LOG_PREFIX + "Not found member..."); + sp.appendLine("error_code=-3"); + sp.append("error_message=not validateToken"); + return sp.toString(); + } else { + log.info(LOG_PREFIX + "Callback Url : " + siteApiInfo.get("siteCbUrl") + "/balance/sports"); + JSONObject members = new JSONObject(); + members.put("userId", authParam.get("memberId").toString()); + + // 회원 머니 + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/balance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(members.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX + "status code : {}", responseEntity.getStatusCode()); + log.info(LOG_PREFIX + "body: {}", responseEntity.getBody()); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=OK"); + // sp.appendLine("balance="+formatter.format(new + // BigDecimal(resData.getDouble("balance")*0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("cust_id=" + siteApiInfo.get("siteIdxHex").toString() + member.getMemberId()); + sp.appendLine("cust_login=" + member.getMemberNick()); + sp.appendLine("city=KR"); + sp.appendLine("country=KR"); + sp.append("currency_code=KRW"); + } + siteService.insertToken(base64Token); + // model.put("resultStr", returnString); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); + // 활용한 응답 생성; + } + + // 베팅 예약 크레딧 차람 + @RequestMapping(value = "/reserve", produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String reserve(HttpServletRequest request, @RequestBody(required = false) String parambody) + throws Exception { + log.info("#-splus::reserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::reserve::" + name + "=" + value); + } + log.info("#-splus::reserve::___________________Request____________________________"); + + HashMap splusParam = new HashMap(); + + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-splus::reserve::" + memberId + ":::"; + + DecimalFormat formatter = new DecimalFormat("0"); + Map trxParam = new HashMap(); + trxParam.put("tranType", "reserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", cust_id); + + org.json.JSONObject paramjson = new org.json.JSONObject(); + + try { + log.info(LOG_PREFIX+ "parambody {}", parambody); + paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", paramjson.toString()); + + try { + // 한글 치환 + org.json.JSONObject bets = paramjson.getJSONObject("Bets"); + org.json.JSONObject bet = bets.getJSONObject("Bet"); + // 싱글 베팅 + if (bet.has("Lines")) { + org.json.JSONArray lines = bet.getJSONArray("Lines"); + for (int i = 0; i < lines.length(); i++) { + org.json.JSONObject line = lines.getJSONObject(i); + String homeTeam = line.getString("HomeTeam"); + String awayTeam = line.getString("AwayTeam"); + String leagueName = line.getString("LeagueName"); + + homeTeam = siteService.getKorName("T", homeTeam); + awayTeam = siteService.getKorName("T", awayTeam); + leagueName = siteService.getKorName("L", leagueName); + + line.put("HomeTeamKor", homeTeam); + line.put("AwayTeamKor", awayTeam); + line.put("LeagueNameKor", leagueName); + } + } else { + String homeTeam = bet.getString("HomeTeam"); + String awayTeam = bet.getString("AwayTeam"); + String leagueName = bet.getString("LeagueName"); + + homeTeam = siteService.getKorName("T", homeTeam); + awayTeam = siteService.getKorName("T", awayTeam); + leagueName = siteService.getKorName("L", leagueName); + + bet.put("HomeTeamKor", homeTeam); + bet.put("AwayTeamKor", awayTeam); + bet.put("LeagueNameKor", leagueName); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::001"); + log.error(LOG_PREFIX+ "tranERR {}", e.toString()); + } + trxParam.put("data", paramjson.toString()); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::002"); + log.error(LOG_PREFIX+ "error {}", e.getMessage()); + } + + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + + if (siteApiInfo == null) { + sp.appendLine("error_code=-2"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + log.error(LOG_PREFIX+ "Exception::Not found user"); + sp.appendLine("error_code=-2"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "0"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + try { + siteService.insertSplusTran(trxParam); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::003"); + log.error(LOG_PREFIX+ "reserve2 ERROR {}", e.getMessage()); + } + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + double amount = Double.parseDouble(amountStr); + + log.info(LOG_PREFIX+ "targetSiteCredit < amount {}, {}", targetSiteCredit, amount); + if (targetSiteCredit < amount && amount > 0) { + log.error(LOG_PREFIX+ "Exception::크레딧 부족"); + sp.appendLine("error_code=-4"); + sp.appendLine("error_message=InsufficientFunds"); + return sp.toString(); + } + + if (balance < amount && amount > 0) { + log.error(LOG_PREFIX+ "Exception::유저잔액 부족"); + sp.appendLine("error_code=-4"); + sp.appendLine("error_message=InsufficientFunds"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + return sp.toString(); + } + + // 최대베팅액 (userMaxBet 우선 적용) + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", member.getMemberId()); + sParam.put("vendorIdx", 83); + long maxBet = siteService.getSiteMaxBet(sParam); + + // userMaxBet 조회 + long userMaxBet = 0; + Long userMaxBetObj = siteService.getUserMaxBet(sParam); + if(userMaxBetObj != null) { + userMaxBet = userMaxBetObj; + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : maxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + maxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if (amount > finalMaxBet) { + log.error(LOG_PREFIX+ "Exception::최대 베팅금 초과 - finalMaxBet: " + finalMaxBet); + sp.appendLine("error_code=-10"); + sp.appendLine("error_message= max bet limit - overBet"); + return sp.toString(); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#R"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 83); + tranParam.put("vendorCode", "splus"); + tranParam.put("vendorTranKey", reserve_id + "#R"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", refId + "#R"); + + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 83); + debit.put("vendorKey", "SP2"); + debit.put("vendor", "splus"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "debit"); + debit.put("debit", fakeAmount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + + HashMap detailMap = new Gson().fromJson(paramjson.toString(), HashMap.class); + debit.put("status", "bet"); + debit.put("detail", detailMap); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + if (resData.getLong("result_code") == 0) { + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + trxParam.put("cbResultCode", resData.get("result_code").toString()); + siteService.updateSplusTran(trxParam); + + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new + // BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + + splusService.insertSplus(tranParam, paramjson); + + } else { + log.info(LOG_PREFIX+ "Callback Error: "+resData.toString()); + sp.appendLine("error_code=-99"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + // 베팅 예약 취소 크레딧 복구 + @GetMapping(value = { "/cancelReserve", "/cancelreserve" }, produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String cancelReserve(HttpServletRequest request) throws Exception { + log.info("#-splus::cancelReserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::cancelReserve::" + name + "=" + value); + } + log.info("#-splus::cancelReserve::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-splus::cancelReserve::" + memberId + ":::"; + + Map trxParam = new HashMap(); + + trxParam.put("tranType", "cancelReserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", customer_id); + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error:: siteApiInfo null"); + sp.appendLine("error_code=-2"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + log.error(LOG_PREFIX+ "Error:: Member null"); + sp.appendLine("error_code=-2"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "9"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + + log.info(LOG_PREFIX+ "refId : "+refId + "#R"); + double amount = siteService.getBetDepositAmt(refId + "#R"); + log.info(LOG_PREFIX+ "amount :" + amount); + double amountCanceld = siteService.getBetDepositAmt(refId + "#C"); + trxParam.put("amount", amount); + siteService.insertSplusTran(trxParam); + + if (amount == 0) { + log.error(LOG_PREFIX+ "Error:: amount 0"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=ReserveID not exists"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + return sp.toString(); + } + + if (amountCanceld > 0) { + log.error(LOG_PREFIX+ "Error:: amountCanceld > 0"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message= alrealdy Canceld "); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + return sp.toString(); + } + + log.info(LOG_PREFIX+ "amount:{}, balance:{}", amount, balance); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#C"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 83); + tranParam.put("vendorCode", "splus"); + tranParam.put("vendorTranKey", reserve_id + "#C"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", refId + "#C"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 83); + debit.put("vendorKey", "SP2"); + debit.put("vendor", "splus"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 1); + debit.put("isBonus", 0); + debit.put("status", "betCancel"); + debit.put("decYn", "Y"); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + if (resData.getLong("result_code") == 0) { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new + // BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } else { + log.error(LOG_PREFIX+ "Callback Error::" + resData.toString()); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + + siteService.updateSplusTran(trxParam); + splusService.cancelSplus(tranParam); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + + // 뭔지 잘 모르겠슴 + @GetMapping(value = { "/commitReserve", "/commitreserve" }, produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String commitReserve(HttpServletRequest request) throws Exception { + log.info("#-splus::commitReserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::commitReserve::" + name + "=" + value); + } + log.info("#-splus::commitReserve::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-splus::commitReserve::" + memberId + ":::"; + + Map trxParam = new HashMap(); + + trxParam.put("tranType", "commitReserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", customer_id); + trxParam.put("purchase_id", purchase_id); + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error:: siteApiInfo null"); + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX + "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + log.error(LOG_PREFIX+ "Error:: member null"); + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "1"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + double amount = siteService.getBetDepositAmt(refId + "#R"); + double gap = siteService.getBetGapAmt(purchase_id); + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + + if (amount == 0) { + log.error(LOG_PREFIX+ "Error:: amount 0"); + sp.appendLine("error_code=0"); + sp.appendLine("error_message=ReserveID not exists"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + return sp.toString(); + } + + if (gap > 0 && gap < amount) { + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#CR"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 83); + tranParam.put("vendorCode", "splus"); + tranParam.put("vendorTranKey", purchase_id + "#CR"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", gap); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = gap;// *100; + debit.put("betId", refId); + debit.put("tranId", refId + "#CR"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 83); + debit.put("vendorKey", "SP2"); + debit.put("vendor", "splus"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + debit.put("status", "commitReserve"); + debit.put("detail", "commitReserve"); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + balance = resData.getDouble("balance");// *0.01; + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + + } + + trxParam.put("amount", gap); + siteService.insertSplusTran(trxParam); + + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + // 뭔지 잘 모르겠슴 + @RequestMapping(value = { "/debitReserve", "/debitreserve" }, produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String debitReserve(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + log.info("#-splus::debitReserve::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::debitReserve::" + name + "=" + value); + } + log.info("#-splus::debitReserve::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String reserve_id = URLDecoder.decode(request.getParameter("reserve_id"), "UTF-8"); + String req_id = URLDecoder.decode(request.getParameter("req_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-splus::debitReserve::" + memberId + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "debitReserve"); + trxParam.put("cust_id", cust_id); + trxParam.put("req_id", req_id); + trxParam.put("reserve_id", reserve_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", customer_id); + trxParam.put("purchase_id", purchase_id); + try { + log.info(LOG_PREFIX+ "parambody {}", parambody); + org.json.JSONObject paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "parambody {}", paramjson.toString()); + trxParam.put("data", paramjson.toString()); + } catch (Exception e) { + log.info(LOG_PREFIX+ "error {}", e.getMessage()); + } + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info("siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String refId = siteId + reserve_id; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "1"; + trxParam.put("refId", refId); + trxParam.put("trx_id", trxId); + + int deReverseCnt = splusService.getDeReverseCnt(trxParam); + if (deReverseCnt == 0) { + siteService.insertSplusTran(trxParam); + siteService.updatesPurchaseId(trxParam); + } + double balance = 0.0; + try { + String cbData = siteService.getCbData(reserve_id); + org.codehaus.jettison.json.JSONObject cbDataJson = new org.codehaus.jettison.json.JSONObject(cbData); + balance = cbDataJson.getDouble("balance");// *0.01; + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::001"); + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + } + + + + // 구매아이디 보내주기 + try { + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + + debit.put("betId", refId); + debit.put("purchaseId", purchase_id); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/purchaseId") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::002"); + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + } + + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + + // 베팅 예약 크레딧 차람 + @RequestMapping(value = { "/debitCustomer", "/debitcustomer" }, produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String debitCustomer(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + log.info("#-splus::debitCustomer::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::debitCustomer::" + name + "=" + value); + } + log.info("#-splus::debitCustomer::___________________Request____________________________"); + + DecimalFormat formatter = new DecimalFormat("0"); + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String req_id = URLDecoder.decode(request.getParameter("req_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-splus::debitCustomer::" + memberId + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "debitCustomer"); + trxParam.put("cust_id", cust_id); + trxParam.put("req_id", req_id); + trxParam.put("purchase_id", purchase_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", cust_id); + + org.json.JSONObject paramjson = new org.json.JSONObject(); + try { + log.info(LOG_PREFIX+ "parambody {}", parambody); + paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", paramjson.toString()); + + try { + // 한글 치환 + org.json.JSONObject credits = paramjson.getJSONObject("Credit"); + org.json.JSONObject purchases = credits.getJSONObject("Purchases"); + org.json.JSONObject purchase = purchases.getJSONObject("Purchase"); + org.json.JSONObject selections = purchase.getJSONObject("Selections"); + // 싱글 베팅 + + org.json.JSONObject selection = selections.getJSONObject("Selection"); + if (selection == null) { + + org.json.JSONArray selectionArray = selections.getJSONArray("Selection"); + for (int i = 0; i < selectionArray.length(); i++) { + org.json.JSONObject line = selectionArray.getJSONObject(i); + String homeTeam = line.getString("HomeTeam"); + String awayTeam = line.getString("AwayTeam"); + String leagueName = line.getString("LeagueName"); + + homeTeam = siteService.getKorName("T", homeTeam); + awayTeam = siteService.getKorName("T", awayTeam); + leagueName = siteService.getKorName("L", leagueName); + + line.put("HomeTeamKor", homeTeam); + line.put("AwayTeamKor", awayTeam); + line.put("LeagueNameKor", leagueName); + } + + } else { + String homeTeam = selection.getString("HomeTeam"); + String awayTeam = selection.getString("AwayTeam"); + String leagueName = selection.getString("LeagueName"); + + homeTeam = siteService.getKorName("T", homeTeam); + awayTeam = siteService.getKorName("T", awayTeam); + leagueName = siteService.getKorName("L", leagueName); + + selection.put("HomeTeamKor", homeTeam); + selection.put("AwayTeamKor", awayTeam); + selection.put("LeagueNameKor", leagueName); + + } + + } catch (Exception e) { + log.error(LOG_PREFIX+ "tranERR"); + } + trxParam.put("data", paramjson.toString()); + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + } catch (Exception e) { + log.info(LOG_PREFIX+ "error {}", e.getMessage()); + } + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String reserveId = siteService.getRefIdByPurchaseId(purchase_id); + String refId = siteId + reserveId; + Date dt = new Date(); + String trxId = "" + siteIdx + dt.getTime() + "3"; + trxParam.put("trxId", trxId); + trxParam.put("refId", refId + "#DC"); + + siteService.insertSplusTran(trxParam); + if (member == null) { + sp.appendLine("error_code=-2"); + sp.append("error_message=not validateToken"); + + return sp.toString(); + } + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + double amount = Double.parseDouble(amountStr); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", refId + "#DC"); + tranParam.put("refId", refId + "#DC"); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 83); + tranParam.put("vendorCode", "splus"); + tranParam.put("vendorTranKey", purchase_id + "#DC"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId + "#DC"); + debit.put("tranId", refId + "#DC"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 83); + debit.put("vendorKey", "SP2"); + debit.put("vendor", "splus"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "debit"); + debit.put("debit", fakeAmount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("minusBalanceYn", "Y"); + HashMap detailMap = new Gson().fromJson(paramjson.toString(), HashMap.class); + debit.put("status", "debitCustomer"); + debit.put("detail", detailMap); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + if (resData.getLong("result_code") == 0) { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new + // BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } else { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + siteService.updateSplusTran(trxParam); + + log.info(LOG_PREFIX + "Response: " + sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + private double getBalnce(String LOG_PREFIX, String cbUrl, String memId) { + LOG_PREFIX = LOG_PREFIX + "==> getBalnce::"; + double balance = 0L; + + try { + log.info(LOG_PREFIX + "Callback Url :" + cbUrl + "/balance/sports"); + JSONObject members = new JSONObject(); + members.put("userId", memId); + members.put("decYn", "Y"); + + // 회원 머니 + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + ResponseEntity responseEntity = webClient.post() + .uri(cbUrl + "/balance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(members.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX + "status code : {}", responseEntity.getStatusCode()); + log.info(LOG_PREFIX + "body: {}", responseEntity.getBody()); + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + balance = resData.getDouble("balance");// * 0.01; + + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception :" + e.getMessage()); + } + + return balance; + } + + // 베팅 예약 크레딧 차람 + @RequestMapping(value = { "/creditCustomer", "/creditcustomer" }, produces = MediaType.TEXT_PLAIN_VALUE) + public @ResponseBody String creditCustomer(HttpServletRequest request, + @RequestBody(required = false) String parambody) throws Exception { + log.info("#-splus::creditCustomer::___________________Request____________________________"); + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String name = (String) params.nextElement(); + String value = request.getParameter(name); + log.info("#-splus::creditCustomer::" + name + "=" + value); + } + log.info("#-splus::creditCustomer::___________________Request____________________________"); + + StringBuilderPlus sp = new StringBuilderPlus(); + String cust_id = URLDecoder.decode(request.getParameter("cust_id"), "UTF-8"); + String purchase_id = URLDecoder.decode(request.getParameter("purchase_id"), "UTF-8"); + String req_id = URLDecoder.decode(request.getParameter("req_id"), "UTF-8"); + String amountStr = URLDecoder.decode(request.getParameter("amount"), "UTF-8"); + String agent_id = URLDecoder.decode(request.getParameter("agent_id"), "UTF-8"); + String customer_id = URLDecoder.decode(request.getParameter("customer_id"), "UTF-8"); + String memberId = cust_id.substring(3, cust_id.length()); + final String LOG_PREFIX = "#-splus::creditCustomer::" + memberId + ":::"; + + Map trxParam = new HashMap(); + trxParam.put("tranType", "creditCustomer"); + trxParam.put("cust_id", cust_id); + trxParam.put("req_id", req_id); + trxParam.put("purchase_id", purchase_id); + trxParam.put("amount", amountStr); + trxParam.put("agent_id", agent_id); + trxParam.put("customer_id", cust_id); + + org.json.JSONObject paramjson = new org.json.JSONObject(); + try { + log.info(LOG_PREFIX+ "parambody {}", parambody); + paramjson = XML.toJSONObject(parambody); + log.info(LOG_PREFIX+ "BF::parambody {}", paramjson.toString()); + + try { + // 한글 치환 + org.json.JSONObject credits = paramjson.getJSONObject("Credit"); + org.json.JSONObject purchases = credits.getJSONObject("Purchases"); + org.json.JSONObject purchase = purchases.getJSONObject("Purchase"); + org.json.JSONObject selections = purchase.getJSONObject("Selections"); + // 싱글 베팅 + + org.json.JSONObject selection = selections.getJSONObject("Selection"); + if (selection == null) { + + org.json.JSONArray selectionArray = selections.getJSONArray("Selection"); + for (int i = 0; i < selectionArray.length(); i++) { + org.json.JSONObject line = selectionArray.getJSONObject(i); + String homeTeam = line.getString("HomeTeam"); + String awayTeam = line.getString("AwayTeam"); + String leagueName = line.getString("LeagueName"); + + homeTeam = siteService.getKorName("T", homeTeam); + awayTeam = siteService.getKorName("T", awayTeam); + leagueName = siteService.getKorName("L", leagueName); + + line.put("HomeTeamKor", homeTeam); + line.put("AwayTeamKor", awayTeam); + line.put("LeagueNameKor", leagueName); + } + + } else { + String homeTeam = selection.getString("HomeTeam"); + String awayTeam = selection.getString("AwayTeam"); + String leagueName = selection.getString("LeagueName"); + + homeTeam = siteService.getKorName("T", homeTeam); + awayTeam = siteService.getKorName("T", awayTeam); + leagueName = siteService.getKorName("L", leagueName); + + selection.put("HomeTeamKor", homeTeam); + selection.put("AwayTeamKor", awayTeam); + selection.put("LeagueNameKor", leagueName); + + } + + } catch (Exception e) { + log.error(LOG_PREFIX+ "tranERR"); + } + + trxParam.put("data", paramjson.toString()); + log.info(LOG_PREFIX+ "AF::parambody {}", paramjson.toString()); + } catch (Exception e) { + log.info(LOG_PREFIX+ "error {}", e.getMessage()); + } + + // 사이트정보 + HashMap ssParam = new HashMap(); + ssParam.put("siteIdx", Integer.parseInt(cust_id.substring(0, 3), 16)); + ssParam.put("memberId", cust_id.substring(3, cust_id.length())); + HashMap siteApiInfo = siteService.getSiteApiInfo(ssParam); + if (siteApiInfo == null) { + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + String siteId = siteApiInfo.get("siteId").toString(); + Map authParam = new HashMap(); + authParam.put("memberId", memberId); + authParam.put("siteId", siteId); + + // 회사정보 + log.info(LOG_PREFIX+ "siteApiInfo {}", siteApiInfo); + authParam.put("siteIdx", siteApiInfo.get("siteIdx")); + + // 회원정보 + Member member = siteService.getMemberByToken(authParam); + if (member == null) { + sp.appendLine("error_code=0"); + sp.append("CustomerNotFound"); + return sp.toString(); + } + + int siteIdx = Integer.parseInt(siteApiInfo.get("siteIdx").toString()); + String reserveId = siteService.getRefIdByPurchaseId(purchase_id); + String refId = siteId + reserveId; + Date dt = new Date(); + String trxId = "" + dt.getTime() + "4"; + trxParam.put("trxId", trxId); + trxParam.put("refId", refId); + + double balance = getBalnce(LOG_PREFIX, siteApiInfo.get("siteCbUrl").toString(), memberId); + long targetSiteCredit = siteService.getSiteCredit(siteApiInfo.get("siteId").toString()); + double amount = Double.parseDouble(amountStr); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", req_id + "#CC"); + tranParam.put("refId", refId); + tranParam.put("siteIdx", siteApiInfo.get("siteIdx")); + tranParam.put("siteId", siteId); + tranParam.put("completed", true); + tranParam.put("memberIdx", member.getMemberIdx()); + tranParam.put("memberId", member.getMemberId()); + tranParam.put("vendorCetegory", "SPORT"); + tranParam.put("vendorIdx", 83); + tranParam.put("vendorCode", "splus"); + tranParam.put("vendorTranKey", purchase_id + "#CC"); + tranParam.put("gameType", ""); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", ""); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", ""); + siteService.commonBetinsert(tranParam); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + JSONObject debit = new JSONObject(); + double fakeAmount = amount;// *100; + debit.put("betId", refId); + debit.put("tranId", req_id + "#CC"); + debit.put("userId", member.getMemberId()); + debit.put("vendorIdx", 83); + debit.put("vendorKey", "SP2"); + debit.put("vendor", "splus"); + debit.put("gameIdx", 1); + debit.put("gameKey", ""); + debit.put("gameType", ""); + debit.put("gameId", ""); + debit.put("tranType", "credit"); + debit.put("debit", 0); + debit.put("credit", fakeAmount); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("decYn", "Y"); + HashMap detailMap = new Gson().fromJson(paramjson.toString(), HashMap.class); + debit.put("status", "end"); + debit.put("detail", detailMap); + + log.info(LOG_PREFIX+ "Callback Request: "+debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl") + "/changebalance/sports") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject( + responseEntity.getBody()); + log.info(LOG_PREFIX+ "Callback Response: "+resData.toString()); + + log.info(LOG_PREFIX+ "status code : {}", responseEntity.getStatusCode()); + log.info(LOG_PREFIX+ "body: {}", responseEntity.getBody()); + + DecimalFormat formatter = new DecimalFormat("0"); + if (resData.getLong("result_code") == 0) { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=No Error "); + // sp.appendLine("balance="+formatter.format(new + // BigDecimal(resData.getDouble("balance") * 0.01))); + sp.appendLine("balance=" + formatter.format(new BigDecimal(resData.getDouble("balance")))); + sp.appendLine("trx_id=" + trxId); + + tranParam.put("balance", resData.getDouble("balance")); + int res = siteService.updateCbApi(tranParam); + } else { + sp.appendLine("error_code=0"); + sp.appendLine("error_message=error"); + sp.appendLine("balance=" + formatter.format(new BigDecimal(balance))); + sp.appendLine("trx_id=" + trxId); + } + + trxParam.put("tranId", tranParam.get("tranId").toString()); + trxParam.put("resData", resData.toString()); + siteService.updateSplusTran(trxParam); + + splusService.updateSplus(tranParam, paramjson); + + log.info(LOG_PREFIX+ "Response: "+sp.toString()); + return sp.toString(); // 활용한 응답 생성; + } + + private String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', + 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'N', 'O', 'P', 'Q', + 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', + 'z' }; + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + } + +} diff --git a/src/main/java/com/bb/front/CallBackSvendorController.java b/src/main/java/com/bb/front/CallBackSvendorController.java new file mode 100644 index 0000000..5db1b3e --- /dev/null +++ b/src/main/java/com/bb/front/CallBackSvendorController.java @@ -0,0 +1,827 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +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.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.ResourceAccessException; + +import com.bb.model.SvendorResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/svendor") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackSvendorController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @PostMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + SvendorResponse response = new SvendorResponse(); + String vendorUsername = requestBody.getString("userid"); + String uuid = vendorUsername; + + //사이트정보 + HashMap siteApiInfo = siteService.getNewSiteApiInfo(vendorUsername); + long siteIdx = 0L; + String memberId = ""; + if(siteApiInfo != null) { + siteIdx = Long.parseLong(siteApiInfo.get("siteIdx").toString()); + memberId = siteApiInfo.get("memberId").toString(); + } + + final String LOG_PREFIX = "#-CB::SVENDOR::"+memberId+"::balance:::"; + log.info(LOG_PREFIX+ "Request Body::" + requestBody.toString()); + + try { + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_USER"); + response.setBalance("0"); + response.setId(uuid); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response.setBalance("0"); + response.setId(uuid); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "Error Msg: RESOURCE_ACCESS_ERROR"); + response.setBalance("0"); + response.setId(uuid); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + + log.error(LOG_PREFIX+ "Error Msg: UNKNOWN_SERVER_ERROR"); + response.setBalance("0"); + response.setId(uuid); + } + + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + + @ResponseBody + @PostMapping(path = "/bet") + public ResponseEntity callBet(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + SvendorResponse response = new SvendorResponse(); + String vendorUsername = requestBody.getString("userid"); + String uuid = vendorUsername; + String vendorGameCode = requestBody.getString("vendor"); + + //사이트정보 + HashMap sParam = new HashMap<>(); + sParam.put("vendorUsername", vendorUsername); + sParam.put("vendor", "svendor"); + sParam.put("vendorGameCode", vendorGameCode); + HashMap siteVendorInfo = siteService.getNewSiteVendorInfo(sParam); + long siteIdx = 0L; + String memberId = ""; + if(siteVendorInfo != null) { + siteIdx = Long.parseLong(siteVendorInfo.get("siteIdx").toString()); + memberId = siteVendorInfo.get("memberId").toString(); + } + + final String LOG_PREFIX = "#-CB::SVENDOR::"+memberId+"::BET::"+requestBody.getString("tr_id")+":::"; + log.info(LOG_PREFIX+ "Request Body::" + requestBody.toString()); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + // 배팅 고유ID + String transactionId = requestBody.getString("tr_id"); + log.info(LOG_PREFIX+ "transactionId::"+transactionId); + // 베팅 참조ID + String referenceId = requestBody.getString("ref_id"); + log.info(LOG_PREFIX+ "referenceId"+referenceId); + // 라운드 고유ID + String roundId = requestBody.getString("round"); + log.info(LOG_PREFIX+ "roundId::"+roundId); + String tranId = transactionId; + //String betId = referenceId; + String betId = roundId+"#"+vendorUsername; + // 베팅 시각 + String betDateTimeStr = requestBody.getString("processed_at"); + + // 게임타입 + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + // 게임테이블 아이디 (optional) + String gameId = ""; + if(requestBody.has("game_code")) gameId = requestBody.getString("game_code"); + String targetTableId = gameId.replaceAll(" ", "").toLowerCase(); + String gameName = ""; + if(requestBody.has("title")) gameName = requestBody.getString("title"); + // 배팅액 + String amountS = requestBody.getString("amount"); + int amount = 0; + Double amountD = Double.parseDouble(amountS); + amount = amountD.intValue(); + + try { + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_SITE_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + // Ban Game Type Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 501L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameType:"+gameType+"이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_TYPE"); + logParam.put("errorMsg", "gameType:"+gameType+"이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("BAN_GAME_TYPE_" + gameType); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(!"".equals(targetTableId) && !"".equals(banGameId) && banGameId.contains(targetTableId+"|")) { + // Ban Game Id Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 502L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameId:"+gameId+"("+gameName+")이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_ID"); + logParam.put("errorMsg", "gameId:"+gameId+"("+gameName+")이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Id : " + gameId); + + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("BAN_GAME_ID_" + gameId); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("ACCESS_VENDOR_MISSMATCH_"+lastInVendorIdx); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NO_SITE_CREDIT"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("MAX_BET_AMOUNT_OVER"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "svendor"); + tranParam.put("vendorTranKey", referenceId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", referenceId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "svendor"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else if(resData.getLong("result_code") == 98) { + // 중복 + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else if(resData.getLong("result_code") == 80) { + // 중복 + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else { + // 실패 + log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("CALLBACK_ERROR"); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + log.error(LOG_PREFIX+ "잔액부족::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(Integer.toString(afBalance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "Error Msg: RESOURCE_ACCESS_ERROR"); + response.setBalance("0"); + response.setId(uuid); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + + log.error(LOG_PREFIX+ "Error Msg: UNKNOWN_SERVER_ERROR"); + response.setBalance("0"); + response.setId(uuid); + } + + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + + @ResponseBody + @PostMapping(value = { "/win", "/cancel", "/promo"} ) + public ResponseEntity callResult(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + SvendorResponse response = new SvendorResponse(); + String vendorUsername = requestBody.getString("userid"); + String uuid = vendorUsername; + String vendorGameCode = requestBody.getString("vendor"); + String callbackType = requestBody.getString("type"); + + //사이트정보 + HashMap sParam = new HashMap<>(); + sParam.put("vendorUsername", vendorUsername); + sParam.put("vendor", "svendor"); + sParam.put("vendorGameCode", vendorGameCode); + HashMap siteVendorInfo = siteService.getNewSiteVendorInfo(sParam); + long siteIdx = 0L; + String memberId = ""; + if(siteVendorInfo != null) { + siteIdx = Long.parseLong(siteVendorInfo.get("siteIdx").toString()); + memberId = siteVendorInfo.get("memberId").toString(); + } + + final String LOG_PREFIX = "#-CB::SVENDOR::"+memberId+"::"+callbackType.toUpperCase()+"::"+requestBody.getString("tr_id")+":::"; + log.info(LOG_PREFIX+ "Request Body::" + requestBody.toString()); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + // 배팅 고유ID + String transactionId = requestBody.getString("tr_id"); + log.info(LOG_PREFIX+ "transactionId::"+transactionId); + // 베팅 참조ID + String referenceId = requestBody.getString("ref_id"); + log.info(LOG_PREFIX+ "referenceId"+referenceId); + // 라운드 고유ID + String roundId = requestBody.getString("round"); + log.info(LOG_PREFIX+ "roundId::"+roundId); + String tranId = transactionId; + //String betId = referenceId; + String betId = roundId+"#"+vendorUsername; + // 베팅 시각 + String betDateTimeStr = requestBody.getString("processed_at"); + + // 게임타입 + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + // 게임테이블 아이디 (optional) + String gameId = ""; + if(requestBody.has("game_code")) gameId = requestBody.getString("game_code"); + // 게임코드 + if("promo".equals(callbackType)) { + gameId = callbackType; + } + + // 게임타이틀 + String gameName = "" ; + if(requestBody.has("title")) gameName = requestBody.getString("title"); + if("promo".equals(callbackType)) { + gameName =callbackType; + } + // 배팅액 + String amountS = requestBody.getString("amount"); + int amount = 0; + Double amountD = Double.parseDouble(amountS); + amount = amountD.intValue(); + + try { + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_SITE_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_BET_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_BET_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } else { + //베팅여부체크 + if("cancel".equals(callbackType)) { //베팅없으면 에러 + int checkBet = siteService.getSuccDebitCnt(betId); + if(checkBet==0) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_BET_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_BET_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + } + + //초과베팅 체크 + int overCreditAmt = 0; + if(vendorCetegory.equals("SLOT") && "win".equals(callbackType)) { + int siteMaxWin = Integer.parseInt(siteVendorInfo.get("siteMaxWin").toString()); + if(siteMaxWin < amount && siteMaxWin != 0) { + log.error(LOG_PREFIX+ "MAX_WIN_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxWin : " + siteMaxWin +", amount : " + amount); + overCreditAmt = amount - siteMaxWin; + amount = siteMaxWin; + log.error(LOG_PREFIX+ "Change amount : " + amount +", overCreditAmt : " + overCreditAmt); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "svendor"); + tranParam.put("vendorTranKey", referenceId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("overCreditAmt", overCreditAmt); + if("cancel".equals(callbackType)) { + tranParam.put("isCancel", "Y"); + } else { + tranParam.put("isCancel", "N"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", referenceId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "svendor"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + if("cancel".equals(callbackType)) { + callBackObj.put("isCancel", 1); + } else { + callBackObj.put("isCancel", 0); + } + if("promo".equals(callbackType)) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else if(resData.getLong("result_code") == 98) { + // 중복 + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else { + // 실패 + log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("CALLBACK_ERROR"); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(Integer.toString(afBalance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "Error Msg: RESOURCE_ACCESS_ERROR"); + response.setBalance("0"); + response.setId(uuid); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + + log.error(LOG_PREFIX+ "Error Msg: UNKNOWN_SERVER_ERROR"); + response.setBalance("0"); + response.setId(uuid); + } + + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + +} + diff --git a/src/main/java/com/bb/front/CallBackTheaController.java b/src/main/java/com/bb/front/CallBackTheaController.java new file mode 100644 index 0000000..bd86254 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackTheaController.java @@ -0,0 +1,650 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; + +import com.bb.model.TheaResponse; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/thea") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackTheaController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam("username") String theaUsername) throws Exception { + TheaResponse response = null; + + long siteIdx = Long.parseLong(theaUsername.substring(0, 3), 16); + String memberId = theaUsername.substring(3, theaUsername.length()); + final String LOG_PREFIX = "#-CB::THEA::"+memberId+"::balance:::"; + log.info(LOG_PREFIX+ "Request::" + theaUsername); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + log.info(LOG_PREFIX + "SITE_API_INFO_PARAM::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new TheaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + response = new TheaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + int balance = resData.getInt("balance"); + + response = new TheaResponse(); + response.setBalance(balance); + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new TheaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new TheaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/changeBalance") + public ResponseEntity changeBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + ResponseEntity resEntity = null; + + String theaUsername = requestBody.getString("username"); + long siteIdx = Long.parseLong(theaUsername.substring(0, 3), 16); + String memberId = theaUsername.substring(3, theaUsername.length()); + net.sf.json.JSONObject transaction = requestBody.getJSONObject("transaction"); + net.sf.json.JSONObject game = transaction.getJSONObject("details").getJSONObject("game"); + String transactionId = transaction.getString("id"); + String transactionType = transaction.getString("type"); + + final String LOG_PREFIX = "#-CB::THEA::"+memberId+"::"+transactionId+"::"+transactionType+"::changeBalance::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + // "processed_at":"2025-01-16T09:25:23.000000Z" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = transaction.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== MF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = makeEdate(LOG_PREFIX, betDateTimeStr, 32400000); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "thea"); + sParam.put("vendorGameCode", game.getString("vendor")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다"); + TheaResponse response = new TheaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + if(transactionType.equals("bet")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callBet(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + } else if(transactionType.equals("win")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + } else if(transactionType.equals("cancel")) { + int amount = requestBody.getInt("amount"); + resEntity = callCancel(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + } else { + log.error(LOG_PREFIX+ "unknown_transaction_type"); + TheaResponse response = new TheaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + TheaResponse response = new TheaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + TheaResponse response = new TheaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + + return resEntity; + } + + private ResponseEntity callBet(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callBet:::"; + ResponseEntity resEntity = null; + TheaResponse response = new TheaResponse(); + net.sf.json.JSONObject target = transaction.getJSONObject("target"); + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + String gameId = game.getString("code").replaceAll(" ", "").toLowerCase(); + String gameName = game.getString("title"); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); // 501 + return resEntity; + } + + if(!"".equals(gameId) && !"".equals(banGameId) && banGameId.contains(gameId+"|")) { + log.error(LOG_PREFIX+ "Ban Game Id : " + gameId); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); // 502 + return resEntity; + } + + try { + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String vendorTranKey = transaction.getString("id"); + String tranId = transaction.getString("id"); + String betId = tranId; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "thea"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", game.getString("code")); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "thea"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", game.getString("code")); + callBackObj.put("gameType", game.getString("type")); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 80) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callWin(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + LOG_PREFIX = LOG_PREFIX + "callWin:::"; + ResponseEntity resEntity = null; + TheaResponse response = new TheaResponse(); + net.sf.json.JSONObject target = transaction.getJSONObject("target"); + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + try { + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String vendorTranKey = transaction.getString("id"); + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "thea"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", game.getString("code")); + tranParam.put("gameIdx", game.getString("title")); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "thea"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", game.getString("title")); + callBackObj.put("gameId", game.getString("code")); + callBackObj.put("gameType", game.getString("type")); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + // Insert transaction.id for bet detail + try { + if(vendorIdx == 1) { + HashMap detailParam = new HashMap(); + detailParam.put("transactionId", transaction.getString("referer_id")); + detailParam.put("siteIdx", siteIdx); + log.info(LOG_PREFIX + "INSERT_THE_A_EVO_DETAIL dParam::" + detailParam.toString()); + int result = siteService.insertTheaTrxId(detailParam); + log.info(LOG_PREFIX + "INSERT_THE_A_EVO_DETAIL result::"+result); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "[insertTheaTrxId Exception]"+e.getMessage()); + } + + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callCancel(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, int amount) { + + ResponseEntity resEntity = null; + TheaResponse response = new TheaResponse(); + net.sf.json.JSONObject target = transaction.getJSONObject("target"); + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + try { + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String vendorTranKey = transaction.getString("id"); + String tranId = transaction.getString("id"); + String betId = transaction.getString("referer_id"); + if(amount > 0) { + // 배팅 취소 + tranId = tranId + "#DC"; + vendorTranKey = vendorTranKey + "#DC"; + LOG_PREFIX = LOG_PREFIX + "callCancelDebit:::"; + } else { + // 당첨 취소 + tranId = tranId + "#CC"; + vendorTranKey = vendorTranKey + "#CC"; + LOG_PREFIX = LOG_PREFIX + "callCancelCredit:::"; + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "thea"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", game.getString("type")); + tranParam.put("gameId", game.getString("code")); + tranParam.put("gameIdx", game.getString("title")); + if(amount > 0) { + // 배팅 취소 + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", Math.abs(amount)); + } else { + // 당첨 취소 + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", Math.abs(amount)); + tranParam.put("creditAmt", "0"); + } + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "thea"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", game.getString("title")); + callBackObj.put("gameId", game.getString("code")); + callBackObj.put("gameType", game.getString("type")); + if(amount > 0) { + // 배팅 취소 + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", Math.abs(amount)); + } else { + // 당첨 취소 + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", Math.abs(amount)); + callBackObj.put("credit", 0); + } + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private static String makeEdate(String LOG_PREFIX, String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf1.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf2.format(date2); + } catch(Exception e) { + log.error(LOG_PREFIX+ "makeEdate::Exception::"+e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallBackThenutController.java b/src/main/java/com/bb/front/CallBackThenutController.java new file mode 100644 index 0000000..611fc76 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackThenutController.java @@ -0,0 +1,767 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.HashMap; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; + +import com.bb.model.ThenutResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/cb/thenut") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallBackThenutController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam("username") String thenutUsername) throws Exception { + ThenutResponse response = null; + + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(thenutUsername.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::THENUT::balance::Invalid username format (hex expected): {}", thenutUsername); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("Invalid username format (hex expected)"); + return new ResponseEntity(response, HttpStatus.OK); + } + String memberId = thenutUsername.substring(3, thenutUsername.length()); + final String LOG_PREFIX = "#-CB::THENUT::balance::"+memberId+":::"; + log.info(LOG_PREFIX+ "Request::" + thenutUsername); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + log.info(LOG_PREFIX + "SITE_API_INFO_PARAM::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("NOT_FOUND_SITE_INFO"); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("존재하지 않는 회원"); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("BALANCE_CALLBACK_ERROR"); + return new ResponseEntity(response, HttpStatus.OK); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(0); + response.setMessage("SUCCESS"); + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("TIMEOUT_ERROR"); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-9); + response.setMessage("BALANCE_SERVER_ERROR"); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/bet") + public ResponseEntity callBet(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + ThenutResponse response = null; + HttpStatus httpStatus = null; + + String thenutUsername = requestBody.getString("username"); + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(thenutUsername.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::THENUT::callBet::Invalid username format (hex expected): {}", thenutUsername); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("Invalid username format (hex expected)"); + return new ResponseEntity(response, HttpStatus.OK); + } + String memberId = thenutUsername.substring(3, thenutUsername.length()); + long transactionId = requestBody.getLong("transactionId"); + String transactionType = requestBody.getString("transactionType"); + + final String LOG_PREFIX = "#-CB::THENUT::callBet::"+memberId+"::"+transactionId+"::"+transactionType+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "thenut"); + sParam.put("vendorGameCode", requestBody.getString("vendorCode")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + // "processed_at":"2025-01-16T09:25:23.000000Z" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = requestBody.getString("betAt"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + int amount = requestBody.getInt("amount"); + String gameType = requestBody.getString("gameType"); + String gameId = requestBody.getString("gameCode"); + String gameName = requestBody.getString("gameTitle"); + + String targetTableId = gameId.replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + if(!"".equals(targetTableId) && !"".equals(banGameId) && banGameId.contains(targetTableId+"|")) { + log.error(LOG_PREFIX+ "Ban Game Id : " + banGameId); + response = new ThenutResponse(); + response.setErrorCode(100); + response.setMessage("Ban Game Id : " + banGameId); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = Long.toString(transactionId); + String betId = tranId; + String betKey = requestBody.getString("gameRound")+requestBody.getString("gameCode")+requestBody.getString("vendorCode")+requestBody.getString("username"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(101); + response.setMessage("이미 존재하는 트랜잭션"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("VendorIdx doesn't match"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + response = new ThenutResponse(); + response.setErrorCode(-9); + response.setMessage("NO_SITE_CREDIT"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("MAX_BET_AMOUNT_OVER"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "thenut"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "thenut"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(0); + response.setMessage("SUCCESS"); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(101); + response.setMessage("이미 존재하는 트랜잭션"); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 80) { + int balance = resData.getInt("balance"); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(102); + response.setMessage("잔고 부족"); + httpStatus = HttpStatus.OK; + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response = new ThenutResponse(); + response.setErrorCode(500); + response.setMessage("알수없는 에러"); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response.setBalance(balance); + response.setErrorCode(102); + response.setMessage("잔고 부족"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "Response::금액을 확인하여 주세요::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + response.setErrorCode(0); + response.setMessage("SUCCESS"); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception: " + e.getMessage()); + response = new ThenutResponse(); + response.setErrorCode(-9); + response.setMessage("BALANCE_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/result") + public ResponseEntity callResult(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + ThenutResponse response = null; + HttpStatus httpStatus = null; + + String thenutUsername = requestBody.getString("username"); + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(thenutUsername.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::THENUT::callResult::Invalid username format (hex expected): {}", thenutUsername); + response = new ThenutResponse(); + response.setBalance(0); + response.setErrorCode(-1); + response.setMessage("Invalid username format (hex expected)"); + return new ResponseEntity(response, HttpStatus.OK); + } + String memberId = thenutUsername.substring(3, thenutUsername.length()); + long transactionId = requestBody.getLong("transactionId"); + long refererId = requestBody.getLong("refererId"); + String transactionType = requestBody.getString("transactionType"); + + final String LOG_PREFIX = "#-CB::THENUT::callResult::"+memberId+"::"+transactionId+"::"+transactionType+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "thenut"); + sParam.put("vendorGameCode", requestBody.getString("vendorCode")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + // "processed_at":"2025-01-16T09:25:23.000000Z" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = requestBody.getString("betAt"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + int amount = requestBody.getInt("amount"); + String gameType = requestBody.getString("gameType"); + String gameId = requestBody.getString("gameCode"); + String gameName = requestBody.getString("gameTitle"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = Long.toString(transactionId); + String betId = Long.toString(refererId); + String betKey = requestBody.getString("gameRound")+requestBody.getString("gameCode")+requestBody.getString("vendorCode")+requestBody.getString("username"); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(101); + response.setMessage("이미 존재하는 트랜잭션"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + response = new ThenutResponse(); + response.setErrorCode(101); + response.setMessage("처리한 베팅 존재X"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("VendorIdx doesn't match"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "thenut"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + if(transactionType.equals("PROMO_WIN")) { + tranParam.put("gameIdx", "TheNut Promo"); + } else { + tranParam.put("gameIdx", gameName); + } + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + if(transactionType.equals("CANCEL")) { + tranParam.put("isCancel", "Y"); + } else { + tranParam.put("isCancel", "N"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "thenut"); + callBackObj.put("gameIdx", vendorIdx); + if(transactionType.equals("PROMO_WIN")) { + callBackObj.put("gameKey", "TheNut Promo"); + } else { + callBackObj.put("gameIdx", gameName); + } + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + if(transactionType.equals("CANCEL")) { + callBackObj.put("isCancel", 1); + } else { + callBackObj.put("isCancel", 0); + } + if(transactionType.equals("PROMO_WIN")) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(0); + response.setMessage("SUCCESS"); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response = new ThenutResponse(); + response.setBalance(balance); + response.setErrorCode(101); + response.setMessage("이미 존재하는 트랜잭션"); + httpStatus = HttpStatus.OK; + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response = new ThenutResponse(); + response.setErrorCode(500); + response.setMessage("알수없는 에러"); + httpStatus = HttpStatus.OK; + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + response.setErrorCode(0); + response.setMessage("SUCCESS"); + httpStatus = HttpStatus.OK; + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new ThenutResponse(); + response.setErrorCode(-1); + response.setMessage("TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX + "Exception: " + e.getMessage()); + response = new ThenutResponse(); + response.setErrorCode(-9); + response.setMessage("BALANCE_SERVER_ERROR"); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.error(LOG_PREFIX + "Response Body: " + response.toString()); + + return res; + } +} diff --git a/src/main/java/com/bb/front/CallBackTowerController.java b/src/main/java/com/bb/front/CallBackTowerController.java new file mode 100644 index 0000000..fe36fa2 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackTowerController.java @@ -0,0 +1,531 @@ +package com.bb.front; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Random; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.bb.jwt.JwtManager; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +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/callback/tower") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackTowerController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + + + @GetMapping(value = "/api/balance" ) + public @ResponseBody String balance(HttpServletRequest request, ModelMap model) throws Exception { + + String userId = request.getParameter("user_id"); + int siteIdx = Integer.parseInt(userId.substring(0, 3), 16); + String memberId = userId.substring(3, userId.length()); + String authorization = request.getHeader("Authorization").toString(); + final String LOG_PREFIX = "#-CB::tower::"+memberId+"::balance:::"; + log.info("#callback::tower::"+ "SITE_IDX: "+siteIdx+", USER INFO: " + memberId); + + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tower"); + sParam.put("callbackKey", authorization); + + HashMap siteApiInfo = siteService.getSiteApiInfoByCallbackKey(sParam); + + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Callback Key 불일치"); + + return "E1"; + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + return "E2"; + } + + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + org.codehaus.jettison.json.JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "BALANCE_CALLBACK_ERROR"); + return "E3"; + } + String balance = resData.getString("balance"); + + + try { + + }catch(Exception e) { + log.error(LOG_PREFIX + "ERROR {}", e.toString()); + } + log.info(LOG_PREFIX+ "balance {}", balance); + return balance; + } + + + @GetMapping(value = "/api/bet" ) + public @ResponseBody JSONObject bet(HttpServletRequest request, ModelMap model) throws Exception { + + JSONObject res = new JSONObject(); + // 회원ID + String userId = request.getParameter("user_id"); + + + int siteIdx = Integer.parseInt(userId.substring(0, 3), 16); + String memberId = userId.substring(3, userId.length()); + String authorization = request.getHeader("Authorization").toString(); + final String LOG_PREFIX = "#-CB::tower::"+memberId+"::"+request.getParameter("transaction_id")+"::BET:::"; + log.info(LOG_PREFIX+ "#callback::tower::"+ "SITE_IDX: "+siteIdx+", USER INFO: " + memberId); + log.info(LOG_PREFIX+ "request: " + request.toString()); + + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tower"); + sParam.put("callbackKey", authorization); + /* + * CAST(si.siteIdx AS CHAR) AS siteIdx, + si.siteId, + CAST(sm.memberIdx AS CHAR) AS memberIdx, + sm.memberId, + si.siteCbUrl, + IFNULL(sa.vendorApiId, vi.vendorApiId) AS vendorApiId + */ + + HashMap siteApiInfo = siteService.getSiteApiInfoByCallbackKey(sParam); + + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Callback Key 불일치"); + res.put("status", "error") ; + return res; + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + res.put("status", "error") ; + return res; + } + + + sParam.put("vendorGameCode", request.getParameter("vendorCode")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo.get("vendorIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 벤더코드"); + res.put("status", "error") ; + return res; + } + + + // 배팅의 고유ID + String transactionId = request.getParameter("transaction_id"); + + // 게임ID (optional) + String gameId = request.getParameter("game_id"); + + // 벤더코드 + String vendorCode = request.getParameter("vendorCode"); + + // 게임코드 + String gameCode = request.getParameter("gameCode"); + + // 게임타이틀 + String gameTitle = gameCode; + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String paramName = (String) params.nextElement(); + if(paramName.equals("gameTitle")) { + gameTitle = request.getParameter(paramName); + } + } + + + // 배팅액 + String amountS = request.getParameter("amount"); + long amount = 0; + Double rrr = Double.parseDouble(amountS); + amount = rrr.longValue(); + + try { + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + res.put("status", "error") ; + return res; + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER - finalMaxBet: " + finalMaxBet); + res.put("status", "error") ; + return res; + } + + String vendorTranKey = transactionId; + String tranId = transactionId; + String betId = transactionId; + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = gameTitle; + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "tower"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameCode); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "tower"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameCode); + callBackObj.put("gameType", "slot"); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + // callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + org.codehaus.jettison.json.JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int rescreditUpdate = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + String balance = resData.getString("balance"); + res.put("status", "OK"); + res.put("balance", balance); + + + } else if(resData.getLong("result_code") == 98) { + String balance = resData.getString("balance"); + res.put("status", "OK"); + res.put("balance", balance); + } else if(resData.getLong("result_code") == 80) { + String balance = resData.getString("balance"); + res.put("status", "error"); + res.put("balance", balance); + } else { + res.put("status", "error"); + } + + + + log.info("res {}", res); + }catch(Exception e) { + log.error(LOG_PREFIX + "ERROR: " + e.toString()); + } + return res; + } + + + @GetMapping(value = "/api/result" ) + public @ResponseBody JSONObject result(HttpServletRequest request, ModelMap model) throws Exception { + + JSONObject res = new JSONObject(); + // 회원ID + String userId = request.getParameter("user_id"); + + // 거래 유형 + String transactionType = request.getParameter("transaction_type"); + + // 배팅의 고유ID + String transactionId = request.getParameter("transaction_id"); + + // 게임ID (optional) + String gameId = request.getParameter("game_id"); + + // 벤더코드 + String vendorCode = request.getParameter("vendorCode"); + + // 게임코드 + String gameCode = request.getParameter("gameCode"); + + // 게임타이틀 + String gameTitle = gameCode; + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + String paramName = (String) params.nextElement(); + if(paramName.equals("gameTitle")) { + gameTitle = request.getParameter(paramName); + } + } + + // 금액 + String amountS = request.getParameter("amount"); + long amount = 0; + Double rrr = Double.parseDouble(amountS); + amount = rrr.longValue(); + + // 거래의 고유ID + String reference = request.getParameter("reference"); + + // 취소할 reference (CANCEL_WIN 시에만 전송) + String referenceForCancel = request.getParameter("reference_for_cancel"); + + // 배팅상세내역 JSON (optional) + String bettingData = request.getParameter("betting_data"); + + + int siteIdx = Integer.parseInt(userId.substring(0, 3), 16); + String memberId = userId.substring(3, userId.length()); + String authorization = request.getHeader("Authorization").toString(); + final String LOG_PREFIX = "#-CB::tower::"+memberId+"::"+request.getParameter("transaction_id")+"::RESULT:::"; + log.info(LOG_PREFIX+ "#callback::tower::"+ "SITE_IDX: "+siteIdx+", USER INFO: " + memberId); + log.info(LOG_PREFIX+ "request: " + request.toString()); + + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tower"); + sParam.put("callbackKey", authorization); + /* + * CAST(si.siteIdx AS CHAR) AS siteIdx, + si.siteId, + CAST(sm.memberIdx AS CHAR) AS memberIdx, + sm.memberId, + si.siteCbUrl, + IFNULL(sa.vendorApiId, vi.vendorApiId) AS vendorApiId + */ + + HashMap siteApiInfo = siteService.getSiteApiInfoByCallbackKey(sParam); + + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Callback Key 불일치"); + res.put("status", "error") ; + return res; + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + res.put("status", "error") ; + return res; + } + + + sParam.put("vendorGameCode", request.getParameter("vendorCode")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo.get("vendorIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 벤더코드"); + res.put("status", "error") ; + return res; + } + + + try { + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + + String vendorTranKey = transactionId+transactionType; + String tranId = transactionId +transactionType; + String betId = transactionId; + + if(reference != null && !"".equals(reference)) { + // betId = reference; + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = gameTitle; + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "tower"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", gameCode); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt","0" ); + tranParam.put("creditAmt", amount); + + if("CANCEL".equals(transactionType) || "CANCEL_WIN".equals(transactionType)) { + tranParam.put("isCancel", "Y"); + }else { + tranParam.put("isCancel", "N"); + } + + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "tower"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameCode); + callBackObj.put("gameType", "slot"); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit",0 ); + callBackObj.put("credit", amount); + if("CANCEL".equals(transactionType) || "CANCEL_WIN".equals(transactionType)) { + callBackObj.put("isCancel", 1); + }else { + callBackObj.put("isCancel", 0); + } + if("PROMO_WIN".equals(transactionType) ) { + callBackObj.put("isBonus", 1); + }else { + callBackObj.put("isBonus", 0); + } + // callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + org.codehaus.jettison.json.JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int rescreditUpdate = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + String balance = resData.getString("balance"); + res.put("status", "OK"); + res.put("balance", balance); + + + } else if(resData.getLong("result_code") == 98) { + String balance = resData.getString("balance"); + res.put("status", "OK"); + res.put("balance", balance); + } else if(resData.getLong("result_code") == 80) { + String balance = resData.getString("balance"); + res.put("status", "error"); + res.put("balance", balance); + } else { + res.put("status", "error"); + } + + + + log.info("res {}", res); + }catch(Exception e) { + log.error(LOG_PREFIX + "ERROR: " + e.toString()); + } + return res; + } + + + + private String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + + } + + +} + diff --git a/src/main/java/com/bb/front/CallBackTplusController.java b/src/main/java/com/bb/front/CallBackTplusController.java new file mode 100644 index 0000000..79cffa1 --- /dev/null +++ b/src/main/java/com/bb/front/CallBackTplusController.java @@ -0,0 +1,1092 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.Random; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +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 org.springframework.web.client.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; + +import com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.TplusCBData; +import com.bb.model.TplusCBRequest; +import com.bb.model.TplusData; +import com.bb.model.TplusResponse; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +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/callback/tplus") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +public class CallBackTplusController { + + @Autowired + private final JwtManager jwtManager; + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + WebClient webClient; + + + @ResponseBody + @RequestMapping(path = "/auth") + public ResponseEntity callAuth(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + TplusResponse response = null; + TplusData data = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("api_key"); + net.sf.json.JSONObject params = requestBody.getJSONObject("params"); + String siteUsername = params.getString("user_name"); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::TPLUS::"+memberId+"::callAuth:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tplus"); + sParam.put("apiKey", apiKey); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfoByApiKey(sParam); + if(siteApiInfo == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + if(siteApiInfo.get("memberIdx") == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + data = new TplusData(); + data.setUserName(siteUsername); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("ResourceAccessException"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("Exception"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity callBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + TplusResponse response = null; + TplusData data = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getString("api_key"); + net.sf.json.JSONObject params = requestBody.getJSONObject("params"); + String siteUsername = params.getString("user_name"); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + final String LOG_PREFIX = "#-CB::TPLUS::"+memberId+"::callBalance:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tplus"); + sParam.put("apiKey", apiKey); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfoByApiKey(sParam); + if(siteApiInfo == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + if(siteApiInfo.get("memberIdx") == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + JSONObject member = new JSONObject(); + member.put("userId", memberId); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BALANCE_CALLBACK_ERROR"); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "resData::"+resData.toString()); + int balance = resData.getInt("balance"); + + data = new TplusData(); + data.setBalance((double) balance); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("ResourceAccessException"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("Exception"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/bet") + public ResponseEntity callBet(HttpServletRequest request, @RequestBody TplusCBRequest requestBody) throws Exception { + TplusResponse response = null; + TplusData data = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + TplusCBData param = requestBody.getParam(); + String siteUsername = param.getUserName(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = param.getProcessedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + } + param.setProcessedAt(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + String vendorTranKey = param.getTransactionKey(); + String tranId = param.getTransactionKey(); + String betId = param.getPairTransactionKey(); + if(betId == null || betId.equals("")) { + betId = param.getTransactionKey(); + } + + final String LOG_PREFIX = "#-CB::TPLUS::"+memberId+"::"+tranId+"::callBet:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tplus"); + sParam.put("vendorGameCode", param.getThirdParty()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + Long lastInVendorIdx = Long.parseLong(siteVendorInfo.get("lastInVendorIdx").toString()); + Long vendorIdx = Long.parseLong(siteVendorInfo.get("vendorIdx").toString()); + if(lastInVendorIdx.longValue() != vendorIdx.longValue()) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("VendorIdx doesn't match"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "VendorIdx doesn't match::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + } + + Double amountD = param.getAmount(); + if(amountD.intValue() < 0) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + int amount = Math.abs(amountD.intValue()); + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("NO_SITE_CREDIT"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "NO_SITE_CREDIT::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("MAX_BET_AMOUNT_OVER"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = param.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "tplus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", param.getGameSymbol()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BET_TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "BET_TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "tplus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameType", "slot"); + callBackObj.put("gameId", param.getGameSymbol()); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", param.getProcessedAt()); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET resData::"+resData.toString()); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + data = new TplusData(); + data.setBalance((double) balance); + data.setBeforeBalance((double) (balance + amount)); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 80) { + // 보유금액 초과 + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("금액을 확인하여 주세요"); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + // 중복자료 + int balance = resData.getInt("balance"); + data = new TplusData(); + data.setBalance((double) balance); + data.setBeforeBalance((double) (balance + amount)); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + } else { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("UNKNOWN_ERROR"); + httpStatus = HttpStatus.OK; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BET_SERVER_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/win") + public ResponseEntity callWin(HttpServletRequest request, @RequestBody TplusCBRequest requestBody) throws Exception { + TplusResponse response = null; + TplusData data = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + TplusCBData param = requestBody.getParam(); + String siteUsername = param.getUserName(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = param.getProcessedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + } + param.setProcessedAt(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + String tranId = param.getTransactionKey(); + String betId = param.getPairTransactionKey(); + if(betId == null || betId.equals("")) { + betId = param.getTransactionKey(); + } + + final String LOG_PREFIX = "#-CB::TPLUS::"+memberId+"::"+tranId+"::callWin:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tplus"); + sParam.put("vendorGameCode", param.getThirdParty()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = param.getAmount(); + if(amountD.intValue() < 0) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + int amount = Math.abs(amountD.intValue()); + + String vendorTranKey = param.getTransactionKey(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = param.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "tplus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", param.getGameSymbol()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BET_TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "BET_TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "tplus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameType", "slot"); + callBackObj.put("gameId", param.getGameSymbol()); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", param.getProcessedAt()); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT resData::"+resData.toString()); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + data = new TplusData(); + data.setBalance((double) balance); + data.setBeforeBalance((double) (balance - amount)); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + data = new TplusData(); + data.setBalance((double) balance); + data.setBeforeBalance((double) (balance - amount)); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + } else { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("UNKNOWN_ERROR"); + httpStatus = HttpStatus.OK; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BET_SERVER_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/cancel") + public ResponseEntity callCancel(HttpServletRequest request, @RequestBody TplusCBRequest requestBody) throws Exception { + TplusResponse response = null; + TplusData data = null; + HttpStatus httpStatus = null; + + String apiKey = requestBody.getApiKey(); + TplusCBData param = requestBody.getParam(); + String siteUsername = param.getUserName(); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + String betDateTimeStr = param.getProcessedAt(); + if(betDateTimeStr == null || betDateTimeStr.equals("")) { + betDateTimeStr = sdf.format(System.currentTimeMillis()); + } else { + betDateTimeStr = betDateTimeStr.replace("T", " ").replace("Z", ""); + } + param.setProcessedAt(betDateTimeStr); + + if(siteUsername == null || siteUsername.equals("") || siteUsername.equals("invalid-user")) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다."); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + long siteIdx = Long.parseLong(siteUsername.substring(0, 3), 16); + String memberId = siteUsername.substring(3, siteUsername.length()); + String tranId = param.getTransactionKey(); + String betId = param.getPairTransactionKey(); + if(betId == null || betId.equals("")) { + betId = param.getTransactionKey(); + } + + final String LOG_PREFIX = "#-CB::TPLUS::"+memberId+"::"+tranId+"::callCancel:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "tplus"); + sParam.put("vendorGameCode", param.getThirdParty()); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("존재하지 않는 회원입니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + if(!apiKey.equals(siteVendorInfo.get("vendorApiKey").toString())) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("API키가 일치하지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "API키가 일치하지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + Double amountD = param.getAmount(); + if(amountD.intValue() < 0) { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("금액이 올바르지 않습니다"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "금액이 올바르지 않습니다::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + int amount = Math.abs(amountD.intValue()); + + String vendorTranKey = param.getTransactionKey(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + String gameName = param.getGameName(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "tplus"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "slot"); + tranParam.put("gameId", param.getGameSymbol()); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "Y"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "commonBetinsert::배팅 쓰기지연::"+diffTime+"초 지연발생"); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BET_TIMEOUT_ERROR"); + httpStatus = HttpStatus.OK; + log.error(LOG_PREFIX+ "BET_TIMEOUT_ERROR::Response::" + response.toString()); + return new ResponseEntity(response, httpStatus); + } + log.info(LOG_PREFIX + "-----INSERT_CANCEL_START-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "tplus"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameType", "slot"); + callBackObj.put("gameId", param.getGameSymbol()); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 1); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", param.getProcessedAt()); + log.info(LOG_PREFIX + "SEND_CANCEL request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_CANCEL resData::"+resData.toString()); + log.info(LOG_PREFIX + "SEND_CANCEL status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CANCEL response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + data = new TplusData(); + data.setBalance((double) balance); + data.setBeforeBalance((double) (balance - amount)); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + data = new TplusData(); + data.setBalance((double) balance); + data.setBeforeBalance((double) (balance - amount)); + data.setCurrency("KRW"); + response = new TplusResponse(); + response.setCode(0); + response.setData(data); + httpStatus = HttpStatus.OK; + } else { + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("UNKNOWN_ERROR"); + httpStatus = HttpStatus.OK; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("TIMEOUT_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new TplusResponse(); + response.setCode(-1); + response.setMsg("BET_SERVER_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(value={"/newChangeBalance"}) + public ResponseEntity newChangeBalance(HttpServletRequest request) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + HttpHeaders headers = new HttpHeaders(); + + int renturnCode = 200; + + try { + //사이트정보 + HashMap sParam = new HashMap(); + long siteIdx = Long.parseLong(request.getParameter("username").toString().substring(0, 3), 16); + sParam.put("siteIdx", siteIdx); + String memberId =request.getParameter("username").toString().substring(3, request.getParameter("username").toString().length()); + sParam.put("memberId", memberId); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo==null) { + renturnCode = 500; + log.error("#-tplus::newChangeBalance::"+siteIdx+"::"+ request.getQueryString()); + return new ResponseEntity(apiResponse, headers, HttpStatus.valueOf(renturnCode)); // ResponseEntity를 활용한 응답 생성; + } + + String siteId = siteApiInfo.get("siteId").toString(); + long memberIdx = (long) siteApiInfo.get("memberIdx"); + + String tranId = (siteId+request.getParameter("transaction_key").toString()).trim(); + final String LOG_PREFIX = "#-tplus::newChangeBalance::"+siteIdx+"::"+memberIdx+"::"+tranId+"::::"; + + String tranType = ""; + String vendorApiId = request.getParameter("agent_name").toString(); + String vendorApiKey = request.getParameter("api_key").toString(); + + String balanceStr = request.getParameter("balance").toString(); + log.debug(LOG_PREFIX+ "balanceStr() : " + balanceStr); + + Double balanceD = Double.parseDouble(balanceStr); + log.debug(LOG_PREFIX+ "balanceD() : " + balanceD); + + int balance = balanceD.intValue(); + log.info(LOG_PREFIX+ "balance() : " +balance); + + String amountStr = request.getParameter("amount").toString(); + log.debug(LOG_PREFIX+ "amountStr() : " + amountStr); + + Double amountD = Double.parseDouble(amountStr); + log.debug(LOG_PREFIX+ "amountD() : " + amountD); + + long amount = amountD.longValue(); + log.info(LOG_PREFIX+ "amount() : " +amount); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + JSONObject debit = new JSONObject(); + debit.put("tranId", tranId); + debit.put("userId", memberId); + debit.put("vendor", "tplus"); + if("BET".equals(request.getParameter("type").toString())) { + tranType = "debit"; + debit.put("tranType", "debit"); + debit.put("amount", amount); + debit.put("balance", balance); + } else if("WIN".equals(request.getParameter("type").toString())) { + tranType = "credit"; + debit.put("tranType", "credit"); + debit.put("amount", amount); + debit.put("balance", balance); + } else { + if("deposit".equals(request.getParameter("type").toString())) { + tranType = "deposit"; + } else { + tranType = "withdraw"; + } + + renturnCode = 200; + return new ResponseEntity(apiResponse, headers, HttpStatus.valueOf(renturnCode)); // ResponseEntity를 활용한 응답 생성; + } + + log.info(LOG_PREFIX+ "/syncBalance param: " + debit.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(siteApiInfo.get("siteCbUrl")+"/changebalance/syncBalance") + .headers(h -> h.addAll(header)) + .bodyValue(debit.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX+ "/syncBalance status code : " + responseEntity.getStatusCode()); + log.info(LOG_PREFIX+ "body: " + responseEntity.getBody()); + + org.codehaus.jettison.json.JSONObject resData = new org.codehaus.jettison.json.JSONObject(responseEntity.getBody()); + log.info(LOG_PREFIX+ "result_code: " + resData.getInt("result_code")); + + if(resData.getLong("result_code") == 0) { + log.info(LOG_PREFIX+ "SUCC"); + renturnCode = 200; + } else { + log.error(LOG_PREFIX+ "FAIL"); + renturnCode = 500; + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("#-tplus::newChangeBalance::::["+request.getParameter("transaction_key").toString()+"]"+"::[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("#-tplus::newChangeBalance::::["+request.getParameter("transaction_key").toString()+"]"+"::[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("#-tplus::newChangeBalance::::["+request.getParameter("transaction_key").toString()+"]"+"::[InterruptedException]"+rae.getMessage()); + } + + renturnCode = 200; + log.error("#-tplus::newChangeBalance::::["+request.getParameter("transaction_key").toString()+"]"+"::[ResourceAccessException]"+rae.getMessage()); + } catch (Exception e) { + System.out.println(e.toString()); + e.printStackTrace(); + renturnCode = 500; + log.error("#-tplus::newChangeBalance::::["+request.getParameter("transaction_key").toString()+"]"+"::[Exception]"+e.getMessage()); + } + + log.info("#-tplus::newChangeBalance::::["+request.getParameter("transaction_key").toString()+"]::"+"::apiResponse: " + apiResponse.toString()); + return new ResponseEntity(apiResponse, headers, HttpStatus.valueOf(renturnCode)); // ResponseEntity를 활용한 응답 생성; + } + + + private String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + } + +} + diff --git a/src/main/java/com/bb/front/CallbackBetRadarController.java b/src/main/java/com/bb/front/CallbackBetRadarController.java new file mode 100644 index 0000000..a93d584 --- /dev/null +++ b/src/main/java/com/bb/front/CallbackBetRadarController.java @@ -0,0 +1,674 @@ +package com.bb.front; + +import java.io.IOException; +import java.net.SocketTimeoutException; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +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.util.ContentCachingRequestWrapper; +import org.springframework.web.util.WebUtils; + +import com.bb.model.BetRadarResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; +import com.bb.util.HmacUtils; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/betradar") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallbackBetRadarController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance( + HttpServletRequest request, + @RequestHeader("timestamp") String timestamp, + @RequestHeader("signature") String signature, + @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + BetRadarResponse response = null; + + String username = requestBody.getString("username"); + String target = ""; + int idx = username.indexOf('_'); + if (idx >= 0 && idx < username.length() - 1) { + target = username.substring(idx + 1); + } else { + target = username; + } + long siteIdx = Long.parseLong(target.substring(0, 3), 16); + String memberId = target.substring(3, target.length()); + final String LOG_PREFIX = "#-CB::BET_RADAR::"+memberId+"::balance:::"; + log.info(LOG_PREFIX+ "Request::" + requestBody); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "bet_radar"); + HashMap siteApiInfo = siteService.getSiteApiInfo2(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_USER"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + /* + // ===== Signature 검증 (여기서!) ===== + String apiKey = siteApiInfo.get("vendorApiKey").toString(); + String rawPayload = getRawBody(request); + + if (!verifySignature(timestamp, rawPayload, signature, apiKey)) { + log.error(LOG_PREFIX + "INVALID_SIGNATURE"); + + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity<>(response, HttpStatus.OK); + } + // ================================== + */ + + // ===== Signature 검증 (관찰 모드) ===== + try { + String apiKey = siteApiInfo.get("vendorApiKey").toString(); + String rawPayload = getRawBody(request); + + boolean valid = verifySignature(timestamp, rawPayload, signature, apiKey); + + if (!valid) { + log.error(LOG_PREFIX + "SIGNATURE_MISMATCH"); + log.error(LOG_PREFIX + "timestamp=" + timestamp); + log.error(LOG_PREFIX + "payload(raw)=" + rawPayload); + log.error(LOG_PREFIX + "signature(received)=" + signature); + + String calculated = HmacUtils.hmacSha256Hex(apiKey, timestamp + rawPayload); + log.error(LOG_PREFIX + "signature(calculated)=" + calculated); + } else { + log.info(LOG_PREFIX + "SIGNATURE_OK"); + } + + } catch (Exception e) { + log.error(LOG_PREFIX + "SIGNATURE_EXCEPTION", e); + } + // ====================================== + + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "Callback URL::" + siteApiInfo.get("siteCbUrl")+"/balance"); + log.info(LOG_PREFIX+ "Callback Param::" + member.toString()); + + member.put("userId", memberId); + org.codehaus.jettison.json.JSONObject resBalancedData = callBackService.getBalance(siteApiInfo, member); + if(resBalancedData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + int balance = resBalancedData.getInt("balance"); + response = new BetRadarResponse(); + response.setBalance(balance); + response.setError(0); + + } catch (ResourceAccessException rae) { + 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()); + } + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + @ResponseBody + @RequestMapping(path = "/bet") + private ResponseEntity bet(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) { + BetRadarResponse response = null; + + String username = requestBody.getString("username"); + String target = ""; + int idx = username.indexOf('_'); + if (idx >= 0 && idx < username.length() - 1) { + target = username.substring(idx + 1); + } else { + target = username; + } + net.sf.json.JSONObject transactionObj = requestBody.getJSONObject("transaction"); + net.sf.json.JSONObject gameObj = transactionObj.getJSONObject("details").getJSONObject("game"); + net.sf.json.JSONArray betInfoArr = transactionObj.getJSONObject("details").getJSONArray("bet_info"); + String type = transactionObj.getString("type"); + String betId = gameObj.getString("id"); + String tranId = betId+"#"+type; + String vendorTranKey = tranId; + String betTitle = type + " | " + gameObj.getString("type") + " | " + gameObj.getString("odds"); + long siteIdx = Long.parseLong(target.substring(0, 3), 16); + String memberId = target.substring(3, target.length()); + final String LOG_PREFIX = "#-CB::BET_RADAR::"+memberId+"::bet::"+betId+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody); + + try { + // "date":"2025-05-21T08:05:32.925Z" => "2025-05-21 08:05:32" + String betDateTimeStr = transactionObj.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "bet_radar"); + sParam.put("vendorGameCode", "SKSPORTS"); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteVendorInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_USER"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + int amount = requestBody.getInt("amount"); + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + if(siteMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "bet_radar"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "SKSPORTS"); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", betTitle); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "bet_radar"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", betTitle); + callBackObj.put("gameId", ""); + callBackObj.put("gameType", "SKSPORTS"); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + String detailJsonStr = transactionObj.getJSONObject("details").toString(); + JSONObject detailObj = new JSONObject(detailJsonStr); + callBackObj.put("detail", detailObj); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + asyncCallBackService.asyncSportsRadarProc(LOG_PREFIX, tranParam, requestBody); + + int balance = resData.getInt("balance"); + response = new BetRadarResponse(); + response.setBalance(balance); + response.setError(0); + } else if(resData.getLong("result_code") == 98) { + log.error(LOG_PREFIX + "중복요청"); + int balance = resData.getInt("balance"); + response = new BetRadarResponse(); + response.setBalance(balance); + response.setError(0); + } else if(resData.getLong("result_code") == 80) { + log.error(LOG_PREFIX + "잔액부족"); + int balance = resData.getInt("balance"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } + + } catch (ResourceAccessException rae) { + 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()); + } + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + /** + * + * @param request + * @param requestBody + * + * > requestBody.transaction.type + * - bet 베팅 + * - win 당첨 + * - lose 낙첨 + * - push 적특 + * - cancle 취소 + * + * > requestBody.transaction.rollback + * - 0 : 정상 처리 + * - 1 : 롤백 처리 + * @return + */ + @ResponseBody + @RequestMapping(path = "/result") + private ResponseEntity result(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) { + BetRadarResponse response = null; + + String username = requestBody.getString("username"); + String target = ""; + int idx = username.indexOf('_'); + if (idx >= 0 && idx < username.length() - 1) { + target = username.substring(idx + 1); + } else { + target = username; + } + net.sf.json.JSONObject transactionObj = requestBody.getJSONObject("transaction"); + net.sf.json.JSONObject gameObj = transactionObj.getJSONObject("details").getJSONObject("game"); + net.sf.json.JSONArray betResultInfoArr = transactionObj.getJSONObject("details").getJSONArray("bet_result_info"); + String type = transactionObj.getString("type"); + int rollback = transactionObj.getInt("rollback"); // rollback=1 이면 롤백. 이전 상태와 type이변경 + String betId = gameObj.getString("id"); + String tranId = betId+"#"+type; + String vendorTranKey = tranId; + String betTitle = type + " | " + gameObj.getString("type"); + long siteIdx = Long.parseLong(target.substring(0, 3), 16); + String memberId = target.substring(3, target.length()); + final String LOG_PREFIX = "#-CB::BET_RADAR::"+memberId+"::"+type+"::"+betId+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody); + + try { + // "date":"2025-05-21T08:05:32.925Z" => "2025-05-21 08:05:32" + String betDateTimeStr = transactionObj.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "bet_radar"); + sParam.put("vendorGameCode", "SKSPORTS"); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteVendorInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_USER"); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + return new ResponseEntity(response, HttpStatus.OK); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + int amount = requestBody.getInt("amount"); + + HashMap tranParam = new HashMap(); + JSONObject callBackObj = new JSONObject(); + if(rollback == 1) { + // 이전 결과 콜백 조회 및 롤백 처리 + tranId = tranId + "#rb"; + tranParam.put("tranId", tranId); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "bet_radar"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "SKSPORTS"); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", "#Rollback-"+betTitle); + if(amount > 0) { + // 롤백 - 유저 잔액 증가 + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", Math.abs(amount)); + } else { + // 롤백 - 유저 잔액 감소 + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", Math.abs(amount)); + tranParam.put("creditAmt", "0"); + } + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "bet_radar"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", "#Rollback-"+betTitle); + callBackObj.put("gameId", ""); + callBackObj.put("gameType", "SKSPORTS"); + callBackObj.put("tranType", "adjust"); + if(amount > 0) { + // 롤백 - 유저 잔액 증가 + callBackObj.put("debit", 0); + callBackObj.put("credit", Math.abs(amount)); + } else { + // 롤백 - 유저 잔액 감소 + callBackObj.put("debit", Math.abs(amount)); + callBackObj.put("credit", 0); + } + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + } else { + // rollback == 0 > 기본 결과 콜백 + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "bet_radar"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", "SKSPORTS"); + tranParam.put("gameId", ""); + tranParam.put("gameIdx", betTitle); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + if("cancel".equals(type)) { + tranParam.put("isCancel", "Y"); + } else { + tranParam.put("isCancel", "N"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "bet_radar"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", betTitle); + callBackObj.put("gameId", ""); + callBackObj.put("gameType", "SKSPORTS"); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + if("cancel".equals(type)) { + callBackObj.put("isCancel", 1); + } else { + callBackObj.put("isCancel", 0); + } + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "N"); + callBackObj.put("requestAt", betDateTimeStr); + } + + String detailJsonStr = transactionObj.getJSONObject("details").toString(); + JSONObject detailObj = new JSONObject(detailJsonStr); + callBackObj.put("detail", detailObj); + + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + asyncCallBackService.asyncSportsRadarProc(LOG_PREFIX, tranParam, requestBody); + + int balance = resData.getInt("balance"); + response = new BetRadarResponse(); + response.setBalance(balance); + response.setError(0); + } else if(resData.getLong("result_code") == 98) { + log.error(LOG_PREFIX + "중복요청"); + int balance = resData.getInt("balance"); + response = new BetRadarResponse(); + response.setBalance(balance); + response.setError(0); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } + + } catch (ResourceAccessException rae) { + 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()); + } + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + response = new BetRadarResponse(); + response.setBalance(0); + response.setError(1); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + return res; + } + + private boolean verifySignature(String timestamp, String payload, String receivedSignature, String apiKey) { + + String message = timestamp + payload; + String calculated = HmacUtils.hmacSha256Hex(apiKey, message); + + return MessageDigest.isEqual( + calculated.getBytes(StandardCharsets.UTF_8), + receivedSignature.getBytes(StandardCharsets.UTF_8) + ); + } + + private String getRawBody(HttpServletRequest request) throws IOException { + + ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); + + if (wrapper == null) { + throw new IllegalStateException("Request not wrapped"); + } + + byte[] buf = wrapper.getContentAsByteArray(); + return new String(buf, StandardCharsets.UTF_8); + } + + +} diff --git a/src/main/java/com/bb/front/CallbackGrandController.java b/src/main/java/com/bb/front/CallbackGrandController.java new file mode 100644 index 0000000..33665ca --- /dev/null +++ b/src/main/java/com/bb/front/CallbackGrandController.java @@ -0,0 +1,402 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +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.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.ResourceAccessException; + +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.sf.json.JSONObject; + +@Slf4j +@RequestMapping("/api/cb/grand") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallbackGrandController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + // https://oprvender.com/api/cb/gsoft/syncBalance + // https://oprvender.com/api/cb/gsoft/balance + // https://oprvender.com/api/cb/gsoft/changeBalance + + @ResponseBody + @GetMapping(path = "/balance", produces = "application/json") // JSON만 생산 + public ResponseEntity balance(HttpServletRequest request, @RequestParam("username") String grandUserId) throws Exception { + JSONObject resData = new JSONObject(); + HttpStatus httpStatus = null; + + long siteIdx = Long.parseLong(grandUserId.substring(0, 3), 16); + String memberId = grandUserId.substring(3, grandUserId.length()); + final String LOG_PREFIX = "#-CB::GRAND::balance::"+memberId+":::"; + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo==null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + org.codehaus.jettison.json.JSONObject member = new org.codehaus.jettison.json.JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "Callback URL::" + siteApiInfo.get("siteCbUrl")+"/balance"); + log.info(LOG_PREFIX+ "Callback Param::" + member.toString()); + + member.put("userId", memberId); + org.codehaus.jettison.json.JSONObject resBalancedData = callBackService.getBalance(siteApiInfo, member); + if(resBalancedData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + int balance = resBalancedData.getInt("balance"); + + resData.put("balance", balance); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "Response: "+resData.toString()); + + return new ResponseEntity(resData, HttpStatus.OK); + } + + + @ResponseBody + @PostMapping(path = "/change-balance", produces = "application/json") // JSON만 생산 + public ResponseEntity changebalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + String grandUserId = requestBody.getString("username"); + JSONObject transaction = requestBody.getJSONObject("transaction"); + String tranType = transaction.getString("type"); + long siteIdx = Long.parseLong(grandUserId.substring(0, 3), 16); + String memberId = grandUserId.substring(3, grandUserId.length()); + final String LOG_PREFIX = "#-CB::GRAND::changeBalance::"+memberId+"::"+transaction.getString("id")+"::"+tranType+":::"; + log.info(LOG_PREFIX+ "Request Body: "+requestBody.toString()); + + JSONObject resData = new JSONObject(); + HttpStatus httpStatus = null; + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "grand"); + sParam.put("vendorGameCode", "pragmatic_slot"); + HashMap siteApiInfo = siteService.getSiteVendorInfo(sParam); + if(siteApiInfo==null) { + log.error(LOG_PREFIX+ "siteApiInfo is null "+tranType+" "+grandUserId+"::"+ "Error Msg: NOT_FOUND_SITE_INFO"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + long amount = requestBody.getLong("amount"); + long overAmount =requestBody.getLong("over_amount"); + long memberIdx = Long.parseLong(siteApiInfo.get("memberIdx").toString()); + long vendorIdx = Long.parseLong(siteApiInfo.get("vendorIdx").toString()); + + String siteId = siteApiInfo.get("siteId").toString(); + String vendorApiId = siteApiInfo.get("vendorApiId").toString(); + String vendorKey = siteApiInfo.get("vendorKey").toString(); + + // 2025-06-10T07:12:54.355000Z + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = transaction.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 23); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== MF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = makeEdate(LOG_PREFIX, betDateTimeStr, 32400000); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + if(amount < 0) { + long siteCredit = Long.parseLong(siteApiInfo.get("credit").toString()); + if(siteCredit < amount) { + log.error(LOG_PREFIX+ "SITE_IDX: "+siteIdx+" NO_SITE_CREDIT"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + + long siteMaxBet = Long.parseLong(siteApiInfo.get("siteMaxBet").toString()); + if(siteMaxBet < amount) { + log.error(LOG_PREFIX+ "SITE_IDX: "+siteIdx+"MAX_BET_AMOUNT_OVER"); + return new ResponseEntity(resData, HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + String tranId = siteId+transaction.getString("id")+tranType; + String betId = ""; + //String vendorTranKey = transaction.getString("id"); + String vendorTranKey = ""; + + String gameName = ""; + String gameId = ""; + String gameType = "slot"; + try { + JSONObject gameDetail = transaction.getJSONObject("details"); + JSONObject gameJson = gameDetail.getJSONObject("game"); + try { + gameId = gameJson.getString("game"); + gameName = gameJson.getString("game_name"); + vendorTranKey = gameJson.getString("round"); + } catch(Exception e){ + log.error(LOG_PREFIX+ "gameName is empty"); + gameName = gameId; + } + + if("bet".equals(tranType)) { + betId = siteId + transaction.getString("id")+memberIdx; + } else if("win".equals(tranType) || "adjust".equals(tranType)) { + betId = siteId + transaction.getString("referer_id")+memberIdx; + } else { + betId = siteId + transaction.getString("id")+memberIdx; + } + + } catch(Exception e) { + if("bet".equals(tranType)) { + betId = siteId + transaction.getString("id")+memberIdx; + } else if("win".equals(tranType) || "adjust".equals(tranType)) { + betId = siteId + transaction.getString("referer_id")+memberIdx; + } else { + betId = siteId + transaction.getString("id")+memberIdx; + } + log.error(LOG_PREFIX+ "gameDetail is empty"); + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", "SLOT"); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "grand"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + if(amount <0) { + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", Math.abs(amount)); + tranParam.put("creditAmt", "0"); + } else { + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", amount-overAmount); + } + //tranParam.put("isCancel", "N"); + if("cancel".equals(tranType)) { + tranParam.put("isCancel", "Y"); + }else { + tranParam.put("isCancel", "N"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + log.info(LOG_PREFIX+ "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX+ "-----INSERT_BET_END-----"); + + org.codehaus.jettison.json.JSONObject callBackObj = new org.codehaus.jettison.json.JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "grand"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + if(amount < 0) { + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", Math.abs(amount)); + callBackObj.put("credit", 0); + } else { + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount-overAmount); + } + //callBackObj.put("isCancel", 0); + + if("cancel".equals(tranType)) { + callBackObj.put("isCancel", 1); + } else { + callBackObj.put("isCancel", 0); + } + + if("adjust".equals(tranType)) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX+ "SEND_BET request body: " + callBackObj.toString()); + org.codehaus.jettison.json.JSONObject resTranData = callBackService.changeBalanceSlot(LOG_PREFIX, siteApiInfo, callBackObj); + log.info(LOG_PREFIX+ "SEND_BET response body: " + resTranData.toString()); + + if(resTranData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resTranData.getLong("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX+ "UPDATE_CALLBACK_API_STATUS END"); + + long balance = resTranData.getLong("balance"); + resData.put("balance", balance); + httpStatus = HttpStatus.OK; + + } else if(resTranData.getLong("result_code") == 98) { + // 중복 + long balance = resTranData.getLong("balance"); + resData.put("balance", balance); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } else { + // 실패 + log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "::"+grandUserId+"::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "::"+grandUserId+"::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "::"+grandUserId+"::"+ "[InterruptedException]"+rae.getMessage()); + } + + log.error(LOG_PREFIX+ "::"+grandUserId+"::"+ "[ResourceAccessException]"+rae.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "#-Grand::::"+grandUserId+"::"+ "[Exception]"+e.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "::"+grandUserId+"::"+ "Response: "+resData.toString()); + + return new ResponseEntity(resData, httpStatus); + } + + @ResponseBody + @GetMapping(path = "/detail", produces = "application/json") // JSON만 생산 + public ResponseEntity detail(HttpServletRequest request, @RequestParam("username") String grandUserId) throws Exception { + JSONObject resData = new JSONObject(); + HttpStatus httpStatus = null; + + long siteIdx = Long.parseLong(grandUserId.substring(0, 3), 16); + String memberId = grandUserId.substring(3, grandUserId.length()); + final String LOG_PREFIX = "#-CB::GRAND::detail"+memberId+":::"; + + try { + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + + httpStatus = HttpStatus.INTERNAL_SERVER_ERROR; + } + + ResponseEntity res = new ResponseEntity(resData, httpStatus); + log.info(LOG_PREFIX+ "Response: "+resData.toString()); + + return new ResponseEntity(resData, HttpStatus.OK); + } + + private static String makeEdate(String LOG_PREFIX, String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf1.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf2.format(date2); + } catch(Exception e) { + log.error(LOG_PREFIX+ "makeEdate::Exception::"+e.getMessage()); + } + return eDate; + } +} diff --git a/src/main/java/com/bb/front/CallbackGsoftController.java b/src/main/java/com/bb/front/CallbackGsoftController.java new file mode 100644 index 0000000..055138a --- /dev/null +++ b/src/main/java/com/bb/front/CallbackGsoftController.java @@ -0,0 +1,784 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.GsoftApiInfo; +import com.bb.model.GsoftResponse; +import com.bb.model.GsoftTrxVO; +import com.bb.model.GsoftVO; +import com.bb.service.CallBackService; +import com.bb.service.GsoftService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/cb/gsoft") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallbackGsoftController { + + @Autowired + SiteService siteService; + + @Autowired + GsoftService gsoftService; + + @Autowired + CallBackService callBackService; + + @Autowired + WebClient webClient; + + // https://oprvender.com/api/cb/gsoft/syncBalance + // https://oprvender.com/api/cb/gsoft/balance + // https://oprvender.com/api/cb/gsoft/changeBalance + + @ResponseBody + @RequestMapping(path = "/syncBalance") + public ResponseEntity syncBalance(HttpServletRequest request, @RequestBody GsoftTrxVO gsoftTrxVO) throws Exception { + GsoftResponse response = null; + HttpStatus httpStatus = null; + + long siteIdx = Long.parseLong(gsoftTrxVO.getUserId().substring(0, 3), 16); + String memberId = gsoftTrxVO.getUserId().substring(3, gsoftTrxVO.getUserId().length()); + String game = gsoftTrxVO.getGame(); + final String LOG_PREFIX = "#-Gsoft::syncBalance::"+gsoftTrxVO.getUserId()+"::"+game+"::"+gsoftTrxVO.getTranId()+"::::"; + + log.info(LOG_PREFIX+ "[REQUEST: "+request.getRequestURI()+"] " + gsoftTrxVO); + + try { + log.info(LOG_PREFIX+ "SITE_IDX: "+siteIdx+", USER_INFO: " + memberId+", GAME_INFO: " + game); + + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberId", memberId); + memParam.put("vendorGameCode", "SxPRG"); + HashMap userVendorInfo = siteService.getUserVendorInfo(memParam); + if(userVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO::memParam::" + memParam.toString()); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(gsoftTrxVO.getBalance().intValue()); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + String siteId = userVendorInfo.get("siteId").toString(); +// long memberIdx = (long) siteApiInfo.get("memberIdx"); + long memberIdx = Long.parseLong(userVendorInfo.get("memberIdx").toString()); + + int amount = Math.abs(gsoftTrxVO.getAmount().intValue()); + int balance = gsoftTrxVO.getBalance().intValue(); + log.info(LOG_PREFIX + "getBalanceUser::SUCC::BF_BALANCE::"+balance); + + String tranType = ""; + String type = gsoftTrxVO.getType(); + + String tranId = siteId + "#" + gsoftTrxVO.getTranId(); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + JSONObject trxObj = new JSONObject(); + trxObj.put("tranId", tranId); + trxObj.put("userId", memberId); + trxObj.put("vendor", "gsoft"); + + if(type.equals("bet")) { + tranType = "debit"; + trxObj.put("tranType", tranType); + balance = balance - amount; + + } else { + // win, lose, cancel + GsoftApiInfo gsoftApiInfo = GsoftApiInfo.builder() + .siteIdx(siteIdx) + .memberIdx(memberIdx) + .apiBaseUrl(userVendorInfo.get("vendorApiUrl").toString()) + .clientId(userVendorInfo.get("vendorApiId").toString()) + .apiAuthKey(userVendorInfo.get("vendorApiKey").toString()) + .userId(gsoftTrxVO.getUserId()) + .build(); + JSONObject balanceRes = gsoftService.getBalanceUser(gsoftApiInfo); + if(balanceRes != null && balanceRes.getInt("result") == 1) { + log.info(LOG_PREFIX + "getBalanceUser::SUCC::AF_BALANCE::"+balance); + balance = balanceRes.getInt("balance"); + tranType = "balance"; + trxObj.put("tranType", tranType); + } else { + log.error(LOG_PREFIX + "Error Msg: BALANCE_ERROR"); + tranType = "credit"; + trxObj.put("tranType", tranType); + balance = balance + amount; + } + } + + trxObj.put("amount", amount); + trxObj.put("balance", balance); + + log.info(LOG_PREFIX + "param: " + trxObj.toString()); + + String url = userVendorInfo.get("siteCbUrl")+"/changebalance/syncBalance"; + org.springframework.http.ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(url) + .headers(h -> { + h.add("Content-Type", "application/json"); + h.add("Accept", "application/json"); + h.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + }) + .bodyValue(trxObj.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX + "/syncBalance status code : {}" + responseEntity.getStatusCode()); + log.info(LOG_PREFIX + "body: " + responseEntity.getBody()); + } catch (WebClientRequestException wcre) { + Throwable cause = wcre.getCause(); + if(cause instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[ConnectTimeoutException]"+wcre.getMessage()); + } + if(cause instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[SocketTimeoutException]"+wcre.getMessage()); + } + if(cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[InterruptedException]"+wcre.getMessage()); + } + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[WebClientRequestException]"+wcre.getMessage()); + } catch (WebClientResponseException wre) { + String str = wre.getResponseBodyAsString(); + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[WebClientResponseException]"+str); + } + + JSONObject resData = new JSONObject(responseEntity != null ? responseEntity.getBody() : "{}"); + log.info(LOG_PREFIX + "result_code: " + resData.getInt("result_code")); + + if(resData.getLong("result_code") == 0) { + log.info(LOG_PREFIX + "CallBack::SUCC"); + } else { + log.error(LOG_PREFIX + "CallBack::FAIL"); + } + + response = new GsoftResponse(); + response.setResult(1); + response.setBalance(0); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[InterruptedException]"+rae.getMessage()); + } + + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[ResourceAccessException]"+rae.getMessage()); + + response = new GsoftResponse(); + response.setResult(1); + response.setBalance(0); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::[Exception]"+e.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "### GSOFT API(syncBalance) ###::syncBalance() Response: " + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam("userid") String gsoftUserId) throws Exception { + GsoftResponse response = null; + HttpStatus httpStatus = null; + + try { + //사이트정보 + HashMap sParam = new HashMap(); + long siteIdx = Long.parseLong(gsoftUserId.substring(0, 3), 16); + String memberId = gsoftUserId.substring(3, gsoftUserId.length()); + log.info("#-Gsoft::balance::"+gsoftUserId+"::"+ "SITE_IDX: "+siteIdx+", USER INFO: " + memberId); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo==null) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info("#-Gsoft::balance::"+gsoftUserId+"::"+ "Callback URL::" + siteApiInfo.get("siteCbUrl")+"/balance"); + log.info("#-Gsoft::balance::"+gsoftUserId+"::"+ "Callback Param::" + member.toString()); + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + String url = siteApiInfo.get("siteCbUrl")+"/balance"; + org.springframework.http.ResponseEntity responseEntity = null; + try { + responseEntity = webClient.post() + .uri(url) + .headers(h -> { + h.add("Content-Type", "application/json"); + h.add("Accept", "application/json"); + h.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + }) + .bodyValue(member.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info("#-Gsoft::balance::"+gsoftUserId+"::"+ "Callback Status code::" + responseEntity.getStatusCode()); + log.info("#-Gsoft::balance::"+gsoftUserId+"::"+ "Callback Response body::" + responseEntity.getBody()); + } catch (WebClientRequestException wcre) { + Throwable cause = wcre.getCause(); + if(cause instanceof ConnectTimeoutException) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[ConnectTimeoutException]"+wcre.getMessage()); + } + if(cause instanceof SocketTimeoutException) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[SocketTimeoutException]"+wcre.getMessage()); + } + if(cause instanceof InterruptedException) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[InterruptedException]"+wcre.getMessage()); + } + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[WebClientRequestException]"+wcre.getMessage()); + } catch (WebClientResponseException wre) { + String str = wre.getResponseBodyAsString(); + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[WebClientResponseException]"+str); + } + + JSONObject resData = new JSONObject(responseEntity != null ? responseEntity.getBody() : "{}"); + int balance = resData.getInt("balance"); + + response = new GsoftResponse(); + response.setResult(1); + response.setBalance(balance); + httpStatus = HttpStatus.OK; + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[InterruptedException]"+rae.getMessage()); + } + + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[ResourceAccessException]"+rae.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error("#-Gsoft::balance::"+gsoftUserId+"::"+ "[Exception]"+e.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info("#-Gsoft::balance::"+gsoftUserId+"::"+ "Response: "+response.toString()); + + return res; + } + + @ResponseBody + @RequestMapping(path = "/changeBalance") + public ResponseEntity changeBalance(HttpServletRequest request, @RequestBody GsoftVO gsoftVO) throws Exception { + GsoftResponse response = null; + HttpStatus httpStatus = null; + + String gsofIdx = gsoftVO.getRealRound(); + String gsofTranType = gsoftVO.getType().toUpperCase(); + String gsofGame = gsoftVO.getGame(); + String gsoftUserId = gsoftVO.getUserId(); + + final String LOG_PREFIX = "#-Gsoft::changeBalance::"+gsoftUserId+"::"+gsofGame+"::"+gsofIdx+"::"+gsofTranType+"::::"; + + try { + log.info(LOG_PREFIX+ "GsoftVO::"+gsoftVO.toString()); + + //사이트정보 + long siteIdx = Long.parseLong(gsoftUserId.substring(0, 3), 16); + String memberId = gsoftUserId.substring(3, gsoftUserId.length()); + log.info(LOG_PREFIX+ "SITE_IDX: "+siteIdx+", USER INFO: " + memberId); + /* + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberId", memberId); + memParam.put("vendorGameCode", gsofGame); + HashMap userVendorInfo = siteService.getUserVendorInfo(memParam); + log.info(LOG_PREFIX+ "userVendorInfo::"+userVendorInfo.toString()); + */ + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "gsoft"); + sParam.put("vendorGameCode", gsofGame); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null || siteVendorInfo.get("vendorApiId") == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + return new ResponseEntity(response, httpStatus); + } + String siteId = siteVendorInfo.get("siteId").toString(); + + if(gsoftVO.getType().equals("bet")) { + // bet 요청 + response = callDebit(gsoftVO, siteVendorInfo, siteId, memberId, LOG_PREFIX); + + } else if(gsoftVO.getType().equals("win") || gsoftVO.getType().equals("lose") || gsoftVO.getType().equals("cancel")) { + // win, lose, cancel 요청 + if(gsoftVO.getType().equals("lose")) { + // 미당첨 시 금액 == 0 + gsoftVO.setAmount(0); + } + response = callCredit(gsoftVO, siteVendorInfo, siteId, memberId, LOG_PREFIX); + + } else { + } + + if(response != null && response.getResult() == 1) { + httpStatus = HttpStatus.OK; + } else { + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + httpStatus = HttpStatus.OK; + } + + ResponseEntity res = new ResponseEntity(response, httpStatus); + log.info(LOG_PREFIX+ "Response: "+response.toString() + ", HttpStatus: " + httpStatus); + + return res; + } + + + private GsoftResponse callDebit(GsoftVO gsoftVO, HashMap siteVendorInfo, String siteId, String memberId, final String LOG_PREFIX) { + GsoftResponse response = null; + + log.info(LOG_PREFIX+ "callDebit::START"); + try { + String vendorTranKey = gsoftVO.getTranId(); + String tranId = siteId + "#" + vendorTranKey; + String betId = siteId + "#" + gsoftVO.getRealRound(); + + // 중복체크 + long chs1 = System.currentTimeMillis(); + int betCnt = siteService.getBotaBetCnt(tranId); + long che1 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diff1 = (chs1 - che1)/1000.0; //두 시간에 차 계산 + log.error(LOG_PREFIX+ "Duplicate check::" + String.format("%.3f", diff1)); + if(betCnt != 0) { + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + log.error(LOG_PREFIX + "Duplicate tranId: " + tranId); + return response; + } + + int amount = Math.abs(gsoftVO.getAmount()); + long amountL = amount; + long targetSiteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + if(targetSiteCredit < amountL) { + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + log.error(LOG_PREFIX + "no_site_credit"); + return response; + } + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + if(siteMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxBet : " + siteMaxBet +", amount : " + amount); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + log.error(LOG_PREFIX + "MAX_BET_AMOUNT_OVER"); + return response; + } + + long siteIdx = Long.parseLong(siteVendorInfo.get("siteIdx").toString()); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String siteCbUrl = siteVendorInfo.get("siteCbUrl").toString(); +// HashMap vendorInfo = siteService.getGsoftVendorInfo(gsoftVO.getGame()); + long vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "gsoft"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameIdx", gsoftVO.getTitle()); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "배팅 쓰기지연:"+diffTime+"초 지연발생"); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + return response; + } + log.info(LOG_PREFIX + "siteService.commonBetinsert() END"); + /* + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + */ + JSONObject debit = new JSONObject(); + debit.put("betId", betId); + debit.put("tranId", tranId); + debit.put("userId", memberId); + debit.put("vendorIdx", vendorIdx); + debit.put("vendorKey", vendorKey); + debit.put("vendor", "gsoft"); + debit.put("gameIdx", vendorIdx); + debit.put("gameKey", gsoftVO.getTitle()); + debit.put("tranType", "debit"); + debit.put("debit", amount); + debit.put("credit", 0); + debit.put("isCancel", 0); + debit.put("isBonus", 0); + debit.put("requestAt", gsoftVO.getTime()); + + JSONObject resData = new JSONObject(); + if(vendorCetegory.equals("SLOT")) { + log.info(LOG_PREFIX + "SEND_DEBIT::changeBalanceSlot::param: " + debit.toString()); + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, debit); + log.info(LOG_PREFIX + "SEND_DEBIT::changeBalanceSlot::status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_DEBIT::changeBalanceSlot::response body: " + resData.toString()); + } else { + log.info(LOG_PREFIX + "SEND_DEBIT::changeBalance::param: " + debit.toString()); + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, debit); + log.info(LOG_PREFIX + "SEND_DEBIT::changeBalance::status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_DEBIT::changeBalance::response body: " + resData.toString()); + } + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "siteService.updateCbApi() END"); + int balance = resData.getInt("balance"); + + response = new GsoftResponse(); + response.setResult(1); + response.setBalance(balance); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX + "result_code:"+resData.getLong("result_code")); + log.error(LOG_PREFIX + "error_msg:"+msg); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+ e.toString()); + } + log.info(LOG_PREFIX+ "callDebit::END"); + + return response; + } + + + private GsoftResponse callCredit(GsoftVO gsoftVO, HashMap siteVendorInfo, String siteId, String memberId, final String LOG_PREFIX) { + GsoftResponse response = null; + + log.info(LOG_PREFIX+ "callCredit::START"); + try { + String vendorTranKey = gsoftVO.getTranId(); + String tranId = siteId + "#" + vendorTranKey; + String betId = siteId + "#" + gsoftVO.getRealRound(); + + // Debit 체크 + long chs1 = System.currentTimeMillis(); + int debitCnt = siteService.getSuccDebitCnt(betId); + long che1 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diff1 = (chs1 - che1)/1000.0; //두 시간에 차 계산 + log.error(LOG_PREFIX+ "Debit check::" + String.format("%.3f", diff1)); + if(debitCnt == 0) { + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + log.error(LOG_PREFIX + "Not found success debit by betId: " + betId); + return response; + } + + // 중복체크 + long chs2 = System.currentTimeMillis(); + int betCnt = siteService.getBotaBetCnt(tranId); + long che2 = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diff2 = (chs2 - che2)/1000.0; //두 시간에 차 계산 + log.error(LOG_PREFIX+ "Duplicate check::" + String.format("%.3f", diff2)); + if(betCnt != 0) { + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + log.error(LOG_PREFIX + "Duplicate tranId: " + tranId); + return response; + } + + int amount = Math.abs(gsoftVO.getAmount()); + + long siteIdx = Long.parseLong(siteVendorInfo.get("siteIdx").toString()); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String siteCbUrl = siteVendorInfo.get("siteCbUrl").toString(); +// HashMap vendorInfo = siteService.getGsoftVendorInfo(gsoftVO.getGame()); + long vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "gsoft"); + tranParam.put("vendorTranKey", vendorTranKey); + tranParam.put("gameIdx", gsoftVO.getTitle()); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", 0); + tranParam.put("creditAmt", amount); + if(gsoftVO.getType().equals("cancel")) { + tranParam.put("isCancel", "Y"); + } else { + // win, lose + tranParam.put("isCancel", "N"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + long startTime = System.currentTimeMillis(); + siteService.commonBetinsert(tranParam); + long endTime = System.currentTimeMillis(); // 코드 실행 후에 시간 받아오기 + double diffTime = (startTime - endTime)/1000.0; //두 시간에 차 계산 + if(diffTime < -1.0) { + log.error(LOG_PREFIX + "배팅 쓰기지연:"+diffTime+"초 지연발생"); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + return response; + } + log.info(LOG_PREFIX + "siteService.commonBetinsert() END"); + /* + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + */ + JSONObject credit = new JSONObject(); + credit.put("betId", betId); + credit.put("tranId", tranId); + credit.put("userId", memberId); + credit.put("vendorIdx", vendorIdx); + credit.put("vendorKey", vendorKey); + credit.put("vendor", "gsoft"); + credit.put("gameIdx", vendorIdx); + credit.put("gameKey", gsoftVO.getTitle()); + credit.put("tranType", "credit"); + credit.put("debit", 0); + credit.put("credit", amount); + if(gsoftVO.getType().equals("cancel")) { + credit.put("isCancel", 1); + } else { + // win, lose + credit.put("isCancel", 0); + } + credit.put("isBonus", 0); + credit.put("requestAt", gsoftVO.getTime()); + + JSONObject resData = new JSONObject(); + if(vendorCetegory.equals("SLOT")) { + log.info(LOG_PREFIX + "SEND_CREDIT::changeBalanceSlot::param: " + credit.toString()); + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, credit); + log.info(LOG_PREFIX + "SEND_CREDIT::changeBalanceSlot::status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CREDIT::changeBalanceSlot::response body: " + resData.toString()); + } else { + log.info(LOG_PREFIX + "SEND_CREDIT::changeBalance::param: " + credit.toString()); + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, credit); + log.info(LOG_PREFIX + "SEND_CREDIT::changeBalance::status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_CREDIT::changeBalance::response body: " + resData.toString()); + } + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "siteService.updateCbApi() END"); + + int balance = resData.getInt("balance"); + + response = new GsoftResponse(); + response.setResult(1); + response.setBalance(balance); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX + "error_msg:"+msg); + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "[ResourceAccessException]"+rae.getMessage()); + + response = new GsoftResponse(); + response.setResult(0); + response.setBalance(0); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+ e.toString()); + } + log.info(LOG_PREFIX+ "callCredit::END"); + + return response; + } +} diff --git a/src/main/java/com/bb/front/CallbackPandaController.java b/src/main/java/com/bb/front/CallbackPandaController.java new file mode 100644 index 0000000..30b36e2 --- /dev/null +++ b/src/main/java/com/bb/front/CallbackPandaController.java @@ -0,0 +1,965 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.web.bind.annotation.RequestBody; +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.ResourceAccessException; + +import com.bb.model.PandaResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import jakarta.servlet.http.HttpServletRequest; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/cb/panda") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallbackPandaController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + @ResponseBody + @RequestMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestParam("username") String username) throws Exception { + PandaResponse response = null; + + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(username.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::PANDA::balance::Invalid username format (hex expected): {}", username); + log.error("#-CB::PANDA::balance::Error Msg: NOT_FOUND_USER"); + response = new PandaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + String memberId = username.substring(3, username.length()); + final String LOG_PREFIX = "#-CB::PANDA::balance::"+memberId+":::"; + log.info(LOG_PREFIX+ "Request::" + username); + + try { + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + log.info(LOG_PREFIX + "SITE_API_INFO_PARAM::"+sParam.toString()); + HashMap siteApiInfo = siteService.getSiteApiInfo(sParam); + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response = new PandaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원"); + response = new PandaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response = new PandaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.BAD_REQUEST); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + response = new PandaResponse(); + response.setBalance(balance); + + } catch (ResourceAccessException rae) { + 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()); + } + + response = new PandaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + response = new PandaResponse(); + response.setBalance(0); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + ResponseEntity res = new ResponseEntity(response, HttpStatus.OK); + log.info(LOG_PREFIX+ "Response::" + response.toString()); + + return res; + } + + + @ResponseBody + @RequestMapping(path = "/changeBalance") + public ResponseEntity changeBalance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + ResponseEntity resEntity = null; + + String username = requestBody.getString("username"); + long siteIdx = 0L; + try { + siteIdx = Long.parseLong(username.substring(0, 3), 16); + } catch (NumberFormatException e) { + log.error("#-CB::PANDA::changeBalance::Invalid username format (hex expected): {}", username); + log.error("#-CB::PANDA::changeBalance::Error Msg: NOT_FOUND_USER"); + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + String memberId = username.substring(3, username.length()); + net.sf.json.JSONObject transaction = requestBody.getJSONObject("transaction"); + net.sf.json.JSONObject game = transaction.getJSONObject("details").getJSONObject("game"); + String transactionId = transaction.getString("id"); + String transactionType = transaction.getString("type"); + + final String LOG_PREFIX = "#-CB::PANDA::changeBalance::"+memberId+"::"+transactionId+"::"+transactionType+":::"; + log.info(LOG_PREFIX+ "Request::" + requestBody.toString()); + + try { + // "processed_at":"2025-01-16T09:25:23.000000Z" + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); + String betDateTimeStr = transaction.getString("processed_at"); + log.info(LOG_PREFIX+ "========== BF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = betDateTimeStr.substring(0, 19); + betDateTimeStr = betDateTimeStr.replace("T", " "); + log.info(LOG_PREFIX+ "========== MF_betDateTimeStr::" + betDateTimeStr); + betDateTimeStr = makeEdate(LOG_PREFIX, betDateTimeStr, 32400000); + log.info(LOG_PREFIX+ "========== AF_betDateTimeStr::" + betDateTimeStr); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "panda"); + sParam.put("vendorGameCode", game.getString("vendor")); + log.info(LOG_PREFIX + "getSiteVendorInfo::"+sParam.toString()); + HashMap siteVendorInfo = siteService.getSiteVendorInfo(sParam); + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "존재하지 않는 회원입니다"); + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + if(transactionType.equals("bet")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callBet(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("win")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("cancel")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callCancel(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("adjust")) { + int amount = requestBody.getInt("amount"); + resEntity = callAdjust(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("promo_win")) { + int amount = Math.abs(requestBody.getInt("amount")); + resEntity = callPromoWin(LOG_PREFIX, siteIdx, memberId, transaction, betDateTimeStr, siteVendorInfo, amount); + + } else if(transactionType.equals("exceed_credit")) { + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(transactionType.equals("tip")) { + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } else if(transactionType.equals("charge")) { + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + } + + + } catch (ResourceAccessException rae) { + 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()); + } + + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + PandaResponse response = new PandaResponse(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + + + log.info(LOG_PREFIX+ "Response::" + resEntity.toString()); + return resEntity; + } + + + private ResponseEntity callBet(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, + int amount) { + + LOG_PREFIX = LOG_PREFIX + "callBet:::"; + ResponseEntity resEntity = null; + PandaResponse response = new PandaResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + String gameName = game.getString("title"); + String gameId = game.getString("id"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = game.getString("id")+"#"+game.getString("round"); + //String betKey = transaction.getString("referer_id"); + String betKey = betId; + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(balance); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + // 최대 베팅 금액 처리 (userMaxBet 우선 적용) + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + long userMaxBet = 0; + if(siteVendorInfo.get("userMaxBet") != null && !siteVendorInfo.get("userMaxBet").toString().isEmpty()) { + try { + userMaxBet = Long.parseLong(siteVendorInfo.get("userMaxBet").toString()); + } catch (NumberFormatException e) { + userMaxBet = 0; + } + } + + // 최종 maxBet 결정: userMaxBet이 0이면 siteMaxBet 사용, 0이 아니면 userMaxBet 사용 + long finalMaxBet = (userMaxBet > 0) ? userMaxBet : siteMaxBet; + log.info(LOG_PREFIX+ "MaxBet Info - siteMaxBet: " + siteMaxBet + ", userMaxBet: " + userMaxBet + ", finalMaxBet: " + finalMaxBet); + if(finalMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "finalMaxBet : " + finalMaxBet +", amount : " + amount); + resEntity = new ResponseEntity(response, HttpStatus.BAD_REQUEST); + return resEntity; + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "panda"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "P"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "panda"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "Y"); + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 80) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response.setBalance(balance); + log.error(LOG_PREFIX+ "Response::금액을 확인하여 주세요::" + response.toString()); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callWin(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, + int amount) { + + LOG_PREFIX = LOG_PREFIX + "callWin:::"; + ResponseEntity resEntity = null; + PandaResponse response = new PandaResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + String gameName = game.getString("title"); + String gameId = game.getString("id"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = game.getString("id")+"#"+game.getString("round"); + //String betKey = transaction.getString("referer_id"); + String betKey = betId; + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(balance); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + // 처리한 베팅 존재X + log.error(LOG_PREFIX+ "처리한 베팅 존재X"); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + return resEntity; + } + } + + //초과베팅 체크 + int overCreditAmt = 0; + if(vendorCetegory.equals("SLOT")) { + int siteMaxWin = Integer.parseInt(siteVendorInfo.get("siteMaxWin").toString()); + if(siteMaxWin < amount && siteMaxWin != 0) { + log.error(LOG_PREFIX+ "MAX_WIN_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxWin : " + siteMaxWin +", amount : " + amount); + overCreditAmt = amount - siteMaxWin; + amount = siteMaxWin; + log.error(LOG_PREFIX+ "Change amount : " + amount +", overCreditAmt : " + overCreditAmt); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "panda"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("overCreditAmt", overCreditAmt); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "P"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "panda"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("isData", "Y"); + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + if(balance < amount) { + response.setBalance(balance); + log.error(LOG_PREFIX+ "Response::금액을 확인하여 주세요::" + response.toString()); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private ResponseEntity callCancel(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, + int amount) { + + LOG_PREFIX = LOG_PREFIX + "callCancel:::"; + ResponseEntity resEntity = null; + PandaResponse response = new PandaResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + return resEntity; + } + + + private ResponseEntity callAdjust(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, + int amount) { + + LOG_PREFIX = LOG_PREFIX + "callAdjust:::"; + ResponseEntity resEntity = null; + PandaResponse response = new PandaResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + return resEntity; + } + + + private ResponseEntity callPromoWin(String LOG_PREFIX, long siteIdx, String memberId, + net.sf.json.JSONObject transaction, String betDateTimeStr, HashMap siteVendorInfo, + int amount) { + + LOG_PREFIX = LOG_PREFIX + "callPromoWin:::"; + ResponseEntity resEntity = null; + PandaResponse response = new PandaResponse(); + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + try { + net.sf.json.JSONObject details = transaction.getJSONObject("details"); + net.sf.json.JSONObject game = details.getJSONObject("game"); + + String gameType = game.getString("type").replaceAll(" ", "").toLowerCase(); + String gameName = game.getString("title"); + String gameId = game.getString("id"); + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + + String tranId = transaction.getString("id"); + String betId = game.getString("id")+"#"+game.getString("round"); + //String betKey = transaction.getString("referer_id"); + String betKey = betId; + + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(balance); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + //초과베팅 체크 + int overCreditAmt = 0; + if(vendorCetegory.equals("SLOT")) { + int siteMaxWin = Integer.parseInt(siteVendorInfo.get("siteMaxWin").toString()); + if(siteMaxWin < amount && siteMaxWin != 0) { + log.error(LOG_PREFIX+ "MAX_WIN_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxWin : " + siteMaxWin +", amount : " + amount); + overCreditAmt = amount - siteMaxWin; + amount = siteMaxWin; + log.error(LOG_PREFIX+ "Change amount : " + amount +", overCreditAmt : " + overCreditAmt); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "panda"); + tranParam.put("vendorTranKey", betKey); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "P"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", betKey); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "panda"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 1); + callBackObj.put("isData", "Y"); + callBackObj.put("requestAt", betDateTimeStr); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_PROMO_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_PROMO_END-----"); + + log.info(LOG_PREFIX + "SEND_PROMO request body: " + callBackObj.toString()); + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_PROMO status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_PROMO response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else if(resData.getLong("result_code") == 98) { + int balance = resData.getInt("balance"); + response.setBalance(balance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + } else { + String msg = ""; + if(resData.has("error_msg")) msg = resData.getString("error_msg"); + log.error(LOG_PREFIX+ msg); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + if(balance < amount) { + response.setBalance(balance); + log.error(LOG_PREFIX+ "Response::금액을 확인하여 주세요::" + response.toString()); + return new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + log.info(LOG_PREFIX + "-----INSERT_PROMO_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_PROMO_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(afBalance); + resEntity = new ResponseEntity(response, HttpStatus.OK); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + resEntity = new ResponseEntity(response, HttpStatus.INTERNAL_SERVER_ERROR); + } + + return resEntity; + } + + + private static String makeEdate(String LOG_PREFIX, String paramDate, int flag) { + // TODO Auto-generated method stub + String eDate = ""; + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + try { + Date date = sdf1.parse(paramDate); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MILLISECOND, flag); + Date date2 = calendar.getTime(); + eDate = sdf2.format(date2); + } catch(Exception e) { + log.error(LOG_PREFIX+ "makeEdate::Exception::"+e.getMessage()); + } + return eDate; + } + +} diff --git a/src/main/java/com/bb/front/CallbackPinkController.java b/src/main/java/com/bb/front/CallbackPinkController.java new file mode 100644 index 0000000..215160d --- /dev/null +++ b/src/main/java/com/bb/front/CallbackPinkController.java @@ -0,0 +1,851 @@ +package com.bb.front; + +import java.net.SocketTimeoutException; +import java.util.HashMap; + +import jakarta.servlet.http.HttpServletRequest; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +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.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.ResourceAccessException; + +import com.bb.model.SvendorResponse; +import com.bb.service.AsyncSiteService; +import com.bb.service.CallBackService; +import com.bb.service.SiteService; + +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RequestMapping("/api/callback/pink") +@RequiredArgsConstructor +@SecurityRequirement(name = "Authorization") +@EnableScheduling +@RestController +public class CallbackPinkController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackService callBackService; + + @Autowired + AsyncSiteService asyncCallBackService; + + + @ResponseBody + @PostMapping(path = "/balance") + public ResponseEntity balance(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + SvendorResponse response = new SvendorResponse(); + String vendorUsername = requestBody.getString("userid"); + String uuid = vendorUsername; + + //사이트정보 + HashMap siteApiInfo = siteService.getNewSiteApiInfo(vendorUsername); + long siteIdx = 0L; + String memberId = ""; + if(siteApiInfo != null) { + siteIdx = Long.parseLong(siteApiInfo.get("siteIdx").toString()); + memberId = siteApiInfo.get("memberId").toString(); + } else { + siteIdx = Long.parseLong(vendorUsername.substring(0, 3), 16); + memberId = vendorUsername.substring(3, vendorUsername.length()); + + //사이트정보 + HashMap sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + siteApiInfo = siteService.getSiteApiInfo(sParam); + } + + final String LOG_PREFIX = "#-CB::PINK::"+memberId+"::balance:::"; + log.info(LOG_PREFIX+ "Request Body::" + requestBody.toString()); + + try { + if(siteApiInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteApiInfo.get("memberIdx") == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_USER"); + response.setBalance("0"); + response.setId(uuid); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + int balance = 0; + if("N".equals(siteApiInfo.get("isTransfer").toString())) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + JSONObject member = new JSONObject(); + member.put("userId", memberId); + log.info(LOG_PREFIX+ "balance Req ::"+ member.toString()); + JSONObject resData = callBackService.getBalance(siteApiInfo, member); + if(resData == null) { + log.error(LOG_PREFIX+ "Error Msg: BALANCE_CALLBACK_ERROR"); + response.setBalance("0"); + response.setId(uuid); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + log.info(LOG_PREFIX+ "balance Res ::"+ resData.toString()); + balance = resData.getInt("balance"); + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + balance = siteService.getUserBalance(balanceMap); + + if(siteApiInfo.get("siteCbUrl") != null && !"".equals(siteApiInfo.get("siteCbUrl").toString())) { + JSONObject member = new JSONObject(); + member.put("userId", memberId); + member.put("balance", balance); + asyncCallBackService.asyncBalance(LOG_PREFIX, siteApiInfo, member); + } + } + + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "Error Msg: RESOURCE_ACCESS_ERROR"); + response.setBalance("0"); + response.setId(uuid); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + + log.error(LOG_PREFIX+ "Error Msg: UNKNOWN_SERVER_ERROR"); + response.setBalance("0"); + response.setId(uuid); + } + + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + + @ResponseBody + @PostMapping(path = "/bet") + public ResponseEntity callBet(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + SvendorResponse response = new SvendorResponse(); + String vendorUsername = requestBody.getString("userid"); + String uuid = vendorUsername; + String vendorGameCode = requestBody.getString("vendor"); + + //사이트정보 + HashMap sParam = new HashMap<>(); + sParam.put("vendorUsername", vendorUsername); + sParam.put("vendor", "pink"); + sParam.put("vendorGameCode", vendorGameCode); + HashMap siteVendorInfo = siteService.getNewSiteVendorInfo(sParam); + long siteIdx = 0L; + String memberId = ""; + if(siteVendorInfo != null) { + siteIdx = Long.parseLong(siteVendorInfo.get("siteIdx").toString()); + memberId = siteVendorInfo.get("memberId").toString(); + } else { + siteIdx = Long.parseLong(vendorUsername.substring(0, 3), 16); + memberId = vendorUsername.substring(3, vendorUsername.length()); + + //사이트정보 + sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "pink"); + sParam.put("vendorGameCode", vendorGameCode); + siteVendorInfo = siteService.getSiteVendorInfo(sParam); + } + + final String LOG_PREFIX = "#-CB::PINK::"+memberId+"::BET::"+requestBody.getString("tr_id")+":::"; + log.info(LOG_PREFIX+ "Request Body::" + requestBody.toString()); + + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_SITE_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + // 배팅 고유ID + String transactionId = requestBody.getString("tr_id"); + log.info(LOG_PREFIX+ "transactionId::"+transactionId); + // 베팅 참조ID + String referenceId = requestBody.getString("ref_id"); + log.info(LOG_PREFIX+ "referenceId"+referenceId); + // 라운드 고유ID + String roundId = requestBody.getString("round"); + log.info(LOG_PREFIX+ "roundId::"+roundId); + String tranId = transactionId; + //String betId = referenceId; + String betId = roundId+"#"+vendorUsername; + // 베팅 시각 + String betDateTimeStr = requestBody.getString("processed_at"); + + // 게임타입 + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + // 게임테이블 아이디 (optional) + String gameId = ""; + if(requestBody.has("game_code")) gameId = requestBody.getString("game_code"); + String targetTableId = gameId.replaceAll(" ", "").toLowerCase(); + String gameName = ""; + if(requestBody.has("title")) gameName = requestBody.getString("title"); + // 배팅액 + String amountS = requestBody.getString("amount"); + int amount = 0; + Double amountD = Double.parseDouble(amountS); + amount = amountD.intValue(); + + try { + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + String banGameType = siteVendorInfo.get("banGameType").toString().replaceAll(" ", "").toLowerCase(); + String banGameId = siteVendorInfo.get("banGameId").toString().replaceAll(" ", "").toLowerCase(); + + if(!"".equals(gameType) && !"".equals(banGameType) && banGameType.contains(gameType+"|")) { + // Ban Game Type Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 501L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameType:"+gameType+"이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_TYPE"); + logParam.put("errorMsg", "gameType:"+gameType+"이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Type : " + gameType); + + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("BAN_GAME_TYPE_" + gameType); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(!"".equals(targetTableId) && !"".equals(banGameId) && banGameId.contains(targetTableId+"|")) { + // Ban Game Id Exception + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteIdx); + logParam.put("memberIdx", memberIdx); + logParam.put("vendorIdx", vendorIdx); + logParam.put("statusCode", 502L); + logParam.put("callBackType", "debit"); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", "gameId:"+gameId+"("+gameName+")이 블락설정"); + logParam.put("callBackResBody", ""); + logParam.put("errorCode", "BLOCK_GAME_ID"); + logParam.put("errorMsg", "gameId:"+gameId+"("+gameName+")이 블락설정"); + long startTimestamp = System.currentTimeMillis(); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", startTimestamp); + callBackService.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX+ "Ban Game Id : " + gameId); + + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("BAN_GAME_ID_" + gameId); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + if(siteVendorInfo.get("lastInVendorIdx")==null || "0".equals(siteVendorInfo.get("lastInVendorIdx").toString())) { + HashMap memParam = new HashMap<>(); + memParam.put("siteIdx", siteIdx); + memParam.put("memberIdx", memberIdx); + memParam.put("lastInVendorIdx", Integer.parseInt(siteVendorInfo.get("vendorIdx").toString())); + int updResult = siteService.updMemLastVendorIdx(memParam); + } else { + int lastInVendorIdx = Integer.parseInt(siteVendorInfo.get("lastInVendorIdx").toString()); + if(lastInVendorIdx != vendorIdx) { + log.error(LOG_PREFIX+ "VendorIdx doesn't match"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("ACCESS_VENDOR_MISSMATCH_"+lastInVendorIdx); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + long siteCredit = Long.parseLong(siteVendorInfo.get("credit").toString()); + // ##--isTransfer 처리-## + if(siteCredit < amount && IS_TRANSFER.equals("N")) { + log.error(LOG_PREFIX+ "NO_SITE_CREDIT"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NO_SITE_CREDIT"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + long siteMaxBet = Long.parseLong(siteVendorInfo.get("siteMaxBet").toString()); + if(siteMaxBet < amount) { + log.error(LOG_PREFIX+ "MAX_BET_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxBet : " + siteMaxBet +", amount : " + amount); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("MAX_BET_AMOUNT_OVER"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pink"); + tranParam.put("vendorTranKey", referenceId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "debit"); + tranParam.put("depositAmt", amount); + tranParam.put("creditAmt", "0"); + tranParam.put("isCancel", "N"); + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", referenceId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pink"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "debit"); + callBackObj.put("debit", amount); + callBackObj.put("credit", 0); + callBackObj.put("isCancel", 0); + callBackObj.put("isBonus", 0); + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_BET request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_BET status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_BET response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else if(resData.getLong("result_code") == 98) { + // 중복 + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else if(resData.getLong("result_code") == 80) { + // 중복 + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else { + // 실패 + log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("CALLBACK_ERROR"); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance - amount; + + if(balance < amount) { + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + log.error(LOG_PREFIX+ "잔액부족::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + log.info(LOG_PREFIX + "-----INSERT_BET_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_BET_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(Integer.toString(afBalance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "Error Msg: RESOURCE_ACCESS_ERROR"); + response.setBalance("0"); + response.setId(uuid); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + + log.error(LOG_PREFIX+ "Error Msg: UNKNOWN_SERVER_ERROR"); + response.setBalance("0"); + response.setId(uuid); + } + + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + + @ResponseBody + @PostMapping(value = { "/win", "/cancel", "/promo"} ) + public ResponseEntity callResult(HttpServletRequest request, @RequestBody net.sf.json.JSONObject requestBody) throws Exception { + + SvendorResponse response = new SvendorResponse(); + String vendorUsername = requestBody.getString("userid"); + String uuid = vendorUsername; + String vendorGameCode = requestBody.getString("vendor"); + String callbackType = requestBody.getString("type"); + + //사이트정보 + HashMap sParam = new HashMap<>(); + sParam.put("vendorUsername", vendorUsername); + sParam.put("vendor", "pink"); + sParam.put("vendorGameCode", vendorGameCode); + HashMap siteVendorInfo = siteService.getNewSiteVendorInfo(sParam); + long siteIdx = 0L; + String memberId = ""; + if(siteVendorInfo != null) { + siteIdx = Long.parseLong(siteVendorInfo.get("siteIdx").toString()); + memberId = siteVendorInfo.get("memberId").toString(); + } else { + siteIdx = Long.parseLong(vendorUsername.substring(0, 3), 16); + memberId = vendorUsername.substring(3, vendorUsername.length()); + + //사이트정보 + sParam = new HashMap(); + sParam.put("siteIdx", siteIdx); + sParam.put("memberId", memberId); + sParam.put("vendor", "pink"); + sParam.put("vendorGameCode", vendorGameCode); + siteVendorInfo = siteService.getSiteVendorInfo(sParam); + } + + final String LOG_PREFIX = "#-CB::PINK::"+memberId+"::RESULT::"+requestBody.getString("tr_id")+":::"; + log.info(LOG_PREFIX+ "Request Body::" + requestBody.toString()); + + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_SITE_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // ##--isTransfer 처리-## + final String IS_TRANSFER = siteVendorInfo.get("isTransfer").toString(); + + // 배팅 고유ID + String transactionId = requestBody.getString("tr_id"); + log.info(LOG_PREFIX+ "transactionId::"+transactionId); + // 베팅 참조ID + String referenceId = requestBody.getString("ref_id"); + log.info(LOG_PREFIX+ "referenceId"+referenceId); + // 라운드 고유ID + String roundId = requestBody.getString("round"); + log.info(LOG_PREFIX+ "roundId::"+roundId); + String tranId = transactionId; + //String betId = referenceId; + String betId = roundId+"#"+vendorUsername; + // 베팅 시각 + String betDateTimeStr = requestBody.getString("processed_at"); + + // 게임타입 + String gameType = requestBody.getString("game_type").replaceAll(" ", "").toLowerCase(); + // 게임테이블 아이디 (optional) + String gameId = ""; + if(requestBody.has("game_code")) gameId = requestBody.getString("game_code"); + // 게임코드 + if("promo".equals(callbackType)) { + gameId = callbackType; + } + + // 게임타이틀 + String gameName = "" ; + if(requestBody.has("title")) gameName = requestBody.getString("title"); + if("promo".equals(callbackType)) { + gameName =callbackType; + } + // 배팅액 + String amountS = requestBody.getString("amount"); + int amount = 0; + Double amountD = Double.parseDouble(amountS); + amount = amountD.intValue(); + + try { + if(siteVendorInfo == null) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_SITE_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_SITE_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + String siteId = siteVendorInfo.get("siteId").toString(); + long memberIdx = Long.parseLong(siteVendorInfo.get("memberIdx").toString()); + String vendorApiId = siteVendorInfo.get("vendorApiId").toString(); + String vendorKey = siteVendorInfo.get("vendorKey").toString(); + int vendorIdx = Integer.parseInt(siteVendorInfo.get("vendorIdx").toString()); + String vendorCetegory = siteVendorInfo.get("vendorCetegory").toString(); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("Y")) { + // tranId 중복체크 + int cntTr = siteService.getTranIdCheck2(tranId); + if(cntTr > 0) { + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + log.error(LOG_PREFIX+ "중복요청::Response::" + response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + + // 베팅 체크 + int cntBet = siteService.getBetIdCheck2(betId); + if(cntBet == 0) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_BET_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_BET_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } else { + //베팅여부체크 + if("cancel".equals(callbackType)) { //베팅없으면 에러 + int checkBet = siteService.getSuccDebitCnt(betId); + if(checkBet==0) { + log.error(LOG_PREFIX+ "Error Msg: NOT_FOUND_BET_INFO"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("NOT_FOUND_BET_INFO"); + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } + } + } + + //초과베팅 체크 + int overCreditAmt = 0; + if(vendorCetegory.equals("SLOT") && "win".equals(callbackType)) { + int siteMaxWin = Integer.parseInt(siteVendorInfo.get("siteMaxWin").toString()); + if(siteMaxWin < amount && siteMaxWin != 0) { + log.error(LOG_PREFIX+ "MAX_WIN_AMOUNT_OVER"); + log.error(LOG_PREFIX+ "siteMaxWin : " + siteMaxWin +", amount : " + amount); + overCreditAmt = amount - siteMaxWin; + amount = siteMaxWin; + log.error(LOG_PREFIX+ "Change amount : " + amount +", overCreditAmt : " + overCreditAmt); + } + } + + HashMap tranParam = new HashMap(); + tranParam.put("tranId", tranId); + tranParam.put("refId", betId); + tranParam.put("siteIdx", siteIdx); + tranParam.put("siteId", siteId); + tranParam.put("memberIdx", memberIdx); + tranParam.put("memberId", memberId); + tranParam.put("vendorCetegory", vendorCetegory); + tranParam.put("vendorIdx", vendorIdx); + tranParam.put("vendorCode", "pink"); + tranParam.put("vendorTranKey", referenceId); + tranParam.put("gameType", gameType); + tranParam.put("gameId", gameId); + tranParam.put("gameIdx", gameName); + tranParam.put("tranType", "credit"); + tranParam.put("depositAmt", "0"); + tranParam.put("creditAmt", amount); + tranParam.put("overCreditAmt", overCreditAmt); + if("cancel".equals(callbackType)) { + tranParam.put("isCancel", "Y"); + } else { + tranParam.put("isCancel", "N"); + } + tranParam.put("isTie", "N"); + tranParam.put("apiStatus", 0); + tranParam.put("vendorApiId", vendorApiId); + + JSONObject callBackObj = new JSONObject(); + callBackObj.put("betId", betId); + callBackObj.put("tranId", tranId); + callBackObj.put("betKey", referenceId); + callBackObj.put("userId", memberId); + callBackObj.put("vendorIdx", vendorIdx); + callBackObj.put("vendorKey", vendorKey); + callBackObj.put("vendor", "pink"); + callBackObj.put("gameIdx", vendorIdx); + callBackObj.put("gameKey", gameName); + callBackObj.put("gameId", gameId); + callBackObj.put("gameType", gameType); + callBackObj.put("tranType", "credit"); + callBackObj.put("debit", 0); + callBackObj.put("credit", amount); + if("cancel".equals(callbackType)) { + callBackObj.put("isCancel", 1); + } else { + callBackObj.put("isCancel", 0); + } + if("promo".equals(callbackType)) { + callBackObj.put("isBonus", 1); + } else { + callBackObj.put("isBonus", 0); + } + callBackObj.put("requestAt", betDateTimeStr); + log.info(LOG_PREFIX + "SEND_RESULT request body: " + callBackObj.toString()); + + // ##--isTransfer 처리-## + if(IS_TRANSFER.equals("N")) { + log.info(LOG_PREFIX + "PLAY_SEAMLESS"); + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + JSONObject resData = null; + if(vendorCetegory.equals("SLOT")) { + resData = callBackService.changeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + resData = callBackService.changeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + log.info(LOG_PREFIX + "SEND_RESULT status code: " + resData.getLong("result_code")); + log.info(LOG_PREFIX + "SEND_RESULT response body: " + resData.toString()); + + if(resData.getLong("result_code") == 0) { + // 성공 + tranParam.put("balance", resData.getInt("balance")); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else if(resData.getLong("result_code") == 98) { + // 중복 + int balance = resData.getInt("balance"); + response.setBalance(Integer.toString(balance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + } else { + // 실패 + log.error(LOG_PREFIX+ "CALLBACK_ERROR"); + response.setBalance("0"); + response.setId(uuid); + response.setStatuscode(1); + response.setStatus("CALLBACK_ERROR"); + } + } else { + log.info(LOG_PREFIX + "PLAY_TRANSFER"); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", siteIdx); + balanceMap.put("memberId", memberId); + int balance = siteService.getUserBalance(balanceMap); + int afBalance = balance + amount; + + log.info(LOG_PREFIX + "-----INSERT_RESULT_START-----"); + siteService.commonBetinsert(tranParam); + log.info(LOG_PREFIX + "-----INSERT_RESULT_END-----"); + + tranParam.put("balance", afBalance); + tranParam.put("preBalance", balance); + tranParam.put("isTransfer", IS_TRANSFER); + int res = siteService.updateCbApi(tranParam); + log.info(LOG_PREFIX + "UPDATE_CALLBACK_API_STATUS END"); + + response.setBalance(Integer.toString(afBalance)); + response.setId(uuid); + response.setStatuscode(0); + response.setStatus("OK"); + + if(siteVendorInfo.get("siteCbUrl") != null && !"".equals(siteVendorInfo.get("siteCbUrl").toString())) { + callBackObj.put("balance", afBalance); + if(vendorCetegory.equals("SLOT")) { + asyncCallBackService.asyncChangeBalanceSlot(LOG_PREFIX, siteVendorInfo, callBackObj); + } else { + asyncCallBackService.asyncChangeBalance(LOG_PREFIX, siteVendorInfo, callBackObj); + } + } + } + + } catch (ResourceAccessException rae) { + 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()); + } + + log.error(LOG_PREFIX+ "Error Msg: RESOURCE_ACCESS_ERROR"); + response.setBalance("0"); + response.setId(uuid); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + e.printStackTrace(); + + log.error(LOG_PREFIX+ "Error Msg: UNKNOWN_SERVER_ERROR"); + response.setBalance("0"); + response.setId(uuid); + } + + log.info(LOG_PREFIX+ "Response::"+response.toString()); + return new ResponseEntity(response, HttpStatus.OK); + } +} diff --git a/src/main/java/com/bb/front/CallbackSpeedTestController.java b/src/main/java/com/bb/front/CallbackSpeedTestController.java new file mode 100644 index 0000000..c985b54 --- /dev/null +++ b/src/main/java/com/bb/front/CallbackSpeedTestController.java @@ -0,0 +1,747 @@ +package com.bb.front; + +import java.security.SecureRandom; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +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.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +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.RestController; + +import com.bb.jwt.JwtManager; +import com.bb.model.ApiResponse; +import com.bb.model.CallbackTestResult; +import com.bb.model.Site; +import com.bb.service.CallBackTestService; +import com.bb.service.SiteService; +import com.bb.util.IPKit; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping(value = "/api/t1/spdtest") +@CrossOrigin( + origins = { + "https://cms.cent-10.com", + "https://core.nsol.cc/", + "https://familys.cc/" + } + ) +public class CallbackSpeedTestController { + + @Autowired + SiteService siteService; + + @Autowired + CallBackTestService callBackTestService; + + @Autowired + private final JwtManager jwtManager; + + private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + private static final SecureRandom random = new SecureRandom(); + + public static List generateRandomStrings(int stringLength, int count) { + Set uniqueStrings = new HashSet<>(); + + while (uniqueStrings.size() < count) { + StringBuilder sb = new StringBuilder(stringLength); + for (int i = 0; i < stringLength; i++) { + sb.append(CHARACTERS.charAt(random.nextInt(CHARACTERS.length()))); + } + + // 시간 기반으로 중복 확률 줄이기 (나노타임 일부 추가) + sb.append(Long.toHexString(System.nanoTime()).substring(0, 4)); + + uniqueStrings.add(sb.toString()); + } + + return new ArrayList<>(uniqueStrings); + } + + + @GetMapping("/testBalance") + public ApiResponse testBalance(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-CB::SPD_TEST::testBalance::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("#-CB::SPD_TEST::testBalance::site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + apiResponse.setResultMessage("Deniend IP"); + return apiResponse; + } + + if(token == null || token.equals("")) { + log.error("#-CB::SPD_TEST::testBalance::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization token check"); + return apiResponse; + } + + try { + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-CB::SPD_TEST::testBalance::"+tokenInfo.getSid()+"::"; + + int testCnt = site.getTestCnt(); + if(testCnt > 30) { + log.error(LOG_PREFIX+ "TEST_COUNT_OVER"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("TEST_COUNT_OVER"); + return apiResponse; + } + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + + for(int i=1; i<=10; i++) { + JSONObject responseObj = callBackTestService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + result.setIndex(i); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + + resultList.add(result); + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(500); + } + + responseData.put("resultList", resultList); + + site.setTestCnt(testCnt+1); + int updResult = siteService.updateTestCnt(site); + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @GetMapping("/testCasino") + public ApiResponse testCasino(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-CB::SPD_TEST::testCasino::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("#-CB::SPD_TEST::testCasino::site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + if(token == null || token.equals("")) { + log.error("#-CB::SPD_TEST::testCasino::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization token check"); + return apiResponse; + } + + try { + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-CB::SPD_TEST::testCasino::"+tokenInfo.getSid()+"::"; + + int testCnt = site.getTestCnt(); + if(testCnt > 30) { + log.error(LOG_PREFIX+ "TEST_COUNT_OVER"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("TEST_COUNT_OVER"); + return apiResponse; + } + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + int betAmt = 100; + int winAmt = 100; + + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + + // 유저 잔액 확인. + JSONObject responseObj = callBackTestService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + result.setIndex(0); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + + balance = responseObj.getInt("balance"); + + resultList.add(result); + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(500); + + + // 베팅 - 결과 테스트 진행 + // 1. 랜점한 betId 10개 생성. + List betIds = generateRandomStrings(20, 20); + + // 2. 베팅-결과 콜백 10번 진행. + for (int i = 0; i < 20; i += 2) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+"_"+betIds.get(i)+"_"+memberId; + String debitTranId = "D"+site.getSiteIdx()+"_"+ctms+"_"+memberId; + String creditTranId = "C"+site.getSiteIdx()+"_"+ctms+"_"+memberId; + + // 2-1 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", debitTranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "svendor"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackTestService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + result.setIndex(i+1); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = balanceAfter; + } else { + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(500); + + // 2-2 call win + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", creditTranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 1); + requestBody.put("vendorKey", "C01"); + requestBody.put("vendor", "svendor"); + requestBody.put("gameIdx", 1); + requestBody.put("gameKey", "코리안 스피드 바카라 A"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackTestService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + result.setIndex(i+2); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + int balanceAfter = balance + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setStatus("SUCCESS"); + result.setMsg("[win] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = balanceAfter; + } else { + result.setStatus("FAIL"); + result.setMsg("[win] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[win] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(500); + } + + responseData.put("resultList", resultList); + + site.setTestCnt(testCnt+1); + int updResult = siteService.updateTestCnt(site); + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } + + + @GetMapping("/testSlot") + public ApiResponse testSlot(HttpServletRequest request, @RequestHeader String token, @Valid @RequestParam String memberId) throws Exception { + ApiResponse apiResponse = new ApiResponse(); + + Site site = siteService.getSiteInfo(request); + if(site == null) { + log.error("#-CB::SPD_TEST::testSlot::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization apiKey check"); + return apiResponse; + } + + if( !( site.getSiteIp()==null || "".equals(site.getSiteIp()) + || "3.3.3.3".equals(site.getSiteIp()) || site.getSiteIp().indexOf(IPKit.getIpAddressByRequest(request)) >= 0) ) { + log.error("#-CB::SPD_TEST::testSlot::site.getSiteIp("+site.getSiteIp()+"), denied" + IPKit.getIpAddressByRequest(request)); + apiResponse.setResultCode("10001"); + return apiResponse; + } + + if(token == null || token.equals("")) { + log.error("#-CB::SPD_TEST::testSlot::Authorization apiKey check"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("Authorization token check"); + return apiResponse; + } + + try { + // TO DO 토큰체크 + Map responseData = new HashMap(); + + try { + JwtManager.TokenInfo tokenInfo = jwtManager.getTokenInfo(token); + final String LOG_PREFIX = "#-CB::SPD_TEST::testSlot::"+tokenInfo.getSid()+"::"; + + int testCnt = site.getTestCnt(); + if(testCnt > 30) { + log.error(LOG_PREFIX+ "TEST_COUNT_OVER"); + apiResponse.setResultCode("9999"); + apiResponse.setResultMessage("TEST_COUNT_OVER"); + return apiResponse; + } + + // 여기서 부터 로직 + List resultList = new ArrayList<>(); + + int balance = 0; + int betAmt = 100; + int winAmt = 100; + + JSONObject requestBody = new JSONObject(); + requestBody.put("userId", memberId); + + // 유저 잔액 확인. + JSONObject responseObj = callBackTestService.getBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + int resultCode = responseObj.getInt("result_code"); + CallbackTestResult result = new CallbackTestResult(); + result.setIndex(0); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + result.setStatus("SUCCESS"); + result.setMsg("[balance] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + + balance = responseObj.getInt("balance"); + + resultList.add(result); + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[balance] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/balance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(500); + + + // 베팅 - 결과 테스트 진행 + // 1. 랜점한 betId 10개 생성. + List betIds = generateRandomStrings(20, 20); + + // 2. 베팅-결과 콜백 10번 진행. + for (int i = 0; i < 20; i += 2) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + long ctms = System.currentTimeMillis(); + String betId = "B"+site.getSiteIdx()+"_"+betIds.get(i)+"_"+memberId; + String debitTranId = "D"+site.getSiteIdx()+"_"+ctms+"_"+memberId; + String creditTranId = "C"+site.getSiteIdx()+"_"+ctms+"_"+memberId; + + // 2-1 call bet + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", debitTranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 17); + requestBody.put("vendorKey", "S02"); + requestBody.put("vendor", "svendor"); + requestBody.put("gameIdx", 17); + requestBody.put("gameKey", "와일드 웨스트 골드"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "debit"); + requestBody.put("debit", betAmt); + requestBody.put("credit", 0); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackTestService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + result.setIndex(i+1); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + int balanceAfter = balance - betAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setStatus("SUCCESS"); + result.setMsg("[bet] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = balanceAfter; + } else { + result.setStatus("FAIL"); + result.setMsg("[bet] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[bet] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(100); + + // 2-2 call win + requestBody = new JSONObject(); + requestBody.put("betId", betId); + requestBody.put("tranId", creditTranId); + requestBody.put("userId", memberId); + requestBody.put("vendorIdx", 17); + requestBody.put("vendorKey", "S02"); + requestBody.put("vendor", "svendor"); + requestBody.put("gameIdx", 17); + requestBody.put("gameKey", "와일드 웨스트 골드"); + requestBody.put("gameId", ""); + requestBody.put("tranType", "credit"); + requestBody.put("debit", 0); + requestBody.put("credit", winAmt); + requestBody.put("isCancel", 0); + requestBody.put("isBonus", 0); + requestBody.put("requestAt", sdf.format(System.currentTimeMillis())); + responseObj = callBackTestService.changeBalance(LOG_PREFIX, site.getSiteCbUrl(), requestBody); + resultCode = responseObj.getInt("result_code"); + result = new CallbackTestResult(); + result.setIndex(i+2); + result.setTimeMs(responseObj.getLong("timeMs")); + responseObj.remove("timeMs"); + + if(resultCode == 0) { + int balanceAfter = balance + winAmt; + int balanceResult = responseObj.getInt("balance"); + if(balanceAfter == balanceResult) { + result.setStatus("SUCCESS"); + result.setMsg("[win] 성공"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + balance = balanceAfter; + } else { + result.setStatus("FAIL"); + result.setMsg("[win] 실패: 잔액이 맞지 않습니다."); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + } else { + result.setStatus("FAIL"); + if(resultCode == -99) { + result.setMsg(responseObj.getString("error_msg")); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(""); + } else { + result.setMsg("[win] 실패"); + result.setCallbackUrl(site.getSiteCbUrl()+"/changebalance"); + result.setRequestBody(requestBody.toString()); + result.setResponseData(responseObj.toString()); + } + + resultList.add(result); + + responseData.put("resultList", resultList); + apiResponse.setData(responseData); + apiResponse.success(); + return apiResponse; + } + + Thread.sleep(100); + } + + responseData.put("resultList", resultList); + + site.setTestCnt(testCnt+1); + int updResult = siteService.updateTestCnt(site); + + apiResponse.setData(responseData); + apiResponse.success(); + + } catch(Exception e) { + log.info(e.toString()); + apiResponse.setResultCode("99995"); + apiResponse.setResultMessage("token is no valid"); + return apiResponse; + } + + } catch (Exception e) { + e.printStackTrace(); + apiResponse.fail(); + } + + return apiResponse; + } +} diff --git a/src/main/java/com/bb/jwt/JwtClame.java b/src/main/java/com/bb/jwt/JwtClame.java new file mode 100644 index 0000000..408561d --- /dev/null +++ b/src/main/java/com/bb/jwt/JwtClame.java @@ -0,0 +1,11 @@ +package com.bb.jwt; + +import lombok.Data; + +@Data +public class JwtClame { + private String siteId; + private String memId; + private String type; + +} diff --git a/src/main/java/com/bb/jwt/JwtConfig.java b/src/main/java/com/bb/jwt/JwtConfig.java new file mode 100644 index 0000000..417449c --- /dev/null +++ b/src/main/java/com/bb/jwt/JwtConfig.java @@ -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); + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/jwt/JwtManager.java b/src/main/java/com/bb/jwt/JwtManager.java new file mode 100644 index 0000000..2c156f4 --- /dev/null +++ b/src/main/java/com/bb/jwt/JwtManager.java @@ -0,0 +1,180 @@ +package com.bb.jwt; + + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import io.jsonwebtoken.security.Keys; +import lombok.Getter; + +import java.nio.charset.StandardCharsets; +import java.security.Key; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Set; + +import com.bb.jwt.JwtManager.TokenInfo; + +public class JwtManager { + private String secretKey; + private long TOKEN_VALIDATiON_SECOND; + private long ADMIN_VALIDATiON_SECOND = 60; + private long ADMIN_VALIDATiON_SECOND_REFRESH = 6000; + + 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("mid", jwtinfo.getMemId()); + claims.put("sid", jwtinfo.getSiteId()); + claims.put("type", jwtinfo.getType()); + + return Jwts.builder() + .setClaims(claims) + .setIssuedAt(new Date()) + .setExpiration(new Date(System.currentTimeMillis() + (TOKEN_VALIDATiON_SECOND * 1000))) + .signWith(getSigninKey(), SignatureAlgorithm.HS256) + .compact(); + } + + // 토큰 생성 5일 + public String generateToken2(JwtClame jwtinfo) { + Claims claims = Jwts.claims(); + claims.put("mid", jwtinfo.getMemId()); + claims.put("sid", jwtinfo.getSiteId()); + claims.put("type", jwtinfo.getType()); + + long fiveDays = 5L * 24 * 60 * 60 * 1000; // 5일 밀리초 + + 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 + fiveDays); + String expirationStr = sdf.format(expiration); + + System.out.println("[JwtManager.generateToken(jwtinfo)] sid: " + jwtinfo.getSiteId()); + System.out.println("[JwtManager.generateToken(jwtinfo)] mid: " + jwtinfo.getMemId()); + System.out.println("[JwtManager.generateToken(jwtinfo)] IAT: " + issuedAtStr); + System.out.println("[JwtManager.generateToken(jwtinfo)] EAT: " + expirationStr); + System.out.println("#-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 generateTokenAdmin(JwtClame jwtinfo) { + Claims claims = Jwts.claims(); + claims.put("sid", jwtinfo.getSiteId()); + claims.put("type", "A"); + return Jwts.builder() + .setClaims(claims) + .setIssuedAt(new Date()) + .setExpiration(new Date(System.currentTimeMillis() + (TOKEN_VALIDATiON_SECOND * 6000))) + .signWith(getSigninKey(), SignatureAlgorithm.HS256) + .compact(); + } + + // 토큰 생성 + public String generateTokenRefresh(JwtClame jwtinfo) { + Claims claims = Jwts.claims(); + claims.put("sid", jwtinfo.getSiteId()); + claims.put("type", "R"); + + return Jwts.builder() + .setClaims(claims) + .setIssuedAt(new Date()) + .setExpiration(new Date(System.currentTimeMillis() + (TOKEN_VALIDATiON_SECOND * 240000))) + .signWith(getSigninKey(), SignatureAlgorithm.HS256) + .compact(); + } + + // 토큰 정보 리턴 + public TokenInfo getTokenInfo(String token) { + Claims body = getClaims(token); + Set keySet = body.keySet(); + for (String s : keySet) { + // System.out.println("s = " + s); + } + + String mid = body.get("mid", String.class); + String sid = body.get("sid", String.class); + String type = body.get("type", String.class); + Date issuedAt = body.getIssuedAt(); + Date expiration = body.getExpiration(); + return new TokenInfo(sid, mid, type, issuedAt, expiration); + } + + // 토큰 정보 리턴 + public TokenInfo getTokenInfoAdmin(String token) { + + + Claims body = getClaims(token); + String type = body.get("type", String.class); + if("A".equals(type)) { + + Set keySet = body.keySet(); + for (String s : keySet) { + // System.out.println("s = " + s); + } + + String sid = body.get("sid", String.class); + + Date issuedAt = body.getIssuedAt(); + Date expiration = body.getExpiration(); + return new TokenInfo(sid, null, type, issuedAt, expiration); + }else { + return null; + } + } + + // 토큰정보 해석 + private Claims getClaims(String token) { + Claims body = Jwts.parserBuilder() + .setSigningKey(getSigninKey()) + .build() + .parseClaimsJws(token) + .getBody(); + return body; + } + + + @Getter + public class TokenInfo { + private String mid; + private String sid; + private String type; + private Date issuedAt; + private Date expire; + + public TokenInfo(String sid, String mid, String type, Date issuedAt, Date expire) { + this.sid = sid; + this.mid = mid; + this.type = type; + this.issuedAt = issuedAt; + this.expire = expire; + } + + @Override + public String toString() { + return "TokenInfo [mid=" + mid + ", sid=" + sid + ", type=" + type + ", issuedAt=" + issuedAt + ", expire=" + expire + "]"; + } + + } +} diff --git a/src/main/java/com/bb/model/ApiResponse.java b/src/main/java/com/bb/model/ApiResponse.java new file mode 100644 index 0000000..78c6d43 --- /dev/null +++ b/src/main/java/com/bb/model/ApiResponse.java @@ -0,0 +1,104 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ApiResponse { + /** 결과 코드 */ + private String resultCode; + /** 결과 메시지 */ + private String resultMessage; + /** 데이터 */ + private Map data; + + /** + * 데이터 추가 + * @param key + * @param value + */ + public void put(String key, Object value) { + if(this.data == null) { + this.data = new HashMap<>(); + } + + this.data.put(key, value); + } + + /** + * 성공상태 설정 + */ + public void success() { + this.setResultCode("0"); + this.setResultMessage("SUCC"); + } + + /** + * 실패상태 설정 + */ + public void fail() { + this.setResultCode("9999"); + this.setResultMessage("FAIL"); + } + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/ApiTestVO.java b/src/main/java/com/bb/model/ApiTestVO.java new file mode 100644 index 0000000..5d3e8e0 --- /dev/null +++ b/src/main/java/com/bb/model/ApiTestVO.java @@ -0,0 +1,25 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class ApiTestVO { + + + private String apiUrl; + private String apiKey; + + private String token; + private String vendorKey; + private String gameKey; + private String isMobile; + private String language; + private String userId; + private String nickName; + private String userIp; + private long balance; + + private String startDate; + private String endDate; + private String betId; +} diff --git a/src/main/java/com/bb/model/AuthParam.java b/src/main/java/com/bb/model/AuthParam.java new file mode 100644 index 0000000..851f862 --- /dev/null +++ b/src/main/java/com/bb/model/AuthParam.java @@ -0,0 +1,23 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; + +import lombok.Data; + +@Data +public class AuthParam { + + @NotEmpty + @Size(max = 40) // 최대 길이 64 + private String userId; + + @NotEmpty + @Size(max = 40) // 최대 길이 64 + private String nickName; + + private String userIp; + + private long balance; + +} diff --git a/src/main/java/com/bb/model/BalanceParam.java b/src/main/java/com/bb/model/BalanceParam.java new file mode 100644 index 0000000..c91a7f2 --- /dev/null +++ b/src/main/java/com/bb/model/BalanceParam.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class BalanceParam { + private Long siteIdx; + private String username; + private String userId; + private String vendor; + private String vendorKey; + private String amount; + private String requestKey; +} diff --git a/src/main/java/com/bb/model/BanGameSearch.java b/src/main/java/com/bb/model/BanGameSearch.java new file mode 100644 index 0000000..b48bcb1 --- /dev/null +++ b/src/main/java/com/bb/model/BanGameSearch.java @@ -0,0 +1,13 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class BanGameSearch { + + private String vendorTitle; + + private Long vendorIdx; + + private String skin; +} diff --git a/src/main/java/com/bb/model/Bet.java b/src/main/java/com/bb/model/Bet.java new file mode 100644 index 0000000..cd77145 --- /dev/null +++ b/src/main/java/com/bb/model/Bet.java @@ -0,0 +1,24 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Bet { + + private String tranid; + private String refId; + private String siteIdx; + private String memberIdx; + private String vendeorIdx; + private String vendorTranKey; + private String gameIdx; + private String betAmt; + private String betWinAmt; + private String betRate; + private String isCancel; + private String isTie; + private String regDate; + private String apiStatus; + private String updDate; + +} diff --git a/src/main/java/com/bb/model/BetParam.java b/src/main/java/com/bb/model/BetParam.java new file mode 100644 index 0000000..4b82959 --- /dev/null +++ b/src/main/java/com/bb/model/BetParam.java @@ -0,0 +1,21 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class BetParam { + + private int siteIdx; + private String apiKey; + private String betId; + private String memberId; + private Long vendorIdx; + private String vendorKey; + private String vendorCetegory; + private String startDate; + private String endDate; + private String isDetail; + private String page; + private String count; + +} diff --git a/src/main/java/com/bb/model/BetRadarResponse.java b/src/main/java/com/bb/model/BetRadarResponse.java new file mode 100644 index 0000000..a6620fc --- /dev/null +++ b/src/main/java/com/bb/model/BetRadarResponse.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class BetRadarResponse { + private Integer error; + private Integer balance; +} diff --git a/src/main/java/com/bb/model/BlockGameVO.java b/src/main/java/com/bb/model/BlockGameVO.java new file mode 100644 index 0000000..162de58 --- /dev/null +++ b/src/main/java/com/bb/model/BlockGameVO.java @@ -0,0 +1,23 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import lombok.Data; + +@Data +public class BlockGameVO { + + @NotNull + private Long siteIdx; + + @NotNull + private Long vendorIdx; + + private String vendorTitle; + + @NotEmpty + private String blockTableId; + + private String blockTableIds; +} diff --git a/src/main/java/com/bb/model/BoardSearch.java b/src/main/java/com/bb/model/BoardSearch.java new file mode 100644 index 0000000..d2890d9 --- /dev/null +++ b/src/main/java/com/bb/model/BoardSearch.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class BoardSearch extends PageFormVO { + + private long siteIdx; + private String siteId; + private String viewType; + private String boardType; + private String startDate; + private String endDate; + private String searchWord; +} diff --git a/src/main/java/com/bb/model/BombAuthVO.java b/src/main/java/com/bb/model/BombAuthVO.java new file mode 100644 index 0000000..074a91a --- /dev/null +++ b/src/main/java/com/bb/model/BombAuthVO.java @@ -0,0 +1,23 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class BombAuthVO { + + String loginToken; + String apiToken; + String accID; + String userID; + String regDate; + String transferId; + String bomb; + String bombs; + String play; + Integer roomNo; + double amount; + String ep; + String endDate; + + +} diff --git a/src/main/java/com/bb/model/BombReponseVo.java b/src/main/java/com/bb/model/BombReponseVo.java new file mode 100644 index 0000000..7c76d2b --- /dev/null +++ b/src/main/java/com/bb/model/BombReponseVo.java @@ -0,0 +1,96 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class BombReponseVo { + /** 결과 코드 */ + private int code; + private String accId; + private String nickName; + private String balance; + boolean isDemo; + + + public void success() { + this.setCode(0); + + } + + + /** + * 실패상태 설정 + */ + public void fail() { + this.setCode(-1); + } + + /** + * 실패상태 설정 + */ + public void fail(int code) { + this.setCode(code); + } + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/CallbackTestResult.java b/src/main/java/com/bb/model/CallbackTestResult.java new file mode 100644 index 0000000..49b596a --- /dev/null +++ b/src/main/java/com/bb/model/CallbackTestResult.java @@ -0,0 +1,18 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CallbackTestResult { + + private int index; + private String status; + private String msg; + private String callbackUrl; + private String requestBody; + private String responseData; + private long timeMs; +} diff --git a/src/main/java/com/bb/model/CashParam.java b/src/main/java/com/bb/model/CashParam.java new file mode 100644 index 0000000..4f140d4 --- /dev/null +++ b/src/main/java/com/bb/model/CashParam.java @@ -0,0 +1,28 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; + +import lombok.Data; + +@Data +public class CashParam { + + private long siteIdx; + + @NotBlank + private String memberId; + + @NotBlank + private String amount; + + private String withAll; + + @NotBlank + private String creditType; + + private String startDate; + + private String endDate; + + private String count; +} diff --git a/src/main/java/com/bb/model/Channel.java b/src/main/java/com/bb/model/Channel.java new file mode 100644 index 0000000..8360536 --- /dev/null +++ b/src/main/java/com/bb/model/Channel.java @@ -0,0 +1,8 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Channel { + private String type; +} diff --git a/src/main/java/com/bb/model/CheckVo.java b/src/main/java/com/bb/model/CheckVo.java new file mode 100644 index 0000000..0aaeddb --- /dev/null +++ b/src/main/java/com/bb/model/CheckVo.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class CheckVo { + + + private String userId; + private String sid; + private Channel channel; + private String uuid; + + +} diff --git a/src/main/java/com/bb/model/CmnSearch.java b/src/main/java/com/bb/model/CmnSearch.java new file mode 100644 index 0000000..72fa927 --- /dev/null +++ b/src/main/java/com/bb/model/CmnSearch.java @@ -0,0 +1,19 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class CmnSearch { + + private Long siteIdx; + + private String siteId; + + private String category; + + private Long vendorIdx; + + private String vendorTitle; + + private String keyword; +} diff --git a/src/main/java/com/bb/model/CncpResponse.java b/src/main/java/com/bb/model/CncpResponse.java new file mode 100644 index 0000000..7601c80 --- /dev/null +++ b/src/main/java/com/bb/model/CncpResponse.java @@ -0,0 +1,13 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CncpResponse { + + private String status; + private CncpResult result; +} diff --git a/src/main/java/com/bb/model/CncpResult.java b/src/main/java/com/bb/model/CncpResult.java new file mode 100644 index 0000000..e01052b --- /dev/null +++ b/src/main/java/com/bb/model/CncpResult.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CncpResult { + + private Double balance; +} diff --git a/src/main/java/com/bb/model/CoinVo.java b/src/main/java/com/bb/model/CoinVo.java new file mode 100644 index 0000000..93117c6 --- /dev/null +++ b/src/main/java/com/bb/model/CoinVo.java @@ -0,0 +1,39 @@ +package com.bb.model; + +import java.time.LocalDateTime; + +import lombok.Data; + +@Data +public class CoinVo { + +private String id; +private String symbol; +private String name; +private String currency; +private String image; +private String currentPrice; +private String marketCap; +private Integer marketCapRank; +private String fullyDilutedValuation; +private String totalVolume; +private String high24h; +private String low24h; +private String priceChange24h; +private String priceChangePercentage24h; +private String marketCapChange24h; +private String marketCapChangePercentage24h; +private String circulatingSupply; +private String totalSupply; +private String maxSupply; +private String ath; +private String athChangePercentage; +private LocalDateTime athDate; +private String atl; +private String atlChangePercentage; +private LocalDateTime atlDate; +private String roi; // JSON as String +private LocalDateTime lastUpdated; + + +} \ No newline at end of file diff --git a/src/main/java/com/bb/model/CommonParam.java b/src/main/java/com/bb/model/CommonParam.java new file mode 100644 index 0000000..3c541fe --- /dev/null +++ b/src/main/java/com/bb/model/CommonParam.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class CommonParam { + private int siteIdx; + private AuthParam authParam; + private PlayParam playParam; + + +} diff --git a/src/main/java/com/bb/model/CommonParamAdmin.java b/src/main/java/com/bb/model/CommonParamAdmin.java new file mode 100644 index 0000000..1635830 --- /dev/null +++ b/src/main/java/com/bb/model/CommonParamAdmin.java @@ -0,0 +1,11 @@ +package com.bb.model; + +import lombok.Data; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +@Data +public class CommonParamAdmin { + private JSONObject param; + private JSONObject[] paramlist; +} diff --git a/src/main/java/com/bb/model/Credit.java b/src/main/java/com/bb/model/Credit.java new file mode 100644 index 0000000..6b504d5 --- /dev/null +++ b/src/main/java/com/bb/model/Credit.java @@ -0,0 +1,52 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Credit { + + private long creditIdx; + private long siteIdx; + private String siteId; + private long targetSiteIdx; + private String targetSiteId; + private String creditType; + /** + * creditType + * - 'AI' : 크레딧 지급 + * - 'AO' : 크레딧 회수 + * - 'CO' : ?? + * - 'DP' : 베팅 + * - 'CD' : 결과 + * - 'SDP' : ?? + * - 'SCD' : ?? + * - 'CI' : ?? + * - 'MAI' : 회원 충전 + * - 'MAO' : 회원 환전 + * - 'MCD' : 트랜스퍼 베팅 + * - 'MDP' : 트랜스퍼 결과 + */ + private String creditRate; + private Integer gameCategory; + private String inOut; + private String tranId; + private long creditAmt; + private long userAmt; + private long preCreditAmt; + private long preBalance; + private int creditStatus; + private String regDate; + private String updDate; + private long pointAmt; + private String refId; + private String otp; + + private int waitTime; // 재요청 대기시간 + + private int siteLevel; + private long casinoCreditA; + private long casinoCreditB; + private long slotCreditA; + private long slotCreditB; + +} \ No newline at end of file diff --git a/src/main/java/com/bb/model/CreditPoint.java b/src/main/java/com/bb/model/CreditPoint.java new file mode 100644 index 0000000..d2dbf69 --- /dev/null +++ b/src/main/java/com/bb/model/CreditPoint.java @@ -0,0 +1,28 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class CreditPoint { + + private Long pointIdx; + private Long siteIdx; + private String siteId; + private Long memberIdx; + private String memberId; + private Long targetSiteIdx; + private String targetSiteId; + private String vendor; + private Integer vendorIdx; + private String tranId; + private String betId; + private Integer amount; + private Double baseRate; + private Double vendorRate; + private Double pointRate; + private Long prePointAmt; + private Integer pointAmt; + private String regDate; + private String updDate; + private String otp; +} diff --git a/src/main/java/com/bb/model/CreditPointSearch.java b/src/main/java/com/bb/model/CreditPointSearch.java new file mode 100644 index 0000000..b806918 --- /dev/null +++ b/src/main/java/com/bb/model/CreditPointSearch.java @@ -0,0 +1,29 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; + +import lombok.Data; + +@Data +public class CreditPointSearch extends PageFormVO { + + @NotBlank + private String startDate; + + @NotBlank + private String endDate; + + private Long searchSiteIdx; + private String searchSiteId; + private String searchBottomId; + private String searchMemberId; + private String searchBetId; + private Integer searchVendorIdx; + private String startDatePartition; + private String endDatePartition; + + @NotBlank + private String oldYN; + + private String orderStr; +} diff --git a/src/main/java/com/bb/model/CreditSearchVO.java b/src/main/java/com/bb/model/CreditSearchVO.java new file mode 100644 index 0000000..f0e553a --- /dev/null +++ b/src/main/java/com/bb/model/CreditSearchVO.java @@ -0,0 +1,42 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +import lombok.Data; + +@Data +public class CreditSearchVO extends PageFormVO { + + private Long siteIdx; + + private String siteId; + + @NotBlank + private String startDate; + + @NotBlank + private String endDate; + + private Long upperSiteIdx; + private String upperSiteId; + private Long targetSiteIdx; + private String targetSiteId; + + private String searchSiteId; + + @NotNull + private String transType; // UP-AI, UP-AO, UP, DW-AI, DW-AO, DW, AD-AI, AD-AO, AD, MAI, MAO, MAIO, CD, DP, CDP + + @NotBlank + private String oldYN; + + private String orderStr; + + private String category; + + private Long vendorIdx; + + private String startDatePartition; + private String endDatePartition; +} diff --git a/src/main/java/com/bb/model/CronStatusVo.java b/src/main/java/com/bb/model/CronStatusVo.java new file mode 100644 index 0000000..e730d97 --- /dev/null +++ b/src/main/java/com/bb/model/CronStatusVo.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class CronStatusVo { + + private String serviceName; + private String hostName; + private String ipAddress; + private String runYn; + private String regDate; + private String updDate; +} diff --git a/src/main/java/com/bb/model/DgMember.java b/src/main/java/com/bb/model/DgMember.java new file mode 100644 index 0000000..10728c3 --- /dev/null +++ b/src/main/java/com/bb/model/DgMember.java @@ -0,0 +1,16 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class DgMember { + + private String username; + private String password; + private Double balance; + private Integer status; + private String currency; + private Double winLimit; + private Double amount; + +} diff --git a/src/main/java/com/bb/model/DgOrder.java b/src/main/java/com/bb/model/DgOrder.java new file mode 100644 index 0000000..c0af63e --- /dev/null +++ b/src/main/java/com/bb/model/DgOrder.java @@ -0,0 +1,11 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class DgOrder { + private String username; + private Long ticketId; + private String serial; + private Double amount; +} diff --git a/src/main/java/com/bb/model/DgParamVo.java b/src/main/java/com/bb/model/DgParamVo.java new file mode 100644 index 0000000..5217635 --- /dev/null +++ b/src/main/java/com/bb/model/DgParamVo.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class DgParamVo { + private String token; + private DgMember member; + private String ticketId; + private Object data; + private DgOrder list; +} diff --git a/src/main/java/com/bb/model/DgReponseVo.java b/src/main/java/com/bb/model/DgReponseVo.java new file mode 100644 index 0000000..cf7d7c5 --- /dev/null +++ b/src/main/java/com/bb/model/DgReponseVo.java @@ -0,0 +1,114 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DgReponseVo { + + /** 결과 코드 */ + private int codeId; + private String token; + private DgMember member; + private Object data; + + /** 데이터 */ + private Map datas; + + /** + * 데이터 추가 + * @param key + * @param value + */ + public void put(String key, Object value) { + if(this.datas == null) { + this.datas = new HashMap<>(); + } + + this.datas.put(key, value); + } + + /** + * 성공상태 설정 + */ + public void success() { + this.setCodeId(0); + + } + + + /** + * 실패상태 설정 + */ + public void fail() { + this.setCodeId(503); + } + + /** + * 실패상태 설정 + */ + public void fail(int code) { + this.setCodeId(code); + } + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/DowinReponseVo.java b/src/main/java/com/bb/model/DowinReponseVo.java new file mode 100644 index 0000000..d2cbd0f --- /dev/null +++ b/src/main/java/com/bb/model/DowinReponseVo.java @@ -0,0 +1,79 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + +import groovy.transform.builder.Builder; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class DowinReponseVo { + /** 결과 코드 */ + private String status; + private Long balance; + private String uuid; + + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/EvoResponse.java b/src/main/java/com/bb/model/EvoResponse.java new file mode 100644 index 0000000..077e8cd --- /dev/null +++ b/src/main/java/com/bb/model/EvoResponse.java @@ -0,0 +1,117 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class EvoResponse { + /** 결과 코드 */ + private String status; + private String sid; + private Double balance; + private Double bonus; + private String uuid; + + private boolean retransmission; + + /** 데이터 */ + private Map data; + + /** + * 데이터 추가 + * @param key + * @param value + */ + public void put(String key, Object value) { + if(this.data == null) { + this.data = new HashMap<>(); + } + + this.data.put(key, value); + } + + /** + * 성공상태 설정 + */ + public void success() { + this.setStatus("OK"); + this.retransmission =false; + } + + /** + * 실패상태 설정 + */ + public void fail() { + this.setStatus("INVALID_PARAMETER"); + this.retransmission =true; + } + + /** + * 실패상태 설정 + */ + public void fail(String msg) { + this.setStatus(msg); + this.retransmission =false; + } + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/EvolutionAamsSessionVo.java b/src/main/java/com/bb/model/EvolutionAamsSessionVo.java new file mode 100644 index 0000000..2864598 --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionAamsSessionVo.java @@ -0,0 +1,9 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionAamsSessionVo { + private String id; + private String ticket; +} diff --git a/src/main/java/com/bb/model/EvolutionGameDetailTableVo.java b/src/main/java/com/bb/model/EvolutionGameDetailTableVo.java new file mode 100644 index 0000000..8c271c1 --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionGameDetailTableVo.java @@ -0,0 +1,10 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionGameDetailTableVo { + private String id; + private String vid; +} + diff --git a/src/main/java/com/bb/model/EvolutionGameDetailVo.java b/src/main/java/com/bb/model/EvolutionGameDetailVo.java new file mode 100644 index 0000000..6053d84 --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionGameDetailVo.java @@ -0,0 +1,8 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionGameDetailVo { + private EvolutionGameDetailTableVo table; +} diff --git a/src/main/java/com/bb/model/EvolutionGameVo.java b/src/main/java/com/bb/model/EvolutionGameVo.java new file mode 100644 index 0000000..d03bdff --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionGameVo.java @@ -0,0 +1,9 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionGameVo { + private String type; + private EvolutionGameDetailVo details; +} diff --git a/src/main/java/com/bb/model/EvolutionPromoTransactionVo.java b/src/main/java/com/bb/model/EvolutionPromoTransactionVo.java new file mode 100644 index 0000000..15a6b0b --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionPromoTransactionVo.java @@ -0,0 +1,17 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionPromoTransactionVo { + private String type; + private String id; + private double amount; + private String voucherId; + private int remainingRounds; + private Jackpot[] jackpots; + private double playableBalance; + private String bonusConfigId; + private String rewardId; + +} diff --git a/src/main/java/com/bb/model/EvolutionTransactionVo.java b/src/main/java/com/bb/model/EvolutionTransactionVo.java new file mode 100644 index 0000000..d05d8b0 --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionTransactionVo.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionTransactionVo { + private String id; + private String refId; + private double amount; + + +} diff --git a/src/main/java/com/bb/model/EvolutionVo.java b/src/main/java/com/bb/model/EvolutionVo.java new file mode 100644 index 0000000..55a3f69 --- /dev/null +++ b/src/main/java/com/bb/model/EvolutionVo.java @@ -0,0 +1,18 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class EvolutionVo { + private String sid; + private String userId; + private String currency; + private String uuid; + + private EvolutionAamsSessionVo aamsSession; + private EvolutionTransactionVo transaction; + private EvolutionPromoTransactionVo promoTransaction; + + private EvolutionGameVo game; + +} diff --git a/src/main/java/com/bb/model/ExtrApiInfo.java b/src/main/java/com/bb/model/ExtrApiInfo.java new file mode 100644 index 0000000..17c1804 --- /dev/null +++ b/src/main/java/com/bb/model/ExtrApiInfo.java @@ -0,0 +1,20 @@ +package com.bb.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class ExtrApiInfo { + + private long siteIdx; + private long memberIdx; + private String apiBaseUrl; + private String apiAgentId; + private String apiSecretKey; + + private String apiVendor; // 게임 벤더 + private String apiGameId; // /game-list, /lobby-list API 에서 받은 ID + private int apiSkin; // [에볼루션 전용] 게임 실행시 금액별 스킨을 선택 할 수 있습니다. 각 스킨별 금액은 "서비스 데스크" > "자주 묻는 질문" > "스킨별 각 테이블 최대 최소 금액" 에서 확인하실 수 있습니다 + private String apiUsername; // 유저의 아이디 | 아이디는 대소문자를 구분하지 않습니다. 예를 들어 아이디 abcd1234와 ABCD1234는 동일한 유저를 의미합니다. +} diff --git a/src/main/java/com/bb/model/ExtrResponse.java b/src/main/java/com/bb/model/ExtrResponse.java new file mode 100644 index 0000000..836b8af --- /dev/null +++ b/src/main/java/com/bb/model/ExtrResponse.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ExtrResponse { + + private Integer balance; +} diff --git a/src/main/java/com/bb/model/Game.java b/src/main/java/com/bb/model/Game.java new file mode 100644 index 0000000..457a743 --- /dev/null +++ b/src/main/java/com/bb/model/Game.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Game { + private long gameIdx; + private String gameKey; + private String gameName; + private String gameNameEn; + private String gameImg; + private String gameType; +} + diff --git a/src/main/java/com/bb/model/GameVo.java b/src/main/java/com/bb/model/GameVo.java new file mode 100644 index 0000000..a8307e7 --- /dev/null +++ b/src/main/java/com/bb/model/GameVo.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class GameVo { + + private Long vendorIdx; + private String vendorTitle; + private String gameId; + private String gameName; + private String gameNameEn; + private String gameImg; + +} diff --git a/src/main/java/com/bb/model/GsoftApiInfo.java b/src/main/java/com/bb/model/GsoftApiInfo.java new file mode 100644 index 0000000..8bb4d17 --- /dev/null +++ b/src/main/java/com/bb/model/GsoftApiInfo.java @@ -0,0 +1,20 @@ +package com.bb.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class GsoftApiInfo { + + private long siteIdx; + private long memberIdx; + private String reqAt; + private String apiBaseUrl; + private String clientId; + private String apiAuthKey; + private String userId; // G-Soft용 회원 아이디 + private String gameId; + private String code; + +} diff --git a/src/main/java/com/bb/model/GsoftResponse.java b/src/main/java/com/bb/model/GsoftResponse.java new file mode 100644 index 0000000..10ea57a --- /dev/null +++ b/src/main/java/com/bb/model/GsoftResponse.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class GsoftResponse { + private int result; + private int balance; +} diff --git a/src/main/java/com/bb/model/GsoftTrxVO.java b/src/main/java/com/bb/model/GsoftTrxVO.java new file mode 100644 index 0000000..f56fd64 --- /dev/null +++ b/src/main/java/com/bb/model/GsoftTrxVO.java @@ -0,0 +1,71 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class GsoftTrxVO { + + @JsonProperty("tranid") + private String tranId; + + @JsonProperty("realround") + private String realRound; + + @JsonProperty("userid") + private String userId; + + @JsonProperty("userno") + private String userNo; + + @JsonProperty("amount") + private Double amount; + + @JsonProperty("type") + private String type; + + @JsonProperty("game") + private String game; + + @JsonProperty("title") + private String title; + + @JsonProperty("round") + private String round; + + @JsonProperty("balance") + private Double balance; + + @JsonProperty("time") + private String time; + + @JsonProperty("roundcode") + private String roundCode; + + @JsonProperty("amountsum") + private int amountSum; + + @JsonProperty("resultdata") + private String resultData; + + @JsonProperty("playermoney") + private int playerMoney; + + @JsonProperty("bankermoney") + private int bankerMoney; + + @JsonProperty("tiemoney") + private int tieMoney; + + @JsonProperty("ppairmoney") + private int ppairMoney; + + @JsonProperty("bpairmoney") + private int bpairMoney; + + @JsonProperty("subid") + private String vendorApiId; +} diff --git a/src/main/java/com/bb/model/GsoftVO.java b/src/main/java/com/bb/model/GsoftVO.java new file mode 100644 index 0000000..1b17db8 --- /dev/null +++ b/src/main/java/com/bb/model/GsoftVO.java @@ -0,0 +1,70 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class GsoftVO { + + @JsonProperty("userid") + private String userId; + + @JsonProperty("amount") + private int amount; + + @JsonProperty("type") + private String type; + + @JsonProperty("game") + private String game; + + @JsonProperty("title") + private String title; + + @JsonProperty("round") + private String round; + + @JsonProperty("balance") + private int balance; + + @JsonProperty("time") + private String time; + + @JsonProperty("roundcode") + private String roundCode; + + @JsonProperty("amountsum") + private String amountsum; + + @JsonProperty("realround") + private String realRound; + + @JsonProperty("tranid") + private String tranId; + + @JsonProperty("userno") + private String userNo; + + @JsonProperty("resultdata") + private String resultData; + + @JsonProperty("playermoney") + private int playerMoney; + + @JsonProperty("bankermoney") + private int bankerMoney; + + @JsonProperty("tiemoney") + private int tieMoney; + + @JsonProperty("ppairmoney") + private int ppairMoney; + + @JsonProperty("bpairmoney") + private int bpairMoney; + + private String vendorApiId; +} diff --git a/src/main/java/com/bb/model/Insure.java b/src/main/java/com/bb/model/Insure.java new file mode 100644 index 0000000..0ab867b --- /dev/null +++ b/src/main/java/com/bb/model/Insure.java @@ -0,0 +1,43 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Insure { + private long idx; + private long siteIdx; + private String siteId; + private String insureType; + private long insureUpSiteIdx; + private String insureUpSiteId; + private long memberIdx; + private String memberId; + private int vendorIdx; + private String refId; + private String betAmt; + private String winAmt; + private String winLoseAmt; + private String insureBetAmt; + private String rate; + private String insureRate; + private String insurePointRate; + private String upSiteinsurePointRate; + private String siteCreditRate; + private String insureAmt; + private String insureUpperAmt; + private String insurePointAmt; + private String upSiteInsurePointAmt; + private String upCredit; + private String credit; + private String pointAmt; + private long preCreditAmt; + private long preCreditPoint; + private long preInsureAmt; + private long preInsurePoint; + private String status; + private String isCancel; + private String regDate; + private String updDate; + private String regId; + +} diff --git a/src/main/java/com/bb/model/Jackpot.java b/src/main/java/com/bb/model/Jackpot.java new file mode 100644 index 0000000..44d72a8 --- /dev/null +++ b/src/main/java/com/bb/model/Jackpot.java @@ -0,0 +1,9 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Jackpot { + private String id; + private double winAmount; +} diff --git a/src/main/java/com/bb/model/LunchParamVO.java b/src/main/java/com/bb/model/LunchParamVO.java new file mode 100644 index 0000000..a22972e --- /dev/null +++ b/src/main/java/com/bb/model/LunchParamVO.java @@ -0,0 +1,10 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class LunchParamVO { + private String accessToken; + private String lunchToken; + private String gameCode; +} diff --git a/src/main/java/com/bb/model/Member.java b/src/main/java/com/bb/model/Member.java new file mode 100644 index 0000000..d8c19d8 --- /dev/null +++ b/src/main/java/com/bb/model/Member.java @@ -0,0 +1,29 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Member { + + private int siteIdx; + private String siteId; + private int memberIdx; + private String memberId; + private String memberNick; + private long balance; + private String lastSid; + private String bombAccId; + private String dowinId; + private Long pragmaticId; + private long amazonId; + private Long starGameId; + private long totalEvoBetAmt; + private String parseEvoYn; + private String ip; + private int lastInVendorIdx; + private String lastBetDate; + + private String vendorUsername; + private long vendorBalance; + private long userBalance; +} diff --git a/src/main/java/com/bb/model/MemberParam.java b/src/main/java/com/bb/model/MemberParam.java new file mode 100644 index 0000000..9379eeb --- /dev/null +++ b/src/main/java/com/bb/model/MemberParam.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; + +import lombok.Data; + +@Data +public class MemberParam { + + private String userId; + private String nickName; + private String siteUserId; + +} diff --git a/src/main/java/com/bb/model/NexusApiInfo.java b/src/main/java/com/bb/model/NexusApiInfo.java new file mode 100644 index 0000000..6efb519 --- /dev/null +++ b/src/main/java/com/bb/model/NexusApiInfo.java @@ -0,0 +1,29 @@ +package com.bb.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class NexusApiInfo { + + private long siteIdx; + private long memberIdx; + private String apiBaseUrl; + private String agentId; + private String agentSecretKey; + private String vendorKey; // 게임사 벤더키 + private String gameKey; // 특정 게임을 식별하기 위한 고유 키 + private String skin; // skin 코드 (카지노 게임사 전용) [부록 → 카지노 한도 스킨표]에서 확인가능 + private String type; // 게임타입 (슬롯 게임사 전용) [Slot, Arcade, Fishing, Bingo, Table Games] + private String username; // 3글자 ~ 22글자 API용 회원 아이디 (게임을 위한 고유한 회원 식별자입니다) + private String nickname; // 2글자 ~ 22글자 사이트 닉네임 (게임 중에 다른 플레이어에게 보여지는 회원의 닉네임입니다) + private String siteUsername; // 3글자 ~ 22글자 사이트 회원아이디 (실사이트에서 사용하는 고유 회원 아이디) + private String ip; // 회원접속아이피 + private String language; // 인게임 언어팩 (기본:영문) + private String platform; // 회원브라우저 환경 (desktop, mobile) + + private String sdate; + private String edate; + private String limit; +} diff --git a/src/main/java/com/bb/model/NexusBalanceData.java b/src/main/java/com/bb/model/NexusBalanceData.java new file mode 100644 index 0000000..92be775 --- /dev/null +++ b/src/main/java/com/bb/model/NexusBalanceData.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class NexusBalanceData { + + private int beforeBalance; + private int balance; + private String currency; +} diff --git a/src/main/java/com/bb/model/NexusResponse.java b/src/main/java/com/bb/model/NexusResponse.java new file mode 100644 index 0000000..007ba9d --- /dev/null +++ b/src/main/java/com/bb/model/NexusResponse.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class NexusResponse { + + private int code; + private String msg; + private NexusBalanceData data; +} diff --git a/src/main/java/com/bb/model/NexusSmlData.java b/src/main/java/com/bb/model/NexusSmlData.java new file mode 100644 index 0000000..fbb9782 --- /dev/null +++ b/src/main/java/com/bb/model/NexusSmlData.java @@ -0,0 +1,44 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class NexusSmlData { + + private long siteIdx; + private long memberIdx; + private String transactionKey; // 거래코드(고유키) + private String parentTransactionKey; // 각 거래를 그룹화 하기 위한 키입니다 (베팅, 결과를 그룹화하는 키입니다) + private String username; // API에 등록된 회원 아이디(고유키) + private String siteUsername; // 사이트에 등록된 회원 아이디 + private String vendorKey; // 게임사 벤더키 + private String vendorName; // 게임사 벤더명 + private String gameCategoryId; // 게임 카테고리 아이디 + private String gameCategory; // 게임 카테고리 + private String gameName; // 특정 게임을 식별하기 위한 게임명 + private String gameTypeId; // 게임 형식 아이디 + private String gameType; // 게임 형식 + private String gameImage; // 게임이미지 URL + private String type; // 트랜잭션 종류(turn_bet, turn_win, turn_draw, turn_cancel, turn_lose, turn_adjust, turn_in, turn_out) + private String key; // 게임사 고유코드 + private String refId; // 게임사 상위 베팅 코드 + private String oRefId; // 게임사로부터 전송 받은 게임 코드 + private String roundId; // 라운드 아이디 + private String isBonus; // 보너스 여부 + private String isJackpot; // 잭팟 여부 + private String isPromo; // 프로모션 여부 + private String isFreeGame; // 프리게임 여부 + private String beforeCash; // 이전 금액 + private String amount; // 금액 + private String afterCash; // 이후 금액 + private String updepositCash; // 당첨금 제한이 설정된 경우 설정된 금액 이상으로 당첨되면 설정된 금액까지는 유저에게 지급되며, 초과하는 금액은 에이전트에게 회수됩니다. 회수된 금액은 [updepositCash] 항목에 기록됩니다. + private String gameId; // 게임 아이디 + private String siteGameId; // 사이트 게임 아이디 + private String createdAt; // 요청 받은 시간 + private String requestedAt; // api 요청 일자 + private String betDateTime; // 배팅 시간 + private String detail; // 상세 +} diff --git a/src/main/java/com/bb/model/NexusSmlRequest.java b/src/main/java/com/bb/model/NexusSmlRequest.java new file mode 100644 index 0000000..cec9099 --- /dev/null +++ b/src/main/java/com/bb/model/NexusSmlRequest.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class NexusSmlRequest { + + private String apiKey; // 사이트 API 키 + private NexusSmlData params; // 데이터 + private String createdAt; // 요청 받은 시간 + private String requestedAt; // api 요청 일자 +} diff --git a/src/main/java/com/bb/model/NexusTrplVO.java b/src/main/java/com/bb/model/NexusTrplVO.java new file mode 100644 index 0000000..eab2839 --- /dev/null +++ b/src/main/java/com/bb/model/NexusTrplVO.java @@ -0,0 +1,46 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class NexusTrplVO { + /** + * + FieldTypeComment + ea_keybigint unsigned NOT NULL + table_idvarchar(50) NOT NULL게임방 ID + game_idvarchar(50) NOT NULL게임별 ID + siteint unsigned NOT NULL사이트키 + uidvarchar(50) NOT NULL유저 ID + typevarchar(20) NOT NULL게임 타입 + amount1int unsigned NOT NULL유저 배팅금 + amount2int unsigned NOT NULL변환 배팅금 + payoff1int unsigned NOT NULL유저 획득금 + payoff2int unsigned NOT NULL변환 획득금 + statustinyint unsigned NOT NULL상태(0:배팅중,1:배팅확정,2:완료,3:거부) + jsontext NOT NULL상세 내역 json + reg_dtdatetime NOT NULL등록일시 + update_dttimestamp NULL업데이트 일시 + round_idvarchar(50) NULL + */ + private Long eaKey; + private String tableId; + private String gameId; + private Integer site; + private String uid; + private String type; + private Long amount1; + private Long amount2; + private Long payoff1; + private Long payoff2; + private Integer status; + private String json; + private String regDt; + private String updateDt; + private String roundId; + + private long siteIdx; + private String siteId; + private int callbackCnt; +} + diff --git a/src/main/java/com/bb/model/OTPInfo.java b/src/main/java/com/bb/model/OTPInfo.java new file mode 100644 index 0000000..69ef198 --- /dev/null +++ b/src/main/java/com/bb/model/OTPInfo.java @@ -0,0 +1,17 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class OTPInfo { + + private long siteIdx; + private String otpType; + private String siteId; + private String account; + private String issuer; + private String secretKey; + private String url; + private String regDate; + private String updDate; +} diff --git a/src/main/java/com/bb/model/OnixResponse.java b/src/main/java/com/bb/model/OnixResponse.java new file mode 100644 index 0000000..a010ca8 --- /dev/null +++ b/src/main/java/com/bb/model/OnixResponse.java @@ -0,0 +1,48 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Onix Seamless API 응답 DTO + * 모든 Onix 콜백 응답 (balance, changeBalance)에 사용 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@JsonInclude(JsonInclude.Include.NON_NULL) +public class OnixResponse { + + /** + * 결과 코드: 1(성공), 0(실패) + */ + private int result; + + /** + * 사용자 현재 잔고 (result=1일 때만 포함) + */ + private long balance; + + /** + * 성공 응답 생성 (result=1, balance 포함) + */ + public static OnixResponse success(long balance) { + return OnixResponse.builder() + .result(1) + .balance(balance) + .build(); + } + + /** + * 실패 응답 생성 (result=0, 에러 메시지 없음) + */ + public static OnixResponse failure() { + return OnixResponse.builder() + .result(0) + .build(); + } +} diff --git a/src/main/java/com/bb/model/PageFormVO.java b/src/main/java/com/bb/model/PageFormVO.java new file mode 100644 index 0000000..ac63adc --- /dev/null +++ b/src/main/java/com/bb/model/PageFormVO.java @@ -0,0 +1,88 @@ +package com.bb.model; + +public class PageFormVO { + + String function_name; + int page; + int count_per_page; + int count_per_list; + int tatal_page_count; + int tatal_list_count; + int limit; + int offset; + String pagination; + + public String getFunction_name() { + return function_name; + } + + public void setFunction_name(String function_name) { + this.function_name = function_name; + } + + public int getPage() { + return page; + } + + public void setPage(int page) { + this.page = page; + } + + public int getCount_per_page() { + return count_per_page; + } + + public void setCount_per_page(int count_per_page) { + this.count_per_page = count_per_page; + } + + public int getCount_per_list() { + return count_per_list; + } + + public void setCount_per_list(int count_per_list) { + this.count_per_list = count_per_list; + } + + public int getTatal_page_count() { + return tatal_page_count; + } + + public void setTatal_page_count(int tatal_page_count) { + this.tatal_page_count = tatal_page_count; + } + + public int getTatal_list_count() { + return tatal_list_count; + } + + public void setTatal_list_count(int tatal_list_count) { + this.tatal_list_count = tatal_list_count; + } + + public int getLimit() { + return limit; + } + + public void setLimit(int limit) { + this.limit = limit; + } + + public int getOffset() { + return offset; + } + + public void setOffset(int offset) { + this.offset = offset; + } + + public String getPagination() { + return pagination; + } + + public void setPagination(String pagination) { + this.pagination = pagination; + } + + +} diff --git a/src/main/java/com/bb/model/PandaResponse.java b/src/main/java/com/bb/model/PandaResponse.java new file mode 100644 index 0000000..ffdd353 --- /dev/null +++ b/src/main/java/com/bb/model/PandaResponse.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PandaResponse { + + private Integer balance; +} diff --git a/src/main/java/com/bb/model/PlayParam.java b/src/main/java/com/bb/model/PlayParam.java new file mode 100644 index 0000000..3fdb5de --- /dev/null +++ b/src/main/java/com/bb/model/PlayParam.java @@ -0,0 +1,39 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.Size; + +import lombok.Data; + +@Data +public class PlayParam { + + + @NotEmpty + @Size(max = 40) // 최대 길이 64 + private String userId; + + @Size(max = 40) // 최대 길이 64 + private String nickName; + + @NotEmpty + private String vendorKey; + + @NotEmpty + private String gameKey; + + private Long balance; + + private String isMobile; + private String userIp; + + private String language; + private String decYn; + private String requestAT; + private String vendorCode; + private String skinType; + private String parseUseYn; + + // 유저별 최대베팅제한금액 (Optional, 기본값 0) + private Long userMaxBet; +} diff --git a/src/main/java/com/bb/model/PowerballData.java b/src/main/java/com/bb/model/PowerballData.java new file mode 100644 index 0000000..e704732 --- /dev/null +++ b/src/main/java/com/bb/model/PowerballData.java @@ -0,0 +1,11 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class PowerballData { + + private String siteId; + private String memId; + private String balance; +} diff --git a/src/main/java/com/bb/model/PowerballRequest.java b/src/main/java/com/bb/model/PowerballRequest.java new file mode 100644 index 0000000..aa93c71 --- /dev/null +++ b/src/main/java/com/bb/model/PowerballRequest.java @@ -0,0 +1,71 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class PowerballRequest { + + @JsonProperty("_id") + private String mongoDbId; // 몽고DB ID + + @JsonProperty("siteId") + private String siteId; // 사이트 아이디 + + @JsonProperty("siteName") + private String siteName; // 사이트명 + + @JsonProperty("id") + private String id; // 등록된 유저아이디 + + @JsonProperty("memId") + private String memId; // id 필드와 같은 데이터 + + @JsonProperty("gameId") + private String betId; // 배팅 ID + + @JsonProperty("vendorCode") + private String vendorCode; // 게임코드 + + @JsonProperty("gameName") + private String gameName; // 게임코드 + + @JsonProperty("round") + private long round; // 게임 라운드 + + @JsonProperty("betType") + private String betType; // 선택한 베팅, no = 일반볼 홀 + + @JsonProperty("gameType") + private String gameType; // 베팅한 게임 그룹, noe = 일반볼 홀짝 + + @JsonProperty("resultType") + private String resultType; // 배팅결과 타입 + + @JsonProperty("folder") + private String folder; // 조합베팅: 1: 단일베팅 (예: 홀, 짝, 언더, 오버 등), 2 이상: 조합베팅(예: 홀오버, 짝오버 등) + + @JsonProperty("betAmt") + private int betAmt; // 베팅금 + + @JsonProperty("betWinAmt") + private int betWinAmt; // 당첨금 + + @JsonProperty("balance") + private int balance; // 베팅 후 유저보유금 + + @JsonProperty("betRate") + private String betRate; // 해당 베팅 배당 + + @JsonProperty("rate") + private String gameRate; // 배당 + + @JsonProperty("betTime") + private String betTime; // 베팅시간 + + @JsonProperty("date") + private String betDate; // 배팅날짜 +} diff --git a/src/main/java/com/bb/model/PowerballResponse.java b/src/main/java/com/bb/model/PowerballResponse.java new file mode 100644 index 0000000..13b44e1 --- /dev/null +++ b/src/main/java/com/bb/model/PowerballResponse.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PowerballResponse { + + private String result; // SUCCESS 또는 FAILED + private String msg; // "에러 메세지" + private PowerballData data; +} diff --git a/src/main/java/com/bb/model/PpaReponseVo.java b/src/main/java/com/bb/model/PpaReponseVo.java new file mode 100644 index 0000000..c5bcfd2 --- /dev/null +++ b/src/main/java/com/bb/model/PpaReponseVo.java @@ -0,0 +1,84 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + +import groovy.transform.builder.Builder; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PpaReponseVo { + /** 결과 코드 */ + private String playerSessionId; + private String externalPlayerID; + private String playerName; + private long balance; + private String currency; + private String country; + private int error; + private String message; + + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/PrimeResponse.java b/src/main/java/com/bb/model/PrimeResponse.java new file mode 100644 index 0000000..7923ded --- /dev/null +++ b/src/main/java/com/bb/model/PrimeResponse.java @@ -0,0 +1,13 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class PrimeResponse { + + private Integer balance; + private Integer beforeBalance; +} diff --git a/src/main/java/com/bb/model/RaveResponse.java b/src/main/java/com/bb/model/RaveResponse.java new file mode 100644 index 0000000..6f1fd70 --- /dev/null +++ b/src/main/java/com/bb/model/RaveResponse.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class RaveResponse { + + private int balance; + private int errorCode; + private String message; +} diff --git a/src/main/java/com/bb/model/ReportSearch.java b/src/main/java/com/bb/model/ReportSearch.java new file mode 100644 index 0000000..73be5e1 --- /dev/null +++ b/src/main/java/com/bb/model/ReportSearch.java @@ -0,0 +1,33 @@ +package com.bb.model; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class ReportSearch { + + @NotNull + @Min(1) + private Long searchSiteIdx; + + @NotBlank + private String searchSiteId; + + private String searchMemId; + + @NotBlank + private String startDate; + private String year; + private String month; + + @NotBlank + private String endDate; + + private String isToday; + private String topId; // 트리정보에서 최상위 아이디 설정을 위한 변수 + + @NotBlank + private String withBottomYN; +} diff --git a/src/main/java/com/bb/model/ScResponse.java b/src/main/java/com/bb/model/ScResponse.java new file mode 100644 index 0000000..d2c81e4 --- /dev/null +++ b/src/main/java/com/bb/model/ScResponse.java @@ -0,0 +1,89 @@ +package com.bb.model; + +import com.bb.exception.ApiException; +import com.bb.exception.RequestParameterApiException; +import com.bb.util.StringUtils; +import com.fasterxml.jackson.annotation.JsonInclude; + + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.HashMap; +import java.util.Map; + + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ScResponse { + /** 결과 코드 */ + private int result; + /** 결과 메시지 */ + private String status; + /** 데이터 */ + private Map data; + + /** + * 데이터 추가 + * @param key + * @param value + */ + public void put(String key, Object value) { + if(this.data == null) { + this.data = new HashMap<>(); + } + + this.data.put(key, value); + } + + + /** + * 필수 파라미터 검증 + * @param value + * @param paramName + * @throws ApiException + */ + public static void require(Object value, String paramName) throws ApiException { + String stringValue = (value == null) ? null : String.valueOf(value); + + if(StringUtils.isEmpty(stringValue)) { + throw new RequestParameterApiException( paramName); + } + } + + /** + * 파라미터 조건 검증 + * @param condition + * @param message + * @throws ApiException + */ + public static void then( boolean condition, String message ) throws ApiException { + if( condition ) { + throw new ApiException( message ); + } + } + + /** + * 파라미터가 특정 목록에 포함되어 있는지 검증 + * @param param + * @param paramName + * @param values + * @throws ApiException + */ + public static void notMatched( Object param, String paramName, Object... values ) throws ApiException { + boolean matched = false; + + for( Object value : values ) { + if( param.equals( value ) ) { + matched = true; + break; + } + } + + if( !matched ) { + throw new ApiException( "유효하지 않은 파라미터 : " + paramName ); + } + } + +} diff --git a/src/main/java/com/bb/model/Site.java b/src/main/java/com/bb/model/Site.java new file mode 100644 index 0000000..c3b4d3f --- /dev/null +++ b/src/main/java/com/bb/model/Site.java @@ -0,0 +1,65 @@ +package com.bb.model; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; + +import lombok.Data; + +@Data +public class Site implements Serializable { + + private int siteIdx; + private String siteIdxHex; + private String siteId; + private String siteName; + private int siteLevel; + private String siteGubun; + private String sitePass; + private String siteMobile; + private String siteKey; + private String siteVenderType; + private int siteCompanyIdx; + private String siteCreditRate; + private String ips; + + private String siteUseYn; + private String siteDispYn; + private String regDate; + private String siteType; + private int upperSiteIdx; + private String upperSiteId; + private String memo; + private String siteCbUrl; + private String siteBankInfo; + private String siteIp; + + private long aiCredit; + private long aoCredit; + private long ciCredit; + private long coCredit; + + private int downSiteCnt; + private int downMemCnt; + + private long credit; + private long siteMaxCredit; + private long point; + + private long insurance; + private long insurancePoint; + + private String nowPass; + private String newPass; + private String domain; + + private String token; + + private int testCnt; + + private String isTransfer; + private String useParseStatMenu; + + private List treeInfo; + +} diff --git a/src/main/java/com/bb/model/SitePwdVO.java b/src/main/java/com/bb/model/SitePwdVO.java new file mode 100644 index 0000000..712bd2c --- /dev/null +++ b/src/main/java/com/bb/model/SitePwdVO.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotEmpty; + +import lombok.Data; + +@Data +public class SitePwdVO { + + private String siteId; + + @NotEmpty + private String newPassword; +} diff --git a/src/main/java/com/bb/model/SiteSearch.java b/src/main/java/com/bb/model/SiteSearch.java new file mode 100644 index 0000000..4ba6b4d --- /dev/null +++ b/src/main/java/com/bb/model/SiteSearch.java @@ -0,0 +1,49 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; + +import lombok.Data; + +@Data +public class SiteSearch extends PageFormVO { + + private long siteIdx; + private String siteId; + private long upperSiteIdx; + private String upperSiteId; + private String memberId; + private String vendorUsername; + + private long searchSiteIdx; + private String searchSiteId; + private String searchMemId; + private String searchType; + private String searchValue; + private String startDate; + private String year; + private String month; + private String endDate; + private int searchLimit; + private int searchDepth; + + private int parsEvoAmount; + + private String siteDispYn; + //크레딧 + private String refId; + private String creditType; + private String creditStatus; + + // 보험 + private String status; + private String updown; + private String dispYn; + + private String isExcel; + private String topId; // 트리정보에서 최상위 아이디 설정을 위한 변수 + + @NotBlank + private String withBottomYN; + private String periodType; + +} diff --git a/src/main/java/com/bb/model/SiteVendorSkinVO.java b/src/main/java/com/bb/model/SiteVendorSkinVO.java new file mode 100644 index 0000000..17766dc --- /dev/null +++ b/src/main/java/com/bb/model/SiteVendorSkinVO.java @@ -0,0 +1,36 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +import lombok.Data; + +@Data +public class SiteVendorSkinVO { + + @NotNull + private Long siteIdx; + + @NotNull + private Long vendorIdx; + + @NotBlank + private String category; + + @NotBlank + private String useYn; + + @NotNull + private Long siteMaxBet; + + @NotNull + private Long siteMaxWin; + + @NotEmpty + private String skinType; + + private String nexusSkinType; + + private String extrSkinType; +} diff --git a/src/main/java/com/bb/model/SlotGame.java b/src/main/java/com/bb/model/SlotGame.java new file mode 100644 index 0000000..be21f41 --- /dev/null +++ b/src/main/java/com/bb/model/SlotGame.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class SlotGame { + + private String id; + private String key; + private SlotGameName names; + private String platform; + private String category; + private String type; + private String image; +} diff --git a/src/main/java/com/bb/model/SlotGameName.java b/src/main/java/com/bb/model/SlotGameName.java new file mode 100644 index 0000000..436dcaa --- /dev/null +++ b/src/main/java/com/bb/model/SlotGameName.java @@ -0,0 +1,10 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class SlotGameName { + + private String ko; + private String en; +} diff --git a/src/main/java/com/bb/model/SvendorResponse.java b/src/main/java/com/bb/model/SvendorResponse.java new file mode 100644 index 0000000..9ce142a --- /dev/null +++ b/src/main/java/com/bb/model/SvendorResponse.java @@ -0,0 +1,15 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SvendorResponse { + + private String balance; + private String id; + private Integer statuscode; + private String status; +} diff --git a/src/main/java/com/bb/model/TheaResponse.java b/src/main/java/com/bb/model/TheaResponse.java new file mode 100644 index 0000000..79954b1 --- /dev/null +++ b/src/main/java/com/bb/model/TheaResponse.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TheaResponse { + + private Integer balance; +} diff --git a/src/main/java/com/bb/model/ThenutResponse.java b/src/main/java/com/bb/model/ThenutResponse.java new file mode 100644 index 0000000..3da772e --- /dev/null +++ b/src/main/java/com/bb/model/ThenutResponse.java @@ -0,0 +1,14 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ThenutResponse { + + private Integer balance; + private Integer errorCode; + private String message; +} diff --git a/src/main/java/com/bb/model/TplusApiInfo.java b/src/main/java/com/bb/model/TplusApiInfo.java new file mode 100644 index 0000000..b2c12eb --- /dev/null +++ b/src/main/java/com/bb/model/TplusApiInfo.java @@ -0,0 +1,20 @@ +package com.bb.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class TplusApiInfo { + + private long siteIdx; + private long memberIdx; + private String apiBaseUrl; + private String clientId; + private String apiAuthKey; + private String apiUsername; // Tplus용 회원 아이디 + private String thirdparty; + private String uuid; + private String reqAt; + private String pairTransactionKey; +} diff --git a/src/main/java/com/bb/model/TplusCBData.java b/src/main/java/com/bb/model/TplusCBData.java new file mode 100644 index 0000000..9200b0d --- /dev/null +++ b/src/main/java/com/bb/model/TplusCBData.java @@ -0,0 +1,41 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class TplusCBData { + + @JsonProperty("agent_name") + private String agentName; + + @JsonProperty("user_name") + private String userName; + + @JsonProperty("amount") + private double amount; + + @JsonProperty("category") + private String category; + + @JsonProperty("game_name") + private String gameName; + + @JsonProperty("game_symbol") + private String gameSymbol; + + @JsonProperty("thirdparty") + private String thirdParty; + + @JsonProperty("transactionKey") + private String transactionKey; + + @JsonProperty("pair_transaction_key") + private String pairTransactionKey; + + @JsonProperty("processed_at") + private String processedAt; +} diff --git a/src/main/java/com/bb/model/TplusCBRequest.java b/src/main/java/com/bb/model/TplusCBRequest.java new file mode 100644 index 0000000..6359c72 --- /dev/null +++ b/src/main/java/com/bb/model/TplusCBRequest.java @@ -0,0 +1,17 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Data +public class TplusCBRequest { + + @JsonProperty("api_key") + private String apiKey; // 사이트 API 키 + + @JsonProperty("params") + private TplusCBData param; +} diff --git a/src/main/java/com/bb/model/TplusData.java b/src/main/java/com/bb/model/TplusData.java new file mode 100644 index 0000000..ff7040f --- /dev/null +++ b/src/main/java/com/bb/model/TplusData.java @@ -0,0 +1,23 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TplusData { + + @JsonProperty("user_name") + private String userName; + + @JsonProperty("balance") + private Double balance; + + @JsonProperty("beforeBalance") + private Double beforeBalance; + + @JsonProperty("currency") + private String currency; +} diff --git a/src/main/java/com/bb/model/TplusResponse.java b/src/main/java/com/bb/model/TplusResponse.java new file mode 100644 index 0000000..ed0ce21 --- /dev/null +++ b/src/main/java/com/bb/model/TplusResponse.java @@ -0,0 +1,20 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TplusResponse { + + @JsonProperty("code") + private int code; + + @JsonProperty("data") + private TplusData data; + + @JsonProperty("msg") + private String msg; +} diff --git a/src/main/java/com/bb/model/TransSearchVO.java b/src/main/java/com/bb/model/TransSearchVO.java new file mode 100644 index 0000000..20e23ed --- /dev/null +++ b/src/main/java/com/bb/model/TransSearchVO.java @@ -0,0 +1,53 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +import lombok.Data; + +@Data +public class TransSearchVO extends PageFormVO { + + private Long siteIdx; + + private String siteId; + + @NotBlank + private String startDate; + + @NotBlank + private String endDate; + + private String category; + + private Long vendorIdx; + + private String resultInfo; + + private String betWinAmt; + + @NotNull + private Long searchSiteIdx; + + @NotBlank + private String searchSiteId; + + private String searchMemberId; + + private String betId; + private String refId; + + @NotBlank + private String withBottomYN; + + @NotBlank + private String oldYN; + + private String orderStr; + + private String topId; // 트리정보에서 최상위 아이디 설정을 위한 변수 + + private String startDatePartition; + private String endDatePartition; + +} diff --git a/src/main/java/com/bb/model/TrfApiInfo.java b/src/main/java/com/bb/model/TrfApiInfo.java new file mode 100644 index 0000000..0d7b81d --- /dev/null +++ b/src/main/java/com/bb/model/TrfApiInfo.java @@ -0,0 +1,16 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class TrfApiInfo { + + private Long siteIdx; + private Long memberIdx; + private String memberId; + private String apiUsername; + private String apiVendor; + private String apiBaseUrl; + private String apiAuthId; + private String apiAuthKey; +} diff --git a/src/main/java/com/bb/model/UserKickParam.java b/src/main/java/com/bb/model/UserKickParam.java new file mode 100644 index 0000000..c69985a --- /dev/null +++ b/src/main/java/com/bb/model/UserKickParam.java @@ -0,0 +1,8 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class UserKickParam { + private String userid; // 유저 ID (필수) +} diff --git a/src/main/java/com/bb/model/UserSearch.java b/src/main/java/com/bb/model/UserSearch.java new file mode 100644 index 0000000..4751484 --- /dev/null +++ b/src/main/java/com/bb/model/UserSearch.java @@ -0,0 +1,33 @@ +package com.bb.model; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; + +import lombok.Data; + +@Data +public class UserSearch extends PageFormVO { + + private Long siteIdx; + + private String siteId; + + private Long memberIdx; + + private String memberId; + + @NotNull + private Long searchSiteIdx; + + @NotBlank + private String searchSiteId; + + private String searchMemberId; + + @NotBlank + private String withBottomYN; + + private String orderStr; + + private String topId; // 트리정보에서 최상위 아이디 설정을 위한 변수 +} diff --git a/src/main/java/com/bb/model/Vendor.java b/src/main/java/com/bb/model/Vendor.java new file mode 100644 index 0000000..8a5d439 --- /dev/null +++ b/src/main/java/com/bb/model/Vendor.java @@ -0,0 +1,12 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class Vendor { + + private long siteIdx; + private long vendorIdx; + private String vendorCode; + +} diff --git a/src/main/java/com/bb/model/VendorChangeBalanceLogVo.java b/src/main/java/com/bb/model/VendorChangeBalanceLogVo.java new file mode 100644 index 0000000..c01c7a8 --- /dev/null +++ b/src/main/java/com/bb/model/VendorChangeBalanceLogVo.java @@ -0,0 +1,21 @@ +package com.bb.model; + +import lombok.Builder; +import lombok.Data; + +@Data +@Builder +public class VendorChangeBalanceLogVo { + + private Long idx; + private Long siteIdx; + private Long memberIdx; + private String vendor; + private String vendorApiId; + private String reqType; + private int amount; + private String reqAt; + private String reqStatus; + private String reqMsg; + private String regDate; +} diff --git a/src/main/java/com/bb/model/VendorsParam.java b/src/main/java/com/bb/model/VendorsParam.java new file mode 100644 index 0000000..9cfa866 --- /dev/null +++ b/src/main/java/com/bb/model/VendorsParam.java @@ -0,0 +1,5 @@ +package com.bb.model; + +public class VendorsParam { + +} diff --git a/src/main/java/com/bb/model/VinusData.java b/src/main/java/com/bb/model/VinusData.java new file mode 100644 index 0000000..c2bb4f5 --- /dev/null +++ b/src/main/java/com/bb/model/VinusData.java @@ -0,0 +1,26 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class VinusData { + + @JsonProperty("user_id") + private String userId; + + @JsonProperty("user_username") + private String userUsername; + + @JsonProperty("user_nickname") + private String userNickname; + + @JsonProperty("balance") + private Integer balance; + + @JsonProperty("token") + private String token; +} diff --git a/src/main/java/com/bb/model/VinusResponse.java b/src/main/java/com/bb/model/VinusResponse.java new file mode 100644 index 0000000..67b6b9d --- /dev/null +++ b/src/main/java/com/bb/model/VinusResponse.java @@ -0,0 +1,17 @@ +package com.bb.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class VinusResponse { + + @JsonProperty("result") + private int result; + + @JsonProperty("data") + private VinusData data; +} diff --git a/src/main/java/com/bb/model/WithdrewRequest.java b/src/main/java/com/bb/model/WithdrewRequest.java new file mode 100644 index 0000000..b22b482 --- /dev/null +++ b/src/main/java/com/bb/model/WithdrewRequest.java @@ -0,0 +1,11 @@ +package com.bb.model; + +import lombok.Data; + +@Data +public class WithdrewRequest { + + private String id; + private String vendor; + private String key; +} diff --git a/src/main/java/com/bb/service/AsyncSiteService.java b/src/main/java/com/bb/service/AsyncSiteService.java new file mode 100644 index 0000000..4052a2b --- /dev/null +++ b/src/main/java/com/bb/service/AsyncSiteService.java @@ -0,0 +1,297 @@ +package com.bb.service; + +import java.time.Duration; +import java.util.HashMap; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; + +import com.bb.dao.CallBackDao; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class AsyncSiteService { + + @Autowired + SiteService siteService; + + @Autowired + WebClient webClient; + + @Autowired + CallBackDao callBackDao; + + @Async + public void insertEvoDetailProc(String LOG_PREFIX, String betId, JSONObject saveObj, JSONArray saveObjs) { + try { + HashMap detailMap = new HashMap<>(); + detailMap.put("refId", betId); + if(saveObj != null) { + detailMap.put("orgDetail", saveObj.toString()); + } else { + detailMap.put("orgDetail", saveObjs.toString()); + } + detailMap.put("parDetail", null); + log.info(LOG_PREFIX+ "insertEvoDetailProc START"); + int result = siteService.insertEvoDetail(detailMap); + log.info(LOG_PREFIX+ "insertEvoDetailProc END result::" + result); + + } catch(DataIntegrityViolationException de) { + log.error(LOG_PREFIX+ "Duplicate refId"); + } catch (Exception e) { + log.error(LOG_PREFIX+ "[Exception]"+e.toString()); + } + + } + + @Async + public void asyncBalance(String LOG_PREFIX, HashMap siteApiInfo, JSONObject param) { + HttpHeaders headers = new HttpHeaders(); + headers.set("Connection", "close"); + headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE); + headers.add("Accept", MediaType.APPLICATION_JSON_VALUE); + headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + final String baseCbUrl = siteApiInfo.get("siteCbUrl").toString().trim(); + log.info(LOG_PREFIX+ "Callback URL: " + baseCbUrl + "/balance"); + log.info(LOG_PREFIX+ "Body: " + param.toString()); + + try { + param.put("requestAt", Long.toString(System.currentTimeMillis())); + + webClient.post() + .uri(baseCbUrl + "/balance") + .headers(h -> h.addAll(headers)) + .bodyValue(param.toString()) + .exchangeToMono(resp -> resp.toEntity(String.class)) + .timeout(Duration.ofSeconds(2)) + .doOnSuccess(response -> { + if (response != null) { + log.info("{}Response HTTP Status: {}", LOG_PREFIX, response.getStatusCode().value()); + log.info("{}Response Body: {}", LOG_PREFIX, response.getBody()); + } + }) + .doOnError(e -> { + if (e instanceof WebClientRequestException wcre) { + Throwable cause = wcre.getCause(); + + if (hasCause(cause, io.netty.channel.ConnectTimeoutException.class) + || hasCause(cause, java.net.ConnectException.class)) { + + log.error("{}CONNECT_TIMEOUT", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + + } else if (hasCause(cause, io.netty.handler.timeout.ReadTimeoutException.class) + || hasCause(cause, java.net.SocketTimeoutException.class)) { + + log.error("{}READ_TIMEOUT", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + + } else { + log.error("{}WebClientRequestException", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + } + + } else { + log.error("{}Exception: {}", LOG_PREFIX, e.toString()); + } + }) + // ❗ 실제 비동기 실행 트리거 + .subscribe(); + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception e: {}", e.toString()); + } + } + + @Async + public void asyncChangeBalance(String LOG_PREFIX, HashMap siteApiInfo, JSONObject data) { + String tranId = ""; + try { + tranId = data.getString("tranId"); + log.info(LOG_PREFIX+ "data.has(\"isData\"): " + data.has("isData")); + log.info(LOG_PREFIX+ "data.has(\"betKey\"): " + data.has("betKey")); + if(!data.has("isData")) { + data.put("isData", "N"); + } + if(!data.has("betKey")) { + data.put("betKey", tranId); + } + } catch(Exception e) {} + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + header.set("Connection", "close"); + + final String baseCbUrl = siteApiInfo.get("siteCbUrl").toString().trim(); + log.info(LOG_PREFIX+ "Callback URL: " + baseCbUrl + "/changebalance"); + log.info(LOG_PREFIX+ "Body: " + data.toString()); + + try { + webClient.post() + .uri(baseCbUrl + "/changebalance") + .headers(h -> h.addAll(header)) + .bodyValue(data.toString()) + .exchangeToMono(resp -> resp.toEntity(String.class)) + .timeout(Duration.ofSeconds(2)) + .doOnSuccess(response -> { + if (response != null) { + log.info("{}Response HTTP Status: {}", LOG_PREFIX, response.getStatusCode().value()); + log.info("{}Response Body: {}", LOG_PREFIX, response.getBody()); + } + }) + .doOnError(e -> { + if (e instanceof WebClientRequestException wcre) { + Throwable cause = wcre.getCause(); + + if (hasCause(cause, io.netty.channel.ConnectTimeoutException.class) + || hasCause(cause, java.net.ConnectException.class)) { + + log.error("{}CONNECT_TIMEOUT", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + + } else if (hasCause(cause, io.netty.handler.timeout.ReadTimeoutException.class) + || hasCause(cause, java.net.SocketTimeoutException.class)) { + + log.error("{}READ_TIMEOUT", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + + } else { + log.error("{}WebClientRequestException", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + } + + } else { + log.error("{}Exception: {}", LOG_PREFIX, e.toString()); + } + }) + // ❗ 실제 비동기 실행 트리거 + .subscribe(); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception e: {}", e.toString()); + } + } + + @Async + public void asyncChangeBalanceSlot(String LOG_PREFIX, HashMap siteApiInfo, JSONObject data) { + String tranId = ""; + try { + tranId = data.getString("tranId"); + log.info(LOG_PREFIX+ "data.has(\"isData\"): " + data.has("isData")); + log.info(LOG_PREFIX+ "data.has(\"betKey\"): " + data.has("betKey")); + if(!data.has("isData")) { + data.put("isData", "N"); + } + if(!data.has("betKey")) { + data.put("betKey", tranId); + } + } catch(Exception e) {} + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/json"); + header.add("Accept", "application/json"); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + header.set("Connection", "close"); + + final String baseCbUrl = siteApiInfo.get("siteCbUrl").toString().trim(); + log.info(LOG_PREFIX+ "Callback URL: " + baseCbUrl + "/changebalance/slot"); + log.info(LOG_PREFIX+ "Body: " + data.toString()); + + try { + webClient.post() + .uri(baseCbUrl + "/changebalance/slot") + .headers(h -> h.addAll(header)) + .bodyValue(data.toString()) + .exchangeToMono(resp -> resp.toEntity(String.class)) + .timeout(Duration.ofSeconds(2)) + .doOnSuccess(response -> { + if (response != null) { + log.info("{}Response HTTP Status: {}", LOG_PREFIX, response.getStatusCode().value()); + log.info("{}Response Body: {}", LOG_PREFIX, response.getBody()); + } + }) + .doOnError(e -> { + if (e instanceof WebClientRequestException wcre) { + Throwable cause = wcre.getCause(); + + if (hasCause(cause, io.netty.channel.ConnectTimeoutException.class) + || hasCause(cause, java.net.ConnectException.class)) { + + log.error("{}CONNECT_TIMEOUT", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + + } else if (hasCause(cause, io.netty.handler.timeout.ReadTimeoutException.class) + || hasCause(cause, java.net.SocketTimeoutException.class)) { + + log.error("{}READ_TIMEOUT", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + + } else { + log.error("{}WebClientRequestException", LOG_PREFIX); + log.error("{}{}", LOG_PREFIX, wcre.toString()); + } + + } else { + log.error("{}Exception: {}", LOG_PREFIX, e.toString()); + } + }) + // ❗ 실제 비동기 실행 트리거 + .subscribe(); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception e: {}", e.toString()); + } + } + + @Async + public void asyncSportsRadarProc(String LOG_PREFIX, HashMap tranParam, net.sf.json.JSONObject data) { + log.info(LOG_PREFIX + "----- asyncSportsRadarProc START -----"); + HashMap sData = new HashMap<>(); + sData.put("tranId", tranParam.get("tranId").toString()); + sData.put("betId", tranParam.get("refId").toString()); + sData.put("jsonstr", data.toString()); + callBackDao.insertBetRadarLog(sData); + log.info(LOG_PREFIX + "----- asyncSportsRadarProc End -----"); + } + + private boolean hasCause(Throwable e, Class clazz) { + Throwable cause = e; + while (cause != null) { + if (clazz.isInstance(cause)) { + return true; + } + cause = cause.getCause(); + } + return false; + } + + @Async + public void asyncIssueLogSave(String LOG_PREFIX, net.sf.json.JSONObject requestBody, HashMap tranParam) { + log.info(LOG_PREFIX + "----- asyncIssueLogSave START -----"); + HashMap sData = new HashMap<>(); + sData.put("siteIdx", tranParam.get("siteIdx")); + sData.put("memberIdx", tranParam.get("memberIdx")); + sData.put("vendorIdx", tranParam.get("vendorIdx")); + sData.put("tranId", tranParam.get("tranId").toString()); + sData.put("refId", tranParam.get("refId").toString()); + sData.put("callBackType", tranParam.get("tranType").toString()); + sData.put("callBackReqBody", requestBody.toString()); + sData.put("callBackResBody", ""); + siteService.insertSiteCallBackLog(sData); + log.info(LOG_PREFIX + "----- asyncIssueLogSave End -----"); + } +} diff --git a/src/main/java/com/bb/service/BetRadarService.java b/src/main/java/com/bb/service/BetRadarService.java new file mode 100644 index 0000000..b846da8 --- /dev/null +++ b/src/main/java/com/bb/service/BetRadarService.java @@ -0,0 +1,11 @@ +package com.bb.service; + +import java.util.HashMap; + +public interface BetRadarService { + + String gameLaunch(String LOG_PREFIX, HashMap apiInfo); + + String getSportsSetting(String LOG_PREFIX, HashMap apiInfo); + +} diff --git a/src/main/java/com/bb/service/BetRadarServiceImpl.java b/src/main/java/com/bb/service/BetRadarServiceImpl.java new file mode 100644 index 0000000..1f46131 --- /dev/null +++ b/src/main/java/com/bb/service/BetRadarServiceImpl.java @@ -0,0 +1,138 @@ +package com.bb.service; + +import java.util.Collections; +import java.util.HashMap; + +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.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; + +import io.netty.channel.ConnectTimeoutException; +import io.netty.handler.timeout.ReadTimeoutException; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class BetRadarServiceImpl implements BetRadarService { + + @Autowired + WebClient webClient; + + @Override + public String gameLaunch(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "BET_RADAR::GAME_LAUNCH:::"; + String luanchUrl = ""; + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiKey = apiInfo.get("apiKey").toString(); + String apiUsername = apiInfo.get("apiUsername").toString(); + String apiNickname = apiInfo.get("apiNickname").toString(); + String apiDevice = apiInfo.get("apiDevice").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", "Bearer "+apiKey); + + try { + String launchUrl = apiBaseUrl + "/Game/GameLaunch"; + JSONObject launchBody = new JSONObject(); + launchBody.put("Owner", "SmCasino"); + launchBody.put("Provider", "SMSPORTS"); + launchBody.put("Account", apiUsername); + launchBody.put("Name", apiNickname); + launchBody.put("Device", apiDevice); + launchBody.put("isLobby", true); + launchBody.put("Gameid", "1"); + log.info(LOG_PREFIX+ "Url: " + launchUrl); + log.info(LOG_PREFIX+ "Headers: " + headers.toString()); + log.info(LOG_PREFIX+ "Params: " + launchBody.toString()); + + ResponseEntity launchRes = webClient.post() + .uri(launchUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(launchBody.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + JSONObject launchJson = null; + + if(launchRes != null && launchRes.getStatusCode() == HttpStatus.OK) { + log.info(LOG_PREFIX+ "response : " + launchRes.getBody()); + launchJson = new JSONObject(launchRes.getBody()); + luanchUrl = launchJson.getString("url"); + } + + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectException e: {}", e.toString()); + } else if (cause instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException e: {}", e.toString()); + } else { + log.error(LOG_PREFIX+ "ResourceAccessException e: {}", e.toString()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception e: {}", e.toString()); + } + + return luanchUrl; + } + + @Override + public String getSportsSetting(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "BET_RADAR::GET_SPORTS_SETTING:::"; + String url = ""; + String apiBaseUrl = apiInfo.get("apiBaseUrl").toString(); + String apiKey = apiInfo.get("apiKey").toString(); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.set("Authorization", "Bearer "+apiKey); + + try { + String launchUrl = apiBaseUrl + "/Agent/GetSportsSetting"; + log.info(LOG_PREFIX+ "Url: " + launchUrl); + log.info(LOG_PREFIX+ "Headers: " + headers.toString()); + + HttpEntity reqEntity = new HttpEntity(headers); + ResponseEntity launchRes = null; + JSONObject launchJson = null; + launchRes = webClient.get() + .uri(launchUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(launchRes != null && launchRes.getStatusCode() == HttpStatus.OK) { + log.info(LOG_PREFIX+ "response : " + launchRes.getBody()); + launchJson = new JSONObject(launchRes.getBody()); + url = launchJson.getString("url"); + } + + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectException e: {}", e.toString()); + } else if (cause instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException e: {}", e.toString()); + } else { + log.error(LOG_PREFIX+ "ResourceAccessException e: {}", e.toString()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception e: {}", e.toString()); + } + + return url; + } +} diff --git a/src/main/java/com/bb/service/CallBackService.java b/src/main/java/com/bb/service/CallBackService.java new file mode 100644 index 0000000..ff14276 --- /dev/null +++ b/src/main/java/com/bb/service/CallBackService.java @@ -0,0 +1,14 @@ +package com.bb.service; + +import java.util.HashMap; + +import org.codehaus.jettison.json.JSONObject; + +public interface CallBackService { + + JSONObject getBalance(HashMap siteApiInfo, JSONObject parammember); + JSONObject changeBalance(String LOG_PREFIX, HashMap siteApiInfo, JSONObject debit); + JSONObject changeBalanceSlot(String LOG_PREFIX, HashMap siteApiInfo, JSONObject debit); + void insertCallBackErrLog(HashMap logParam); + +} diff --git a/src/main/java/com/bb/service/CallBackServiceImpl.java b/src/main/java/com/bb/service/CallBackServiceImpl.java new file mode 100644 index 0000000..5b9cf36 --- /dev/null +++ b/src/main/java/com/bb/service/CallBackServiceImpl.java @@ -0,0 +1,755 @@ +package com.bb.service; + +import java.util.HashMap; + +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; + +import com.bb.dao.CallBackDao; +import com.bb.util.StringUtils; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class CallBackServiceImpl implements CallBackService { + + @Autowired + private CallBackDao callBackDao; + + @Autowired + private WebClient webClient; // Inject WebClient + + @Override + public JSONObject getBalance(HashMap siteApiInfo, JSONObject parammember) { + + JSONObject res = new JSONObject(); + String siteId = siteApiInfo.get("siteId").toString(); + String memberId = siteApiInfo.get("memberId").toString(); + + HttpHeaders header = new HttpHeaders(); + header.set("Connection", "close"); + header.add("Content-Type", MediaType.APPLICATION_JSON_VALUE); + header.add("Accept", MediaType.APPLICATION_JSON_VALUE); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + + long startTimestamp = System.currentTimeMillis(); + final String LOG_PREFIX = "#-CMM::CB::getBalance::" + siteId + "::" + memberId + "::" + startTimestamp + ":::"; + final String baseCbUrl = siteApiInfo.get("siteCbUrl").toString().trim(); + + try { + parammember.put("requestAt", Long.toString(startTimestamp)); + log.info(LOG_PREFIX + "Callback URL: " + baseCbUrl + "/balance"); + log.info(LOG_PREFIX + "Body: " + parammember.toString()); + + /* + ResponseEntity responseEntity = webClient.post() + .uri(baseCbUrl + "/balance") + .headers(h -> h.addAll(header)) + .bodyValue(parammember.toString()) + .retrieve() + .onStatus(HttpStatusCode::isError, resp -> { + // 에러 상태 코드 처리 (선택사항) + return resp.bodyToMono(String.class) + .flatMap(body -> Mono.error(new RuntimeException("HTTP " + resp.statusCode() + " " + body))); + }) + .toEntity(String.class) + .block(); + */ + + ResponseEntity responseEntity = webClient.post().uri(baseCbUrl + "/balance") + .headers(h -> h.addAll(header)).bodyValue(parammember.toString()) + .exchangeToMono(resp -> resp.toEntity(String.class)).block(); + + int statusCode = responseEntity.getStatusCode().value(); + String responseBody = responseEntity.getBody(); + + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + + log.info(LOG_PREFIX + "Response HTTP Status: " + statusCode); + log.info(LOG_PREFIX + "Response Body: " + responseBody); + + if (responseBody == null || responseBody.isEmpty()) { + log.error(LOG_PREFIX + "Received empty or null response body from WebClient."); + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", statusCode); // Use actual HTTP status code + logParam.put("callBackType", "balance"); + logParam.put("callBackReqBody", parammember.toString()); + logParam.put("callBackResBody", "Empty or null response body"); + logParam.put("errorCode", "EMPTY_RESPONSE"); + logParam.put("errorMsg", "WebClient returned empty or null body for /balance"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", System.currentTimeMillis()); + callBackDao.insertCallBackErrLog(logParam); + return null; + } + + if (statusCode == 200) { + int resultCode = 0; + res = new JSONObject(responseBody); + + if (res.has("result_code")) { + resultCode = res.getInt("result_code"); + } else { + try { + resultCode = res.getInt("resultCode"); + } catch (Exception e) { + resultCode = -9; + } + } + + if (diffTime < -1.8) { + log.error(LOG_PREFIX + "잔액요청 응답시간(1.8초) 초과"); + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", resultCode); + logParam.put("callBackType", "balance"); + logParam.put("callBackReqBody", parammember.toString()); + logParam.put("callBackResBody", res.toString()); + logParam.put("errorCode", "RESPONSE_TIME_OUT"); + logParam.put("errorMsg", "응답시간(1.8초) 초과"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + return null; + } + + if (resultCode != 0) { + // 에러로그넣기 + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", resultCode); + logParam.put("callBackType", "balance"); + logParam.put("callBackReqBody", parammember.toString()); + logParam.put("callBackResBody", res.toString()); + logParam.put("errorCode", "RESULT_CODE_ERR"); + logParam.put("errorMsg", res.toString()); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + log.info(LOG_PREFIX + "code : {}", statusCode); + log.info(LOG_PREFIX + "body: {}", responseBody); + + return null; + } else { + + } + } else { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", statusCode); + logParam.put("callBackType", "balance"); + logParam.put("callBackReqBody", parammember.toString()); + logParam.put("callBackResBody", StringUtils.truncateBodyForDb(responseBody, 1000)); + logParam.put("errorCode", "HTTP_STATUS_CODE_ERR"); + logParam.put("errorMsg", statusCode + " Error"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + log.error(LOG_PREFIX + "code : {}", statusCode); + log.error(LOG_PREFIX + "body: {}", responseBody); + + return null; + } + + } catch (WebClientRequestException e) { // Catch WebClient specific network errors + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + String errCode = ""; + String errMsg = ""; + + Throwable cause = e.getCause(); + if (hasCause(cause, io.netty.channel.ConnectTimeoutException.class) + || hasCause(cause, java.net.ConnectException.class)) { + log.error(LOG_PREFIX + "ConnectException e: CONNECT_TIMEOUT (3000ms)"); // WebClient config timeout is + // 3000ms + log.error(LOG_PREFIX + "ConnectException e: {}", e.toString()); + errCode = "CONNECT_TIMEOUT"; + errMsg = "ConnectException e: CONNECT_TIMEOUT (3000ms)"; + } else if (hasCause(cause, io.netty.handler.timeout.ReadTimeoutException.class) + || hasCause(cause, java.net.SocketTimeoutException.class)) { + log.error(LOG_PREFIX + "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(LOG_PREFIX + "SocketTimeoutException e: {}", e.toString()); + errCode = "READ_TIMEOUT"; + errMsg = "SocketTimeoutException e: READ_TIMEOUT (5000ms)"; + } else { + log.error(LOG_PREFIX + "WebClientRequestException e: 기타 네트워크 예외 발생 발생!!!"); + log.error(LOG_PREFIX + "WebClientRequestException e: {}", e.toString()); + errCode = "NETWORK_ERROR"; + errMsg = "WebClientRequestException e: 기타 네트워크 예외 발생 발생!!!"; + } + + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", null); + logParam.put("callBackType", "balance"); + logParam.put("callBackReqBody", parammember.toString()); + logParam.put("callBackResBody", baseCbUrl + "/balance" + " > 실패"); + logParam.put("errorCode", errCode); + logParam.put("errorMsg", errMsg); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + res = null; + } catch (Exception e) { // General exception catch + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + + log.error(LOG_PREFIX + "Exception e: {}", e.toString()); + e.printStackTrace(); + + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", null); + logParam.put("callBackType", "balance"); + logParam.put("callBackReqBody", parammember.toString()); + logParam.put("callBackResBody", baseCbUrl + "/balance" + " > 실패"); + logParam.put("errorCode", "GENERAL_ERROR"); + logParam.put("errorMsg", "Exception e: " + e.toString()); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + res = null; + } + + return res; + } + + @Override + public JSONObject changeBalance(String LOG_PREFIX, HashMap siteApiInfo, JSONObject data) { + + JSONObject res = new JSONObject(); + String siteId = siteApiInfo.get("siteId").toString(); + String memberId = siteApiInfo.get("memberId").toString(); + String tranId = ""; + final String baseCbUrl = siteApiInfo.get("siteCbUrl").toString().trim(); + + try { + tranId = data.getString("tranId"); + log.info(LOG_PREFIX + "data.has(\"isData\"): " + data.has("isData")); + log.info(LOG_PREFIX + "data.has(\"betKey\"): " + data.has("betKey")); + if (!data.has("isData")) { + data.put("isData", "N"); + } + if (!data.has("betKey")) { + data.put("betKey", tranId); + } + } catch (Exception e) { + } + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", MediaType.APPLICATION_JSON_VALUE); + header.add("Accept", MediaType.APPLICATION_JSON_VALUE); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + header.set("Connection", "close"); + + // 요청시간 + long startTimestamp = System.currentTimeMillis(); + try { + log.info(LOG_PREFIX + "Callback URL: " + baseCbUrl + "/changebalance"); + log.info(LOG_PREFIX + "Body: " + data.toString()); + /* + ResponseEntity responseEntity = webClient.post() + .uri(baseCbUrl + "/changebalance") + .headers(h -> h.addAll(header)) + .bodyValue(data.toString()) + .retrieve() + .toEntity(String.class) + .block(); + */ + ResponseEntity responseEntity = webClient.post().uri(baseCbUrl + "/changebalance") + .headers(h -> h.addAll(header)).bodyValue(data.toString()) + .exchangeToMono(resp -> resp.toEntity(String.class)).block(); + + int statusCode = responseEntity.getStatusCode().value(); + String responseBody = responseEntity.getBody(); // 정상적으로 바디 읽기 가능 + + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + + if (responseBody == null || responseBody.isEmpty()) { + log.error(LOG_PREFIX + "Received empty or null response body from WebClient."); + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", statusCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", "Empty or null response body"); + logParam.put("errorCode", "EMPTY_RESPONSE"); + logParam.put("errorMsg", "WebClient returned empty or null body for /changebalance"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", System.currentTimeMillis()); + callBackDao.insertCallBackErrLog(logParam); + + res = new JSONObject(); + res.put("result_code", -9999); + res.put("error_msg", "EMPTY_RESPONSE"); + + return res; + } + + if (statusCode == 200) { + int resultCode = 0; + res = new JSONObject(responseBody); + if (res.has("result_code")) { + resultCode = res.getInt("result_code"); + } else { + try { + resultCode = res.getInt("resultCode"); + } catch (Exception e) { + resultCode = -9; + } + } + + if (diffTime < -1.8) { + log.error(LOG_PREFIX + "응답시간(1.8초) 초과"); + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", resultCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", res.toString()); + logParam.put("errorCode", "RESPONSE_TIME_OUT"); + logParam.put("errorMsg", "응답시간(1.8초) 초과"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + res = new JSONObject(); + res.put("result_code", -9999); + res.put("error_msg", "RESPONSE_TIME_OUT"); + + return res; + } + + if (resultCode != 0 && resultCode != 98) { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", resultCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", res.toString()); + logParam.put("errorCode", "RESULT_CODE_ERR"); + logParam.put("errorMsg", res.toString()); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + // 에러로그넣기 + log.info(LOG_PREFIX + "changeBalance param : {}", data.toString()); + log.info(LOG_PREFIX + "changeBalance url : {}", baseCbUrl + "/changebalance"); + log.info(LOG_PREFIX + "changeBalance code : {}", statusCode); + log.info(LOG_PREFIX + "changeBalance body: {}", responseBody); + } + } else { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", statusCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", StringUtils.truncateBodyForDb(responseBody, 1000)); + logParam.put("errorCode", "HTTP_STATUS_CODE_ERR"); + logParam.put("errorMsg", statusCode + " Error"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + res = new JSONObject(); + res.put("result_code", -9999); + res.put("error_msg", "HTTP_STATUS_CODE_ERR"); + + return res; + } + + } catch (WebClientRequestException e) { + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + String errCode = ""; + String errMsg = ""; + + Throwable cause = e.getCause(); + if (hasCause(cause, io.netty.channel.ConnectTimeoutException.class) + || hasCause(cause, java.net.ConnectException.class)) { + log.error(LOG_PREFIX + "ConnectException e: CONNECT_TIMEOUT (3000ms)"); + log.error(LOG_PREFIX + "ConnectException e: {}", e.toString()); + errCode = "CONNECT_TIMEOUT"; + errMsg = "ConnectException e: CONNECT_TIMEOUT (3000ms)"; + } else if (hasCause(cause, io.netty.handler.timeout.ReadTimeoutException.class) + || hasCause(cause, java.net.SocketTimeoutException.class)) { + log.error(LOG_PREFIX + "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(LOG_PREFIX + "SocketTimeoutException e: {}", e.toString()); + errCode = "READ_TIMEOUT"; + errMsg = "SocketTimeoutException e: READ_TIMEOUT (5000ms)"; + } else { + log.error(LOG_PREFIX + "WebClientRequestException e: 기타 네트워크 예외 발생 발생!!!"); + log.error(LOG_PREFIX + "WebClientRequestException e: {}", e.toString()); + errCode = "NETWORK_ERROR"; + errMsg = "WebClientRequestException e: 기타 네트워크 예외 발생 발생!!!"; + } + + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", null); + try { + logParam.put("callBackType", data.get("tranType").toString()); + } catch (Exception de) { + logParam.put("callBackType", "changebalance"); + } + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", baseCbUrl + "/changebalance" + " > 실패"); + logParam.put("errorCode", errCode); + logParam.put("errorMsg", errMsg); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + try { + res.put("result_code", -9999); + res.put("error_msg", errMsg); + } catch (JSONException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } catch (Exception e) { + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + + log.error(LOG_PREFIX + "Exception e: {}", e.toString()); + e.printStackTrace(); + + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", null); + try { + logParam.put("callBackType", data.get("tranType").toString()); + } catch (Exception de) { + logParam.put("callBackType", "changebalance"); + } + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", baseCbUrl + "/changebalance" + " > 실패"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + try { + res.put("result_code", -9999); + res.put("error_msg", "GENERAL_ERROR"); + } catch (JSONException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + return res; + } + + + @Override + public JSONObject changeBalanceSlot(String LOG_PREFIX, HashMap siteApiInfo, JSONObject data) { + + JSONObject res = new JSONObject(); + String siteId = siteApiInfo.get("siteId").toString(); + String memberId = siteApiInfo.get("memberId").toString(); + String tranId = ""; + final String baseCbUrl = siteApiInfo.get("siteCbUrl").toString().trim(); + + try { + tranId = data.getString("tranId"); + log.info(LOG_PREFIX + "data.has(\"isData\"): " + data.has("isData")); + log.info(LOG_PREFIX + "data.has(\"betKey\"): " + data.has("betKey")); + if (!data.has("isData")) { + data.put("isData", "N"); + } + if (!data.has("betKey")) { + data.put("betKey", tranId); + } + } catch (Exception e) { + } + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", MediaType.APPLICATION_JSON_VALUE); + header.add("Accept", MediaType.APPLICATION_JSON_VALUE); + header.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" + + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); + header.set("Connection", "close"); + // 요청시간 + long startTimestamp = System.currentTimeMillis(); + log.info(LOG_PREFIX + "Callback URL: " + baseCbUrl + "/changebalance/slot"); + log.info(LOG_PREFIX + "Body: " + data.toString()); + + try { + /* + ResponseEntity responseEntity = webClient.post() + .uri(baseCbUrl + "/changebalance/slot") + .headers(h -> h.addAll(header)) + .bodyValue(data.toString()) + .retrieve().toEntity(String.class) + .block(); + */ + ResponseEntity responseEntity = webClient.post().uri(baseCbUrl + "/changebalance/slot") + .headers(h -> h.addAll(header)).bodyValue(data.toString()) + .exchangeToMono(resp -> resp.toEntity(String.class)).block(); + + int statusCode = responseEntity.getStatusCode().value(); + String responseBody = responseEntity.getBody(); // 정상적으로 바디 읽기 가능 + + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + + int resultCode = 0; + + if (responseBody == null || responseBody.isEmpty()) { + log.error(LOG_PREFIX + "Received empty or null response body from WebClient."); + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", statusCode); + try { + logParam.put("callBackType", data.get("tranType").toString()); + } catch (Exception de) { + logParam.put("callBackType", "changeBalanceSlot"); + } + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", "Empty or null response body"); + logParam.put("errorCode", "EMPTY_RESPONSE"); + logParam.put("errorMsg", "WebClient returned empty or null body for /changebalance/slot"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", System.currentTimeMillis()); + callBackDao.insertCallBackErrLog(logParam); + + res = new JSONObject(); + res.put("result_code", -9999); + res.put("error_msg", "EMPTY_RESPONSE"); + + return res; + } else { + res = new JSONObject(responseBody); + if (res.has("result_code")) { + resultCode = res.getInt("result_code"); + } else { + resultCode = res.getInt("resultCode"); + } + } + + if (statusCode == 200) { + if (diffTime < -1.8) { + log.error(LOG_PREFIX + "응답시간(1.8초) 초과"); + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", resultCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", res.toString()); + logParam.put("errorCode", "RESPONSE_TIME_OUT"); + logParam.put("errorMsg", "응답시간(1.8초) 초과"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + res = new JSONObject(); + res.put("result_code", -9999); + res.put("error_msg", "RESPONSE_TIME_OUT"); + + return res; + } + + if (resultCode != 0 && resultCode != 98) { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", resultCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", res.toString()); + logParam.put("errorCode", "RESULT_CODE_ERR"); + logParam.put("errorMsg", res.toString()); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + // 에러로그넣기 + log.info(LOG_PREFIX + "changeBalanceSlot param : {}", data.toString()); + log.info(LOG_PREFIX + "changeBalanceSlot url : {}", baseCbUrl + "/changebalance/slot"); + log.info(LOG_PREFIX + "changeBalanceSlot code : {}", statusCode); + log.info(LOG_PREFIX + "changeBalanceSlot body: {}", responseBody); + } + } else { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", data.get("vendorIdx")); + logParam.put("statusCode", statusCode); + logParam.put("callBackType", data.get("tranType").toString()); + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", StringUtils.truncateBodyForDb(responseBody, 1000)); + logParam.put("errorCode", "HTTP_STATUS_CODE_ERR"); + logParam.put("errorMsg", statusCode + " Error"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + res = new JSONObject(); + res.put("result_code", -9999); + res.put("error_msg", "HTTP_STATUS_CODE_ERR"); + + return res; + } + + } catch (WebClientRequestException e) { + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + String errCode = ""; + String errMsg = ""; + + Throwable cause = e.getCause(); + if (hasCause(cause, io.netty.channel.ConnectTimeoutException.class) + || hasCause(cause, java.net.ConnectException.class)) { + log.error(LOG_PREFIX + "ConnectException e: CONNECT_TIMEOUT (3000ms)"); + log.error(LOG_PREFIX + "ConnectException e: {}", e.toString()); + errCode = "CONNECT_TIMEOUT"; + errMsg = "ConnectException e: CONNECT_TIMEOUT (3000ms)"; + } else if (hasCause(cause, io.netty.handler.timeout.ReadTimeoutException.class) + || hasCause(cause, java.net.SocketTimeoutException.class)) { + log.error(LOG_PREFIX + "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(LOG_PREFIX + "SocketTimeoutException e: {}", e.toString()); + errCode = "READ_TIMEOUT"; + errMsg = "SocketTimeoutException e: READ_TIMEOUT (5000ms)"; + } else { + log.error(LOG_PREFIX + "WebClientRequestException e: 기타 네트워크 예외 발생 발생!!!"); + log.error(LOG_PREFIX + "WebClientRequestException e: {}", e.toString()); + errCode = "NETWORK_ERROR"; + errMsg = "WebClientRequestException e: 기타 네트워크 예외 발생 발생!!!"; + } + + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", null); + try { + logParam.put("callBackType", data.get("tranType").toString()); + } catch (Exception de) { + logParam.put("callBackType", "changeBalanceSlot"); + } + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", baseCbUrl + "/changebalance/slot" + " > 실패"); + logParam.put("errorCode", errCode); + logParam.put("errorMsg", errMsg); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + try { + res.put("result_code", -9999); + res.put("error_msg", errMsg); + } catch (JSONException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } catch (Exception e) { + long endTimestamp = System.currentTimeMillis(); + double diffTime = (startTimestamp - endTimestamp) / 1000.0; // 두 시간에 차 계산 + + log.error(LOG_PREFIX + "Exception e: {}", e.toString()); + e.printStackTrace(); + + HashMap logParam = new HashMap(); + logParam.put("siteIdx", siteApiInfo.get("siteIdx")); + logParam.put("memberIdx", siteApiInfo.get("memberIdx")); + logParam.put("vendorIdx", null); + logParam.put("statusCode", null); + try { + logParam.put("callBackType", data.get("tranType").toString()); + } catch (Exception de) { + logParam.put("callBackType", "changeBalanceSlot"); + } + logParam.put("tranId", tranId); + logParam.put("callBackReqBody", data.toString()); + logParam.put("callBackResBody", baseCbUrl + "/changebalance/slot" + " > 실패"); + logParam.put("regDate", startTimestamp); + logParam.put("updDate", endTimestamp); + callBackDao.insertCallBackErrLog(logParam); + + try { + res.put("result_code", -9999); + res.put("error_msg", "GENERAL_ERROR"); + } catch (JSONException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + + return res; + } + + @Override + public void insertCallBackErrLog(HashMap logParam) { + // TODO Auto-generated method stub + callBackDao.insertCallBackErrLog(logParam); + } + + private boolean hasCause(Throwable e, Class clazz) { + Throwable cause = e; + while (cause != null) { + if (clazz.isInstance(cause)) { + return true; + } + cause = cause.getCause(); + } + return false; + } + +} \ No newline at end of file diff --git a/src/main/java/com/bb/service/CallBackTestService.java b/src/main/java/com/bb/service/CallBackTestService.java new file mode 100644 index 0000000..7a95561 --- /dev/null +++ b/src/main/java/com/bb/service/CallBackTestService.java @@ -0,0 +1,14 @@ +package com.bb.service; + +import org.codehaus.jettison.json.JSONObject; + +public interface CallBackTestService { + + JSONObject getBalance(String LOG_PREFIX, String siteCallbackUrl, JSONObject param); + JSONObject changeBalance(String LOG_PREFIX, String siteCallbackUrl, JSONObject param); + JSONObject changeBalanceSlot(String LOG_PREFIX, String siteCallbackUrl, JSONObject param); + + JSONObject getTestBalance(String LOG_PREFIX, String memberId, String token, String authorization); + JSONObject getTestChangeBalance(String LOG_PREFIX, String memberId, String token, String authorization); + JSONObject getTestChangeBalanceSlot(String LOG_PREFIX, String memberId, String token, String authorization); +} diff --git a/src/main/java/com/bb/service/CallBackTestServiceImpl.java b/src/main/java/com/bb/service/CallBackTestServiceImpl.java new file mode 100644 index 0000000..f70901c --- /dev/null +++ b/src/main/java/com/bb/service/CallBackTestServiceImpl.java @@ -0,0 +1,504 @@ +package com.bb.service; + +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Collections; + +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.util.UriComponentsBuilder; + +import io.netty.handler.timeout.ReadTimeoutException; +import io.netty.handler.timeout.WriteTimeoutException; +import java.net.ConnectException; +import java.net.SocketTimeoutException; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class CallBackTestServiceImpl implements CallBackTestService { + + @Autowired + private WebClient webClient; + + private HttpHeaders getHeader() { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_JSON); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + return header; + } + + @Override + public JSONObject getBalance(String LOG_PREFIX, String siteCallbackUrl, JSONObject param) { + + JSONObject response = new JSONObject(); + String methodLogPrefix = LOG_PREFIX + "getBalance::"; + long startTimestamp = System.currentTimeMillis(); + + try { + HttpHeaders header = getHeader(); + param.put("requestAt", Long.toString(startTimestamp)); + log.info(methodLogPrefix+ "request: {}", param.toString()); + + String responseBody = this.webClient.post() + .uri(siteCallbackUrl + "/balance") + .headers(headers -> headers.addAll(header)) + .bodyValue(param.toString()) + .exchangeToMono(clientResponse -> { + if (clientResponse.statusCode().is2xxSuccessful()) { + return clientResponse.bodyToMono(String.class); + } else { + return clientResponse.bodyToMono(String.class) + .map(body -> { + try { + JSONObject errorResponse = new JSONObject(); + errorResponse.put("result_code", -99); + errorResponse.put("error_msg", "HTTP_STATUS_CODE_ERR > " + clientResponse.statusCode().value()); + return errorResponse.toString(); + } catch (JSONException e) { + log.error(methodLogPrefix + "Error parsing error response body: {}", e.getMessage()); + return "{\"result_code\":-99, \"error_msg\":\"HTTP_STATUS_CODE_ERR and parsing error\"}"; + } + }); + } + }) + .onErrorResume(ConnectException.class, e -> { + log.error(methodLogPrefix+ "ConnectException e: CONNECT_TIMEOUT (3000ms)"); // WebClient config has 3000ms connect timeout + log.error(methodLogPrefix+ "ConnectException e: {}", e.toString()); + return monoErrorResponse("-99", "CONNECT_TIMEOUT (3000ms)"); + }) + .onErrorResume(ReadTimeoutException.class, e -> { + log.error(methodLogPrefix+ "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); // WebClient config has 5000ms read timeout + log.error(methodLogPrefix+ "SocketTimeoutException e: {}", e.toString()); + return monoErrorResponse("-99", "READ_TIMEOUT (5000ms)"); + }) + .onErrorResume(SocketTimeoutException.class, e -> { // Fallback for other SocketTimeoutException + log.error(methodLogPrefix+ "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(methodLogPrefix+ "SocketTimeoutException e: {}", e.toString()); + return monoErrorResponse("-99", "READ_TIMEOUT (5000ms)"); + }) + .onErrorResume(Exception.class, e -> { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + return monoErrorResponse("-99", "GENERAL_ERROR"); + }) + .block(); // Synchronous call + + long endTimestamp = System.currentTimeMillis(); + double diffTime = (endTimestamp - startTimestamp)/1000.0; //두 시간에 차 계산 + + if (responseBody != null) { + response = new JSONObject(responseBody); + + if (response.has("result_code") == false) { + try { + int resultCode = response.getInt("resultCode"); + response.put("result_code", resultCode); + response.remove("resultCode"); + } catch(Exception e) { + response.put("result_code", -9); + response.put("error_msg", "Not found result_code"); + } + } + + if(diffTime > 0.25) { + log.error(methodLogPrefix+ "잔액요청 응답시간(250ms) 초과"); + response.put("result_code", -99); + response.put("error_msg", "RESPONSE_TIME_OUT [잔액요청 응답시간(250ms) 초과]"); + } + } else { + response.put("result_code", -99); + response.put("error_msg", "EMPTY_RESPONSE_BODY"); + } + + response.put("timeMs", (endTimestamp - startTimestamp)); + + } catch (JSONException e) { + long endTimestamp = System.currentTimeMillis(); + log.error(methodLogPrefix+ "JSONException e: {}", e.toString()); + e.printStackTrace(); + try { + response.put("result_code", -99); + response.put("error_msg", "JSON_PARSE_ERROR"); + response.put("timeMs", (endTimestamp - startTimestamp)); + } catch (JSONException e1) { + e1.printStackTrace(); + } + } catch (Exception e) { // General catch for any other unexpected exceptions + long endTimestamp = System.currentTimeMillis(); + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + e.printStackTrace(); + try { + response.put("result_code", -99); + response.put("error_msg", "GENERAL_ERROR"); + response.put("timeMs", (endTimestamp - startTimestamp)); + } catch (JSONException e1) { + e1.printStackTrace(); + } + } + + log.info(methodLogPrefix+ "response: {}", response.toString()); + return response; + } + + // Helper method to create error Mono + private reactor.core.publisher.Mono monoErrorResponse(String resultCode, String errorMessage) { + JSONObject errorJson = new JSONObject(); + try { + errorJson.put("result_code", Integer.parseInt(resultCode)); + errorJson.put("error_msg", errorMessage); + } catch (JSONException e) { + log.error("Error creating error JSON: {}", e.getMessage()); + } + return reactor.core.publisher.Mono.just(errorJson.toString()); + } + + @Override + public JSONObject changeBalance(String LOG_PREFIX, String siteCallbackUrl, JSONObject param) { + + JSONObject response = new JSONObject(); + String methodLogPrefix = LOG_PREFIX + "changeBalance::"; + long startTimestamp = System.currentTimeMillis(); + log.info(methodLogPrefix+ "request: {}", param.toString()); + + try { + HttpHeaders header = getHeader(); + + String responseBody = this.webClient.post() + .uri(siteCallbackUrl + "/changebalance") + .headers(headers -> headers.addAll(header)) + .bodyValue(param.toString()) + .exchangeToMono(clientResponse -> { + if (clientResponse.statusCode().is2xxSuccessful()) { + return clientResponse.bodyToMono(String.class); + } else { + return clientResponse.bodyToMono(String.class) + .map(body -> { + try { + JSONObject errorResponse = new JSONObject(); + errorResponse.put("result_code", -99); + errorResponse.put("error_msg", "HTTP_STATUS_CODE_ERR > " + clientResponse.statusCode().value()); + return errorResponse.toString(); + } catch (JSONException e) { + log.error(methodLogPrefix + "Error parsing error response body: {}", e.getMessage()); + return "{\"result_code\":-99, \"error_msg\":\"HTTP_STATUS_CODE_ERR and parsing error\"}"; + } + }); + } + }) + .onErrorResume(ConnectException.class, e -> { + log.error(methodLogPrefix+ "ConnectException e: CONNECT_TIMEOUT (3000ms)"); + log.error(methodLogPrefix+ "ConnectException e: {}", e.toString()); + return monoErrorResponse("-99", "CONNECT_TIMEOUT (3000ms)"); + }) + .onErrorResume(ReadTimeoutException.class, e -> { + log.error(methodLogPrefix+ "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(methodLogPrefix+ "SocketTimeoutException e: {}", e.toString()); + return monoErrorResponse("-99", "READ_TIMEOUT (5000ms)"); + }) + .onErrorResume(SocketTimeoutException.class, e -> { + log.error(methodLogPrefix+ "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(methodLogPrefix+ "SocketTimeoutException e: {}", e.toString()); + return monoErrorResponse("-99", "READ_TIMEOUT (5000ms)"); + }) + .onErrorResume(Exception.class, e -> { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + return monoErrorResponse("-99", "GENERAL_ERROR"); + }) + .block(); // Synchronous call + + long endTimestamp = System.currentTimeMillis(); + double diffTime = (endTimestamp - startTimestamp)/1000.0; + + if (responseBody != null) { + response = new JSONObject(responseBody); + + if (response.has("result_code") == false) { + try { + int resultCode = response.getInt("resultCode"); + response.put("result_code", resultCode); + response.remove("resultCode"); + } catch(Exception e) { + response.put("result_code", -9); + response.put("error_msg", "Not found result_code"); + } + } + + if(diffTime > 0.25) { + log.error(methodLogPrefix+ "잔액변경 응답시간(250ms) 초과"); + response.put("result_code", -99); + response.put("error_msg", "RESPONSE_TIME_OUT [잔액변경 응답시간(250ms) 초과]"); + } + } else { + response.put("result_code", -99); + response.put("error_msg", "EMPTY_RESPONSE_BODY"); + } + + response.put("timeMs", (endTimestamp - startTimestamp)); + + } catch (JSONException e) { + long endTimestamp = System.currentTimeMillis(); + log.error(methodLogPrefix+ "JSONException e: {}", e.toString()); + e.printStackTrace(); + try { + response.put("result_code", -99); + response.put("error_msg", "JSON_PARSE_ERROR"); + response.put("timeMs", (endTimestamp - startTimestamp)); + } catch (JSONException e1) { + e1.printStackTrace(); + } + } catch (Exception e) { + long endTimestamp = System.currentTimeMillis(); + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + e.printStackTrace(); + try { + response.put("result_code", -99); + response.put("error_msg", "GENERAL_ERROR"); + response.put("timeMs", (endTimestamp - startTimestamp)); + } catch (JSONException e1) { + e1.printStackTrace(); + } + } + + log.info(methodLogPrefix+ "response: {}", response.toString()); + return response; + } + + @Override + public JSONObject changeBalanceSlot(String LOG_PREFIX, String siteCallbackUrl, JSONObject param) { + + JSONObject response = new JSONObject(); + String methodLogPrefix = LOG_PREFIX + "changeBalanceSlot::"; + long startTimestamp = System.currentTimeMillis(); + log.info(methodLogPrefix+ "request: {}", param.toString()); + + try { + HttpHeaders header = getHeader(); + + String responseBody = this.webClient.post() + .uri(siteCallbackUrl + "/changebalance/slot") + .headers(headers -> headers.addAll(header)) + .bodyValue(param.toString()) + .exchangeToMono(clientResponse -> { + if (clientResponse.statusCode().is2xxSuccessful()) { + return clientResponse.bodyToMono(String.class); + } else { + return clientResponse.bodyToMono(String.class) + .map(body -> { + try { + JSONObject errorResponse = new JSONObject(); + errorResponse.put("result_code", -99); + errorResponse.put("error_msg", "HTTP_STATUS_CODE_ERR > " + clientResponse.statusCode().value()); + return errorResponse.toString(); + } catch (JSONException e) { + log.error(methodLogPrefix + "Error parsing error response body: {}", e.getMessage()); + return "{\"result_code\":-99, \"error_msg\":\"HTTP_STATUS_CODE_ERR and parsing error\"}"; + } + }); + } + }) + .onErrorResume(ConnectException.class, e -> { + log.error(methodLogPrefix+ "ConnectException e: CONNECT_TIMEOUT (3000ms)"); + log.error(methodLogPrefix+ "ConnectException e: {}", e.toString()); + return monoErrorResponse("-99", "CONNECT_TIMEOUT (3000ms)"); + }) + .onErrorResume(ReadTimeoutException.class, e -> { + log.error(methodLogPrefix+ "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(methodLogPrefix+ "SocketTimeoutException e: {}", e.toString()); + return monoErrorResponse("-99", "READ_TIMEOUT (5000ms)"); + }) + .onErrorResume(SocketTimeoutException.class, e -> { + log.error(methodLogPrefix+ "SocketTimeoutException e: READ_TIMEOUT (5000ms)"); + log.error(methodLogPrefix+ "SocketTimeoutException e: {}", e.toString()); + return monoErrorResponse("-99", "READ_TIMEOUT (5000ms)"); + }) + .onErrorResume(Exception.class, e -> { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + return monoErrorResponse("-99", "GENERAL_ERROR"); + }) + .block(); // Synchronous call + + long endTimestamp = System.currentTimeMillis(); + double diffTime = (endTimestamp - startTimestamp)/1000.0; + + if (responseBody != null) { + response = new JSONObject(responseBody); + + if (response.has("result_code") == false) { + try { + int resultCode = response.getInt("resultCode"); + response.put("result_code", resultCode); + response.remove("resultCode"); + } catch(Exception e) { + response.put("result_code", -9); + response.put("error_msg", "Not found result_code"); + } + } + + if(diffTime > 0.25) { + log.error(methodLogPrefix+ "잔액변경 응답시간(250ms) 초과"); + response.put("result_code", -99); + response.put("error_msg", "RESPONSE_TIME_OUT [잔액변경 응답시간(250ms) 초과]"); + } + } else { + response.put("result_code", -99); + response.put("error_msg", "EMPTY_RESPONSE_BODY"); + } + + response.put("timeMs", (endTimestamp - startTimestamp)); + + } catch (JSONException e) { + long endTimestamp = System.currentTimeMillis(); + log.error(methodLogPrefix+ "JSONException e: {}", e.toString()); + e.printStackTrace(); + try { + response.put("result_code", -99); + response.put("error_msg", "JSON_PARSE_ERROR"); + response.put("timeMs", (endTimestamp - startTimestamp)); + } catch (JSONException e1) { + e1.printStackTrace(); + } + } catch (Exception e) { + long endTimestamp = System.currentTimeMillis(); + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + e.printStackTrace(); + try { + response.put("result_code", -99); + response.put("error_msg", "GENERAL_ERROR"); + response.put("timeMs", (endTimestamp - startTimestamp)); + } catch (JSONException e1) { + e1.printStackTrace(); + } + } + + log.info(methodLogPrefix+ "response: {}", response.toString()); + return response; + } + + @Override + public JSONObject getTestBalance(String LOG_PREFIX, String memberId, String token, String authorization) { + + JSONObject responseObj = null; + String methodLogPrefix = LOG_PREFIX; // LOG_PREFIX is not modified in this method, so it's effectively final. + + try { + // 1. 요청 URL + 쿼리 파라미터 + String url = "https://cb.nxapi.cc/api/t1/spdtest/testBalance"; + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(url) + .queryParam("memberId", memberId); + + // 2. 헤더 설정 (토큰 필요 시) + HttpHeaders headers = getHeader(); + headers.set("Authorization", authorization); + headers.set("token", token); + + log.info(methodLogPrefix+ "request: {}", uriBuilder.toUriString()); + + // 3. GET 요청 + String responseBody = this.webClient.get() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .retrieve() + .bodyToMono(String.class) + .onErrorResume(Exception.class, e -> { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + return reactor.core.publisher.Mono.empty(); // Return empty to simulate null body + }) + .block(); // Synchronous call + + if (responseBody != null && !responseBody.isEmpty()) { + log.info(methodLogPrefix+ "response: {}", responseBody); + responseObj = new JSONObject(responseBody); + } + } catch (Exception e) { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + } + + return responseObj; + } + + @Override + public JSONObject getTestChangeBalance(String LOG_PREFIX, String memberId, String token, String authorization) { + + JSONObject responseObj = null; + String methodLogPrefix = LOG_PREFIX; // LOG_PREFIX is not modified in this method, so it's effectively final. + + try { + // 1. 요청 URL + 쿼리 파라미터 + String url = "https://cb.nxapi.cc/api/t1/spdtest/testCasino"; + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(url) + .queryParam("memberId", memberId); + + // 2. 헤더 설정 (토큰 필요 시) + HttpHeaders headers = getHeader(); + headers.set("Authorization", authorization); + headers.set("token", token); + + // 3. GET 요청 + String responseBody = this.webClient.get() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .retrieve() + .bodyToMono(String.class) + .onErrorResume(Exception.class, e -> { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + return reactor.core.publisher.Mono.empty(); // Return empty to simulate null body + }) + .block(); // Synchronous call + + if (responseBody != null && !responseBody.isEmpty()) { + responseObj = new JSONObject(responseBody); + } + } catch (Exception e) { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + } + + return responseObj; + } + + @Override + public JSONObject getTestChangeBalanceSlot(String LOG_PREFIX, String memberId, String token, String authorization) { + + JSONObject responseObj = null; + String methodLogPrefix = LOG_PREFIX; // LOG_PREFIX is not modified in this method, so it's effectively final. + + try { + // 1. 요청 URL + 쿼리 파라미터 + String url = "https://cb.nxapi.cc/api/t1/spdtest/testSlot"; + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(url) + .queryParam("memberId", memberId); + + // 2. 헤더 설정 (토큰 필요 시) + HttpHeaders headers = getHeader(); + headers.set("Authorization", authorization); + headers.set("token", token); + + // 3. GET 요청 + String responseBody = this.webClient.get() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .retrieve() + .bodyToMono(String.class) + .onErrorResume(Exception.class, e -> { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + return reactor.core.publisher.Mono.empty(); // Return empty to simulate null body + }) + .block(); // Synchronous call + + if (responseBody != null && !responseBody.isEmpty()) { + responseObj = new JSONObject(responseBody); + } + } catch (Exception e) { + log.error(methodLogPrefix+ "Exception e: {}", e.toString()); + } + + return responseObj; + } +} diff --git a/src/main/java/com/bb/service/CoinService.java b/src/main/java/com/bb/service/CoinService.java new file mode 100644 index 0000000..06f59b0 --- /dev/null +++ b/src/main/java/com/bb/service/CoinService.java @@ -0,0 +1,10 @@ +package com.bb.service; + +import com.bb.model.CoinVo; + +public interface CoinService { + + void saveCoinInfo(CoinVo coinInfo); + CoinVo getCoinInfo(String coinSymbol, String currency); + +} diff --git a/src/main/java/com/bb/service/CoinServiceImpl.java b/src/main/java/com/bb/service/CoinServiceImpl.java new file mode 100644 index 0000000..a86e8a5 --- /dev/null +++ b/src/main/java/com/bb/service/CoinServiceImpl.java @@ -0,0 +1,32 @@ +package com.bb.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.bb.dao.CoinDao; +import com.bb.dao.SiteDao; +import com.bb.model.CoinVo; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class CoinServiceImpl implements CoinService{ + + + @Autowired + private CoinDao coinDao; + + @Override + public void saveCoinInfo(CoinVo coinInfo) { + coinDao.saveCoinInfo(coinInfo); + } + + + + @Override + public CoinVo getCoinInfo(String coinSymbol, String currency) { + return coinDao.getCoinInfo(coinSymbol, currency); + } + +} diff --git a/src/main/java/com/bb/service/CommonService.java b/src/main/java/com/bb/service/CommonService.java new file mode 100644 index 0000000..44800e2 --- /dev/null +++ b/src/main/java/com/bb/service/CommonService.java @@ -0,0 +1,36 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.BanGameSearch; +import com.bb.model.CmnSearch; +import com.bb.model.GameVo; + +public interface CommonService { + + List> getGameCategoryList(); + + List> getGameVendorList(CmnSearch search); + + List> getBanGameList(BanGameSearch search); + + int insertBanGameInfo(HashMap item); + + int insertNexusGameInfo(HashMap item); + + HashMap getVendorApiInfo(CmnSearch search); + + List getGrandGameList(String LOG_PREFIX, HashMap apiInfo); + + List getSevenGameList(String LOG_PREFIX, HashMap apiInfo); + + List getTplusGameList(String LOG_PREFIX, HashMap apiInfo); + + List getPracpGameList(String LOG_PREFIX, HashMap apiInfo); + + List getNexusGameList(String LOG_PREFIX, HashMap apiInfo); + + List getTowerGameList(String LOG_PREFIX, HashMap apiInfo); + +} diff --git a/src/main/java/com/bb/service/CommonServiceImpl.java b/src/main/java/com/bb/service/CommonServiceImpl.java new file mode 100644 index 0000000..e5ed753 --- /dev/null +++ b/src/main/java/com/bb/service/CommonServiceImpl.java @@ -0,0 +1,571 @@ +package com.bb.service; + +import java.math.BigInteger; +import java.net.SocketTimeoutException; +import java.nio.charset.Charset; +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import io.netty.channel.ConnectTimeoutException; +import io.netty.handler.timeout.ReadTimeoutException; +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import org.springframework.web.util.UriComponentsBuilder; + +import com.bb.dao.CommonDao; +import com.bb.model.BanGameSearch; +import com.bb.model.CmnSearch; +import com.bb.model.GameVo; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class CommonServiceImpl implements CommonService { + + @Autowired + private CommonDao commonDao; + + @Autowired + WebClient webClient; + + @Override + public List> getGameCategoryList() { + // TODO Auto-generated method stub + return commonDao.getGameCategoryList(); + } + + @Override + public List> getGameVendorList(CmnSearch search) { + // TODO Auto-generated method stub + return commonDao.getGameVendorList(search); + } + + @Override + public List> getBanGameList(BanGameSearch search) { + // TODO Auto-generated method stub + return commonDao.getBanGameList(search); + } + + @Override + public int insertBanGameInfo(HashMap item) { + // TODO Auto-generated method stub + return commonDao.insertBanGameInfo(item); + } + + @Override + public int insertNexusGameInfo(HashMap item) { + // TODO Auto-generated method stub + return commonDao.insertNexusGameInfo(item); + } + + @Override + public HashMap getVendorApiInfo(CmnSearch search) { + // TODO Auto-generated method stub + return commonDao.getVendorApiInfo(search); + } + + @Override + public List getGrandGameList(String LOG_PREFIX, HashMap apiInfo) { + List gameList = null; + long vendorIdx = (long) apiInfo.get("vendorIdx"); + String vendorApiUrl = apiInfo.get("vendorApiUrl").toString(); + String vendorApiId = apiInfo.get("vendorApiId").toString(); + String vendorApiKey = apiInfo.get("vendorApiKey").toString(); + String vendorGameCode = apiInfo.get("vendorGameCode").toString(); + String vendorTitle = apiInfo.get("vendorTitle").toString(); + + try { + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/json"); + header.set("Accept", "application/json"); + header.set("Authorization", "Bearer " + vendorApiKey); + + ResponseEntity res = webClient.get() + .uri(vendorApiUrl+"/games?vendor_key="+vendorGameCode) + .headers(h -> h.addAll(header)) + .retrieve() + .toEntity(String.class) + .block(); + JSONObject resJson = new JSONObject(res.getBody()); + JSONArray games = resJson.getJSONArray("data"); + int length = games.length(); + log.info(LOG_PREFIX+"getGrandGameList length: " + length); + gameList = new ArrayList<>(); + + for(int i=0; i getSevenGameList(String LOG_PREFIX, HashMap apiInfo) { + List gameList = null; + long vendorIdx = (long) apiInfo.get("vendorIdx"); + String vendorApiUrl = apiInfo.get("vendorApiUrl").toString(); + String vendorApiId = apiInfo.get("vendorApiId").toString(); + String vendorApiKey = apiInfo.get("vendorApiKey").toString(); + String vendorGameCode = apiInfo.get("vendorGameCode").toString(); + String vendorTitle = apiInfo.get("vendorTitle").toString(); + + try { + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("vendor", vendorGameCode); + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/x-www-form-urlencoded"); + header.set("Authorization", vendorApiKey); + + log.info(LOG_PREFIX+ "getSevenGameList::Request::"+parameters.toString()); + + ResponseEntity responseEntity = webClient.post() + .uri(vendorApiUrl+"/gamelist") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + JSONObject resJson = new JSONObject(responseEntity.getBody()); + log.info(LOG_PREFIX+ "gameList::Response::"+resJson.toString()); + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "gameList::Response::code::"+resJson.getInt("code")); + log.info(LOG_PREFIX+ "gameList::Response::msg::"+resJson.getString("msg")); + JSONArray games = resJson.getJSONArray("data"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i getTplusGameList(String LOG_PREFIX, HashMap apiInfo) { + List gameList = null; + long vendorIdx = (long) apiInfo.get("vendorIdx"); + String vendorApiUrl = apiInfo.get("vendorApiUrl").toString(); + String vendorApiId = apiInfo.get("vendorApiId").toString(); + String vendorApiKey = apiInfo.get("vendorApiKey").toString(); + String vendorGameCode = apiInfo.get("vendorGameCode").toString(); + String vendorTitle = apiInfo.get("vendorTitle").toString(); + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+vendorApiKey); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(vendorApiUrl + "/Games"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("thirdparty", vendorGameCode); + + ResponseEntity response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + JSONObject resJson = new JSONObject(response.getBody()); + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "getTplusGameList result: " + resJson.getString("message")); + gameList = new ArrayList<>(); + JSONArray games = resJson.getJSONArray("data"); + int length = games.length(); + + for(int i=0; i getPracpGameList(String LOG_PREFIX, HashMap apiInfo) { + List gameList = null; + long vendorIdx = (long) apiInfo.get("vendorIdx"); + String vendorApiUrl = apiInfo.get("vendorApiUrl").toString(); + String vendorApiId = apiInfo.get("vendorApiId").toString(); + String vendorApiKey = apiInfo.get("vendorApiKey").toString(); + String vendorGameCode = apiInfo.get("vendorGameCode").toString(); + String vendorTitle = apiInfo.get("vendorTitle").toString(); + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String apiUrl = vendorApiUrl + "/app/game/list?"; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + long timeStampL = System.currentTimeMillis(); + String timeStamp = sdf.format(timeStampL); + apiInfo.put("timeStamp", timeStamp); + + String apiKey = ""; + String apiAgentCode = vendorApiId; + String apiToken = vendorApiKey; + + log.info(LOG_PREFIX+ "apiAgentCode::"+apiAgentCode); + log.info(LOG_PREFIX+ "apiToken::"+apiToken); + log.info(LOG_PREFIX+ "timeStamp::"+timeStamp); + + String textA = apiAgentCode+apiToken+timeStamp; + String salt = apiToken; + String textB = textA+salt; + log.info(LOG_PREFIX+ "textB::"+textB); + + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(textB.getBytes("UTF-8")); + byte[] digest = md.digest(); + apiKey = new BigInteger(1, digest).toString(16).toLowerCase(); + log.info(LOG_PREFIX+ "apiKey::"+apiKey); + } catch(Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + } + + String param = "api_key="+apiKey+"×tamp="+timeStamp + +"&agent_code="+vendorApiId+"&provider_code="+vendorGameCode; + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity.getStatusCodeValue() == 200) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + + JSONArray games = responseObj.getJSONArray("data"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i getNexusGameList(String LOG_PREFIX, HashMap apiInfo) { + List gameList = null; + long vendorIdx = (long) apiInfo.get("vendorIdx"); + String apiBaseUrl = apiInfo.get("vendorApiUrl").toString(); + String apiAgentId = apiInfo.get("vendorApiId").toString(); + String apiAgentSecretKey = apiInfo.get("vendorApiKey").toString(); + String apiVendorKey = apiInfo.get("vendorGameCode").toString(); + String vendorTitle = apiInfo.get("vendorTitle").toString(); + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", apiVendorKey); + bodyObj.put("skin", "SLOT"); + bodyObj.put("type", "Slot"); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String hashCode = getHashCode(LOG_PREFIX, bodyJson, apiAgentSecretKey); + headers.set("hash", hashCode); + headers.set("agent", apiAgentId); + log.info(LOG_PREFIX+ "HttpHeaders::"+headers.toString()); + + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiBaseUrl + "/games"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", apiVendorKey); + params.add("skin", "SLOT"); + params.add("type", "Slot"); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + JSONObject resObj = new JSONObject(response.getBody()); + if(resObj.getInt("code") == 0) { + JSONArray games = resObj.getJSONArray("games"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i getTowerGameList(String LOG_PREFIX, HashMap apiInfo) { + // https://to-api.com/v2/games?site_code=tripleopr01&vendorCode=pp + List gameList = null; + long vendorIdx = (long) apiInfo.get("vendorIdx"); + String vendorTitle = apiInfo.get("vendorTitle").toString(); + String apiBaseUrl = apiInfo.get("vendorApiUrl").toString(); + String apiAgentId = apiInfo.get("vendorApiId").toString(); + String apiAgentSecretKey = apiInfo.get("vendorApiKey").toString(); + String apiVendorKey = apiInfo.get("vendorGameCode").toString(); + + try { + HttpHeaders header = new HttpHeaders(); + header.set("Authorization", apiAgentSecretKey); + + ResponseEntity responseEntity = webClient.get() + .uri(apiBaseUrl+"/v2/games?site_code="+apiAgentId+"&vendorCode="+apiVendorKey) + .headers(h -> h.addAll(header)) + .retrieve() + .toEntity(String.class) + .block(); + + JSONArray games = new JSONArray(responseEntity.getBody()); + int length = games.length(); + log.info(LOG_PREFIX+ "TOWER_API::gameList::Game List length: " + length); + + if(length > 0) { + gameList = new ArrayList<>(); + for(int i=0; i getCreditList(SiteSearch search); + + int getSiteTranListCnt(SiteSearch search); + List getSiteTranList(SiteSearch search); + + int updateStatus(Credit credit); + + int getPointListCnt(SiteSearch search); + + List getPointList(SiteSearch search); + + int getSiteBetListCnt(SiteSearch search); + + List getSiteBetList(SiteSearch search); + + int insertInsure(Insure insure); + + int updateInsureStatus(Insure insure); + + HashMap getMyInsureInfo(int siteIdx); + + int getInsureListCnt(SiteSearch search); + + List getInsureList(SiteSearch search); + + HashMap getCreditSumToday(SiteSearch search); + + void updateSetStatus(Credit credit2); + + String getRoundIdByGsoft(String refId); + + int insertPoint(CreditPoint point); + + int checkRequestTime(Credit credit); + + int getCashInOutListCnt(CashParam param); + + List getCashInOutList(CashParam param); + + int getTransCreditListCnt(CreditSearchVO search); + + List> getTransCreditList(CreditSearchVO search); + + int getTotalTransactionListCnt(CreditSearchVO search); + + List> getTotalTransactionList(CreditSearchVO search); + + int getCreditPointListCnt(@Valid CreditPointSearch search); + + List> getCreditPointList(@Valid CreditPointSearch search); + + int getCreditBetListCnt(@Valid CreditPointSearch search); + + List> getCreditBetList(@Valid CreditPointSearch search); + + int getStatCreditListCnt(SiteSearch search); + + List getStatCreditList(SiteSearch search); + + HashMap getStatCreditTotal(SiteSearch search); + + + + +} diff --git a/src/main/java/com/bb/service/CreditServiceImpl.java b/src/main/java/com/bb/service/CreditServiceImpl.java new file mode 100644 index 0000000..949b184 --- /dev/null +++ b/src/main/java/com/bb/service/CreditServiceImpl.java @@ -0,0 +1,347 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import jakarta.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.stereotype.Service; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.DefaultTransactionDefinition; + +import com.bb.dao.CreditDao; +import com.bb.dao.SiteDao; +import com.bb.model.CashParam; +import com.bb.model.Credit; +import com.bb.model.CreditPoint; +import com.bb.model.CreditPointSearch; +import com.bb.model.CreditSearchVO; +import com.bb.model.Insure; +import com.bb.model.SiteSearch; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class CreditServiceImpl implements CreditService{ + + @Autowired + private CreditDao creditDao; + + @Autowired + private SiteDao siteDao; + + + @Autowired + private DataSourceTransactionManager transactionManager; + + + @Override + public int insertCredit(Credit credit) { + TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + int res = 0; + + long siteCredit = siteDao.getSiteCredit(credit.getTargetSiteId()); + log.info("siteCredit" + siteCredit); + try { + log.info("siteCredit" + siteCredit); + if(credit.getCreditAmt() != 0) { + credit.setPreCreditAmt(siteCredit); + creditDao.insertCredit(credit); + creditDao.insertCreditAiAo(credit); + } + if(credit.getSiteLevel() == 1 + && ("AI".equals(credit.getCreditType()) || "AO".equals(credit.getCreditType())) + ) { + creditDao.updateSubCredit(credit); + } + + res = 0; + transactionManager.commit(txStatus); + } catch(Exception e) { + System.out.println("ERROR"); + System.out.println(e.toString()); + res =-1; + transactionManager.rollback(txStatus); + } finally { + return res; + } + } + + @Override + public int insertCreditByCash(Credit credit) { + TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + int res = 0; + + long siteCredit = siteDao.getSiteCredit(credit.getSiteId()); + HashMap balanceMap = new HashMap<>(); + balanceMap.put("siteIdx", credit.getSiteIdx()); + balanceMap.put("memberIdx", credit.getTargetSiteIdx()); + int userBalance = siteDao.getUserBalance(balanceMap); + try { + log.info("siteCredit" + siteCredit); + credit.setPreCreditAmt(siteCredit); + credit.setPreBalance(userBalance); + log.info("siteCredit" + siteCredit); + creditDao.insertCreditByCash(credit); + creditDao.insertCreditAiAo(credit); + res = 0; + transactionManager.commit(txStatus); + } catch(Exception e) { + System.out.println("ERROR"); + System.out.println(e.toString()); + res =-1; + transactionManager.rollback(txStatus); + } finally { + return res; + } + } + + + @Override + public int getCreditListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditListCnt(search); + } + + + @Override + public List getCreditList(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditList(search); + } + + + @Override + public int getSiteTranListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getSiteTranListCnt(search); + } + + + @Override + public List getSiteTranList(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getSiteTranList(search); + } + + + @Override + public int updateStatus(Credit credit) { + // TODO Auto-generated method stub + int res = 0; + try { + creditDao.updateStatus(credit); + }catch(Exception e) { + + } + return res; + } + + + @Override + public int getPointListCnt(SiteSearch search) { + return creditDao.getPointListCnt(search); + } + + + @Override + public List getPointList(SiteSearch search) { + return creditDao.getPointList(search); + } + + + @Override + public int getSiteBetListCnt(SiteSearch search) { + return creditDao.getSiteBetListCnt(search); + } + + + @Override + public List getSiteBetList(SiteSearch search) { + return creditDao.getSiteBetList(search); + } + + + @Override + public int insertInsure(Insure insure) { + TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + int res = 0; + + + long siteInsure = siteDao.getInsureAmt(insure.getSiteId()); + + log.info("siteInsure" + siteInsure); + try { + + insure.setPreInsureAmt(siteInsure); + + creditDao.insertInsure(insure); + + + res =0; + transactionManager.commit(txStatus); + + }catch(Exception e) { + System.out.println("ERROR"); + System.out.println(e.toString()); + res =-1; + transactionManager.rollback(txStatus); + + + }finally { + return res; + } + } + + + @Override + public int updateInsureStatus(Insure insure) { + + int res = 0; + try { + creditDao.updateInsureStatus(insure); + }catch(Exception e) { + + } + return res; + } + + + @Override + public HashMap getMyInsureInfo(int siteIdx) { + // TODO Auto-generated method stub + return creditDao.getMyInsureInfo(siteIdx); + } + + + @Override + public int getInsureListCnt(SiteSearch search) { + return creditDao.getInsureListCnt(search); + } + + + @Override + public List getInsureList(SiteSearch search) { + return creditDao.getInsureList(search); + } + + + @Override + public HashMap getCreditSumToday(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditSumToday(search); + } + + + @Override + public void updateSetStatus(Credit credit2) { + // TODO Auto-generated method stub + creditDao.updateSetStatus(credit2); + } + + @Override + public String getRoundIdByGsoft(String refId) { + // TODO Auto-generated method stub + return creditDao.getRoundIdByGsoft(refId); + } + + + @Override + public int insertPoint(CreditPoint point) { + // TODO Auto-generated method stub + return creditDao.insertPoint(point); + } + + + @Override + public int checkRequestTime(Credit credit) { + // TODO Auto-generated method stub + return creditDao.checkRequestTime(credit); + } + + @Override + public int getCashInOutListCnt(CashParam param) { + // TODO Auto-generated method stub + return creditDao.getCashInOutListCnt(param); + } + + @Override + public List getCashInOutList(CashParam param) { + // TODO Auto-generated method stub + return creditDao.getCashInOutList(param); + } + + @Override + public int getTransCreditListCnt(CreditSearchVO search) { + // TODO Auto-generated method stub + return creditDao.getTransCreditListCnt(search); + } + + @Override + public List> getTransCreditList(CreditSearchVO search) { + // TODO Auto-generated method stub + return creditDao.getTransCreditList(search); + } + + @Override + public int getTotalTransactionListCnt(CreditSearchVO search) { + // TODO Auto-generated method stub + return creditDao.getTotalTransactionListCnt(search); + } + + @Override + public List> getTotalTransactionList(CreditSearchVO search) { + // TODO Auto-generated method stub + return creditDao.getTotalTransactionList(search); + } + + @Override + public int getCreditPointListCnt(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditPointListCnt(search); + } + + @Override + public List> getCreditPointList(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditPointList(search); + } + + @Override + public int getCreditBetListCnt(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditBetListCnt(search); + } + + @Override + public List> getCreditBetList(@Valid CreditPointSearch search) { + // TODO Auto-generated method stub + return creditDao.getCreditBetList(search); + } + + @Override + public int getStatCreditListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getStatCreditListCnt(search); + } + + @Override + public List getStatCreditList(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getStatCreditList(search); + } + + @Override + public HashMap getStatCreditTotal(SiteSearch search) { + // TODO Auto-generated method stub + return creditDao.getStatCreditTotal(search); + } + + + + + +} diff --git a/src/main/java/com/bb/service/EvoJsonService.java b/src/main/java/com/bb/service/EvoJsonService.java new file mode 100644 index 0000000..e7b4f7e --- /dev/null +++ b/src/main/java/com/bb/service/EvoJsonService.java @@ -0,0 +1,109 @@ +package com.bb.service; + +import org.springframework.stereotype.Service; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class EvoJsonService { + + private final ObjectMapper mapper; + + public EvoJsonService(ObjectMapper objectMapper) { + this.mapper = objectMapper; + } + + public String convert(String rawJson) { + try { + JsonNode root = mapper.readTree(rawJson); + ObjectNode unified = mapper.createObjectNode(); + + // 1. Transaction ID + String txId = root.has("id") ? root.get("id").asText() : ""; + unified.put("transaction_id", txId); + + // 2. Game Info + ObjectNode gameInfo = mapper.createObjectNode(); + gameInfo.put("provider", root.path("gameProvider").asText("evolution")); + gameInfo.put("category", root.path("gameType").asText("unknown")); + gameInfo.put("started_at", root.path("startedAt").asText("")); + gameInfo.put("settled_at", root.path("settledAt").asText("")); + unified.set("game_info", gameInfo); + + // 3. Game Result (가변적인 결과 처리) + ObjectNode gameResult = mapper.createObjectNode(); + JsonNode rawResult = root.path("result"); + + // outcome 추출 (문자열 혹은 숫자 대응) + if (rawResult.has("outcome")) { + gameResult.set("outcome", rawResult.get("outcome")); + } + + // 상세 데이터 (Payload) 구성 + ObjectNode payload = mapper.createObjectNode(); + String gameType = gameInfo.get("category").asText(); + + switch (gameType) { + case "baccarat": + case "dragontiger": + if (rawResult.has("player")) payload.set("player", rawResult.get("player")); + if (rawResult.has("banker")) payload.set("banker", rawResult.get("banker")); + if (rawResult.has("dragon")) payload.set("dragon", rawResult.get("dragon")); + if (rawResult.has("tiger")) payload.set("tiger", rawResult.get("tiger")); + break; + case "sicbo": + case "lightningdice": + ArrayNode dices = mapper.createArrayNode(); + if (rawResult.has("first")) dices.add(rawResult.get("first")); + if (rawResult.has("second")) dices.add(rawResult.get("second")); + if (rawResult.has("third")) dices.add(rawResult.get("third")); + payload.set("dices", dices); + break; + case "crazytime": + case "funkytime": + case "lightningstorm": + if (rawResult.has("wheelResult")) payload.set("wheel", rawResult.get("wheelResult")); + break; + case "racetrack": + if (rawResult.has("lanes")) payload.set("rankings", rawResult.get("lanes")); + break; + case "crazyballs": + case "monopolybigballer": + if (rawResult.has("drawnBalls")) payload.set("drawn_balls", rawResult.get("drawnBalls")); + break; + default: + // 정의되지 않은 게임은 결과 객체 통째로 저장 + payload.set("raw_details", rawResult); + } + gameResult.set("payload", payload); + unified.set("game_result", gameResult); + + // 4. Bet Details (참가자 배열에서 추출) + ArrayNode betDetails = mapper.createArrayNode(); + JsonNode participants = root.path("participants"); + if (participants.isArray() && participants.size() > 0) { + JsonNode bets = participants.get(0).path("bets"); + for (JsonNode bet : bets) { + ObjectNode simplifiedBet = mapper.createObjectNode(); + simplifiedBet.put("code", bet.path("code").asText()); + simplifiedBet.put("stake", bet.path("stake").asLong()); + simplifiedBet.put("payout", bet.path("payout").asDouble()); + simplifiedBet.put("placed_at", bet.path("placedOn").asText()); + betDetails.add(simplifiedBet); + } + } + unified.set("bet_details", betDetails); + + return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(unified); + + } catch (Exception e) { + return "{\"error\": \"데이터 변환 중 오류 발생: " + e.getMessage() + "\"}"; + } + } +} diff --git a/src/main/java/com/bb/service/GrandService.java b/src/main/java/com/bb/service/GrandService.java new file mode 100644 index 0000000..9ae6575 --- /dev/null +++ b/src/main/java/com/bb/service/GrandService.java @@ -0,0 +1,15 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONObject; + +import com.bb.model.Game; + +public interface GrandService { + String getLaunchUrl(HashMap venderInfo); + List getGameList(HashMap venderInfo); + JSONObject getDetail(String LOG_PREFIX, HashMap apiInfo); + +} diff --git a/src/main/java/com/bb/service/GrandServiceImpl.java b/src/main/java/com/bb/service/GrandServiceImpl.java new file mode 100644 index 0000000..b05a0d5 --- /dev/null +++ b/src/main/java/com/bb/service/GrandServiceImpl.java @@ -0,0 +1,133 @@ +package com.bb.service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import org.springframework.web.reactive.function.client.WebClient; + + +import com.bb.dao.SiteDao; +import com.bb.model.Game; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class GrandServiceImpl implements GrandService { + + @Autowired + private SiteDao siteDao; + + @Autowired + WebClient webClient; + + @Override + public String getLaunchUrl(HashMap venderInfo) { + + + JSONObject params = new JSONObject(); + try { + params.put("vendor_key", venderInfo.get("vendor_key").toString()); + params.put("game_key", venderInfo.get("game_key").toString()); + params.put("username", venderInfo.get("username").toString()); + params.put("nickname", venderInfo.get("username").toString()); + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/json"); + header.set("Accept", "application/json"); + header.set("Authorization", "Bearer " + venderInfo.get("vendorApiKey").toString()); + log.info(venderInfo.get("vendorApiUrl").toString()+"/game-url"); + log.info(params.toString()); + + ResponseEntity res = webClient.post() + .uri(venderInfo.get("vendorApiUrl").toString()+"/game-url") + .headers(h -> h.addAll(header)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(res.getBody()); + JSONObject resJson = new JSONObject(res.getBody()); + JSONObject resData = resJson.getJSONObject("data"); + return resData.getString("url"); + }catch(Exception e) { + log.info("[ERROR] Grand pragmatic getLaunchUrl : "+ venderInfo.get("username").toString()+" - " + e.toString()); + return null; + } + + } + + @Override + public List getGameList(HashMap venderInfo) { + List gameList = null; + try { + + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/json"); + header.set("Accept", "application/json"); + header.set("Authorization", "Bearer " + venderInfo.get("vendorApiKey").toString()); + + ResponseEntity res = webClient.get() + .uri(venderInfo.get("vendorApiUrl").toString()+"/games?vendor_key="+venderInfo.get("vendor_key").toString()) + .headers(h -> h.addAll(header)) + .retrieve() + .toEntity(String.class) + .block(); + + JSONObject resJson = new JSONObject(res.getBody()); + + //log.info(resJson.toString()); + JSONArray games = resJson.getJSONArray("data"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i apiInfo) { + // TODO Auto-generated method stub + return null; + } + + + + +} diff --git a/src/main/java/com/bb/service/GsoftService.java b/src/main/java/com/bb/service/GsoftService.java new file mode 100644 index 0000000..577f772 --- /dev/null +++ b/src/main/java/com/bb/service/GsoftService.java @@ -0,0 +1,22 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONObject; + +import com.bb.model.Game; +import com.bb.model.GsoftApiInfo; + +public interface GsoftService { + + JSONObject getBalanceUser(GsoftApiInfo apiInfo); + + JSONObject depositUser(GsoftApiInfo apiInfo, int amount); + + JSONObject withdrawUser(GsoftApiInfo apiInfo); + + List gameList(GsoftApiInfo apiInfo); + + String getComanyBalance(HashMap vendor); +} diff --git a/src/main/java/com/bb/service/GsoftServiceImpl.java b/src/main/java/com/bb/service/GsoftServiceImpl.java new file mode 100644 index 0000000..f1ece2c --- /dev/null +++ b/src/main/java/com/bb/service/GsoftServiceImpl.java @@ -0,0 +1,458 @@ +package com.bb.service; + +import java.net.SocketTimeoutException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONException; +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.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; + +import com.bb.dao.SiteDao; +import com.bb.model.Game; +import com.bb.model.GsoftApiInfo; +import com.bb.model.VendorChangeBalanceLogVo; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class GsoftServiceImpl implements GsoftService { + + @Autowired + private SiteDao siteDao; + + @Autowired + WebClient webClient; + + + @Override + public JSONObject getBalanceUser(GsoftApiInfo apiInfo) { + JSONObject userBalanceJson = null; + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("Authorization", apiInfo.getApiAuthKey()); + + JSONObject params = new JSONObject(); + params.put("userid", apiInfo.getUserId()); + params.put("amount", 0); + params.put("type", "0"); + + String balanceUrl = apiInfo.getApiBaseUrl() + "/csapi/amount"; + log.info("## GSOFT API ## balanceUrl: " + balanceUrl); + log.info("## GSOFT API ## balanceHeaders: " + headers.toString()); + log.info("## GSOFT API ## balanceParams: " + params.toString()); + + ResponseEntity res = webClient.post() + .uri(balanceUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info("## GSOFT API ## Request \"/csapi/amount\" res : " + res.getBody()); + userBalanceJson = new JSONObject(res.getBody()); + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("[InterruptedException]"+rae.getMessage()); + } + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(str); + } catch (Exception e) { + log.error(e.toString()); + e.printStackTrace(); + } + + return userBalanceJson; + } + + @Override + public JSONObject depositUser(GsoftApiInfo apiInfo, int amount) { + JSONObject depositJson = null; + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("Authorization", apiInfo.getApiAuthKey()); + + JSONObject params = new JSONObject(); + params.put("userid", apiInfo.getUserId()); + params.put("amount", amount); + params.put("type", "1"); + + String depositUrl = apiInfo.getApiBaseUrl() + "/csapi/amount"; + log.info("## GSOFT API ## depositUrl: " + depositUrl); + log.info("## GSOFT API ## depositHeaders: " + headers.toString()); + log.info("## GSOFT API ## depositParams: " + params.toString()); + + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "depositParams::"+params.toString()); + + ResponseEntity res = webClient.post() + .uri(depositUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + log.info("## GSOFT API ## Request \"/csapi/amount\" res : " + res.getBody()); + depositJson = new JSONObject(res.getBody()); + + if(depositJson.getInt("result") == 1) { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount) + .reqAt(apiInfo.getReqAt()) + .reqStatus("SUCC") + .reqMsg(depositJson.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } else { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(depositJson.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[InterruptedException]"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[HttpClientErrorException]"+str); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(str) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + + } catch (Exception e) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[Exception]"+e.toString()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("Exception e") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + return depositJson; + } + + @Override + public JSONObject withdrawUser(GsoftApiInfo apiInfo) { + JSONObject withdrawJson = null; + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("Authorization", apiInfo.getApiAuthKey()); + + JSONObject params = new JSONObject(); + params.put("userid", apiInfo.getUserId()); + params.put("amount", 0); + params.put("type", "3"); + + String withdrawUrl = apiInfo.getApiBaseUrl() + "/csapi/amount"; + log.info("## GSOFT API ## withdrawUrl: " + withdrawUrl); + log.info("## GSOFT API ## withdrawHeaders: " + headers.toString()); + log.info("## GSOFT API ## withdrawParams: " + params.toString()); + + ResponseEntity res = webClient.post() + .uri(withdrawUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + log.info("## GSOFT API ## Request \"/csapi/amount\" res : " + res.getBody()); + withdrawJson = new JSONObject(res.getBody()); + + if(withdrawJson.getInt("result") == 1) { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("SUCC") + .reqMsg(withdrawJson.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } else { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(withdrawJson.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[InterruptedException]"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[HttpClientErrorException]"+str); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(str) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + + } catch (Exception e) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::gsoft::"+ "[Exception]"+e.toString()); + e.printStackTrace(); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("gsoft") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("Exception e") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + return withdrawJson; + } + + @Override + public List gameList(GsoftApiInfo apiInfo) { + + List gameList = null; + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.set("Authorization", apiInfo.getApiAuthKey()); + + JSONObject params = new JSONObject(); + params.put("type", 2); + params.put("gameid", apiInfo.getGameId()); + params.put("code", apiInfo.getCode()); + + String slotUrl = apiInfo.getApiBaseUrl() + "/csapi/Provider"; + log.info("## GSOFT API ## slotUrl: " + slotUrl); + log.info("## GSOFT API ## slotHeaders: " + headers.toString()); + log.info("## GSOFT API ## slotParams: " + params.toString()); + + ResponseEntity res = webClient.post() + .uri(slotUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); +// log.info("## GSOFT API ## Request \"/csapi/amount\" res : " + res.getBody()); + JSONObject slotJson = new JSONObject(res.getBody()); + + if(slotJson.getInt("result") == 1) { + log.info("## GSOFT API ## Game List msg: " + slotJson.getString("msg")); + JSONArray games = slotJson.getJSONArray("data"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i res = webClient.post() + .uri(balanceUrl) + .headers(h -> h.addAll(headers)) // 기존의 HttpHeaders 객체 적용 + .retrieve() + .toEntity(String.class) // Mono>를 반환 + .block(); + + log.info("## GSOFT API ## Request \"/csapi/amount\" res : " + res.getBody()); + userBalanceJson = new JSONObject(res.getBody()); + balance = userBalanceJson.get("balance2").toString(); + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("[InterruptedException]"+rae.getMessage()); + } + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(str); + } catch (Exception e) { + log.error(e.toString()); + e.printStackTrace(); + } + + return balance; + } + +} diff --git a/src/main/java/com/bb/service/NexusService.java b/src/main/java/com/bb/service/NexusService.java new file mode 100644 index 0000000..67b4f07 --- /dev/null +++ b/src/main/java/com/bb/service/NexusService.java @@ -0,0 +1,31 @@ +package com.bb.service; + +import java.util.List; + +import org.codehaus.jettison.json.JSONObject; + +import com.bb.model.Game; +import com.bb.model.NexusApiInfo; + +public interface NexusService { + + List gameList(String LOG_PREFIX, NexusApiInfo apiInfo); + + JSONObject createUser(String LOG_PREFIX, NexusApiInfo apiInfo); + + JSONObject userBalance(String LOG_PREFIX, NexusApiInfo apiInfo); + + JSONObject userDeposit(String LOG_PREFIX, NexusApiInfo apiInfo, int amount); + + JSONObject userWithdraw(String LOG_PREFIX, NexusApiInfo apiInfo, int amount); + + JSONObject userWithdrawAll(String LOG_PREFIX, NexusApiInfo apiInfo); + + String gameStart(String LOG_PREFIX, NexusApiInfo apiInfo); + + JSONObject getDetail(String LOG_PREFIX, NexusApiInfo apiInfo, String trxId); + + JSONObject getDetailUrl(String LOG_PREFIX, NexusApiInfo apiInfo, String trxId); + + JSONObject getTransaction(String LOG_PREFIX, NexusApiInfo apiInfo); +} diff --git a/src/main/java/com/bb/service/NexusServiceImpl.java b/src/main/java/com/bb/service/NexusServiceImpl.java new file mode 100644 index 0000000..10bfc02 --- /dev/null +++ b/src/main/java/com/bb/service/NexusServiceImpl.java @@ -0,0 +1,944 @@ +package com.bb.service; + +import java.net.SocketTimeoutException; +import java.nio.charset.Charset; +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import io.netty.channel.ConnectTimeoutException; +import io.netty.handler.timeout.ReadTimeoutException; +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import org.springframework.web.util.UriComponentsBuilder; + +import com.bb.dao.CallBackDao; +import com.bb.dao.SiteDao; +import com.bb.model.Game; +import com.bb.model.NexusApiInfo; +import com.bb.model.VendorChangeBalanceLogVo; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class NexusServiceImpl implements NexusService { + + /** + * Nexus 공통 API에 필요한 서비스 + */ + + @Autowired + WebClient webClient; + + @Autowired + private SiteDao siteDao; + + @Autowired + CallBackDao callBackDao; + + private HttpHeaders getHeader(String LOG_PREFIX, NexusApiInfo apiInfo, String bodyJson) { + LOG_PREFIX = LOG_PREFIX + "::getHeader::"; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String hashCode = getHashCode(LOG_PREFIX, bodyJson, apiInfo.getAgentSecretKey()); + headers.set("hash", hashCode); + headers.set("agent", apiInfo.getAgentId()); + log.info(LOG_PREFIX+ "HttpHeaders::"+headers.toString()); + + return headers; + } + + + private String getHashCode(String LOG_PREFIX, String body, String secretKey) { + String hashCode = ""; + LOG_PREFIX = LOG_PREFIX + "::getHashCode::"; + try { + // Json String Body + Secret Key + String result = body + secretKey; + // String result = "{\"username\":\"057007mptest01\",\"nickname\":\"007mptest01\",\"siteUsername\":\"057007mptest01\"}"; + log.info(LOG_PREFIX+ "Body + Secret Key::"+result); + // SHA-256 Hash make + MessageDigest digestObj = MessageDigest.getInstance("SHA-256"); + byte[] hash_data = digestObj.digest(result.getBytes("UTF-8")); + + // Base64 encoding + hashCode = Base64.getEncoder().encodeToString(hash_data); + log.info(LOG_PREFIX+ "hashCode::"+hashCode); + } catch(Exception e) { + log.error("#-NexusService::getHashCode::Exception::"+e.getMessage()); + } + + return hashCode; + } + + + @Override + public List gameList(String LOG_PREFIX, NexusApiInfo apiInfo) { + List gameList = null; + LOG_PREFIX = LOG_PREFIX + "::gameList::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", apiInfo.getVendorKey()); + bodyObj.put("skin", apiInfo.getSkin()); + bodyObj.put("type", apiInfo.getType()); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/games"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", apiInfo.getVendorKey()); + params.add("skin", apiInfo.getSkin()); + params.add("type", apiInfo.getType()); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + JSONObject resObj = new JSONObject(response.getBody()); + if(resObj.getInt("code") == 0) { + JSONArray games = resObj.getJSONArray("games"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getUsername()); + params.add("nickname", apiInfo.getNickname()); + params.add("siteUsername", apiInfo.getSiteUsername()); + log.info(LOG_PREFIX+ "entity::"+params.toString()); + log.info(LOG_PREFIX+ "headers::"+headers.toString()); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(LOG_PREFIX+ "Response::"+response.getBody().toString()); + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public JSONObject userBalance(String LOG_PREFIX, NexusApiInfo apiInfo) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "::userBalance::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("username", apiInfo.getUsername()); + bodyObj.put("siteUsername", apiInfo.getSiteUsername()); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/balance"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getUsername()); + params.add("siteUsername", apiInfo.getSiteUsername()); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public JSONObject userDeposit(String LOG_PREFIX, NexusApiInfo apiInfo, int amount) { + JSONObject jsonObj = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long reqAtL = System.currentTimeMillis(); + String reqAt = sdf.format(reqAtL); + LOG_PREFIX = LOG_PREFIX + "::userDeposit::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("username", apiInfo.getUsername()); + bodyObj.put("siteUsername", apiInfo.getSiteUsername()); + bodyObj.put("amount", amount); + bodyObj.put("requestKey", Long.toString(reqAtL)); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/deposit"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getUsername()); + params.add("siteUsername", apiInfo.getSiteUsername()); + params.add("amount", amount); + params.add("requestKey", Long.toString(reqAtL)); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + if(jsonObj.getInt("code") == 0) { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("deposit") + .amount(amount) + .reqAt(reqAt) + .reqStatus("SUCC") + .reqMsg("code:"+jsonObj.getInt("code")+", message:"+jsonObj.getDouble("balance")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } else { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("deposit") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("code:"+jsonObj.getInt("code")+", message:"+jsonObj.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("deposit") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg(e.getResponseBodyAsString()) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("deposit") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("deposit") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("Exception e:"+e.getMessage()) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public JSONObject userWithdraw(String LOG_PREFIX, NexusApiInfo apiInfo, int amount) { + JSONObject jsonObj = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long reqAtL = System.currentTimeMillis(); + String reqAt = sdf.format(reqAtL); + LOG_PREFIX = LOG_PREFIX + "::userWithdraw::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("username", apiInfo.getUsername()); + bodyObj.put("siteUsername", apiInfo.getSiteUsername()); + bodyObj.put("amount", amount); + bodyObj.put("requestKey", Long.toString(reqAtL)); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/withdraw"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getUsername()); + params.add("siteUsername", apiInfo.getSiteUsername()); + params.add("amount", amount); + params.add("requestKey", Long.toString(reqAtL)); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + if(jsonObj.getInt("code") == 0) { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdraw") + .amount(amount) + .reqAt(reqAt) + .reqStatus("SUCC") + .reqMsg("code:"+jsonObj.getInt("code")+", message:"+jsonObj.getDouble("balance")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } else { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdraw") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("code:"+jsonObj.getInt("code")+", message:"+jsonObj.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdraw") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg(e.getResponseBodyAsString()) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdraw") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdraw") + .amount(amount) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("Exception e:"+e.getMessage()) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public JSONObject userWithdrawAll(String LOG_PREFIX, NexusApiInfo apiInfo) { + JSONObject jsonObj = null; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long reqAtL = System.currentTimeMillis(); + String reqAt = sdf.format(reqAtL); + LOG_PREFIX = LOG_PREFIX + "::userWithdrawAll::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("username", apiInfo.getUsername()); + bodyObj.put("siteUsername", apiInfo.getSiteUsername()); + bodyObj.put("amount", 0); + bodyObj.put("requestKey", Long.toString(reqAtL)); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/withdraw"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getUsername()); + params.add("siteUsername", apiInfo.getSiteUsername()); + params.add("amount", 0); + params.add("requestKey", Long.toString(reqAtL)); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + if(jsonObj.getInt("code") == 0) { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(reqAt) + .reqStatus("SUCC") + .reqMsg("code:"+jsonObj.getInt("code")+", message:"+jsonObj.getDouble("balance")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } else { + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("code:"+jsonObj.getInt("code")+", message:"+jsonObj.getString("msg")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg(e.getResponseBodyAsString()) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("nexus") + .vendorApiId(apiInfo.getAgentId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(reqAt) + .reqStatus("FAIL") + .reqMsg("Exception e:"+e.getMessage()) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public String gameStart(String LOG_PREFIX, NexusApiInfo apiInfo) { + String luanchUrl = null; + long reqAtL = System.currentTimeMillis(); + LOG_PREFIX = LOG_PREFIX + "::gameStart::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", apiInfo.getVendorKey()); + bodyObj.put("gameKey", apiInfo.getGameKey()); + bodyObj.put("siteUsername", apiInfo.getSiteUsername()); + bodyObj.put("nickname", apiInfo.getNickname()); + bodyObj.put("ip", apiInfo.getIp()); + bodyObj.put("language", apiInfo.getLanguage()); + bodyObj.put("platform", apiInfo.getPlatform()); + bodyObj.put("requestKey", Long.toString(reqAtL)); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/play"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", apiInfo.getVendorKey()); + params.add("gameKey", apiInfo.getGameKey()); + params.add("siteUsername", apiInfo.getSiteUsername()); + params.add("nickname", apiInfo.getNickname()); + params.add("ip", apiInfo.getIp()); + params.add("language", apiInfo.getLanguage()); + params.add("platform", apiInfo.getPlatform()); + params.add("requestKey", Long.toString(reqAtL)); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + JSONObject resObj = new JSONObject(response.getBody()); + if(resObj.getInt("code") == 0) { + log.info(LOG_PREFIX+ "code::" + resObj.getInt("code")); + log.info(LOG_PREFIX+ "url::" + resObj.getString("url")); + log.info(LOG_PREFIX+ "userId::" + resObj.getInt("userId")); + //log.info(LOG_PREFIX+ "balance::" + resObj.getInt("balance")); + luanchUrl = resObj.getString("url"); + } else { + + + try { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", apiInfo.getSiteIdx()); + logParam.put("memberIdx", apiInfo.getMemberIdx()); + logParam.put("vendorIdx", apiInfo.getVendorKey()); + logParam.put("statusCode",resObj.getInt("code")); + logParam.put("callBackType","LAUNCH"); + logParam.put("callBackReqBody",uriBuilder.toUriString()); + logParam.put("callBackResBody",resObj.getString("msg")); + logParam.put("errorCode", ""); + logParam.put("errorMsg", ""); + logParam.put("regDate",System.currentTimeMillis()); + logParam.put("updDate",null); + callBackDao.insertCallBackErrLog(logParam); + }catch(Exception e) { + + + } + + + log.error(LOG_PREFIX+ "code::" + resObj.getInt("code")); + log.error(LOG_PREFIX+ "message::" + resObj.getString("msg")); + } + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + + try { + HashMap logParam = new HashMap(); + logParam.put("siteIdx", apiInfo.getSiteIdx()); + logParam.put("memberIdx", apiInfo.getMemberIdx()); + logParam.put("vendorIdx", apiInfo.getVendorKey()); + logParam.put("statusCode",500); + logParam.put("callBackType","LAUNCH"); + logParam.put("callBackReqBody",apiInfo.toString()); + logParam.put("callBackResBody",rae.getMessage()); + logParam.put("errorCode", ""); + logParam.put("errorMsg", ""); + logParam.put("regDate",System.currentTimeMillis()); + logParam.put("updDate",null); + callBackDao.insertCallBackErrLog(logParam); + }catch(Exception e) { + + + } + + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + e.printStackTrace(); + } + + return luanchUrl; + } + + + @Override + public JSONObject getDetail(String LOG_PREFIX, NexusApiInfo apiInfo, String trxId) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "::getDetail::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("transactionKeys", trxId); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/transaction/detail"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("transactionKeys", trxId); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public JSONObject getDetailUrl(String LOG_PREFIX, NexusApiInfo apiInfo, String trxId) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "::getDetailUrl::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("transactionKey", trxId); + bodyObj.put("lang", "ko"); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/getdetailurl"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("transactionKey", trxId); + params.add("lang", "ko"); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + + @Override + public JSONObject getTransaction(String LOG_PREFIX, NexusApiInfo apiInfo) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "::getTransaction::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("vendorKey", "evolution_casino"); + bodyObj.put("sdate", apiInfo.getSdate()); + bodyObj.put("edate", apiInfo.getEdate()); + bodyObj.put("username", apiInfo.getUsername()); + bodyObj.put("limit", apiInfo.getLimit()); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::"+bodyJson); + + HttpHeaders headers = getHeader(LOG_PREFIX, apiInfo, bodyJson); + UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/transaction"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("vendorKey", "evolution_casino"); + params.add("sdate", apiInfo.getSdate()); + params.add("edate", apiInfo.getEdate()); + params.add("username", apiInfo.getUsername()); + params.add("limit", apiInfo.getLimit()); + + ResponseEntity response = webClient.post() + .uri(uriBuilder.toUriString()) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+e.getMessage()); + log.error(LOG_PREFIX+ "status code::"+e.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "ReadTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } +} diff --git a/src/main/java/com/bb/service/PandaService.java b/src/main/java/com/bb/service/PandaService.java new file mode 100644 index 0000000..9d8f1c5 --- /dev/null +++ b/src/main/java/com/bb/service/PandaService.java @@ -0,0 +1,13 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.Game; + +public interface PandaService { + + List getGameList(String LOG_PREFIX, HashMap apiInfo); + String getLaunchUrl(String LOG_PREFIX, HashMap apiInfo); + String getDetail(String LOG_PREFIX, HashMap apiInfo); +} diff --git a/src/main/java/com/bb/service/PandaServiceImpl.java b/src/main/java/com/bb/service/PandaServiceImpl.java new file mode 100644 index 0000000..cb5b914 --- /dev/null +++ b/src/main/java/com/bb/service/PandaServiceImpl.java @@ -0,0 +1,213 @@ +package com.bb.service; + +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.Game; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class PandaServiceImpl implements PandaService { + + @Autowired + WebClient webClient; + + + @Override + public List getGameList(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getGameList::"; + List gameList = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/game/gamelist?"; + String param = "&vendor="+apiInfo.get("apiVendor"); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONArray games = new JSONArray(resEntity.getBody()); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getLaunchUrl::"; + String luanchUrl = ""; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/game/launch?"; + String param = "vendor="+apiInfo.get("apiVendor")+"&username="+apiInfo.get("apiUsername") + +"&game_id="+apiInfo.get("apiGameCode")+"&nick_name="+apiInfo.get("apiNickname"); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + + luanchUrl = responseObj.getString("url"); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return luanchUrl; + } + + @Override + public String getDetail(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getDetail::"; + String detailUrl = ""; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/transaction/transaction/"+apiInfo.get("tranId"); + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + + JSONArray data = responseObj.optJSONArray("data"); + if(data != null) { + detailUrl = data.optJSONObject(0).optJSONObject("dynamo_raw").optJSONObject("external").optJSONObject("detail").getString("url"); + } + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return detailUrl; + } + +} diff --git a/src/main/java/com/bb/service/PointAsyncService.java b/src/main/java/com/bb/service/PointAsyncService.java new file mode 100644 index 0000000..8d0f1bd --- /dev/null +++ b/src/main/java/com/bb/service/PointAsyncService.java @@ -0,0 +1,28 @@ +package com.bb.service; + +import com.bb.dao.CreditDao; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.HashMap; + +@Service +@RequiredArgsConstructor +@Slf4j +public class PointAsyncService { + + private final CreditDao creditDao; + + @Async("pointTaskExecutor") + public void processPointAsync(HashMap pointParam, String methodName, String tranId) { + try { + log.info("[{}]::{} pointParam::{}", tranId, methodName, pointParam.toString()); + creditDao.insertCreditPoint(pointParam); + log.info("[{}]::{} creditDao.insertCreditPoint() completed", tranId, methodName); + } catch (Exception e) { + log.error("[{}]::{} Exception::{}", tranId, methodName, e.getMessage()); + } + } +} diff --git a/src/main/java/com/bb/service/PowerBallService.java b/src/main/java/com/bb/service/PowerBallService.java new file mode 100644 index 0000000..79eb94e --- /dev/null +++ b/src/main/java/com/bb/service/PowerBallService.java @@ -0,0 +1,14 @@ +package com.bb.service; + +import java.util.HashMap; + +import org.codehaus.jettison.json.JSONObject; + +public interface PowerBallService { + + //JSONObject registSite(HashMap param, final String LOG_PREFIX); + + //String getLaunchUrl(HashMap param, final String LOG_PREFIX); + + String getGameUrl(HashMap venderInfo, String lOG_PREFIX); +} diff --git a/src/main/java/com/bb/service/PowerBallServiceImpl.java b/src/main/java/com/bb/service/PowerBallServiceImpl.java new file mode 100644 index 0000000..7547c09 --- /dev/null +++ b/src/main/java/com/bb/service/PowerBallServiceImpl.java @@ -0,0 +1,388 @@ +package com.bb.service; + +import java.net.SocketTimeoutException; +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; + +import org.apache.http.conn.ConnectTimeoutException; +import io.netty.handler.timeout.ReadTimeoutException; +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.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import lombok.extern.slf4j.Slf4j; +@Slf4j +@Service +public class PowerBallServiceImpl implements PowerBallService { + + @Autowired + WebClient webClient; +/* + @Override + public JSONObject registSite(HashMap param, String LOG_PREFIX) { + JSONObject jsonObj = null; + // https://api.tpower.cc + final String apiBaseUrl = "https://api.tpower.cc"; + + try { + 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.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + JSONObject params = new JSONObject(); + params.put("siteName", param.get("apiSiteId").toString()); + params.put("siteUrl", "http://lbc.toserver.cc/api/callback/powerball"); + params.put("callbackUrl", "http://lbc.toserver.cc/api/callback/powerball"); + params.put("apiKey", param.get("apiKey").toString()); + + // String apiUrl = param.get("apiBaseUrl").toString() + "/registSite"; + String apiUrl = apiBaseUrl + "/registSite"; + log.info(LOG_PREFIX+ "PowerBall::registSite::"+ "Url: " + apiUrl); + log.info(LOG_PREFIX+ "PowerBall::registSite::"+ "Headers: " + headers.toString()); + log.info(LOG_PREFIX+ "PowerBall::registSite::"+ "Params: " + params.toString()); + + HttpEntity entity = new HttpEntity(params.toString(), headers); + ResponseEntity res = restTemplate.exchange(apiUrl, HttpMethod.POST, entity, String.class); + log.info(LOG_PREFIX+ "PowerBall::registSite::"+ "response : " + res.getBody()); + jsonObj = new JSONObject(res.getBody()); + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PowerBall::registSite::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "PowerBall::registSite::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PowerBall::registSite::"+ "[InterruptedException]"+rae.getMessage()); + } + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(LOG_PREFIX+ "PowerBall::registSite::"+ "[HttpClientErrorException]"+str); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PowerBall::registSite::"+ "[Exception]"+e.toString()); + e.printStackTrace(); + } + + return jsonObj; + } + + @Override + public String getLaunchUrl(HashMap param, String LOG_PREFIX) { + String gameUrl = null; + // https://user.tpower.cc + final String apiBaseUrl = "https://user.tpower.cc"; + + try { + 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.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + headers.set("apikey", param.get("apiKey").toString()); + + JSONObject params = new JSONObject(); + params.put("id", param.get("apiUserId").toString()); + params.put("siteName", param.get("apiSiteId").toString()); + params.put("device", param.get("device").toString()); + + // String apiUrl = param.get("apiBaseUrl").toString() + "/auth/" + param.get("apiGameName").toString(); + String apiUrl = apiBaseUrl + "/auth/" + param.get("apiGameName").toString(); + log.info(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "Url: " + apiUrl); + log.info(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "Headers: " + headers.toString()); + log.info(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "Params: " + params.toString()); + + HttpEntity entity = new HttpEntity(params.toString(), headers); + ResponseEntity res = restTemplate.exchange(apiUrl, HttpMethod.POST, entity, String.class); + + JSONObject resObj = new JSONObject(res.getBody()); + if(resObj.getString("result").equals("SUCCESS")) { + JSONObject dataObj = resObj.getJSONObject("data"); + gameUrl = dataObj.getString("url"); + log.info(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "gameUrl: " + gameUrl); + } else { + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "ERROR::result : " + resObj.getString("result") + ", message: " + resObj.getString("message")); + } + + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[InterruptedException]"+rae.getMessage()); + } + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[HttpClientErrorException]"+str); + } catch (Exception e) { + log.error(LOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[Exception]"+e.toString()); + e.printStackTrace(); + } + + return gameUrl; + } +*/ + @Override + public String getGameUrl(HashMap venderInfo, String lOG_PREFIX) { + String gameUrl = ""; + try { + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + // 실제 브라우저와 동일한 헤더 순서와 값으로 설정 + headers.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + headers.set("Accept", "application/json, text/plain, */*"); + headers.set("Accept-Language", "ko-KR,ko;q=0.9,en;q=0.8"); + // Accept-Encoding 헤더 제거 또는 단순화 (압축 해제 문제 방지) + // headers.set("Accept-Encoding", "gzip, deflate, br"); + headers.set("Connection", "keep-alive"); + + // Cloudflare 우회를 위한 추가 헤더 + headers.set("Cache-Control", "no-cache"); + headers.set("Pragma", "no-cache"); + headers.set("DNT", "1"); + + // 실제 POST 요청에 맞는 Sec-Fetch 헤더 + headers.set("Sec-Fetch-Dest", "empty"); + headers.set("Sec-Fetch-Mode", "cors"); + headers.set("Sec-Fetch-Site", "same-origin"); + + // Origin과 Referer를 더 구체적으로 설정 + headers.set("Origin", "https://api.tpower.cc"); + headers.set("Referer", "https://api.tpower.cc/api/v1/auth"); + + // JA3 fingerprint 우회를 위한 추가 헤더 + headers.set("sec-ch-ua", "\"Not_A Brand\";v=\"8\", \"Chromium\";v=\"120\", \"Google Chrome\";v=\"120\""); + headers.set("sec-ch-ua-mobile", "?0"); + headers.set("sec-ch-ua-platform", "\"Windows\""); + + + JSONObject params = new JSONObject(); + params.put("userId", venderInfo.get("userId").toString()); + params.put("siteKey", venderInfo.get("vendorApiId").toString()); + params.put("gameKey", venderInfo.get("vendorGameCode").toString()); + + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "venderInfo: " + venderInfo.toString()); + + HttpEntity entity = new HttpEntity(params.toString(), headers); + + // 307 리다이렉트 처리를 위한 수정된 로직 + ResponseEntity res = null; + int maxRetries = 3; + int retryCount = 0; + + while (retryCount < maxRetries) { + try { + if (retryCount > 0) { + Thread.sleep(2000); // 2초 대기 + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Retrying... attempt: " + (retryCount + 1)); + } + + // 307 리다이렉트를 수동으로 처리 + // res = restTemplate.exchange("https://api.tpower.cc/api/v1/auth", HttpMethod.POST, entity, String.class); + + res = webClient.post() + .uri("https://api.tpower.cc/api/v1/auth") + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Response status: " + res.getStatusCode()); + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Response headers: " + res.getHeaders()); + + // 307 리다이렉트 처리 + if (res.getStatusCode().value() == 307) { + String locationHeader = res.getHeaders().getFirst("Location"); + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "307 Redirect to: " + locationHeader); + + if (locationHeader != null && !locationHeader.isEmpty()) { + // 리다이렉트된 URL로 다시 요청 + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Following redirect to: " + locationHeader); + + // 새로운 URL이 상대 경로인 경우 절대 경로로 변환 + String redirectUrl = locationHeader; + if (locationHeader.startsWith("/")) { + redirectUrl = "https://api.tpower.cc" + locationHeader; + } + + // HTTP를 HTTPS로 변경 (보안상 더 안전) + if (redirectUrl.startsWith("http://")) { + redirectUrl = redirectUrl.replace("http://", "https://"); + } + + // 인코딩 문제 해결을 위한 새로운 헤더 설정 + HttpHeaders redirectHeaders = new HttpHeaders(); + redirectHeaders.setContentType(MediaType.APPLICATION_JSON); + redirectHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + redirectHeaders.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + redirectHeaders.set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"); + redirectHeaders.set("Accept", "application/json, text/plain, */*"); + redirectHeaders.set("Accept-Language", "ko-KR,ko;q=0.9,en;q=0.8"); + redirectHeaders.set("Connection", "keep-alive"); + redirectHeaders.set("Cache-Control", "no-cache"); + + // HttpEntity redirectEntity = new HttpEntity(params.toString(), redirectHeaders); + + // 리다이렉트된 URL로 재요청 + // res = restTemplate.exchange(redirectUrl, HttpMethod.POST, redirectEntity, String.class); + + res = webClient.post() + .uri(redirectUrl) + .headers(h -> h.addAll(redirectHeaders)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Redirect response status: " + res.getStatusCode()); + + // 응답 본문 길이 체크 후 로그 출력 + String responseBody = res.getBody(); + if (responseBody != null) { + // UTF-8으로 다시 디코딩 시도 + try { + byte[] bytes = responseBody.getBytes("ISO-8859-1"); + String utf8Body = new String(bytes, "UTF-8"); + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "UTF-8 decoded response body: " + + (utf8Body.length() > 1000 ? utf8Body.substring(0, 1000) + "..." : utf8Body)); + responseBody = utf8Body; + } catch (Exception encodingEx) { + log.warn(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "UTF-8 decoding failed, using original: " + + (responseBody.length() > 1000 ? responseBody.substring(0, 1000) + "..." : responseBody)); + } + } + + // 수정된 응답을 다시 설정 + if (responseBody != null) { + res = new ResponseEntity<>(responseBody, res.getHeaders(), res.getStatusCode()); + } + + } else { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "307 Redirect but no Location header found"); + retryCount++; + continue; + } + } + + break; // 성공하면 루프 탈출 + + } catch (WebClientResponseException e) { + retryCount++; + if (e.getStatusCode().is5xxServerError()) { + log.warn(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Server error. Status: " + e.getStatusCode() + ", attempt: " + retryCount); + if (retryCount >= maxRetries) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Max retries reached. Server error: " + e.getStatusCode()); + throw e; + } + continue; + } else if (e.getStatusCode().is4xxClientError()) { + log.warn(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Client error. Status: " + e.getStatusCode() + ", attempt: " + retryCount); + if (e.getStatusCode().value() == 403 || e.getStatusCode().value() == 429) { + if (retryCount >= maxRetries) { + throw e; + } + continue; + } else { + throw e; + } + } else { + throw e; + } + } catch (Exception e) { + retryCount++; + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Exception in retry loop: " + e.getMessage()); + if (retryCount >= maxRetries) { + throw e; + } + } + } + + // 응답 처리 + if (res != null && res.getBody() != null) { + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Final response body: " + res.getBody()); + + JSONObject resObj = new JSONObject(res.getBody()); + if (resObj.has("success") && resObj.getBoolean("success")) { + JSONObject dataObj = resObj.getJSONObject("data"); + gameUrl = dataObj.getString("url"); + log.info(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "gameUrl: " + gameUrl); + } else { + // success가 false인 경우 상세 에러 로그 + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "API returned success=false"); + if (resObj.has("result")) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "result: " + resObj.getString("result")); + } + if (resObj.has("message")) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "message: " + resObj.getString("message")); + } + if (resObj.has("error")) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "error: " + resObj.getString("error")); + } + } + } else { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Response is null or empty"); + } + + } catch (WebClientResponseException e) { + String str = e.getResponseBodyAsString(); + if (e.getStatusCode().is5xxServerError()) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "[HttpServerErrorException] Status: " + + e.getStatusCode() + ", Body: " + (str != null && str.length() > 500 ? str.substring(0, 500) + "..." : str)); + + // Cloudflare 502 에러 감지 + if (str != null && (str.contains("cloudflare") || str.contains("Bad Gateway") || str.contains("502"))) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Cloudflare 502 Bad Gateway detected!"); + } + } else if (e.getStatusCode().is4xxClientError()) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "[HttpClientErrorException] Status: " + + e.getStatusCode() + ", Body: " + str); + + // Cloudflare 차단 여부 확인 + if (str != null && (str.contains("cloudflare") || str.contains("Access denied") || str.contains("blocked"))) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "Cloudflare protection detected!"); + } + } + + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(lOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(lOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error(lOG_PREFIX+ "PowerBall::getLaunchUrl::"+ "[InterruptedException]"+rae.getMessage()); + } + } catch (Exception e) { + log.error(lOG_PREFIX + "PowerBall::getLaunchUrl::" + "[Exception]" + e.toString()); + e.printStackTrace(); + } + + return gameUrl; + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/service/PracpService.java b/src/main/java/com/bb/service/PracpService.java new file mode 100644 index 0000000..6a6bcef --- /dev/null +++ b/src/main/java/com/bb/service/PracpService.java @@ -0,0 +1,15 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONObject; + +import com.bb.model.Game; + +public interface PracpService { + + List getGameList(String LOG_PREFIX, HashMap apiInfo); + String getLaunchUrl(String LOG_PREFIX, HashMap apiInfo); + JSONObject getDetail(String LOG_PREFIX, HashMap apiInfo); +} diff --git a/src/main/java/com/bb/service/PracpServiceImpl.java b/src/main/java/com/bb/service/PracpServiceImpl.java new file mode 100644 index 0000000..f2c0f8d --- /dev/null +++ b/src/main/java/com/bb/service/PracpServiceImpl.java @@ -0,0 +1,277 @@ +package com.bb.service; +import java.util.Arrays; +import java.nio.charset.Charset; + +import java.math.BigInteger; +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.Game; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class PracpServiceImpl implements PracpService { + + @Autowired + WebClient webClient; + + private String getAPI_KEY(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "::getAPI_KEY::"; + + String apiKey = ""; + String apiAgentCode = apiInfo.get("apiAgentCode"); + String apiToken = apiInfo.get("apiToken"); + String timeStamp = apiInfo.get("timeStamp"); + + log.info(LOG_PREFIX+ "apiAgentCode::"+apiAgentCode); + log.info(LOG_PREFIX+ "apiToken::"+apiToken); + log.info(LOG_PREFIX+ "timeStamp::"+timeStamp); + + String textA = apiAgentCode+apiToken+timeStamp; + String salt = apiToken; + String textB = textA+salt; + log.info(LOG_PREFIX+ "textB::"+textB); + + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(textB.getBytes("UTF-8")); + byte[] digest = md.digest(); + + StringBuilder sb = new StringBuilder(); + for (byte b : digest) { + sb.append(String.format("%02x", b)); // 항상 2자리(앞에 0 포함) + } + + apiKey = sb.toString(); + log.info(LOG_PREFIX+ "apiKey::"+apiKey); + } catch(Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + } + + return apiKey; + } + + @Override + public List getGameList(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getGameList::"; + List gameList = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/app/game/list?"; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + long timeStampL = System.currentTimeMillis(); + String timeStamp = sdf.format(timeStampL); + apiInfo.put("timeStamp", timeStamp); + String apiKey = getAPI_KEY(LOG_PREFIX, apiInfo); + String param = "api_key="+apiKey+"×tamp="+timeStamp + +"&agent_code="+apiInfo.get("apiAgentCode")+"&provider_code="+apiInfo.get("apiProviderCode"); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + //log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + + JSONArray games = responseObj.getJSONArray("data"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getLaunchUrl::"; + String luanchUrl = ""; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/app/game/launch"; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + long timeStampL = System.currentTimeMillis(); + String timeStamp = sdf.format(timeStampL); + apiInfo.put("timeStamp", timeStamp); + String apiKey = getAPI_KEY(LOG_PREFIX, apiInfo); + + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + JSONObject params = new JSONObject(); + params.put("api_key", apiKey); + params.put("timestamp", timeStamp); + params.put("player_code", apiInfo.get("apiPlayerCode")); + params.put("game_code", apiInfo.get("apiGameCode")); + params.put("agent_code", apiInfo.get("apiAgentCode")); + params.put("provider_code", apiInfo.get("apiProviderCode")); + params.put("country_code", "KR"); + params.put("locale_code", "ko"); + log.info(LOG_PREFIX+ "params::"+params.toString()); + + ResponseEntity resEntity = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + JSONObject dataObj = responseObj.getJSONObject("data"); + luanchUrl = dataObj.getString("game_url"); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return luanchUrl; + } + + @Override + public JSONObject getDetail(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getDetail::"; + JSONObject detailObj = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/app/game/detail-url?"; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + long timeStampL = System.currentTimeMillis(); + String timeStamp = sdf.format(timeStampL); + apiInfo.put("timeStamp", timeStamp); + String apiKey = getAPI_KEY(LOG_PREFIX, apiInfo); + String param = "api_key="+apiKey+"×tamp="+timeStamp + +"&agent_code="+apiInfo.get("apiAgentCode")+"&uuid="+apiInfo.get("uuid")+"&round_id="+apiInfo.get("round_id")+"&country_code=KR&locale_code=ko"; + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + + detailObj = responseObj.getJSONObject("data"); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return detailObj; + } + +} diff --git a/src/main/java/com/bb/service/PragmaticService.java b/src/main/java/com/bb/service/PragmaticService.java new file mode 100644 index 0000000..00198bd --- /dev/null +++ b/src/main/java/com/bb/service/PragmaticService.java @@ -0,0 +1,20 @@ +package com.bb.service; + + + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.Game; +import com.bb.model.PlayParam; + +public interface PragmaticService { + + String getLaunchUrl(String LOG_PREFIX, String token, HashMap venderInfo, PlayParam param, String string) throws Exception ; + + List getGameList(String LOG_PREFIX, HashMap venderInfo) throws Exception; + + String getDetails(String LOG_PREFIX, HashMap betInfo); + + +} diff --git a/src/main/java/com/bb/service/PragmaticServiceImpl.java b/src/main/java/com/bb/service/PragmaticServiceImpl.java new file mode 100644 index 0000000..60cc2f7 --- /dev/null +++ b/src/main/java/com/bb/service/PragmaticServiceImpl.java @@ -0,0 +1,276 @@ +package com.bb.service; + +import com.bb.jwt.JwtManager; +import com.bb.model.Game; +import com.bb.model.PlayParam; +import com.bb.model.Site; +import com.bb.util.StringUtils; + + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.*; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import org.springframework.web.reactive.function.client.WebClientRequestException; + + + +import java.math.BigDecimal; +import java.util.*; + + + +@Slf4j +@EnableScheduling +@RequiredArgsConstructor +@Service +public class PragmaticServiceImpl implements PragmaticService { + + + @Autowired + WebClient webClient; + + + @Override + public String getLaunchUrl(String LOG_PREFIX, String token, HashMap venderInfo, PlayParam param, String hexMemberId) throws Exception { + String gameUrl = venderInfo.get("vendorApiUrl").toString()+"/IntegrationService/v3/http/CasinoGameAPI/game/url/"; + + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + String language = param.getLanguage(); + if(language == null || language.isEmpty()) { + language = "en"; + } else { + language = language.toLowerCase(); + if(language.equals("kr")) { + language = "en"; + } + } + + // String currency = venderInfo.get("currency").toString(); + parameters.add("currency", "VND"); + parameters.add("language", language); + parameters.add("secureLogin", venderInfo.get("vendorApiId").toString()); + parameters.add("externalPlayerId", hexMemberId); + parameters.add("symbol", param.getGameKey()); + parameters.add("token", hexMemberId); + + // hash + String hashString = "currency="+"VND" + + "&externalPlayerId="+hexMemberId + + "&language="+language + + "&secureLogin="+ venderInfo.get("vendorApiId").toString() + + "&symbol="+param.getGameKey() + + "&token="+hexMemberId; + + log.info(LOG_PREFIX+ "Pragmatic hash string:{}", hashString); + parameters.add("hash", StringUtils.md5AndHex(hashString+ venderInfo.get("vendorApiKey").toString())); + log.info(LOG_PREFIX+ "org_pragmatic_gameUrl parameters:{}", parameters.toString()); + //header + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/x-www-form-urlencoded"); + + try { + String responseBody = webClient.post() + .uri(gameUrl) + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .bodyToMono(String.class) + .block(); + + JSONObject resdata = new JSONObject(responseBody); + log.info(LOG_PREFIX+ "org_pragmatic_gameUrl res:{}", resdata.toString()); + + return resdata.get("gameURL").toString(); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "getLaunchUrl HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "getLaunchUrl status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "getLaunchUrl response body : " + e.getResponseBodyAsString()); + throw e; + } catch(WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "getLaunchUrl ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "getLaunchUrl SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "getLaunchUrl InterruptedException::"+rae.getMessage()); + } + throw rae; + } + } + + + @Override + public List getGameList(String LOG_PREFIX, HashMap venderInfo) throws Exception{ + String apiUrl = venderInfo.get("vendorApiUrl").toString()+"/IntegrationService/v3/http/CasinoGameAPI/getCasinoGames"; + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("secureLogin", venderInfo.get("vendorApiId").toString()); + List gameList = null; + + log.info(LOG_PREFIX+ "apiUrl:"+apiUrl); + String hashString = "secureLogin="+ venderInfo.get("vendorApiId").toString(); + log.info(hashString); + String hash = StringUtils.md5AndHex(hashString+ venderInfo.get("vendorApiKey").toString()); + parameters.add("hash", hash); + log.info(LOG_PREFIX+ "hash:"+hash); + //header + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/x-www-form-urlencoded"); + + try { + String responseBody = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .bodyToMono(String.class) + .block(); + + log.info(LOG_PREFIX+ "res"+ responseBody); + JSONObject resdata = new JSONObject(responseBody); + log.info(LOG_PREFIX+ resdata.toString()); + JSONArray games = resdata.getJSONArray("gameList"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i parameters = new LinkedMultiValueMap<>(); + + + parameters.add("secureLogin", betInfo.get("vendorApiId").toString()); + parameters.add("playerId", playerId); + parameters.add("gameId", betInfo.get("gameIdx").toString()); + parameters.add("roundId", roundId); + + // hash + String hashString = "secureLogin="+ betInfo.get("vendorApiId").toString() + + "&playerId="+playerId + + "&gameId="+betInfo.get("gameIdx").toString() + + "&roundId="+ roundId; + + log.info("Pragmatic hash string:{}", hashString); + parameters.add("hash", StringUtils.md5AndHex(hashString+ betInfo.get("vendorApiKey").toString())); + //header + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/x-www-form-urlencoded"); + + try { + String responseBody = webClient.post() + .uri(historyUrl) + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .bodyToMono(String.class) + .block(); + + JSONObject resdata = new JSONObject(responseBody); + + if(resdata != null) { + return resdata.getString("url"); + } else { + return ""; + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "getDetails HttpClientErrorException : " + e.getMessage()); + log.error(LOG_PREFIX+ "getDetails status code : " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "getDetails response body : " + e.getResponseBodyAsString()); + return ""; + } catch(WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "getDetails ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "getDetails SocketTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "getDetails InterruptedException::"+rae.getMessage()); + } + return ""; + } + } catch(Exception e) { + log.error("OpenHistoryExtended Exception: ", e); + return ""; + } + } + + +} diff --git a/src/main/java/com/bb/service/SettingService.java b/src/main/java/com/bb/service/SettingService.java new file mode 100644 index 0000000..d9611fe --- /dev/null +++ b/src/main/java/com/bb/service/SettingService.java @@ -0,0 +1,34 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.BlockGameVO; +import com.bb.model.CmnSearch; +import com.bb.model.SiteVendorSkinVO; + +public interface SettingService { + + List> getSettingVendorList(CmnSearch search); + + List> getSettingSkinList(CmnSearch search); + + int settingVendorSkinSave(SiteVendorSkinVO item); + + List getWhiteIpList(CmnSearch search); + + List> getBlockVendorSelectBoxList(String category); + + List> getBlockVendorSelectBoxList2(CmnSearch search); + + List> getBlockTableSelectBoxList(CmnSearch search); + + String getBlockTableIds(CmnSearch search); + + int blockTableIdSave(BlockGameVO blockGameVO); + + String getVendorTitle(CmnSearch search); + + HashMap getBetRadarApiInfo(String siteId); + +} diff --git a/src/main/java/com/bb/service/SettingServiceImpl.java b/src/main/java/com/bb/service/SettingServiceImpl.java new file mode 100644 index 0000000..f37600e --- /dev/null +++ b/src/main/java/com/bb/service/SettingServiceImpl.java @@ -0,0 +1,108 @@ +package com.bb.service; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.bb.dao.SettingDao; +import com.bb.model.BlockGameVO; +import com.bb.model.CmnSearch; +import com.bb.model.SiteVendorSkinVO; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class SettingServiceImpl implements SettingService { + + @Autowired + SettingDao settingDao; + + + @Override + public List> getSettingVendorList(CmnSearch search) { + // TODO Auto-generated method stub + return settingDao.getSettingVendorList(search); + } + + + @Override + public List> getSettingSkinList(CmnSearch search) { + // TODO Auto-generated method stub + return settingDao.getSettingSkinList(search); + } + + + @Override + public int settingVendorSkinSave(SiteVendorSkinVO item) { + // TODO Auto-generated method stub + return settingDao.settingVendorSkinSave(item); + } + + + @Override + public List getWhiteIpList(CmnSearch search) { + // TODO Auto-generated method stub + String ipListStr = settingDao.getWhiteIpListStr(search); + List ipList = null; + try { + ipList = Arrays.asList(ipListStr.split(",")); + } catch (Exception e) { + log.error("#-API::SETTING::whiteIpList::"+search.getSiteIdx()+"::::" + "Exception::"+e.getMessage()); + } + + return ipList; + } + + + @Override + public List> getBlockVendorSelectBoxList(String category) { + // TODO Auto-generated method stub + return settingDao.getBlockVendorSelectBoxList(category); + } + + + @Override + public List> getBlockVendorSelectBoxList2(CmnSearch search) { + // TODO Auto-generated method stub + return settingDao.getBlockVendorSelectBoxList2(search); + } + + + @Override + public List> getBlockTableSelectBoxList(CmnSearch search) { + // TODO Auto-generated method stub + return settingDao.getBlockTableSelectBoxList(search); + } + + + @Override + public String getBlockTableIds(CmnSearch search) { + // TODO Auto-generated method stub + return settingDao.getBlockTableIds(search); + } + + + @Override + public int blockTableIdSave(BlockGameVO blockGameVO) { + // TODO Auto-generated method stub + return settingDao.blockTableIdSave(blockGameVO); + } + + + @Override + public String getVendorTitle(CmnSearch search) { + // TODO Auto-generated method stub + return settingDao.getVendorTitle(search); + } + + + @Override + public HashMap getBetRadarApiInfo(String siteId) { + // TODO Auto-generated method stub + return settingDao.getBetRadarApiInfo(siteId); + } +} diff --git a/src/main/java/com/bb/service/SiteService.java b/src/main/java/com/bb/service/SiteService.java new file mode 100644 index 0000000..8e2d3e2 --- /dev/null +++ b/src/main/java/com/bb/service/SiteService.java @@ -0,0 +1,460 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jakarta.servlet.http.HttpServletRequest; + +import org.springframework.security.core.Authentication; + +import com.bb.model.BalanceParam; +import com.bb.model.BetParam; +import com.bb.model.BoardSearch; +import com.bb.model.CashParam; +import com.bb.model.CommonParam; +import com.bb.model.Game; +import com.bb.model.Member; +import com.bb.model.OTPInfo; +import com.bb.model.Site; +import com.bb.model.SitePwdVO; +import com.bb.model.SiteSearch; +import com.bb.model.TrfApiInfo; +import com.bb.model.UserSearch; +import com.bb.model.Vendor; +import com.bb.model.VendorChangeBalanceLogVo; + +public interface SiteService { + + Site getSiteInfo(HttpServletRequest request); + + Site getSiteInfoAPI(HttpServletRequest request); + + Member getMember(CommonParam commonParam); + + Member getMember2(CashParam param); + + void insertMember(CommonParam commonParam); + + HashMap getVenderApiInfo(CommonParam commonParam); + + void commonBetinsert(HashMap tranParam); + + void commonBetinsert2(HashMap tranParam); + + List getCbList(); + + int updateCbApi(HashMap upParam); + + HashMap getSiteApiInfo(HashMap sParam); + + HashMap getSiteApiInfo2(HashMap sParam); + + Site getSiteLogin(Authentication authentication); + + Site getSiteLoginApi(Map loginParam); + + Site getGuestLogin(); + + int getSiteListCnt(SiteSearch search); + List getSiteList(SiteSearch search); + + void addProc(Site site); + + void addProcAPI(Site site); + + Site getSiteInfoMypage(Site loginSite); + + long getSiteCredit(String siteId); + + long getUnderSiteCredit(String siteId); + + long getSitePoint(String siteId); + + HashMap getCreditWait(int i); + + int getSiteUserListCnt(SiteSearch search); + + List getSiteUserList(SiteSearch search); + + int getTranCheck(String tranId); + + void insertError(HashMap eParam); + + int getFinalErr(String refId); + + void updateSid(Member member); + + long getInsureAmt(String siteId); + + long getInsurePointAmt(String siteId); + + List getVenderRateList(Site loginSite); + + int getBetCancelCount(String betId); + + void updateBombKey(Member member); + + Member getMemByBombAccId(HashMap memParam); + + String getBetInfo(BetParam param); + + String getMergedBetRadarLog(String betId); + + List getSiteFlow(Site loginSite); + + void saveVendorRate(HashMap paramMap); + + HashMap getEvoApiInfo(); + + String getSiteIdByRefId(String refId); + + void updateDetailLastTime(HashMap evoInfo); + + void insertBetDetail(Map paramDerail); + + Site getSiteDetail(SiteSearch search); + + Site getSiteSimpleDetail(SiteSearch search); + + HashMap getVenderApiInfoByToken(Map paramV); + + Site getSiteBypassword(Map siteParam); + + void updatePass(Map siteParam); + + void siteUpdate(String LOG_PREFIX, Site site); + + void saveVendorInsurePointRate(HashMap paramMap); + + HashMap getDashInfo(Site loginSite); + + HashMap getDashInfo2(Site loginSite); + + HashMap getMicroApiInfo(); + + int getApiStatus(HashMap tranParam); + + void saveVendorInsureRate(HashMap paramMap); + + void updateVendorUseYn(HashMap paramMap); + + List getSiteVendorList(SiteSearch search); + + List getVendorList(SiteSearch search); + + void siteVenderUpdate(Vendor vendor); + + HashMap getDowinApiInfo(); + + long getSiteMaxBet(HashMap sParam); + + Long getUserMaxBet(HashMap sParam); + + int getBetCheckByHc(String refId); + + void updatePragmaticId(Member member); + + HashMap getProgmaticApiInfo(); + + HashMap getProgmaticApiInfo2(); + + HashMap getSiteApiInfoByPra(HashMap sParam); + + String getlastDepostId(HashMap dParam); + + List getNotUseMemberListProgama(); + + List getGameList(HashMap param); + + HashMap getOnlyVenderInfo(CommonParam commonParam); + + int getBotaAutoCancelCnt(String tranId); + + int getBotaBetCnt(String tranId); + + List getBotaBetListMinute(); + + String getSiteIdByRefId2(String string); + + int getTranIdCheck(String string); + + int getTranIdCheck2(String string); + + HashMap getSiteMember(String string); + + void updateDebitCancel(String refId); + + void insertSiteCallBackLog(HashMap logParam); + + List getBetList(BetParam param); + + List getMonsterGameList(); + + HashMap getProgmaticApiInfo3(String string); + + long getBetCancelAmt(String string); + + int getBetIdCheck(String refId); + + int getBetIdCheck2(String refId); + + int getTranCheck2(String string); + + void insertSlotCity(HashMap slotMap); + + void botaAutoCancel(HashMap tranParam); + + void seattleCredit(); + + void updateDecimal(HashMap decimalParam); + + List getonlyDebitList(); + + void insertAutoLose(HashMap loseCredit); + + HashMap getBetCheck(BetParam param); + + int callbackTokenCheck(String header); + + HashMap getVenderInfo(BalanceParam param); + + String getRefIdByTranId(String string); + + List getCreditReSendList(); + + void updateMemCancelCnt(long memberIdx); + + Long getMemberIdx(HashMap memParam); + + int insertVendorChangeBalanceLog(VendorChangeBalanceLogVo logVo); + + HashMap getGsoftVendorInfo(String gameID); + + HashMap getDemoByBombAccId(HashMap memParam); + + void inserDemoUSer(String bombToken); + + void updateDemoUSer(HashMap memParam); + + List getTrasferVendorList(); + + List getAllMember(); + + int gethourBetCheck(long member); + + List getAllMember2(); + + HashMap getUserVendorInfo(HashMap memParam); + + Member getMemberByToken(Map authParam); + + HashMap getSiteApiInfoByToken(Map authParam); + + double getBetDepositAmt(String string); + + void insertSplusTran(Map trxParam); + + void updateSplusTran(Map trxParam); + + String getCbData(String reserve_id); + + void updatesPurchaseId(Map trxParam); + + double getBetGapAmt(String string); + + void insertToken(String base64Token); + + int getSplusToken(String base64Token); + + String getRefIdByPurchaseId(String purchase_id); + + List getSplusDetailData(BetParam param); + + String getKorName(String string, String homeTeam); + + void forDefaultProc(Site site); + + HashMap getBetInfoByTranId(String reference); + + int getSuccDebitCnt(String betId); + + HashMap getSiteVendorInfo(HashMap param); + + int updatePowerballApiInfo(HashMap registParam); + + List> getPowerBallInfoList(String gameType); + + HashMap getSiteApiInfoByApiKey(HashMap param); + + HashMap getSiteApiInfoByCallbackKey(HashMap param); + + int updMemLastVendorIdx(HashMap memParam); + + List getVendorListByVendorKey(HashMap venderInfo); + + void vendorUpdate(HashMap venderInfo); + + List getNexusSkinListByVendorKey(HashMap venderInfo); + + void nexusSkinUpdate(HashMap venderInfo); + + String getParseTarget(); + + String getParseTargetExtr(); + + HashMap getParseUseYn(int siteIdx); + + void insertParseUse(HashMap parseParam); + + List getApiBetVendorList(int siteIdx); + + int getApiBetTransactionCnt(BetParam param); + + List getApiBetTransactionList(BetParam param); + + HashMap getParseUserYn(HashMap pum); + + void setParseUserYn(HashMap pum); + + OTPInfo getOtpInfo(long siteIdx); + + OTPInfo getOtpInfoByManger(long siteIdx); + + int registSuperOtp(OTPInfo param); + + HashMap getSiteOnlyVendorInfo(HashMap vendorParam); + + TrfApiInfo getTrfApiInfo(HashMap mapParam); + + void agentIpsUpdate(Site site); + + int insertEvoDetail(HashMap detailMap); + + HashMap getCommonApiInfo(HashMap commonParam); + + HashMap getBeforeTranInfo(String vendorTranKey); + + List getParseTargetGame(String gameType); + + String getOrgDetailData(BetParam param); + + String getParDetailData(BetParam param); + + HashMap getBetInfoByTranKey(String vendorTranKey); + + HashMap getParseInfo(HashMap param); + + int getBlockParseGameId(String gameId); + + HashMap getBeforeTranInfo2(String vendorTranKey); + + String getMemberByIdx(HashMap memParam); + + List getSiteVendorList2(int siteIdx); + + List getVendorList2(int siteIdx); + + void saveSvcr(HashMap paramMap, int type); + + String getSiteKey(HashMap paramMap); + + String getVendorTitle(HashMap paramMap); + + Long getUserTimeout(HashMap accLog); + + int updateUserTimeout(HashMap accLog); + + String getGameKeyByNexusGameId(String gameId); + + String getDebitIsParse(String betId); + + int updateParseUseYN(String useYn); + + int insertTheaTrxId(HashMap param); + + HashMap getApiKeyInfo(String vendorTitle); + + HashMap getApiKeyInfo2(HashMap keyParam); + + HashMap getRefBetInfoByTranId(String tranId); + + int updMemberBalance(HashMap balanceMap); + + int getMemberBalance(HashMap balanceMap); + + HashMap getMemberId(String vendorUsername); + + int checkMemberId(String vendorUsername); + + HashMap getNewSiteApiInfo(String vendorUsername); + + HashMap getNewSiteVendorInfo(HashMap param); + + int updateTestCnt(Site site); + + int updateParseEvoYn(HashMap param); + + int saveParsEvoAmount(SiteSearch param); + + int getUserBalance(HashMap balanceMap); + + List getMyDownSite(SiteSearch search); + + HashMap getCreditInfo(String siteId); + + int checkDownSite(Map checkDown); + + List getSiteTreeList(String siteId); + + int getMyDownSiteCheck(Site targetsite); + + void siteUpdateForAPI(Site site); + + int updateSitePwd(SitePwdVO sitePwdVO); + + Site getSite(Site addsite); + + void siteVenderLobbyUpdate(Vendor vendor); + + List getVendorMapList(SiteSearch search); + + String siteVenderRate(Vendor vendor); + + int getBoardListCnt(BoardSearch search); + + List> getBoardList(BoardSearch search); + + HashMap getBoardDetail(long boardIdx); + + int getSiteCallbackErrLogListCnt(SiteSearch search); + + List getSiteCallbackErrLogList(SiteSearch search); + + int getUserListCnt(UserSearch search); + + List> getUserList(UserSearch search); + + HashMap getUserDetail(UserSearch search); + + int getSiteListCntForApi(SiteSearch search); + + List getSiteListForApi(SiteSearch search); + + Site getSiteDetailForApi(SiteSearch search); + + List getVendorListForApi(SiteSearch search); + + List getSiteVendorListForApi(SiteSearch search); + + HashMap getRefIdByVendorTranKey(String vendorTranKey); + + int updateUserMaxBet(HashMap param); + + int insertTranLog(HashMap logParam); + + HashMap getSiteSubCredit(String siteId); + + String getBetAmountByTranParam(HashMap param); + +} diff --git a/src/main/java/com/bb/service/SiteServiceImpl.java b/src/main/java/com/bb/service/SiteServiceImpl.java new file mode 100644 index 0000000..d99d350 --- /dev/null +++ b/src/main/java/com/bb/service/SiteServiceImpl.java @@ -0,0 +1,1943 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import jakarta.servlet.http.HttpServletRequest; + +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.scheduling.annotation.Async; +import org.springframework.security.core.Authentication; +import org.springframework.stereotype.Service; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.support.DefaultTransactionDefinition; + +import com.bb.dao.CallBackDao; +import com.bb.dao.CreditDao; +import com.bb.dao.SiteDao; +import com.bb.model.BalanceParam; +import com.bb.model.BetParam; +import com.bb.model.BoardSearch; +import com.bb.model.CashParam; +import com.bb.model.CommonParam; +import com.bb.model.Credit; +import com.bb.model.Game; +import com.bb.model.Member; +import com.bb.model.OTPInfo; +import com.bb.model.Site; +import com.bb.model.SitePwdVO; +import com.bb.model.SiteSearch; +import com.bb.model.TrfApiInfo; +import com.bb.model.UserSearch; +import com.bb.model.Vendor; +import com.bb.model.VendorChangeBalanceLogVo; +import com.bb.util.IPKit; + +import lombok.extern.slf4j.Slf4j; + + +@Slf4j +@Service +public class SiteServiceImpl implements SiteService{ + + @Autowired + private SiteDao siteDao; + + @Autowired + private CreditDao creditDao; + + @Autowired + private CallBackDao callBackDao; + + @Autowired + private PointAsyncService pointAsyncService; + + @Autowired + private DataSourceTransactionManager transactionManager; + + + public Site getSiteInfo(HttpServletRequest request) { + String Authorization = request.getHeader("Authorization").toString(); + Site site = siteDao.getSiteInfo(Authorization); + return site; + } + + + public Site getSiteInfoAPI(HttpServletRequest request) { + String Authorization = request.getHeader("Authorization").toString(); + Site site = siteDao.getSiteInfoAPI(Authorization); + return site; + } + + + @Override + public Member getMember(CommonParam commonParam) { + // TODO Auto-generated method stub + return siteDao.getMember(commonParam); + } + + @Override + public Member getMember2(CashParam param) { + // TODO Auto-generated method stub + return siteDao.getMember2(param); + } + + @Override + public void insertMember(CommonParam commonParam) { + // TODO Auto-generated method stub + siteDao.insertMember(commonParam); + } + + + @Override + public HashMap getVenderApiInfo(CommonParam commonParam) { + return siteDao.getVenderApiInfo(commonParam); + } + + + @Override + public List getCbList() { + // TODO Auto-generated method stub + return siteDao.getCbList(); + } + + + @Override + public int updateCbApi(HashMap upParam) { + //TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + int res =0; + try { + + if("debit".equals(upParam.get("tranType"))) { + updateCbApiDebit(upParam); + } else { + updateCbApiCredit(upParam); + } + + } catch(Exception e) { + System.out.println(e.toString()); + //transactionManager.rollback(txStatus); + res =-1; + }finally { + return res; + } + } + + @Async + public void updateCbApiDebit(HashMap upParam) throws Exception { + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiDebit() start"); + + long siteCredit = siteDao.getSiteCredit((String)upParam.get("siteId")); + + String creditRate = siteDao.getCreditRate(upParam); + + // ##--isTransfer 처리-## + String isTransfer = "N"; + if(upParam.containsKey("isTransfer")) isTransfer = upParam.get("isTransfer").toString(); + String isTie = upParam.get("isTie").toString(); // N:정품, P:파싱 + String vendorCetegory = upParam.get("vendorCetegory").toString(); + + int gameCategory = 0; + if(vendorCetegory.equals("CASINO") && isTie.equals("N")) { + gameCategory = 1; // 카지노A + } else if(vendorCetegory.equals("CASINO") && isTie.equals("P")) { + gameCategory = 2; // 카지노B + } else if(vendorCetegory.equals("SLOT") && isTie.equals("N")) { + gameCategory = 3; // 슬롯A + } else if(vendorCetegory.equals("SLOT") && isTie.equals("P")) { + gameCategory = 4; // 슬롯B + } else { + gameCategory = 5; + } + + Credit credit = new Credit(); + credit.setSiteIdx(Integer.parseInt(upParam.get("siteIdx").toString())); + credit.setSiteId(upParam.get("siteId").toString()); + credit.setTranId((String)upParam.get("tranId")); + credit.setPreCreditAmt(siteCredit); + credit.setCreditRate(creditRate); + credit.setCreditStatus(1); + credit.setRefId(upParam.get("refId").toString()); + + if(isTransfer.equals("N")) { + credit.setTargetSiteIdx(Integer.parseInt(upParam.get("siteIdx").toString())); + credit.setTargetSiteId(upParam.get("siteId").toString()); + credit.setCreditType("DP"); + credit.setInOut("OUT"); + credit.setCreditAmt((long) Math.ceil(Double.parseDouble(upParam.get("depositAmt").toString()))); + credit.setGameCategory(gameCategory); + creditDao.insertCredit(credit); + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiDebit() creditDao.insertCredit()"); + } else { + credit.setTargetSiteIdx(Integer.parseInt(upParam.get("memberIdx").toString())); + credit.setTargetSiteId(upParam.get("memberId").toString()); + credit.setCreditType("MDP"); + credit.setInOut("OUT"); + credit.setCreditAmt((long) Math.ceil(Double.parseDouble(upParam.get("depositAmt").toString()))); + credit.setUserAmt((long) Math.ceil(Double.parseDouble(upParam.get("depositAmt").toString()))); + credit.setPreBalance(Long.parseLong(upParam.get("preBalance").toString())); + credit.setGameCategory(gameCategory); + creditDao.insertCreditByCash(credit); + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiDebit() creditDao.insertCredit()"); + } + + // 포인트 처리 비동기 실행 + if(credit.getCreditAmt() > 0 && isTransfer.equals("N")) { + HashMap pointParam = new HashMap(); + pointParam.put("siteIdx", Long.parseLong(upParam.get("siteIdx").toString())); + pointParam.put("siteId", upParam.get("siteId").toString()); + pointParam.put("memberIdx", Long.parseLong(upParam.get("memberIdx").toString())); + pointParam.put("memberId", upParam.get("memberId").toString()); + pointParam.put("vendor", upParam.get("vendorCode").toString()); + pointParam.put("vendorIdx", Integer.parseInt(upParam.get("vendorIdx").toString())); + pointParam.put("tranId", upParam.get("tranId").toString()); + pointParam.put("betId", upParam.get("refId").toString()); + pointParam.put("amount", (credit.getCreditAmt()*-1)); + + pointAsyncService.processPointAsync(pointParam, "updateCbApiDebit", upParam.get("tranId").toString()); + } + + siteDao.updateCbApi(upParam); + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiDebit() end"); + } + + @Async + public void updateCbApiCredit(HashMap upParam) throws Exception { + + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiCredit() start"); + + long siteCredit = siteDao.getSiteCredit((String)upParam.get("siteId")); + + String creditRate = siteDao.getCreditRate(upParam); + + // ##--isTransfer 처리-## + String isTransfer = "N"; + if(upParam.containsKey("isTransfer")) isTransfer = upParam.get("isTransfer").toString(); + String isTie = upParam.get("isTie").toString(); // N:정품, P:파싱 + String vendorCetegory = upParam.get("vendorCetegory").toString(); + + int gameCategory = 0; + if(vendorCetegory.equals("CASINO") && isTie.equals("N")) { + gameCategory = 1; // 카지노A + } else if(vendorCetegory.equals("CASINO") && isTie.equals("P")) { + gameCategory = 2; // 카지노B + } else if(vendorCetegory.equals("SLOT") && isTie.equals("N")) { + gameCategory = 3; // 슬롯A + } else if(vendorCetegory.equals("SLOT") && isTie.equals("P")) { + gameCategory = 4; // 슬롯B + } else { + gameCategory = 5; + } + + Credit credit = new Credit(); + credit.setSiteIdx(Integer.parseInt(upParam.get("siteIdx").toString())); + credit.setSiteId(upParam.get("siteId").toString()); + credit.setTranId((String)upParam.get("tranId")); + credit.setPreCreditAmt(siteCredit); + credit.setCreditRate(creditRate); + credit.setCreditStatus(1); + credit.setRefId(upParam.get("refId").toString()); + + if(isTransfer.equals("N")) { + credit.setTargetSiteIdx(Integer.parseInt(upParam.get("siteIdx").toString())); + credit.setTargetSiteId(upParam.get("siteId").toString()); + long creditAmt = 0; + long overCreditAmt = 0; + credit.setCreditType("CD"); + credit.setInOut("IN"); + if(upParam.containsKey("overCreditAmt")) { + log.info("["+upParam.get("tranId").toString()+"]::"+"초과당첨금처리 start"); + creditAmt = (long) Math.ceil(Double.parseDouble(upParam.get("creditAmt").toString())); + overCreditAmt = (long) Math.ceil(Double.parseDouble(upParam.get("overCreditAmt").toString())); + log.info("["+upParam.get("tranId").toString()+"]::"+"creditAmt : " + creditAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"overCreditAmt : " + overCreditAmt); + creditAmt = creditAmt + overCreditAmt; + log.info("["+upParam.get("tranId").toString()+"]::"+"합계 : " + creditAmt); + credit.setCreditAmt(creditAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"초과당첨금처리 end"); + } else { + credit.setCreditAmt((long) Math.ceil(Double.parseDouble(upParam.get("creditAmt").toString()))); + } + credit.setGameCategory(gameCategory); + creditDao.updateCreditYn(credit); + creditDao.insertCredit(credit); + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiCredit() creditDao.insertCredit()"); + } else { + credit.setTargetSiteIdx(Integer.parseInt(upParam.get("memberIdx").toString())); + credit.setTargetSiteId(upParam.get("memberId").toString()); + long creditAmt = 0; + long userAmt = 0; + long overCreditAmt = 0; + credit.setCreditType("MCD"); + credit.setInOut("IN"); + if(upParam.containsKey("overCreditAmt")) { + log.info("["+upParam.get("tranId").toString()+"]::"+"초과당첨금처리 start"); + creditAmt = (long) Math.ceil(Double.parseDouble(upParam.get("creditAmt").toString())); + userAmt = (long) Math.ceil(Double.parseDouble(upParam.get("creditAmt").toString())); + overCreditAmt = (long) Math.ceil(Double.parseDouble(upParam.get("overCreditAmt").toString())); + log.info("["+upParam.get("tranId").toString()+"]::"+"creditAmt : " + creditAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"userAmt : " + userAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"overCreditAmt : " + overCreditAmt); + creditAmt = creditAmt + overCreditAmt; + credit.setUserAmt(userAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"creditAmt 합계 : " + creditAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"userAmt 합계 : " + userAmt); + credit.setCreditAmt(creditAmt); + log.info("["+upParam.get("tranId").toString()+"]::"+"초과당첨금처리 end"); + } else { + credit.setCreditAmt((long) Math.ceil(Double.parseDouble(upParam.get("creditAmt").toString()))); + credit.setUserAmt((long) Math.ceil(Double.parseDouble(upParam.get("creditAmt").toString()))); + } + credit.setPreBalance(Long.parseLong(upParam.get("preBalance").toString())); + credit.setGameCategory(gameCategory); + creditDao.updateCreditYn(credit); + creditDao.insertCreditByCash(credit); + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiCredit() creditDao.insertCredit()"); + } + + // 포인트 처리 비동기 실행 + if(credit.getCreditAmt() > 0 && isTransfer.equals("N")) { + HashMap pointParam = new HashMap(); + pointParam.put("siteIdx", Long.parseLong(upParam.get("siteIdx").toString())); + pointParam.put("siteId", upParam.get("siteId").toString()); + pointParam.put("memberIdx", Long.parseLong(upParam.get("memberIdx").toString())); + pointParam.put("memberId", upParam.get("memberId").toString()); + pointParam.put("vendor", upParam.get("vendorCode").toString()); + pointParam.put("vendorIdx", Integer.parseInt(upParam.get("vendorIdx").toString())); + pointParam.put("tranId", upParam.get("tranId").toString()); + pointParam.put("betId", upParam.get("refId").toString()); + pointParam.put("amount", credit.getCreditAmt()); + + pointAsyncService.processPointAsync(pointParam, "updateCbApiCredit", upParam.get("tranId").toString()); + } + + siteDao.updateCbApi(upParam); + log.info("["+upParam.get("tranId").toString()+"]::"+"updateCbApiCredit() end"); + } + + + @Override + public HashMap getSiteApiInfo(HashMap sParam) { + return siteDao.getSiteApiInfo(sParam); + } + + + @Override + public HashMap getSiteApiInfo2(HashMap sParam) { + return siteDao.getSiteApiInfo2(sParam); + } + + + @Override + public void commonBetinsert(HashMap tranParam) { + // TODO Auto-generated method stub + siteDao.commonBetinsert(tranParam); + + if("credit".equals(tranParam.get("tranType").toString())) { + if(tranParam.get("detail") != null) { + siteDao.insertBetDetail(tranParam); + } + } + } + + + @Override + public void commonBetinsert2(HashMap tranParam) { + // TODO Auto-generated method stub + siteDao.commonBetinsert2(tranParam); + } + + + @Override + public Site getSiteLogin(Authentication authentication) { + return siteDao.getSiteLogin(authentication); + } + + @Override + public Site getSiteLoginApi(Map site) { + return siteDao.getSiteLoginApi(site); + } + + + @Override + public Site getGuestLogin() { + return siteDao.getGuestLogin(); + } + + + @Override + public int getSiteListCnt(SiteSearch search) { + return siteDao.getSiteListCnt(search); + } + + + @Override + public List getSiteList(SiteSearch search) { + return siteDao.getSiteList(search); + } + + + @Override + public void addProc(Site site) { + + TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + try { + siteDao.addProc(site); + siteDao.addCreditInfo(site); + siteDao.addPointInfo(site); + siteDao.addsiteFlow(site); + + //벤더 설정 + siteDao.insertVendors(site); + siteDao.insertVendorsRate(site); + siteDao.insertVendorsCodeRate(site); + + //보험관련 + siteDao.insertinsurance(site); + siteDao.insertinsurancePoint(site); + + // Add Firewall rule + try { + if (site.getSiteIp() != null && !site.getSiteIp().equals("")) { + log.info("#-super::SITE_ADD_PROC:::Call IPKit.allowInboundTraffic() ips: " + site.getSiteIp()); + IPKit.allowInboundTraffic("#-super::SITE_ADD_PROC:::", site.getSiteIp()); + log.info("#-super::SITE_ADD_PROC:::Call IPKit.allowInboundTraffic() end:"); + } + } catch (Exception e) { + System.out.println(e.toString()); + log.error("#-super::SITE_ADD_PROC:::"+ "Exception: "+e.getMessage()); + log.error("#-super::SITE_ADD_PROC:::"+ "Exception: "+e.toString()); + } + + transactionManager.commit(txStatus); + } catch(Exception e) { + System.out.println(e.toString()); + transactionManager.rollback(txStatus); + } + } + + @Override + public void addProcAPI(Site site) { + + TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + try { + siteDao.addProc(site); + siteDao.addCreditInfo(site); + siteDao.addPointInfo(site); + siteDao.addsiteFlow(site); + + //벤더 설정 + siteDao.insertVendors(site); + siteDao.insertVendorsRate(site); + siteDao.insertVendorsCodeRate(site); + + + //보험관련 + siteDao.insertinsurance(site); + siteDao.insertinsurancePoint(site); + + //IP테이블 생성 + siteDao.insertCmsIp(site); + transactionManager.commit(txStatus); + } catch(Exception e) { + System.out.println(e.toString()); + transactionManager.rollback(txStatus); + } + } + + + @Override + public Site getSiteInfoMypage(Site site) { + return siteDao.getSiteInfoMypage(site); + } + + + @Override + public long getSiteCredit(String siteId) { + return siteDao.getSiteCredit(siteId); + } + + + @Override + public long getUnderSiteCredit(String siteId) { + return siteDao.getUnderSiteCredit(siteId); + } + + @Override + public long getSitePoint(String siteId) { + return siteDao.getSitePoint(siteId); + } + + + @Override + public HashMap getCreditWait(int siteIdx) { + return siteDao.getCreditWait(siteIdx); + } + + + @Override + public int getSiteUserListCnt(SiteSearch search) { + return siteDao.getSiteUserListCnt(search); + } + + + @Override + public List getSiteUserList(SiteSearch search) { + return siteDao.getSiteUserList(search); + } + + + @Override + public int getTranCheck(String tranId) { + // TODO Auto-generated method stub + return siteDao.getTranCheck(tranId); + } + + + @Override + public void insertError(HashMap eParam) { + // TODO Auto-generated method stub + siteDao.insertError(eParam); + } + + + @Override + public int getFinalErr(String refId) { + // TODO Auto-generated method stub + return siteDao.getFinalErr(refId); + } + + + @Override + public void updateSid(Member member) { + siteDao.updateSid(member); + } + + + @Override + public long getInsureAmt(String siteId) { + return siteDao.getInsureAmt(siteId); + } + + + @Override + public long getInsurePointAmt(String siteId) { + return siteDao.getInsurePointAmt(siteId); + } + + + @Override + public List getVenderRateList(Site loginSite) { + // TODO Auto-generated method stub + return siteDao.getVenderRateList(loginSite); + } + + + @Override + public synchronized int getBetCancelCount(String betId) { + // TODO Auto-generated method stub + return siteDao.getBetCancelCount(betId); + } + + + @Override + public void updateBombKey(Member member) { + // TODO Auto-generated method stub + siteDao.updateBombKey(member); + } + + + @Override + public Member getMemByBombAccId(HashMap memParam) { + return siteDao.getMemByBombAccId(memParam); + } + + + @Override + public String getBetInfo(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getBetInfo(param); + } + + + @Override + public String getMergedBetRadarLog(String betId) { + try { + List radarLogs = callBackDao.getBetRadarLogByBetId(betId); + if(radarLogs == null || radarLogs.isEmpty()) { + return null; + } + + // 베팅과 결과를 구분하여 반환 + JSONObject responseJson = new JSONObject(); + + // 첫 번째 row: 베팅 데이터 + if(radarLogs.size() >= 1) { + String bettingStr = (String) radarLogs.get(0).get("jsonstr"); + if(bettingStr != null && !bettingStr.isEmpty()) { + JSONObject bettingJson = new JSONObject(bettingStr); + responseJson.put("betting", bettingJson); + } + } + + // 두 번째 row: 결과 데이터 (있는 경우만) + if(radarLogs.size() >= 2) { + String resultStr = (String) radarLogs.get(1).get("jsonstr"); + if(resultStr != null && !resultStr.isEmpty()) { + JSONObject resultJson = new JSONObject(resultStr); + responseJson.put("result", resultJson); + } + } + + return responseJson.toString(); + } catch(Exception e) { + log.error("getMergedBetRadarLog error: " + e.getMessage()); + return null; + } + } + + + @Override + public List getSiteFlow(Site loginSite) { + // TODO Auto-generated method stub + return siteDao.getSiteFlow(loginSite); + + } + + + @Override + public void saveVendorRate(HashMap paramMap) { + // TODO Auto-generated method stub + siteDao.saveVendorRate(paramMap); + } + + + @Override + public HashMap getEvoApiInfo() { + // TODO Auto-generated method stub + return siteDao.getEvoApiInfo(); + } + + + @Override + public String getSiteIdByRefId(String refId) { + // TODO Auto-generated method stub + return siteDao.getSiteIdByRefId(refId); + } + + + @Override + public void updateDetailLastTime(HashMap evoInfo) { + // TODO Auto-generated method stub + siteDao.updateDetailLastTime(evoInfo); + } + + + @Override + public void insertBetDetail(Map paramDerail) { + siteDao.insertBetDetail(paramDerail); + + } + + + @Override + public Site getSiteDetail(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteDetail(search); + } + + + @Override + public Site getSiteSimpleDetail(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteSimpleDetail(search); + } + + + @Override + public HashMap getVenderApiInfoByToken(Map paramV) { + // TODO Auto-generated method stub + return siteDao.getVenderApiInfoByToken(paramV); + } + + + @Override + public Site getSiteBypassword(Map siteParam) { + // TODO Auto-generated method stub + return siteDao.getSiteBypassword(siteParam); + } + + + @Override + public void updatePass(Map siteParam) { + siteDao.updatePass(siteParam); + + } + + + @Override + public void siteUpdate(String LOG_PREFIX, Site site) { + // TODO Auto-generated method stub + siteDao.siteUpdate(site); + + // Add Firewall rule + try { + if (site.getSiteIp() != null && !site.getSiteIp().equals("")) { + log.info(LOG_PREFIX+ "Call IPKit.allowInboundTraffic() ips: " + site.getSiteIp()); + IPKit.allowInboundTraffic(LOG_PREFIX, site.getSiteIp()); + log.info(LOG_PREFIX+ "Call IPKit.allowInboundTraffic() end:"); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception: "+e.getMessage()); + log.error(LOG_PREFIX+ "Exception: "+e.toString()); + } + } + + + @Override + public void saveVendorInsurePointRate(HashMap paramMap) { + // TODO Auto-generated method stub + siteDao.saveVendorInsurePointRate(paramMap); + } + + + @Override + public HashMap getDashInfo(Site loginSite) { + // TODO Auto-generated method stub + return siteDao.getDashInfo(loginSite); + } + + @Override + public HashMap getDashInfo2(Site loginSite) { + // TODO Auto-generated method stub + return siteDao.getDashInfo2(loginSite); + } + + + @Override + public HashMap getMicroApiInfo() { + // TODO Auto-generated method stub + return siteDao.getMicroApiInfo(); + } + + + @Override + public int getApiStatus(HashMap tranParam) { + // TODO Auto-generated method stub + return siteDao.getApiStatus(tranParam); + } + + + @Override + public void saveVendorInsureRate(HashMap paramMap) { + // TODO Auto-generated method stub + siteDao.saveVendorInsureRate(paramMap); + } + + + @Override + public void updateVendorUseYn(HashMap paramMap) { + // TODO Auto-generated method stub + siteDao.updateVendorUseYn(paramMap); + + } + + + @Override + public List getSiteVendorList(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteVendorList(search); + } + + + @Override + public List getVendorList(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getVendorList(search); + } + + + @Override + public void siteVenderUpdate(Vendor vendor) { + // TODO Auto-generated method stub + siteDao.siteVenderUpdate(vendor); + } + + + @Override + public HashMap getDowinApiInfo() { + // TODO Auto-generated method stub + return siteDao.getDowinApiInfo(); + } + + + @Override + public long getSiteMaxBet(HashMap sParam) { + // TODO Auto-generated method stub + return siteDao.getSiteMaxBet(sParam); + } + + @Override + public Long getUserMaxBet(HashMap sParam) { + // TODO Auto-generated method stub + return siteDao.getUserMaxBet(sParam); + } + + @Override + public synchronized int getBetCheckByHc(String refId) { + // TODO Auto-generated method stub + return siteDao.getBetCheckByHc(refId); + } + + + @Override + public void updatePragmaticId(Member member) { + // TODO Auto-generated method stub + siteDao.updatePragmaticId(member); + } + + + @Override + public HashMap getProgmaticApiInfo() { + // TODO Auto-generated method stub + return siteDao.getProgmaticApiInfo(); + } + + @Override + public HashMap getProgmaticApiInfo2() { + // TODO Auto-generated method stub + return siteDao.getProgmaticApiInfo2(); + } + + + @Override + public HashMap getSiteApiInfoByPra(HashMap sParam) { + // TODO Auto-generated method stub + return siteDao.getSiteApiInfoByPra(sParam); + } + + + @Override + public String getlastDepostId(HashMap dParam) { + // TODO Auto-generated method stub + return siteDao.getlastDepostId(dParam); + } + + + @Override + public List getNotUseMemberListProgama() { + // TODO Auto-generated method stub + return siteDao.getNotUseMemberListProgama(); + } + + + @Override + public List getGameList(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getGameList(param); + } + + + @Override + public HashMap getOnlyVenderInfo(CommonParam commonParam) { + // TODO Auto-generated method stub + return siteDao.getOnlyVenderInfo(commonParam); + } + + + @Override + public synchronized int getBotaAutoCancelCnt(String tranId) { + // TODO Auto-generated method stub + return siteDao.getBotaAutoCancelCnt(tranId); + } + + + @Override + public synchronized int getBotaBetCnt(String tranId) { + // TODO Auto-generated method stub + return siteDao.getBotaBetCnt(tranId); + } + + + @Override + public List getBotaBetListMinute() { + // TODO Auto-generated method stub + return siteDao.getBotaBetListMinute(); + } + + + @Override + public String getSiteIdByRefId2(String string) { + // TODO Auto-generated method stub + return siteDao.getSiteIdByRefId2(string); + } + + + @Override + public int getTranIdCheck(String string) { + // TODO Auto-generated method stub + return siteDao.getTranIdCheck(string); + } + + + @Override + public int getTranIdCheck2(String string) { + // TODO Auto-generated method stub + return siteDao.getTranIdCheck2(string); + } + + + @Override + public HashMap getSiteMember(String string) { + // TODO Auto-generated method stub + return siteDao.getSiteMember(string); + } + + + @Override + public void updateDebitCancel(String refId) { + // TODO Auto-generated method stub + siteDao.updateDebitCancel(refId); + } + + + @Override + public void insertSiteCallBackLog(HashMap logParam) { + // TODO Auto-generated method stub + siteDao.insertSiteCallBackLog(logParam); + } + + + @Override + public List getBetList(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getBetList(param); + } + + + @Override + public List getMonsterGameList() { + return siteDao.getMonsterGameList(); + } + + + @Override + public HashMap getProgmaticApiInfo3(String code) { + // TODO Auto-generated method stub + return siteDao.getProgmaticApiInfo3(code); + } + + + @Override + public long getBetCancelAmt(String string) { + // TODO Auto-generated method stub + return siteDao.getBetCancelAmt(string); + } + + + @Override + public int getBetIdCheck(String refId) { + // TODO Auto-generated method stub + return siteDao.getBetIdCheck(refId); + } + + + @Override + public int getBetIdCheck2(String refId) { + // TODO Auto-generated method stub + return siteDao.getBetIdCheck2(refId); + } + + + @Override + public int getTranCheck2(String betId) { + // TODO Auto-generated method stub + return siteDao.getTranCheck2(betId); + } + + + @Override + public void insertSlotCity(HashMap slotMap) { + // TODO Auto-generated method stub + siteDao.insertSlotCity(slotMap); + } + + + @Override + public void botaAutoCancel(HashMap tranParam) { + // TODO Auto-generated method stub + siteDao.botaAutoCancel(tranParam); + } + + + @Override + public void seattleCredit() { + // TODO Auto-generated method stub + siteDao.seattleCredit(); + } + + + @Override + public void updateDecimal(HashMap decimalParam) { + // TODO Auto-generated method stub + siteDao.updateDecimal(decimalParam); + } + + + @Override + public List getonlyDebitList() { + // TODO Auto-generated method stub + return siteDao.getonlyDebitList(); + } + + + @Override + public void insertAutoLose(HashMap loseCredit) { + // TODO Auto-generated method stub + siteDao.insertAutoLose(loseCredit); + } + + + @Override + public HashMap getBetCheck(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getBetCheck(param); + } + + + @Override + public int callbackTokenCheck(String token) { + // TODO Auto-generated method stub + return siteDao.callbackTokenCheck(token); + } + + + @Override + public HashMap getVenderInfo(BalanceParam param) { + // TODO Auto-generated method stub + return siteDao.getVenderInfo(param); + } + + + @Override + public String getRefIdByTranId(String tranId) { + // TODO Auto-generated method stub + return siteDao.getRefIdByTranId(tranId); + } + + + @Override + public List getCreditReSendList() { + // TODO Auto-generated method stub + return siteDao.getCreditReSendList(); + } + + + @Override + public void updateMemCancelCnt(long memberIdx) { + // TODO Auto-generated method stub + siteDao.updateMemCancelCnt(memberIdx); + } + + + @Override + public Long getMemberIdx(HashMap memParam) { + // TODO Auto-generated method stub + return siteDao.getMemberIdx(memParam); + } + + + @Override + public int insertVendorChangeBalanceLog(VendorChangeBalanceLogVo logVo) { + // TODO Auto-generated method stub + return siteDao.insertVendorChangeBalanceLog(logVo); + } + + + @Override + public HashMap getGsoftVendorInfo(String gameID) { + // TODO Auto-generated method stub + return siteDao.getGsoftVendorInfo(gameID); + } + + + @Override + public HashMap getDemoByBombAccId(HashMap memParam) { + + return siteDao.getDemoByBombAccId(memParam); + } + + + @Override + public void inserDemoUSer(String bombToken) { + + siteDao.inserDemoUSer(bombToken); + } + + + @Override + public void updateDemoUSer(HashMap memParam) { + siteDao.updateDemoUSer(memParam); + + } + + + @Override + public List getTrasferVendorList() { + + return siteDao.getTrasferVendorList(); + } + + + @Override + public List getAllMember() { + + return siteDao.getAllMember(); + } + + @Override + public List getAllMember2() { + return siteDao.getAllMember2(); + } + + + + @Override + public int gethourBetCheck(long member) { + + return siteDao.gethourBetCheck(member); + } + + + @Override + public HashMap getUserVendorInfo(HashMap memParam) { + // TODO Auto-generated method stub + return siteDao.getUserVendorInfo(memParam); + } + + + + @Override + public Member getMemberByToken(Map authParam) { + // TODO Auto-generated method stub + return siteDao.getMemberByToken(authParam); + } + + + @Override + public HashMap getSiteApiInfoByToken(Map authParam) { + // TODO Auto-generated method stub + return siteDao.getSiteApiInfoByToken(authParam); + } + + + @Override + public double getBetDepositAmt(String tranId) { + return siteDao.getBetDepositAmt(tranId); + } + + + @Override + public void insertSplusTran(Map trxParam) { + try { + siteDao.insertSplusTran(trxParam); + }catch(Exception e) { + log.info(e.toString()); + } + + } + + + @Override + public void updateSplusTran(Map trxParam) { + try { + siteDao.updateSplusTran(trxParam); + }catch(Exception e) { + log.info(e.toString()); + } + + } + + + @Override + public String getCbData(String reserve_id) { + // TODO Auto-generated method stub + return siteDao.getCbData(reserve_id); + } + + + @Override + public void updatesPurchaseId(Map trxParam) { + siteDao.updatesPurchaseId(trxParam); + + } + + + @Override + public double getBetGapAmt(String pid) { + // TODO Auto-generated method stub + return siteDao.getBetGapAmt(pid); + } + + + @Override + public void insertToken(String base64Token) { + siteDao.insertToken(base64Token); + } + + + @Override + public int getSplusToken(String base64Token) { + return siteDao.getSplusToken(base64Token); + } + + + @Override + public String getRefIdByPurchaseId(String purchase_id) { + return siteDao.getRefIdByPurchaseId(purchase_id); + } + + + @Override + public List getSplusDetailData(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getSplusDetailData(param); + } + + + @Override + public String getKorName(String t, String txt) { + String resTxt = txt; + // TODO Auto-generated method stub + if("T".equals(t)) { + resTxt= siteDao.getKorNameTeam(txt); + if(resTxt==null)resTxt = txt; + }else { + resTxt= siteDao.getKorNameLeague(txt); + if(resTxt==null)resTxt = txt; + } + return resTxt; + } + + + @Override + public void forDefaultProc(Site site) { + // TODO Auto-generated method stub + TransactionStatus txStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); + + try { + siteDao.updVendorMapForDefault(site); + siteDao.updVendorCreditRateForDefault(site); + siteDao.deleteVendorAccountForDefault(site); + + transactionManager.commit(txStatus); + } catch(Exception e) { + System.out.println(e.toString()); + transactionManager.rollback(txStatus); + } + } + + + @Override + public HashMap getBetInfoByTranId(String reference) { + return siteDao.getBetInfoByTranId(reference); + } + + + @Override + public int getSuccDebitCnt(String betId) { + // TODO Auto-generated method stub + return siteDao.getSuccDebitCnt(betId); + } + + + @Override + public HashMap getSiteVendorInfo(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getSiteVendorInfo(param); + } + + + @Override + public int updatePowerballApiInfo(HashMap registParam) { + // TODO Auto-generated method stub + return siteDao.updatePowerballApiInfo(registParam); + } + + + @Override + public List> getPowerBallInfoList(String gameType) { + // TODO Auto-generated method stub + return siteDao.getPowerBallInfoList(gameType); + } + + @Override + public HashMap getSiteApiInfoByApiKey(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getSiteApiInfoByApiKey(param); + } + + @Override + public HashMap getSiteApiInfoByCallbackKey(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getSiteApiInfoByCallbackKey(param); + } + + + @Override + public int updMemLastVendorIdx(HashMap memParam) { + // TODO Auto-generated method stub + return siteDao.updMemLastVendorIdx(memParam); + } + + + @Override + public List getVendorListByVendorKey(HashMap venderInfo) { + // TODO Auto-generated method stub + return siteDao.getVendorListByVendorKey(venderInfo); + } + + + @Override + public void vendorUpdate(HashMap venderInfo) { + siteDao.vendorUpdate(venderInfo); + + } + + + @Override + public List getNexusSkinListByVendorKey(HashMap venderInfo) { + // TODO Auto-generated method stub + return siteDao.getNexusSkinListByVendorKey(venderInfo); + } + + + @Override + public void nexusSkinUpdate(HashMap venderInfo) { + siteDao.nexusSkinUpdate(venderInfo); + } + + + @Override + public String getParseTarget() { + return siteDao.getParseTarget(); + } + + + @Override + public String getParseTargetExtr() { + return siteDao.getParseTargetExtr(); + } + + + @Override + public HashMap getParseUseYn(int siteIdx) { + return siteDao.getParseUseYn(siteIdx); + } + + + @Override + public void insertParseUse(HashMap parseParam) { + siteDao.insertParseUse(parseParam); + + } + + + @Override + public List getApiBetVendorList(int siteIdx) { + // TODO Auto-generated method stub + return siteDao.getApiBetVendorList(siteIdx); + } + + + @Override + public int getApiBetTransactionCnt(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getApiBetTransactionCnt(param); + } + + + @Override + public List getApiBetTransactionList(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getApiBetTransactionList(param); + } + + + @Override + public HashMap getParseUserYn(HashMap pum) { + return siteDao.getParseUserYn(pum); + } + + + @Override + public void setParseUserYn(HashMap pum) { + siteDao.setParseUserYn(pum); + } + + + @Override + public OTPInfo getOtpInfo(long siteIdx) { + // TODO Auto-generated method stub + return siteDao.getOtpInfo(siteIdx); + } + + + @Override + public OTPInfo getOtpInfoByManger(long siteIdx) { + // TODO Auto-generated method stub + return siteDao.getOtpInfoByManger(siteIdx); + } + + + @Override + public int registSuperOtp(OTPInfo param) { + // TODO Auto-generated method stub + return siteDao.registSuperOtp(param); + } + + + @Override + public HashMap getSiteOnlyVendorInfo(HashMap vendorParam) { + // TODO Auto-generated method stub + return siteDao.getSiteOnlyVendorInfo(vendorParam); + } + + + @Override + public TrfApiInfo getTrfApiInfo(HashMap mapParam) { + // TODO Auto-generated method stub + return siteDao.getTrfApiInfo(mapParam); + } + + + @Override + public void agentIpsUpdate(Site site) { + siteDao.agentIpsUpdate(site); + + } + + + @Override + public int insertEvoDetail(HashMap detailMap) { + // TODO Auto-generated method stub + return siteDao.insertEvoDetail(detailMap); + } + + + @Override + public HashMap getCommonApiInfo(HashMap commonParam) { + // TODO Auto-generated method stub + return siteDao.getCommonApiInfo(commonParam); + } + + + @Override + public HashMap getBeforeTranInfo(String vendorTranKey) { + // TODO Auto-generated method stub + return siteDao.getBeforeTranInfo(vendorTranKey); + } + + + @Override + public List getParseTargetGame(String gameType) { + return siteDao.getParseTargetGame(gameType); + } + + + @Override + public String getOrgDetailData(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getOrgDetailData(param); + } + + + @Override + public String getParDetailData(BetParam param) { + // TODO Auto-generated method stub + return siteDao.getParDetailData(param); + } + + + @Override + public HashMap getBetInfoByTranKey(String vendorTranKey) { + // TODO Auto-generated method stub + return siteDao.getBetInfoByTranKey(vendorTranKey); + } + + + @Override + public HashMap getParseInfo(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getParseInfo(param); + } + + + @Override + public int getBlockParseGameId(String gameId) { + // TODO Auto-generated method stub + return siteDao.getBlockParseGameId(gameId); + } + + + @Override + public HashMap getBeforeTranInfo2(String vendorTranKey) { + // TODO Auto-generated method stub + return siteDao.getBeforeTranInfo2(vendorTranKey); + } + + + @Override + public String getMemberByIdx(HashMap memParam) { + return siteDao.getMemberByIdx(memParam); + } + + + @Override + public List getSiteVendorList2(int siteIdx) { + // TODO Auto-generated method stub + return siteDao.getSiteVendorList2(siteIdx); + } + + + @Override + public List getVendorList2(int siteIdx) { + // TODO Auto-generated method stub + return siteDao.getVendorList2(siteIdx); + } + + + @Override + public void saveSvcr(HashMap paramMap, int type) { + // TODO Auto-generated method stub + siteDao.saveSvcr(paramMap); + + if(type == 0) { + Vendor vendor = new Vendor(); + vendor.setSiteIdx(Long.parseLong(paramMap.get("siteIdx").toString())); + vendor.setVendorCode(paramMap.get("vendorCode").toString()); + vendor.setVendorIdx(Long.parseLong(paramMap.get("vendorIdx").toString())); + siteDao.siteVenderUpdate(vendor); + } else { + //현쟈 설전된 코드이면 요율 변경 + int codeCheck = siteDao.siteVenderCodeCheck(paramMap); + if(codeCheck ==1) { + siteDao.saveVendorRate2(paramMap); + } + } + } + + + @Override + public String getSiteKey(HashMap paramMap) { + // TODO Auto-generated method stub + return siteDao.getSiteKey(paramMap); + } + + + @Override + public String getVendorTitle(HashMap paramMap) { + // TODO Auto-generated method stub + return siteDao.getVendorTitle(paramMap); + } + + + @Override + public Long getUserTimeout(HashMap accLog) { + // TODO Auto-generated method stub + return siteDao.getUserTimeout(accLog); + } + + + @Override + public int updateUserTimeout(HashMap accLog) { + // TODO Auto-generated method stub + return siteDao.updateUserTimeout(accLog); + } + + + @Override + public String getGameKeyByNexusGameId(String gameId) { + // TODO Auto-generated method stub + return siteDao.getGameKeyByNexusGameId(gameId); + } + + + @Override + public String getDebitIsParse(String betId) { + // TODO Auto-generated method stub + return siteDao.getDebitIsParse(betId); + } + + + @Override + public int updateParseUseYN(String useYn) { + // TODO Auto-generated method stub + return siteDao.updateParseUseYN(useYn); + } + + + @Override + public int insertTheaTrxId(HashMap param) { + // TODO Auto-generated method stub + return siteDao.insertTheaTrxId(param); + } + + + @Override + public HashMap getApiKeyInfo(String vendorTitle) { + // TODO Auto-generated method stub + return siteDao.getApiKeyInfo(vendorTitle); + } + + + @Override + public HashMap getApiKeyInfo2(HashMap keyParam) { + // TODO Auto-generated method stub + return siteDao.getApiKeyInfo2(keyParam); + } + + + @Override + public HashMap getRefBetInfoByTranId(String tranId) { + // TODO Auto-generated method stub + return siteDao.getRefBetInfoByTranId(tranId); + } + + + @Override + public int updMemberBalance(HashMap balanceMap) { + // TODO Auto-generated method stub + return siteDao.updMemberBalance(balanceMap); + } + + + @Override + public int getMemberBalance(HashMap balanceMap) { + // TODO Auto-generated method stub + return siteDao.getMemberBalance(balanceMap); + } + + + @Override + public HashMap getMemberId(String vendorUsername) { + // TODO Auto-generated method stub + return siteDao.getMemberId(vendorUsername); + } + + + @Override + public int checkMemberId(String vendorUsername) { + // TODO Auto-generated method stub + return siteDao.checkMemberId(vendorUsername); + } + + + @Override + public HashMap getNewSiteApiInfo(String vendorUsername) { + // TODO Auto-generated method stub + return siteDao.getNewSiteApiInfo(vendorUsername); + } + + + @Override + public HashMap getNewSiteVendorInfo(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getNewSiteVendorInfo(param); + } + + + @Override + public int updateTestCnt(Site site) { + // TODO Auto-generated method stub + return siteDao.updateTestCnt(site); + } + + + @Override + public int updateParseEvoYn(HashMap param) { + // TODO Auto-generated method stub + return siteDao.updateParseEvoYn(param); + } + + + @Override + public int saveParsEvoAmount(SiteSearch param) { + // TODO Auto-generated method stub + return siteDao.saveParsEvoAmount(param); + } + + + @Override + public int getUserBalance(HashMap balanceMap) { + // TODO Auto-generated method stub + return siteDao.getUserBalance(balanceMap); + } + + + @Override + public List getMyDownSite(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getMyDownSite(search); + } + + + @Override + public HashMap getCreditInfo(String siteId) { + // TODO Auto-generated method stub + return siteDao.getCreditInfo(siteId); + } + + + @Override + public int checkDownSite(Map checkDown) { + // TODO Auto-generated method stub + return siteDao.checkDownSite(checkDown); + } + + + @Override + public List getSiteTreeList(String siteId) { + // TODO Auto-generated method stub + return siteDao.getSiteTreeList(siteId); + } + + + @Override + public int getMyDownSiteCheck(Site targetsite) { + // TODO Auto-generated method stub + return siteDao.getMyDownSiteCheck(targetsite); + } + + + @Override + public void siteUpdateForAPI(Site site) { + // TODO Auto-generated method stub + siteDao.siteUpdate(site); + siteDao.insertParseUseYn(site); + } + + + @Override + public int updateSitePwd(SitePwdVO sitePwdVO) { + // TODO Auto-generated method stub + return siteDao.updateSitePwd(sitePwdVO); + } + + + @Override + public Site getSite(Site addsite) { + // TODO Auto-generated method stub + return siteDao.getSite(addsite); + } + + + @Override + public void siteVenderLobbyUpdate(Vendor vendor) { + // TODO Auto-generated method stub + siteDao.siteVenderLobbyUpdate(vendor); + } + + + @Override + public List getVendorMapList(SiteSearch search) { + // TODO Auto-generated method stub + List getVendorMapList = siteDao.getVendorMapList(search); + for(HashMap vendorMap : getVendorMapList) { + + search.setSearchValue(vendorMap.get("vendorCode").toString());; + List lobbylist = siteDao.geLobbyList(search); + + for(HashMap lobbyinfo : lobbylist) { + + //log.info(lobbyinfo.get("lobbyCode").toString()+ ","+ vendorMap.get("unionGameKey").toString()); + if(lobbyinfo.get("lobbyCode").toString().equals(vendorMap.getOrDefault("unionGameKey", "").toString())){ + + lobbyinfo.put("selected", "Y"); + }else { + lobbyinfo.put("selected", "N"); + } + } + vendorMap.put("lobbylist", lobbylist); + } + + + return getVendorMapList; + } + + + @Override + public String siteVenderRate(Vendor vendor) { + // TODO Auto-generated method stub + return siteDao.siteVenderRate(vendor); + } + + @Override + public int getBoardListCnt(BoardSearch search) { + // TODO Auto-generated method stub + return siteDao.getBoardListCnt(search); + } + + + @Override + public List> getBoardList(BoardSearch search) { + // TODO Auto-generated method stub + return siteDao.getBoardList(search); + } + + + @Override + public HashMap getBoardDetail(long boardIdx) { + // TODO Auto-generated method stub + return siteDao.getBoardDetail(boardIdx); + } + + + @Override + public int getSiteCallbackErrLogListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteCallbackErrLogListCnt(search); + } + + + @Override + public List getSiteCallbackErrLogList(SiteSearch search) { + // TODO Auto-generated method stub + List list = siteDao.getSiteCallbackErrLogList(search); + + if(search.getTopId() != null && !search.getTopId().equals("")) { + for(HashMap item : list) { + HashMap param = new HashMap<>(); + param.put("topId", search.getTopId()); + param.put("siteId", item.get("siteId").toString()); + List treeInfo = siteDao.getSiteTreeInfo(param); + log.info("treeInfo::"+treeInfo.toString()); + item.put("treeInfo", treeInfo); + } + } + + return list; + } + + + @Override + public int getUserListCnt(UserSearch search) { + // TODO Auto-generated method stub + return siteDao.getUserListCnt(search); + } + + + @Override + public List> getUserList(UserSearch search) { + List> list = siteDao.getUserList(search); + + if(search.getTopId() != null && !search.getTopId().equals("")) { + for(HashMap item : list) { + HashMap param = new HashMap<>(); + param.put("topId", search.getTopId()); + param.put("siteId", item.get("siteId").toString()); + List treeInfo = siteDao.getSiteTreeInfo(param); + item.put("treeInfo", treeInfo); + } + } + + return list; + } + + + @Override + public HashMap getUserDetail(UserSearch search) { + HashMap user = siteDao.getUserDetail(search); + + if(search.getTopId() != null && !search.getTopId().equals("")) { + HashMap param = new HashMap<>(); + param.put("topId", search.getTopId()); + param.put("siteId", user.get("siteId").toString()); + List treeInfo = siteDao.getSiteTreeInfo(param); + log.info("treeInfo::"+treeInfo.toString()); + user.put("treeInfo", treeInfo); + } + + return user; + } + + + @Override + public int getSiteListCntForApi(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteListCntForApi(search); + } + + + @Override + public List getSiteListForApi(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteListForApi(search); + } + + + @Override + public Site getSiteDetailForApi(SiteSearch search) { + Site site = siteDao.getSiteDetailForApi(search); + + if(search.getTopId() != null && !search.getTopId().equals("")) { + HashMap param = new HashMap<>(); + param.put("topId", search.getTopId()); + param.put("siteId", site.getSiteId()); + List treeInfo = siteDao.getSiteTreeInfo(param); + log.info("treeInfo::"+treeInfo.toString()); + site.setTreeInfo(treeInfo); + } + + return site; + } + + + @Override + public List getVendorListForApi(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getVendorListForApi(search); + } + + + @Override + public List getSiteVendorListForApi(SiteSearch search) { + // TODO Auto-generated method stub + return siteDao.getSiteVendorListForApi(search); + } + + + @Override + public HashMap getRefIdByVendorTranKey(String vendorTranKey) { + // TODO Auto-generated method stub + return siteDao.getRefIdByVendorTranKey(vendorTranKey); + } + + @Override + public int updateUserMaxBet(HashMap param) { + return siteDao.updateUserMaxBet(param); + } + + @Override + public int insertTranLog(HashMap logParam) { + return siteDao.insertTranLog(logParam); + } + + + @Override + public HashMap getSiteSubCredit(String siteId) { + // TODO Auto-generated method stub + return siteDao.getSiteSubCredit(siteId); + } + + + @Override + public String getBetAmountByTranParam(HashMap param) { + // TODO Auto-generated method stub + return siteDao.getBetAmountByTranParam(param); + } + +} diff --git a/src/main/java/com/bb/service/SplusService.java b/src/main/java/com/bb/service/SplusService.java new file mode 100644 index 0000000..2966b98 --- /dev/null +++ b/src/main/java/com/bb/service/SplusService.java @@ -0,0 +1,24 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.Map; + +import org.json.JSONObject; + +public interface SplusService { + + void insertSplus(HashMap tranParam, JSONObject paramjson); + + void updateSplus(HashMap tranParam, JSONObject paramjson); + + void cancelSplus(HashMap tranParam); + + int getReserveCnt(Map trxParam); + + int getCommitCnt(Map trxParam); + + int getDeReverseCnt(Map trxParam); + + int getCustomerCnt(Map trxParam); + +} diff --git a/src/main/java/com/bb/service/SplusServiceImpl.java b/src/main/java/com/bb/service/SplusServiceImpl.java new file mode 100644 index 0000000..97aabca --- /dev/null +++ b/src/main/java/com/bb/service/SplusServiceImpl.java @@ -0,0 +1,242 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.Map; + +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.bb.dao.SplusDao; + +import lombok.extern.slf4j.Slf4j; +@Slf4j +@Service +public class SplusServiceImpl implements SplusService { + + @Autowired + SplusDao splusDao; + + @Override + public void insertSplus(HashMap tranParam, JSONObject paramjson) { + + Map splusBetParam = new HashMap(); + + splusBetParam.put("refId", tranParam.get("refId").toString()); + splusBetParam.put("siteIdx", tranParam.get("siteIdx")); + splusBetParam.put("memberIdx", tranParam.get("memberIdx")); + splusBetParam.put("memberId", tranParam.get("memberId").toString()); + splusBetParam.put("betStatus", 0); + + + + try { + //한글 치환 + org.json.JSONObject bets = paramjson.getJSONObject("Bets"); + org.json.JSONObject bet = bets.getJSONObject("Bet"); + splusBetParam.put("realAmount", bet.get("RealAmount").toString()); + splusBetParam.put("creationDate", bet.get("CreationDate").toString()); + splusBetParam.put("betOdds", bet.getDouble("OddsDec")); + splusBetParam.put("gain", bet.get("Gain").toString()); + + //싱글 베팅 + if(bet.has("Lines")) { + + splusBetParam.put("betType", "M"); + + + org.json.JSONArray lines = bet.getJSONArray("Lines"); + for(int i=0;i 0) { + splusBetParam.put("betStatus", 1); + }else { + splusBetParam.put("betStatus", -1); + } + org.json.JSONObject purchases = credits.getJSONObject("Purchases"); + org.json.JSONObject purchase = purchases.getJSONObject("Purchase"); + org.json.JSONObject selections = purchase.getJSONObject("Selections"); + //싱글 베팅 + + org.json.JSONObject selection = selections.getJSONObject("Selection"); + if(selection ==null) { // 경기 결과 여러개 + org.json.JSONArray selectionArray = selections.getJSONArray("Selection"); + for(int i=0;i getSiteDailyReportList(SiteSearch search); + + int getVendorDailyReportListCnt(SiteSearch search); + + List getVendorDailyReportList(SiteSearch search); + + List getBottomSiteDailyReportList(SiteSearch search); + + HashMap getMonthCredit(SiteSearch search); + + List getUserDailyReportList(SiteSearch search); + + List getUserReportSum(SiteSearch search); + + List getAdminPushInfo(); + + int getAgentReportCnt(SiteSearch search); + + List getAgentReportList(SiteSearch search); + + int getAgentReportCnt2(SiteSearch search); + + List getAgentReportList2(SiteSearch search); + + HashMap getAgentReportTotal(SiteSearch search); + + + + String getlastMonth(SiteSearch search); + + List getVendorDailyReportListDay(SiteSearch search); + + List getVendorDailyReportListMonth(SiteSearch search); + + List getVendorDailyReportListDaySUM(SiteSearch search); + + List getVendorDailyReportListMonthSUM(SiteSearch search); + + List getSiteReportList(SiteSearch search); + + List getSiteReportListSum(SiteSearch search); + + List getSiteReportMemList(SiteSearch search); + + List getSiteReportMemListSum(SiteSearch search); + + List getSiteReportListToDay(SiteSearch search); + + List getSiteReportListSumToDay(SiteSearch search); + + List getDashBoardList(SiteSearch search); + + List getDashBoardMonth(SiteSearch search); + + HashMap getYdayBetInfoBySite(Site targetSite); + + HashMap getMonthBetInfoBySite(Site targetSite); + + HashMap getYdayBetInfoByUser(HashMap targetUser); + + HashMap getMonthBetInfoByUser(HashMap targetUser); + + HashMap getVendorDailyReportMonthByParse(SiteSearch search); + + List getVendorDailyReportListDayByParse(SiteSearch search); + + HashMap getHybridReport(ReportSearch search); + + List getHybridReportList(@Valid ReportSearch search); + + HashMap getHybridReportTotal(@Valid ReportSearch search); + +} diff --git a/src/main/java/com/bb/service/StatServiceImpl.java b/src/main/java/com/bb/service/StatServiceImpl.java new file mode 100644 index 0000000..668a028 --- /dev/null +++ b/src/main/java/com/bb/service/StatServiceImpl.java @@ -0,0 +1,229 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.bb.dao.StatDao; +import com.bb.model.ReportSearch; +import com.bb.model.Site; +import com.bb.model.SiteSearch; + +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; + + +@Slf4j +@Service +public class StatServiceImpl implements StatService{ + + @Autowired + private StatDao statDao; + + @Override + public int getSiteDailyReportListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getSiteDailyReportListCnt(search); + } + + @Override + public List getSiteDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getSiteDailyReportList(search); + } + + @Override + public int getVendorDailyReportListCnt(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportListCnt(search); + } + + @Override + public List getVendorDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportList(search); + } + + @Override + public List getBottomSiteDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getBottomSiteDailyReportList(search); + } + + @Override + public HashMap getMonthCredit(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getMonthCredit(search); + } + + @Override + public List getUserDailyReportList(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getUserDailyReportList(search); + } + + @Override + public List getUserReportSum(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getUserReportSum(search); + } + + @Override + public List getAdminPushInfo() { + // TODO Auto-generated method stub + return statDao.getAdminPushInfo(); + } + + @Override + public int getAgentReportCnt(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getAgentReportCnt(search); + } + + @Override + public List getAgentReportList(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getAgentReportList(search); + } + + @Override + public int getAgentReportCnt2(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getAgentReportCnt2(search); + } + + @Override + public List getAgentReportList2(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getAgentReportList2(search); + } + + @Override + public HashMap getAgentReportTotal(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getAgentReportTotal(search); + } + + @Override + public String getlastMonth(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getlastMonth(search); + } + + @Override + public List getVendorDailyReportListDay(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportListDay(search); + } + + @Override + public List getVendorDailyReportListMonth(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportListMonth(search); + } + + @Override + public List getVendorDailyReportListDaySUM(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportListDaySUM(search); + } + + @Override + public List getVendorDailyReportListMonthSUM(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportListMonthSUM(search); + } + + @Override + public List getSiteReportList(SiteSearch search) { + return statDao.getSiteReportList(search); + } + + @Override + public List getSiteReportListSum(SiteSearch search) { + return statDao.getSiteReportListSum(search); + } + + @Override + public List getSiteReportMemList(SiteSearch search) { + return statDao.getSiteReportMemList(search); + } + + @Override + public List getSiteReportMemListSum(SiteSearch search) { + return statDao.getSiteReportMemListSum(search); + } + + @Override + public List getSiteReportListToDay(SiteSearch search) { + return statDao.getSiteReportListToDay(search); + } + + @Override + public List getSiteReportListSumToDay(SiteSearch search) { + return statDao.getSiteReportListSumToDay(search); + } + + @Override + public List getDashBoardList(SiteSearch search) { + return statDao.getDashBoardList(search); + } + + @Override + public List getDashBoardMonth(SiteSearch search) { + return statDao.getDashBoardMonth(search); + } + + @Override + public HashMap getYdayBetInfoBySite(Site targetSite) { + return statDao.getYdayBetInfoBySite(targetSite); + } + + @Override + public HashMap getMonthBetInfoBySite(Site targetSite) { + return statDao.getMonthBetInfoBySite(targetSite); + } + + @Override + public HashMap getYdayBetInfoByUser(HashMap targetUser) { + return statDao.getYdayBetInfoByUser(targetUser); + } + + @Override + public HashMap getMonthBetInfoByUser(HashMap targetUser) { + return statDao.getMonthBetInfoByUser(targetUser); + } + + @Override + public HashMap getVendorDailyReportMonthByParse(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportMonthByParse(search); + } + + @Override + public List getVendorDailyReportListDayByParse(SiteSearch search) { + // TODO Auto-generated method stub + return statDao.getVendorDailyReportListDayByParse(search); + } + + @Override + public HashMap getHybridReport(ReportSearch search) { + // TODO Auto-generated method stub + return statDao.getHybridReport(search); + } + + @Override + public List getHybridReportList(@Valid ReportSearch search) { + // TODO Auto-generated method stub + return statDao.getHybridReportList(search); + } + + @Override + public HashMap getHybridReportTotal(@Valid ReportSearch search) { + // TODO Auto-generated method stub + return statDao.getHybridReportTotal(search); + } + +} diff --git a/src/main/java/com/bb/service/SvendorService.java b/src/main/java/com/bb/service/SvendorService.java new file mode 100644 index 0000000..7a95a43 --- /dev/null +++ b/src/main/java/com/bb/service/SvendorService.java @@ -0,0 +1,19 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.Game; + +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; + +public interface SvendorService { + + JSONObject getDetail(HashMap betInfo) throws JSONException; + + JSONObject create(String LOG_PREFIX, HashMap apiInfo); + List gameList(String LOG_PREFIX, HashMap apiInfo); + String playUrl(String LOG_PREFIX, HashMap apiInfo); + JSONObject getDetail(String LOG_PREFIX, HashMap apiInfo); +} diff --git a/src/main/java/com/bb/service/SvendorServiceImpl.java b/src/main/java/com/bb/service/SvendorServiceImpl.java new file mode 100644 index 0000000..d9cd9eb --- /dev/null +++ b/src/main/java/com/bb/service/SvendorServiceImpl.java @@ -0,0 +1,291 @@ +package com.bb.service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import io.netty.channel.ConnectTimeoutException; +import io.netty.handler.timeout.ReadTimeoutException; +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.Game; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class SvendorServiceImpl implements SvendorService { + + @Autowired + WebClient webClient; + + + @Override + public JSONObject getDetail(HashMap betInfo) throws JSONException { + JSONObject resJson = new JSONObject(); + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("trid", betInfo.get("vendorTranKey").toString()); + + HttpHeaders header = new HttpHeaders(); + header.set("Authorization", betInfo.get("vendorApiKey").toString()); + header.set("Content-Type", "application/x-www-form-urlencoded"); + + try { + ResponseEntity responseEntity = webClient.post() + .uri(betInfo.get("vendorApiUrl").toString()+"/transaction-single") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + + log.info(responseEntity.getBody()); + resJson = new JSONObject(responseEntity.getBody()); + + } catch(WebClientResponseException e) { + log.error("getDetail WebClientResponseException: " + e.getMessage()); + log.error("getDetail status code: " + e.getStatusCode().value()); + log.error("getDetail response body: " + e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("getDetail ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof ReadTimeoutException) { + log.error("getDetail ReadTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error("getDetail InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.error("getDetail Exception::"+e.getMessage()); + } + return resJson.getJSONObject("data").getJSONObject("gameDetail"); + } + + + @Override + public JSONObject create(String LOG_PREFIX, HashMap apiInfo) { + JSONObject resJson = new JSONObject(); + + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("userid", apiInfo.get("userid").toString()); + parameters.add("nickname", apiInfo.get("nickname").toString()); + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/x-www-form-urlencoded"); + header.set("Authorization", apiInfo.get("apiKey").toString()); + log.info(LOG_PREFIX+ "create::Request::"+parameters.toString()); + + try { + ResponseEntity responseEntity = webClient.post() + .uri(apiInfo.get("apiBaseUrl").toString()+"/create") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + log.info(LOG_PREFIX+ "create::Response::"+responseEntity.getBody()); + resJson = new JSONObject(responseEntity.getBody()); + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "create WebClientResponseException: " + e.getMessage()); + log.error(LOG_PREFIX+ "create status code: " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "create response body: " + e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "create ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "create ReadTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "create InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.info(LOG_PREFIX+ "create::Exception::"+e.getMessage()); + } + + return resJson; + } + + + @Override + public List gameList(String LOG_PREFIX, HashMap apiInfo) { + List gameList = null; + + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("vendor", apiInfo.get("vendor").toString()); + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/x-www-form-urlencoded"); + header.set("Authorization", apiInfo.get("apiKey").toString()); + log.info(LOG_PREFIX+ "gameList::Request::"+parameters.toString()); + + try { + ResponseEntity responseEntity = webClient.post() + .uri(apiInfo.get("apiBaseUrl").toString()+"/gamelist") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + JSONObject resJson = new JSONObject(responseEntity.getBody()); + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "gameList::Response::code::"+resJson.getInt("code")); + log.info(LOG_PREFIX+ "gameList::Response::msg::"+resJson.getString("msg")); + JSONArray games = resJson.getJSONArray("data"); + int length = games.length(); + gameList = new ArrayList<>(); + + for(int i=0; i apiInfo) { + String url = null; + + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("userid", apiInfo.get("userid").toString()); + parameters.add("userip", apiInfo.get("userip").toString()); + parameters.add("vendor", apiInfo.get("vendor").toString()); + parameters.add("game", apiInfo.get("game").toString()); + if("Evolution".equals(apiInfo.get("vendor").toString())) { + parameters.add("skin", apiInfo.get("skin").toString()); + } + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/x-www-form-urlencoded"); + header.set("Authorization", apiInfo.get("apiKey").toString()); + log.info(LOG_PREFIX+ "playUrl::Request::"+parameters.toString()); + + try { + ResponseEntity responseEntity = webClient.post() + .uri(apiInfo.get("apiBaseUrl").toString()+"/play") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + log.info(LOG_PREFIX+ "playUrl::Response::"+responseEntity.getBody()); + JSONObject resJson = new JSONObject(responseEntity.getBody()); + if(resJson.getInt("code") == 0) { + url = resJson.getString("URL"); + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "playUrl WebClientResponseException: " + e.getMessage()); + log.error(LOG_PREFIX+ "playUrl status code: " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "playUrl response body: " + e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "playUrl ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "playUrl ReadTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "playUrl InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.info(LOG_PREFIX+ "playUrl::Exception::"+e.getMessage()); + } + + return url; + } + + + @Override + public JSONObject getDetail(String LOG_PREFIX, HashMap apiInfo) { + JSONObject dataObj = null; + + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("trid", apiInfo.get("uuid").toString()); + + HttpHeaders header = new HttpHeaders(); + header.set("Content-Type", "application/x-www-form-urlencoded"); + header.set("Authorization", apiInfo.get("vendorApiKey").toString()); + log.info(LOG_PREFIX+ "getDetail::Request::"+parameters.toString()); + + try { + ResponseEntity responseEntity = webClient.post() + .uri(apiInfo.get("vendorApiUrl").toString()+"/transaction-single") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + JSONObject resJson = new JSONObject(responseEntity.getBody()); + log.info(LOG_PREFIX+ "getDetail::Response::"+resJson); + int resCode = resJson.getInt("code"); + String resMsg = resJson.getString("msg"); + log.info(LOG_PREFIX+ "getDetail::Response::Code::"+resCode); + log.info(LOG_PREFIX+ "getDetail::Response::Message::"+resMsg); + if(resCode == 0) { + dataObj = resJson.getJSONObject("data"); + } + } catch(WebClientResponseException e) { + log.error(LOG_PREFIX+ "getDetail WebClientResponseException: " + e.getMessage()); + log.error(LOG_PREFIX+ "getDetail status code: " + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "getDetail response body: " + e.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error(LOG_PREFIX+ "getDetail ConnectTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof ReadTimeoutException) { + log.error(LOG_PREFIX+ "getDetail ReadTimeoutException::"+rae.getMessage()); + } + if(rae.getCause() instanceof InterruptedException) { + log.error(LOG_PREFIX+ "getDetail InterruptedException::"+rae.getMessage()); + } + } catch (Exception e) { + log.info(LOG_PREFIX+ "getDetail::Exception::"+e.getMessage()); + } + + return dataObj; + } +} diff --git a/src/main/java/com/bb/service/ThenutService.java b/src/main/java/com/bb/service/ThenutService.java new file mode 100644 index 0000000..8d8ac6f --- /dev/null +++ b/src/main/java/com/bb/service/ThenutService.java @@ -0,0 +1,27 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONObject; + +import com.bb.model.Game; + +public interface ThenutService { + + JSONObject getAgent(String LOG_PREFIX, HashMap apiInfo); + + JSONObject getUser(String LOG_PREFIX, HashMap apiInfo); + + JSONObject createUser(String LOG_PREFIX, HashMap apiInfo); + + String createUserToken(String LOG_PREFIX, HashMap apiInfo); + + List getGameList(String LOG_PREFIX, HashMap apiInfo); + + String getGameUrl(String LOG_PREFIX, HashMap apiInfo); + + JSONObject getBetDetail(String LOG_PREFIX, HashMap apiInfo); + + String getBetDetailUrl(String LOG_PREFIX, HashMap apiInfo); +} diff --git a/src/main/java/com/bb/service/ThenutServiceImpl.java b/src/main/java/com/bb/service/ThenutServiceImpl.java new file mode 100644 index 0000000..fecf497 --- /dev/null +++ b/src/main/java/com/bb/service/ThenutServiceImpl.java @@ -0,0 +1,470 @@ +package com.bb.service; + +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.Game; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class ThenutServiceImpl implements ThenutService { + + @Autowired + WebClient webClient; + + @Override + public JSONObject getAgent(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getAgent::"; + JSONObject responseObj = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/agent"; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return responseObj; + } + + @Override + public JSONObject getUser(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getUser::"; + JSONObject responseObj = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/user?"; + String param = "username="+apiInfo.get("apiUsername"); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return responseObj; + } + + @Override + public JSONObject createUser(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "createUser::"; + JSONObject responseObj = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/user"; + + try { + JSONObject params = new JSONObject(); + params.put("username", apiInfo.get("apiUsername")); + params.put("nickname", apiInfo.get("apiNickname")); + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + log.info(LOG_PREFIX+ "params::"+params.toString()); + + ResponseEntity resEntity = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return responseObj; + } + + @Override + public String createUserToken(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "createUserToken::"; + String token = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/user/token"; + + try { + JSONObject params = new JSONObject(); + params.put("vendorCode", apiInfo.get("apiVendor")); + params.put("username", apiInfo.get("apiUsername")); + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + log.info(LOG_PREFIX+ "params::"+params.toString()); + + ResponseEntity resEntity = webClient.patch() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params.toString()) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + token = responseObj.getString("token"); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return token; + } + + @Override + public List getGameList(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getGameList::"; + List gameList = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/game?"; + String param = "vendorCode="+apiInfo.get("apiVendor"); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONArray jsonArr = new JSONArray(resEntity.getBody()); + int length = jsonArr.length(); + gameList = new ArrayList<>(); + + for(int i=0; i apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getGameUrl::"; + String gameUrl = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/game/url?"; + String param = "gameCode="+apiInfo.get("apiGameCode")+"&vendorCode="+apiInfo.get("apiVendor") + +"&token="+apiInfo.get("apiUserToken"); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + gameUrl = responseObj.getString("url"); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return gameUrl; + } + + @Override + public JSONObject getBetDetail(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getBetDetail::"; + JSONObject detailObj = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/bet/"+apiInfo.get("betId")+"/result"; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + String value = responseObj.getString("value"); + JSONObject valueObj = new JSONObject(value); + detailObj = valueObj.optJSONObject("detail").optJSONObject("data"); + log.info(LOG_PREFIX+ "Detail Obj : " + detailObj.toString()); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return detailObj; + } + + @Override + public String getBetDetailUrl(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getBetDetailUrl::"; + String detailUrl = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + String apiKey = "Bearer "+apiInfo.get("apiKey").toString(); + headers.set("Authorization", apiKey); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/bet/"+apiInfo.get("betId")+"/result/url"; + log.info(LOG_PREFIX+ "apiUrl::"+apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + detailUrl = responseObj.getString("value"); + log.info(LOG_PREFIX+ "Detail Url : " + detailUrl); + } + } catch (WebClientResponseException wce) { + log.error(LOG_PREFIX+ "WebClientResponseException::"+wce.getMessage()); + log.error(LOG_PREFIX+ "status code::"+wce.getStatusCode().value()); + log.error(LOG_PREFIX+ "response body::"+wce.getResponseBodyAsString()); + } catch (WebClientRequestException rae) { + if(rae.getCause() instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::"+rae.getMessage()); + } + + if(rae.getCause() instanceof io.netty.handler.timeout.ReadTimeoutException) { + 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.getMessage()); + e.printStackTrace(); + } + + return detailUrl; + } + +} diff --git a/src/main/java/com/bb/service/TowerService.java b/src/main/java/com/bb/service/TowerService.java new file mode 100644 index 0000000..e724a15 --- /dev/null +++ b/src/main/java/com/bb/service/TowerService.java @@ -0,0 +1,14 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import com.bb.model.Game; + +public interface TowerService { + + String getLaunchUrl(HashMap venderInfo); + + List getGameList(HashMap venderInfo); + +} diff --git a/src/main/java/com/bb/service/TowerServiceImpl.java b/src/main/java/com/bb/service/TowerServiceImpl.java new file mode 100644 index 0000000..40f5b20 --- /dev/null +++ b/src/main/java/com/bb/service/TowerServiceImpl.java @@ -0,0 +1,137 @@ +package com.bb.service; + +import java.net.SocketTimeoutException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +import org.apache.http.conn.ConnectTimeoutException; +import org.codehaus.jettison.json.JSONArray; +import org.codehaus.jettison.json.JSONException; +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.HttpMethod; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; + +import com.bb.model.Game; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class TowerServiceImpl implements TowerService { + + @Autowired + WebClient webClient; + + + @Override + public String getLaunchUrl(HashMap venderInfo) { + String launchUrl=""; + try { + String responseBody = webClient.get() + .uri(venderInfo.get("gameApiUrl").toString()) + .header("Authorization", venderInfo.get("vendorApiKey").toString()) + .retrieve() + .bodyToMono(String.class) + .block(); + + log.info(responseBody); + JSONObject resJson = new JSONObject(responseBody); + launchUrl = resJson.getString("url"); + } catch (WebClientRequestException wcre) { + Throwable cause = wcre.getCause(); + if(cause instanceof org.apache.http.conn.ConnectTimeoutException) { + log.error("TOWER_API::getLaunchUrl::[ConnectTimeoutException]"+wcre.getMessage()); + } else if(cause instanceof java.net.SocketTimeoutException) { + log.error("TOWER_API::getLaunchUrl::[SocketTimeoutException]"+wcre.getMessage()); + } else if(cause instanceof InterruptedException) { + log.error("TOWER_API::getLaunchUrl::[InterruptedException]"+wcre.getMessage()); + } else { + log.error("TOWER_API::getLaunchUrl::WebClientRequestException::"+wcre.toString()); + } + } catch (WebClientResponseException wre) { + String str = wre.getResponseBodyAsString(); + log.error("TOWER_API::getLaunchUrl::WebClientResponseException::"+str); + } catch (JSONException je) { + je.printStackTrace(); + } catch (Exception e) { + log.error("TOWER_API::getLaunchUrl::Exception::"+e.toString()); + e.printStackTrace(); + } + return launchUrl; + } + + + @Override + public List getGameList(HashMap venderInfo) { + // https://to-api.com/v2/games?site_code=tripleopr01&vendorCode=pp + List gameList = null; + try { + String url = venderInfo.get("vendorApiUrl").toString()+"/v2/games?site_code="+venderInfo.get("vendorApiId").toString()+"&vendorCode="+venderInfo.get("vendorGameCode").toString(); + + String responseBody = webClient.get() + .uri(url) + .header("Authorization", venderInfo.get("vendorApiKey").toString()) + .retrieve() + .bodyToMono(String.class) + .block(); + + JSONArray games = new JSONArray(responseBody); + int length = games.length(); + log.info("TOWER_API::gameList::Game List length: " + length); + + if(length > 0) { + gameList = new ArrayList<>(); + for(int i=0; i gameList(String LOG_PREFIX, TplusApiInfo apiInfo); + + String getGameLink(String LOG_PREFIX, TplusApiInfo apiInfo); + + String getComanyBalance(HashMap vendor); + + String getDetails(String LOG_PREFIX, TplusApiInfo apiInfo); +} diff --git a/src/main/java/com/bb/service/TplusServiceImpl.java b/src/main/java/com/bb/service/TplusServiceImpl.java new file mode 100644 index 0000000..b6b9b19 --- /dev/null +++ b/src/main/java/com/bb/service/TplusServiceImpl.java @@ -0,0 +1,655 @@ +package com.bb.service; + +import java.net.SocketTimeoutException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + +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.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.ResourceAccessException; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.util.UriComponentsBuilder; + +import com.bb.dao.SiteDao; +import com.bb.dao.TplusDao; +import com.bb.model.Game; +import com.bb.model.TplusApiInfo; +import com.bb.model.VendorChangeBalanceLogVo; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class TplusServiceImpl implements TplusService { + + @Autowired + private TplusDao tplusDao; + + @Autowired + private SiteDao siteDao; + + @Autowired + WebClient webClient; + + + @Override + public Long getBalanceUser(String LOG_PREFIX, TplusApiInfo apiInfo) { + JSONObject resJson = null; + Long balance = null; + LOG_PREFIX = LOG_PREFIX+"tplus::getBalanceUser::"; + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+apiInfo.getApiAuthKey()); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/Balance"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getApiUsername()); + + HttpEntity> entity = new HttpEntity<>(params, header); + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "code: " + resJson.getInt("code")); + log.info(LOG_PREFIX+ "message: " + resJson.getString("message")); + balance = resJson.getLong("total_balance"); + } else { + balance = 0L; + log.error(LOG_PREFIX+ "code: " + resJson.getInt("code")); + log.error(LOG_PREFIX+ "message: " + resJson.getString("message")); + } + } catch (ResourceAccessException rae) { + 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()); + } + balance = 0L; + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(LOG_PREFIX+ "HttpClientErrorException::"+str); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + } + + return balance; + } + + @Override + public String depositUser(String LOG_PREFIX, TplusApiInfo apiInfo, Long amount) { + JSONObject resJson = null; + String resultCode = "0"; + + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+apiInfo.getApiAuthKey()); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/Deposit"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getApiUsername()); + params.add("amount", amount.longValue()); + params.add("unique_key", String.valueOf(System.currentTimeMillis())); + HttpEntity> entity = new HttpEntity<>(params, header); + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "depositParams::"+params.toString()); + + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info("## Tplus API ## depositUser() code: " + resJson.getInt("code")); + log.info("## Tplus API ## depositUser() message: " + resJson.getString("message")); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount.intValue()) + .reqAt(apiInfo.getReqAt()) + .reqStatus("SUCC") + .reqMsg(resJson.getString("message")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + + } else { + resultCode = Integer.toString(resJson.getInt("code")); + log.info("## Tplus API ## depositUser() code: " + resJson.getInt("code")); + log.info("## Tplus API ## depositUser() message: " + resJson.getString("message")); + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount.intValue()) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(resJson.getString("message")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[InterruptedException]"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount.intValue()) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + resultCode = "-1"; + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[HttpClientErrorException]"+str); + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount.intValue()) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(str) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + resultCode = "-1"; + } catch (Exception e) { + log.error("#-depositProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[Exception]"+e.toString()); + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("deposit") + .amount(amount.intValue()) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("Exception e") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + e.printStackTrace(); + resultCode = "-1"; + } + + return resultCode; + } + + @Override + public String withdrawUser(String LOG_PREFIX, TplusApiInfo apiInfo) { + JSONObject resJson = null; + String resultCode = "0"; + + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+apiInfo.getApiAuthKey()); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/Withdraw"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("username", apiInfo.getApiUsername()); + params.add("unique_key", String.valueOf(System.currentTimeMillis())); + HttpEntity> entity = new HttpEntity<>(params, header); + + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info("## Tplus API ## withdrawUser() code: " + resJson.getInt("code")); + log.info("## Tplus API ## withdrawUser() message: " + resJson.getString("message")); + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("SUCC") + .reqMsg(resJson.getString("message")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } else { + resultCode = Integer.toString(resJson.getInt("code")); + log.info("## Tplus API ## withdrawUser() code: " + resJson.getInt("code")); + log.info("## Tplus API ## withdrawUser() message: " + resJson.getString("message")); + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(resJson.getString("resultMessage")) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + } + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[InterruptedException]"+rae.getMessage()); + } + + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("TimeoutException") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + resultCode = "-1"; + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[HttpClientErrorException]"+str); + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg(str) + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + resultCode = "-1"; + } catch (Exception e) { + log.error("#-withdrawProc::"+apiInfo.getSiteIdx()+"::"+apiInfo.getMemberIdx()+"::"+apiInfo.getReqAt()+"::tplus::"+ "[Exception]"+e.toString()); + VendorChangeBalanceLogVo logVo = VendorChangeBalanceLogVo.builder() + .siteIdx(apiInfo.getSiteIdx()) + .memberIdx(apiInfo.getMemberIdx()) + .vendor("tplus") + .vendorApiId(apiInfo.getClientId()) + .reqType("withdrawAll") + .amount(0) + .reqAt(apiInfo.getReqAt()) + .reqStatus("FAIL") + .reqMsg("Exception e") + .build(); + siteDao.insertVendorChangeBalanceLog(logVo); + e.printStackTrace(); + resultCode = "-1"; + } + + return resultCode; + } + + @Override + public List gameList(String LOG_PREFIX, TplusApiInfo apiInfo) { + JSONObject resJson = null; + List gameList = null; + LOG_PREFIX = LOG_PREFIX+"tplus::gameList::"; + + try { + + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+apiInfo.getApiAuthKey()); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/Games"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("thirdparty", apiInfo.getThirdparty()); + HttpEntity> entity = new HttpEntity<>(params, header); + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "result: " + resJson.getString("message")); + gameList = new ArrayList<>(); + JSONArray games = resJson.getJSONArray("data"); + int length = games.length(); + + for(int i=0; i params = new LinkedMultiValueMap<>(); + params.add("thirdparty", apiInfo.getThirdparty()); + params.add("uuid", apiInfo.getUuid()); + params.add("username", apiInfo.getApiUsername()); + HttpEntity> entity = new HttpEntity<>(params, header); + + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "message: " + resJson.getString("message")); + gameUrl = resJson.getString("url"); + } else { + log.error(LOG_PREFIX+ "code: " + resJson.getInt("code")); + log.error(LOG_PREFIX+ "message: " + resJson.getString("message")); + } + } catch (ResourceAccessException rae) { + 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(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(LOG_PREFIX+ "HttpClientErrorException::"+str); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + } + + return gameUrl; + } + + @Override + public String getComanyBalance(HashMap vendor) { + JSONObject resJson = null; + String balance = "0"; + + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+vendor.get("key").toString()); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl("http://api.seven-gameapi.com/AgentBalance"); + + + HttpEntity> entity = new HttpEntity<>(null, header); + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue("") + .retrieve() + .toEntity(String.class) + .block(); + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info("## Tplus API ## getBalanceUser() code: " + resJson.getInt("code")); + log.info("## Tplus API ## getBalanceUser() message: " + resJson.getString("message")); + balance = resJson.get("agent_balance").toString(); + } else { + balance = "0"; + log.info("## Tplus API ## getBalanceUser() code: " + resJson.getInt("code")); + log.info("## Tplus API ## getBalanceUser() message: " + resJson.getString("message")); + } + } catch (ResourceAccessException rae) { + if(rae.getCause() instanceof ConnectTimeoutException) { + log.error("[ConnectTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof SocketTimeoutException) { + log.error("[SocketTimeoutException]"+rae.getMessage()); + } + + if(rae.getCause() instanceof InterruptedException) { + log.error("[InterruptedException]"+rae.getMessage()); + } + balance = "0"; + } catch(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(str); + } catch (Exception e) { + log.error(e.toString()); + e.printStackTrace(); + } + + return balance; + } + + @Override + public String getDetails(String LOG_PREFIX, TplusApiInfo apiInfo) { + JSONObject resJson = null; + String detailUrl = null; + LOG_PREFIX = LOG_PREFIX+"tplus::getDetails::"; + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer "+apiInfo.getApiAuthKey()); + + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiInfo.getApiBaseUrl() + "/Details"); + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("pair_transaction_key", apiInfo.getPairTransactionKey()); + HttpEntity> entity = new HttpEntity<>(params, header); + + ResponseEntity response = null; + try { + response = webClient.post() + .uri(builder.toUriString()) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + resJson = new JSONObject(response != null ? response.getBody() : "{}"); + } catch (Exception ex) { + Throwable cause = ex.getCause(); + if (cause instanceof ConnectTimeoutException || cause instanceof java.net.SocketTimeoutException || cause instanceof InterruptedException) { + throw new ResourceAccessException(ex.getMessage(), new java.io.IOException(cause)); + } + throw ex; + } + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "message: " + resJson.getString("message")); + detailUrl = resJson.getString("url"); + log.info(LOG_PREFIX+ "detailUrl: " + detailUrl); + } else { + log.error(LOG_PREFIX+ "code: " + resJson.getInt("code")); + log.error(LOG_PREFIX+ "message: " + resJson.getString("message")); + } + } catch (ResourceAccessException rae) { + 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(HttpClientErrorException hee) { + String str = hee.getResponseBodyAsString(); + log.error(LOG_PREFIX+ "HttpClientErrorException::"+str); + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.toString()); + e.printStackTrace(); + } + + return detailUrl; + } + +} diff --git a/src/main/java/com/bb/service/TransService.java b/src/main/java/com/bb/service/TransService.java new file mode 100644 index 0000000..a2376c8 --- /dev/null +++ b/src/main/java/com/bb/service/TransService.java @@ -0,0 +1,57 @@ +package com.bb.service; + +import java.util.HashMap; +import java.util.List; + +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; + +import com.bb.model.BetParam; +import com.bb.model.NexusApiInfo; +import com.bb.model.TransSearchVO; + +public interface TransService { + + int getTransBetListCnt(TransSearchVO search); + + List> getTransBetList(TransSearchVO search); + + HashMap getTransBetListSum(TransSearchVO search); + + int getTransBetFastListCnt(TransSearchVO search); + + List> getTransBetFastList(TransSearchVO search); + + HashMap getBetListItem(TransSearchVO search); + + HashMap getTransBetFastListSum(TransSearchVO search); + + HashMap getBetInfoByBetId(BetParam param); + + String getGsoftRoundIdByBetId(String betId); + + JSONObject getInfinitiBetDetail(String LOG_PREFIX, String apiBaseUrl, JSONObject bodyObj); + + JSONObject getNexusBetDetail(String LOG_PREFIX, NexusApiInfo nexusApiInfo, String trxId); + + JSONObject getNexusBetDetailUrl(String LOG_PREFIX, NexusApiInfo nexusApiInfo, String trxId); + + HashMap getSiteBetByRefIdFromOld(BetParam param); + + JSONObject getSvendorDetail(String LOG_PREFIX, HashMap betInfo) throws JSONException; + + HashMap getApiInfo(String vendorTitle); + + int deleteEvoDetailNull(HashMap detailMap); + + JSONObject getCncpDetailsById(String LOG_PREFIX, HashMap apiInfo); + + JSONObject getDetailByBetId(String LOG_PREFIX, HashMap apiInfo); + + JSONObject getPracpDetail(String LOG_PREFIX, HashMap apiInfo); + + String getTplusDetails(String LOG_PREFIX, HashMap apiInfo); + + String getPragmaticDetails(String lOG_PREFIX, HashMap betInfo); + +} diff --git a/src/main/java/com/bb/service/TransServiceImpl.java b/src/main/java/com/bb/service/TransServiceImpl.java new file mode 100644 index 0000000..9f881cb --- /dev/null +++ b/src/main/java/com/bb/service/TransServiceImpl.java @@ -0,0 +1,759 @@ +package com.bb.service; + +import java.math.BigInteger; +import java.nio.charset.Charset; +import java.security.MessageDigest; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +import org.codehaus.jettison.json.JSONException; +import org.codehaus.jettison.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.reactive.function.client.WebClientRequestException; +import org.springframework.web.reactive.function.client.WebClientResponseException; +import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.web.util.UriComponentsBuilder; + +import com.bb.dao.SiteDao; +import com.bb.dao.TransDao; +import com.bb.model.BetParam; +import com.bb.model.NexusApiInfo; +import com.bb.model.NexusTrplVO; +import com.bb.model.TransSearchVO; +import com.bb.util.SHA256WithRSA; +import com.bb.util.StringUtils; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class TransServiceImpl implements TransService { + + @Autowired + private TransDao transDao; + + @Autowired + private SiteDao siteDao; + + @Autowired + private WebClient webClient; + + @Override + public int getTransBetListCnt(TransSearchVO search) { + // TODO Auto-generated method stub + return transDao.getTransBetListCnt(search); + } + + @Override + public List> getTransBetList(TransSearchVO search) { + List> list = transDao.getTransBetList(search); + + if(search.getTopId() != null && !search.getTopId().equals("")) { + for(HashMap item : list) { + HashMap param = new HashMap<>(); + param.put("topId", search.getTopId()); + param.put("siteId", item.get("siteId").toString()); + List treeInfo = siteDao.getSiteTreeInfo(param); + item.put("treeInfo", treeInfo); + } + } + + return list; + } + + @Override + public HashMap getTransBetListSum(TransSearchVO search) { + // TODO Auto-generated method stub + return transDao.getTransBetListSum(search); + } + + @Override + public int getTransBetFastListCnt(TransSearchVO search) { + // TODO Auto-generated method stub + return transDao.getTransBetFastListCnt(search); + } + + @Override + public List> getTransBetFastList(TransSearchVO search) { + + return transDao.getTransBetFastList(search); + } + + @Override + public HashMap getBetListItem(TransSearchVO search) { + HashMap item = transDao.getBetListItem(search.getRefId()); + HashMap param = new HashMap<>(); + param.put("topId", search.getTopId()); + param.put("siteId", item.get("siteId").toString()); + List treeInfo = siteDao.getSiteTreeInfo(param); + item.put("treeInfo", treeInfo); + + return item; + } + + @Override + public HashMap getTransBetFastListSum(TransSearchVO search) { + // TODO Auto-generated method stub + return transDao.getTransBetFastListSum(search); + } + + @Override + public HashMap getBetInfoByBetId(BetParam param) { + // TODO Auto-generated method stub + return transDao.getBetInfoByBetId(param); + } + + @Override + public String getGsoftRoundIdByBetId(String betId) { + // TODO Auto-generated method stub + return transDao.getGsoftRoundIdByBetId(betId); + } + + private HttpHeaders getInfinitiHeader(String LOG_PREFIX) { + LOG_PREFIX = LOG_PREFIX + "getInfinitiHeader::"; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + return headers; + } + + @Override + public JSONObject getInfinitiBetDetail(String LOG_PREFIX, String apiBaseUrl, JSONObject bodyObj) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "getInfinitiBetDetail::"; + + try { + HttpHeaders headers = getInfinitiHeader(LOG_PREFIX); + String apiUrl = apiBaseUrl + "/get/history/datafeed"; + + log.info(LOG_PREFIX+ "ApiUrl::"+apiUrl); + log.info(LOG_PREFIX+ "HttpHeaders::"+headers.toString()); + log.info(LOG_PREFIX+ "BodyJson::"+bodyObj); + + ResponseEntity response = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(bodyObj.toString()) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + log.info(LOG_PREFIX+ "response::"+jsonObj.toString()); + + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + private HttpHeaders getNexusHeader(String LOG_PREFIX, NexusApiInfo apiInfo, String bodyJson) { + LOG_PREFIX = LOG_PREFIX + "getNexusHeader::"; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String hashCode = getNexusHashCode(LOG_PREFIX, bodyJson, apiInfo.getAgentSecretKey()); + headers.set("hash", hashCode); + headers.set("agent", apiInfo.getAgentId()); + log.info(LOG_PREFIX+ "HttpHeaders::"+headers.toString()); + + return headers; + } + + private String getNexusHashCode(String LOG_PREFIX, String body, String secretKey) { + String hashCode = ""; + LOG_PREFIX = LOG_PREFIX + "getNexusHashCode::"; + try { + // Json String Body + Secret Key + String result = body + secretKey; + // String result = "{\"username\":\"057007mptest01\",\"nickname\":\"007mptest01\",\"siteUsername\":\"057007mptest01\"}"; + log.info(LOG_PREFIX+ "Body + Secret Key::"+result); + // SHA-256 Hash make + MessageDigest digestObj = MessageDigest.getInstance("SHA-256"); + byte[] hash_data = digestObj.digest(result.getBytes("UTF-8")); + + // Base64 encoding + hashCode = Base64.getEncoder().encodeToString(hash_data); + log.info(LOG_PREFIX+ "hashCode::"+hashCode); + } catch(Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + } + + return hashCode; + } + + @Override + public JSONObject getNexusBetDetail(String LOG_PREFIX, NexusApiInfo nexusApiInfo, String trxId) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "getNexusBetDetail::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("transactionKeys", trxId); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::" + bodyJson); + + HttpHeaders headers = getNexusHeader(LOG_PREFIX, nexusApiInfo, bodyJson); + String apiUrl = nexusApiInfo.getApiBaseUrl() + "/transaction/detail"; + + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("transactionKeys", trxId); + + ResponseEntity response = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + @Override + public JSONObject getNexusBetDetailUrl(String LOG_PREFIX, NexusApiInfo nexusApiInfo, String trxId) { + JSONObject jsonObj = null; + LOG_PREFIX = LOG_PREFIX + "getNexusBetDetailUrl::"; + + try { + JSONObject bodyObj = new JSONObject(); + bodyObj.put("transactionKey", trxId); + bodyObj.put("lang", "ko"); + String bodyJson = bodyObj.toString(); + log.info(LOG_PREFIX+ "bodyJson::" + bodyJson); + + HttpHeaders headers = getNexusHeader(LOG_PREFIX, nexusApiInfo, bodyJson); + String apiUrl = nexusApiInfo.getApiBaseUrl() + "/getdetailurl"; + + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("transactionKey", trxId); + params.add("lang", "ko"); + + ResponseEntity response = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + jsonObj = new JSONObject(response.getBody()); + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + e.printStackTrace(); + } + + return jsonObj; + } + + @Override + public HashMap getSiteBetByRefIdFromOld(BetParam param) { + // TODO Auto-generated method stub + return transDao.getSiteBetByRefIdFromOld(param); + } + + @Override + public JSONObject getSvendorDetail(String LOG_PREFIX, HashMap betInfo) throws JSONException { + JSONObject dataObj = null; + + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + parameters.add("trid", betInfo.get("uuid").toString()); + + HttpHeaders header = new HttpHeaders(); + header.set("Authorization", betInfo.get("vendorApiKey").toString()); + header.set("Content-Type", "application/x-www-form-urlencoded"); + + log.info(LOG_PREFIX+ "SVENDOR:request url::" + betInfo.get("vendorApiUrl").toString() + "/transaction-single"); + log.info(LOG_PREFIX+ "SVENDOR:request data::" + parameters.toString()); + + try { + ResponseEntity responseEntity = webClient.post() + .uri(betInfo.get("vendorApiUrl").toString() + "/transaction-single") + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + + JSONObject resJson = new JSONObject(responseEntity.getBody()); + int resCode = resJson.getInt("code"); + String resMsg = resJson.getString("msg"); + log.info(LOG_PREFIX+ "SVENDOR::Response::Code" + resCode); + log.info(LOG_PREFIX+ "SVENDOR::Response::Message" + resMsg); + if(resCode == 0) { + dataObj = resJson.getJSONObject("data"); + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "SVENDOR:WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "SVENDOR:WebClientResponseException::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "SVENDOR:ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SVENDOR:SocketTimeoutException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "SVENDOR:WebClientRequestException::" + e.getMessage()); + } + } catch (JSONException e) { + log.error(LOG_PREFIX+ "SVENDOR:error::" + e.getLocalizedMessage()); + log.error(LOG_PREFIX+ "SVENDOR:error::" + e.getMessage()); + e.printStackTrace(); + } + + return dataObj; + } + + @Override + public HashMap getApiInfo(String vendorTitle) { + // TODO Auto-generated method stub + return transDao.getApiInfo(vendorTitle); + } + + @Override + public int deleteEvoDetailNull(HashMap detailMap) { + // TODO Auto-generated method stub + return transDao.deleteEvoDetailNull(detailMap); + } + + private HttpHeaders getCncpHeader(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "::getCncpHeader::"; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String authorization = getCncpAuthorization(LOG_PREFIX, apiInfo); + headers.set("Authorization", authorization); + log.info(LOG_PREFIX+ "HttpHeaders::"+headers.toString()); + + return headers; + } + + + private String getCncpAuthorization(String LOG_PREFIX, HashMap apiInfo) { + String authorization = ""; + LOG_PREFIX = LOG_PREFIX + "::getCncpAuthorization::"; + try { + String apiAgentId = apiInfo.get("apiAgentId").toString(); + String apiPrivateKey = apiInfo.get("apiPrivateKey").toString(); + String apiHttpVerb = apiInfo.get("apiHttpVerb").toString(); + String apiEndPoint = apiInfo.get("apiEndPoint").toString(); + long apiTimestemp = System.currentTimeMillis(); + UUID uuid = UUID.randomUUID(); + String apiNonceString = uuid.toString(); + + String inputText = apiHttpVerb + " " + apiEndPoint + " " + apiTimestemp + " " + apiNonceString; + log.info(LOG_PREFIX+ "inputText::"+inputText); + String signText = SHA256WithRSA.sign(inputText, apiPrivateKey); + log.info(LOG_PREFIX+ "signText::"+signText); + + authorization = "HERAPLAY-SHA256-RSA2048 " + apiAgentId+","+apiTimestemp+","+apiNonceString+","+signText; + log.info(LOG_PREFIX+ "Authorization::"+authorization); + + } catch(Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + } + + return authorization; + } + + @Override + public JSONObject getCncpDetailsById(String LOG_PREFIX, HashMap apiInfo) { + JSONObject result = null; + LOG_PREFIX = LOG_PREFIX + "gameRoundDetailsById::"; + + apiInfo.put("apiHttpVerb", "GET"); + apiInfo.put("apiEndPoint", "datafeedapi/gamerounddetailsbyid"); + + try { + HttpHeaders headers = getCncpHeader(LOG_PREFIX, apiInfo); + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/DataFeedAPI/GameRoundDetailsById?"; + String param = "providerCode=" + apiInfo.get("providerCode").toString() + "&roundId=" + apiInfo.get("roundId").toString(); + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "Request URL : " + apiUrl); + log.info(LOG_PREFIX+ "Request Header : " + headers.toString()); + + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + if(responseObj.has("result")) { + result = responseObj.getJSONObject("result"); + } else { + log.error(LOG_PREFIX+ "Response : Has not result"); + } + } else { + log.error(LOG_PREFIX+ "Response : unknown error"); + } + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + e.printStackTrace(); + } + + return result; + } + + @Override + public JSONObject getDetailByBetId(String LOG_PREFIX, HashMap apiInfo) { + JSONObject result = null; + LOG_PREFIX = LOG_PREFIX + "getDetailByBetId::"; + + try { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + headers.set("Authorization", apiInfo.get("apiAuthorization").toString()); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/bet/" + apiInfo.get("betId").toString(); + log.info(LOG_PREFIX+ "Request URL : " + apiUrl); + log.info(LOG_PREFIX+ "Request Header : " + headers.toString()); + + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + if(responseObj.has("detail")) { + String detailStr = responseObj.getString("detail"); + JSONObject detailObj = new JSONObject(detailStr); + result = detailObj.getJSONObject("detail").getJSONObject("data"); + } else { + log.error(LOG_PREFIX+ "Response : Has not result"); + } + } else { + log.error(LOG_PREFIX+ "Response : unknown error"); + } + + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + e.printStackTrace(); + } + + + return result; + } + + private String getAPI_KEY(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "::getAPI_KEY::"; + + String apiKey = ""; + String apiAgentCode = apiInfo.get("apiAgentCode"); + String apiToken = apiInfo.get("apiToken"); + String timeStamp = apiInfo.get("timeStamp"); + + log.info(LOG_PREFIX+ "apiAgentCode::"+apiAgentCode); + log.info(LOG_PREFIX+ "apiToken::"+apiToken); + log.info(LOG_PREFIX+ "timeStamp::"+timeStamp); + + String textA = apiAgentCode+apiToken+timeStamp; + String salt = apiToken; + String textB = textA+salt; + log.info(LOG_PREFIX+ "textB::"+textB); + + try { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(textB.getBytes("UTF-8")); + byte[] digest = md.digest(); + apiKey = new BigInteger(1, digest).toString(16).toLowerCase(); + log.info(LOG_PREFIX+ "apiKey::"+apiKey); + } catch(Exception e) { + log.error(LOG_PREFIX+ "Exception::"+e.getMessage()); + } + + return apiKey; + } + + @Override + public JSONObject getPracpDetail(String LOG_PREFIX, HashMap apiInfo) { + LOG_PREFIX = LOG_PREFIX + "getDetail::"; + JSONObject detailObj = null; + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + headers.setAcceptCharset(Arrays.asList(Charset.forName("UTF-8"))); + + String apiUrl = apiInfo.get("apiBaseUrl").toString() + "/app/game/detail-url?"; + + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + long timeStampL = System.currentTimeMillis(); + String timeStamp = sdf.format(timeStampL); + apiInfo.put("timeStamp", timeStamp); + String apiKey = getAPI_KEY(LOG_PREFIX, apiInfo); + String param = "api_key=" + apiKey + "×tamp=" + timeStamp + + "&agent_code=" + apiInfo.get("apiAgentCode") + "&uuid=" + apiInfo.get("uuid") + "&round_id=" + apiInfo.get("round_id") + "&country_code=KR&locale_code=ko"; + apiUrl = apiUrl + param; + log.info(LOG_PREFIX+ "apiUrl::" + apiUrl); + + try { + ResponseEntity resEntity = webClient.get() + .uri(apiUrl) + .headers(h -> h.addAll(headers)) + .retrieve() + .toEntity(String.class) + .block(); + + if(resEntity != null && resEntity.getStatusCode() == HttpStatus.OK) { + JSONObject responseObj = new JSONObject(resEntity.getBody()); + log.info(LOG_PREFIX+ "Response : " + responseObj.toString()); + detailObj = responseObj.getJSONObject("data"); + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "WebClientResponseException::" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "WebClientResponseException Body::" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "ConnectTimeoutException::" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "SocketTimeoutException::" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "InterruptedException::" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "WebClientRequestException::" + e.getMessage()); + } + } catch (Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.getMessage()); + e.printStackTrace(); + } + + return detailObj; + } + + @Override + public String getTplusDetails(String LOG_PREFIX, HashMap apiInfo) { + JSONObject resJson = null; + String detailUrl = null; + LOG_PREFIX = LOG_PREFIX + "tplus::getDetails::"; + + try { + HttpHeaders header = new HttpHeaders(); + header.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + header.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); + header.set("Authorization", "Bearer " + apiInfo.get("apiAuthKey")); + + MultiValueMap params = new LinkedMultiValueMap<>(); + params.add("pair_transaction_key", apiInfo.get("pairTransactionKey")); + + String apiUrl = apiInfo.get("apiBaseUrl") + "/Details"; + + ResponseEntity response = webClient.post() + .uri(apiUrl) + .headers(h -> h.addAll(header)) + .bodyValue(params) + .retrieve() + .toEntity(String.class) + .block(); + + resJson = new JSONObject(response.getBody()); + if(resJson.getInt("code") == 0) { + log.info(LOG_PREFIX+ "message: " + resJson.getString("message")); + detailUrl = resJson.getString("url"); + log.info(LOG_PREFIX+ "detailUrl: " + detailUrl); + } else { + log.error(LOG_PREFIX+ "code: " + resJson.getInt("code")); + log.error(LOG_PREFIX+ "message: " + resJson.getString("message")); + } + } catch (WebClientResponseException e) { + log.error(LOG_PREFIX+ "[WebClientResponseException]" + e.getStatusCode().value()); + log.error(LOG_PREFIX+ "[WebClientResponseException]" + e.getResponseBodyAsString()); + } catch (WebClientRequestException e) { + Throwable cause = e.getCause(); + if (cause instanceof io.netty.channel.ConnectTimeoutException) { + log.error(LOG_PREFIX+ "[ConnectTimeoutException]" + e.getMessage()); + } else if (cause instanceof io.netty.handler.timeout.ReadTimeoutException) { + log.error(LOG_PREFIX+ "[SocketTimeoutException]" + e.getMessage()); + } else if (cause instanceof InterruptedException) { + log.error(LOG_PREFIX+ "[InterruptedException]" + e.getMessage()); + } else { + log.error(LOG_PREFIX+ "[WebClientRequestException]" + e.getMessage()); + } + } catch(Exception e) { + log.error(LOG_PREFIX+ "Exception::" + e.toString()); + e.printStackTrace(); + } + + return detailUrl; + } + + private boolean hasCause(Throwable e, Class clazz) { + Throwable cause = e; + while (cause != null) { + if (clazz.isInstance(cause)) { + return true; + } + cause = cause.getCause(); + } + return false; + } + + @Override + public String getPragmaticDetails(String lOG_PREFIX, HashMap betInfo) { + try { + String historyUrl = betInfo.get("vendorApiUrl").toString() + "/IntegrationService/v3/http/HistoryAPI/OpenHistoryExtended/"; + String siteIdxStr = betInfo.get("siteHex").toString(); + String playerId = siteIdxStr.toUpperCase() + betInfo.get("memberId").toString(); + String refId = betInfo.get("refId").toString(); + String roundId = refId.replaceAll(betInfo.get("siteId").toString(), ""); + //body + MultiValueMap parameters = new LinkedMultiValueMap<>(); + + + parameters.add("secureLogin", betInfo.get("vendorApiId").toString()); + parameters.add("playerId", playerId); + parameters.add("gameId", betInfo.get("gameIdx").toString()); + parameters.add("roundId", roundId); + + // hash + String hashString = "secureLogin="+ betInfo.get("vendorApiId").toString() + + "&playerId="+playerId + + "&gameId="+betInfo.get("gameIdx").toString() + + "&roundId="+ roundId; + + log.info("Pragmatic hash string:{}", hashString); + parameters.add("hash", StringUtils.md5AndHex(hashString+ betInfo.get("vendorApiKey").toString())); + //header + + HttpHeaders header = new HttpHeaders(); + header.add("Content-Type", "application/x-www-form-urlencoded"); + + + ResponseEntity responseEntity = webClient.post() + .uri(historyUrl) + .headers(h -> h.addAll(header)) + .bodyValue(parameters) + .retrieve() + .toEntity(String.class) + .block(); + + JSONObject resdata = new JSONObject(responseEntity.getBody()); + + if(resdata != null) { + return resdata.getString("url"); + } else { + return ""; + } + } catch(WebClientResponseException e) { + log.error("OpenHistoryExtended WebClientResponseException: {}", e.getStatusCode().value()); + log.error("OpenHistoryExtended WebClientResponseException Body: {}", e.getResponseBodyAsString()); + return ""; + } catch(WebClientRequestException e) { + log.error("OpenHistoryExtended WebClientRequestException: ", e); + return ""; + } catch(Exception e) { + log.error("OpenHistoryExtended Exception: ", e); + return ""; + } + } +} diff --git a/src/main/java/com/bb/util/AesUtil.java b/src/main/java/com/bb/util/AesUtil.java new file mode 100644 index 0000000..047b674 --- /dev/null +++ b/src/main/java/com/bb/util/AesUtil.java @@ -0,0 +1,114 @@ +package com.bb.util; + +import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; +import java.security.spec.AlgorithmParameterSpec; +import java.util.Arrays; +import java.util.Base64; +import java.util.Base64.Decoder; +import java.util.Base64.Encoder; + +import javax.crypto.Cipher; +import javax.crypto.spec.GCMParameterSpec; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +public class AesUtil { + + private static final String ALGO = "AES/GCM/NoPadding"; + private static final int IV_LENGTH = 12; // GCM 표준 + private static final int TAG_LENGTH = 128; // 인증 태그 + + // ==== [AES 암호화(인코딩) 메소드] ==== + public static String getAES128_Encode(String data) { + try { + String secretKey = "9944184563minepw"; //비밀키 선언 16바이트 + + byte ivBytes[] = new byte[16]; //AES128비트 암호화에서 16바이트는 변할 수 없다 + Arrays.fill(ivBytes, (byte)0x00); //배열에 초기값 0으로 삽입 실시 + + byte textBytes[] = data.getBytes("UTF-8"); + + AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes); + SecretKeySpec newKey = new SecretKeySpec(secretKey.getBytes("UTF-8"),"AES"); + Cipher cipher = null; + cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.ENCRYPT_MODE, newKey, ivSpec); + + Encoder encoder = Base64.getEncoder(); //base64로 다시 포맷해서 인코딩 실시 (경우에 따라 아파치 base64 필요) + return encoder.encodeToString(cipher.doFinal(textBytes)); + } + catch(Exception e) { + System.out.println(e.getMessage()); + } + return ""; + } + + // ==== [AES 복호화(디코딩) 메소드] ==== + public static String getAES128_Decode(String data) { + try { + String secretKey = "9944184563minepw"; //비밀키 선언 16바이트 + + byte ivBytes[] = new byte[16]; //AES128비트 암호화에서 16바이트는 변할 수 없다 + Arrays.fill(ivBytes, (byte)0x00); //배열에 초기값 0으로 삽입 실시 + + Decoder decoder = Base64.getDecoder(); //base64로 다시 포맷해서 디코딩 실시 (경우에 따라 아파치 base64 필요) + byte textBytes[] = decoder.decode(data); + + AlgorithmParameterSpec ivSpec = new IvParameterSpec(ivBytes); + SecretKeySpec newKey = new SecretKeySpec(secretKey.getBytes("UTF-8"),"AES"); + Cipher cipher = null; + cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); + cipher.init(Cipher.DECRYPT_MODE, newKey, ivSpec); + + return new String(cipher.doFinal(textBytes),"UTF-8"); + } + catch (Exception e) { + System.out.println(e.getMessage()); + } + return ""; + } + + public static String encrypt(String plainText) throws Exception { + String secretKey = "gwTb1FnH9RbxORzo"; // 반드시 16/24/32 byte + byte[] iv = new byte[IV_LENGTH]; + new SecureRandom().nextBytes(iv); + + Cipher cipher = Cipher.getInstance(ALGO); + SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "AES"); + GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH, iv); + + cipher.init(Cipher.ENCRYPT_MODE, keySpec, spec); + + byte[] encrypted = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8)); + + // iv + ciphertext 합쳐서 URL-safe Base64 + byte[] combined = new byte[iv.length + encrypted.length]; + System.arraycopy(iv, 0, combined, 0, iv.length); + System.arraycopy(encrypted, 0, combined, iv.length, encrypted.length); + + return Base64.getUrlEncoder().withoutPadding().encodeToString(combined); + } + + public static String decrypt(String encoded) throws Exception { + String secretKey = "gwTb1FnH9RbxORzo"; // 반드시 16/24/32 byte + byte[] combined = Base64.getUrlDecoder().decode(encoded); + + byte[] iv = new byte[IV_LENGTH]; + byte[] cipherText = new byte[combined.length - IV_LENGTH]; + + System.arraycopy(combined, 0, iv, 0, IV_LENGTH); + System.arraycopy(combined, IV_LENGTH, cipherText, 0, cipherText.length); + + Cipher cipher = Cipher.getInstance(ALGO); + SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "AES"); + GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH, iv); + + cipher.init(Cipher.DECRYPT_MODE, keySpec, spec); + + byte[] decrypted = cipher.doFinal(cipherText); + + return new String(decrypted, StandardCharsets.UTF_8); + } + +} diff --git a/src/main/java/com/bb/util/DateTimeUtils.java b/src/main/java/com/bb/util/DateTimeUtils.java new file mode 100644 index 0000000..175d5c4 --- /dev/null +++ b/src/main/java/com/bb/util/DateTimeUtils.java @@ -0,0 +1,295 @@ +package com.bb.util; + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Locale; + +public class DateTimeUtils { + private static final long TIMEOUT = 1000 * 20; + @SuppressWarnings("unused") + private static final SimpleDateFormat FORMAT_YYYYMMDDHHMMSS = new SimpleDateFormat("yyyyMMddHHmmss"); + + public static long getValidDateTime() { + return System.currentTimeMillis() + TIMEOUT; + } + + public static long getValidDateTime(long timeout) { + return System.currentTimeMillis() + timeout; + } + + public static Date now(long time) { + return new Date(time); + } + + public static boolean isBefore(Date date){ + return date.before(new Date()); + } + + /** + * 오라클DB의 DATE형식 객체 생성(현재 년월일시간분초) + * @return Timestamp + */ + public static Timestamp getCurrentTimestamp() { + Calendar calendar = Calendar.getInstance(); + + return new Timestamp(calendar.getTime().getTime()); + } + + /** + * 현재 날짜와 시각을 yyyyMMdd 형태로 반환한다. + * @return String + */ + public static String getYyyymmdd() { + Calendar calendar = Calendar.getInstance(); + Locale currentLocale = new Locale("KOREAN", "KOREA"); + String pattern = "yyyyMMdd"; + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(calendar.getTime()); + } + + public static String getYyyymmdd2() { + Calendar calendar = Calendar.getInstance(); + Locale currentLocale = new Locale("KOREAN", "KOREA"); + String pattern = "yyyy-MM-dd"; + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(calendar.getTime()); + } + + + /** + * 현재 날짜와 시각을 Yyyymmddhhmmss 형태로 반환한다. + * + * @return + */ + public static String getYyyymmddhhmmss() { + Calendar calendar = Calendar.getInstance(); + Locale currentLocale = new Locale("KOREAN", "KOREA"); + String pattern = "yyyyMMddHHmmss"; + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(calendar.getTime()); + } + + public static String getYyyymm() { + Calendar calendar = Calendar.getInstance(); + Locale currentLocale = new Locale("KOREAN", "KOREA"); + String pattern = "yyyy-MM"; + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(calendar.getTime()); + } + + /** + * 현재 날짜와 시각을 Yyyymmdd 형태로 반환한다. + * + * @param cal + * @return + */ + public static String getYyyymmdd(Calendar cal) { + Locale currentLocale = new Locale("KOREAN", "KOREA"); + String pattern = "yyyy-MM-dd"; + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(cal.getTime()); + } + + public static String getYyyymm(Calendar cal) { + Locale currentLocale = new Locale("KOREAN", "KOREA"); + String pattern = "yyyy-MM"; + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(cal.getTime()); + } + + public static String getYyyymmdd(Calendar cal, String pattern) { + Locale currentLocale = new Locale("KOREAN", "KOREA"); + SimpleDateFormat formatter = new SimpleDateFormat(pattern, currentLocale); + return formatter.format(cal.getTime()); + } + + /** + * getGregorianCalendar + * + * @param yyyymmdd + * @return + */ + public static GregorianCalendar getGregorianCalendar(String yyyymmdd) { + + int yyyy = Integer.parseInt(yyyymmdd.substring(0, 4)); + int mm = Integer.parseInt(yyyymmdd.substring(4, 6)); + int dd = Integer.parseInt(yyyymmdd.substring(6)); + + GregorianCalendar calendar = new GregorianCalendar(yyyy, mm - 1, dd, 0, 0, 0); + + return calendar; + + } + + /** + * 지정된 플래그에 따라 연도 , 월 , 일자를 연산한다. + * - 사용 예 + * String date = DateUtil.getOpDate(java.util.Calendar.DATE , 1, "20080101") + * @return String + */ + public static String getOpDate(int field, int amount, String date) { + + GregorianCalendar calDate = getGregorianCalendar(date); + + if (field == Calendar.YEAR) { + calDate.add(GregorianCalendar.YEAR, amount); + } else if (field == Calendar.MONTH) { + calDate.add(GregorianCalendar.MONTH, amount); + } else { + calDate.add(GregorianCalendar.DATE, amount); + } + + return getYyyymmdd(calDate); + + } + + public static String getOpDate2(int field, int amount, String date) { + + GregorianCalendar calDate = getGregorianCalendar(date); + + if (field == Calendar.YEAR) { + calDate.add(GregorianCalendar.YEAR, amount); + } else if (field == Calendar.MONTH) { + calDate.add(GregorianCalendar.MONTH, amount); + } else { + calDate.add(GregorianCalendar.DATE, amount); + } + + return getYyyymmdd(calDate, "yyyyMMdd"); + + + } + + /** + * 2009-03-10 String날짜변수를 2009-03-10 00:00:00 Timestamp 형식으로 반환한다. + * + * @param dateStr + * @return + */ + public static Timestamp replaceTimestamp(String dateStr) { + if(dateStr == null || dateStr.length() != 10) return null; + + String year = dateStr.substring(0, 4); + String month = dateStr.substring(5, 7); + String day = dateStr.substring(8, 10); + + Calendar calendar = Calendar.getInstance(); + + calendar.set( + Integer.parseInt(year), + Integer.parseInt(month)-1, + Integer.parseInt(day), + 0, + 0, + 0 + ); + + return new Timestamp(calendar.getTime().getTime()); + } + + /** + * 두 날짜간의 기간(년,월,일) 계산 메소드 + * 날짜 인자가 하나인 경우 Default today로 처리 + * (나이 계산에 활용) + * + * @param fromDate java.util.String (예) YYYYMMDD + * @return String[3] - 0:Year, 1:Month, 2:Day + */ + public static int getPeriodBetween(String fromDate) + { + return getPeriodBetween(fromDate, getYyyymmdd()); + } + + /** + * 두 날짜간의 기간(년,월,일) 계산 메소드 + * @param fromDate String (예)"20000710" + * @param endDate String (예)"20001111" + * @return String[3] - 0:Year, 1:Month, 2:Day + */ + public static int getPeriodBetween(String fromDate, String endDate) + { + // fromDate가 endDate보다 클 경우 swap + if (fromDate.compareTo(endDate) > 0) + { + String temp; + temp = fromDate; + fromDate = endDate; + endDate = temp; + } + + int fromYYYY= Integer.parseInt(fromDate.substring(0,4)); + int fromMM = Integer.parseInt(fromDate.substring(4,6)); + int fromDD = Integer.parseInt(fromDate.substring(6,8)); + int endYYYY = Integer.parseInt(endDate.substring(0,4)); + int endMM = Integer.parseInt(endDate.substring(4,6)); + int endDD = Integer.parseInt(endDate.substring(6,8)); + + int iYearCount = endYYYY - fromYYYY; + int iMonthCount = 0; + int iDayCount = 0; + + if(fromDate.substring(4,8).compareTo(endDate.substring(4,8)) > 0) + { + iYearCount--; + iMonthCount = (12-fromMM) + endMM; + } + else + { + //iYearCount = iYearCount; + iMonthCount = endMM - fromMM; + } + + int lastDate = 0; + if(fromDD > endDD) + { + iMonthCount--; + lastDate = getDaysOfMonth(fromYYYY, fromMM); + iDayCount = (lastDate-fromDD) + endDD; + } + else + { + iDayCount = endDD - fromDD; + } + return iDayCount + lastDate; + } + + /** + * 입력한 달의 Day count 를 return + * + * @param year as String + * @param month as String + * @return int the count of month + */ + public static int getDaysOfMonth (String year, String month) + { + if(year == null || month == null) return -1; + return getDaysOfMonth (Integer.parseInt(year), Integer.parseInt(month)) ; + } + + /** + * 입력한 달의 Day count 를 return + * + * @param year as int + * @param month as int + * @return int the count of month + */ + public static int getDaysOfMonth (int year, int month) + { + if(month < 1 || month > 12) return -1; + + if(month == 2) + { + if ( ((year%4 == 0) && (year%100 != 0)) || (year%400 == 0) ) + return 29; + else + return 28; + } + else if(month==4||month==6||month==9||month==11) + return 30; + else + return 31; + } +} diff --git a/src/main/java/com/bb/util/GameInsert.java b/src/main/java/com/bb/util/GameInsert.java new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/com/bb/util/HmacUtils.java b/src/main/java/com/bb/util/HmacUtils.java new file mode 100644 index 0000000..71a9414 --- /dev/null +++ b/src/main/java/com/bb/util/HmacUtils.java @@ -0,0 +1,30 @@ +package com.bb.util; + +import java.nio.charset.StandardCharsets; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +public class HmacUtils { + + public static String hmacSha256Hex(String secret, String message) { + try { + Mac mac = Mac.getInstance("HmacSHA256"); + SecretKeySpec key = + new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); + mac.init(key); + + byte[] raw = mac.doFinal(message.getBytes(StandardCharsets.UTF_8)); + return bytesToHex(raw); + + } catch (Exception e) { + throw new RuntimeException("HMAC error", e); + } + } + + private static String bytesToHex(byte[] bytes) { + StringBuilder sb = new StringBuilder(bytes.length * 2); + for (byte b : bytes) sb.append(String.format("%02x", b)); + return sb.toString(); + } +} diff --git a/src/main/java/com/bb/util/HttpUtil.java b/src/main/java/com/bb/util/HttpUtil.java new file mode 100644 index 0000000..6550520 --- /dev/null +++ b/src/main/java/com/bb/util/HttpUtil.java @@ -0,0 +1,93 @@ +package com.bb.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpUtil { + + + public static String httpPostBodyConnection(String UrlData, String ParamData) { + + //http 요청 시 필요한 url 주소를 변수 선언 + String totalUrl = ""; + totalUrl = UrlData.trim().toString(); + + //http 통신을 하기위한 객체 선언 실시 + URL url = null; + HttpURLConnection conn = null; + + //http 통신 요청 후 응답 받은 데이터를 담기 위한 변수 + String responseData = ""; + BufferedReader br = null; + StringBuffer sb = null; + + //메소드 호출 결과값을 반환하기 위한 변수 + String returnData = ""; + + try { + //파라미터로 들어온 url을 사용해 connection 실시 + url = new URL(totalUrl); + conn = (HttpURLConnection) url.openConnection(); + + //http 요청에 필요한 타입 정의 실시 + conn.setRequestMethod("POST"); + conn.setRequestProperty("Content-Type", "application/json; utf-8"); //post body json으로 던지기 위함 + conn.setRequestProperty("Accept", "application/json"); + conn.setDoOutput(true); //OutputStream을 사용해서 post body 데이터 전송 + try (OutputStream os = conn.getOutputStream()){ + byte request_data[] = ParamData.getBytes("utf-8"); + os.write(request_data); + os.close(); + } + catch(Exception e) { + e.printStackTrace(); + } + + //http 요청 실시 + conn.connect(); + System.out.println("http 요청 방식 : "+"POST BODY JSON"); + System.out.println("http 요청 타입 : "+"application/json"); + System.out.println("http 요청 주소 : "+UrlData); + System.out.println("http 요청 데이터 : "+ParamData); + System.out.println(""); + + //http 요청 후 응답 받은 데이터를 버퍼에 쌓는다 + br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); + sb = new StringBuffer(); + while ((responseData = br.readLine()) != null) { + sb.append(responseData); //StringBuffer에 응답받은 데이터 순차적으로 저장 실시 + } + + //메소드 호출 완료 시 반환하는 변수에 버퍼 데이터 삽입 실시 + returnData = sb.toString(); + + //http 요청 응답 코드 확인 실시 + String responseCode = String.valueOf(conn.getResponseCode()); + System.out.println("http 응답 코드 : "+responseCode); + System.out.println("http 응답 데이터 : "+returnData); + + + + } catch (IOException e) { + e.printStackTrace(); + } finally { + //http 요청 및 응답 완료 후 BufferedReader를 닫아줍니다 + try { + if (br != null) { + br.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + + return returnData; + } + } + + + +} diff --git a/src/main/java/com/bb/util/IPKit.java b/src/main/java/com/bb/util/IPKit.java new file mode 100644 index 0000000..e869b96 --- /dev/null +++ b/src/main/java/com/bb/util/IPKit.java @@ -0,0 +1,201 @@ +package com.bb.util; + + + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.Inet4Address; +import java.net.Inet6Address; +import java.net.InetAddress; +import java.security.MessageDigest; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpSession; + + +public class IPKit { + + public static String getIpAddressByRequest(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + + String[] ipArray = ip.split(","); + ip = ipArray[0]; + + return ip; + } + + public static String getIpAddressByRequest1(HttpServletRequest request) { + String ip = request.getHeader("X-Forwarded-For"); + if(!StringUtils.isEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){ + int index = ip.indexOf(","); + if(index != -1){ + return ip.substring(0,index); + }else{ + return ip; + } + } + + ip = request.getHeader("X-Real-IP"); + if(!StringUtils.isEmpty(ip) && !"unKnown".equalsIgnoreCase(ip)){ + return ip; + } + return request.getRemoteAddr(); + } + + public static String viewPage(HttpServletRequest request, String page) { + HttpSession session = request.getSession(true); + + String userAgent = request.getHeader("user-agent"); + String referer = request.getHeader("referer"); + String vt = ""; + if(!(request.getParameter("vt") == null || "".equals(request.getParameter("vt")))) { + vt = request.getParameter("vt"); + + if("M".equals(vt)) { + session.setAttribute("isMobile", "mobile"); + } + + if("W".equals(vt)) { + session.setAttribute("isMobile", "web"); + } + }else { + session.setAttribute("isMobile", ""); + } + + + + + + Boolean isMobile = false; + + String url = request.getRequestURI(); + String domain = request.getRequestURL().toString().replace(request.getRequestURI(),"/"); + + String viewName=page; + isMobile = userAgent.contains("Mobile/") + || userAgent.contains("Android") + || userAgent.contains("iPhone") + || userAgent.contains("iPad"); + + + if(isMobile) { + viewName = "mobile/"+viewName; + } else { + + + if("mobile".equals(session.getAttribute("isMobile").toString())) { + return "mobile/"+viewName; + }else { + return "front/"+viewName; + } + + + } + + return viewName; + +} + + + public static String shaEnc(String base) { + + + try{ + + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + byte[] hash = digest.digest(base.getBytes("UTF-8")); + StringBuffer hexString = new StringBuffer(); + + for (int i = 0; i < hash.length; i++) { + String hex = Integer.toHexString(0xff & hash[i]); + if(hex.length() == 1) hexString.append('0'); + hexString.append(hex); + } + + //출력 + return hexString.toString(); + + } catch(Exception ex){ + throw new RuntimeException(ex); + } + } + + + // Add Firewall rule + public static void allowInboundTraffic(String LOG_PREFIX, String ipAddress) throws Exception { + if (ipAddress == null || ipAddress.isEmpty()) { + throw new IllegalArgumentException("IP address cannot be null or empty"); + } + + // Split the IP addresses if multiple are provided, separated by commas + String[] ipAddresses = ipAddress.split(","); + + for (String ip : ipAddresses) { + ip = ip.trim(); // Remove any leading or trailing spaces + if (ip.isEmpty()) { + continue; // Skip empty entries + } + + String family; + try { + InetAddress inetAddress = InetAddress.getByName(ip); + if (inetAddress instanceof Inet6Address) { + family = "ipv6"; + } else if (inetAddress instanceof Inet4Address) { + family = "ipv4"; + } else { + throw new IllegalArgumentException("Unknown IP address type: " + ip); + } + } catch (Exception e) { + throw new IllegalArgumentException("Invalid IP address: " + ip, e); + } + + // Commands to allow inbound traffic for ports 80 and 443 + String[] commands = { + String.format("sudo firewall-cmd --permanent --add-rich-rule='rule family=\"%s\" source address=\"%s\" port protocol=\"tcp\" port=\"80\" accept'", family, ip), + String.format("sudo firewall-cmd --permanent --add-rich-rule='rule family=\"%s\" source address=\"%s\" port protocol=\"tcp\" port=\"443\" accept'", family, ip) + }; + + for (String command : commands) { + executeCommand(command); + } + } + + // 마지막에 한 번만 reload! + executeCommand("sudo firewall-cmd --reload"); + } + + // Execute shell command + private static void executeCommand(String command) throws Exception { + System.out.println("실행중: " + command); + Process process = Runtime.getRuntime().exec(new String[] { "bash", "-c", command }); // bash shell 사용 권장 + int exitCode = process.waitFor(); + + if (exitCode != 0) { + try (BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream()))) { + StringBuilder errorMessage = new StringBuilder(); + String line; + while ((line = errorReader.readLine()) != null) { + errorMessage.append(line).append("\n"); + } + throw new RuntimeException("Error executing command: " + command + "\n" + errorMessage.toString()); + } + } else { + try (BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream()))) { + String line; + while ((line = outputReader.readLine()) != null) { + System.out.println(line); + } + } + } + } +} diff --git a/src/main/java/com/bb/util/OkhttpUtils.java b/src/main/java/com/bb/util/OkhttpUtils.java new file mode 100644 index 0000000..98cf1d8 --- /dev/null +++ b/src/main/java/com/bb/util/OkhttpUtils.java @@ -0,0 +1,128 @@ +package com.bb.util; + +import java.io.IOException; +import java.security.cert.CertificateException; +import java.util.HashMap; +import java.util.Map; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSession; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +import com.google.gson.Gson; + +import lombok.extern.slf4j.Slf4j; +import okhttp3.Headers; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +@Slf4j +public class OkhttpUtils { + + private static OkHttpClient client = null; + private static boolean ignoreSslCertificate = false; + + public static OkHttpClient getClient() { + return client; + } + + public static void init(boolean ignoreCertificate) throws Exception { + + OkHttpClient.Builder builder = new OkHttpClient.Builder(); + + log.info("Initialising httpUtil with default configuration"); + if (ignoreCertificate) { + ignoreSslCertificate = true; + builder = configureToIgnoreCertificate(builder); + } + + //Other application specific configuration + + client = builder.build(); + } + + //Setting testMode configuration. If set as testMode, the connection will skip certification check + private static OkHttpClient.Builder configureToIgnoreCertificate(OkHttpClient.Builder builder) { + log.info("Ignore Ssl Certificate"); + try { + + // Create a trust manager that does not validate certificate chains + final TrustManager[] trustAllCerts = new TrustManager[] { + new X509TrustManager() { + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) + throws CertificateException { + } + + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) + throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + + // Install the all-trusting trust manager + final SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); + // Create an ssl socket factory with our all-trusting manager + final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + + builder.sslSocketFactory(sslSocketFactory, (X509TrustManager)trustAllCerts[0]); + builder.hostnameVerifier(new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }); + } catch (Exception e) { + log.error("Exception while configuring IgnoreSslCertificate" + e, e); + } + + return builder; + } + + /** + * post 호출 + * @param url + * @param body + * @param mediaType + * @return + */ + public static String post(String url, Map body, MediaType mediaType) { + try { + init(true); + OkHttpClient client = getClient(); + log.info("OkHttpClient Request body : " + new Gson().toJson(body)); + RequestBody requestBody = RequestBody.create(mediaType, new Gson().toJson(body)); + log.info("OkHttpClient contentType : " + requestBody.contentType()); + + Request request = new Request.Builder() + .url(url) + .header("User-agent", "PostmanRuntime/7.40.0") + .addHeader("Content-Type", "application/json") + .post(requestBody) + .build(); + log.info("OkHttpClient Request : " + request.toString()); + + Response response = client.newCall(request).execute(); + return response.body().string(); + } catch (IOException e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } catch(Exception e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/com/bb/util/PagingUtil.java b/src/main/java/com/bb/util/PagingUtil.java new file mode 100644 index 0000000..fa3e92d --- /dev/null +++ b/src/main/java/com/bb/util/PagingUtil.java @@ -0,0 +1,90 @@ +package com.bb.util; + +import com.bb.model.PageFormVO; + +/** + * 페이지 네비게이션 정보 설정을 위한 클래스 + */ +public class PagingUtil { + + + + + public static PageFormVO setPageUtil(PageFormVO pageFormVO) { + //System.out.println("currentPage" + pageFormVO.getPage()); + if(pageFormVO.getPage() == 0) { + //System.out.println("currentPagee" + pageFormVO.getPage()); + pageFormVO.setPage(1); + } + //System.out.println("currentPage" + pageFormVO.getPage()); + + String pagination = ""; // 페이징 결과 값 + String functionName = pageFormVO.getFunction_name(); // 페이징 목록을 요청하는 자바스크립트 함수명 + int currentPage = pageFormVO.getPage(); // 현재 페이지 번호 + + //System.out.println("currentPage" + currentPage); + int countPerList = pageFormVO.getCount_per_list(); // 한 화면에 출력될 게시물 수 + int countPerPage = pageFormVO.getCount_per_page(); // 한 화면에 출력될 페이지 수 + int totalListCount = pageFormVO.getTatal_list_count(); // 총 게시물 수 + int totalPageCount = totalListCount / countPerList; // 총 페이지 수 + if (totalListCount % countPerList > 0) { // 총 페이수를 구할 때 int형으로 계산하면 나머지가 있는 경우 게시물이 존재하기 때문에 총 페이지의 수를 수정 + totalPageCount = totalPageCount + 1; + } + + int viewFirstPage = (((currentPage - 1) / countPerPage) * countPerPage) + 1; // 한 화면에 첫 페이지 번호 + int ViewLastPage = viewFirstPage + countPerPage - 1; // 한 화면에 마지막 페이지 번호 + if (ViewLastPage > totalPageCount) { // 마지막 페이지의 수가 총 페이지의 수보다 큰 경우는 게시물이 존재하지 않기 때문에 마지막 페이지의 수를 수정 + ViewLastPage = totalPageCount; + } + + int totalFirstPage = 1; // 전체 페이지 중에 처음 페이지 + int totalLastPage = totalPageCount; // 전체 페이지 중에 마지막 페이지 + int prePerPage = 0; // 이전 화면에 첫번째 번호 + if (viewFirstPage - countPerPage > 0) { + prePerPage = viewFirstPage - countPerPage; + } else { + prePerPage = totalFirstPage; + } + int nextPerPage = 0; // 이후 화면에 첫번째 번호 + if (viewFirstPage + countPerPage < totalPageCount) { + nextPerPage = viewFirstPage + countPerPage; + } else { + nextPerPage = totalPageCount; + } + + // 페이지 네이게이션 설정 + + + pagination += "
"; + // pagination += "
Total Page :" + totalPageCount +"
"; +// pagination += "
"; + //pagination += " "; + + pagination += " "; + + //pagination += " "; + for (int a = viewFirstPage; a <= ViewLastPage; a++) { + if (a == currentPage) { + // pagination += " "+a+""; + // pagination += " "+a+""; + pagination += " "; + } else { + pagination += " "; + } + } + //pagination += " "; + // pagination += " "; + pagination += " "; + //pagination += "
"; + pagination += "
"; + + int offset = ((currentPage - 1) * countPerList) ; // 한 화면의 표출되는 게시물의 시작 번호의 -1 (쿼리 조건절) + + // LIMIT는 가져올 row의 수, OFFSET은 몇 번째 row부터 가져올지를 결정 + pageFormVO.setLimit(countPerList); + pageFormVO.setOffset(offset); + pageFormVO.setPagination(pagination); + + return pageFormVO; + } +} diff --git a/src/main/java/com/bb/util/SHA256.java b/src/main/java/com/bb/util/SHA256.java new file mode 100644 index 0000000..daafa23 --- /dev/null +++ b/src/main/java/com/bb/util/SHA256.java @@ -0,0 +1,24 @@ +package com.bb.util; + + +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class SHA256 { + + public String encrypt(String text) throws NoSuchAlgorithmException { + MessageDigest md = MessageDigest.getInstance("SHA-256"); + md.update(text.getBytes()); + + return bytesToHex(md.digest()); + } + + private String bytesToHex(byte[] bytes) { + StringBuilder builder = new StringBuilder(); + for (byte b : bytes) { + builder.append(String.format("%02x", b)); + } + return builder.toString(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/bb/util/SHA256WithRSA.java b/src/main/java/com/bb/util/SHA256WithRSA.java new file mode 100644 index 0000000..2c745a3 --- /dev/null +++ b/src/main/java/com/bb/util/SHA256WithRSA.java @@ -0,0 +1,109 @@ +package com.bb.util; + +import java.io.UnsupportedEncodingException; +import java.security.*; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.Base64; + +import javax.crypto.Cipher; + +public class SHA256WithRSA { + + /** + * 암호화 + */ + static String encode(String plainData, String stringPublicKey) { + String encryptedData = null; + try { + //평문으로 전달받은 공개키를 공개키객체로 만드는 과정 + PublicKey publicKey = getPublicKey(stringPublicKey); + //만들어진 공개키객체를 기반으로 암호화모드로 설정하는 과정 + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + //평문을 암호화하는 과정 + byte[] byteEncryptedData = cipher.doFinal(plainData.getBytes()); + encryptedData = Base64.getEncoder().encodeToString(byteEncryptedData); + } catch (Exception e) { + e.printStackTrace(); + } + return encryptedData; + } + + static PublicKey getPublicKey(String stringPublicKey) { + PublicKey publicKey = null; + try { + //평문으로 전달받은 공개키를 공개키객체로 만드는 과정 + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + byte[] bytePublicKey = Base64.getDecoder().decode(stringPublicKey.getBytes()); + X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(bytePublicKey); + publicKey = keyFactory.generatePublic(publicKeySpec); + } catch (Exception e) { + e.printStackTrace(); + } + return publicKey; + } + + /** + * 복호화 + */ + static String decode(String encryptedData, String stringPrivateKey) { + String decryptedData = null; + try { + //평문으로 전달받은 개인키를 개인키객체로 만드는 과정 + PrivateKey privateKey = getPrivateKey(stringPrivateKey); + //만들어진 개인키객체를 기반으로 암호화모드로 설정하는 과정 + Cipher cipher = Cipher.getInstance("RSA"); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + //암호문을 평문화하는 과정 + byte[] byteEncryptedData = Base64.getDecoder().decode(encryptedData.getBytes()); + byte[] byteDecryptedData = cipher.doFinal(byteEncryptedData); + decryptedData = new String(byteDecryptedData); + } catch (Exception e) { + e.printStackTrace(); + } + return decryptedData; + } + + static PrivateKey getPrivateKey(String stringPrivateKey) { + PrivateKey privateKey = null; + try { + //평문으로 전달받은 개인키를 개인키객체로 만드는 과정 + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + byte[] bytePrivateKey = Base64.getDecoder().decode(stringPrivateKey.getBytes()); + PKCS8EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(bytePrivateKey); + privateKey = keyFactory.generatePrivate(privateKeySpec); + } catch (Exception e) { + e.printStackTrace(); + } + return privateKey; + } + + public static String sign(String plainText, String strPrivateKey) { + try { + PrivateKey privateKey = getPrivateKey(strPrivateKey); + Signature privateSignature = Signature.getInstance("SHA256withRSA"); + privateSignature.initSign(privateKey); + privateSignature.update(plainText.getBytes("UTF-8")); + byte[] signature = privateSignature.sign(); + return Base64.getEncoder().encodeToString(signature); + } catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException | SignatureException e) { + throw new RuntimeException(e); + } + } + + public static boolean verifySignarue(String plainText, String signature, String strPublicKey) { + boolean result = false; + Signature sig; + try { + PublicKey publicKey = getPublicKey(strPublicKey); + sig = Signature.getInstance("SHA256withRSA"); + sig.initVerify(publicKey); + sig.update(plainText.getBytes()); + result = sig.verify(Base64.getDecoder().decode(signature)); + } catch (NoSuchAlgorithmException | InvalidKeyException | SignatureException e) { + throw new RuntimeException(e); + } + return result; + } +} diff --git a/src/main/java/com/bb/util/StringUtils.java b/src/main/java/com/bb/util/StringUtils.java new file mode 100644 index 0000000..e0a6bbc --- /dev/null +++ b/src/main/java/com/bb/util/StringUtils.java @@ -0,0 +1,464 @@ +package com.bb.util; + +import java.io.StringReader; +import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.text.DecimalFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Base64; +import java.util.Base64.Encoder; +import java.util.Date; +import java.util.Map; +import java.util.Random; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; + +// XML Parser 패키지 (Spring Boot 3/JDK 17 환경에 맞춰 javax 유지) +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class StringUtils { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + /** + * 문자열이 JSON 형태인지 검사 + */ + public static boolean isJson(String input) { + if (input == null || input.trim().isEmpty()) return false; + + try { + objectMapper.readTree(input); + return true; + } catch (Exception e) { + return false; + } + } + + /** + * 문자열이 URL 형태인지 정규식으로 검사 + */ + public static boolean isUrl(String input) { + if (input == null || input.trim().isEmpty()) return false; + + // http, https, ftp 등 다양한 프로토콜 대응 + String regex = "^(https?|ftp)://[^\\s/$.?#].[^\\s]*$"; + return input.matches(regex); + } + + /** + * 문자열이 JSON / URL / 기타 중 어떤 형태인지 구분 + */ + public static String getType(String input) { + if (isJson(input)) return "JSON"; + if (isUrl(input)) return "URL"; + return "UNKNOWN"; + } + + /** + * 문자열이 NULL이거나 빈값인지 검사 + * * @param string + * @return + */ + public static boolean isEmpty(String string) { + return string == null || string.trim().isEmpty(); + } + + /** + * null값인 문자열 기본값으로 대체 + * * @param string + * @param defaultValue + * @return + */ + public static String nullValue(String string, String defaultValue) { + if (isEmpty(string)) { + return defaultValue; + } else { + return string; + } + } + + /** + * null값인 문자열 기본값으로 대체 + * * @param string + * @param defaultValue + * @return + */ + public static String nullValue(String string, int defaultValue) { + if (isEmpty(string)) { + return String.valueOf(defaultValue); + } else { + return string; + } + } + + /** + * null값인 문자열 기본값으로 대체 + * * @param string + * @param defaultValue + * @return + */ + public static String nullValue(String string, float defaultValue) { + if (isEmpty(string)) { + return String.valueOf(defaultValue); + } else { + return string; + } + } + + /** + * null값인 문자열 기본값으로 대체 + * * @param string + * @return + */ + public static String nullValue(String string) { + return nullValue(string, ""); + } + + /** + * 문자열 배열을 합친다 + * * @param strings + * @param separater + * @return + */ + public static String join(String[] strings, String separater) { + String joinedString = ""; + + for (int i = 0; i < strings.length; i++) { + joinedString += (joinedString.length() > 0 ? separater : "") + strings[i]; + } + + return joinedString; + } + + /** + * Map의 키값을 문자열 배열로 얻는다 + * * @param map + * @return + */ + public static String[] getArrayFrom(Map map) { + String[] strings = new String[map.size()]; + + int i = 0; + for (Object key : map.keySet()) { + strings[i++] = key.toString(); + } + + return strings; + } + + /** + * Map의 키값을 문자열로 얻는다 + * * @param map + * @param separater + * @return + */ + public static String getStringFrom(Map map, String separater) { + return join(getArrayFrom(map), separater); + } + + /** + * 닉네임용 문자 난수발생기 + * * @param length + * @return + */ + public static String generateString(int length) { + + Random rnd = new Random(); + StringBuffer buf = new StringBuffer(); + String returnStr = ""; + + for (int i = 0; i < length; i++) { + if (i == 0 || rnd.nextBoolean()) { + buf.append((char) ((int) (rnd.nextInt(26)) + 97)); // 영문소문자 a ~ z + } else { + buf.append((rnd.nextInt(9) + 1)); // 숫자 1 ~ 9 + } + + } + returnStr = buf.toString(); + + if (returnStr.indexOf("xxx") + returnStr.indexOf("sex") + returnStr.indexOf("fuck") + returnStr.indexOf("nude") + + returnStr.indexOf("666") >= 0) { + returnStr = generateString(length); + } + return returnStr; + } + + /** + * 인증번호용 난수발생기 + * * @param length + * @return + */ + public static String generateNumber(int length) { + + String numStr = "1"; + String plusNumStr = "1"; + + for (int i = 0; i < length; i++) { + numStr += "0"; + + if (i != length - 1) { + plusNumStr += "0"; + } + } + + Random random = new Random(); + int result = random.nextInt(Integer.parseInt(numStr)) + Integer.parseInt(plusNumStr); + + if (result > Integer.parseInt(numStr)) { + result = result - Integer.parseInt(plusNumStr); + } + + return String.valueOf(result); + } + + public static String mask(String origin, int length, String mask) { + StringBuilder masked = new StringBuilder(origin.substring(0, length)); + + for (int i = 0; i < origin.length() - length; i++) { + masked.append(mask); + } + + return masked.toString(); + } + + public static String numberFormat(Object number, String pattern) { + DecimalFormat df = new DecimalFormat(pattern); + return df.format(number); + } + + public static String randomCharNum(int wordLength) { + Random r = new Random(); + StringBuilder sb = new StringBuilder(wordLength); + for(int i = 0; i < wordLength; i++) { + if(r.nextBoolean()){ + sb.append((char)((int)(r.nextInt(26))+97)); + }else{ + sb.append((r.nextInt(10))); + } + } + return sb.toString(); + } + + /** + * MD5 해시 후 Hex 문자열 변환 + * (에러 원인인 DatatypeConverter 패키지 대신 표준 StringBuilder 사용) + */ + public static String md5AndHex(String plainText) throws NoSuchAlgorithmException { + + //MessageDigest 인스턴스 생성(MD5) + MessageDigest md = MessageDigest.getInstance("MD5"); + + //해쉬값 업데이트 + md.update(plainText.getBytes()); + byte[] digest = md.digest(); + + //Byte To Hex String (기존 DatatypeConverter 대체 로직) + StringBuilder sb = new StringBuilder(); + for (byte b : digest) { + sb.append(String.format("%02X", b)); + } + return sb.toString(); + } + + + public static String makeApiKey(String param) { + + int n = 20; // n자리 쿠폰 + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + + } + + public static String makeApiKey(String param, int n) { + + + char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ,'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; + + + Random rd = new Random(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < n; i++) { + char ch = chs[rd.nextInt(chs.length)]; + sb.append(ch); + } + return param + sb.toString(); + + + } + + public static String makeRandomKey(int length) { + int leftLimit = 48; // numeral '0' + int rightLimit = 122; // letter 'z' + int targetStringLength = length; + Random random = new Random(); + String generatedString = random.ints(leftLimit, rightLimit + 1) + .filter(i -> (i <= 57 || i >= 65) && (i <= 90 || i >= 97)) + .limit(targetStringLength) + .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) + .toString(); + System.out.println("### makeRandomKey : " + generatedString); + return generatedString; + } + + public static String replaceAll(String str, String p, String a) { + + + return str.replaceAll(p, a); + } + + public static Document convertStringToXMLDocument(String xmlString) { + //Parser that produces DOM object trees from XML content + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + + //API to obtain DOM Document instance + DocumentBuilder builder = null; + try { + //Create DocumentBuilder with default configuration + builder = factory.newDocumentBuilder(); + + //Parse the content to Document object + Document doc = builder.parse(new InputSource(new StringReader(xmlString))); + return doc; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public static String hashing(String msg, String key) { + String result =""; + try { + Encoder encoder = Base64.getEncoder(); + + Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); + SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), "HmacSHA256"); + sha256_HMAC.init(secret_key); + + byte[] bt = sha256_HMAC.doFinal(msg.getBytes()); + String hash = encoder.encodeToString(bt); + result = hash; + }catch(Exception e) {} + return result; + } + + + + public static class StringBuilderPlus { + + private StringBuilder sb; + + public StringBuilderPlus(){ + sb = new StringBuilder(); + } + + public void append(String str) + { + sb.append(str != null ? str : ""); + } + + public void appendLine(String str) + { + sb.append(str != null ? str : "").append(System.getProperty("line.separator")); + } + + public String toString() + { + return sb.toString(); + } + } + + + public static boolean isNumberic(String str) { + boolean result = true; + for(char c : str.toCharArray()){ + if(!Character.isDigit(c)) { + result = false; + break; + } + } + return result; + } + + public static String extractLink(String script) { // 정규 표현식을 사용하여 location.href 값 추출 + String regex = "location\\.href='(.*?)'"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(script); + + if (matcher.find()) { + return matcher.group(1); + } else { + throw new IllegalArgumentException("유효한 링크를 찾을 수 없습니다."); + } + } + + public static String convertToDateOnly(String dateTime) { + String result = ""; + try { // Define the input and output date formats + SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd"); + + // Parse the input date string + Date date = inputFormat.parse(dateTime); + + // Format the date to the desired output format + result = outputFormat.format(date); + } catch (ParseException e) { + e.printStackTrace(); + } + return result; + } + + /** + * DB 저장용 문자열을 안전하게 잘라주는 메서드 + * @param body 자를 대상 문자열 (예: response.getBody()) + * @param limitBytes 최대 허용 바이트 수 (예: VARCHAR(100) → 100) + * @return 잘린 문자열 (너무 길면 ... 표시 포함) + */ + public static String truncateBodyForDb(String body, int limitBytes) { + if (body == null) return null; + + byte[] utf8Bytes = body.getBytes(StandardCharsets.UTF_8); + if (utf8Bytes.length <= limitBytes) { + return body; + } + + // 바이트 단위로 자르기 + int endIndex = body.length(); + while (endIndex > 0) { + String candidate = body.substring(0, endIndex); + if (candidate.getBytes(StandardCharsets.UTF_8).length <= limitBytes - 3) { // "..." 고려 + return candidate + "..."; + } + endIndex--; + } + + // 혹시라도 한 글자도 안 남는 경우 (이론상 거의 없음) + return body.substring(0, Math.min(body.length(), 3)) + "..."; + } +} \ No newline at end of file diff --git a/src/main/java/com/bb/util/TOTPTokenGenerator.java b/src/main/java/com/bb/util/TOTPTokenGenerator.java new file mode 100644 index 0000000..896ba43 --- /dev/null +++ b/src/main/java/com/bb/util/TOTPTokenGenerator.java @@ -0,0 +1,57 @@ +package com.bb.util; + +import com.bb.model.OTPInfo; +import com.warrenstrange.googleauth.GoogleAuthenticator; +import com.warrenstrange.googleauth.GoogleAuthenticatorKey; +import com.warrenstrange.googleauth.GoogleAuthenticatorQRGenerator; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class TOTPTokenGenerator { + + private static String GOOGLE_URL = "https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl="; + + private TOTPTokenGenerator() { + //throw new RuntimeException("TOTPTokenUtil"); + } + + /** + * OTP 정보 URL 생성 + * @param secretKey - generateSecretKey 메서드 리턴 값 + * @param issuer - OTP 발급자(사이트 도메인) + * @param userName - OTP 발급하는 사용자 이름 + * @return Google Authenticator에 전달할 정보 URL + * @throws Exception + */ + //QR-Code 생성 [개인키, 계정명(유저ID), 발급자(회사명)을 받아서 구글OTP 인증용 링크를 생성하는 메소드] + public static OTPInfo getGoogleAuthQRUrl(OTPInfo info) { + try { + GoogleAuthenticator googleAuthenticator = new GoogleAuthenticator(); + GoogleAuthenticatorKey googleAuthenticatorKey = googleAuthenticator.createCredentials(); + + // 실제론 생성한 key를 DB에 저장해놔야 나중에 OTP를 검증할 수 있음 + String secretKey = googleAuthenticatorKey.getKey(); + info.setSecretKey(secretKey); + log.info("#-QR_OTP::secretKey : " + secretKey); + + String QRUrl = GoogleAuthenticatorQRGenerator.getOtpAuthURL(info.getIssuer(), info.getAccount(), googleAuthenticatorKey); + info.setUrl(QRUrl); + log.info("#-QR_OTP::URL : " + QRUrl); + log.info("#-QR_OTP::info : " + info); + + } catch (Exception e) { + e.printStackTrace(); + } + return info; + } + + public static boolean otpVerify(String secret, int code) { + boolean verify = false; + GoogleAuthenticator googleAuthenticator = new GoogleAuthenticator(); + verify = googleAuthenticator.authorize(secret, code); + log.info("#-QR_OTP::Verify : {}", verify); + + return verify; + } +} diff --git a/src/main/java/com/bb/util/TempKey.java b/src/main/java/com/bb/util/TempKey.java new file mode 100644 index 0000000..0f4e82e --- /dev/null +++ b/src/main/java/com/bb/util/TempKey.java @@ -0,0 +1,50 @@ +package com.bb.util; + +import java.util.Random; + +public class TempKey { + + private boolean lowerCheck; + private int size; + + + public String generateAuthKey() { + String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + int charRandomIndex = (int)(Math.random()* (characters.length()-1) + 1); + int randomNum = 1000000 + (int)(Math.random()*9999999); + + char selectString = characters.charAt(charRandomIndex); + return randomNum + Character.toString(selectString); + } + + + + public String getKey(int size, boolean lowerCheck) { + this.size = size; + this.lowerCheck = lowerCheck; + return init(); + } + public String getKey(int size) { + this.size = size; + return init(); + } + + private String init() { + Random ran = new Random(); + StringBuffer sb = new StringBuffer(); + int num = 0; + do { + num = ran.nextInt(75)+48; + if((num>=48 && num<=57) || (num>=65 && num<=90) || (num>=97 && num<=122)) { + sb.append((char)num); + }else { + continue; + } + } while (sb.length() < size); + if(lowerCheck) { + return sb.toString().toLowerCase(); + } + return sb.toString(); + } + +} diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml new file mode 100644 index 0000000..e402ce8 --- /dev/null +++ b/src/main/resources/application-local.yml @@ -0,0 +1,109 @@ +server: + tomcat: + connection-timeout: 15000 + threads: + max: 4096 + min-spare: 50 + accept-count: 150 + mbeanregistry: + enabled: true + + # port: 80 + port: 8080 + servlet: + encoding: + force: true + session: + timeout: 18000s + cookie: + same-site: lax + http-only: true + secure: false +spring: + devtools: + livereload: + enabled: true + restart: + enabled: true + exclude: static/**,templates/** + + datasource1: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://ultracore.cbop3tqawysk.ap-southeast-1.rds.amazonaws.com:6600/tripleDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 + username: dev_triple + password: 4N!lCDki8GhCfEIHpRogIQebvrCJ0 + auto-commit: true + connection-test-query: SELECT 1 + transaction-isolation: TRANSACTION_READ_COMMITTED + maximum-pool-size: 20 + minimum-idle: 20 + leak-detection-threshold: 60000 + validation-timeout: 300000 + hikari: + pool-name: hikari-cp + max-lifetime: 1800000 + connection-timeout: 30000 + + datasource2: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://core-ro.cbop3tqawysk.ap-southeast-1.rds.amazonaws.com:6600/tripleDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 + # jdbc-url: jdbc:mysql://ultracore.cbop3tqawysk.ap-southeast-1.rds.amazonaws.com:6600/tripleDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 + username: dev_triple + password: 4N!lCDki8GhCfEIHpRogIQebvrCJ0 + auto-commit: true + connection-test-query: SELECT 1 + transaction-isolation: TRANSACTION_READ_COMMITTED + maximum-pool-size: 20 + minimum-idle: 20 + leak-detection-threshold: 60000 + validation-timeout: 300000 + hikari: + pool-name: hikari-cp + max-lifetime: 1800000 + connection-timeout: 30000 + + thymeleaf: + mode: HTML + prefix: classpath:/templates/ + check-template-location: true + suffix: .html + encoding: utf-8 + cache: false + aop: + auto: true + proxy-target-class: true + servlet: + multipart: + max-file-size: 20MB + max-request-size: 20MB + + +logging: + file: + path: /home/log/triple + level: + org.springframework: WARN + com.bb: INFO + com.zaxxer.hikari.HikariConfig: WARN + com.zaxxer.hikari: WARN + +mybatis: + mapper-locations: classpath:mapper/*/*.xml + type-aliases-package: + configuration: + map-underscore-to-camel-case: true + +jwt: + header: Authorization + secret: c2lsdmVybmluZS10ZWNoLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQtc2lsdmVybmluZS10ZWNoLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQK + validity-in-seconds: 1800 + +cron: LOCAL + +management: + endpoints: + web: + exposure: + include: "*" + + diff --git a/src/main/resources/application-real.yml b/src/main/resources/application-real.yml new file mode 100644 index 0000000..05d6f66 --- /dev/null +++ b/src/main/resources/application-real.yml @@ -0,0 +1,109 @@ +server: + tomcat: + connection-timeout: 15000 + threads: + max: 4096 + min-spare: 50 + accept-count: 300 + mbeanregistry: + enabled: true + + port: 80 + # port: 8080 + servlet: + encoding: + force: true + session: + timeout: 18000s + cookie: + same-site: lax + http-only: true + secure: false +spring: + devtools: + livereload: + enabled: true + restart: + enabled: true + exclude: static/**,templates/** + + datasource1: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://ultracore.cbop3tqawysk.ap-southeast-1.rds.amazonaws.com:6600/tripleDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 + username: dev_triple + password: 4N!lCDki8GhCfEIHpRogIQebvrCJ0 + auto-commit: true + connection-test-query: SELECT 1 + transaction-isolation: TRANSACTION_READ_COMMITTED + maximum-pool-size: 100 + minimum-idle: 50 + leak-detection-threshold: 30000 + validation-timeout: 30000 + hikari: + pool-name: hikari-cp + max-lifetime: 1800000 + connection-timeout: 30000 + + datasource2: + driver-class-name: com.mysql.cj.jdbc.Driver + jdbc-url: jdbc:mysql://core-ro.cbop3tqawysk.ap-southeast-1.rds.amazonaws.com:6600/tripleDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 + # jdbc-url: jdbc:mysql://ultracore.cbop3tqawysk.ap-southeast-1.rds.amazonaws.com:6600/tripleDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 + username: dev_triple + password: 4N!lCDki8GhCfEIHpRogIQebvrCJ0 + auto-commit: true + connection-test-query: SELECT 1 + transaction-isolation: TRANSACTION_READ_COMMITTED + maximum-pool-size: 100 + minimum-idle: 50 + leak-detection-threshold: 30000 + validation-timeout: 30000 + hikari: + pool-name: hikari-cp + max-lifetime: 1800000 + connection-timeout: 30000 + + thymeleaf: + mode: HTML + prefix: classpath:/templates/ + check-template-location: true + suffix: .html + encoding: utf-8 + cache: false + aop: + auto: true + proxy-target-class: true + servlet: + multipart: + max-file-size: 20MB + max-request-size: 20MB + + +logging: + file: + path: /home/log/triple + level: + org.springframework: WARN + com.bb: INFO + com.zaxxer.hikari.HikariConfig: WARN + com.zaxxer.hikari: WARN + +mybatis: + mapper-locations: classpath:mapper/*/*.xml + type-aliases-package: + configuration: + map-underscore-to-camel-case: true + +jwt: + header: Authorization + secret: c2lsdmVybmluZS10ZWNoLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQtc2lsdmVybmluZS10ZWNoLXNwcmluZy1ib290LWp3dC10dXRvcmlhbC1zZWNyZXQK + validity-in-seconds: 1800 + +cron: LOCAL + +management: + endpoints: + web: + exposure: + include: "*" + + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..13dc790 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,10 @@ +# spring.profiles.active: @env@ +spring.profiles.active: real + +server.tomcat.accesslog.pattern= %{yyyy-MM-dd HH:mm:ss}t\t%s\t%r\t%{User-Agent}i\t%{Referer}i\t%a\t%b +server.tomcat.accesslog.enabled= true +server.tomcat.basedir= /home/logs/ + + + + diff --git a/src/main/resources/authentication.properties b/src/main/resources/authentication.properties new file mode 100644 index 0000000..bd4dfd3 --- /dev/null +++ b/src/main/resources/authentication.properties @@ -0,0 +1,5 @@ +AUTH.HEADER_STRING=Authorization +AUTH.TOKEN_PREFIX=Bearer +AUTH.AUTHORITIES_NAME=roles +AUTH.TOKEN_VALIDITY=18000 +AUTH.SIGNING_KEY=bbsskey \ No newline at end of file diff --git a/src/main/resources/db1/CALLBACKLOG.xml b/src/main/resources/db1/CALLBACKLOG.xml new file mode 100644 index 0000000..a44e7c6 --- /dev/null +++ b/src/main/resources/db1/CALLBACKLOG.xml @@ -0,0 +1,52 @@ + + + + + + INSERT INTO site_callback_err_log ( + siteIdx, + memberIdx, + vendorIdx, + statusCode, + callBackType, + + tranId, + + callBackReqBody, + callBackResBody, + errorCode, + errorMsg, + regDate, + updDate + ) VALUES ( + #{siteIdx}, + #{memberIdx}, + #{vendorIdx}, + #{statusCode}, + #{callBackType}, + + #{tranId}, + + #{callBackReqBody}, + #{callBackResBody}, + #{errorCode}, + #{errorMsg}, + #{regDate}, + #{updDate} + ) + + + + INSERT INTO bet_radar_log ( + tranId, + betId, + jsonstr + ) + VALUES ( + #{tranId}, + #{betId}, + #{jsonstr} + ) + + + diff --git a/src/main/resources/db1/COIN.xml b/src/main/resources/db1/COIN.xml new file mode 100644 index 0000000..75b1106 --- /dev/null +++ b/src/main/resources/db1/COIN.xml @@ -0,0 +1,97 @@ + + + + + + + + INSERT INTO coin_info ( + id, + symbol, + name, + currency, + image, + currentPrice, + marketCap, + marketCapRank, + fullyDilutedValuation, + totalVolume, + high24h, + low24h, + priceChange24h, + priceChangePercentage24h, + marketCapChange24h, + marketCapChangePercentage24h, + circulatingSupply, + totalSupply, + maxSupply, + ath, + athChangePercentage, + athDate, + atl, + atlChangePercentage, + atlDate, + roi, + lastUpdated + ) VALUES ( + #{id}, + #{symbol}, + #{name}, + #{currency}, + #{image}, + #{currentPrice}, + #{marketCap}, + #{marketCapRank}, + #{fullyDilutedValuation}, + #{totalVolume}, + #{high24h}, + #{low24h}, + #{priceChange24h}, + #{priceChangePercentage24h}, + #{marketCapChange24h}, + #{marketCapChangePercentage24h}, + #{circulatingSupply}, + #{totalSupply}, + #{maxSupply}, + #{ath}, + #{athChangePercentage}, + #{athDate}, + #{atl}, + #{atlChangePercentage}, + #{atlDate}, + #{roi}, + #{lastUpdated} + ) + ON DUPLICATE KEY UPDATE + symbol = #{symbol}, + name = #{name}, + currency = #{currency}, + image = #{image}, + currentPrice = #{currentPrice}, + marketCap = #{marketCap}, + marketCapRank = #{marketCapRank}, + fullyDilutedValuation = #{fullyDilutedValuation}, + totalVolume = #{totalVolume}, + high24h = #{high24h}, + low24h = #{low24h}, + priceChange24h = #{priceChange24h}, + priceChangePercentage24h = #{priceChangePercentage24h}, + marketCapChange24h = #{marketCapChange24h}, + marketCapChangePercentage24h = #{marketCapChangePercentage24h}, + circulatingSupply = #{circulatingSupply}, + totalSupply = #{totalSupply}, + maxSupply = #{maxSupply}, + ath = #{ath}, + athChangePercentage = #{athChangePercentage}, + athDate = #{athDate}, + atl = #{atl}, + atlChangePercentage = #{atlChangePercentage}, + atlDate = #{atlDate}, + roi = #{roi}, + lastUpdated = #{lastUpdated}; + + + + + + \ No newline at end of file diff --git a/src/main/resources/db1/COMMON.xml b/src/main/resources/db1/COMMON.xml new file mode 100644 index 0000000..a9ed25b --- /dev/null +++ b/src/main/resources/db1/COMMON.xml @@ -0,0 +1,24 @@ + + + + + + INSERT INTO ban_game_info + (vendorIdx, vendorTitle, banGameType, banGameId, banGameName, banGameNameEng, skin) + VALUES + (#{vendorIdx}, #{vendorTitle}, #{banGameType}, #{banGameId}, #{banGameName}, #{banGameNameEng}, #{skin}) + ON DUPLICATE KEY UPDATE updDate = NOW(), + banGameName = #{banGameName}, + banGameNameEng = #{banGameNameEng} + + + + INSERT INTO nexus_game_table + (gameId, gameKey) + VALUES + (#{banGameId}, #{banGameKey}) + ON DUPLICATE KEY UPDATE updDate = NOW(), + gameKey = #{banGameKey} + + + \ No newline at end of file diff --git a/src/main/resources/db1/CREDIT.xml b/src/main/resources/db1/CREDIT.xml new file mode 100644 index 0000000..948cb87 --- /dev/null +++ b/src/main/resources/db1/CREDIT.xml @@ -0,0 +1,592 @@ + + + + + + INSERT INTO credit_info ( + siteIdx, + targetSiteIdx, + siteId, + targetSiteId, + creditType, + `inOut`, + tranId, + creditAmt, + creditRate, + gameCategory, + preCreditAmt, + creditStatus, + regDate, + updDate, + pointAmt + ) + VALUES ( + #{siteIdx}, + #{targetSiteIdx}, + #{siteId}, + #{targetSiteId}, + #{creditType}, + #{inOut}, + #{tranId}, + #{creditAmt}, + #{creditRate}, + + #{gameCategory}, + + + '0', + + #{preCreditAmt}, + #{creditStatus}, + NOW(), + NOW(), + #{pointAmt} + ) + + SELECT LAST_INSERT_ID(); + + + + + INSERT INTO credit_info ( + siteIdx, + targetSiteIdx, + siteId, + targetSiteId, + creditType, + `inOut`, + tranId, + creditAmt, + userAmt, + creditRate, + gameCategory, + preCreditAmt, + creditStatus, + regDate, + updDate, + preBalance + ) + VALUES ( + #{siteIdx}, + #{targetSiteIdx}, + #{siteId}, + #{targetSiteId}, + #{creditType}, + #{inOut}, + #{tranId}, + #{creditAmt}, + #{userAmt}, + #{creditRate}, + + #{gameCategory}, + + + '0', + + #{preCreditAmt}, + #{creditStatus}, + NOW(), + NOW(), + #{preBalance} + ) + + SELECT LAST_INSERT_ID(); + + + + + INSERT INTO credit_info_aiao ( + creditIdx, + siteIdx, + siteId, + targetSiteIdx, + targetSiteId, + creditType, + creditAmt, + preCreditAmt, + regDate + ) + VALUES ( + #{creditIdx}, + #{siteIdx}, + #{siteId}, + #{targetSiteIdx}, + #{targetSiteId}, + #{creditType}, + #{creditAmt}, + #{preCreditAmt}, + now() + ) + + + + update site_credit_info set + + + credit = credit + #{creditAmt} + + + credit = credit - #{creditAmt} + + where siteId = #{siteId} + + + + + + + + + + + + + + + + update credit_info set creditStatus = ${creditStatus} , updDate = now() where creditIdx = #{creditIdx} + + + + update insurance_info set status = ${status}, updDate = now() where idx = #{idx} + + + + + + + + + + + + + INSERT INTO `insurance_info` + (siteIdx, siteId, insureType, insureUpSiteIdx, insureUpSiteId, insureAmt, insurePointAmt, preCreditAmt, preCreditPoint, preInsureAmt, preInsurePoint, `status`, regDate, updDate, regId, updId) + values + (#{siteIdx}, #{siteId}, #{insureType}, #{insureUpSiteIdx}, #{insureUpSiteId}, #{insureAmt}, #{insurePointAmt}, #{preCreditAmt}, #{preCreditPoint}, #{preInsureAmt}, #{preInsurePoint}, #{status} ,now(), now(), #{regId}, #{regId}) + + + + + + + + + + update bet_info set apiStatus ='1' , updDate = now() + where tranId = #{tranId} and refId = #{refId} + + + + update bet_info set creditYn ='Y' , updDate = now() + where tranType='debit' and refId = #{refId} + + + + + INSERT INTO credit_point_temp + (siteIdx, siteId, memberIdx, memberId, vendor, vendorIdx, tranId, betId, amount, betDate) + VALUES + (#{siteIdx}, #{siteId}, #{memberIdx}, #{memberId}, #{vendor}, #{vendorIdx}, #{tranId}, #{betId}, #{amount}, NOW(3)) + + + + INSERT INTO credit_point_info + (siteIdx, siteId, targetSiteIdx, targetSiteId, vendor, vendorIdx, tranId, betId, prePointAmt, pointAmt) + VALUES + (#{siteIdx}, #{siteId}, #{targetSiteIdx}, #{targetSiteId}, #{vendor}, #{vendorIdx}, #{tranId}, #{betId}, #{prePointAmt}, #{pointAmt}) + + + + + + UPDATE site_credit_info + SET casinoCreditA = casinoCreditA + #{casinoCreditA}, + casinoCreditB = casinoCreditB + #{casinoCreditB}, + slotCreditA = slotCreditA + #{slotCreditA}, + slotCreditB = slotCreditB + #{slotCreditB} + WHERE siteId = #{targetSiteId} + + + \ No newline at end of file diff --git a/src/main/resources/db1/SETTING.xml b/src/main/resources/db1/SETTING.xml new file mode 100644 index 0000000..26d080e --- /dev/null +++ b/src/main/resources/db1/SETTING.xml @@ -0,0 +1,25 @@ + + + + + + UPDATE site_vendors_map + SET siteMaxBet = #{siteMaxBet}, + siteMaxWin = #{siteMaxWin}, + useYn = #{useYn}, + nexusSkinType = #{nexusSkinType}, + extrSkinType = #{extrSkinType} + WHERE siteIdx = #{siteIdx} + AND vendorIdx = #{vendorIdx} + + + + INSERT INTO ban_game_site_info + (siteIdx, vendorIdx, vendorTitle, banGameId) + VALUES + (#{siteIdx}, #{vendorIdx}, #{vendorTitle}, #{blockTableIds}) + ON DUPLICATE KEY UPDATE updDate = NOW(), + banGameId = #{blockTableIds} + + + \ No newline at end of file diff --git a/src/main/resources/db1/SITE.xml b/src/main/resources/db1/SITE.xml new file mode 100644 index 0000000..111942c --- /dev/null +++ b/src/main/resources/db1/SITE.xml @@ -0,0 +1,2198 @@ + + + + + + + + + + + + + + + + update site_ip_cms set cmsAllowIp = #{ips} where siteId = #{siteId} + + + + + + + + + + + + + + insert into site_member (siteIdx, memberId, memberNick, regDate) values (#{siteIdx}, #{authParam.userId}, IFNULL(#{authParam.nickName}, CONCAT(LPAD(HEX(#{siteIdx}), 3, '0'), #{authParam.userId})) , now()) + + + + + + + + + + INSERT INTO `bet_info` + (`tranId`,`refId`,`siteIdx`,`memberIdx`,`vendorIdx`,vendorCode, `vendorTranKey` + ,`gameType`,`gameId`,`gameIdx`,`tranType`,`depositAmt`,`creditAmt` + ,`overCreditAmt` + ,`isCancel`,`isTie`,`apiStatus`,`regDate`,`updDate`, vendorApiId ) + values + (#{tranId},#{refId},#{siteIdx},#{memberIdx},#{vendorIdx},#{vendorCode}, #{vendorTranKey} + ,#{gameType},#{gameId},#{gameIdx},#{tranType},#{depositAmt},#{creditAmt} + + ,#{overCreditAmt} + + + ,'0' + + ,#{isCancel},#{isTie},#{apiStatus},now(),now() , #{vendorApiId}) + ON DUPLICATE KEY UPDATE tranId = tranId, + depositAmt = #{depositAmt}, + creditAmt = #{creditAmt}, + isCancel = #{isCancel}, + isTie = #{isTie} + + + + INSERT INTO `bet_info` + (`tranId`,`refId`,`siteIdx`,`memberIdx`,`vendorIdx`,vendorCode, `vendorTranKey`,`gameIdx`,`tranType`,`depositAmt`,`creditAmt`,`overCreditAmt`,`isCancel`,`isTie`,`apiStatus`,`regDate`,`updDate`, vendorApiId ) + values + (#{tranId},#{refId},#{siteIdx},#{memberIdx},#{vendorIdx},#{vendorCode}, #{vendorTranKey},#{gameIdx},#{tranType},#{depositAmt},#{creditAmt},#{overCreditAmt},#{isCancel},#{isTie},#{apiStatus},now(),now() , #{vendorApiId}) + ON DUPLICATE KEY UPDATE tranId = tranId, + depositAmt = #{depositAmt}, + creditAmt = #{creditAmt}, + isCancel = #{isCancel}, + isTie = #{isTie} + + + + + + UPDATE bet_info + SET balance = #{balance}, + apiStatus = '1', + updDate = NOW() + WHERE tranId = #{tranId} and refId = #{refId} + + + + update bet_info set isCancel = 'Y' + where refId = #{refId} AND tranType = 'debit' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into `site_info` + (siteId, siteName, sitePass, upperSiteIdx, upperSiteId, siteKey, siteCreditRate, siteIp, memo, regDate, siteLevel, siteGubun, siteType, isTransfer) + values + (#{siteId}, #{siteName}, UPPER(SHA1(UNHEX(SHA1(#{sitePass})))) ,#{upperSiteIdx}, #{upperSiteId}, #{siteKey}, #{siteCreditRate},'3.3.3.3', #{memo}, now(), #{siteLevel}, #{siteGubun}, #{siteType}, #{isTransfer}) + + + SELECT LAST_INSERT_ID(); + + + + + insert into site_credit_info + (siteId, credit) + values + (#{siteId} , 0) + + + insert into site_ip_cms values (#{siteId} , '') + + + + insert into site_point_info values (#{siteId} , 0) + + + INSERT INTO `site_flow` (`topOrder`, `upperSiteId`, `siteId`) + SELECT * FROM ( + SELECT 0 topOrder, siteId AS upid, #{siteId} AS siteId FROM site_info WHERE siteId = #{siteId} + UNION + SELECT 1 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = #{siteId} + UNION + SELECT 2 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId}) + UNION + SELECT 3 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId})) + UNION + SELECT 4 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId}))) + UNION + SELECT 5 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId})))) + UNION + SELECT 6 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId}))))) + UNION + SELECT 7 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId})))))) + UNION + SELECT 8 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId}))))))) + UNION + SELECT 9 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = #{siteId})))))))) + UNION + SELECT 10 topOrder, upperSiteId , #{siteId} AS siteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId = (SELECT upperSiteId FROM site_info WHERE siteId =(SELECT upperSiteId FROM site_info WHERE siteId = #{siteId}))))))))) + )f WHERE f.upid IS NOT NULL + + + + + insert into site_vendors_map (siteIdx, vendorIdx, vendorCode, vendorApiType, companyIdx, siteMaxBet, siteMinBet, useYn, unionGameKey) + SELECT #{siteIdx}, vendorIdx, vendorCode, vendorApiType, companyIdx, siteMaxBet, siteMinBet, useYn, unionGameKey FROM site_vendors_map WHERE siteIdx = (SELECT siteIdx FROM site_info WHERE siteId =#{upperSiteId}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + insert into slotcity_info (timeStamp, datas, regDate, updDate) values (#{command}, #{datas}, now(), now()) + ON DUPLICATE KEY UPDATE updDate = now() + + + + + + + + + + + + + + insert tran_error_log (betId, error_type) values (#{betId} , #{errorType}) + + + + + + update site_member set lastSid = #{lastSid} where memberId = #{memberId} and siteIdx = #{siteIdx} + + + + update site_member set bombAccId = #{bombAccId}, dowinId = #{bombAccId} where memberId = #{memberId} and siteIdx = #{siteIdx} + + + + + + + INSERT INTO bet_detail (refId, vendorCode, detail, detail4, regDate) + VALUES (#{refId},#{vendorCode}, #{detail},#{detail4}, now()) + ON DUPLICATE KEY UPDATE detail=#{detail}, vendorCode=#{vendorCode} ,detail4=#{detail4}, regDate = now() + + + + ${state} + + + + + + + + + + + insert site_insurance_info values (#{siteId}, 0) ON DUPLICATE KEY UPDATE siteId =#{siteId} + + + insert site_insurance_point_info values (#{siteId}, 0) ON DUPLICATE KEY UPDATE siteId =#{siteId} + + + + + + + insert into site_rate_info(siteIdx, vendorIdx, rate, insureRate, insurePointRate, insureIdle, insureYn, insureUpSiteIdx) + values (#{siteIdx}, #{vendorIdx}, #{rate}, #{insureRate}, #{insurePointRate}, #{insureIdle}, #{insureYn}, #{insureUpSiteIdx}) + + ON DUPLICATE KEY UPDATE + + insureRate=#{insureRate}, + insureYn=#{insureYn} + + + + + + insert into site_rate_info(siteIdx, vendorIdx, rate, insureRate, insurePointRate, insureIdle, insureYn) + values (#{siteIdx}, #{vendorIdx}, #{rate}, #{insureRate}, #{insurePointRate}, #{insureIdle}, #{insureYn}) + + ON DUPLICATE KEY UPDATE + + rate=#{rate} + + + + + + insert into site_rate_info(siteIdx, vendorIdx, rate, insureRate, insurePointRate, insureIdle, insureYn) + values (#{siteIdx}, #{vendorIdx}, #{rate}, #{insureRate}, #{insurePointRate}, #{insureIdle}, #{insureYn}) + + ON DUPLICATE KEY UPDATE + + insurePointRate=#{insurePointRate} + + + + + + + + + + + + + + + + + + + + + + + + update vendors_info set detailLastTime2 = REPLACE(REPLACE(#{endDate}, 'T', ' '), 'Z', '') where vendorIdx =#{vendorIdx} and vendorCode =#{vendorCode} + + + + + + update site_info set sitePass = UPPER(SHA1(UNHEX(SHA1(#{newPass})))) where siteId = #{siteId} and sitePass =UPPER(SHA1(UNHEX(SHA1(#{sitePass})))) + + + + + + update site_info set siteId = siteId + + ,siteKey = #{siteKey} + + + + ,siteIp = #{siteIp} + + + ,siteCbUrl = #{siteCbUrl} + + + + ,domain = #{domain} + + + + ,memo = #{memo} + + + + ,siteUseYn = #{siteUseYn} + + + + ,sitePass = UPPER(SHA1(UNHEX(SHA1(#{newPass})))) + + + + ,siteName = #{siteName} + + + + ,siteCreditRate = #{siteCreditRate} + + + + ,siteMaxCredit = #{siteMaxCredit} + + + + + + ,siteBankInfo = #{siteBankInfo} + + + where siteId = #{siteId} + + + + + + + + + INSERT INTO site_rate_info( siteIdx, + vendorIdx , + rate , + insureRate , + insurePointRate , + insureIdle , + insureYn , + insureUpSiteIdx + ) + SELECT + + #{siteIdx}, + vendorIdx , + (SELECT siteCreditRate FROM site_info WHERE siteIdx = #{siteIdx}) AS rate , + 0 AS insureRate, + 0 AS insurePointRate , + 0 AS insureIdle , + 'N' AS insureYn , + #{upperSiteIdx} AS insureUpSiteIdX + + FROM `site_rate_info` + WHERE siteIdx = #{upperSiteIdx} + + + + + INSERT INTO site_vendors_credit_rate_info + (siteIdx, vendorIdx, vendorCode, rate, `view`, selected, updDate) + SELECT + #{siteIdx}, + vi.vendorIdx , + vi.vendorCode , + (SELECT siteCreditRate FROM site_info WHERE siteIdx = #{siteIdx}) AS rate, + 'Y', + '', + now() + FROM `vendors_info` vi + WHERE 1=1 + + + + + + + + + + + + + + + + + + + + update site_vendors_map set vendorCode = #{vendorCode} + where vendorIdx = #{vendorIdx} and siteIdx = #{siteIdx} + + + + + + + update site_member set pragmaticId =#{pragmaticId} where memberIdx =#{memberIdx} and siteIdx =#{siteIdx} + + + + + + + + + + + + + + + + + + + + + + + + UPDATE bet_info + SET creditAmt = #{creditAmt}, + vendorTranKey = #{vendorTranKey}, + isCancel = #{isCancel}, + apiStatus = #{apiStatus} + WHERE tranId = #{tranId} AND refId = #{refId} + + + + + + + + + + + + INSERT INTO site_callback_log + (siteIdx, memberIdx, vendorIdx, tranId, refId, callBackType, callBackReqBody, callBackResBody) + VALUES + (#{siteIdx}, #{memberIdx}, #{vendorIdx}, #{tranId}, #{refId}, #{callBackType}, #{callBackReqBody}, #{callBackResBody}) + + + + + + + + + + + + INSERT INTO insurance_info + ( + + `siteIdx`, + `siteId`, + insureType, + `insureUpSiteIdx`, + `insureUpSiteId`, + `memberIdx`, + `memberId`, + `vendorIdx`, + `refId`, + `betAmt`, + `winAmt`, + `winLoseAmt`, + `insureBetAmt`, + `rate`, + `insureRate`, + `insurePointRate`, + `upSiteinsurePointRate`, + `siteCreditRate`, + `insureAmt`, + `insureUpperAmt`, + `insurePointAmt`, + `upSiteInsurePointAmt`, + `upCredit`, + `credit`, + `pointAmt`, + preCreditAmt, + preCreditPoint, + preInsureAmt, + preInsurePoint, + `status`, + `isCancel`, + `regDate`, + `updDate`, + `regId`, + `updId` + ) + + SELECT + `siteIdx`, + `siteId`, + 'BET', + `insureUpSiteIdx`, + `insureUpSiteId`, + `memberIdx`, + `memberId`, + `vendorIdx`, + `refId`, + `betAmt`, + `winAmt`, + `winLoseAmt`, + `insureBetAmt`, + `rate`, + `insureRate`, + `insurePointRate`, + `upSiteinsurePointRate`, + `siteCreditRate`, + TRUNCATE(ins.insureBetAmt*ins.insureRate*0.01, 0) AS insureAmt, + TRUNCATE(ins.insureBetAmt*(100-ins.insureRate)*0.01, 0) AS insureUpperAmt, + TRUNCATE(ABS(ins.insureBetAmt*ins.insureRate*0.01*ins.insurePointRate*0.01), 0) AS insurePointAmt, + TRUNCATE(ABS(ins.insureBetAmt*(100-ins.insureRate)*0.01*ins.upSiteinsurePointRate*0.01), 0) AS upSiteInsurePointAmt, + TRUNCATE(ins.insureBetAmt*ins.insureRate*0.01 , 0) AS upCredit, + TRUNCATE(ins.winLoseAmt - (ins.insureBetAmt*ins.insureRate*0.01), 0) AS credit, + TRUNCATE(IF( winLoseAmt < 0, ABS(ins.winLoseAmt - (ins.insureBetAmt*ins.insureRate*0.01))*( ins.rate - ins.siteCreditRate)*0.01 , 0 ) , 0) AS pointAmt, + 0,0,0,0, + -- (select ifnull(credit, 0) from `site_credit_info` c where c.siteId = siteId limit 1), + -- (SELECT IFNULL(`point`, 0) FROM `site_point_info` c WHERE c.siteId = siteId LIMIT 1), + -- (SELECT IFNULL(insurance, 0) FROM `site_insurance_info` c WHERE c.siteId = siteId LIMIT 1), + -- (SELECT IFNULL(insurance_point, 0) FROM `site_insurance_point_info` c WHERE c.siteId = siteId LIMIT 1), + '1', + 'N', + NOW(), + NOW(), + siteId, + siteId + FROM ( + SELECT + + bi.siteIdx, + s.siteId, + sri.insureUpSiteIdx, + s2.siteId AS insureUpSiteId, + bi.memberIdx, + m.memberId, + bi.vendorIdx, + bi.refId, + IF(COUNT(IF(tranType='credit', 1, NULL)) > 1 , 0, SUM(bi.depositAmt)) AS betAmt, + SUM(bi.creditAmt) AS winAmt, + (SUM(bi.creditAmt) - IF(COUNT(IF(tranType='credit', 1, NULL)) > 1 , 0, SUM(bi.depositAmt))) AS winLoseAmt, + + IF(( sri.insureYn = 'Y' AND sri2.insureYn = 'Y') , SUM(bi.creditAmt) - SUM(bi.depositAmt) , 0) + AS insureBetAmt, + + IFNULL(sri.rate, vi.defaultCreditRate) AS rate, + IFNULL(sri.insureRate, 0) AS insureRate, + IFNULL(sri.insurePointRate, 0) AS insurePointRate, + IFNULL(sri2.insurePointRate, 0) AS upSiteinsurePointRate, + + + s.siteCreditRate + + FROM `bet_info` bi + LEFT JOIN `site_rate_info` sri ON bi.siteIdx = sri.siteIdx AND bi.vendorIdx = sri.vendorIdx + LEFT JOIN `site_rate_info` sri2 ON sri.insureUpSiteIdx = sri2.siteIdx AND sri.vendorIdx = sri2.vendorIdx + LEFT JOIN `site_vendors_map` vm ON bi.vendorIdx = vm.vendorIdx AND bi.siteIdx = vm.siteIdx + LEFT JOIN `vendors_info` vi ON vm.vendorIdx = vi.vendorIdx AND vm.vendorCode = vi.vendorCode + LEFT JOIN `site_member` m ON bi.siteIdx = m.siteIdx AND bi.memberIdx = m.memberIdx + LEFT JOIN `site_info` s ON bi.siteIdx = s.siteIdx LEFT JOIN `site_info` s2 ON sri.insureUpSiteIdx = s2.siteIdx + + WHERE bi.refId IN ( + + SELECT refId FROM ( + SELECT bi.refId ,bi.regDate FROM `bet_info` bi LEFT JOIN `credit_info` ci ON bi.refId = ci.tranId + WHERE bi.regDate >='2023-05-01 00:00:00' + AND ci.tranId IS NULL + -- AND bi.siteidx = 61 + + GROUP BY bi.refId HAVING COUNT(IF(bi.tranType='credit', 1, NULL)) =0 + ORDER BY bi.regDate DESC + )onlyD WHERE DATE_FORMAT(regDate, '%Y-%m-%d %H:%i:%s') <= DATE_FORMAT(DATE_ADD(NOW(), INTERVAL -3 MINUTE), '%Y-%m-%d %H:%i:%s') + ) + GROUP BY bi.refId + )ins + + + + update site_member set bombDecYn = #{decYn} where bombAccId =#{bombAccId} + + + + + + + + + + + + INSERT INTO `bet_info` + (`tranId`,`refId`,`siteIdx`,`memberIdx`,`vendorIdx`,vendorCode, `vendorTranKey`,`gameIdx`,`tranType`,`depositAmt`,`creditAmt`,`isCancel`,`isTie`,`apiStatus`,`regDate`,`updDate` ) + values + (#{tranId},#{refId},#{siteIdx},#{memberIdx},#{vendorIdx},#{vendorCode}, #{vendorTranKey},#{gameIdx},'credit',0,0,#{isCancel},#{isTie},#{apiStatus},now(),now() ) + ON DUPLICATE KEY UPDATE tranid =tranid, updDate = now(); + + + + + + + + + + + UPDATE site_member SET betCancelCnt = (betCancelCnt+1) WHERE memberIdx =#{memberIdx} + + + + INSERT INTO vendor_change_balance_log + (siteIdx, memberIdx, vendor, vendorApiId, reqType, amount, reqAt, reqStatus, reqMsg, regDate) + VALUES + (#{siteIdx}, #{memberIdx}, #{vendor}, #{vendorApiId}, #{reqType}, #{amount}, #{reqAt}, #{reqStatus}, #{reqMsg}, NOW()) + + + + + insert into bombdemo (bombAccId, creditAmt) values (#{bombAccId}, 1000000) + + + + update bombdemo set creditAmt = #{creditAmt} WHERE bombAccId = #{bombAccId} + + + + update bombdemo set creditAmt = creditAmt + (#{creditAmt}) WHERE bombAccId = #{bombAccId} + + + + + + INSERT INTO `splus_tran_Data` + ( + `tranType`, + refId, + `cust_id`, + + `req_id`, + + + `amount`, + + + `reserve_id`, + + + `purchase_id`, + + `tranId`, + `trx_id`, + + `data`, + + `cbData`, + updDate, + regDate + ) + VALUES + ( + #{tranType}, + #{refId}, + #{cust_id}, + + #{req_id}, + + + #{amount}, + + + #{reserve_id}, + + + #{purchase_id}, + + #{tranId}, + #{trx_id}, + + #{data}, + + #{cbData}, + now(), + now() + ) + + + + update splus_tran_Data + set tranId = #{tranId}, + cbData = #{resData}, + cbResultCode =#{cbResultCode}, + updDate = now() + where trx_id = #{trx_id} + + + + + + update splus_tran_Data set purchase_id = #{purchase_id}, updDate = now() + where reserve_id = #{reserve_id} and tranType='reserve' + AND cbResultCode = '0' + + + + + + + + + insert into splus_token values(#{token}, now()) + on duplicate key update + updDate = now() + + + + + + + + + + + + + + + UPDATE site_vendors_map + SET vendorApiId = #{apiSiteId}, + vendorApiKey = #{apiKey} + WHERE siteIdx = CAST(#{siteIdx} AS UNSIGNED) + AND vendorIdx = 94 + + + + UPDATE site_vendors_map a LEFT JOIN site_vendors_map b + ON a.vendorIdx=b.vendorIdx AND b.siteIdx = #{upperSiteIdx} + SET a.vendorCode=b.vendorCode, + a.useYn = b.useYn + WHERE 1=1 + AND a.siteIdx = #{siteIdx} + + + + UPDATE site_vendors_credit_rate_info a LEFT JOIN site_vendors_credit_rate_info b + ON a.vendorIdx=b.vendorIdx AND a.vendorCode=b.vendorCode AND b.siteIdx = #{upperSiteIdx} + SET a.`view` = b.`view` + WHERE 1=1 + AND a.siteIdx = #{siteIdx} + + + + DELETE FROM site_vendors_account + WHERE siteIdx = #{siteIdx} + + + + UPDATE site_member + SET lastInVendorIdx = #{lastInVendorIdx} + WHERE siteIdx = #{siteIdx} + AND memberIdx = #{memberIdx} + + + + + + UPDATE site_vendors_map + SET vendorCode = #{newVendorCode} + WHERE siteIdx = #{siteIdx} + AND vendorIdx = #{vendorIdx} + + + + + UPDATE `site_vendors_map` SET nexusSkinType = #{skinType} + WHERE siteIdx =#{siteIdx} and vendorIdx = #{vendorIdx} and vendorCode =#{vendorCode} + + + + + INSERT INTO parse_game_use_site(siteIdx, siteId, useYn) values + (#{siteIdx}, #{siteId}, #{useYn}) + ON DUPLICATE KEY UPDATE useYn =#{useYn} + + + UPDATE parse_game_use_site + SET useYn = #{useYn} + WHERE 1=1 + + + + + + INSERT INTO parse_game_use_member + (memberIdx, parseUseYn, updDate) + values( + #{memberIdx}, #{useYn}, now() + ) + ON DUPLICATE KEY UPDATE parseUseYn =#{useYn}, updDate = NOW() + + + + INSERT INTO otp_info + (siteIdx, otpType, siteId, account, issuer, secretKey, url) + VALUES + (#{siteIdx}, #{otpType}, #{siteId}, #{account}, #{issuer}, #{secretKey}, #{url}) + ON DUPLICATE KEY UPDATE secretKey = #{secretKey}, url = #{url}, updDate = NOW() + + + + INSERT INTO bet_evo_detail (refId, orgDetail, parDetail) + VALUES (#{refId}, #{orgDetail}, #{parDetail}) + + + + + + + + INSERT INTO site_vendors_credit_rate_info + (siteIdx, vendorIdx, vendorCode, rate) + VALUES + (#{siteIdx}, #{vendorIdx}, #{vendorCode}, #{rate}) + ON DUPLICATE KEY UPDATE + rate = #{rate} + + + + + + UPDATE site_rate_info + SET rate = #{rate} + WHERE siteIdx = #{siteIdx} AND vendorIdx = #{vendorIdx} + + + + + + + + + + INSERT INTO site_member_acc + (siteIdx, memberIdx, requestTime) + VALUES + (#{siteIdx}, #{memberIdx}, #{requestTime}) + ON DUPLICATE KEY UPDATE + requestTime = #{requestTime}, + updDate = NOW(3) + + + + + + INSERT INTO bet_thea_detail_log + (transactionId, siteIdx) + VALUES + (#{transactionId}, #{siteIdx}) + + + + + + UPDATE site_member_balance + SET vendorUsername = #{vendorUsername} + WHERE 1=1 + AND siteIdx = #{siteIdx} + + AND memberIdx = #{memberIdx} + + + AND memberId = #{memberId} + + + + + + + + + + + + + + + + + UPDATE site_credit_info + SET testCnt = #{testCnt} + WHERE siteId = #{siteId} + + + + UPDATE site_member + SET parseEvoYn = #{parseEvoYn} + WHERE memberIdx = #{memberIdx} + + + + UPDATE parse_game_use_site + SET parsEvoAmount = #{parsEvoAmount} + WHERE siteIdx = #{siteIdx} + + + + + + + + + + + + INSERT INTO parse_game_use_site(siteIdx, siteId, useYn) values + (#{siteIdx}, #{siteId}, #{parseUseYn}) + ON DUPLICATE KEY UPDATE useYn =#{parseUseYn} + + + + UPDATE site_info + SET sitePass = UPPER(SHA1(UNHEX(SHA1(#{newPassword})))) + WHERE siteId = #{siteId} + + + + UPDATE site_vendors_map SET unionGameKey = #{lobbyCode} , + siteMinBet = (select minBet from union_lobby_info where vendorCode = #{vendorCode} and lobbyCode = #{lobbyCode} ), + siteMaxBet = (select maxBet from union_lobby_info where vendorCode = #{vendorCode} and lobbyCode = #{lobbyCode} ) + + where siteIdx = #{siteIdx} and vendorCode = #{vendorCode} + + + + + + + + + + + + + UPDATE site_member + SET userMaxBet = #{userMaxBet} + WHERE siteIdx = #{siteIdx} + AND memberIdx = #{memberIdx} + + + + INSERT INTO tran_log + (siteIdx, vendorIdx, gameIdx, body, regDt) + VALUES + (#{siteIdx}, #{vendorIdx}, #{gameIdx}, #{body}, NOW()) + + + + + + + diff --git a/src/main/resources/db1/SPLUS.xml b/src/main/resources/db1/SPLUS.xml new file mode 100644 index 0000000..f9f0d20 --- /dev/null +++ b/src/main/resources/db1/SPLUS.xml @@ -0,0 +1,136 @@ + + + + + + + INSERT INTO `bet_splus` ( + + `refId`, + `siteIdx`, + `memberIdx`, + `memberId`, + `betType`, + `branchName`, + `leagueName`, + `leagueNameKor`, + `homeTeam`, + `homeTeamKor`, + `awayTeam`, + `awayTeamKor`, + `lineTypeId`, + `yourBet`, + `OddsDec`, + `points`, + `score`, + `realAmount`, + `betOdds`, + `gain`, + `status`, + `betStatus`, + `creationDate`, + `eventDate`, + `newEventID`, + `newMasterEventID` + ) + VALUES + ( + + #{refId} , + #{siteIdx}, + #{memberIdx}, + #{memberId}, + #{betType}, + #{branchName} , + #{leagueName}, + #{leagueNameKor}, + #{homeTeam}, + #{homeTeamKor}, + #{awayTeam}, + #{awayTeamKor}, + #{lineTypeId}, + #{yourBet}, + #{oddsDec}, + #{points}, + #{score}, + #{realAmount}, + #{betOdds}, + #{gain}, + #{status}, + #{betStatus}, + #{creationDate}, + #{eventDate}, + #{newEventId}, + #{newMasterEventId} + + ) + + + + + + update bet_splus set + score = #{score}, + `status` = #{status}, + resultOdds = #{resultOdds} + where + newMasterEventId = #{newMasterEventId} + and newEventId = #{newEventId} + and lineTypeId = #{lineTypeId} + + + + + update bet_splus set + betStatus = #{betStatus}, + gain = #{gain} + where + refId = #{refId} + + + + + + + update bet_splus set + betStatus = '-2' + where + refId = #{refId} + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db1/STAT.xml b/src/main/resources/db1/STAT.xml new file mode 100644 index 0000000..4a42dfb --- /dev/null +++ b/src/main/resources/db1/STAT.xml @@ -0,0 +1,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db1/TPLUS.xml b/src/main/resources/db1/TPLUS.xml new file mode 100644 index 0000000..d1cf517 --- /dev/null +++ b/src/main/resources/db1/TPLUS.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/db1/TRANS.xml b/src/main/resources/db1/TRANS.xml new file mode 100644 index 0000000..ebada9c --- /dev/null +++ b/src/main/resources/db1/TRANS.xml @@ -0,0 +1,10 @@ + + + + + + DELETE FROM bet_nexus_detail_null + WHERE refId = #{refId} + + + \ No newline at end of file diff --git a/src/main/resources/db2/CALLBACKLOG.xml b/src/main/resources/db2/CALLBACKLOG.xml new file mode 100644 index 0000000..cc48785 --- /dev/null +++ b/src/main/resources/db2/CALLBACKLOG.xml @@ -0,0 +1,15 @@ + + + + + + + diff --git a/src/main/resources/db2/COIN.xml b/src/main/resources/db2/COIN.xml new file mode 100644 index 0000000..103714c --- /dev/null +++ b/src/main/resources/db2/COIN.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db2/COMMON.xml b/src/main/resources/db2/COMMON.xml new file mode 100644 index 0000000..f4b3b62 --- /dev/null +++ b/src/main/resources/db2/COMMON.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db2/CREDIT.xml b/src/main/resources/db2/CREDIT.xml new file mode 100644 index 0000000..1198e12 --- /dev/null +++ b/src/main/resources/db2/CREDIT.xml @@ -0,0 +1,1654 @@ + + + + + + + + + + + + + + + update credit_info set creditStatus = ${creditStatus} , updDate = now() where creditIdx = #{creditIdx} + + + + update insurance_info set status = ${status}, updDate = now() where idx = #{idx} + + + + + + + + + + + + + + + + update bet_info set apiStatus ='1' , updDate = now() + where tranId = #{tranId} and refId = #{refId} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db2/SETTING.xml b/src/main/resources/db2/SETTING.xml new file mode 100644 index 0000000..1bb322d --- /dev/null +++ b/src/main/resources/db2/SETTING.xml @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db2/SITE.xml b/src/main/resources/db2/SITE.xml new file mode 100644 index 0000000..853e9d2 --- /dev/null +++ b/src/main/resources/db2/SITE.xml @@ -0,0 +1,869 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db2/STAT.xml b/src/main/resources/db2/STAT.xml new file mode 100644 index 0000000..2838538 --- /dev/null +++ b/src/main/resources/db2/STAT.xml @@ -0,0 +1,1225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db2/TRANS.xml b/src/main/resources/db2/TRANS.xml new file mode 100644 index 0000000..ac12329 --- /dev/null +++ b/src/main/resources/db2/TRANS.xml @@ -0,0 +1,908 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..00eff14 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,49 @@ + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + ${filePath}/app.log + + ${filePath}/app.%d{yyyy-MM-dd}.%i.gz + + 1GB + + 10 + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + ${filePath}/error.log + + ERROR + ACCEPT + DENY + + + ${filePath}/error-%d{yyyy-MM-dd}.%i.gz + + 100MB + + 30 + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/css/all.min.css b/src/main/resources/static/css/all.min.css new file mode 100644 index 0000000..fcbf488 --- /dev/null +++ b/src/main/resources/static/css/all.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome Free 6.0.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-brands,.fa-duotone,.fa-light,.fa-regular,.fa-solid,.fa-thin,.fab,.fad,.fal,.far,.fas,.fat{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-style:normal;font-variant:normal;line-height:1;text-rendering:auto}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.08333em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.07143em;vertical-align:.05357em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.04167em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width, 2em)*-1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-radius:var(--fa-border-radius,.1em);border:var(--fa-border-width,.08em) var(--fa-border-style,solid) var(--fa-border-color,#eee);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade,.fa-fade{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s)}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-shake,.fa-spin{-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto)}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-0:before{content:"\30"}.fa-1:before{content:"\31"}.fa-2:before{content:"\32"}.fa-3:before{content:"\33"}.fa-4:before{content:"\34"}.fa-5:before{content:"\35"}.fa-6:before{content:"\36"}.fa-7:before{content:"\37"}.fa-8:before{content:"\38"}.fa-9:before{content:"\39"}.fa-a:before{content:"\41"}.fa-address-book:before,.fa-contact-book:before{content:"\f2b9"}.fa-address-card:before,.fa-contact-card:before,.fa-vcard:before{content:"\f2bb"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-anchor:before{content:"\f13d"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-double-down:before,.fa-angles-down:before{content:"\f103"}.fa-angle-double-left:before,.fa-angles-left:before{content:"\f100"}.fa-angle-double-right:before,.fa-angles-right:before{content:"\f101"}.fa-angle-double-up:before,.fa-angles-up:before{content:"\f102"}.fa-ankh:before{content:"\f644"}.fa-apple-alt:before,.fa-apple-whole:before{content:"\f5d1"}.fa-archway:before{content:"\f557"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-down-1-9:before,.fa-sort-numeric-asc:before,.fa-sort-numeric-down:before{content:"\f162"}.fa-arrow-down-9-1:before,.fa-sort-numeric-desc:before,.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-arrow-down-a-z:before,.fa-sort-alpha-asc:before,.fa-sort-alpha-down:before{content:"\f15d"}.fa-arrow-down-long:before,.fa-long-arrow-down:before{content:"\f175"}.fa-arrow-down-short-wide:before,.fa-sort-amount-desc:before,.fa-sort-amount-down-alt:before{content:"\f884"}.fa-arrow-down-wide-short:before,.fa-sort-amount-asc:before,.fa-sort-amount-down:before{content:"\f160"}.fa-arrow-down-z-a:before,.fa-sort-alpha-desc:before,.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-left-long:before,.fa-long-arrow-left:before{content:"\f177"}.fa-arrow-pointer:before,.fa-mouse-pointer:before{content:"\f245"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-right-arrow-left:before,.fa-exchange:before{content:"\f0ec"}.fa-arrow-right-from-bracket:before,.fa-sign-out:before{content:"\f08b"}.fa-arrow-right-long:before,.fa-long-arrow-right:before{content:"\f178"}.fa-arrow-right-to-bracket:before,.fa-sign-in:before{content:"\f090"}.fa-arrow-left-rotate:before,.fa-arrow-rotate-back:before,.fa-arrow-rotate-backward:before,.fa-arrow-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-arrow-right-rotate:before,.fa-arrow-rotate-forward:before,.fa-arrow-rotate-right:before,.fa-redo:before{content:"\f01e"}.fa-arrow-trend-down:before{content:"\e097"}.fa-arrow-trend-up:before{content:"\e098"}.fa-arrow-turn-down:before,.fa-level-down:before{content:"\f149"}.fa-arrow-turn-up:before,.fa-level-up:before{content:"\f148"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-up-1-9:before,.fa-sort-numeric-up:before{content:"\f163"}.fa-arrow-up-9-1:before,.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-arrow-up-a-z:before,.fa-sort-alpha-up:before{content:"\f15e"}.fa-arrow-up-from-bracket:before{content:"\e09a"}.fa-arrow-up-long:before,.fa-long-arrow-up:before{content:"\f176"}.fa-arrow-up-right-from-square:before,.fa-external-link:before{content:"\f08e"}.fa-arrow-up-short-wide:before,.fa-sort-amount-up-alt:before{content:"\f885"}.fa-arrow-up-wide-short:before,.fa-sort-amount-up:before{content:"\f161"}.fa-arrow-up-z-a:before,.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-arrows-h:before,.fa-arrows-left-right:before{content:"\f07e"}.fa-arrows-rotate:before,.fa-refresh:before,.fa-sync:before{content:"\f021"}.fa-arrows-up-down:before,.fa-arrows-v:before{content:"\f07d"}.fa-arrows-up-down-left-right:before,.fa-arrows:before{content:"\f047"}.fa-asterisk:before{content:"\2a"}.fa-at:before{content:"\40"}.fa-atom:before{content:"\f5d2"}.fa-audio-description:before{content:"\f29e"}.fa-austral-sign:before{content:"\e0a9"}.fa-award:before{content:"\f559"}.fa-b:before{content:"\42"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before,.fa-carriage-baby:before{content:"\f77d"}.fa-backward:before{content:"\f04a"}.fa-backward-fast:before,.fa-fast-backward:before{content:"\f049"}.fa-backward-step:before,.fa-step-backward:before{content:"\f048"}.fa-bacon:before{content:"\f7e5"}.fa-bacteria:before{content:"\e059"}.fa-bacterium:before{content:"\e05a"}.fa-bag-shopping:before,.fa-shopping-bag:before{content:"\f290"}.fa-bahai:before{content:"\f666"}.fa-baht-sign:before{content:"\e0ac"}.fa-ban:before,.fa-cancel:before{content:"\f05e"}.fa-ban-smoking:before,.fa-smoking-ban:before{content:"\f54d"}.fa-band-aid:before,.fa-bandage:before{content:"\f462"}.fa-barcode:before{content:"\f02a"}.fa-bars:before,.fa-navicon:before{content:"\f0c9"}.fa-bars-progress:before,.fa-tasks-alt:before{content:"\f828"}.fa-bars-staggered:before,.fa-reorder:before,.fa-stream:before{content:"\f550"}.fa-baseball-ball:before,.fa-baseball:before{content:"\f433"}.fa-baseball-bat-ball:before{content:"\f432"}.fa-basket-shopping:before,.fa-shopping-basket:before{content:"\f291"}.fa-basketball-ball:before,.fa-basketball:before{content:"\f434"}.fa-bath:before,.fa-bathtub:before{content:"\f2cd"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-battery-5:before,.fa-battery-full:before,.fa-battery:before{content:"\f240"}.fa-battery-3:before,.fa-battery-half:before{content:"\f242"}.fa-battery-2:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-4:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-bed-pulse:before,.fa-procedures:before{content:"\f487"}.fa-beer-mug-empty:before,.fa-beer:before{content:"\f0fc"}.fa-bell:before{content:"\f0f3"}.fa-bell-concierge:before,.fa-concierge-bell:before{content:"\f562"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bicycle:before{content:"\f206"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-bitcoin-sign:before{content:"\e0b4"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blog:before{content:"\f781"}.fa-bold:before{content:"\f032"}.fa-bolt:before,.fa-zap:before{content:"\f0e7"}.fa-bolt-lightning:before{content:"\e0b7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-atlas:before,.fa-book-atlas:before{content:"\f558"}.fa-bible:before,.fa-book-bible:before{content:"\f647"}.fa-book-journal-whills:before,.fa-journal-whills:before{content:"\f66a"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-open-reader:before,.fa-book-reader:before{content:"\f5da"}.fa-book-quran:before,.fa-quran:before{content:"\f687"}.fa-book-dead:before,.fa-book-skull:before{content:"\f6b7"}.fa-bookmark:before{content:"\f02e"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before,.fa-border-top-left:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-archive:before,.fa-box-archive:before{content:"\f187"}.fa-box-open:before{content:"\f49e"}.fa-box-tissue:before{content:"\e05b"}.fa-boxes-alt:before,.fa-boxes-stacked:before,.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-brazilian-real-sign:before{content:"\e46c"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broom:before{content:"\f51a"}.fa-broom-ball:before,.fa-quidditch-broom-ball:before,.fa-quidditch:before{content:"\f458"}.fa-brush:before{content:"\f55d"}.fa-bug:before{content:"\f188"}.fa-bug-slash:before{content:"\e490"}.fa-building:before{content:"\f1ad"}.fa-bank:before,.fa-building-columns:before,.fa-institution:before,.fa-museum:before,.fa-university:before{content:"\f19c"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burger:before,.fa-hamburger:before{content:"\f805"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before,.fa-bus-simple:before{content:"\f55e"}.fa-briefcase-clock:before,.fa-business-time:before{content:"\f64a"}.fa-c:before{content:"\43"}.fa-birthday-cake:before,.fa-cake-candles:before,.fa-cake:before{content:"\f1fd"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-alt:before,.fa-calendar-days:before{content:"\f073"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-week:before{content:"\f784"}.fa-calendar-times:before,.fa-calendar-xmark:before{content:"\f273"}.fa-camera-alt:before,.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-camera-rotate:before{content:"\e0d8"}.fa-campground:before{content:"\f6bb"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-battery-car:before,.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-alt:before,.fa-car-rear:before{content:"\f5de"}.fa-car-side:before{content:"\f5e4"}.fa-caravan:before{content:"\f8ff"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-flatbed:before,.fa-dolly-flatbed:before{content:"\f474"}.fa-cart-flatbed-suitcase:before,.fa-luggage-cart:before{content:"\f59d"}.fa-cart-plus:before{content:"\f217"}.fa-cart-shopping:before,.fa-shopping-cart:before{content:"\f07a"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cedi-sign:before{content:"\e0df"}.fa-cent-sign:before{content:"\e3f5"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-blackboard:before,.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before,.fa-chalkboard-user:before{content:"\f51c"}.fa-champagne-glasses:before,.fa-glass-cheers:before{content:"\f79f"}.fa-charging-station:before{content:"\f5e7"}.fa-area-chart:before,.fa-chart-area:before{content:"\f1fe"}.fa-bar-chart:before,.fa-chart-bar:before{content:"\f080"}.fa-chart-column:before{content:"\e0e3"}.fa-chart-gantt:before{content:"\e0e4"}.fa-chart-line:before,.fa-line-chart:before{content:"\f201"}.fa-chart-pie:before,.fa-pie-chart:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-double:before{content:"\f560"}.fa-check-to-slot:before,.fa-vote-yea:before{content:"\f772"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-arrow-circle-down:before,.fa-circle-arrow-down:before{content:"\f0ab"}.fa-arrow-circle-left:before,.fa-circle-arrow-left:before{content:"\f0a8"}.fa-arrow-circle-right:before,.fa-circle-arrow-right:before{content:"\f0a9"}.fa-arrow-circle-up:before,.fa-circle-arrow-up:before{content:"\f0aa"}.fa-check-circle:before,.fa-circle-check:before{content:"\f058"}.fa-chevron-circle-down:before,.fa-circle-chevron-down:before{content:"\f13a"}.fa-chevron-circle-left:before,.fa-circle-chevron-left:before{content:"\f137"}.fa-chevron-circle-right:before,.fa-circle-chevron-right:before{content:"\f138"}.fa-chevron-circle-up:before,.fa-circle-chevron-up:before{content:"\f139"}.fa-circle-dollar-to-slot:before,.fa-donate:before{content:"\f4b9"}.fa-circle-dot:before,.fa-dot-circle:before{content:"\f192"}.fa-arrow-alt-circle-down:before,.fa-circle-down:before{content:"\f358"}.fa-circle-exclamation:before,.fa-exclamation-circle:before{content:"\f06a"}.fa-circle-h:before,.fa-hospital-symbol:before{content:"\f47e"}.fa-adjust:before,.fa-circle-half-stroke:before{content:"\f042"}.fa-circle-info:before,.fa-info-circle:before{content:"\f05a"}.fa-arrow-alt-circle-left:before,.fa-circle-left:before{content:"\f359"}.fa-circle-minus:before,.fa-minus-circle:before{content:"\f056"}.fa-circle-notch:before{content:"\f1ce"}.fa-circle-pause:before,.fa-pause-circle:before{content:"\f28b"}.fa-circle-play:before,.fa-play-circle:before{content:"\f144"}.fa-circle-plus:before,.fa-plus-circle:before{content:"\f055"}.fa-circle-question:before,.fa-question-circle:before{content:"\f059"}.fa-circle-radiation:before,.fa-radiation-alt:before{content:"\f7ba"}.fa-arrow-alt-circle-right:before,.fa-circle-right:before{content:"\f35a"}.fa-circle-stop:before,.fa-stop-circle:before{content:"\f28d"}.fa-arrow-alt-circle-up:before,.fa-circle-up:before{content:"\f35b"}.fa-circle-user:before,.fa-user-circle:before{content:"\f2bd"}.fa-circle-xmark:before,.fa-times-circle:before,.fa-xmark-circle:before{content:"\f057"}.fa-city:before{content:"\f64f"}.fa-clapperboard:before{content:"\e131"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock-four:before,.fa-clock:before{content:"\f017"}.fa-clock-rotate-left:before,.fa-history:before{content:"\f1da"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-arrow-down:before,.fa-cloud-download-alt:before,.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-arrow-up:before,.fa-cloud-upload-alt:before,.fa-cloud-upload:before{content:"\f0ee"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-clover:before{content:"\e139"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-code-commit:before{content:"\f386"}.fa-code-compare:before{content:"\e13a"}.fa-code-fork:before{content:"\e13b"}.fa-code-merge:before{content:"\f387"}.fa-code-pull-request:before{content:"\e13c"}.fa-coins:before{content:"\f51e"}.fa-colon-sign:before{content:"\e140"}.fa-comment:before{content:"\f075"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before,.fa-commenting:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comment-sms:before,.fa-sms:before{content:"\f7cd"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compass-drafting:before,.fa-drafting-compass:before{content:"\f568"}.fa-compress:before{content:"\f066"}.fa-computer-mouse:before,.fa-mouse:before{content:"\f8cc"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-credit-card-alt:before,.fa-credit-card:before{content:"\f09d"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before,.fa-crop-simple:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-cruzeiro-sign:before{content:"\e152"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-d:before{content:"\44"}.fa-database:before{content:"\f1c0"}.fa-backspace:before,.fa-delete-left:before{content:"\f55a"}.fa-democrat:before{content:"\f747"}.fa-desktop-alt:before,.fa-desktop:before{content:"\f390"}.fa-dharmachakra:before{content:"\f655"}.fa-diagram-next:before{content:"\e476"}.fa-diagram-predecessor:before{content:"\e477"}.fa-diagram-project:before,.fa-project-diagram:before{content:"\f542"}.fa-diagram-successor:before{content:"\e47a"}.fa-diamond:before{content:"\f219"}.fa-diamond-turn-right:before,.fa-directions:before{content:"\f5eb"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-disease:before{content:"\f7fa"}.fa-divide:before{content:"\f529"}.fa-dna:before{content:"\f471"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before,.fa-dollar:before,.fa-usd:before{content:"\24"}.fa-dolly-box:before,.fa-dolly:before{content:"\f472"}.fa-dong-sign:before{content:"\e169"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dove:before{content:"\f4ba"}.fa-compress-alt:before,.fa-down-left-and-up-right-to-center:before{content:"\f422"}.fa-down-long:before,.fa-long-arrow-alt-down:before{content:"\f309"}.fa-download:before{content:"\f019"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-droplet:before,.fa-tint:before{content:"\f043"}.fa-droplet-slash:before,.fa-tint-slash:before{content:"\f5c7"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-e:before{content:"\45"}.fa-deaf:before,.fa-deafness:before,.fa-ear-deaf:before,.fa-hard-of-hearing:before{content:"\f2a4"}.fa-assistive-listening-systems:before,.fa-ear-listen:before{content:"\f2a2"}.fa-earth-africa:before,.fa-globe-africa:before{content:"\f57c"}.fa-earth-america:before,.fa-earth-americas:before,.fa-earth:before,.fa-globe-americas:before{content:"\f57d"}.fa-earth-asia:before,.fa-globe-asia:before{content:"\f57e"}.fa-earth-europe:before,.fa-globe-europe:before{content:"\f7a2"}.fa-earth-oceania:before,.fa-globe-oceania:before{content:"\e47b"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elevator:before{content:"\e16d"}.fa-ellipsis-h:before,.fa-ellipsis:before{content:"\f141"}.fa-ellipsis-v:before,.fa-ellipsis-vertical:before{content:"\f142"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelopes-bulk:before,.fa-mail-bulk:before{content:"\f674"}.fa-equals:before{content:"\3d"}.fa-eraser:before{content:"\f12d"}.fa-ethernet:before{content:"\f796"}.fa-eur:before,.fa-euro-sign:before,.fa-euro:before{content:"\f153"}.fa-exclamation:before{content:"\21"}.fa-expand:before{content:"\f065"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper-empty:before,.fa-eye-dropper:before,.fa-eyedropper:before{content:"\f1fb"}.fa-eye-low-vision:before,.fa-low-vision:before{content:"\f2a8"}.fa-eye-slash:before{content:"\f070"}.fa-f:before{content:"\46"}.fa-angry:before,.fa-face-angry:before{content:"\f556"}.fa-dizzy:before,.fa-face-dizzy:before{content:"\f567"}.fa-face-flushed:before,.fa-flushed:before{content:"\f579"}.fa-face-frown:before,.fa-frown:before{content:"\f119"}.fa-face-frown-open:before,.fa-frown-open:before{content:"\f57a"}.fa-face-grimace:before,.fa-grimace:before{content:"\f57f"}.fa-face-grin:before,.fa-grin:before{content:"\f580"}.fa-face-grin-beam:before,.fa-grin-beam:before{content:"\f582"}.fa-face-grin-beam-sweat:before,.fa-grin-beam-sweat:before{content:"\f583"}.fa-face-grin-hearts:before,.fa-grin-hearts:before{content:"\f584"}.fa-face-grin-squint:before,.fa-grin-squint:before{content:"\f585"}.fa-face-grin-squint-tears:before,.fa-grin-squint-tears:before{content:"\f586"}.fa-face-grin-stars:before,.fa-grin-stars:before{content:"\f587"}.fa-face-grin-tears:before,.fa-grin-tears:before{content:"\f588"}.fa-face-grin-tongue:before,.fa-grin-tongue:before{content:"\f589"}.fa-face-grin-tongue-squint:before,.fa-grin-tongue-squint:before{content:"\f58a"}.fa-face-grin-tongue-wink:before,.fa-grin-tongue-wink:before{content:"\f58b"}.fa-face-grin-wide:before,.fa-grin-alt:before{content:"\f581"}.fa-face-grin-wink:before,.fa-grin-wink:before{content:"\f58c"}.fa-face-kiss:before,.fa-kiss:before{content:"\f596"}.fa-face-kiss-beam:before,.fa-kiss-beam:before{content:"\f597"}.fa-face-kiss-wink-heart:before,.fa-kiss-wink-heart:before{content:"\f598"}.fa-face-laugh:before,.fa-laugh:before{content:"\f599"}.fa-face-laugh-beam:before,.fa-laugh-beam:before{content:"\f59a"}.fa-face-laugh-squint:before,.fa-laugh-squint:before{content:"\f59b"}.fa-face-laugh-wink:before,.fa-laugh-wink:before{content:"\f59c"}.fa-face-meh:before,.fa-meh:before{content:"\f11a"}.fa-face-meh-blank:before,.fa-meh-blank:before{content:"\f5a4"}.fa-face-rolling-eyes:before,.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-face-sad-cry:before,.fa-sad-cry:before{content:"\f5b3"}.fa-face-sad-tear:before,.fa-sad-tear:before{content:"\f5b4"}.fa-face-smile:before,.fa-smile:before{content:"\f118"}.fa-face-smile-beam:before,.fa-smile-beam:before{content:"\f5b8"}.fa-face-smile-wink:before,.fa-smile-wink:before{content:"\f4da"}.fa-face-surprise:before,.fa-surprise:before{content:"\f5c2"}.fa-face-tired:before,.fa-tired:before{content:"\f5c8"}.fa-fan:before{content:"\f863"}.fa-faucet:before{content:"\e005"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before,.fa-feather-pointed:before{content:"\f56b"}.fa-file:before{content:"\f15b"}.fa-file-arrow-down:before,.fa-file-download:before{content:"\f56d"}.fa-file-arrow-up:before,.fa-file-upload:before{content:"\f574"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-excel:before{content:"\f1c3"}.fa-arrow-right-from-file:before,.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-arrow-right-to-file:before,.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-alt:before,.fa-file-lines:before,.fa-file-text:before{content:"\f15c"}.fa-file-medical:before{content:"\f477"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-video:before{content:"\f1c8"}.fa-file-medical-alt:before,.fa-file-waveform:before{content:"\f478"}.fa-file-word:before{content:"\f1c2"}.fa-file-archive:before,.fa-file-zipper:before{content:"\f1c6"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-filter-circle-dollar:before,.fa-funnel-dollar:before{content:"\f662"}.fa-filter-circle-xmark:before{content:"\e17b"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-fire-alt:before,.fa-fire-flame-curved:before{content:"\f7e4"}.fa-burn:before,.fa-fire-flame-simple:before{content:"\f46a"}.fa-fish:before{content:"\f578"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-floppy-disk:before,.fa-save:before{content:"\f0c7"}.fa-florin-sign:before{content:"\e184"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-folder-tree:before{content:"\f802"}.fa-font:before{content:"\f031"}.fa-football-ball:before,.fa-football:before{content:"\f44e"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before,.fa-forward-fast:before{content:"\f050"}.fa-forward-step:before,.fa-step-forward:before{content:"\f051"}.fa-franc-sign:before{content:"\e18f"}.fa-frog:before{content:"\f52e"}.fa-futbol-ball:before,.fa-futbol:before,.fa-soccer-ball:before{content:"\f1e3"}.fa-g:before{content:"\47"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-dashboard:before,.fa-gauge-med:before,.fa-gauge:before,.fa-tachometer-alt-average:before{content:"\f624"}.fa-gauge-high:before,.fa-tachometer-alt-fast:before,.fa-tachometer-alt:before{content:"\f625"}.fa-gauge-simple-med:before,.fa-gauge-simple:before,.fa-tachometer-average:before{content:"\f629"}.fa-gauge-simple-high:before,.fa-tachometer-fast:before,.fa-tachometer:before{content:"\f62a"}.fa-gavel:before,.fa-legal:before{content:"\f0e3"}.fa-cog:before,.fa-gear:before{content:"\f013"}.fa-cogs:before,.fa-gears:before{content:"\f085"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-glasses:before{content:"\f530"}.fa-globe:before{content:"\f0ac"}.fa-golf-ball-tee:before,.fa-golf-ball:before{content:"\f450"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before,.fa-mortar-board:before{content:"\f19d"}.fa-greater-than:before{content:"\3e"}.fa-greater-than-equal:before{content:"\f532"}.fa-grip-horizontal:before,.fa-grip:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-guarani-sign:before{content:"\e19a"}.fa-guitar:before{content:"\f7a6"}.fa-gun:before{content:"\e19b"}.fa-h:before{content:"\48"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-paper:before,.fa-hand:before{content:"\f256"}.fa-hand-back-fist:before,.fa-hand-rock:before{content:"\f255"}.fa-allergies:before,.fa-hand-dots:before{content:"\f461"}.fa-fist-raised:before,.fa-hand-fist:before{content:"\f6de"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-dollar:before,.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-holding-droplet:before,.fa-hand-holding-water:before{content:"\f4c1"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-medical:before{content:"\e05c"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-sparkles:before{content:"\e05d"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before,.fa-sign-language:before,.fa-signing:before{content:"\f2a7"}.fa-american-sign-language-interpreting:before,.fa-asl-interpreting:before,.fa-hands-american-sign-language-interpreting:before,.fa-hands-asl-interpreting:before{content:"\f2a3"}.fa-hands-bubbles:before,.fa-hands-wash:before{content:"\e05e"}.fa-hands-clapping:before{content:"\e1a8"}.fa-hands-holding:before{content:"\f4c2"}.fa-hands-praying:before,.fa-praying-hands:before{content:"\f684"}.fa-handshake:before{content:"\f2b5"}.fa-hands-helping:before,.fa-handshake-angle:before{content:"\f4c4"}.fa-handshake-alt-slash:before,.fa-handshake-simple-slash:before{content:"\e05f"}.fa-handshake-slash:before{content:"\e060"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-drive:before,.fa-hdd:before{content:"\f0a0"}.fa-hashtag:before{content:"\23"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-head-side-cough:before{content:"\e061"}.fa-head-side-cough-slash:before{content:"\e062"}.fa-head-side-mask:before{content:"\e063"}.fa-head-side-virus:before{content:"\e064"}.fa-header:before,.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before,.fa-headphones-simple:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before,.fa-heart-crack:before{content:"\f7a9"}.fa-heart-pulse:before,.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-hard-hat:before,.fa-hat-hard:before,.fa-helmet-safety:before{content:"\f807"}.fa-highlighter:before{content:"\f591"}.fa-hippo:before{content:"\f6ed"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital-alt:before,.fa-hospital-wide:before,.fa-hospital:before{content:"\f0f8"}.fa-hospital-user:before{content:"\f80d"}.fa-hot-tub-person:before,.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hourglass-2:before,.fa-hourglass-half:before,.fa-hourglass:before{content:"\f254"}.fa-hourglass-empty:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-home-alt:before,.fa-home-lg-alt:before,.fa-home:before,.fa-house:before{content:"\f015"}.fa-home-lg:before,.fa-house-chimney:before{content:"\e3af"}.fa-house-chimney-crack:before,.fa-house-damage:before{content:"\f6f1"}.fa-clinic-medical:before,.fa-house-chimney-medical:before{content:"\f7f2"}.fa-house-chimney-user:before{content:"\e065"}.fa-house-chimney-window:before{content:"\e00d"}.fa-house-crack:before{content:"\e3b1"}.fa-house-laptop:before,.fa-laptop-house:before{content:"\e066"}.fa-house-medical:before{content:"\e3b2"}.fa-home-user:before,.fa-house-user:before{content:"\e1b0"}.fa-hryvnia-sign:before,.fa-hryvnia:before{content:"\f6f2"}.fa-i:before{content:"\49"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-heart-music-camera-bolt:before,.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before,.fa-id-card-clip:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-image-portrait:before,.fa-portrait:before{content:"\f3e0"}.fa-images:before{content:"\f302"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-indian-rupee-sign:before,.fa-indian-rupee:before,.fa-inr:before{content:"\e1bc"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-italic:before{content:"\f033"}.fa-j:before{content:"\4a"}.fa-jedi:before{content:"\f669"}.fa-fighter-jet:before,.fa-jet-fighter:before{content:"\f0fb"}.fa-joint:before{content:"\f595"}.fa-k:before{content:"\4b"}.fa-kaaba:before{content:"\f66b"}.fa-key:before{content:"\f084"}.fa-keyboard:before{content:"\f11c"}.fa-khanda:before{content:"\f66d"}.fa-kip-sign:before{content:"\e1c4"}.fa-first-aid:before,.fa-kit-medical:before{content:"\f479"}.fa-kiwi-bird:before{content:"\f535"}.fa-l:before{content:"\4c"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-lari-sign:before{content:"\e1c8"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-left-long:before,.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-arrows-alt-h:before,.fa-left-right:before{content:"\f337"}.fa-lemon:before{content:"\f094"}.fa-less-than:before{content:"\3c"}.fa-less-than-equal:before{content:"\f537"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-chain-broken:before,.fa-chain-slash:before,.fa-link-slash:before,.fa-unlink:before{content:"\f127"}.fa-lira-sign:before{content:"\f195"}.fa-list-squares:before,.fa-list:before{content:"\f03a"}.fa-list-check:before,.fa-tasks:before{content:"\f0ae"}.fa-list-1-2:before,.fa-list-numeric:before,.fa-list-ol:before{content:"\f0cb"}.fa-list-dots:before,.fa-list-ul:before{content:"\f0ca"}.fa-litecoin-sign:before{content:"\e1d3"}.fa-location-arrow:before{content:"\f124"}.fa-location-crosshairs:before,.fa-location:before{content:"\f601"}.fa-location-dot:before,.fa-map-marker-alt:before{content:"\f3c5"}.fa-location-pin:before,.fa-map-marker:before{content:"\f041"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-lungs:before{content:"\f604"}.fa-lungs-virus:before{content:"\e067"}.fa-m:before{content:"\4d"}.fa-magnet:before{content:"\f076"}.fa-magnifying-glass:before,.fa-search:before{content:"\f002"}.fa-magnifying-glass-dollar:before,.fa-search-dollar:before{content:"\f688"}.fa-magnifying-glass-location:before,.fa-search-location:before{content:"\f689"}.fa-magnifying-glass-minus:before,.fa-search-minus:before{content:"\f010"}.fa-magnifying-glass-plus:before,.fa-search-plus:before{content:"\f00e"}.fa-manat-sign:before{content:"\e1d5"}.fa-map:before{content:"\f279"}.fa-map-location:before,.fa-map-marked:before{content:"\f59f"}.fa-map-location-dot:before,.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-pin:before{content:"\f276"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-and-venus:before{content:"\f224"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before,.fa-mars-stroke-right:before{content:"\f22b"}.fa-mars-stroke-up:before,.fa-mars-stroke-v:before{content:"\f22a"}.fa-glass-martini-alt:before,.fa-martini-glass:before{content:"\f57b"}.fa-cocktail:before,.fa-martini-glass-citrus:before{content:"\f561"}.fa-glass-martini:before,.fa-martini-glass-empty:before{content:"\f000"}.fa-mask:before{content:"\f6fa"}.fa-mask-face:before{content:"\e1d7"}.fa-masks-theater:before,.fa-theater-masks:before{content:"\f630"}.fa-expand-arrows-alt:before,.fa-maximize:before{content:"\f31e"}.fa-medal:before{content:"\f5a2"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-comment-alt:before,.fa-message:before{content:"\f27a"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before,.fa-microphone-lines:before{content:"\f3c9"}.fa-microphone-alt-slash:before,.fa-microphone-lines-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-mill-sign:before{content:"\e1ed"}.fa-compress-arrows-alt:before,.fa-minimize:before{content:"\f78c"}.fa-minus:before,.fa-subtract:before{content:"\f068"}.fa-mitten:before{content:"\f7b5"}.fa-mobile-android:before,.fa-mobile-phone:before,.fa-mobile:before{content:"\f3ce"}.fa-mobile-button:before{content:"\f10b"}.fa-mobile-alt:before,.fa-mobile-screen-button:before{content:"\f3cd"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-1:before,.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-1-wave:before,.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before,.fa-money-check-dollar:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mug-hot:before{content:"\f7b6"}.fa-coffee:before,.fa-mug-saucer:before{content:"\f0f4"}.fa-music:before{content:"\f001"}.fa-n:before{content:"\4e"}.fa-naira-sign:before{content:"\e1f6"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-not-equal:before{content:"\f53e"}.fa-note-sticky:before,.fa-sticky-note:before{content:"\f249"}.fa-notes-medical:before{content:"\f481"}.fa-o:before{content:"\4f"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-oil-can:before{content:"\f613"}.fa-om:before{content:"\f679"}.fa-otter:before{content:"\f700"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-p:before{content:"\50"}.fa-pager:before{content:"\f815"}.fa-paint-roller:before{content:"\f5aa"}.fa-paint-brush:before,.fa-paintbrush:before{content:"\f1fc"}.fa-palette:before{content:"\f53f"}.fa-pallet:before{content:"\f482"}.fa-panorama:before{content:"\e209"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-passport:before{content:"\f5ab"}.fa-file-clipboard:before,.fa-paste:before{content:"\f0ea"}.fa-pause:before{content:"\f04c"}.fa-paw:before{content:"\f1b0"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before,.fa-pen-clip:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-ruler:before,.fa-pencil-ruler:before{content:"\f5ae"}.fa-edit:before,.fa-pen-to-square:before{content:"\f044"}.fa-pencil-alt:before,.fa-pencil:before{content:"\f303"}.fa-people-arrows-left-right:before,.fa-people-arrows:before{content:"\e068"}.fa-people-carry-box:before,.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before,.fa-percentage:before{content:"\25"}.fa-male:before,.fa-person:before{content:"\f183"}.fa-biking:before,.fa-person-biking:before{content:"\f84a"}.fa-person-booth:before{content:"\f756"}.fa-diagnoses:before,.fa-person-dots-from-line:before{content:"\f470"}.fa-female:before,.fa-person-dress:before{content:"\f182"}.fa-hiking:before,.fa-person-hiking:before{content:"\f6ec"}.fa-person-praying:before,.fa-pray:before{content:"\f683"}.fa-person-running:before,.fa-running:before{content:"\f70c"}.fa-person-skating:before,.fa-skating:before{content:"\f7c5"}.fa-person-skiing:before,.fa-skiing:before{content:"\f7c9"}.fa-person-skiing-nordic:before,.fa-skiing-nordic:before{content:"\f7ca"}.fa-person-snowboarding:before,.fa-snowboarding:before{content:"\f7ce"}.fa-person-swimming:before,.fa-swimmer:before{content:"\f5c4"}.fa-person-walking:before,.fa-walking:before{content:"\f554"}.fa-blind:before,.fa-person-walking-with-cane:before{content:"\f29d"}.fa-peseta-sign:before{content:"\e221"}.fa-peso-sign:before{content:"\e222"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before,.fa-phone-flip:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-volume:before,.fa-volume-control-phone:before{content:"\f2a0"}.fa-photo-film:before,.fa-photo-video:before{content:"\f87c"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-plane-slash:before{content:"\e069"}.fa-play:before{content:"\f04b"}.fa-plug:before{content:"\f1e6"}.fa-add:before,.fa-plus:before{content:"\2b"}.fa-plus-minus:before{content:"\e43c"}.fa-podcast:before{content:"\f2ce"}.fa-poo:before{content:"\f2fe"}.fa-poo-bolt:before,.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-power-off:before{content:"\f011"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before,.fa-prescription-bottle-medical:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-pump-medical:before{content:"\e06a"}.fa-pump-soap:before{content:"\e06b"}.fa-puzzle-piece:before{content:"\f12e"}.fa-q:before{content:"\51"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\3f"}.fa-quote-left-alt:before,.fa-quote-left:before{content:"\f10d"}.fa-quote-right-alt:before,.fa-quote-right:before{content:"\f10e"}.fa-r:before{content:"\52"}.fa-radiation:before{content:"\f7b9"}.fa-rainbow:before{content:"\f75b"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-ad:before,.fa-rectangle-ad:before{content:"\f641"}.fa-list-alt:before,.fa-rectangle-list:before{content:"\f022"}.fa-rectangle-times:before,.fa-rectangle-xmark:before,.fa-times-rectangle:before,.fa-window-close:before{content:"\f410"}.fa-recycle:before{content:"\f1b8"}.fa-registered:before{content:"\f25d"}.fa-repeat:before{content:"\f363"}.fa-mail-reply:before,.fa-reply:before{content:"\f3e5"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-republican:before{content:"\f75e"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-ribbon:before{content:"\f4d6"}.fa-right-from-bracket:before,.fa-sign-out-alt:before{content:"\f2f5"}.fa-exchange-alt:before,.fa-right-left:before{content:"\f362"}.fa-long-arrow-alt-right:before,.fa-right-long:before{content:"\f30b"}.fa-right-to-bracket:before,.fa-sign-in-alt:before{content:"\f2f6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rotate:before,.fa-sync-alt:before{content:"\f2f1"}.fa-rotate-back:before,.fa-rotate-backward:before,.fa-rotate-left:before,.fa-undo-alt:before{content:"\f2ea"}.fa-redo-alt:before,.fa-rotate-forward:before,.fa-rotate-right:before{content:"\f2f9"}.fa-route:before{content:"\f4d7"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-rouble:before,.fa-rub:before,.fa-ruble-sign:before,.fa-ruble:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-rupee-sign:before,.fa-rupee:before{content:"\f156"}.fa-rupiah-sign:before{content:"\e23d"}.fa-s:before{content:"\53"}.fa-sailboat:before{content:"\e445"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-balance-scale:before,.fa-scale-balanced:before{content:"\f24e"}.fa-balance-scale-left:before,.fa-scale-unbalanced:before{content:"\f515"}.fa-balance-scale-right:before,.fa-scale-unbalanced-flip:before{content:"\f516"}.fa-school:before{content:"\f549"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-screwdriver:before{content:"\f54a"}.fa-screwdriver-wrench:before,.fa-tools:before{content:"\f7d9"}.fa-scroll:before{content:"\f70e"}.fa-scroll-torah:before,.fa-torah:before{content:"\f6a0"}.fa-sd-card:before{content:"\f7c2"}.fa-section:before{content:"\e447"}.fa-seedling:before,.fa-sprout:before{content:"\f4d8"}.fa-server:before{content:"\f233"}.fa-shapes:before,.fa-triangle-circle-square:before{content:"\f61f"}.fa-arrow-turn-right:before,.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-share-from-square:before,.fa-share-square:before{content:"\f14d"}.fa-share-alt:before,.fa-share-nodes:before{content:"\f1e0"}.fa-ils:before,.fa-shekel-sign:before,.fa-shekel:before,.fa-sheqel-sign:before,.fa-sheqel:before{content:"\f20b"}.fa-shield:before{content:"\f132"}.fa-shield-alt:before,.fa-shield-blank:before{content:"\f3ed"}.fa-shield-virus:before{content:"\e06c"}.fa-ship:before{content:"\f21a"}.fa-shirt:before,.fa-t-shirt:before,.fa-tshirt:before{content:"\f553"}.fa-shoe-prints:before{content:"\f54b"}.fa-shop:before,.fa-store-alt:before{content:"\f54f"}.fa-shop-slash:before,.fa-store-alt-slash:before{content:"\e070"}.fa-shower:before{content:"\f2cc"}.fa-shrimp:before{content:"\e448"}.fa-random:before,.fa-shuffle:before{content:"\f074"}.fa-shuttle-space:before,.fa-space-shuttle:before{content:"\f197"}.fa-sign-hanging:before,.fa-sign:before{content:"\f4d9"}.fa-signal-5:before,.fa-signal-perfect:before,.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-map-signs:before,.fa-signs-post:before{content:"\f277"}.fa-sim-card:before{content:"\f7c4"}.fa-sink:before{content:"\e06d"}.fa-sitemap:before{content:"\f0e8"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before,.fa-sliders:before{content:"\f1de"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-soap:before{content:"\e06e"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before,.fa-unsorted:before{content:"\f0dc"}.fa-sort-desc:before,.fa-sort-down:before{content:"\f0dd"}.fa-sort-asc:before,.fa-sort-up:before{content:"\f0de"}.fa-spa:before{content:"\f5bb"}.fa-pastafarianism:before,.fa-spaghetti-monster-flying:before{content:"\f67b"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spoon:before,.fa-utensil-spoon:before{content:"\f2e5"}.fa-spray-can:before{content:"\f5bd"}.fa-air-freshener:before,.fa-spray-can-sparkles:before{content:"\f5d0"}.fa-square:before{content:"\f0c8"}.fa-external-link-square:before,.fa-square-arrow-up-right:before{content:"\f14c"}.fa-caret-square-down:before,.fa-square-caret-down:before{content:"\f150"}.fa-caret-square-left:before,.fa-square-caret-left:before{content:"\f191"}.fa-caret-square-right:before,.fa-square-caret-right:before{content:"\f152"}.fa-caret-square-up:before,.fa-square-caret-up:before{content:"\f151"}.fa-check-square:before,.fa-square-check:before{content:"\f14a"}.fa-envelope-square:before,.fa-square-envelope:before{content:"\f199"}.fa-square-full:before{content:"\f45c"}.fa-h-square:before,.fa-square-h:before{content:"\f0fd"}.fa-minus-square:before,.fa-square-minus:before{content:"\f146"}.fa-parking:before,.fa-square-parking:before{content:"\f540"}.fa-pen-square:before,.fa-pencil-square:before,.fa-square-pen:before{content:"\f14b"}.fa-phone-square:before,.fa-square-phone:before{content:"\f098"}.fa-phone-square-alt:before,.fa-square-phone-flip:before{content:"\f87b"}.fa-plus-square:before,.fa-square-plus:before{content:"\f0fe"}.fa-poll-h:before,.fa-square-poll-horizontal:before{content:"\f682"}.fa-poll:before,.fa-square-poll-vertical:before{content:"\f681"}.fa-square-root-alt:before,.fa-square-root-variable:before{content:"\f698"}.fa-rss-square:before,.fa-square-rss:before{content:"\f143"}.fa-share-alt-square:before,.fa-square-share-nodes:before{content:"\f1e1"}.fa-external-link-square-alt:before,.fa-square-up-right:before{content:"\f360"}.fa-square-xmark:before,.fa-times-square:before,.fa-xmark-square:before{content:"\f2d3"}.fa-stairs:before{content:"\e289"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before,.fa-star-half-stroke:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-gbp:before,.fa-pound-sign:before,.fa-sterling-sign:before{content:"\f154"}.fa-stethoscope:before{content:"\f0f1"}.fa-stop:before{content:"\f04d"}.fa-stopwatch:before{content:"\f2f2"}.fa-stopwatch-20:before{content:"\e06f"}.fa-store:before{content:"\f54e"}.fa-store-slash:before{content:"\e071"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stroopwafel:before{content:"\f551"}.fa-subscript:before{content:"\f12c"}.fa-suitcase:before{content:"\f0f2"}.fa-medkit:before,.fa-suitcase-medical:before{content:"\f0fa"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superscript:before{content:"\f12b"}.fa-swatchbook:before{content:"\f5c3"}.fa-synagogue:before{content:"\f69b"}.fa-syringe:before{content:"\f48e"}.fa-t:before{content:"\54"}.fa-table:before{content:"\f0ce"}.fa-table-cells:before,.fa-th:before{content:"\f00a"}.fa-table-cells-large:before,.fa-th-large:before{content:"\f009"}.fa-columns:before,.fa-table-columns:before{content:"\f0db"}.fa-table-list:before,.fa-th-list:before{content:"\f00b"}.fa-ping-pong-paddle-ball:before,.fa-table-tennis-paddle-ball:before,.fa-table-tennis:before{content:"\f45d"}.fa-tablet-android:before,.fa-tablet:before{content:"\f3fb"}.fa-tablet-button:before{content:"\f10a"}.fa-tablet-alt:before,.fa-tablet-screen-button:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-digital-tachograph:before,.fa-tachograph-digital:before{content:"\f566"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-temperature-0:before,.fa-temperature-empty:before,.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-temperature-4:before,.fa-temperature-full:before,.fa-thermometer-4:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-temperature-2:before,.fa-temperature-half:before,.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-temperature-1:before,.fa-temperature-quarter:before,.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-temperature-3:before,.fa-temperature-three-quarters:before,.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-tenge-sign:before,.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-remove-format:before,.fa-text-slash:before{content:"\f87d"}.fa-text-width:before{content:"\f035"}.fa-thermometer:before{content:"\f491"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumb-tack:before,.fa-thumbtack:before{content:"\f08d"}.fa-ticket:before{content:"\f145"}.fa-ticket-alt:before,.fa-ticket-simple:before{content:"\f3ff"}.fa-timeline:before{content:"\e29c"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toilet-paper-slash:before{content:"\e072"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torii-gate:before{content:"\f6a1"}.fa-broadcast-tower:before,.fa-tower-broadcast:before{content:"\f519"}.fa-tractor:before{content:"\f722"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-trailer:before{content:"\e041"}.fa-train:before{content:"\f238"}.fa-subway:before,.fa-train-subway:before{content:"\f239"}.fa-train-tram:before,.fa-tram:before{content:"\f7da"}.fa-transgender-alt:before,.fa-transgender:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-arrow-up:before,.fa-trash-restore:before{content:"\f829"}.fa-trash-alt:before,.fa-trash-can:before{content:"\f2ed"}.fa-trash-can-arrow-up:before,.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-exclamation-triangle:before,.fa-triangle-exclamation:before,.fa-warning:before{content:"\f071"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-shipping-fast:before,.fa-truck-fast:before{content:"\f48b"}.fa-ambulance:before,.fa-truck-medical:before{content:"\f0f9"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-truck-loading:before,.fa-truck-ramp-box:before{content:"\f4de"}.fa-teletype:before,.fa-tty:before{content:"\f1e4"}.fa-try:before,.fa-turkish-lira-sign:before,.fa-turkish-lira:before{content:"\e2bb"}.fa-level-down-alt:before,.fa-turn-down:before{content:"\f3be"}.fa-level-up-alt:before,.fa-turn-up:before{content:"\f3bf"}.fa-television:before,.fa-tv-alt:before,.fa-tv:before{content:"\f26c"}.fa-u:before{content:"\55"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-universal-access:before{content:"\f29a"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before,.fa-unlock-keyhole:before{content:"\f13e"}.fa-arrows-alt-v:before,.fa-up-down:before{content:"\f338"}.fa-arrows-alt:before,.fa-up-down-left-right:before{content:"\f0b2"}.fa-long-arrow-alt-up:before,.fa-up-long:before{content:"\f30c"}.fa-expand-alt:before,.fa-up-right-and-down-left-from-center:before{content:"\f424"}.fa-external-link-alt:before,.fa-up-right-from-square:before{content:"\f35d"}.fa-upload:before{content:"\f093"}.fa-user:before{content:"\f007"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-clock:before{content:"\f4fd"}.fa-user-doctor:before,.fa-user-md:before{content:"\f0f0"}.fa-user-cog:before,.fa-user-gear:before{content:"\f4fe"}.fa-user-graduate:before{content:"\f501"}.fa-user-friends:before,.fa-user-group:before{content:"\f500"}.fa-user-injured:before{content:"\f728"}.fa-user-alt:before,.fa-user-large:before{content:"\f406"}.fa-user-alt-slash:before,.fa-user-large-slash:before{content:"\f4fa"}.fa-user-lock:before{content:"\f502"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-edit:before,.fa-user-pen:before{content:"\f4ff"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before,.fa-user-xmark:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before,.fa-users-gear:before{content:"\f509"}.fa-users-slash:before{content:"\e073"}.fa-cutlery:before,.fa-utensils:before{content:"\f2e7"}.fa-v:before{content:"\56"}.fa-shuttle-van:before,.fa-van-shuttle:before{content:"\f5b6"}.fa-vault:before{content:"\e2c5"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-vest:before{content:"\e085"}.fa-vest-patches:before{content:"\e086"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-video-camera:before,.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-virus:before{content:"\e074"}.fa-virus-covid:before{content:"\e4a8"}.fa-virus-covid-slash:before{content:"\e4a9"}.fa-virus-slash:before{content:"\e075"}.fa-viruses:before{content:"\e076"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before,.fa-volleyball:before{content:"\f45f"}.fa-volume-high:before,.fa-volume-up:before{content:"\f028"}.fa-volume-down:before,.fa-volume-low:before{content:"\f027"}.fa-volume-off:before{content:"\f026"}.fa-volume-mute:before,.fa-volume-times:before,.fa-volume-xmark:before{content:"\f6a9"}.fa-vr-cardboard:before{content:"\f729"}.fa-w:before{content:"\57"}.fa-wallet:before{content:"\f555"}.fa-magic:before,.fa-wand-magic:before{content:"\f0d0"}.fa-magic-wand-sparkles:before,.fa-wand-magic-sparkles:before{content:"\e2ca"}.fa-wand-sparkles:before{content:"\f72b"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-ladder-water:before,.fa-swimming-pool:before,.fa-water-ladder:before{content:"\f5c5"}.fa-wave-square:before{content:"\f83e"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weight-scale:before,.fa-weight:before{content:"\f496"}.fa-wheelchair:before{content:"\f193"}.fa-glass-whiskey:before,.fa-whiskey-glass:before{content:"\f7a0"}.fa-wifi-3:before,.fa-wifi-strong:before,.fa-wifi:before{content:"\f1eb"}.fa-wind:before{content:"\f72e"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before,.fa-wine-glass-empty:before{content:"\f5ce"}.fa-krw:before,.fa-won-sign:before,.fa-won:before{content:"\f159"}.fa-wrench:before{content:"\f0ad"}.fa-x:before{content:"\58"}.fa-x-ray:before{content:"\f497"}.fa-close:before,.fa-multiply:before,.fa-remove:before,.fa-times:before,.fa-xmark:before{content:"\f00d"}.fa-y:before{content:"\59"}.fa-cny:before,.fa-jpy:before,.fa-rmb:before,.fa-yen-sign:before,.fa-yen:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-z:before{content:"\5a"}.fa-sr-only,.fa-sr-only-focusable:not(:focus),.sr-only,.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}:host,:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}.fa-brands,.fab{font-family:"Font Awesome 6 Brands";font-weight:400}.fa-42-group:before,.fa-innosoft:before{content:"\e080"}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-alipay:before{content:"\f642"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-amilia:before{content:"\f36d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-pay:before{content:"\f415"}.fa-artstation:before{content:"\f77a"}.fa-asymmetrik:before{content:"\f372"}.fa-atlassian:before{content:"\f77b"}.fa-audible:before{content:"\f373"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-aws:before{content:"\f375"}.fa-bandcamp:before{content:"\f2d5"}.fa-battle-net:before{content:"\f835"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bilibili:before{content:"\e3d9"}.fa-bimobject:before{content:"\f378"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bootstrap:before{content:"\f836"}.fa-bots:before{content:"\e340"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-buromobelexperte:before{content:"\f37f"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-cloudflare:before{content:"\e07d"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cmplid:before{content:"\e360"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cotton-bureau:before{content:"\f89e"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-critical-role:before{content:"\f6c9"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dailymotion:before{content:"\e052"}.fa-dashcube:before{content:"\f210"}.fa-deezer:before{content:"\e077"}.fa-delicious:before{content:"\f1a5"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dhl:before{content:"\f790"}.fa-diaspora:before{content:"\f791"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-draft2digital:before{content:"\f396"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drupal:before{content:"\f1a9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edge-legacy:before{content:"\e078"}.fa-elementor:before{content:"\f430"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envira:before{content:"\f299"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-evernote:before{content:"\f839"}.fa-expeditedssl:before{content:"\f23e"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-figma:before{content:"\f799"}.fa-firefox:before{content:"\f269"}.fa-firefox-browser:before{content:"\e007"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-fly:before{content:"\f417"}.fa-font-awesome-flag:before,.fa-font-awesome-logo-full:before,.fa-font-awesome:before{content:"\f2b4"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-fulcrum:before{content:"\f50b"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-gofore:before{content:"\f3a7"}.fa-golang:before{content:"\e40f"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-pay:before{content:"\e079"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guilded:before{content:"\e07e"}.fa-gulp:before{content:"\f3ae"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hashnode:before{content:"\e499"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-hive:before{content:"\e07f"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-hotjar:before{content:"\f3b1"}.fa-houzz:before{content:"\f27c"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-ideal:before{content:"\e013"}.fa-imdb:before{content:"\f2d8"}.fa-instagram:before{content:"\f16d"}.fa-instagram-square:before{content:"\e055"}.fa-instalod:before{content:"\e081"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joomla:before{content:"\f1aa"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaggle:before{content:"\f5fa"}.fa-keybase:before{content:"\f4f5"}.fa-keycdn:before{content:"\f3ba"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-korvue:before{content:"\f42f"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-leanpub:before{content:"\f212"}.fa-less:before{content:"\f41d"}.fa-line:before{content:"\f3c0"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-mailchimp:before{content:"\f59e"}.fa-mandalorian:before{content:"\f50f"}.fa-markdown:before{content:"\f60f"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medapps:before{content:"\f3c6"}.fa-medium-m:before,.fa-medium:before{content:"\f23a"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-mendeley:before{content:"\f7b3"}.fa-microblog:before{content:"\e01a"}.fa-microsoft:before{content:"\f3ca"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mixer:before{content:"\e056"}.fa-mizuni:before{content:"\f3cc"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-octopus-deploy:before{content:"\e082"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-old-republic:before{content:"\f510"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-padlet:before{content:"\e4a0"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-palfed:before{content:"\f3d8"}.fa-patreon:before{content:"\f3d9"}.fa-paypal:before{content:"\f1ed"}.fa-perbyte:before{content:"\e083"}.fa-periscope:before{content:"\f3da"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-square:before{content:"\e01e"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pix:before{content:"\e43a"}.fa-playstation:before{content:"\f3df"}.fa-product-hunt:before{content:"\f288"}.fa-pushed:before{content:"\f3e1"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-r-project:before{content:"\f4f7"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-renren:before{content:"\f18b"}.fa-replyd:before{content:"\f3e6"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-rev:before{content:"\f5b2"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-rust:before{content:"\e07a"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-schlix:before{content:"\f3ea"}.fa-scribd:before{content:"\f28a"}.fa-searchengin:before{content:"\f3eb"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-servicestack:before{content:"\f3ec"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shopify:before{content:"\e057"}.fa-shopware:before{content:"\f5b5"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sith:before{content:"\f512"}.fa-sitrox:before{content:"\e44a"}.fa-sketch:before{content:"\f7c6"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack-hash:before,.fa-slack:before{content:"\f198"}.fa-slideshare:before{content:"\f1e7"}.fa-snapchat-ghost:before,.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-square:before{content:"\f2ad"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spotify:before{content:"\f1bc"}.fa-square-font-awesome:before{content:"\f425"}.fa-font-awesome-alt:before,.fa-square-font-awesome-stroke:before{content:"\f35c"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-sticker-mule:before{content:"\f3f7"}.fa-strava:before{content:"\f428"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-superpowers:before{content:"\f2dd"}.fa-supple:before{content:"\f3f9"}.fa-suse:before{content:"\f7d6"}.fa-swift:before{content:"\f8e1"}.fa-symfony:before{content:"\f83d"}.fa-teamspeak:before{content:"\f4f9"}.fa-telegram-plane:before,.fa-telegram:before{content:"\f2c6"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-the-red-yeti:before{content:"\f69d"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-think-peaks:before{content:"\f731"}.fa-tiktok:before{content:"\e07b"}.fa-trade-federation:before{content:"\f513"}.fa-trello:before{content:"\f181"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-uncharted:before{content:"\e084"}.fa-uniregistry:before{content:"\f404"}.fa-unity:before{content:"\e049"}.fa-unsplash:before{content:"\e07c"}.fa-untappd:before{content:"\f405"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-vaadin:before{content:"\f408"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-viber:before{content:"\f409"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-vuejs:before{content:"\f41f"}.fa-watchman-monitoring:before{content:"\e087"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-whmcs:before{content:"\f40d"}.fa-wikipedia-w:before{content:"\f266"}.fa-windows:before{content:"\f17a"}.fa-wirsindhandwerk:before,.fa-wsh:before{content:"\e2d0"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wodu:before{content:"\e088"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}:host,:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}.fa-regular,.far{font-family:"Font Awesome 6 Free";font-weight:400}:host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}.fa-solid,.fas{font-family:"Font Awesome 6 Free";font-weight:900}@font-face{font-family:"Font Awesome 5 Brands";font-display:block;font-weight:400;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:900;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"Font Awesome 5 Free";font-display:block;font-weight:400;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype");unicode-range:u+f003,u+f006,u+f014,u+f016-f017,u+f01a-f01b,u+f01d,u+f022,u+f03e,u+f044,u+f046,u+f05c-f05d,u+f06e,u+f070,u+f087-f088,u+f08a,u+f094,u+f096-f097,u+f09d,u+f0a0,u+f0a2,u+f0a4-f0a7,u+f0c5,u+f0c7,u+f0e5-f0e6,u+f0eb,u+f0f6-f0f8,u+f10c,u+f114-f115,u+f118-f11a,u+f11c-f11d,u+f133,u+f147,u+f14e,u+f150-f152,u+f185-f186,u+f18e,u+f190-f192,u+f196,u+f1c1-f1c9,u+f1d9,u+f1db,u+f1e3,u+f1ea,u+f1f7,u+f1f9,u+f20a,u+f247-f248,u+f24a,u+f24d,u+f255-f25b,u+f25d,u+f271-f274,u+f278,u+f27b,u+f28c,u+f28e,u+f29c,u+f2b5,u+f2b7,u+f2ba,u+f2bc,u+f2be,u+f2c0-f2c1,u+f2c3,u+f2d0,u+f2d2,u+f2d4,u+f2dc}@font-face{font-family:"FontAwesome";font-display:block;src:url(../webfonts/fa-v4compatibility.woff2) format("woff2"),url(../webfonts/fa-v4compatibility.ttf) format("truetype");unicode-range:u+f041,u+f047,u+f065-f066,u+f07d-f07e,u+f080,u+f08b,u+f08e,u+f090,u+f09a,u+f0ac,u+f0ae,u+f0b2,u+f0d0,u+f0d6,u+f0e4,u+f0ec,u+f10a-f10b,u+f123,u+f13e,u+f148-f149,u+f14c,u+f156,u+f15e,u+f160-f161,u+f163,u+f175-f178,u+f195,u+f1f8,u+f219,u+f250,u+f252,u+f27a} diff --git a/src/main/resources/static/css/common.css b/src/main/resources/static/css/common.css new file mode 100644 index 0000000..767e990 --- /dev/null +++ b/src/main/resources/static/css/common.css @@ -0,0 +1,118 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + font-family: 'SUIT'; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +*{margin:0;padding:0;font-family: 'SUIT';} +*:focus { + outline: none; +} +html, body{/*overflow-y:hidden*/} +body { + line-height: 1; + height: 100%; + margin: 0; + font-family: Nunito,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #858796; + text-align: left; + background-color: #fff; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +th { + text-align: inherit; + text-align: -webkit-match-parent; +} +th { + display: table-cell; + vertical-align: inherit; + font-weight: bold; + text-align: -internal-center; +} +a {text-decoration: none;} +.flex {display: flex;align-items: center;justify-content: center;} +.wsn {white-space: normal !important;} +.text-gray-300 {color: #dddfeb!important;} +.br0 {border-radius: 0!important;} +.b0 {border: 0!important;} +.bsn {box-shadow: none !important;} +.underbl {color: #4e73df;} +.underbl:hover {text-decoration: underline;} +.text-center {text-align: center;} +.b0 {border: 0 !important;} +.h20 {height: 20px;vertical-align: middle;} +.m0 {margin: 0 !important;} +.mt20 {margin-top: 20px !important;} +.mt10 {margin-top: 10px !important;} +.mr10 {margin-right: 10px;} +.ml10 {margin-left: 10px;} +.mb30 {margin-bottom: 30px !important;} +.mb10 {margin-bottom: 10px !important;} +.mb15 {margin-bottom: 15px !important;} +.pl40 {padding-left: 40px !important;} +.p0 {padding: 0 !important;} +.bl {color: #0494b4;} +.blc {color: #4e73df;} +.rdc {color: #e74a3b;} +.gnc {color: green;} +.ywc {color: #ffc122;} +.sgnc{color: rgb(162, 252, 162);} +.ft08 {font-size: 0.8rem !important;} +.ft2 {font-size: 2rem !important;} +.ft16 {font-size: 16px !important;} +.w45 {width: 45px !important;} +.w100 {width: 100px !important;} +.ha {height: auto !important;} +.jcsb {justify-content: space-between;} +.t70 {top: 70px;} +.wa {width: auto !important;} + +/* SUIT */ +@font-face { + font-family: 'SUIT'; + font-weight: normal; + font-style: normal; + src: url('../fonts/sunn-main/SUIT-Regular.eot'); + src: url('../fonts/sunn-main/SUIT-Regular.eot?#iefix') format('embedded-opentype'), + url('../fonts/sunn-main/SUIT-Regular.woff2') format('woff2'), + url('../fonts/sunn-main/SUIT-Regular.woff') format('woff'), + url('../fonts/sunn-main/SUIT-Regular.ttf') format("truetype"); + font-display: swap; +} diff --git a/src/main/resources/static/css/dev_api_doc.css b/src/main/resources/static/css/dev_api_doc.css new file mode 100644 index 0000000..cab221c --- /dev/null +++ b/src/main/resources/static/css/dev_api_doc.css @@ -0,0 +1,299 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html { + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + margin: 0 auto; + max-width: 1000px; + line-height: 1; + font-family: 'Noto Sans KR', sans-serif; +} +ol, ul { + list-style: none; +} + +a { + color: #000; + text-decoration: none; + font-weight: normal; +} + +/* tab */ + +.tabwrapper { + position: relative; + margin-top: 40px; + background-color: white; + border-radius: 10px; + box-shadow: 0px 5px 15px rgba(0, 0, 0, .1); +} + +.buttonWrapper { + display: grid; + grid-template-columns: 1fr 1fr; + position: absolute; + top: 0px; + left: 5px; +} + +button { + letter-spacing: 3px; + border: none; + padding: 10px; + background-color: #bccbe9; + color: #232c3d; + font-size: 18px; + cursor: pointer; + transition: 0.5s; +} + +button:hover { + background-color: #d5e3ff; +} + +button.activetab { + background-color: white; +} + +.activetab { + background-color: white; +} + +.content { + display: none; +} + +.content.activetab { + display: block; +} + +/***************************************** //tab menu *****************************************/ + +nav { + position: absolute; + left: -300px; +} + +nav ul { + padding-left: 0; + line-height: 1.5; + font-size: 13px; +} + +nav ul li { + list-style: none; +} + +nav ul .li_indent { + margin-left: 20px; +} + +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + +header { + height: 40px; + background-color: #fff; + + position: fixed; + width: 1000px; + top: 0px; + z-index: 100; +} + +header a p { + color: #939393; + font-size: 25px; + line-height: 40px; + font-weight: 900; + text-indent: 20px; + text-align: right; +} + +section { + max-width: 90%; + margin: 0 auto; + padding-bottom: 400px; +} + +h2 { + color: #0b5394; + padding: 70px 20px; + font-size: 50px; + font-weight: bold; +} + +h2 span { + color: #4a86e8; + padding-right: 15px; + font-size: 70px; +} + +h3 { + font-size: 28px; + line-height: 4; + padding-top: 20px; /* 3-1, 3-2 */ +} + +h4 { + margin: 10px 0; + font-size: 20px; + font-weight: 600; +} + +h4 span { + padding-left: 5px; + font-weight: 300; +} + +.headS { + color: #0b5394; + font-size: 23px; +} + +.blankArea { + padding-bottom: 40px; +} + +.dataNpr{ + padding: 10px 20px; + border: 1px solid #ccc; + margin: 20px; +} + +.dataNpr p { + line-height: 1.5; +} +.dataNpr .ft-rd {font-size: 12px;color: red;} + +.apiUrl { + height: 70px; + border-bottom: 1px solid #000; + line-height: 70px; + margin-bottom: 35px; +} + +.apiUrl a{ + color: #0000ee; + text-decoration: underline; +} + +.imgArea { + width: 70%; + margin: 0 auto; +} + +img { + width: 100%; +} + +table { + width: 100%; + border: 1px solid #ccc; +} + +.tableH { + background: #f3f3f3; +} + +td { + width: 30%; + border: 1px solid #ccc; + height: 40px; + line-height: 40px; + text-indent: 10px; +} + +.tableHeader { + margin-bottom: 40px; +} + +.tableHeader tr td:nth-child(1){ + width: 20%; +} + +.tableHeader tr td:nth-child(2){ + width: 25%; +} + +.tableHeader tr td:nth-child(3){ + width: auto; +} + +.tableHeader tr td:nth-child(4){ + width: 15%; +} + +.refArea { + padding-left: 20px; + font-weight: 400; + line-height: 1.8; +} + +.introArea { + font-size: 18px; + line-height: 1.5; + font-weight: 300; +} + +h5 { + font-size: 18px; + line-height: 4; +} + +ul { + padding-left: 50px; + line-height: 2; + font-size: 17px; +} + +ul li { /*콜백 함수 종류*/ + list-style: disc; + margin: 10px 0; +} + +ul li p { /*콜백 함수 종류*/ + display: inline-block; + background: #cfe2f3; + color: blue; +} \ No newline at end of file diff --git a/src/main/resources/static/css/header.css b/src/main/resources/static/css/header.css new file mode 100644 index 0000000..42b07dd --- /dev/null +++ b/src/main/resources/static/css/header.css @@ -0,0 +1,96 @@ +#wrapper {display: flex;} +.sidebar {min-height: 100vh;background-color: #fff;font-size: 14px;} +.logo {z-index: 1;padding: 35px 0 35px 25px;display: flex;align-items: center;gap: 15px;cursor: pointer;} +.logo.txt img {} + +.user {padding: 25px 0 17px;cursor: pointer;margin-left: auto;} +.user .box {display: flex;align-items: center;gap: 22px;width: 260px;} +.user .box i {margin-left: auto;} +.user .img {height: 20px;padding: 15px;background: #fff;border: 3px solid #03add2;border-radius: 50px;display: flex;align-items: center;justify-content: center;} +.user .name {font-size: 14px;color: #56687c;font-weight: bold;} +.user .bell {position: relative;} +.user .bell em {position: absolute;top: 0;right: -5px;width: 18px;height: 18px;background: #f34a4a;border-radius: 20px;display: flex;align-items: center;justify-content: center;font-size: 16px;} +.user .bell>i {font-size: 26px;} +.user .tgBoxcon.head li a {color: #fff;} + +.leftNav {width: 290px;display: flex;align-items: stretch;} +.leftNav:last-child {margin-bottom: 160px;} +.leftNav .right {width: 290px;} +.leftNav .left.on, .leftNav:hover .left {background: #297efc;} +.nav-item {height: 65px;position: relative;cursor: pointer;display: flex;align-items: center;} +.nav-item.active a, .nav-item:hover a {color: #0494b4;} +.nav-link {color: #7a8eab;padding-left: 12px;display: flex;align-items: center;height: 40px;width: 100%;} +.nav-link span {font-size: .95rem;display: block;} + +.ptBtn {display: flex;align-items: center;justify-content: space-between;gap: 10px;} +.ptBtn .btn {cursor: pointer;color: #0494b4;font-size: 14px;width: 60%;height: 25px;border-radius: 3px;border: solid 1px #03add2;background-color: #f8fbff;display: flex;align-items: center;justify-content: center;} +.ptBtn .btn:hover {} +.ptBtn.dash {margin-top: auto;margin-bottom: 15px;} +.ptBtn.dash .btn {padding: 0 10px;} + +#content-wrapper {background-color: #f8fbff;min-width: 1440px;width: 100%;overflow-x: hidden;flex-direction: column;display: flex;} +#content {flex: 1 0 auto;} +.navbar {flex-flow: row nowrap;justify-content: flex-start;position: relative;display: flex;flex-wrap: wrap;align-items: center;justify-content: space-between;padding-right: 42px;} +.navbar .logo .tgBoxcon.head li a {color: #fff;} +.navbar-nav {flex-direction: row;margin-left: auto;display: flex;gap: 20px;padding-left: 0;margin-bottom: 0;} +.navbar-nav .nav-item {background: #3c4350;border-radius: 3px;padding: 7px 15px;} +.navbar-nav .nav-item>a {white-space: nowrap;position: relative;height: 4.375rem;display: flex;align-items: center;gap: 10px;} +.navbar-nav .nav-item>a img {height: 2rem;width: 2rem;margin-right: 10px;} +.navbar-nav .nav-item>a span:first-child {color: #5a5c69;} +.navbar-nav .nav-item>a span {font-size: 80%;color: #858796;text-align: right;display: block;} +.navbar-nav .nav-item>a .badge {position: absolute;transform: scale(.7);transform-origin: top right;right: 1.5rem;margin-top: -0.25rem;color: #fff;background-color: #e74a3b;display: inline-block;padding: 0.25em 0.4em;font-size: 75%;font-weight: 700;line-height: 1;white-space: nowrap;vertical-align: baseline;border-radius: 0.35rem;} +.nav-link .bellT {position: relative;padding-left: 15px;} +.nav-link .bellT::before {content: "";width: 5px;height: 5px;border-radius: 10px;background: #e74a3b;position: absolute;left: 10px;top: -2px;} +.nav-item-sub {border-top: 1px solid #eff2f5;border-bottom: 1px solid #eff2f5;display: none;} +.nav-item-sub li {} +.nav-item-sub li:hover a, .nav-item-sub li.on a {background:#e8fbff;} +.nav-item-sub a {color: #7a8eab;padding-left: 24px;cursor: pointer;height: 60px;display: flex;align-items: center;} +.nav-item-sub .bell {margin-left: auto;margin-right: 25px;position: relative;} +.nav-item-sub .bell::before {content: "";width: 5px;height: 5px;border-radius: 10px;background: #e74a3b;position: absolute;left: -10px;top: 7px;} + +.footer {padding: 2rem 0;flex-shrink: 0;background-color: #fff;font-size: .8rem;text-align: center;} + +.mWrap {display: flex;align-items: center;} +.mWrap>div>a {white-space: nowrap;position: relative;color: #fff;display: flex;align-items: center;justify-content: space-between;gap: 10px;padding-right: 10px;} +.mWrap span {font-size: 80%;text-align: right;display: block;} +.mWrap .lb {width: 80px;position: relative;padding-left: 10px;} +.mWrap .lb::before {content:'';width: 2px;height: 12px;background: #297efc;position: absolute;left: 0;top: 3px;} + +.mBox {position: fixed;bottom: 0;left: 25px;width: 220px;padding: 10px 10px 15px;border-radius: 5px;box-shadow: 0 0 10px 0 #d3d8dd;border: solid 1px rgb(194 207 224 / 30%);background-color: #fff;} +.mBox p {display: flex;align-items: center;justify-content: space-between;margin-bottom: 10px;} +.mBox p span {font-size: 14px;color: #7a8eab;} +.box1 {bottom: 25px;} +.box2 {bottom: 150px;} +.nav-item i {margin-left: auto;margin-right: 25px;} +.ico {width: 16px;height: 16px;margin-right: 17px;} + +.icon1 {background: url(/img/icon_dash.svg) center no-repeat;} +.icon2 {background: url(/img/icon_mypage.svg) center no-repeat;} +.icon3 {background: url(/img/icon_limit.svg) center no-repeat;} +.icon4 {background: url(/img/icon_cw.svg) center no-repeat;} +.icon5 {background: url(/img/icon_agency.svg) center no-repeat;} +.icon6 {background: url(/img/icon_insur.svg) center no-repeat;} +.icon7 {background: url(/img/icon_total.svg) center no-repeat;} +.icon8 {background: url(/img/icon_dev.svg) center no-repeat;} +.icon9 {background: url(/img/icon_gear.svg) center no-repeat;} + +a.nav-link:hover .icon1, +.active .icon1 {background: url(/img/icon_dash_on.svg) center no-repeat;} +a.nav-link:hover .icon2, +.active .icon2 {background: url(/img/icon_mypage_on.svg) center no-repeat;} +a.nav-link:hover .icon3, +.active .icon3 {background: url(/img/icon_limit_on.svg) center no-repeat;} +a.nav-link:hover .icon4, +.active .icon4 {background: url(/img/icon_cw_on.svg) center no-repeat;} +a.nav-link:hover .icon5, +.active .icon5 {background: url(/img/icon_agency_on.svg) center no-repeat;} +a.nav-link:hover .icon6, +.active .icon6 {background: url(/img/icon_insur_on.svg) center no-repeat;} +a.nav-link:hover .icon7, +.active .icon7 {background: url(/img/icon_total_on.svg) center no-repeat;} +a.nav-link:hover .icon8, +.active .icon8 {background: url(/img/icon_dev.svg) center no-repeat;} +a.nav-link:hover .icon9, +.active .icon9 {background: url(/img/icon_gear.svg) center no-repeat;} + + diff --git a/src/main/resources/static/css/login.css b/src/main/resources/static/css/login.css new file mode 100644 index 0000000..f13dba3 --- /dev/null +++ b/src/main/resources/static/css/login.css @@ -0,0 +1,23 @@ +body {display: flex;justify-content: center;align-items: center;min-height: 100vh;} +body.loginBg {background: url(/img/login_bg.jpg) center no-repeat;background-size: cover;} +.loginWrap {width: 500px;} +.login {} +.login>div {position: relative;display: flex;flex-direction: column;min-width: 0;word-wrap: break-word;} +.login>div .name {color: #323c47;margin-bottom: 50px;font-size: 30px;font-weight: bold;} +.login>div .input {font-size: 20px;margin-bottom: 30px;display: block;width: 100%;height: 40px;color: #7a8eab;background-color: #fff;border: 0;border-bottom: 2px dashed #c2cfe0;transition: border-color .15s ease-in-out,box-shadow .15s ease-in-out;} +.login>div .input::placeholder {color: #7a8eab} +.login>div .btn { line-height: 1.5; + user-select: none; + text-align: center; + vertical-align: middle; + color: #fff; + background-color: #03add2; + display: block; + width: 100%; + font-size: 18px; + border-radius: 5px; + padding: 10px 0; + cursor: pointer;} + +.foot {text-align: center;padding-top: 214px;} +.foot span {font-size: 15px;color: #7a8eab;display: block;margin-top: 15px;} \ No newline at end of file diff --git a/src/main/resources/static/css/main.css b/src/main/resources/static/css/main.css new file mode 100644 index 0000000..5bd41c4 --- /dev/null +++ b/src/main/resources/static/css/main.css @@ -0,0 +1,468 @@ +.container-fluid {padding-left: 1.5rem;padding-right: 1.5rem;margin-right: auto;margin-left: auto;} + +.alert {position: relative;padding: 0.75rem 1.25rem;margin-bottom: 1rem;border: 1px solid transparent;border-radius: 0.35rem;} +.alert-info {color: #297efc;background-color: #eaf5ff;border-color: #297efc;} +.alert-danger {color: #f34a4a;background-color: #feecec;border-color: #f34a4a;} +.alert>a {position: absolute;right: 15px;top: 15px;width: 22px;height: 22px;background: #fff;border-radius: 30px;display: flex;align-items: center;justify-content: center;} + +.page-name {margin-bottom: 1.5rem;color: #3b4151;display: flex;gap: 17px;align-items: center;} +.page-name h1 {font-size: 30px;color: #323c47;font-weight: bold;} +.page-name h2 {color: #3b4151;margin-bottom: 0;font-size: 36px;} +.page-name span {font-size: 12px;display: inline-block;color: #7a8eab;} +.page-name h2 .ver1 {background: #7d8492;border-radius: 57px;display: inline-block;font-size: 13px;color: #fff;margin: 0 0 0 5px;padding: 2px 8px;position: relative;top: -5px;vertical-align: super;} +.page-name h2 .ver2 {background-color: #89bf04;border-radius: 57px;display: inline-block;font-size: 13px;margin: 0 0 0 5px;padding: 2px 8px;position: relative;top: -5px;vertical-align: super;} +.page-name div em {font-size: 12px;color: #4990e2;} +.page-name div span {display: block;text-align: left;color: #3b4151;margin: 10px 0;line-height: 2em;} +.page-name.bt {padding-top: 1rem;margin-top: 1rem;border-top: 1px solid rgba(0,0,0,.1);} +.page-name svg {vertical-align: middle;} +.tablist {list-style: disc;padding-left: 40px;margin-top: 10px;font-size: 14px;} +.tablist li {margin-bottom: 14px;display: list-item;white-space: pre-wrap;} +.apitable {} +.apitable ul {display: flex;align-items: stretch;padding: 12px 0;} +.apitable ul.first {border-bottom: 1px solid rgba(59,65,81,.2);color: #3b4151;font-size: 12px;font-weight: bold;} +.apitable ul li {width: 20%;} +.apitable ul li:last-child {flex: 0 0 60%;} +.apitable.apitableCode ul li:first-child {width: 15%;} +.apitable.apitableCode ul li {width: 10%;} +.apitable.apitableCode ul li:nth-child(2) {flex: 0 0 75%;} +.apitableCode ul li.name {font-size: 13px;font-weight: bold;} +.apitableCode ul li.name small {display: block;color: #3b4151;font-size: 12px;} +.apitableCode ul li.name em {font-style: italic;font-size: 12px;color: gray;} +.apitableCode ul li:last-child {flex: 0 0 10%;} +.apitable.process {margin-bottom: 20px;} +.apitable.process ul li:nth-child(1) {width: 35%;} +.apitable.process ul li:nth-child(2) {width: 10%;} +.apitable.process ul li:nth-child(3) {width: 35%;} +.apitable.process ul li:nth-child(4) {width: 10%;} +.apitable.process ul li:nth-child(5) {flex: 0 0 10%;} +.processname {font-size: 1.5rem;} +.processname b {font-weight: bold;} +.mark {background: rgba(0,0,0,.05);border-radius: 4px;color: #9012fe;font-size: 14px;font-weight: bold;padding: 5px 7px;} +.bkmark {hyphens: auto;border-radius: 4px;word-wrap: break-word;overflow-x: auto;background: #333 !important;color: white !important;font-weight: bold;padding: 15px 20px;} +.pre {white-space: pre-wrap;display: block;} +.pre hr {margin-top: 1rem;margin-bottom: 1rem;border: 0;border-top: 1px solid rgba(0,0,0,.1);} +.update h3 {color: #3b4151;margin-bottom: 0.5rem;font-size: 1.75rem;} +.server {display: flex;justify-content: space-between;align-items: center;background: #fff;box-shadow: 0 1px 2px 0 rgb(0 0 0 / 15%);margin: 0 0 20px;padding: 30px;color: #3b4151;} +.server em {font-size: 12px;font-weight: bold;color: #3b4151;display: block;} +.server select {max-width: 100%;min-width: 130px;-webkit-appearance: none;-moz-appearance: none;appearance: none;background: #f7f7f7 url(../img/select.svg) right 10px center no-repeat;border: 2px solid #41444e;border-radius: 4px;box-shadow: 0 1px 2px 0 rgb(0 0 0 / 25%);color: #3b4151;font-size: 14px;font-weight: 700;padding: 5px 40px 5px 10px;} +.server button {display: flex;align-items: center;gap: 20px;background-color: #fff;color: #49cc90;line-height: 1;border: 2px solid #49cc90;border-radius: 4px;box-shadow: 0 1px 2px rgba(0,0,0,.1);font-size: 14px;font-weight: 700;padding: 5px 23px;transition: all .3s;} +.server button svg {fill: #49cc90;vertical-align: middle;} +.serverv {font-size: 1.5rem;margin: 1rem 0;} +.serveinput input {height: 100%;width: 100%;background: #fff;border: 1px solid #d9d9d9;border-radius: 4px;margin: 5px 0;min-width: 100px;padding: 8px 10px;} +input.user {max-width: 340px;width: 100%;color: #888;cursor: not-allowed;background: #fff;border: 1px solid #d9d9d9;border-radius: 4px;margin: 5px 0;min-width: 100px;padding: 8px 10px;font-size: 16px;margin: 1rem 0;} +.codetype {display: flex;gap: 30px;} +.none, .none ul, .none div {background: hsla(0,0%,92%,.1) !important;border-color: #ebebeb !important;opacity: .8;} +.noneline {text-decoration: line-through;} + +.api-name {margin-bottom: 1.5rem;} +.api-name .top {display: flex;align-items: center;justify-content: space-between;border-bottom: 1px solid rgba(59,65,81,.3);} +.api-name h4 {color: #3b4151;font-size: 24px;align-items: center;cursor: pointer;display: flex;padding: 10px 20px 10px 10px;} +.api-name h4 span {font-size: 14px;padding: 0 10px;} + +.apinfo {background: rgba(97,175,254,.1);border: 1px solid #61affe;border-radius: 4px;display: flex;justify-content: space-between;align-items: center;box-shadow: 0 0 3px rgb(0 0 0 / 19%);margin-top: 10px;cursor: pointer;padding: 5px;color: #3b4151;} +.apinfo.post {border-color: #49cc90;background: #e6f5f1;} +.apinfo li {display: flex;align-items: center;} +.apinfo li em {margin-right: 10px;background: #61affe;border-radius: 3px;color: #fff;font-size: 14px;font-weight: 700;min-width: 50px;padding: 6px 15px;text-align: center;text-shadow: 0 1px 0 rgb(0 0 0 / 10%);} +.apinfo li em.post {background: #49cc90;} +.apinfoWrap {border: 1px solid #61affe;border-top: 0;border-radius: 0 0 4px 4px;} +.apinfoWrap.post {border-color: #49cc90;} +.apinfoWrap>.pre {color: #3b4151;font-size: 12px;padding: 15px 20px;background: rgba(97,175,254,.1);} +.apinfoWrap.post .pre {background: #e6f5f1;} +.apinfoTop {align-items: center;background: #fff;box-shadow: 0 1px 2px rgba(0 0 0 / 10%);display: flex;justify-content: space-between;min-height: 35px;padding: 8px 20px;color: #3b4151;font-size: 14px;} +.apinfoTop li.on {position: relative;} +.apinfoTop li.on:after {background: #61affe;bottom: -15px;content: "";height: 4px;left: 50%;position: absolute;transform: translateX(-50%);width: 120%;} +.apinfoWrap .apinfoTop li.on:after {background: #49cc90;} +.trybtn {cursor: pointer;background: transparent;border: 2px solid grey;border-radius: 4px;box-shadow: 0 1px 2px rgb(0 0 0 / 10%);color: #3b4151;font-size: 14px;font-weight: bold;padding: 5px 23px;transition: all .3s;} +.agentCode small{display: block;font-size: .9em;margin: 0.2em 0;} +.agentCode select {min-width: 230px;-webkit-appearance: none;-moz-appearance: none;appearance: none;background: #f7f7f7 url(../img/select.svg) right 10px center no-repeat;background-size: 20px;border: 2px solid green;border-radius: 4px;box-shadow: 0 1px 2px 0 rgb(0 0 0 / 25%);color: #3b4151;font-size: 14px;font-weight: bold;padding: 5px 40px 5px 10px;} +.agentCode select.bks {border: 2px solid #000;} +.exbtn {display: inline-block;} +.required {position: relative;} +.required:after {content: "* required";color: rgba(255,0,0,.6);font-size: 10px;padding: 5px;position: relative;top: -6px;} + +.schemas {border: 1px solid rgba(59,65,81,.3);border-radius: 4px;margin: 30px 0;} +.schemas h4 {display: flex;justify-content: space-between;align-items: center;padding: 10px 20px 10px 10px;} +.schemas img {height: 20px;} +.schemas .con {border-top: 1px solid rgba(59,65,81,.3);padding: 0 20px 20px;color: #505050;font-weight: bold;} +.schemas .con li {background: rgba(0,0,0,.05);border-radius: 4px;margin-top: 20px;padding: 20px;} +.schemas .con li:hover {background: rgba(0,0,0,.07);} +.schemas .con img {vertical-align: middle;} + +.row {display: flex;gap: 10px;} +.row>div {width: 100%;margin-bottom: 10px !important;} +.row .card {position: relative;min-width: 0;word-wrap: break-word;background-clip: border-box;border-radius: 5px;border: solid 1px #dfedff;background-color: #fff;} +.row .card .card-body {min-height: 1px;height: 100px;padding: 0 20px;display: flex;justify-content: space-between;align-items: center;position: relative;} +.row .card .card-body .left {font-weight: bold;color: #5a5c69;font-size: 1.25rem;} +.row .card .card-body .left div:first-child {font-size: 14px;color: #56687c;font-weight: normal;margin-bottom: 10px;} +.row .card .card-body .left div {font-size: 16px;color: #56687c;} +.row .card .card-body .left div.upDown {font-size: 16px;color: #8e9598;display: flex;align-items: center;gap: 5px;font-weight: normal;} +.row .card .card-body .left div.upDown em {width: 20px;height: 20px;border-radius: 30px;display: flex;align-items: center;justify-content: center;} +.row .card .card-body .left div.upDown em.up {background: #defced;} +.row .card .card-body .left div.upDown em.down {background: #feecec;} +.row .card .card-body .left div.upDown span.up {color: #2be77e;} +.row .card .card-body .left div.upDown span.down {color: #f34a4a;} +.row .card .card-body .right {position: absolute;right: 12px;top: 0;width: 35px;height: 38px;background: url(/img/dash_bg.svg);display: flex;align-items: center;justify-content: center;} +.row2 {display: flex;gap: 20px;} +.row2 .card.left {flex: 0 0 64%;} +.row2 .card.right {flex: 0 0 34%;} +.row2 .card {border-radius: 8px;box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16);margin-bottom: 1.5rem;position: relative;display: flex;flex-direction: column;min-width: 0;word-wrap: break-word;background-color: #fff;background-clip: border-box;border: 1px solid #e3e6f0;border-radius: 0.35rem;} +.row2 .card-header {border-radius: calc(0.35rem - 1px) calc(0.35rem - 1px) 0 0;padding: 0.75rem 1.25rem;margin-bottom: 0;background-color: #f8f9fc;border-bottom: 1px solid #e3e6f0;display: flex;flex-direction: row;justify-content: space-between;align-items: center;} +.row2 .card-header h6 {color: #3c4350;font-size: 16px;} +.row2 .card-header i {color: #d1d3e2;font-weight: bold;} +.row2 .card-body {flex: 1 1 auto;min-height: 1px;padding: 1.25rem;} +.row2 .card-body .chart-area {height: 20rem;position: relative;height: 10rem;width: 100%;} + +/* mypage */ +.table {margin-bottom: 1.5rem;border-radius: 5px;position: relative;display: flex;flex-direction: column;min-width: 0;word-wrap: break-word;background-color: #fff;overflow-x: auto;} +.table .head {padding: 22px 20px;margin-bottom: 0;border-bottom: 1px dashed #c2cfe0;} +.table .head h6 {color: #56687c;font-size: 20px;} +.table .head h6.bg {color: #fff;background: #297efc;display: inline-block;border-radius: 5px;padding: 1px 7px;margin-right: 10px;} +.table .head h6.bold {font-size: 18px;font-weight: bold;} +.table .head .text {font-size: 80%;} +.table .head .num {color: #297efc;font-weight: bold;} +.table .between {justify-content: space-between;} +.table .check-wrap {display: flex;align-items: center;gap: 15px;font-size: 13px;} +.table .check-wrap input {width: auto;height: auto;} +.table .check-wrap .inputs {display: flex;align-items: center;gap: 5px;cursor: pointer;} +.table .body {flex: 1 1 auto;} +.table-responsive .nonDetail {display: block;width: 100%;overflow-x: auto;/*min-height: 500px;*/} +.table-responsive .h4 {margin-bottom: 1.25rem;color: #474f60;} +.table-responsive > table {border: 0;width: calc(100% - 40px);color: #56687c;} +.table-responsive > table th { background: #f8fbff; } +.table-responsive table.nonDetail {border: 0;color: #56687c; } +table.center {text-align: center;} +.table td, .table th {word-break: keep-all;white-space: nowrap;vertical-align: middle;} +.table-responsive .nonDetail th {color: #56687c;font-weight: bold;background: #f8fbff;} +.table-responsive td {color: #474f60;} +.table-responsive td, .table-responsive th {border: 1px dashed #c2cfe0;} +.table-responsive td, .table-responsive th {font-size: 14px;padding: 6px 10px;vertical-align: top;word-break: keep-all;white-space: nowrap;vertical-align: middle; text-align: center;} +.table-responsive a {color: #03add2;} +.table-responsive .btn {cursor: pointer;color: #fff;background-color: #03add2;border-color: #03add2;padding: 6px 22px;font-size: 14px;line-height: 1.5;border-radius: 0.2rem;} +.table-responsive .btn.success {background: #87d203;} +.table-responsive .input , +.table-responsive .select {width: 400px;display: inline-block;height: 35px;padding-left: 15px;font-size: 14px;font-weight: 400;line-height: 1.5;color: #56687c;background-color: #fff;background-clip: padding-box;border: 1px solid #c2cfe0;border-radius: 5px;} +.table-responsive .select {width: 417px;} +.table-responsive .inputbtn {color: #fff;background-color: #03add2;border-color: #03add2;padding: 0.45rem 0.7rem;font-size: 14px;line-height: 1.5;border-radius: 3px;margin-left: 5px;} +.table-responsive .text {display: block;color: #7a8eab;font-size: 14px;margin-top: 10px;} +.table-responsive select {width: 380px;padding-left: 0.75rem;height: calc(1.5em + 0.75rem + 2px);font-size: 1rem;background-color: #fff;border: 1px solid #ced4da;border-radius: 0.25rem;line-height: calc(1.5em + .75rem);color: #495057;display: block;padding-right: 20px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;} +.table-responsive .black {color: gray;} +.table-responsive .stop a {color: red;} +.table-responsive td.detailSec { position: relative; } +.table-responsive .bold {font-size: 15px;color: #e90000;font-weight: bold;} +.table-responsive .mr-5 {margin: 0 5px !important;} +.table-responsive .lowA {background: #cd82e526;} +.table-responsive .lowB {background: #b1e58226;} + + +.ps {padding: 5px !important;} +.ps2 {padding: 2px !important;background: #c2cfe0} + +.detailpopup { display:none; border: 2px solid; background:#fff; position: fixed; right: 1.5rem; top: 50%; left:50%; transform: translate(-50%, -50%); width:1000px; z-index:1; } +.detailpopup table { border: 1px solid #c2cfe0; } +.detailpopup h3 { font-size: 18px; line-height: 1.8; font-weight: bold; position: relative; } +.detailpopup .detailClose { display: inline-block; position: absolute; right: 5px; cursor: pointer; } +.detailpopup .detailTb { width: 99%; margin: 0px auto 5px; } +.detailpopup .detailTb table { width: 100% } +.detailpopup td, .detailpopup th { padding: 5px; } +.detailpopup td .betType { padding: 3px 7px; color: #fff; font-weight: bold; border-radius: 8px; } +.detailpopup td .typeT { background: rgb(70, 180, 65); } +.detailpopup td .typeB { background: rgb(0, 147, 255); } +.detailpopup td .typeP { background: rgb(206, 53, 57); } +.detailpopup td .notypeP { background: rgb(0, 0, 0); margin-left: 1px; border-radius: 100%; color:yellow; } +.detailpopup .cardWrap { display: flex; margin: 0 auto; width: 45%; max-height: 72px; justify-content: center; font-size: 40px; font-weight: bold;} +.detailpopup .cardWrap span:nth-child(2) { padding: 0 20px; } +.detailpopup .cardWrap .ro90 { transform: rotate(90deg); color: red; } +#bank { color:blue; } +#player { color:red; } +.detailpopup .cardWrapB .ro90 { margin-top: 20px; } +.detailpopup .cardWrapP .ro90 { margin-bottom: -20px; } +.blhover {color: #4e73df;cursor: pointer;} +.blhover:hover {text-decoration: underline;} +.table .body.read .top {display: flex;gap: 20px;margin-bottom: 20px;} +.table .body.read .top span {font-weight: bold;margin-right: 5px;} + +.table .body.fix {display: flex;justify-content: space-around;} +.table .body.fix ul:first-child {margin-top: 0;} +.table .body.fix ul {display: flex;align-items: center;gap: 20px;margin-top: 1rem;} +.table .body.fix li:first-child {width: 200px;} +.table .body.fix li.chk {color: #e74a3b;display: flex;gap: 20px;} +.table .body.fix li.chk span:first-child {color: #1cc88a;} +.table .body.fix li.chk input {margin-right: 5px;} + +.insur .insurTable td{ + font-size: 14px; + padding: 10px 20px; + word-break: keep-all; + white-space: nowrap; + vertical-align: middle; + text-align: center; +} +.insur .insurTable input{ + width: 60px; + text-align: center; + border: 1px solid #c5c5c5; + border-radius: 3px; + padding: 5px 0px; + margin-right: 5px; + color: black; +} +.insur .insurTable .btinsureRate{ + border: 0px solid black; +} + +/* charge */ +.tabletab {margin: 40px 0 20px;display: flex;gap: 40px;flex-wrap: wrap;border-bottom: 2px solid #eff2f5;} +.tabletab a {font-size: 18px;color: #7a8eab;padding-bottom: 10px;display: flex;align-items: center;justify-content: center;} +.tabletab .active {border-bottom: 2px solid #03add2;} +.tabletab .active a {color: #56687c;} +.tabText {color: #7a8eab;font-size: 12px;margin: -20px 0 30px;display: block;} +.tableserach {justify-content: flex-end;display: flex;flex-wrap: wrap;gap: 15px;padding-left: 0;} +.tableserach li {display: flex;align-items: center;} +.input-group {position: relative;display: flex;flex-wrap: wrap;align-items: center;gap: 10px;width: 100%;height: 45px;border: 1px dashed #c2cfe0;padding: 0 20px;color: #c2cfe0;background: #fff;} +.input-group-text {display: flex;align-items: center;font-size: 14px;line-height: 1.5;color: #5f799b;text-align: center;white-space: nowrap;} +.input-group select {position: relative;flex: 1 1 auto;font-size: 14px;line-height: 1.5;color: #474f60;background: none;border: 0;} +.input-group input {border: 0; + padding: 0; + color: #56687c; + height: 25px; + font-size: 14px; + text-align: right;} +.input-group input::placeholder {color: #c2cfe0;} +.tableserach .btn {cursor: pointer;color: #fff;display: flex;align-items: center;justify-content: center;text-align: center;vertical-align: middle;user-select: none;padding: 0 13px;border-radius: 5px;background-color: #03add2;height: 45px;} +.tableserach .btn.btnn {width: auto;padding: 0 10px;font-size: 14px;} +.tableserachwrap {display: flex;justify-content: space-between; margin-bottom: 20px; align-items: flex-end; } +.insur .tableserachwrap {display: flex;justify-content: space-between; margin: 20px;} +.download {font-size: 14px;display: flex;gap: 15px;align-items: center;color: #323c47;} +.download a {display: flex;align-items: center;justify-content: center;gap: 15px;width: 100px;height: 45px;cursor: pointer;border-radius: 5px;border: solid 1px #03add2;background-color: #fff;} +.download img {vertical-align: middle;} +.mb-1 {margin-bottom: 0.25rem;} +.mb-1 .info {color: #fff;background-color: #36b9cc;display: inline-block;padding: 0.25em 0.4em;font-size: 12px;line-height: 1;text-align: center;white-space: nowrap;vertical-align: baseline;border-radius: 0.35rem;} +.mb-1 .primary {color: #0494b4;background-color: #e8fbff;display: inline-block;padding: 0.25em 0.4em;font-size: 12px;line-height: 1;text-align: center;white-space: nowrap;vertical-align: baseline;border-radius: 0.35rem;} +.mb-1 .success {color: #fff;background-color: #1cc88a;display: inline-block;padding: 0.25em 0.4em;font-size: 75%;font-weight: 700;line-height: 1;text-align: center;white-space: nowrap;vertical-align: baseline;border-radius: 0.35rem;} +.title {color: #5a5c69;font-size: 14px;} +.round {font-size: 87.5%;color: #e83e8c;word-wrap: break-word;} +.bottomText {color: #b7b9cc;text-align: right;} + +/* sumPrice */ +#sumPriceWrap { margin-bottom: 20px; display: flex; justify-content: space-between; font-size: 15px; } +#sumPriceWrap > div { display: flex; gap: 40px; align-items: flex-end; } +#sumPriceWrap .sumPrice { display: flex; gap: 15px; align-items: center; } +#sumPriceWrap .sumPrice > li { border: 1px dashed #c2cfe0; } +#sumPriceWrap .sumPriceSec { display: flex; gap: 20px; align-items: center; padding: 8px 20px; } +#sumPriceWrap .sumPriceSec > li:first-child { position: relative; } +#sumPriceWrap .sumPriceSec > li:first-child::after { content:""; position: absolute; display: inline-block; width: 1px; height: 25px; border-right: 1px solid #c2cfe0; top: -1px; right: -20px; } +.priceArea { font-weight: bold; font-size: 16px; color: #00b2d9; min-width: 135px; text-align: right; } + +/* linePrint_with Excel [ ex) betist ] */ +#sumPriceWrap .linePrintWrap { gap: 5px; } +#sumPriceWrap .linePrintWrap .linePrint { display: flex; gap: 5px; font-size: 14px; align-items: center; } +#sumPriceWrap .linePrintWrap .linePrint li { padding: 3px 10px; border-radius: 5px; background: #03add2; } +#sumPriceWrap .linePrintWrap .linePrint li a { color: #fff; } +.btnExcel { display:flex; align-items: flex-end; background:none; border-radius: 5px; color: #fff; background: #03add2; border: 0; cursor:pointer; font-size: 16px; padding: 5px 4px 5px 6px; } +.btnExcel:hover { font-weight: bold; background: #03add2; opacity: 0.8; } +.btnExcel img { width:24px; margin-right:2px; } + +/* linePrint_without [ other ] */ +#lineWrap { display: flex; justify-content: space-between; font-size: 15px; } +#lineWrap .linePrintWrap { display: flex; gap: 5px; align-items: flex-end; } +#lineWrap .linePrintWrap .linePrint { display: flex; gap: 5px; font-size: 14px; align-items: center; } +#lineWrap .linePrintWrap .linePrint li { padding: 3px 10px; border-radius: 5px; background: #03add2; } +#lineWrap .linePrintWrap .linePrint li a { color: #fff; } + +/* stste */ +.success {color: #56687c;text-align: center;white-space: nowrap;vertical-align: baseline;} +.confirm {color: #f82929;font-size: 75%;text-align: center;white-space: nowrap;vertical-align: baseline;cursor: pointer;} +.apply {color: #fff;background-color: #e74a3b;display: inline-block;padding: 0.5em;font-size: 75%;font-weight: 700;line-height: 1;text-align: center;white-space: nowrap;vertical-align: baseline;border-radius: 0.35rem;cursor: pointer;} + +/* bottom btn */ +.btnwrap {display: flex;justify-content: flex-end;align-items: center;gap: 10px;} +.btnwrap .btn {color: #fff;background-color: #03add2;border: 1px solid #03add2;display: inline-block;;text-align: center;vertical-align: middle;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;padding: 11px 48px;font-size: 14px;line-height: 1.5;border-radius: 0.35rem;cursor: pointer;} +.btnwrap .btn i {color: #fff;font-weight: 900;} +.btnwrap .btn+.btn {background: #2be77e;border-color: #12c561;} +.btnwrap .btn.blbtn {background-color: #4e73df;} + +/* pagenation */ +.pagenation-wrap {display: flex;align-items: center;justify-content: center;gap: 15px;margin: 20px 0;} +.pagenation-wrap button {width: 18px;height: 18px;background: #fff;border: 0;color: #56687c;display: flex;align-items: center;justify-content: center;font-size: 14px; cursor: pointer;} +.pagenation-wrap button.on {background: #03add2;color: #fff;} + +.totalBtn {display: flex;align-items: center;justify-content: center;gap: 10px;font-size: 14px;} +.totalBtn li {background: #e3e0e0;padding: 5px 10px;border-radius: 5px;} +.totalBtn li.on {color: #fff;background: #59baff;} +.totalBtn a {cursor: pointer;} + +/* modal */ +.selectFlex {display: flex;justify-content: left;align-items: center;border: 0 !important;} +.selectFlex a {cursor: pointer;color: #3a3b45;} +.selectBox {cursor: pointer;} +.selectBox em {display: block;} +.selectBox em::after {display: inline-block;margin-left: 0.255em;vertical-align: 0.255em;content: "";border-top: 0.3em solid;border-right: 0.3em solid transparent;border-bottom: 0;border-left: 0.3em solid transparent;} +.selectBox.bl {color: #0494b4;} +.selectRight {margin: 1.5rem 1rem;} +.tgBox {position: relative;} +.tgBoxcon {display: none;position: absolute;font-size: 14px;background-color: #3c4350;border-radius: 8px;color: #fff;padding: 0.5rem 0; margin-top: 20px; min-width: 10rem;z-index: 1;} +.tgBoxcon.head {width: 14rem;} +.tgBoxcon.head li:hover, .tgBoxcon li:hover {background-color: #282d37;} +.tgBoxcon.head li:first-child {font-weight: normal;font-size: .85rem;color: #3a3b45;} +.tgBoxcon li:first-child:hover {background: none;} +.tgBoxcon.head li a {padding: 0;height: auto;color: #3a3b45;} +.tgBoxcon.head i {color: #d1d3e2;margin-right: 0.5rem;} +.tgBoxcon ul:first-child {padding-bottom: 0.5rem;} +.tgBoxcon li:first-child {font-size: 12px;color: #a7adb7;padding-top: 0.5rem;} +.tgBoxcon li {padding: 0.25rem 1.5rem;cursor: pointer;} +.tgBoxcon li a {color: #fff;} + +.modal-content {position:fixed;top:50%;left:50%;transform: translate(-50%,-50%);display: block;width: 500px;pointer-events: auto;background-color: #fff;background-clip: padding-box;border: 1px solid rgba(0,0,0,.2);border-radius: 0.3rem;outline: 0;z-index: 1;display: none;} +.modal-content1 {position:fixed;top:50%;left:50%;transform: translate(-50%,-50%);display: block;width: 500px;pointer-events: auto;background-color: #fff;background-clip: padding-box;border: 1px solid rgba(0,0,0,.2);border-radius: 0.3rem;outline: 0;z-index: 1;display: none;} +.modal-content2 {position:fixed;top:50%;left:50%;transform: translate(-50%,-50%);display: block;width: 500px;pointer-events: auto;background-color: #fff;background-clip: padding-box;border: 1px solid rgba(0,0,0,.2);border-radius: 0.3rem;outline: 0;z-index: 1;display: none;} +.modal-content3 {position:fixed;top:50%;left:50%;transform: translate(-50%,-50%);display: block;width: 500px;pointer-events: auto;background-color: #fff;background-clip: padding-box;border: 1px solid rgba(0,0,0,.2);border-radius: 0.3rem;outline: 0;z-index: 1;display: none;} +.modal-content4 {position:fixed;top:50%;left:50%;transform: translate(-50%,-50%);display: block;width: 500px;pointer-events: auto;background-color: #fff;background-clip: padding-box;border: 1px solid rgba(0,0,0,.2);border-radius: 0.3rem;outline: 0;z-index: 1;display: none;} +.modal-header {display: flex;align-items: center;justify-content: space-between;padding: 14px 20px;background: #282d37;} +.modal-header h5 {font-size: 14px;color: #fff;} +.modal-header a {font-size: 1.5rem;cursor: pointer;width: 22px;height: 22px;background: #fff;border-radius: 30px;display: flex;align-items: center;justify-content: center;} +.modal-body {position: relative;flex: 1 1 auto;padding: 13px 20px 20px;} +.modal-body select, .modal-body textarea, .modal-body input {display: block;width: 100%;height: calc(1.5em + 0.75rem + 2px);padding: 0 0.5rem;font-size: 14px;line-height: 1.5;color: #3c4350;background-color: #fff;background-clip: padding-box;border: 1px solid #a7adb7;border-radius: 3px;} +.modal-body textarea, .modal-body input {width: calc(100% - 1rem);} +.modal-body textarea {height: 130px;resize: none;padding: 0.5rem;} +.modal-body .chk {align-items: center;display: flex;} +.modal-body .chk input {width: auto;height: auto;} +.modal-body span {color: #858796;font-size: 80%;} +.modal-body ul {margin-top: 13px;display: flex;flex-wrap: wrap;} +.modal-body ul li {flex: 0 0 66.66667%;max-width: 66.66667%;position: relative;} +.modal-body ul li:first-child {flex: 0 0 33.33333%;max-width: 33.33333%;color: #3c4350;font-size: 14px;} +.modal-footer {display: flex;flex-wrap: wrap;align-items: center;justify-content: flex-end;padding: 0.75rem;border-top: 1px solid #e3e6f0;border-bottom-right-radius: calc(0.3rem - 1px);border-bottom-left-radius: calc(0.3rem - 1px);} +.modal-footer a:first-child {background-color: #fff;border: 1px solid #a7adb7;color: #3c4350;} +.modal-footer a {cursor: pointer;margin: 0.25rem;color: #fff;display: inline-block;text-align: center;vertical-align: middle;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;background-color: #297efc;border: 1px solid #0057d8;padding: 4px 30px;font-size: 14px;line-height: 1.5;border-radius: 3px;} + +.modal-body em.pot {position: absolute;right: -2px;top: 0;display: flex;align-items: center;padding: 0.46rem 0.75rem;margin-bottom: 0;font-size: 1rem;font-weight: 400;line-height: 1.5;color: #6e707e;text-align: center;white-space: nowrap;background-color: #eaecf4;border: 1px solid #d1d3e2;border-radius: 0 0.35rem 0.35rem 0;} + +.table .head {display: flex;align-items: center;gap: 15px;} +.table .head .rateSet{ display: contents;} +.table .head .input {display: inline-block;height: 35px;padding-left: 15px;font-size: 14px;font-weight: 400;line-height: 1.5;color: #56687c;background-color: #fff;background-clip: padding-box;border: 1px solid #c2cfe0;border-radius: 5px;} +.btnborder0{border: 0;} +.blBtn {cursor: pointer;color: #fff;background-color: #03add2;display: inline-block;padding: 6px 22px;font-size: 14px;border-radius: 5px;} +.gnBtn {cursor: pointer;color: #fff;background-color: #56687c;display: inline-block;padding: 5px 26px;font-size: 14px;border-radius: 5px;} +.grBtn {cursor: pointer;color: #fff;background-color: #56687c;font-size: 14px;border-radius: 5px;width: 30px;height: 30px;display: flex;align-items: center;justify-content: center;} +.creditBtnWrap {display: flex;gap: 15px;margin: 0 0 45px;} +.creditBtnWrap a {display: block;width: 100%;font-size: 14px;color: #323c47;text-align: center;padding: 14px 0;cursor: pointer;border-radius: 5px;border: solid 1px #0494b4;background-color: #fff;} +.memo {margin: 30px 20px;} +.memo textarea {width: calc(100% - 40px);height: 157px;border-radius: 5px;border: solid 1px #c2cfe0;resize: none;padding: 20px;} + + +.creditPopWrap {display: none;z-index:99;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);background: #fff;width: 500px;border: 1px solid #e3e6f0;box-shadow: 0 0.15rem 1.75rem 0 rgb(58 59 69 / 15%);} +.creditPopWrap h4 {display: flex;align-items: center;justify-content: space-between;padding: 10px 20px;color: #56687c;background: #f8fbff;border-bottom: 1px solid #e3e6f0;} +.creditPopWrap h4 a {display: inline-block;background: #f8fbff;color: #0494b4;padding: 5px 10px;width: auto;} +.creditPopWrap .creditPopn {display: flex;align-items: center;gap: 10px;padding-left: 20px;flex-wrap: wrap;} +.creditPopWrap .creditPopn span {width: 50px;} +.creditPopWrap .creditPopn > input {width: calc(100% - 107px);} +.creditPopWrap input {width: calc(100% - 45px);height: 35px;padding: 0 0 0 5px;border: 1px solid #c2cfe0;border-radius: 5px;margin: 20px;} +.creditPopWrap > a {width: calc(100% - 40px);margin: 0 auto;margin-bottom: 20px;} + +/* report */ +.repSum { background: #f8fbff; font-weight: bold; } + +/* game manage */ +.activeY { background: blue; color: #fff; } +.manageTd { color: #fff; font-weight: bold; border-radius: 10px; } +.managebtn { padding: 8px 15px; background: rgb(91, 172, 232); cursor: pointer; } +.manageKREN { padding: 5px 10px; background: rgb(192, 192, 192); cursor: not-allowed;} +.manageY { padding: 5px 10px; background: rgb(91, 172, 232); } +.manageN {padding: 5px 10px;background: rgb(247, 132, 135);} + +input[type="checkbox"].set-switch { + display: inline-block; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 0; + cursor: pointer; + width: 40px; + height: 20px; + border-radius: 3em; + background-color: #f0f0f0; + transition: background-color 0.15s ease-in-out; + position: relative; + max-width: 40px; +} +.set-switch:after { + position: absolute; + content: ""; + left: 0; + width: 18px; + height: 18px; + background: #fff; + border-radius: 100%; + top: 50%; + transform: translateY(-50%); + transition: left 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275), padding 0.3s ease, margin 0.3s ease; + box-shadow: 2px 1px 5px 0px rgb(0 0 0 / 41%); +} +input[type="checkbox"].set-switch:checked { + background: #03add2; +} +input[type="checkbox"].set-switch:checked:after { + left: calc(100% - 18px); +} +.toggle-wrap { + display: flex; + width: 100%; + align-items: center; + justify-content: center; + padding: 4px; + box-sizing: border-box; +} +.toggle-text { + text-align: center; + font-weight: 800; + color: #ca1717; + width: 50px; + display: none; +} +.toggle-text.on{ + color: #0c960c; +} + +.nexuswrap { + display: flex; + flex-direction: column; + align-items: center; + gap: 10px; +} +.nexuswrap li { + display: flex; + align-items: center; + gap: 10px; + width: 70%; +} +.nexuswrap li > span:nth-child(1) { + min-width: 65px;; +} + +/* apiset */ + +.table .saveBtnArea { padding: 0 20px 20px; } +.table .apisetBox { padding-top: 15px; font-size: 14px; } +.table .apisetAdd { padding-top: 5px; font-size: 13px; } +.table .pointTxtBlue { color: #4ba4ff; } + +/* intro API */ + +.table .head_sub {padding: 5px 20px 0; margin-bottom: 0;} +.table .head_sub h6 {color: #56687c;font-size: 18px;} +.table .head_sub.secondSec { border-top: 1px dashed #c2cfe0; } +.table .bodyflex { display: flex; } +.table .bodyflex .table-responsive:first-child { width: 30% } +.table .bodyflex .table-responsive:last-child { width: 70% } +.table .topline { border-top: 1px dashed #c2cfe0; } +.table-responsive a.blBtn { color: #fff; margin:0; } +.apiCodeArea { padding: 20px 20px; background: #002b36; color: #2aa198; /* 기호 표시는 #839496 */ min-height: 250px; } +.fix-content .apiCodeArea { max-height: 250px; overflow-y: auto; } +.table .inputTxt { margin-bottom: 20px; max-height: 350px; } +.table input { height: 32px; text-indent: 10px; font-size: 14px; width: 100%; } +.table .inputTxt textarea { width: 100%; height: 290px; border: none; resize: none; } +.table input[type=date] { text-indent: 5px; } +.table .tbIntb { width: 100%; margin: auto; } +.table .tbIntb td { padding: 8px 10px; } +.Ybox { display: inline-block;padding: 5px 10px;background: #9ec5ff;color: #fff;border-radius: 10px;font-weight: bold; } +.Nbox { display: inline-block;padding: 5px 10px;background: #ff9e9e;color: #fff;border-radius: 10px;font-weight: bold; } \ No newline at end of file diff --git a/src/main/resources/static/css/popup.css b/src/main/resources/static/css/popup.css new file mode 100644 index 0000000..a72e60a --- /dev/null +++ b/src/main/resources/static/css/popup.css @@ -0,0 +1,69 @@ +.table .head {display: flex;align-items: center;gap: 15px;} +.table .head .input {display: inline-block;height: 35px;padding-left: 15px;font-size: 14px;font-weight: 400;line-height: 1.5;color: #56687c;background-color: #fff;background-clip: padding-box;border: 1px solid #c2cfe0;border-radius: 5px;} +.blBtn {cursor: pointer;color: #fff;background-color: #03add2;display: inline-block;padding: 6px 22px;font-size: 14px;border-radius: 5px;margin-left: auto;} +.gnBtn {cursor: pointer;color: #fff;background-color: #56687c;display: inline-block;padding: 5px 26px;font-size: 14px;border-radius: 5px;} +.grBtn {cursor: pointer;color: #fff;background-color: #56687c;font-size: 14px;border-radius: 5px;width: 30px;height: 30px;display: flex;align-items: center;justify-content: center;} +.creditBtnWrap {display: flex;gap: 15px;margin: 0 0 45px;} +.creditBtnWrap a {display: block;width: 100%;font-size: 14px;color: #323c47;text-align: center;padding: 14px 0;cursor: pointer;border-radius: 5px;border: solid 1px #0494b4;background-color: #fff;} +.memo {margin: 30px 20px;} +.memo textarea {width: calc(100% - 40px);height: 157px;border-radius: 5px;border: solid 1px #c2cfe0;resize: none;padding: 20px;} + + +.creditAllWrap {background-color: #f8f9fc;display: flex;gap: 20px;padding: 20px;} +.creditWrap {margin-bottom: 20px;box-shadow: 0 0.15rem 1.75rem 0 rgb(58 59 69 / 15%);background-color: #fff;border: 1px solid #e3e6f0;border-radius: 5px;} +.creditName {display: flex;justify-content: space-between;align-items: center;padding: 10px 20px;background-color: #f8f9fc;border-bottom: 1px solid #e3e6f0;} +.creditName li {display: flex;align-items: center;gap: 5px;} +.creditName h4 {color: #4e73df;font-weight: 700;font-size: 18px;} +.creditName input {height: 25px;padding: 0 0 0 10px;border: 1px solid #c5c5c5;border-radius: 4px;} +/*.blBtn {cursor: pointer;color: #fff;background-color: #4e73df;display: inline-block;padding: 5px 10px;font-size: 14px;border-radius: 5px;}*/ +.rdBtn {cursor: pointer;color: #fff;background-color: #e24747;display: inline-block;padding: 5px 10px;font-size: 14px;border-radius: 5px;} +/*.gnBtn {cursor: pointer;color: #fff;background-color: #188b56;display: inline-block;padding: 5px 10px;font-size: 14px;border-radius: 5px;} +.grBtn {cursor: pointer;color: #fff;background-color: #666;display: inline-block;padding: 5px 10px;font-size: 14px;border-radius: 5px;}*/ +.creditInfo {display: flex;gap: 40px;margin: 0 20px 20px;padding-top: 20px;font-size: 14px;border-top: 1px solid #e3e6f0;} +.creditInfo.game {gap: 20px;} +.creditInfo:nth-child(2) {border-top: 0;} +.creditInfo ul {width: 100%;position: relative;} +.creditInfo ul:first-child::before {content: none;} +.creditInfo ul::before {content: '';width: 1px;height: 100%;position: absolute;top: 0;left: -20px;background: #e3e6f0;} +.creditInfo.game ul::before {left: -10px;} +.creditInfo li {display: flex;align-items: center;margin-top: 10px;} +.creditInfo ul li:first-child {margin-top: 0;} + +.creditInfo.game li {margin: 0 0 10px 15px;float: left;width: calc(25% - 15px);} +.creditInfo.game li:nth-child(4n+1) {margin-left: 0;} +.creditInfo.game li span {display: flex;gap: 3px;} +.creditInfo li span:first-child {width: 140px;} +.creditInfo.game li span:first-child {width: 100px;font-size: 12px;word-break: keep-all;} +.creditInfo input {height: 20px;padding: 0 0 0 5px;border: 1px solid #c5c5c5;border-radius: 4px;} +.creditInfo.game input {font-size: 12px;} +/*.creditBtnWrap {display: flex;gap: 10px;padding: 0 20px 20px;} +.creditBtnWrap a {display: block;width: 100%;font-size: 12px;color: #fff;text-align: center;padding: 10px 5px;background: #4e73df;border-radius: 5px;cursor: pointer;}*/ +.companyList {display: flex;padding: 20px;} +.companyList li:first-child::before {content: none;} +.companyList li::before {content: "▶";display: inline;margin-left: 5px;color: #858796;} +.companyList li:last-child {color: red;} +.companytable {padding: 20px;overflow-y: auto;max-height: 400px;} +.companytable ul {display: flex;text-align: center;font-size: 14px;padding: 10px 0;} +.companytable li {width: 100%;} +.companytable ul.head {background: #4e73df;color: #fff;border-radius: 5px 5px 0 0;} +.companyMemo {padding: 20px;} +.companyMemo textarea {border: 1px solid #e3e6f0;border-radius: 5px;resize: none;width: calc(100% - 30px);padding: 15px;height: 88px;} +.creditRight {width: 100%;} +.gameCredit {display: flex;gap: 10px;padding: 20px;} +.gameCredit ul {width: 100%;} +.gameCredit ul li:first-child {margin-top: 0;} +.gameCredit li {border: 1px solid #e3e6f0;border-radius: 5px;font-size: 13px;margin-top: 10px;} +.gameCredit span:first-child {background: #4e73df;color: #fff;justify-content: center;border-radius: 5px 5px 0 0;} +.gameCredit span {display: flex;justify-content: space-between;align-items: center;padding: 5px;} +.gameCredit input {border: 0;width: 50px;text-align: center;} +.gameCredit em {cursor: pointer;color: #000;} + +.creditPop {} +.creditPopWrap {z-index:99;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);background: #fff;width: 500px;border: 1px solid #e3e6f0;box-shadow: 0 0.15rem 1.75rem 0 rgb(58 59 69 / 15%);} +.creditPopWrap h4 {display: flex;align-items: center;justify-content: space-between;padding: 10px 20px;color: #56687c;background: #f8fbff;border-bottom: 1px solid #e3e6f0;} +.creditPopWrap h4 a {display: inline-block;background: #f8fbff;color: #0494b4;padding: 5px 10px;width: auto;} +.creditPopWrap .creditPopn {display: flex;align-items: center;gap: 10px;padding-left: 20px;flex-wrap: wrap;} +.creditPopWrap .creditPopn span {width: 50px;} +.creditPopWrap .creditPopn > input {width: calc(100% - 107px);} +.creditPopWrap input {width: calc(100% - 45px);height: 35px;padding: 0 0 0 5px;border: 1px solid #c2cfe0;border-radius: 5px;margin: 20px;} +.creditPopWrap > a {width: calc(100% - 40px);margin: 0 auto;margin-bottom: 20px;} \ No newline at end of file diff --git a/src/main/resources/static/fonts/sunn-main/README.md b/src/main/resources/static/fonts/sunn-main/README.md new file mode 100644 index 0000000..286eb30 --- /dev/null +++ b/src/main/resources/static/fonts/sunn-main/README.md @@ -0,0 +1,107 @@ +# 수트(SUIT) + + + SUIT + + +
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 100;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Thin.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Thin.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Thin.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Thin.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Thin.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 200;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraLight.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraLight.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraLight.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraLight.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraLight.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 300;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Light.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Light.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Light.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Light.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Light.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 400;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Regular.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Regular.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Regular.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Regular.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Regular.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 500;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Medium.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Medium.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Medium.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Medium.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Medium.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 600;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-SemiBold.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-SemiBold.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-SemiBold.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-SemiBold.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-SemiBold.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 700;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Bold.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Bold.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Bold.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Bold.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Bold.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 800;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraBold.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraBold.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraBold.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraBold.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-ExtraBold.ttf') format("truetype");
+    font-display: swap;
+}
+@font-face {
+    font-family: 'SUIT';
+    font-weight: 900;
+    font-style: normal;
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Heavy.eot');
+    src: url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Heavy.eot?#iefix') format('embedded-opentype'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Heavy.woff2') format('woff2'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Heavy.woff') format('woff'),
+        url('https://cdn.jsdelivr.net/gh/webfontworld/sunn/SUIT-Heavy.ttf') format("truetype");
+    font-display: swap;
+}
+
diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Bold.eot b/src/main/resources/static/fonts/sunn-main/SUIT-Bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..9ef7f87b06074cca9c74cc3cb43b1decf85acfca GIT binary patch literal 432512 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%0DHl&#IZb=%YH4(fDMAl2Kxo~Bd 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 E0pBf2yZ`_I literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Bold.otf b/src/main/resources/static/fonts/sunn-main/SUIT-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..48390d046caa7bf5fffefb585eab24fe969f534d GIT binary patch literal 290236 zcmeFacU;rg_dk9P;sQ}{qN1XL6BSK>FcV0Cga8Qy6lYrQJ&Af10&zBBw{q z-@UWKhv}~Y?9|i4=g%@7%t8Zb7+TB-pB~}Wa>H(bp?0ikG;8MEsJDk<1Y4g!>$e6_ zg6UwUApzIdFMd<}Sv$9<(5%@VW`Q5uPS$er?a@D9H*eEy7V~WhMq~xhdEI7mEI1l% z17D+R@G$xbq(+~En^7qEG@A^bM!$d*TQQp(j4*n_e8w<)4EQz^fOoU0tp6O-XEJ$# z`Dj37^fmB|Zh)-WC~!1B0Pf9P!Liv07C#fLjnbGeFux5f{stDug6Ye_$EcRYea!Tm zEY30DH8Ta7(Fz!5G#AA95V{%7V|pkI!#wD%vrl1bY7Kty>g`b@AMk}=!G*0!W)uNl zMj_01J&U!9`OgM-d;>$UjE$QFVxuUqZRQ1on4hiDWQNW#q}dm+pW$ln5*`vS)>m@$a; zvIDc%F}*#LB@EUK-5L5Z_%QTk=)*wq1~3R2$cG?c<7j?MhK>wf89Fo2ctaT4$d^FA zoKFv?chk4Ym-Fe#bSnmuPjSdjajB2mlqXs%#h`uB+9_`D{}D7d zon2GVIX1N!wyB@iKsIhpnxEFgwK@Gm>*8!A|5tQkV`$xUew07TFG<7oQJX+{=FXqm zG#9Pwf1Q)_=kiT$+9%Zlospehr)!dGoNU~gk`JBxKn8n;whWXz0_}xBd*F0#Z(N&l z&E=cMP(LTB252nVn#LttI|lM0aQi2nyAH^Qz+Fd_L#kCSCMRh=Zamc*H;&@a7|Jns z?*CL$90GUEl1{N`-&}4ej|9p$r<0`lJ_hcrxPET!w0@d{B;|_BYg0+p z^>eZARW?}x@w&Inu%d+OVUHm;A8bgms4 zxcfAn58dkt+_RdlZ#rYLHJyX}X&#bXOm059XHd;h-BKUvus6^-o1q-0_a{FBjU^bid8|#(&A$UZU%CE& z64QzK(-_(_<%I*~ngiLmYm>V^=^CXorDr6a8|8-^%SrCsD34^LGooh&`EsAn=rbCD z8)GP&j;A)o;^res*DS%4LHH5SebGY?y2d!2lavEa=Oo!E=Eop1=rfGZji+($dLQy7 zonSbQbXqg{lKyvd(i|U(`LTFSW6}9?pgeNAq2xZ>(76(*P1h`4lay=2&lQ|*IQ~Pr zH5>OKdr!UHoJrCN;rn#mzmsi6+!y4+weCR$yepEwr{nI%TNGEWy z$%oSo>cbdp0D=<`5R3}rR~*(omhH}y62`BZor}%+Q6Fcc zm=ufi=Oh=4yH|E)KAcYbHU!zJO+EzDDJIQ9acEvH9!Z+Ra2^^@x#Hq9ou`f7pNq$h zrFPT&8=jBhS#UayAs-Gj7p0AtIb9&Qw+&byrO!NLX4AT2>($K$YY;Mi8R?`2;99-O{lFJDf z(@+}bf~zU25jsy!a%ao+b8Sx2b=CA<#MPOhq}rkT9e4eaZI^Bv!To~x{1i{%r=WK@3&Y+)s=~++xbU&hJAA#-zbnSBYFz&fa zeWcSFbN!@K{-{3aImA7ixOUUH6qAcVy5U%g#hne=>Dk6f&d!|~N$&HA;WLrur8Y?d zjiWd;C+S>G(pc_Hn&!W0o6duLxp>@KIB8h(w63OS#nt$S>ieIrf!0K|Nck|VM?;VNFPt*9c=BE4OVsqBTI@hMNHDjP$lKdwyVSY63LohY4b1|t#NdG%eQ`BPHAib9AF>&aqjRM7a^S8f zuFXlZ)AdN}A<$<&y2iM6Q%Syt>m{A$=Rj>PUej1q8?;UW_0ifn&^%2Q_D?zGbWS$Cwy4e3S<`wnyp9a>|Dm`PpY}lOruEZ3%OiYTsCZz&edQ4u^dJ zlw-1cGKl^Q1p0mtCO-ssW+zae7X!tUGRX9j(`hcUaduz5?!u(_Z$RS-C9U#`vBxHcD`e7H4p`!-xB>D(BS zoX*7~Nin!MO=EE5xp5?$=FBixq|>#^?d?P7+0_4^v}t|ZHOHOn->u_gePsX8b;sFg z-P{@fH%YO$+%=Wl{yBToxRh7g&&Tkg{*TQ^vAKCZG>*#~*Vi--wg1T(&^2rLd8esP zwM5q-w-(a5^C!t&N1W|r^M1_Ubd40>5cHg;&qf5QQ<5|%caHR|U-pjYV50zr`3!yxBE3{FDTKks1HkS773`hT z0St>7JQy4pdNDXLxauXJNjG=^eQ>@Wd!Y~f_SZIc2OipkH4cMM(1kr?ykH_ufQd#< zFdUyjnvos*d$Ganoztx_A9G+RgO|}>2*;M-fEMf>)K5T2VDG+qvi&;ZQHW&l#3gzx zg~_;-^$mb87$g`5lNdy}gZb@XvG&0<1|K}c{0^}(JDGhac;QnR$>4>22u2=wU_Qv{ zz1imDA=uarMjBbcB=(-`q-H1B^YspUcCq;xzGc|JFofZ#f!xIOkqp}yM$!0Y>!3Hw zy=SxT?EQ{A*jyLWg1sMC!q$)rO5L0^e-JD%7Qjg3VQkEI5UKOiu>JM}XJZljJB1z~ zBWctQ3XJMmE^5GAC(puUdMB4*n$Z?ev3Gbqje0|W<3S*&7#!GoW;3j2YjAxhb?tRb zuVWx-!}?k?x%>lgW;PBhn9gB5(=!=J?$FEkZOSRVy(y)O(Pe8wOdc8SVf`wjh z!R!OsTjpronvJkyZ*jlVk$I2T>qbnUq}Q9l0GOfIjiEj4*6Yo|9!~4^7R-K8ueSsN z{G!)eK`ZQ|*IPp=4$|vwpdUWb>t;r~jk@Xew!k-z)9dC2>#_L1^{|av8Q)Zml!bWB zoHmi9H7TPa=FFWkbB6Wsq4xHUu0GzL@+nc&AcrC30AiR4vtR+tfhjN79>9^2^*7|OJfAcGL_Vq>PkL>SI&_UyMKxa#@>AyBW8*O2#q+&Js^mQfJF zW}M6BoXH|v|0R+Sc!MX%Ss$(C-5gwm55=6q;#fmCLllb{&ejzH)0vzDQ<-fhJF&m+ z;oWYyU0K5z=0i4D<|k+R95y~&w<=$@%LObuk-8Zsv7VVMGDV{ib6^7Vv<9i(Tcwk< zmI2IzB1~j{)7WooU6!Y_u{6&VHZGj4_1)g*>gJ`0Gg-zK=pxTxCt=OrpQjj;SuK*z z^+zy`GA7se4%D4l6kDYW3}e6NzCW#bOn=v=OolMOcbW3hMWEc$tdm&ZS1cCo+FI{1 zO}EAfHqTsUoyhF8Zp!N%rbn?zEM==6$!4auC%bzEv!8*i zEn~GuV-?Ior>0<5iEe~Ur@!m-VSVI3hDkZ=B_E0%!B+JyJCvsgn9njpd7aCCQzeph z3af%ytR|-DR!;j@F^%&1zvtDOo!+~s+}OFgvzWl5PhyzBqE6G-$vh?}vw3KpbY64V zI;bAFYmip>u4ZWrt&;X)Sf|!({7m>#H6)v|(Bm_IwQDY{y;W+ymHzZbfqX!dt^d-n8TN=Le5>ZGxt z1%TPbRsbf=FS0n!Ac9XI48DdX?5T2+-S1)`5mF%?8sV9BC+n`(J*@j#^Q>L1qpVk1 zpRrc=Zq~bX?>@cv_37GYSD!sLGi>s0F4`WoJ#L$5n`)b7n`>Kad%?E4UyFY2`t|A; z-fu#`h<;!6o7V40{|@#R_ML`L7-2PHks8&;YEyL=bq}?*+D1J@JzVXqc2kSga&>?@ zL>;OgtBz35R!6DltG`w+SFcfTQg2i5R3B0wRi9O>)p6={b(T6;U7#*jm#OR3jq2;_ zo9a92U)1;157m#=f2iL?L$q;pi)gcGi)hPet7z-!KG6fCheSI>3!>eky`z1jWzov$ zkm%6p@aPHA5z*75XGMP*y*PSl^or>9(VL>TMIVYj5uFyD8(k1x99`k z&FFj4FQQ+^7{#=XF^w^c=@>ISh94t{af$Ja@rm(^35-$3gv5-B85a{C6A?2dW?Iaw zm<2J5W7foMj>(S6i7ALFkExESjj4~h6mvP|PRy?{_hX*KJdb%D+d9@P);xAdtbHs$ z);(4jD~|P!mBlJ!$Hhj(E{I(gyDD~F?Dp7Qu?J(*V>Piku_dt=Vk=_nVlT#Cj=dZE zF!o98^Eiw%j%yQV9@jChN8Ero`#85a?>K3kUz~qjVBE;K(Q#wq#>Fj;TNbw}Zgbq$ zxb1QK;||6hi#rn+8y6p!9G4cSiPOfF#8t=D#a)cM9(N<|R@}Y#*70rP&Eq@7ca856 zZyP@#-Y(uD-Z|bgUJ@^j4~icd9~wV4J}iEA{DSyJ@hjrj$8U_^9KSPuZ~Vdd)A4cf z1@UF^Rq=K4SK_b6Uyr{Ve=q(){EPTk@oy5EC$vg1OX!r)C829Vj|A%keu7&;usvaC!v2J#3C9yoC7exAC&VQrC1?_I6G{@w5~>nv5-uhDkZ>j8 zr-a)HcM^V2c$)Ak;Y}hY8Yi|&v`FlfXq9N4I4UtTactsei4lpD6Q?9jO`MT9J25J8 ze&X`P)rp%Dw`)>gOZ0P4^QSN3z9vPy^{lymB}H= znAdFsGayHxvBUaE7dYpO@8BvqQ~pE@!% zEOlaPWa{kHxvBF~7pE>uU6r~y^_$dvsRvV!q@GEQPEANnPEAWKN-asPOTC}^AoWS= zn>0*ooz^DJJgsY5k2Kq~0cmz=4r$J5qBKcbP?{=jTv}M##I)&YGt*|LEl69GwmEHQ z+Uc~ow4}7OwA{4(G;La0T2)$I+Lg4cY1h;4rrk?>koF?&Roa_$<8;e(>vWrR_jFOZ zB;7w2c{v=~?OL({s~H(#z6o z(l4c7O~0OgEB#LTz4WK)FEcR1IHOfYrwr!|w+vB+SB5M@o)MTaG9xr&Y(_-Jl#JOK zQ5o|yR%fiu*pzW5L!FV3k)Dy6k(E)9QJirp<66d(jMtfvX`E@6*)G!}(=yX4(>ilt z=HN`nOhKkcrgx@qrYticQ<)i(8JZcMIUzG5b6V!Q%ng~FGPh-($UL2?&P>Wo%}meC z%`C_)&aBF;&8*M7ocSX2wFWdsn${XKO*@T+#!}NuW2@<}8K@be8Lr`L1R76`w??K3 z&?q(IG~t@nnsu5@nk|}LnmwBRnxmQ%n$wziO|m9SlcOonlxwOr^_q*C%bGtl&o!?# zZ?l?bwajXrWuDbB%Qnj{OOz$c^3PIcjmesr6`2*4wLEK8)`qO@Sv#_JW$n*8m~|xU zL{?l@QdU}4ZdQHP#jML&ce5U3J;{2W4cX1In`fJ4n`d{-?vdRqyLa}0Z0~GowtseD z_Q>qf*`H>IXHU$I%>E*KcJ{pN#o5cUS7mR`-k!ZL`(XCz?CR{g?2FmgvTtSIJCEmE zpYM9U$9d25lJnB@LFZNHN1oq#KK{J+eEIpR^Y!PioWFYhdX9CDTTW0;XwKN2u$(D5 z({r}x?9ADlb2R68&dHqUoVc8noUEMO9BocXPFYS>&ZV3yIk$4|Q?7NcO>Y0(A-ThI9dn&?-Eu{_vfO~&k-4F{V{;>Nr{vDgjmn*$yF7Pw z?v~tbxjS=r=N`&EoO?9)WbT<Xb@8mwreVqF=_e~z; z8Rwbhwac@}>zvm$&nnM4Z(!cwydinR@_wf1dxkpjCl+flYy3fqenLz`a0PFs>k?AhKXu!MuV61uq+JRa-t-aP+>#B9v3bo$aKYTPTNSn`G%xI0*rTvt;ef)Sh4zIGg-(Ueg|3C3g_1&PVNl`7!qCET zg<*x$3uhNDC|p#ytZ;qd#=^~oy9)Of9xOarc&hMBVSHgyVMbwYVSb^uu&A)Su&S`G z@JiwJ!n=j{3Lg}{D124;rl@&QtD-hVor<~?buH>$WK%StXm}B?$f3xo$fHP9Bq{PM z3Mf((g%*u13M-mYG_`1Y(Y&JhMN5iS7i}ooQnbBjXVKoG{Y6KMzAK6@iYrPg$|}k& zDk&-}swk=|x>$6j=w{KKqI*S8i?P_a*reE^xI=O0;vU7;#Wux5iiZ^sFBTNL6^n{x z#R0`3#j}f}isu)9UA(+_W%1hL&BZ&54;3FSK3aUbSY4b|Tu@wGTvl9P+*o|6_l}MeI*A< z4walJ$t@`;DK053sV=E4X(;)=v20RVWZA5;d1d>`4wfA$J5v^2mRy!rrYX~w6_u5gRh8A1 z-7LFT_MjZgTbH*fH!ts6-o3m>xlQ?ia=UWpa#8u%^04xW<k_=DvT>yRkW$-SkbkjcZE&GfQsQ2yb6bk zF%@GgKChTkF|}ew#jJ{X74s_=RjjU9Td}@kd&SO*y%k3*PF9?*h^~mM$gL=-xK(kd z;$FqmiWikwXMYE1y=rse&rwsy0;?RhCs&Rn}EQsvN2W zRc=+@RlZfSDrHqjRcKXM)%2=aRdcGMsuou*uUb`gvg&k|x+=LUwJNUGse zt4~y)u8yxxtWK`ZsMb{HR9~!qQvJO8RZYv9)-~oeLu%}6_%)6-?lr<1&l+jX*qVto zU)3zHSyi*HW_!)9nu9e*YEIOsYvOCtYcw@EHF-59H5Y2?YA)7XuDMn7u;xk4^IEKJ zR@=O`ZLN82$J)-dJ!*T`+SU%NwX3zSb*^=<^{!o9yR3Fq?dIC;wfkxh)*h)nQ+uv9 zx;D8styWX3tu3jos=Ziyz4k`!{n`h$Pio)PzOBQ$)^$DVM0Jw7v2|f}6YHke&8%Bc zx2SGe-HN*PbsOt8*X^u3Q&(13RaaMcx$bJ+ow|E<59*%Ry{datZ(QH1zD<3n`Y!eE z^`d%7eL%gUKB#_7{n+}j`iS}|^;7Go*Uze-S3kdgQT^)r_4V88ch(=TKUrT=UshjL zUsHdn{)hT2_1Eif)!(VVSO2vBS^bL!Y%p$U)nL)ksllqjy1}MlNP}~OTZ5>(0Lw!SI!=;964L2L^G(2c{+VG|k8jTw*8oM@HHCi_gY#iJ;q|u>K(CF4EY4mNB zH3l_?G>&N;*BIV7p)sOyO5?P~S&dPRiyN0Wu5aAbxUF$tqZ+l1+u-4Vv@5^Pg!HMTjn zg^bx%^lRR)Z9l7iVLE0vMbGS7*>@a1T*vHyF}s#(b9Gn7?E0$h)Wg(*|6q2r7_<9| zF}r2zmFo36W_M71Sbdr?yI6IqI`c2g?iyouKkJy??~K_!Rln9VyEf77449o=G+)Q; zBnHebOvmh|F=jV6dLd(W%cIxnnB76f>{6q1bj+^mFU;u0xDHV|GrA z*@0;zF{@%W#b|WQt}Lcf$LuaPVRkKb%+8K6yAiQ& zjM;fIW+!FLZfxwt*!g;9w@t_F(sazOh%vizJ+r$L`#{I+;61am(la~BduFH7GrL7P zX17Vl?DjHdcR22J+&RYV5*f40j4OyMimPJGt}*VKp4qjEH;r!>-#*?lzI%Kh#_R^i z^W&Z3MU2_`#w+7P-ZQ)TjM*)VU#DYs+y8^vUDh$XJ340fT*vH;8M8A@==cF<7nu;1 zurOg2V|LpZv)hw!gfY95e_?jTjM-H(W_MA~>~1n<_iMuAgl7qF65i^Voq1vh9kUBz z%gm*TjM*iIaj*i(q{|mEoGhlY1I%XHCV|GzGX19tlyY=at)73g=r_nLHV#e$$ z(l4g}z?j_)#_WDgf0F(z1N6*Jpl5bc#_R$zR61riF=KMZEFH63sbhAhGtOniWu(1l zb{GGK+3^{(bIp|KnVsUlGP|6=FuUiOuQT5=X4gt%s$+H?HQhBfdS++On4ObGq!BY_ z=g*kkSjOyDF=n@sF}t0N+3nLDVa)E7CQg&6(dd|6nWj?D?4B@Y_lhw)r^HDPvjA7FNEbj;35&+H_O*~uBR3t`M|Om-M!c9R*io0UB` zd!dfmZOY!7y;sNVsu;6tWX$e{j@h+3Z+X7^d6ACUDfP@QjxoD3#_a0OU;Ynf7s;62 zHXXA&qGNXIoYw9MRJnvQB+x%Af zZSp(ln4L}j0LJVh^~`R5{-O^syNit3U1iMf4r6vt{)5@M>6qO_9kYx20JD4Wj@cEw zHDGoFbj(hmXLb^;RIAdC){fPN>6qOt?Og35J+s@SXLft^%ucOM(xz!MwFNq6SEXZi z*L2M8o{ri5p?zK0oH4t0g_ecg3vC#)8_bv;PtWW`I%cOVR54~ZmNC0&g)zLg- z9kbi1V|FKW%r1^GyVSxQJ+mv*F}ur!R}1gxnB8+7voqE)yN)_$XRTv)_IhULre}8k zjM)Y0m|dif*+nsCx3Fks(b}R-McWv&+s&BWk)q>8Y8|uF6rC?B{s6NB#_U=an=@wD zsn|-#?CcDfowV4WF}qoMX19znyVb=T|HAAvdS+LrV|Lec%*o4_x>zJKX$LvCN%x-=YX4i%>yAEYmjM?=r>#t{af-=`KiH_NY zl#Tuiv)ijm$tWnvU5$&@sE$|H16|I%X&N3$vT1XLgHp%c5@uVZ#D)uL)~wZD$pjcvm0jxc6-sygnY%+5~F?A-ps z?3U@6-L}6lyEMk^&NF6L{GQp}ta+egcA#T+Z5Xrbz?hv?ZLeCJ+5wE&4XYK@y4Ff+ z7wMSYrrNEwdv(n2w2s*&>6l$XZSi|%cTdOcUh9}$tN&nj^BJ>S%9!1{f5hxMGG^zd zV|M;JW*4ewc9D8!H7;SD_#zW7xous zw}>&jbvkCZ*O1wn1OvRyWhi6_HwiWIp}*(@X#K!skcsIpXMf51B^BV8++P;`BKXDT z7u7F{yN~bwcDEAX&h0y2-HEzwciZ81?^{c6EqON%;MS;H0RT5I-K@D;cyrCo)i+n& zoO5&bO}`r#0lv?yG{2a2aePQr$efT_A=5&phD-^W91<4tS;&}>(IFurej&0Dafm3y zJ;WhoaLB-r{vrKBdWTqt^bF}9Vi{r)Vjf}=(mJGN2!?>_jp~)^x$3FvzUrRprs^lv zHPuzskE+Y6A5`C~>Q%L>DpjSbR8^wNSLLX(R2o%^DoGWiQmf9Wj;W5Sj;Qvl_NaEM zHmf$NHmX*uR;re(7ONJi7OK8fMX6@1CaJx5`W9s&Y{|t9UAV)eu!bRd-ca zRTotUReP0%s!j02;NOGq2j2_+Irw()jo_bxuLu7ad?ol|aAR;?a7}Pka7A!YaA9yx zaAxr4;7!5ngI5GE4_+3$G)bO*e-Z* z@SxxU!F__e1X~2X4SEsuN6_P-dqH=DZUhwv6$a%8Wd&)1GJ{fr5`*G`P6izgIux`& zXh+cYpbbH5gH{DC4w@S@Ehs$blc3O`(LtkvMg|21DT5S2{y{^7?1Bac^$F@7WF6Ek zsB2J{p!Pu)LFPg2g3N+UgN%ckDc>kxDPJfbDIY2yD1T8_Dl3#_$_vUOWuY=pnWM~B zrYcjEampB_T6t1=TzORat@40!qjI%!rE-~aq4I0x0_B&=xyo6}2<3RCTq#j{Dm|1= zN=K!Ga+q?6a*(pGvX8R2vb(aYvWwC}X|8OiY@;+$JX1VS)GKNfm5O3Twjy1TpomqR zQJhkoR2)$pR(z{Cs5qe5tJtO3qS&BVrC6a@rdX=@TCqSeUlFC4tC*vhrI@amrkJYu zLJ_HmP>ffMQ;b%GD0(Zb6+IO_6kQdTiY|)IijIm73JXPBMN35s_5#A2z?Xr)2i^_5 z9atGy9(W66_^otDsX4u=D-bsYXg@BE)84~I6rV);HQCO z0z(5;fx&@6f$~5>;PAlSfjt8)13Lw_4>SpE9oQ<+DBx|t>wu>L4+DM;xEt_u!0mwR z0oMYq23!ir4$uT-1SAF|1jGi!1gHbf1{@DK7H}xwK)~LB?E%{Yf&-KR0RjF2(g5E8 zuK-bidw^qrL%^^AEB_b%&-|bG-}k@g|EvEk{~P|-{44x3{geFT{g?PJ@?YTpm4B4~ zEdM}%p1-~S5dVJuef?4XR{lo*O8!j#hy1Dhf&9Mw7x@kOC3%CqR$eB*ATN~{$n)em z@^pEcJXxM7kC&g7pOK%GpO7Du@09P5ub0n}&yvrSN6IJ5KbMEe$H_;@N6HoQ0J&T) zk&ET-au@kf`4G9Sysx~syqmnM+*00NZY~GEmwrF{UGux*_q|`OUyWb2-vz&7KdoPu zpT;lKFWE2AFV63b-)X;7enFkvSqSGvT#|LY@94qHd;1Hrj!N9 zJY)iyt*oc4yUbE%E^8-iD{CcdE;Ew8l)jKYls=IDCcP`YBmG%=Q+h*sO?pLIFRhc- zO3S4Q(s*f{G+Me}x<|TGx>>qWxLGQPx=005M=4)AL~17;DD5w`m3EVM@qOz1*!Q9D1K(eLfAPKRd(-zP-)p{? zd@uUe_*VIr`xg3Yee-;Ce6xJN^F8T%-1n&OA>V_(2Yh$=e&f5+cd_pmz7u@IeaHKb z_6_j$^A-B?eMk7(`wsRU{=@sJcdd7|cZGM6ccHh|d#(30?=jvg z?;!6$Z>hJhw~u!#$$iNsNv)(xQZ6Z!?DIF zwvxUQYe`p$rKG*YTw*3^A!#OlBYrJ@DSjb-B7Q7>B>r7|U;L~1j`*^;L0l`Y5|@aJ z#5v+DafUcioFI-DpA(-EeINiUndvv4eP+c!+qA*hbt}+(!&ve|o+4dgk?q*Hf=2 zUXQ#UdOh&^&Fg2cTVB_^e)RgmtIn&&E7fb4*AB03UR%93c&+nV;kDFjk=H!0FT5su zjrI!i3iNXFa`57Ljqn=cHOR}xtB+SNuZ~`3o-aKgdp_{I?|IwvvS+bpo@b6{mS>7* zqGz<{x1I+)cY3b&{Mz#?Pr0YJr`S{EDfD#pbnzVFIn2|})7G<_r=@2n&$gaso^3o$ zJzIJ<_e4(+{V94QdL?=;dMJ7z`bBg{bW3zYbXD}D=!)oj(IruXs8)1AR3ge3<%)7d znW79)x+qPQB1#mgMdw6kMJGhZMMp%3MF&KCMY}{hM4Ln#MXN=tL@PwgMN36XM2kg> zMDs;oisp)@iKdFCh$e|9ipGdSMZqGaC_v;R@)k)%9wIl9vuK29xX4~KNHjpyPt;pv zE$SueDe5M&6m=4{6`6@zikgdzgs+4zg)fAUg%5?l34a#e7TywG6LQkPk=q7X!@`XI%5aA$U zf1$Oor_j>ljmImG=N`{I9(g?Uc;Ip0<7bbn9zS|q@o4m@^U!*n_t1Exdn9xL-8JrN z_YLmr+*i9VabN8ImHPzuaqfQZ{oQTd`?_1XcX#jR-r3#Uy}8?;Zoj(Sbi3~Mqg$g} zkz2Z3qFcOMjN2)<6K>zSZFHOC_Jy0mjqhgb*4M3%8@T@I`r7rW>l4?ps^#t~*^fyKZt_B z&T*aT8s<92b(E`*tH{;E)zy{n%5xpzYUeu8wV!J@*N!ePT>fx*>~hcLSC?O0Zo1UF zl)4nVXkD^hvRpJSDK5ud4!Z1jS?RLOWwFbbF7sTXTxPgTb%}HdcNyn0+GV6mu#4Qq z&qe0a-^JFYuS-vt9xhfc-CZnQI=ggqF>`6-V(QY|rI`yjzi@u;{D<>n=ZDVMov%9Q zIA=R+oRgiCoMW8T&S#vDIUjXC;{2`i0q4EWyPUT;Z+2emJk9wF=Sb&p=P>8boX0qi zb`Eh4aF#p!IZK@Fod-GhbvAc46Z|1~B6ukHMQ~SeNAQ#2n&66{K~N(o6O;%F1sQ@Q zL4qJwa9VIm@SWg@;E-UyV25CxV2xn4V3lC8;A_Er!5G14L5Ltg;4hF1yai%`r@&R< zBH#-~2!;s;2>J_p3(TB;b-L?x+v%3mb*F1i-#cA&s&}ezDt9V#Ds;+sN^**JI_tE< zX}i-_r*%$ioz^(5a9ZxP#A&jVzmv?#*U8Pv)ycuBo0FweC#Q~1?VQ>=nK`v|eByZD z@dw9R$7;t4$0El9$85(;$27-y$7sh>jwc zahBsu$0?4Hj*}cC9K#$xa~$XRspA;O(T++-g`>=|gQJCGTgR4;EgZq&Pls0yPaGaQ zJaV|_@QcIG4%ZxhbhzkH?NH)S?2zM-?U3n^#PE zd>kYWUJjlPZVs*vE)IMLYyO}7SN!Mvhy369Kl5+$uk*j>U*tFPtN9iD3;Y6pKL0TP z5Pv^^2mc%XcK$~Gdj1;z3jQ+wQvMSDBL3I>`TQ^WGx;<4Q}~nkq5RQ&2R@H)&mYDg z%pb%b$nVeZ$G744=6BJqgcro~<_UT3JQp61H-a~uH<&k&*N@kW*Mn!p>&)xO>%cST zwdI-d+VEQQTJnr}IO64qXCoet_;NJ}Vn}L5b@NWkGe`Ekn5=tOawXOpc7Q&O2j0 z!hXaEYt_6NGlp90zPdeSu64L|)SU2%5!1uxOtqdl>0RghuXU61e~V<_Z%5OC@4oD4 zI@okD+a~+oBm2oXwFA(%BF_Q*4A=s&H{e2G|4st?Cl%QLx`ofd$P|p6!DuWPodKio zp_vexEeGR)U@QXT$zZ%1j5EOaH)w7F&3Vv#0yIAi&9kBTC20N-S{OqM2WasXwCn{f z9iinoXn7o3UWZmap;Z{PiicJ|L2EB)JqKEEfYzDN`e$hU6iht8WG0wIgURn;$^%ms zn7)KIL!r%Q&}K2TIR|a7f*FEYUohi=nG(#_g4rH0`w7}QL0dm)`!%%P0d0$*?Q>{n z5A7C1yI5%V0L%lxd=i+i2J`b^(E=<4V6hS`G+^-v+WSNMb_<><8|oN9XgGNPTxQ$HFQdWPS>E* zedzQ8I=6z(U7+(A=o|^1E1}CU=&}O3l!9d^uv`I_*P!bd=(-8I-hgg?&}}Pp`w6-S zLie@My$ZVD1}l58S`Jp#(4z);4|@F$ z)*`TG-`I`^>qpRg2=tx_y?=l{Hqd7}^htw0ub}T_=vxUk?Z9Rd*jxhJ&R{zVY|nx1 zpU_VQ{W73`7wEqM`j^6h&M;s$3`m0kFJPbu1~$SVTNo4tgS0T%3{;80>dxE2p1S} z0C-lwivr${z#j+vAHX3T9L|Ab2XI^fP6$q4f}k@9_JQCUII}<6{05x=0GBb~k^`;| z;F=fX47UY9LJ{IKrKz;-K-N1hX_?LqJBM2A_0h1u$Fa+F! zKsf|%fWRtH^asTbP`m);Xiy#lWeO-uA;=Mewn5NY2yP9*A_(3Ks@9;|3aSSX;s+ro zVPqQ^ISWP>!6-hA`UXZD!RW6cv@L`lfY1~OEr&6#FlG#lxdNZ?;ghxS$$j`#2%qkN zPanb9P#9YSl3&j!I~yCJMSgdKB;c4(W4?bT5pPz;a z9bm#Jn81`bFmWVI{2d~EAmS)Q{0WoB!=!qc{3%SXgUBF=JPT8-V9IXzq7!_fhN*5a zH4&x_gK3R0eF;pz1vAFNj2~bo`==Bx!>q+Hs|sd!fZ1U%I~r#H26NaymQV_FZD8(p zh-v{*b0De_=E-257QUPeU%rH|#=%!*FkcAsb6`OiSg;Ge?hjutgs*>ug?_Lw6&BgS zqOV|4H7pK;#b;shV_4z@OEO?-OIW%PmYKk^k+AGAEPDgXr^517SOKuY7gijF6>nkX zcvzVOs~lm~8Cdlrthx`YoniF^SiKuopM=%F!5TTNSqp2@U`-LM?FMUy!`iQ4Z5^zA z3+pDqx_z+jDy+AL^%1Z>5!Szf4RY9^hK<&+aSLoLfQ=2XsTFJrf=!cQ(>d7m8a8)? z&3xEA7dD@Q%?+@{6ShRbmUP(K0=7f}ML{S991k7j~V4UH4(P9qj%JcIUtz6WB8r_GG}Gx3E_Zd)L6; z8rbIp`#y(#TVP*2?7I#7hrs@&us<61-+}{!;6OMW*Z>Dg;9ws(7y$=k;gBgD+5m^X zhi}>crg$2@{S6L#!r^Uj_y!#Dg(IioNDUlq2}d2_=tMYr6pmKIvF>mz7>><@V@Kgw z6&!mD$2-IE&*1nnIGzqC5Ki#nL?oOz3n!i6hEQs7J-ocROJj)1eH;OsFt`!k%gfpZ~n zZY!Mo0n`IQy$aN4L46IPyFm0Ph~5LyuOLPUF{>fwD#ZFg>?VlKgV@&)=M8boAubl; zUO>DA;txaoeMpFegm_4}4T(;WxEGQTl0Ju|5=ia{$*Uka6H<&JMFJ^1A>{_7@*s6D zq&|hTiI8>>(r!U|S4bZR>G6>M8)S@tj0KQ!4Kjt0xe+oig2ojzdmyVBWQ~EWZIJZ? zWDkJsg^*na=lj6#9psqL6O@X>RsP75&)1W>b8rnd^L}mlQ3w|k;nG03bQ&(b zf$u}$`#AW)3Vv7)Kl}ujKZVOFaK#(0Y=bLz;YVNiF$S&JzvY2-mc5y#-uf z3_qE|PoKe0`Ea8*+}H#+9>dKsaI+3>4TM_>aN7uOe*(7;!R?>mXB+rA9DZI8KVN}6 z?cq)k+)0GH-Qn(9xceG@*$%(Fg!)QAc>BfJaQpf=5r_u{k_m3Xk*PNjrEl7M>Kr(@yYo5ozJoAQU`{CJhcpd`JL@LC41li~Fvc;f|c*2A02@FySsTn>L$!&_%~dj_F3!Zd_+2nP`g*e6-U&WLjm z6A)jckuMrGU^8oMHXEDeps^Vm&q3oW*xVhPCt>qP*g}jgwqlFB*wP(a?#7mHvDG4M z^%z^bVCxOo`VyK9MUxe1@&lR}V%w3}b|bb; z#J1Jgt~s_-V!JKa?h2X<(0nzT|A`jCXmK0c+hF@BY+r>P`eBFF*x@O5oPiw=V8=@A zgxE=foep59N7%VLcJ{%}^Re@B?A(Z5EV0WJ>~apfyhO`y(DF8RRbtmQ*tG<^nPazc z*zE*%?}pviV)qQ}{v53YXf+e9qS5LJ_6WcpYV1*oJ)U6C?%2~4dydDR+p%Xg_Oixa zQ?b`c>~#mNd!hA2v_68?cd_?y?7bL!U&cOS?4!Uwy0 zJja11IM5FVhT_0T9Jm4pp2LAZ;J_C+C9DWFg7vTtV9N~f^mg0yc$o~Ny_~@_<9SYIW5gk8A$6e^i z^gq$b9-UO^v<96t=yVqa7AUYo!B`Y5M!^9TRG{Ebbaq4MDd=2{Ei~2; zjBfqWZ9clCp?gPk{{r1lpnD~Hv_cO%^oT@{b?EUNh22o-jKYa1T#3T{C`?7+3luq{ z=o1ueMo}7yen3xi^qh#EyUh75aLj?+WxSLa7BxN22s7%8XFvgR=c7`w3+)(QhF7 z3DIvU`sJY97UeD|4@LQWlqaM7Df)kk{`=6s1_K6SKrjZxV88_oY>$Cr3|xnSHK=Hd ziZQ52Mx`|>r=fB)Dict734?lJPy_~@#NZYf{22ys!QciA{u5PBs0u^XE>vB?5EBfM zU`P~(T*Q%pBRz2B=Q#2Jj%>tHgK<<6j&{b;OEJ_4L%lKd0EXVhF;X0J0zYYipSa*B z^YD{w{Nz{s)B-=1;-~ZR)BX7AZ#dQs$4@0=>hHb~NIt;hL@C6v&fS)Vz^VRsd7AF8su*V7OaY7MJ_zfqv!-=jqaS~44f)mf< z#2Xkf03&=cVkSm>hY^=>QYV}gjFaMV()T#o3MbFN$+;NW1taHS7=Q~7;DYP;bx-_yGJdVbg&lC=SX>x~ zi<;r0k+>)w7q`U4pW@=9xcDbrG7Oh2z$JOOv^y>xiAzu7(ucUr3zzN2We;%q7+hX~ zE6j0)7+1vOiYvIXH?ACpE05wT3tVM|tNP=rg}CY^t`5c3r*L&Pt}(_nU2#nWuK60* z6yRDjTssrjCgIu=TxWsn#^Ad3xNZloJBsV#aeXUXKLyv9;`&>-!2vgf;D+hAAsaXR zfE#<@#+kUW3O7k{(+=G9Gj4Xn%{y`PJ>24nTlU~q#I2)o>lxhE7PpPYZQtUyhqzsi z+xO%4yZDV0esdbXd5k*(amNAN@f+?G;?6_3^EK|0;jUEN-4k~&#@%JO`#$awwc-kFLufx+v@bq&$uV8TmG9F2)NnD`o# zTrgR3B;0bv9vjs zMqp_?Ua-Oo2k^obEVIY5NmzCR%OkM75i6!(Wk0Mui&cSGrNQc9SiJ{p`eIES*0#jj zBUtQkS-^yKdiH7O)hSUrFu|H_27}}VOQ0|a@C{0szUsM&=P!%Ss3fHNg)KEP+s(Nav zdfHp{^p@&bebuu~s^^00`5e{rBGrqgsu#Jcmm1Z}2-VA-s#h+mR|`}{wyGi*RZ(wM z(MVO%XI1eORq;_(@pIMd4yxCiRc~6W-gHvEnWlPEq&WwpjJ9f$H4?)w}ho zce3hzHP!n*s`o2Z@As+R|D*a4ruuMH_2IJWV`bGxgX&{*)yE^MkM#B*)u%+&r-Q1J z>Z+3Es*(e$lKZMs4^?TXs`ROl0jmdf-%_0wPV^H0^!a@9X! zs(&`A{waYgV1ypVTm6M?IeyA*g+8xx>LH!Ce z?Ll)G1b+~+K`?=KGH7L}G774^2VGOp?E*6=Fk1=cb-;WxSkwTEeW2HZel+MGfMo-) z+yGYQU^N7+K7(}|u$}|fub^r$RLzE}U!YnbRGSXfu0b^;RBs2>*Fg1aAXB{w)Ljd8PlIb^aBT^$bHVi$xOstFGPqp^cLCfdg8K#VZ~>30;PDnbyMpHp z@ahg;tHJ9Hczb|%B6uGH9}n=^2=$sny@^oo8u$i)?`rU~0l#$cI|cqC_zwmD`QU#Z z{J%ng1_HW3KpzOW0D+be*bf3vLH$}#KN{+vh6Z|QkO&PXK!Y4;a0wdLfQI9t;U;JV z(8vcG^@m1Fq0ugAbOIVzfyOPN@d{{s3>x2sCc)5TIyAWoK{X+0C;2HW4BFI%HhrMYHfYPB?LcVz1j3p_*eVFG3gNRMq6S1Phjt9w zr9*ogXuk(K=%B-B=XA<-&g}y1!_c8Qq4*j-3e>L=Xh5j31fF%q_h5?^o;1C#i z6b1#rpgk}+5C-SNV1yxEU`PrKxdKCNVQ2~r{RYD#Vc1p}?hL~>!iX9$A_GP`!^p8P z${a?Gf>9S?bX^!d07l<|F|}aKLKyP`#=64TzhImfjN1j{-C_K3m@pNR1V}my6N6yl zIY^F&wUrfFbW zf0%X(rklg`5itEW%xC~Jmcfj2m>CT-&%vx#FzXCtw1bR$kXaitheGBA$kIbr9Au4x zth12)2V~EK?3IwCft(n~*$J~N!R$nseGukY!<;@a=R3@egSi`E?h%+50rM8Yyj?Kw zILtG_{AifJ6&C1VK?hi{9sab3KNrA4EiCK-3y;Af5f)8_MftGU3l>j>#b01aV_1?4 zOY6YWNwD-GEQ^F?t6^CYEDwO?6JhymSiTc-D?_dg zR>5i!R?mkuR*15vEcCc7|Vn?GzzgKgJf z+XL8M3$_o2?FV3o7IyT59rs~pH0<0AJBwjg2iSEQcGrX5gJAb+*u4#QzkxjsVb5&X z^8)rZguP2)?^D?41pCIqzKigeGyIhVf8B@uVX%Jz91!3@KRB=&4(x;jf5XAHaBveG zd8Dnni*8LhRYw}N<3WI4p&3q>Uy|V6|UvLbvL-44%gqnjW%#&FXS5_KLzrQaC0Wy+z&S; zxD^1mM#8OaaO(x!wt?F#;C3{nD5j>g=kFLOD5gw<)@qxW1kX3X^QZ9Q4|p*gUR;Eif56NB z@bV12a)Va`;MHCz3V@;{D7p$orBG}O#Vw&Y35r)j@f9eR;B|F)-5p-9hSyKvjXS&< z0B;t%89sPV6-aUo)4dML&c)u0iOYosJd{_Vg*#;7bgA*$H3D;cG|unhsx2!dD5tg}}FD_?8FX|A6nq;rkT${uh*+LwPKeuZMC8 zeni8M)$rpZU?kvvklaC<0n#Hdx`1&q7|+7rf56|9;qS}9?SU@^&Oz=CauUdUKrRDQ zLokg4(@ps43_mBp&tmu|4*t2p=%2@`)Q?r#$5bk&>dRCo8JIJe$KW1gzKl&}>^7_H z!YZe*%KtERDpQ|l8Uxd$GR;FKRAEAMCL}T87!z(WZ6&6)W!j!hyO&kbvnq>Nm1j&B z$aEu_Za*{AFte7-Y$7w;#LNnrxdk&1W9FI6{2jA!WEMl1#W|)|F?}4<7c)z5W|_q- z-!rS$%<3$&GBWFC%sPWv-(*$2Sk+Wkbr-8z$f{Lm)q+{IzO33YR;`>>Z^Wu6v+7rw z=*YxTOuWx(M6eozS&cocCa{`ASj}(DCYsqCW43n8whyzt$PAIpu#?$YF}o4W?jHN2 zCHrF+t7XS(O=R{pnf+Sk5Xc;QFo)Bub}*|wgVlb(92+pldCXB_b*3|?0OmB8Ih8Z# zAG zhc*4knzd)m&a&opSo3(+d>;#`#6s$@kijhEGzoSOSdCOvaSxhF2dCX#)ve+domb17KEUt`o9m~32WL=-JZq-<~eyrOJ)@?iM_MLU( zta~EszL|AD&f&sa`E$e5&`c-B9YO;RLte+q2m&p44 z$@)EF{T*5V2CRPs>py_?pT_!cVExaq{&!jbA~wL94G3ie64`*MY`{7;;3OMxj}3Ul z2E1eg-mrmcHn0X8c!&+E#0G`3K@ZsAK5TF{8(hGKG+;wY*wCA7*giIV9vd-+jkv%@ zj%6e7uu-0DR5%-z$VUBSqtn^wb!_xAHl`^Xlf=esVq>h@(|vS_d|Nc-VS=6foBm!u9C7*r9pdC^UB_L6}C5@U*>m%XJN>?=y^xw*Vfi0;-sBEH||J(KOZ&`sTB?~B+Ec32%Nm0&ee z(0F4fgEd)LHGiE4XHwqAdCB+H=&R8?O5tBb{s-5R=eVFVDzAUgpDJ9#ow*BFUjJ~AwYXH|{V|v~C!_Sn zrq~?&V?W*$L&yhulM=}bNL!~Q5xK}?aURC|Tn;xDU3;xPwZG#Jk3sL@TsyW*Nx`)(F2Knq)RbpFb#+w(`{U%R9Y(qCfvwWM7` zcJ|t2+xWQO{7y6CW_S+i=RG2Hz3*QMf6iDperwX!q#g9vkgO$f@oU}4|+0?}o zQ~Re+N|`)9b$t5RX%n*|r}zCcdPk4V6L-(b<+?Au`%_zF3E>5=?rkW;{Tv-E@4W{GQL3-m7_a4c<_4O-+p+yZ`-_KK0h|#`0+%B;~2O zsNpT;JRT~YR(tC(UHKxpUnl7=43hs+qmDTH7?&#!=$g$3@vVFyZc}r24epZ#zE7^A zM*4XmZpXoVJB6u+@0F@h;%aD|udJz~q4<1EvH4g{KjU$^o0=a+GdxUwz1vuizGAZE zW>TU?PLvl@dNEp}P97jg1Ej@7WS^4#BrRn>+4gt#o2O*Ic@^0&`5Of*+q7t>>|1R$}arfe*%9cQF5ZME|Holp_NLZm8yi+kAH<0Wz+u^ zTHk5G1SweY`l;mgQ~%5BzyHhYJN&p9UjrbjxR?qkvmbcvc%fwFKjx0&^`psr48J?fp9J{YEx%BDlm-exih8pA6WQZ zY}N7VvnQ9Y-MxFcU6V!~+qZJy%j(qCWvdH>up^hJ9JRwgevkv#M*G^7&HqSfKOwTW z13n(AlPBWgZ(^f1w~LE!-F|j(Z}P}34zHf6Pj(O6PGWd)Gj7ejxEC$5MvsF0?I%w- z1U^%b962C4(N535<~$;7hqkH*Z#rH(C+ZfmDl#$x1@Y9 zi+t^|aG`Iz_3?Jxt~NKPqO4TbFuWr2&6>-bF77#NcQ$WOhs_SMZM4Xp2~6nG3B7Kj zRgQg~qw1V~Q6U}LAG)4mFNvC*+)w@Q+0V}kLwoLH$DOFg>nT&~<%B1(lSrwYyg5&P-ow|MabT!{}}s;_N({1-d%44B)yVxe*2QTfFo|Y|-xetLN9Q7ZhBN zXc!m~(Sp>6o+9@q3uv(Rk?U)&AF~e^oU&c|bg~-|x$?{)hq`UmEl<2ocxOkY)2;;D z%yy8nxOqe2dSd8`Ucbzv;hrQ=C8-^*6!|u)Z$|~RY=V`z>%evs;s@E|b#882NRhct zxO4v6{bxHmx3<@tdKVa%iL`V2BXBd*CMp!tc0ZkI#58U$*7sA7+;(L0KD!6+Z+>@> zO1YI>DhwQ#I&SKWISZ%T7Z{g_%0f=hpUO_y**Hri5(~-lwwnAxbmW88SWCkb@C5e5 z$!bpJz9*lc)|*l<&{vf&8W##w>9cXS$dAynJOSNZ9&@uMT{@G%R|fSw)W|Nn+vvEl z4v)B*yn()PRJfUU^xFNMoulk&g$|Dhk525ne)&XHl)YZAEJffJk?*7LofFWTvpZbh zqkU4$2>XKH%l8R)vd*8mYxnA}*jA)05l@wh%_D9Uy}Ewm!Gr7JfdLWW%^mnW^idoF zC>$KAW~k7Ts@43nb7546E!wC_E_tt-zz*rP^B zXg(r*5Pd!jzfd|YzczKv_{~Gt+D7jUUyzs)JG0%mVI9XtEe+o}U{U(Y$?H;APTiEc ze&)_Jn>)!%r!7kVbNcL@nduqRGcqSl)6SflmYHrhFf)1HkTv6Sr>&W>j6<}|{IvCP zX9wjCJC%BI{>C{w7HwR*YxTx8t9I4g;(5qwn*KXTE_GZ`-Q$*ZHY2%!rL{BK{Ph4DeZo7R8G?O;b zulEa~vtwgJ>;n6pzC*dITq=^5i@c_W*QLT-R}$3pGmeorsFgb6YTQeoy6JrRdslo< zmEMED_n{x$bm&iCL5=1+O66Qqeo~z6o-yxz9d!vk3@N|A5T}K6;X|rrqDO!NJ?hAG<+97rsf(c zlJenB0e9j-wH|$>a?wqSl&ccF9WUrhl((2jZ!PKVAvY1De*LVV&Qj@{SQo=&iqZ4J z@$d)RPMqF)!*)yfiP#6juNT{JvqODKzZ;N}6Autv2YNdu*h_y13XkuiJV3fvBF9OU z={=Kvi1M_P!uwluRzGyeT(>9w?ye)}Hs7}0()w6*!QlKiMCwF;0=-oXThX$V|8ztB z2!U4`>f{+~pSiYcYJ5hQEL*7-ky1(TMS1v1;UkfHWUohm zNfPCW(v=dqJ^m$ymJuHd$x6Tik%n%Y>8ia1oD{5XRqv z!Daj~fj&1QkXqwBj%%t|E4pYm!AKD{7auy0gNMhqG6|c1SB}J0&Wkb(U=jwxcf|mM4k$P)gws zH3+gnq-w|s=3!MGKXF#TN)KkQQPzY_iJa9s`}dmtGWmF+l*+Z-*$bU_>XdbLKk&MO z{)@!P_#|69ew>!m6n0&aLsss#K6kes&D(O_c5}qBxH}`R7uoR2hx#d&4kSwl3Z6rJ z{d(AEt`D0WIjdE+?I(;-uqH`OSyT0B&e~!{gcSNL>-T3T6cO@Ed6yDwS;||!$M&WC zqDEg{!M>FbZ^4hB5y~IUUi*qH+AgK@%r*+u7DRQAJXu7kq$eIcRL09)5AlP&H0V_W z59aZMwC~D9!5afTsXaY;M)-Dr_L>*OyTg>|S>f5X-_f7)**@+gO6pQ>{)AgJA)LOR z?-qS-lULlyfA=;t-`BTwSUvl%H4bcCw{z#l@qK!a89!vmn01O*_>%X_!=-D|a6yig zbs`N63ixK?>PNPgr%RWm>6FQx_+4}oqEVCP9hu{Ab1Y;^@yiOUw$v=8lrY-zp%S|MF8g8 zZVfvT`*8SG3cxDA15l7V$~FE?#=@u;NfKVO5oP(X{`ME$u-f+5H%`2@JyEYX9IFqz zSZc$=_cfxzQqzEn$YZ1rVwk`+eQ85hUF>i9J=u3Me`}%bmPRLAJ?-;s|EarMpKWP! zD*Wkyo3CxS^_jj@pmc_OZq-Kc8|~V>t$oO?F`tVJw*%r$g*zo52gD6qh7&c>4si1#vtW1l{giLN-A$#;4cbmJrPn_F! zdq>dO$ajOaIrN|XyIp6`Z!g@|=6Lko!FNk&1LyjpWfod%(X5mgxqZ-N@#>>o8^$%v z8(o%#)wOR+DWW~3{gnI$rwJU$MMFl|pYuSQEw8R0dSiRYwVdWT?G zf{*^)k+(q7!9HdLhLgo(=>rATV$qR?8(rq8^|$ns?AZmAqoBDE=%+q{uF zC>h6%+{WzXvpJpUPN9^#Gcfb#1 ztl7q6B7aTozyn^z^q8QVKedK2NY9WFzX!&n$^t9Ah!JHx0zEO}E4?Jqx|znqH02;b z(w){lquIa#66rpg(Kk>Imjr0!OQl#T0SVkIBw3;bx68RY+t64~PgxxY1HI1zj=kLI9hqU6KE;>9ZV2(_) z7)yeFRld82d2Y@E;nw#5(OIy@$=7WpP2GpJckm|ZR{_r=6{+p&W~`kRR9ZDzL4uq6nMbLCQJ zlDUpXdi63vuiW^qe9fK{@F(OYuY~*aA1o|bLVPFiNIo=+huGqUPaW+>Czw*?mEtltHO)MG&E1C44l{~*hY5UeHgB43tCuW| z$CXW3D*o_uyiSUpro&Qht!t!{SCI&Pck5_$+d@}QXR1kW54!4bK5wRcnoVze(Ayq@ zDM4-~p72oP>f7jn4RM-5ZsLafHObVGvAR4VPK$POq9~P=%44vu)TdN_s?igL7@`nF z6vB8U(U*tN+jeO2g$!l?A%aIdXF4%64JQANj^7=a)mxH}uyfob4 zy0${IevN$+>~RHG*Y|$O1px)VL@azCM9FQMF;$eCxZ+=$i8O@LIP!!pr`&9C%|l9w z!I)`~MbmKcxH~#-{CxdPk?rY#&+X7*%n2$=owj;^`)=68twsxu-p;(!aC>PHCX%%l zBYfe2Qz{I0R+KYnH?g#vUVYoXf}t+&5v$!vxaEp(;kMIf zx8Jng8k!gRbm)_vc~`dG+Sd9^m*>N;5c1aT>t6K1aF|>662gWDw}`P1JvIEnJ^F=3 zFCm~CwM~ikidmKT>VxLrxH%3qz1MNI6Ys`#I@H%Vm%ojW1mq8ojt(0^-7O2-dd^-? z&PB4$qE(S3Yd=NvKEI53os8(C$lBNq_i83{!P%4djn_Vx?ZhKq=(wir+^L7QdCf{A z(Q)Dts`!o9`xVF+b**^t1g&05GtLo}l@wjIU3~b!K1b@>;QI4qOIJ)c$kk2L#3SD5 zxUwwo^j+J$R%LPMIO*_v8{T47z|E<*wV3{iPk+m+*5er-I8&3_I-N?eJE}s5;!~iYLDKkXr`x`mw zoYcKY?tVt<|3-eL(NmgGoH#}yDww*-&f-yW;*}Q(5P2y?8o1$3+COlWC-2=`OQkni zl>RB9-mNjJKFOsXsN#*eR)f=O&~F_1FJ~S=BqKH0`I|=HM#mF_Fp3CHA%Z;$c^}&LLcug&j;fGv%7;(?mTx=}v~F6D z2Zs?sIYN}a;B%P{AT2p%AUirgvlA40@j=**=p_=pHif)B(Mu9c3*_eFC0{irz4=0p zKgPhz+;D_a!h!>M!}eONFZU3o&-nA_N*!M*K1aDBrKZNl@go1`ierg!%_bf^xb;`U9T^}n@4r*X$V$(wZU&b;$zdwh>46fK4q@>Qg! zC#1y@LD?6{$?4g!Cp%AF-g+)`HCP=5f zIVvu;?I>!Cb!|7FwpZ{3ole%*knkMMOSt*NivPbQtU#Hhh$7Yz&Aw1ztI+H-z1S= z*Gb+uf{xiAbB*!^r{E&8BZb-H#|{1~$S7vVKT?8h7zLTz{|K_qzk_V9(Yi!la+!iG zlY&h0!C~Uv$E_-&qf*dYB1^&Xy3q6gcW5-1W{6JT zPc>e}dPO(}H&D%T#p4ucUA?IdnZVUlkY*?a$=eOLXeRz#sypdvgUjwxg=>Im2L4F? zOnczd36{T>e`x6FEKQ_2Rs3H%K8ky56o$Dxz?BlpF|;x|3#JM3ATf`;V(C)~m{6Q$ zkOP$>Ii4Cj3towL>ZC;<*;kall~Jfg`Rjg_LoYYns!5_LC%E$1m=h$z@&bZ44XDWQ z)ADN_b#UWF3X67xzO!iFIGpT`ekAXYFX$!6j~swXS1(&W?$Qw;JS zZn&5t3%mk(w_aLw;{?|Rbdjxfn6*k*K_P+rx}h&`NEG@i@>_|ANMWll5|DJkRD^$w4a~IFX?Xpr8%8H??kd?)3)gr z!|!ePT2k_A(;Tu(ek+g^W*w(Y4@W^Z@gOyxu8=EM7RqixG{MEV;4;g*5C z>}QS+%LwWjok)K(xSuPv=ZlHZdu8{D;%RCv*1n`W3IUj9klkG?c3;!IF7Me<`<@qz z$9{#hsgmyNH^Vk=H5{w|wxXvSF-@Yr72J4i?C%}ARydN}#59$A=z?0rn8I~Zh?FD} z(~iHlHI(~Rc+wQ^?MluSPQP9vm?q2ZDzNv4`-E8hFvB2wx#C8$gq5osPwb+la9uC* z%BT;;FdE>Q-=V3BhMV8w5j>3R+i;CNLA&!ex6!XF-yGh#bK4O#l&Rcy>v@89a}`@O zbi;i_PRmsuykEj$0=XNnk>V9($7NHxc-R~3tonTRRDtcO7G+(qPO^f+nyvA_n?@)s ztyHFPpR7p>4QR!iPt@XfX^gTb#UeDz;iHv3VGLdrWh?mv^@UTgQiYAy<Y8bSDgyYTz$T z_e7&rDIL`KW91T=yVErse>$SiszJYS;r>Fj)L*2jXE2c^G{HykKq5QAxKNbsJ?NM_ zg=+|D_3e3>LT9#>~V}>m!D^k zV0)}lWAouol}(k+Wva`Ndan8~8^z975}={Vt*{Wv`zPsr#x!C`lO!DY$61f{Xmn z;?S#$XCB*PZ8~JqN-c>>q_-yb=%1&~5fyhFL{wBw8&@DDZ%#>kVvL;h3n?wSB#p-m z1u02QjML~Ik}D1++gJzHr;{ycNpz>`ha6`b@pw`joS7w$T~Oni)TFws1!9Au{XDVr~(%@-<|Yq)r& z9$KG$dGGWaTXY~_(@Il`++;<W-8bF`CbraB_8g!*s-P?2bH11tUD z77B!lwP~(+j51n0P3-t! zuDa%7gZ;iyujqIJn`kkCZcPm#r=!6k6c)DFu{YuWE-umO94NB%bac74ZMg3dQ@~LP|`htQ%IKz%pZu)+yNb7?Dn9eKggYxFWNthzPT6gjJgiZA9_wf^+Kcyc#a>DtQVMuA zy4W^%!<Uuu9P(PKgdjW^s3K$^*unl>3R^WKR=7ML?wv#^7%!j zv&Lj67mFAi$AfqV6?XB)ufpDbYS+w0*|t|{?lFl@YiP!7BhsaNZgrPiwBi<;RXkM; zxfTEJ{jKBo@3uMN?bD`vEBo>qn>H=kwtZvT=#gWl4jVpt=@zOt-KE*03->^1)%e6c2ubvm z=F%Lwdo!X&sfX%qLxtMK=d64|*f5QN& z2Z0P%jOU8?d?b4AyooS()0{0^46?_sid#|rJLM6*xGQM+C9gt4UyZy%PB7)`zI`=p z;Z`FBCod=7k+3`woTU&{=qaeBnj+tZIU6?_WI|dyetC#1?;5LYIXVw(mYqi@+H!zK zeo7swhc3897eWaNog|{uL&0{rM8}yo66TRyTMe?0E0x4wNT5#_B^0`z!RjSv6-SE- z)W{=fnn}pOqBVvq$l$gD0e&HaaBk6tS5}b0xtm)nkim%P=zk#tW$4q5PM^uUf{3S5 zhRqa9{gRz5rRY|xK&l?cNEh8tV72#Wu{QB+tdaZ5MIse?xtQX$3VsvausT2fyS9z2 zC(J)M_wZ3_b6rtsn`zQeQQK|@+R*vy8?@e!?pl(O=6>zvw%Iy~NiB#%4YElUqngrF zaD8F^jyb#b82CH4iuzPTsd8D^JZqUCg}@r*oEG-}J_9PH+%lg2d>QD^k> z(n(dNwX`iEoRV8BUd4$vwQlzM4Mfcy2ar6fW{r8nxJy*O>Yp!td61}mZAF)l`Eja! zU8wd|G%$-U|E_(~ls$E6bWLPyN?AmfHKg=AjMA@VeZ_G$Z=n?CihUGEY*C*FcT(s! zzWVX?0j#DiZ>r&!hH=}xWQ2cpGse#p`QKAR3Kq5JtNIEnoo6lBA zR+QRF+_s4aZxnisNH)Cp>FWW?Oke1R?N7OPv2NY>%jcfko^4p(5naX~RqE76_tKBQ z8ck1kHy%C4UOFIG)}h8Ymd?7@3U#u1)gio@JzA!y_h57mR>jJOmx5`Osk>;*`z+VS zE93)L_#uscr{pZU8IPCB*4UK#l%@h7$+wEqOuCQZWn z{5JtmE8`l`Lt)%2vuj!e>ZjSPEXuik)^J)`T$lKMq7B*7dRtmw%;%am{bE?LCO$JJ zr8Qcm+N>(hd33>WUNCi+8~&EH4y~y}YYKUmh%Mr1!k?O_LEG~=%kMZ$d#z6El91KV z?jnZZcuv=_K2TqVCnPg|Li3F-HDGKJkEKL*60eK(g~ojY+}g=nYDP7?@TTTW4o{ouCY9=Q=sL}p-Z#Xf6)IaAk+j>$o2nQpV;Yfj-M#Xj*g zulnUnu0+q3=zWwIo9-%WmR9&dWM;dGjqS-j)oV+09^EqBRBYN;5g>>b1kr-yvK_Cb zlUm`QB0+bnc8*SH)egI0ELvUrR?e-i@mL4B&V}D>{AiV5h1e?;u@xVsVXWm;^@evj z_wN`A6kQ0WP|>uW2JN^`bjK_qsfBMiZ<=gM)bVDk>fJ~x&|+4J#?<@HZ<D)5HVdk60X?`;U=-4xtpv`I_J1RP-o1OHW?{U&ep=kM)`lp|@b$5&zM6_7Q zj?3(j5{%}lHfz7+JilbPD9C@(UD~D8VS8b}Is34q!}Ov?slGD;=p?i;)!$}9cBDd) z25W0YX*};i@amNORU?hx>#W1E6LdJW4pE=_i+W6EcuIY=m}0XQE9bnvY&a*#3uz9% z)D697WB+;Bai{IH;zm<_XZREO<^&d6QQoK^UsG=RRENQo*@r|C;iIVfLSw?MR5tW? zjLRu)lI%S*Vp79VPeJ=G=iwQ{DUzK(5tmR?ABer@DyO*9UN%hko8_M&Z=_5}5Js9D zCr{#OM)94z{Jb<7lVwRGP2NQe+M}wB7{n+H%5jevh;8EO2yg<$r2U1Q<+mNCzm85z z$O_E1J%g>0ZkbTuSHUU(d(GK_orqPVbl;i&nZzm&Q$>1&B|CxS3#*Xty&_+p+*6SB zrni(HXkvVVPWsl082XHd3KQ`>iO~I*2wfHZ{aK+u6X=vZ{UC*@safwkcbCGbs8Jd* zB89n-J>36gkE(K#D1E|w`IFLd4JB-k60ag;;zA-lfb23tp}UCOk~Ei)(IvGF>ZjVQ z`jGSJ45dhUAup=1di@H`b#$0f)F8dyOh4k{KwRonaOrA?)ntm=W_34vW3aBV;POLAY`u%|mtU)Xwcd)T?yXQM8^rb}#lx<7ks zSi|)bgs@>DExOsaIx(W)mSL?xcNpr6OX=_@5PQzuK>;wWh@6NlYm2TVphrbWb+yaG zMT(KhM2cCD%1QsN=HHv|n%OC(1zM!rtSQMUyhvG#j4A)7-D`e@gT5lKAqTakv79Ac zCsM+d)U4&VMVdmlqoH_bG`m**ots^wyM|HRtX-W>x)V2OB7kOB$99izKbCNtHhjZz zd!#E3B*GX}eIqT5siQkag9s%~*#Bwf{}1IT508PUxL8zz#j+mZH(6Ox}vk>5Ap+9?Idw!R!1A zVYWsz?pYIob3KXAdz*Go-qtlZ~taG3eB{qzM~S7}IK z*;4gv50pR^w%nOyGqFJp4lli z1T`~kR)5NQd``)c&G~0>xhI;>roE%XMq7n>%ULbRIv#Y-%$u0^Qk3dVC+YNn$Oj5W zx#oS+t2Lh`-j!;$5@cOj<+&jEKMr|))IxOHY>_<9$zq= zC70mk;xZ4^5YxHnyxn%j^LEon;pCcr#5Ax%;REfClf5tbKHGZs%nmxFu9#%}J_l-j zw#&=mmz3+Fd%L~*U|7v9CkkzbH*Fbb-|E!xhj-`~783>EZUNk^uRY!1*-963F#bB7 zx|z`8=N3Q}s|x^FqpFDo&# zj51)Z8#bPeedc294%?Z<{%Kw_yopSGdUm0)klmpZk)h1GOq4PRbz9+O6Vpf;2dIP} ztxW>Xpm2O6L}j*1CIq6NtX@-=^EBUZTaZ`Ec3lYHU?0K)T^wc>)lc`CRgWy#g0MiS zkln6hPG=<+TZl$gnLL9Ey0u0c)mbFWRKK?F6J7E5z(>F8YFji*wORLGsSZ?E7xSlL zuIF!wW47DQd=ZfDJyW5qJZ<45WVi2_)5VU^HI>-(I5~}i(e|CZ>a3KCNiyAPP9tx$ zl*ak%0(9~ox?V&FgHvgczuW@@=is2Z7_*1mEnuqG3?Cv{mq=2UZQm&;*6s!_6Y;Tv zZ6l|IDEMzxY0hJE2RTN#YoeJ!IbM~^m4k#qBC6>wmYQb$&c-}Zo=se4D_rc9ND8V@ zb(d|nGhPO!`^>CIs&*iiD1vv&i6$K#u1n23YQXY*_8kD zh^CI&;$8fQ4zvPwvXOWg6&?W?t9b)mu;knT0phd3zvpz_?Y6R9SjU^qU~L}x{% zC;)GYdey6(2iFbvtPUwuhf{6V ze9U=r&2XI*c+nIj)(Gmy9>8o#4Pr;iai!ECwxR~n z%(#L2fkhPdS#jxfr7O)Q_j%6k3lvmD!J8<2;sHyGvGwDM6?w<5R}DYPf8&6tKE!mePi3jRfZvwp}wj zrZl0x)Mib2&a+FDHBEi#wtyn|5lYPj4m{~aPaSGY>P8kQ-H3&81ub16w95*gMB37) zsn=3a-8DQEOrvSeZ_HDcHYJIgdeDoWH>J7iNx3HVCA8V)zqm$cwM%J4`m$L?80wng znzGq}zc=GUOMU84PeqR<64$4^K>Xib%&+dIu}*1Ctc|mYY6i6v{^PjTUcT;%Z~0F` z@jtPwjGJlJW7V8@&kc{Mm9I(dxSKRh=#&|j+|XXWP4^q=o>VSrf{!74-{W)X>6el+ zuFp<9K!i1QRc}hTpjlm>^W?ta0hM^uW6`KD zlmEmhQt-bxMP^1!YGg0paU)Ju_-y{zXjUT6!s|E zGNV&kY2~}__^~0M?C+LZ6_pizOWR_ zO6kmf)tj7q7s-ivq-nvwCI+OFwbaK>6SCtoDQQ&5SzL!N_QxjOsac==znk^5)T|FL zqeb972y*x%$%Kz+uuk_m%Lvm@vV3@h?vu+iOfy8R zAywfuNX^x09OFidqcS5VHzDV7$9MGPj3v#Tz9^2clEk~Nl&pVD??uTZRpwT{vgQpX z*bU+fNzS@Crw*T3pEgAXqg#>OKh?W~r-6_& zf$li^V|EQyAHA>efMxb{2twv2D}Bs)s5rTtWeO8d=5L_QSmuxI)-7x-MZRU&hLaW4 zm2fAc#b!pNH2&q7j(om5W^0l|e8YIiL}eDxVs*XzSN!*lOB@UIj|lJIo?(?x~LW)|5D%NUwDG*i14&2x&b zQB4eY!+feY8O@VjdG(pRdNx-nw}};kt$3&}hQ`vU_b%PZ;a8jJuH2eEhe*;X1-25N zE_k-EaQXBin-LkqGlyqsSH8}0^bt-<8NJG=^aoPM5i8tZ z@L8LvSMvmKQU_|O$KdWNc16KpjQ zt4i5)M~m+ebG_A<@@LPz?Z9owC+vmi3tldImOK5q&CraY8ACF)6!ACr8+Iv|GL8vZ z17;-ig~xuh3Su_MV(Yi23oBGpDv+ zwcQeNGWyZ*$J`dIVQ5Oj@Yj$^kT5MRw^~plSh|o6O?8A{utVg000$%dHgyds7teN&b~9(miv+t8VJu8yjb)!ciIaw9MqIM?18an-Xd^i^6U+d#G~Z>sMao0^LFC#?7LX z#}cltrC_akWkS!M{|{yF0T$J@y${=%GaL}G90NlFRv55gLj=X-c=yyDE>YuB~* zTJO77zxli&Zy2`un3GM8X!>1gP7a9^=d!XdI`e0^23`x7R$N+@yEgHq{rvQ~88I2! z&G7jap4A;AdRRL2W@_I!FKw!uTV`*5tW178FTK3IX5-HTd;v(+R1N7 z>s%~OXb08fNm8sjvo`s;{XC3uE)GeN;nv@}!!?pj zOdGivlDO$J{qRUiQvML1PAk}(leg!_zTmuw7qc#q&tZQ=LG^cHSacu%kxqS%N8h;y zp{(PCuEV==5v<*F2o10n6M^5{$pxh)2Swi4{+I|zVut|n`kkz0pbfmnI+qDgS3Fx? zxGt&0{)e66p7+gKCBn=880N`RhSh7T>Z+kzI_6nGbH>BOq|7o0v@GQ5*`nY2-V zHS2EH18kdSZhCn3XOTKrnlZibXyxNI4>lyfvX4rQO8XH<^PSo43{d2jV?^U0n@C;Jyzc!g)M0dX^25;7vv z`o?#~DQtqHjZOj!i{lb6h9mu*b&yIm4-PtMH^}`c_ zF&T|`BkX$fTx`T#Y^1rUROjMe)QTzEri0?sHhb< zG->g2(*khAOMOIKhS_(VxgYjNU(iaPu6az-(}fP{e|>9sa6xy0V9Y1fC+VVYScZm} zkrs}?GLI-0w|=~EuF&C(chw-)bnfv|d)|LX$C5JL7T#!{;O^nUhtF}c>G7Y(M?C*X zJsOsw$2LOv^yslebig2pVQiSPS)B4?Mrt&SUE#?}66330ff!JsB!-t8J4x=O&^T{Z zjD{q}YQr35jtHHNXN*w)HN`v3-0Oe3np-? zBx4KmPz~kCz5_df!b#BN^e7C_D)-#jsLnut|6e9%ix+H6Ij^VLSY)`J2XjRERv9C` zU|yY78O#>cz#0om&qi_U7G?vgC3tyb$d19<{9pDH-^_p;vqlCYu&_X$LfBe1qzb&g zfj6GY@r1Nnf@fDhdUiF?eL`fz6iQ({(-~EAFq=v80qK5mZDEsoi8N4n;ES&7E(<2n zBuerMz5uiLnAA6h3V$WO&?lqEd>5ER_`Fs_H~91Wc&8};G9g^ixI$Ua#y1tK=ZT@| zfeSi({n(}|!{ggz6#d)uLNZ!az*={dmzEDCn;v6VoJ76SM1+xMq5KYSMn9P6D~$G~ z%CFa8o-c!2gSy{nmNy&@4cJUI{Z|_9sc)V7%4La#41;Z+VCp5FSD}Y++f}#$#=sB5 zAa6`TOV||`r4FojIKp#@aN5J{Hize6cBgweUO}X7p`cjZm5gW0X>=8ayH|Br6h$@G zhL9%(9cyG?1t`W-aw9c*cT8fVUv3r=L)$8KkfmboaGhKCg%b!#Rce|kr)I7yiaOsz z(!|Y|uP{)4pRcVyt8ZVMyDyitrX8+)EIdto6-R2DrKJm__cN9<-n{mJ<1ulwjE10@>XX zo^X0O0q&x7-}$Yy$|VX00|T;+*%)5kp&g_*rAbFy!#V%y;`u^{bKccqB9GkO_U&8U zK5iE+v~AaxN8q}^%C1$w=nrgV9QvCz~?%QSzlvyz)rG8 z*bP6{p}a1^zqccp1~YqjglcBn1Z~f8viZmkOCCn|*L>S;ZW|!*cdV|2U6zkQVZ&)a zQXC<9myczB%)jDjVWIvA_ve0Y99|y*wnY}Zn6u%-E4)(?t%#M@wPKyK*p%gL=x+|mB^I;bho70wJ3Gooex+K0 zzJiL5HR+^lh??DEZQrpN23(JyD?1MW$Ve9iX&3T3Kp(5vrjCRQSqRMx0^2wh7qaaR z;4WQQvW~x2-V+)MWI^^CXefE%A?YxH0>*-je*UN+q84Yc85$l^!nWa~@m-b=-KwaDqK=yrW`{0ee>QxSuMN zc_7eDt^lS(p8O~KPBc2f+yt^(2Bm8{C}e-b$FEXX90{HZfYxr!VqUw0C!aN5i=0b8 zN^(@V@*~fdO=U{r6?rO4R^C8zXS6Z}txTa-Y}HnFUI1LVB_Ve^x~ar4f*VgBkBkrC z-GxPh-@Y^#9z7Ltob56^`>m)783!Tb1k-F#C68jLzX1n^ z8A{eEo!l^Y@my%@!DoQI)=XIpToKr7An8=R>?NwywF=GiHcJU06LzaBdfe(J9{}8;RS>V|EuOnZ+zrcXGlvWfnE`)}7_vJTxFdtnfYs8g ztEFuQI@QP{1W3LCAbvZ7Wz^ekSJ z;@7D+4+0@<8O2Xw#v<}3uZQ2Az>I$a>rZ8r_rz_O+YYh1N_!ob`E~_d0_B?bX*PJxZICfeE<>UGoK<>$B1k^2we+! zKN0)G_NZwHF-+G(mrm%3{A7Y@EFQ;?dRSoR)jo!EJV?ir^+>Ll!0V0)(gy)lze-|$ zJRP@MDfTdM#+K5{01M#n>mS9Ii_r1u`U)H^n=#%lz+Lv?(Gu_q=8qqNnmcJ+An~Qt z;$q%lbaywOf*$rjNZTC6UK_6CtxTsRS*cVOvk=6CEI&(6AWBE3`wRaWuj4cIAMicL zv2B}qXyIb(g3+;q7|!;l#C;h7dBKmSvHJ7YqLOh@j^bAIFF)dQgFu}LBA#e%b$l(} zpMt9?q-J>WuA>Ha=&yaq!9w*Pffs+0>Ar~jx3=`$-vXz-?orl==3+jY_ zi-c;6Ov6Q!Eb`{2`_&UgCVY}!_MzN{c7Fn$JwnH)>8tSZMq|6S>Z)DM%c{qT>1>}= zy;p?K@D!|;uX9^xOpsg9W6VTrnsvyk<1Jy&$xoQVZN2!bXYL}iej~jIM6woEA4n>i zXmjJXv))H77lN&_`W}D z7DLFZ0Xy52SDGJ}t{!f5XyN53mR?~|)q%8NBWdDk+>OS1w)E0s;hkyXe+C~Z5d%33 z_$*IxQv*dTqtBMhV+tMfOW-vf0#-LwF-(1QP>g;smwZFz<0pod2w(zc)5MyYhr z>J8$4ZXE?Cs0X*4;KZi0&(aIbXDep=H`o#w@(eecPrI>QUA(od7;hFkHU`T-x~aMf z9wrY7c>*l^vVQmxuM<<0i`RKS{8;wob$W|uukI)iXAc`5HWSBL2;FtYX$9Lay)yUl zC;Eu|I<4rV75aDwSe_l5R=uC*bp__tjah5rTa6j$(eH70d)D&9Nn9JDI_^ZP_5Ott zb3u-LrbM2VC%jaiX?#U>`?N40r2#rV+l|?ZtfU(?IuQGDAn`wqgMfrB4PZ~eX)45n zzSC`GBv}5S1pRHQFO?0YD0j~t@IcSd@p1ZcO)~Em%^SDpIxU+tR4N~40XuuZuWS}^ z5kvJ4G^xDrEZ)wI>*0C|fMI>49rIHOVz?AD?M_Lg(av$PXCBYUjz^&kbW5GH; zLH}Bl#Op)_b?XJ@52!8jYMzKA_0nXgIsHK@4F$2D*>49YVyKP})Zf+M9UaxBQwQp% znaF<%Mif!2m=KfPeS_z~8v>5eZjcR2f~c2t;C-hn^!2im`?tsTreGE9#S!e zP@h?CHGK;@exy_pW`X`4e?f}Ma2@aOMh!Hc?(N+kLWL8iWW;qo76J9ua0GwfxB9TC zirzmMKx?fMhOc(NffuMKgYUcpP>1I@a7e4O{WI%Mb6>1UbdMU^D@2PM5cJsv!+^I; zH`7(PnTVl;UgHA^ zJAk1mI;mJ)1(AYc>RP|iB=Xu*L%a3VvR(iq$}-sm-b$Uqw&IC5QpG^pb@o3YK++F) z1{OP++sy9a+fn;~|4S;8>v*ESKG?Si%a2BXL_r;Jjc>%>dMuc>11(X~mzJ`@uUK`Q zk8!RgkXe}C#}`VWu~HZO8nPdV{h3Q-h30br3EU~Vx8&iooF1^NQt1Hty7MO7LAXZ; zxc&nHbkjR{(x&cXJS*|ZFuKukEIJOq#&KZCU$Ikhuh|inTQI+Y*wol=iA|$IdiZIt z;AJ~s99S4#NYsVfdjrmeKUXab@lfQ;H@bt|_D7-bwC<{fG5x_E{G$GkLZ^rhT#LI% z&#I(Sb#poV3Iqnua({Jq+RX6v=>(Yq>7dOFWn*#BmZIzMt9&M8IwY8ODcxu?;>E4z zWA?r4TRLXZ!8G-N@kvdYZC}7-1~c31Up{l&8vx1-hCjZU(_ido=`H#c82~Geq!i43 z+D-TI?xcN&N7|X2JJG0kYu50Hz?s<6)UkLP~J$msLZs4YZ@4`^`t7?m;t>8y*#nFK75LV#1#b4rNm1t>>%>)l~;V!zr+8~De~``RdpFdrX-6y z%%Y526qCA6zbH?Ix|So@b-ZW%_*ukaS|H5GT1qdvSup3y99-x)QW-6orDjpfR?@K0}-E8RO$;W%Jmf_A(_qU z+As~-6u6~e4Ov4Ni?Mz5{#v$tl2qh>_ww;;d;W1i)~2a2XZHiyJR32VH95<3FF^_F z-$MyD9OvcYrG?oJhNU2^IlcVc#jo~J1DFI}MFIAAE*-zR`>qz*{KlY_jT+NZMK3++ zWdUoT&QYw-U|scmacqDdrc51TG6r)>_wbJAY1nIUPlE7QLg$>rd^j0TOME%6BdpC^ ze)%RQ#I+Llhr`5nymtGiz3lH_IdOA00zyt4tY%{~4TAe2>L@*!__x_wS?Y>WF6LI_ zy0`3Mav-Y##AyuON)xXi9o})k6BrH6t4`nvjq9nAa@v$6vN|83KX08qnz#EZGXEll zu$?>xFVAoUyw)6Fb{Z70S?XNWoebMtu_V1M(%(aXDT(**dT!MPe!0Z86E5v zNX*(~yy)o8_2d;r2pet!b-n`Bd3wa~IAmN}b7uLud@`r2&`-nhU0l3g1=!!ZbWB}R zC%y~)yr+rwk_yy*gul((DUs$Brr+2;uKwB&N_~PMA_K^kT)Jwj!dTOoQ?U95?e=*8 z9^O&Ac|yy!t@yy1aChWj`pioLF~^xFk>`p$9uC@3NL9qDF?EpO^6opd9Q3+giK&~4 z@H8gnEGA_-rfvzh8Smrfqi#(w-i5U}7>80S-nwuMgfZgAP2!70bhbvKIl=n37#r3) zlorhG(=lAVYbH#8$Uh^7u5Kc`ksmlLS z-rX(?R$-kr6Z-jLPjXxFa@oPpzp^?G#Yz`=LLVZS zc&CSE)x)gEk9EA4>kUmB51G$9yYRMJJXc0ZOUPs5kC*HYDDNGDX|vKsdKE(I*lH(K zL4XeYv6nb}b*F~;LxVKqYb7wr;&F1Hn;L4)f0o`2xOnZi8(Z!<6assN$0ev4Bf~T+ zPG#p{bBF5hK>IYD)}>2(9GE~hP2#^99V(G>B}Cu{SX=20x)NC5dRvU{ z-3`X@s1Z_Wzr1S)Z*0Ej@B#=KE%+{=BnE3%ozK2_O~*rAZq;%K6Rx_2i#WCmfCih+pQ^GDJi!Jps+T2TYfG=!L zTcwUU_r#|wxi1`YJAZ=rLZwO$+UZ_drrXXN&k@|+Rqw@Pc1tSjf8oZ#Tbu4TL*%=QYah2$%?m-$%iQ@eh=w$m-PNqXD={IvsDH{Ee~jzF~*>HpAg zU(L##?DJ3o=HW{-yu90LFX8GqePag*!P2eSk&%Hh2#+=i-iBzts>NpG%E~^H_4iR7 zk8&x6v=NheTkJu7MPK_<`M+P=i6iOHUz&ATx=ACI;=$XN_1X_m63^tL`QTQQjhNmD;g}J!%eE zon}JTwk$B`)Eg1Ly9ohp`xN=xzq^03U`rKb0cq~vVd|YrYNR%uVO6~>avw9e<3KHR zX$o|Tjl5Bw2ufZP-U)ZZCy46?ad&6!*$Z*?Ww^Z>P3WTcd=+T_y6|N2R#pq*xXWHEwk~^m@Ilok9%6sHLQ-N=4RF&QJUdSCY|(6 zb0K?2*3MnHVoM8hUT*t>x$xvoXoz*_qV3DhN(%CCl_;@i<*_f7u{m-SynIVo6X{7$ zQc$)3!XCw0U+f0EDxvAPVD}&`OPM0Q3M_qm^2OHA4y-{3?%>WGdPDA+kQ=!^G+EoT zh!Hy3?JeZCp5W`^tKM~o^LJg{jH?&)p_;qyM}JNB-v-)#|L0wYIul9K>LV-uUjDcC z5#_Y+sf1*T#l{(!Aul1rCy`r>Kz420dG=S>B+#Uu>5d7!(ge~B!T^PAJ1{HTxuTKV z%PA5n2xNMvaTJ+oON6a`Y)~eXigXwFZ7`Sm6M_vH!ZL@YhRo|yeFA2M;l&j|RZP)J z)GFl5MN1vIQFE0d>g_dYBa%X*J2UGz`{T^kP?m>K{XSu<=^OA{_z$p%ubPmB9gQM5 zM~x0n3!3Xe=vZ)+4KHsHvnN`K2e_@AKSA^hgip0;P`uk~(uXAl{^-H17TBL+jSc0O zb$_GjLln2GMQGMgxa_{gBe#Rxu9&yH#On_bl&n{f&d&`7 z{@GA;PIp2Tuu#g;6x?62{kd~|#n45=mPP`>8N=%f>=uug0&b0d^XAs^+jjzwwQCnR zrjOGqqZ6{Uf#Q)mctKARf9D57VV>?3zbllRmPp%o{Iq}njwN&E%w8N7HGAE5?A@=^ zm=Td0Hs713v9{rPzU~Z-cPxZ#2O-<3LLzqLp-CT^*l$`_W*v)Zv^JFG>i&R~drhxu zSZ{UYgbHH4@r~lxlpzcIu=)x1JAqrw)t#gUyQ&jd$Qr@t--ydtn>lKu;}eHP1K_&A z{`h;t^IX6)Fn>sZAkP`5%;FhF%Q9v81$h=*s+6m1wCU@@htBmRiNWJj7d}cE4~bR4 zqbl()H47j5UkiU;UHAj0HfCEuh&vb;#`snoY}j6#du#+A(h`4Dy6BQ$2Si|Ck!sX%Kf^s9j@hYhI1SuxVHg zI^{No((~%}q>i^^RU?7V#kuIAZpsgar{@77$ENIqekJrPq2DWb-~81MKK>6mXYV+i z?ehUpow&c=*mJLq?Jv*20v~@VPrc6@^x`Q<@}ij^)}bHwiqmEpJJ+1xa5}-*$2h@x z>ItT!FeYUv9fd{qJF5%@HAkT*rn>?cUSk}E#_CZ3WdqxZjsmzjXySw6**Wzn958*9 zjP**C^s{pG3nluDocIcnRh#1=(zuiZdyw3560+x8%&|YoIvH4<0$f&nQ4RmjgH2q1 z5M-g`*L@TFr1VL3KtT%&zEnu}>ShRXWP4=zEWgwErFUFN*;+Jl7TegjhL451JA9?U z?wS5p*?DU2z<)P|J0V@t7YiA~Qu@vCVnVF_A72bbSAlBa@nDy(Mfk6?$~x-@a$fLK zf0Yl>2`OK^gmjb1&i=PD!xLIRp1_|=Yui{Lo;DtQw?WQJp9g>* z(i?Dd2lV`1HN3HPc$_51M=FZ|{|CcveXbnO<^lfCd}OPZq9y};y@i3ya*_QGm35YD z?mh(F_p7RMVUg5*HVxcVSEQj@NNbUv2n4&V1H?lt3QqD*^+$(o(P4+`4&ra%h+PD- z?(CVpSCMG>On3nhS7*-ey|K6N*@%Lf#6{8kHtOk1VtLIMf}{NWfVw)tmx-gga*N4M zEZO)C#L66=)-TqVW@Q^Nn3uoK$~=fQm1bocqNqbyHc><^2efF;Ec?TiJcL>1e?ku0 zOMHm4;?0_4QCPbyHgOs2|C<9ACDA{bB=vx#ovS;EyV!QASc75l2?CpJ>MEVQx(x<= z{i`t}M}{KkjA%C~T!-X;RC!YS&sXKaDglUo!8}drkSB(wXSzzlZqoMFy=)Mg zZ9&bpX(6n?MxvbfDoW){`}GIc>?ct?YD77Ydp*BH!R~Ws_FtnNGPqz`;l48$2$Oey z__G-ofyuM{EwZrKyhHj%_4Xg((cDJ_U9X*@|fGY>c# zEBUlp(uqj07X&9Vgq{fB>PmcIbRLhx;|p6YKw{J7`SiJut=#bB0&FdwhOA!1D)h#6y$@qs`aCeHw<-p) z3SEQ@PcIsqJ%uNhL@JAUg0b;iW!+g2nHDGt!nLwBu&bKPQE5YB`>=ZP_S?%05A$@n zbc?@K`r#Iz-&6!OXg^+E`vp_1;wi1gsJ$`jgDN>FFv%~4F3k?;&QnP5($(PaxEFqE z3_mhu&@5k7+V?~*Igi8m9?&b8Pglr%s^K`*2JwKuGS*k;Au?^y!k(;dg8dGaC6~un z0l(7&yNJJqBjBx>v?TB~teLddmFQcOm$4xS9Fku`4E64A4KY0aBgSg87z0U+c>CYL zHpz!YfjeQIX`XbC{o7CAFO7}=SI-rO0uZv$Gge>{CSX0x@aZ5_!3@&&=e6J#?*|(Q z7v|+p*teGXbYu2qPMDXk0v$99q|Qr62!!WLm#&#KFTapLBT@#=>dxxL+5Zk38ys>H zXqKsylmo0Fia%VL6G1fC`rL-@&;#;KRlX6JnO^G5fG~!H0cQD-(GT3Irs5MklU!MA zA-(&OW}ztmV)cXl#v>L$3H{_s&!fd`1KQiroo(=jE&2b_4)D=mci2>5p=l3#1D~Mo`W6&$QEWIihU%u=<41@>mTL z>`{`069RWd(hKH*w~T|JE*pI=BO)bqmX{X32mp5N;W@Ks?=dgbSOG2{b7L^cL+5p+ zS>K2E$g}gh;{xABk0cX#!~a8pc`9pAL294;J!b7K@ECT`@K|_EG7NcWOKcrgv>~a% zF`Y@YeV|YjU4mXdWfnQP@9d6R?x_qXGh6@j=iGDu01^KM%ox?o9=^HVlSgK7Z*MST zhRmnA0qoB_H^H+zX(`=TDbnn8NNCsJT?dq&NGLrdmjg<#tX)3uu--{!FOf*Vc;j72 z3y;|vlG=AJM4|zjMG{b;v8$8=(mHC>T$>Xy9IqG~Zqs+i87J(E=~$35Aa%0cSb`Ak z-*EtMz3>DOYAxtVQkdKIBfUsY;6>7AQ^!luh{h}dX@)2{$i1xD_Q_B{SCsh_kb?sA zAFJ5|7sa!S*wClc(=j|HWKI{v7>TBGjSp~V15lR1jsOBbDPCj6+YhsrKXF#zP?R;o zrL_&-~D1e#G z!{O`J!`BVsU>DYX8itT4n9_mF+R*xP){U&&*$$kr5{|;N6-BEH)-8Q*PotUx-1!~D zr6aH|X1c!@GNz=Cj~g~7eN5(<4DFVOhO5W0j~2qQMYNeQ3kPXe5?dxM5^R|T#&1iM zEoXtlj1Dw(pWcESI8KXI(%NBwhPD{7dkxKeg5pe8xDH|a|R>sy#LHa zq;Lp2KeT8D(J92=BcHw2t>?B0Na4`ak5V{H`{y=(VVxj!9NvXnPJ$0tk45jsyLVvS zM__g?nkC%OIv)}eZN>w$;|cE2^ECzQA!Wc)i_Haw8z&(pLSv9JC1PR7nDo&ZV=_s~ zJ0#@-J!S@;pJ9-41t>HvnB_naXd;<-@#9A>UI2jxr8Wk&=p!D#vJED0gDWwkM}@_} z@z)@1+XT{*0Rgac$$hx$&tS@fAzVaAVF*fb_4cZx#4j>R7YR^T_H0( zt?%4UuBmv%*D^dO19Y&y0Isvtz*+5q%iw8n-y>9EX?%j<`F`>#!bn83A{Tv+E5dA|uJyQoS^w(a% zMkmVHAIuZjt?5^hX1fIfCf}gTVcbz2A#Q6qox0p5t#A9aOC7pwjw%^>D|6N+J+&X3 zYO(H;;mqGK0K(j#2$@sTCMJyh!93KBI08qZVM5%|>y)(d@x!zydATHS8Le#M^Nb!P z%8?v-6KG*N4Vyy(L}SczAwaDf0Zw9y;cnZ*^J~VOjVab+il5n!=6LIcxM2>*rbfnv zYEL4;o$))o#=j#!*m&u)?AA=+xd2Zw-DEVo3(dARPbF+eE3zH;fcj#dN@^Bq-$5up z4Ht*ShU}0d%L|=(2Q=+nLrzS3VIQ*8Vk?Nbmoe39 z%i(GLV!Dnp-vzs1Z(qSb#JGOM@k|Yw-9a0x7$jrcN(DKSnuyCdKojQC$kT!GF z7{dg|pIckpxKD&g4}DvC$q+m)(v6PqlucwsB`Qu8!h@9$SO2p<<(YjLXl{=US5HHy z&eB&38FUVDSB}mYo2lLMlEs$LBK0$z^D_y{5!o`8-Ddf#_ZX z=OV7ynAlAXK`m&A@H*yB0YDwZ8uV36b!Bco%v$!unKy#PqZ1yiz!=soEe1($9+BkG z5%^7)|EDAW(RAl$YPVr(!KbR}D0R@hp4xZ?sm)Ln2dSGC#~1MCt_Ii15nQLeax>W0 z0~Fk)as#9dH2)cHwz2IErFZ{hV+W^s#qhdhV;^AO8Os0L#`c;H;~Vb5-3SKiqlx^zMuM z2c94OJmvztT9&(p-TDWRQ`E6&oSb<~Nc(%%PRwH+o;mQctWVTD^(htNRi?=_-CTFtm%5ZY7 z3pQVfpF{R79tKgZ@GK!3M_X|Z;u6I-aj}~1{r;)FX5lpvtNDX9Fuc7+F2h5nx)Rc2 zF2>l4Oo9f>*mkanO>~gCWPZG=`-{HW3wbJ%yUaxHV@&fArq8UpuKSapq9;T~za+0H z5GR@{(~n6%x zb6{r&0z2hH7Y$z;0iVNC3heAa2||xz-r@?k3F9uBW56!=yfNzCo0}&d+zUF@u1)X= zKa?QcwPW3Z{o5DMoH-{UYU=Fu;KlEilQ0ZBVdqD~lROv-5EglkB2)Us_>dU8OAU`M zL4%&wvpxdM{ed&RQMQ1uL1q+sIjvA%PS;v}C8qt8Z$oB{G6Dp*#j5EW%FEOY~d-PGw>p4 z3AZu}9D>(d64LAH@p|L;#mjiL#c|Z;ddTg}kFr~oc=Q|1LB0g@IkKeW=E(>D1f6Q% zK6pfLJj!-&{b}F6txIOin41tCJ$F6mO?%~0D5{l9ubZ7rFnfN?dumXse@t5~Ux>qO zWhlO4o@;Ex!O8wJ+Gt_yY$N*9GsSd9#O;J?me?KJ%)0~IQr#WlsloFg`a--$G!$>c za;d)`ni4b%htyj68+dupNo?H}O&PA7-=tTvrX$T!AQst1*vp(U5otU^&0((&Ozsxr zLdW$mYnoY+Pg_-;xPeLCr?rINQSmw?sxhQ)9iWdxW}<+?rGcKX*C5?T*a zTi;FNx=GJ?_05bkG~12N(C;`yc#)r`tzbTQc#*@$SV8z~+aTcb1~J>4cm>ttwl_gX z0^SjfiveQp?VZ3*THcy9ba)^!E-V9ftB#lfjo$`k??d>&rMhiUP}u!`=LLd z=jo2q(-C_hA~|Fhp2mU#&s)7WN_xH={Yr_xC?~$A{c3CqvQwf-E4>5Ep#$p$2O%mS z@N|OeCGo)V*q8!f4s1=BR0Ra98ymD6bf^_T9k^5gJP|n=HJ=6UX2$Zx0?Sv>onq)3 z0!tE>&sF70)Eg5>1c8l{rD7lgn=-rK&G_{g*Uvy0*iH0t^U|^}p4Ca zq&)iJQX#-xZJG67xOM@pOwltNe53wY-&O#QG^H$Lno1>;g%BYC?1X1P^La4G{lL0` z9x+G%34_p0Zr7B+J(s{<M^|5bl29T+Nh+IuinDM9Kj2K#c(E|043R@FX*Iu^#9PeF(tk z&gv1c5J=T;D7#S^uslfTX9@QxaYULkTTrtI>oHf)Y5_N3JKhHvyA}K+9stPp*IWQQ z0ye>_<|5cg$f+&Qqk;)eHGGsh$IWwG1Ei}rI=~e`Iu|8Tl3!C)wiAEuJb zOJ?&2CLNv4bR+J9-2`ut2G(*}Dq!z@%s4xx5`(FvKD<;cL~B~dM#Pd(2eud>x&VOa z-s1sr+>N!`{xM$#(S1bHTHuwDpJRtd>3gI(kQNH9+M$BrY$woE-l^R;WepEu;elc| zQzsfs@WPq{ub}`3Px$+VN-O1n_;m*BjtO)H64jR9uc;<81eJ$uP)!CwDVys+JPzUY z!C=4%xw*qvyfqu=V;0VnRnX2ePCucb`YQm{n=#wN*fqll75M?1#*ARJkw2g~R&^8f zI)XKN4>RYTVDbcU5mnFt^Ifx->75fk@J8@yEa5`B0}8&{2{!(svH`O_9-N>_ysL=6 zqJ$-j1lMAWU}~>KO8*cP&T;h~=Hk2vh3NoKO=_0mz|P{!7m;2WCc|3TQ!@WU!yW)j z+68~L!(R_;Y)l3uV@l+;@adOAv?(9?g)5a97U7OO#RCu|`jc5B{TW-)oO(?~uf*^e zM!k-$-YD)xhw+scM3#@9iimZA;(0TfD;3XsrXjfp;w!!JmF|3iD1U*qHwnK8VODU; zu~2HJw-O^#3xA@8qsqCOVtGjyG$uRoBIvns{H(x=LC@{VkHIORqw;wF(-7i>A=FCG zufn`XQ-7eT-;`Wbu!}$jq@^IuT3^Zf`7!G54M-f3j;wqaL0?#a^0_z=4M?LkfJXbm zkAnYK2>u^QnGGp_gxG_r@zE>AReKQ*TU5!Hiwy4`4E4DrKL)MxF?rGfd1=W25<#r| zi}9?fk*Ew)l$c*lJEiBW1ZEy)s0dxH!#I$)p2$(j zSeenReid@lV4Ay`4ojC!i^PE3aK%nM3RrjbPW)msH+cm?i{X7 z; zrv5agNJqfH`=!cUn5}9!YoR98>G4aa8}UE|EJ0zmm%L#oD$JIwi4R0!ww|$IxPCF_ z(q#6<4xwc|tj=X2K#8xv)>}I(PgLuzK@JK}55`cslMu~Fh~2a~tJL{OY>NH83g5qi z9cHwA%U3?&c0KtD%>`Iep5>9aC_0p#E_&{M8cBIOx9VHe!}6`n(s}V`&)9A$eNdSCNAzc7 zE|KM{vLn(F!5jaWPlBi6SHg{aF99WA=iQ2}Ur_wmXJM~YP*c^(XZ28g02L;dVlR{+ zbb9m?pzY711yI`6Mw>sLW{cgp!FV2h0y<>Z)P#YK=ibk6LRx_Gs zk)aE0smj-}`~YWRg*?V>Dayz)HWg{*z@e}% zS+%ReIpJ;3`Tk42aLnjJxNDj~n8TJ^KN7MV6+ZxDRr6j9+T~tFkRQ}`baQv%;Xrny z>M7VM6TMkDBwhfChZTYnAj&IA;t6JnS8V<4ytvXQ&M$?AegXoor=lP2m4+fJrJcF7 z_tw6^bK#)m5^ql>%p8IK7Wzha_X8#OG-b#I&3FvZQ zA)kgW4^Wr0sLQ(VR&2pGtio)kbi*9w(Hv<_O$i!XpGdj=n9WTU8f$YC1ipd1eh{zS zMa;cHCZcd-*3gLH88F2xgLf0<<*Slo4{#zoh_qY_vzGhB8_(i4iCpu) zv|PQnV#!;Ae{>Z|Iaz*HPEr3$IRS$L^ zx#tJEAYEA#s7EK~IKV7s^SVp94F*a2Q9gvkd8mOVLwus{#J8Ms>ZQGSODI zm=(eUC0{idbi)_5(%K7iy|vo^|8xXI+$ZtRauHk;jeYs^$0%g{ibVXDIbvp7I4=NY zmNYoGfQUK3x3TX*%6`nA`wCg?PssXKtv*|VlDBngL?s>4UX|v9nO)Qf%B1Gz2LRPv z8xH?vTBv}VPyslG1o0|t8m-dq>L~S zIi7%e1z>F|!AQVAU1UYVk4iPJ1|S+5utLha`3pm|btd0k{YC_Mai+%R2{KnJUH=iV zX&hEjVqq9JVhp!P;&m}Kw}c)
=>ux;LRsQG+$o*GyO>naTna%Z%WWojc`X?5Dube#T$#0Ds%yOuSQ*8w}>!ROErH%f~0eF6D?>{sn#t(@afB@jbgst)nEut+&B z$y0_alX#X4#!TD=c@oMfz0|NwB$~un$u5t?SR2uN6@bN~cwoN1!F=t41h81FV|cw} zwXw@WfN}}EqDUUZmne?nl87{1E>wbe0ohn**c4t9hh8q2ex%l`SBcc@Z`3SIN15t^fR=}54b<#6yso=1 zf^}3x_?YzmaVww=`UAYcU&$qiVVDNogI!BI}f5%>IuZUUbzBR$qks_28g z*#I>e)D5>xQU+o*fJ1}*(9Ag=XK@b4GmbXg8zBG(v4*Z~ChiR0)vmlkx0~C}5M0~1 z5w4u&$h&EkaU|8EFg~=(kBw;83+>WIrgj(6cDg0-21wVM-{DF1LNFnt3J#jaiGOn2 z@A)b5;XQZ*tiMO(sXZ6QJFzb$?JWKio=7V|x@yg5(Q+d>0UZwv8Lc*@1Bc@QDh3Vx zmhhvgwaUN_R;yu(H`EtC7}!(}6AbKny=!tRSY4SpWLVe?oN?q-IP1ik$x~=%_Fx3N zFf-~=yhD}G0`3U^y}7NwZf;?;O3$gla|X2-D@SE+xalKUIt&AFLjLZwhx>a~_p&SjKkvM#v`8$NHYN4s1 zP5)!hy@x&5L{5XAiz%e$#FFK|d~i;D?;Y=->IKnm(#5kI#T)VcRWR2w;Ky-6Ej#vt zgH3EDZ$MB4LMcSU2F*H3@uya5m#IRWlJR zcqu+=mml$G83D4+AZKaiDQMpjV!k%k24bKyyvkafD=kvYBQyAI zShHVBSM2=kyoAj1rM@uo3efTm7H;F*xMHx3w;P1EP}c9HCw7 z);v7MNj}Vmpw7?xHlndRrglAK2Hgt$29mk%+vTwLVb(&|`lt(JE35(_>Qei{y}7wa zy0SaKG)w#=@+GA|vW*4@+PC*GGU*=N#V@R*znXMxoq4uWAvsmcbK7KI$iwLEF!h#H zGwEbSCt!E=R!vD72NO)Kz;m_<#&z2d>5$Ak=YG6DD!euG7ISXFams|7vmzpbX2GTt z0(a&(?ULbZ>dX_+TMByXirz^758}zLEV&hB&PZ0;ezgLIN_T1hTddr{Y@HWZHJk62 z%p1T4Sc%TfHo(N&0#>~qa`D?a$5pmk&^Cn&m<*FJ8Js5+T%3bb^Z?~F*mf2xv1lG% z{aS3tqfr1hG#iLG7r2qw%s}K!JESolx1Eo&OMdag6R!Tl7JkO$PF|b>_Sy> zcjmL(v)RFXHeFy_B&8c}#jaJ$HZ!erLZ#cn&S|^}zW4yD`w~=l1XOpj{HaV?fa2h6 z390U7EP}@5wNwmIhZK=5J|ms_{Vf3wInDANtN|{U<_p@SsD7D$3kysyK~F_0K_ncq z0XhlnvPz`I<`%U7q{2cxr+pfIysla1TNw>)Yu8l)&=bTv4 zY+>6}ZV4HyXfwn@$v(~ zo2TbJ+_L~LnN`>zsIUW2VX8U|j_&3+RGB2!=r2W{EU_r0K(LcHa64Zf)s{u|=TRD) zXJq3=-W4dBtGXQ)RWzIDPB{xP`N9;FH+K_flXEQ;2p`r;{+2`}Ch70IL02B#hD8sc z>4S)25V7s&6~GWIKlmtp9=TZUJ4!pE*SIykBF9D%tasUYj9*x@2Zeh{P-@94r%Hl(8l z$)J8EU4iQzBx|Dw-K0n905&OHw)w5|qKaONLej{z*3gtUHXSPzSs&c&dNvD;X8sEr z6wzR9HRpE-cZX}7^v)R^W|hxGzFeDcK1NE2CX)p7g*M+;cVeSK{PiAXeB!L&Z z0;J$FB!??!lh{uc$_jQDrkTC*Pl;b)X{}M|)0k7v%Szd*Dp)jDa6pVjM$V-^+&&%B?{ax8zwyYc< zK!GrOr2qh-;YtcmHh%k7*>X`%Vex8mzdA7R+p+;eaaASe3#|E*>|aWq6W{bq2uahE zTdyBmBq+^JNXlRl7V#e}xi5dKkpsv>*Mo!LFWXb?M)ds`h_)=f7ca*s%kHyfNHfOz z3A{NyC;~^|DG-b2gyV%QwN%gGC8Id}Pctb7_6FH9*lD>g+WCk&W;N9}n2sjr5=-fT zVyZOWvSPN1hC5Nw{ZQa@PfF_7o|(Tk z5++^_OY!2R8a5X$_Xn)HCze2GJWNZF?t!xOv;^;7vy4h5j!hPLPt!Iv@Bfxh7tc{C zH*k*3K)2zD7gZpb+aONRx2qOKG;&Bnsgx9tuj}}lts-D1)=_5~hr|<>1J;O_6j?ky zNsJsF7Smtcb{uqciN0o@QFlx)eOQr<4U3gk=jGTUB{oM+Eiq{@xjN(T5;E_nc=IxM z;Kt z2cbyD_Zoraa{lHzTTzP5=7Wj(nWgvTRg{;nkK|i94!Ib6SN;9?iOUfrit6P$z8mG` z+jDBon>VMDrq39$q+PoaKT#=36TB{J0LFt=b=??c;_X>Uw$R}IavTi+qviGO9G#n`l;v$t;o@8wBPFaIh zV6o7cs+2HT8{q7!Rj#HBrYTAXs*ZswSwL*}{{zJx0uogWej)2t!T&*CFgw1Rwd*XT z_w+M_Ic`TO?|f7_0=vOn<>=h7XEQIEA#!S!qxz_F6xG`=;%k*7Uf*0D$#SBT%@yNJ ziLc3Yk?pIHfM$)reSp3Cxh2xMvC!}ET2hgU(aFP8ho?I{X7wv! zH}<8|wgh;Gr@Qmc?7vPNjX}tpyg!F(H3gj?Ry2e1V_W?e`K(y?Gq+uYJXgI5=y!4& zl31d`*&-yE@#5lSswnd-xj)8T<3B>E-*I!!3xWR}umfW&HIJKGBtB6wNgIIe$YkTP zS;PT{r6qwN6;Y9!uB>-CuFvi27J{!_$mrS)*nD%IT{jpkZh~nM9G&X{=kLzOF58Rk zll&qm8I+`ShflP9ZnHsHl|KRPr|sj5FEaz^3ueV*SOB=xIyJZGAB8TC0VohFG-ji_> z>*7fg0;P|_)`%ch zQcW-)ZY;oiJzM&R8GFOugcQXJN2Bn9$14HSdJuzr+1TZ~Y3hoDm-b2RljiWAb*|ud zk*=m8-^o0i2^rqLpo+Za|9&NI{y??A&iQ-*1b9BNF^6n#U-B9iQ5r80JlePCLy%*1 zpKOn@GtVsc<4P8O5ZtSvB$azrViq~bt_@0Bq z6+x8E0j*{Lu&JCA!?qrGf*so%T!u@qJ?k6iNJ@Jq;8WvW0GZ+A>6-u!vFot8QCtCk zZO0?N>f8JZS3Xj`>&I0x#F|q`qu84~N!=n7rpkY2i zo*sgYDMCCA6<5y3zQE%fy^O%_K3U$Gk0K4{j2Bup`u#e2a226xXFCD(U-P)sxjFsC?Z=%yvm4SI)}@^~H}LMgHe&YDS+c8v|@i;Faw&6MPSS72=ij1iT8iO2@R-gM_m| z%4VQzHd|?7HfiA0{sfce6Swi?)kQFA@-Z3Bnaw9wPBOl~0Rjl^#E}3?*qVMt;iGC4 zKH4Yu1stptrCp1``w&b9jN>m<-}w2{IdBYedwm`Tjsd0X9JZ<5lgDO`L9aGldH8&% z92xbYs%bApG)4I&C{%RV3&l5Vt)S1P{sxX9bDbGnZ@FDB%0p2lBG|J$U&?mt{J zNP#av4N&$jgl8#QW5ZXfUGrRtJtLjwn1Q63=)iyQY0%N{!O3mC{X05~75ey~2d*ggg?lIa=T*YQymW}^b?ZE|z5 zhiXn4JCoA!2oUc+&Rzygt}`wg7vc7b+pBJ_#Wy+XMNG}$JuKLnB6`CH`!xc=JK_vPaIIZpiQ-i46ZqM&X^3c@9|t7b(&k;ogdW zR^48k`Wyosz@yW65642h)G;gPnQK!BrTmGe{v_39?;}#xktfdj*8BpTSr?SXU-0#N ztM9Bwy^dM%q|VIXUXIW1;_Ijq&-}2rgWw~^YsUn=O)2izqOG+66Cr=$&+a#~9%U6S zcW}j1@0F~uSKQWD(Og9Qs*!Me<(<_xiBd5K`(_4~-0=xQojuFYYJ0TW13~l~vL+Z8 zQxotJ`8#9n3TT5gIK$!h00-q7%{OcY^941~oV;CU1Yz>B`O=v}cNkuqBV4%X23O2z zeBn%sDmGd@#{VGKQ5Eazg7)j9;3&_hGFi(}1ue6bYoD?4>b)@5OK62snDW2r%AY{~ z-B{qdo-sFM%3`93tEwl?z2YsgQGO^vkDI8)JvKT-L_oSH7=K;;@G`3pQ!{#$Th%Ut;5}W1;!}yJ{ z7Vc)7A~sze%pCA2@>z9%fmb6bCGBbfxdIT+3|9p>q|6Xuw7^QR(hQqEeZnwY7H6g( z8NS;ID6YVo%i`_-aaq7vkqX%)Z(&8$580C(C!r)klruDXUn z2$rd;8}MGbN~@Ga?CJR^s0#ImvAy8HdZojzY{;&w4<>s!k?_e{6?os^lXI2qaPbW? z8W?TJEbt+tfi1zi&%7dnoK`BBCZhb<>2lL)O%T-<7Ee$Q;H&T4fv+#T#isy5x z`h32G=kpTv`K&V@!5fa|Zz(;;<|+Nc#ivwK2s<}{OBwUeM z%_Df8l2F}7Jg0o~^(m~{2rcJQHf(wam%~PA5G%ORJD3#4B7FKae?)KIerv?brf%Z4 z-^G{_qr%7-0JnyHN9QM3<`oED62}@H=AsUr4Lg zab5efvoB~_{JZLYVjGsAnLViEaNa2ajW`+)Nc@=mFA``dEdw^(nQ|0rc%-aE!3la= z1EW~;wAKSR%U02E^aPVIx&dsNth|zbYDEu*2`EPkI(D(eJX~W@8N3&&`}s)nczXIS zr{ve2MN@OURGK3@krJfZ@I6q@cMl6k^yqv0p(rj$;PXedPIUokp!@U6hVx=fDJ{k zAfjT$Ua=RzLhoQpVidbZV~r(=B`OLcDq`=79Sd;I0Y#mCGW(GKyY_+PcmLmWpL@UW z8qS)THM7^OS?gWzVuSYD#(dxd!uhlmPOR=o^o`V`{5yy&(@|ayX3b}tbhZW_7il`4>GsGdT6Fi|nnZg|K;;W|Y_fz8N2Q65$ zp9qr%fK!9{+&WgpGdxAGy2N-S!V@yOW#U3shWpUG> zOl3T+t|My#ZGK1Ev_u9YhTCCvxzMJLnET%&kN%$CsxVwGtinVlsVsnm1tei8N$9|A zfBKaqeB_q%35!7z2rg1i$iE`ljMr_)^>5*N;0?GFR|AputBm)>kW)-@7ScH&#nHM~ z>D6@u1`0X1u}!}N&VvH!R(mQ6vftWfdww3soEHA2hn@Ph?I%_P6cXq-&1<-|eYqKBOD|sAgAy?D+Jc}Uf1;`t{r6t9$9|_vN)v2X2i6n{v?m2xfi=>!{NuuS z5UW2$`1Xrd`Rwu);Wi7@?=@z<@B#M{%5Z&)@;vaHsOX<2nCzs=QzBeqqleL3dPwZ_ zb=T}hekBT+on^cR+Na^8aAbd#EAStx&??h`aYcIvFJ*qEJJ9#Y7wX$A^Ni;mkPev5 z_Uo0F!aYi~&fx?+EW}}>U#`RdJ`OM=L`1xl8Tcg%o9UNJJrmSlPG!I9mFB{Eccj>>51jKJjBFSgG+_h`M0HGa`E7g?4KI*N(10Dhm>|n2Skb1lwPR zxqL9510-~uijGaCNnrXw#Ca*xjEM72GYwm0gnwABR~E4rRlwM*hINu+gUo#ptFaac zDu-3t7K`2EIU(=@*a0m_DU}0A9t9zJlp+7EQ=%`+(^!h~8vQhmwg4eDvjVb%LP5rK z(e$&??0`<-70OxlHumLFc^c)EIC%NU6mCsVJztmB2aQ8s~`!K|q#LLqR^g_ZVz*6oTQkZl-N|Nix zDunh3`b|FLBZNqHA94qoW(m=lWrDi6kSfW*`Sw)ai-A$2lf6xN+(m@PeS_X0K!()g zb=-QCn2;gIB;DgSLKM3TfkS{M8$=U@_P(Ks2C3rAkZNH*BY02M1!;UOBlEFC%-g}y zBa=F(+Frrcvy^1t;+A;i7V&Rxa_j!EZu?MC((`7>ySF#bJ$leTtDR^6Q9h{9`E}Q( zg9mo6oENre<(%1zH|@8-$(~{8P8izPkuX&-H3WFYm%-3d%nRmHJs>#QI3T(<;Z=uq z4*OMyBUeN)!^iM{U<_=?)p7<>7?&{wEruX}99r~5@lrzRyi79v<`tcnLRLv^v~OP_ zft?AI{9B;p0S|r)ul)!72ubh`N+bU}ZN>xe@d0iq1Zk`NkL)SUpg*gHJiHCE<&KoOYps5&dujDFz!o^VKo{Tw zWwQliCzHM~>D@GGozqg!M0L_rO_P3XY*A&rsB3@)8Lv9r;uc(nL1erLvjWp)&V+&m zY9A1RoBLBA5a^S>zfo9;x+@cCVt(qxtT2q@GGv%RLd`-=Dn4agE}bTLb6IZIL)$Fx zvZ1V5I5qd{u*2(4#4U3csaHy!!BiI6x4kd#w9K4Vf`}%Yj&lG|cn9DlFaSPZ7zTX4 z`hP#)q3l2@lz$TMHN-JmZTXm;b>H@Uua9sLRnT*nEnfK%a1d90;Bl{cgYS7#TNbAY zAJE>PcY&Lj2S|)k50IEPtP#?o%?T1?70zqM^Lm*50Ja|=`5hxb(4XHbORvb|Un=8a z8r~u^EKfcm0iDy2+2BrRea7Q6*&rzzlaX1c8ky1-ORJ1bFV$MSQV_+n_`uiQ<@Ndi z4V?$ZyH46Mgs&+*^Wuf;85LhM2Kbt98Xq{d>B*CmE9cCau(Esi@tY3VvlA=}1pN5JM1)L>F9&iTDAs+r~df;$uV7^;9s$_Ol)#^8pk!05OR@ z*-}4rvxohwhu=4-0y66e9Ml#92C*ej`(ov&Bu9=^!cn9HB=b+yWk7|$oW}zkRO=6r zIkx~Mwgn&R!@OMyEB&ZvoxfAm9ydPTH-#-2Ks72oQflF3N1mLuJdw} zxXD%G>Jwu66Ce!Mop|L7#M6HU{;d-D&3r>7Flnl~{+kHtcODBb6Zk&kZ0VdUbKF&N zHRq*mcE^fA=umPFc$Z;&+mz|h2Dk2fAex={u=)0^j9{q(3x0^8yC}bbKQY&vpvDLc zsaWR;-sr1mLQ_w8$O-?BCJR++uzjn}Tisn!!)z9==bwbl#>h$wAe&zoqkgvT6hbyr zD*zP+bDUdFsVow)f*48ZN-OwZ8Q8ByY#vsy!01fnJ75|K0ssz7BQ-(nD;B`p4+7AQ z(90L9v*RO1`BMRpb-bw?sz1pl*hj3S%)z`m6JkSDWwuM8wXk2CV1~> zfPo4)jk|b@Izn1h72IPme%wcgAJ+uD!hI>2l)l4{li6?hR4B_5 z-u`SpxiSx|d8S1HGU5!#$N<8+)pUq1c8%zi%$q^Rbatpz;HQ-{{D_EnN47j2FHzuj z)*vJf83VDb$(TqWiBYUY`gKgPYh=eH-U7c4Q-A$M!9!)hXh3aO!Fj4zkhZB1f%m~N zBk5&BnA^pKxy>c`#~dC2i3=ccET5zK9T;l3K%$DdJ&H)lD>YJLEfRPxro=S@!?eUO zbJ<}`@{94Y1o;iFrDZ;Ki2g7*YE&{%x1Ov&K)xjYZxY`pP6WBz9L;f)=*GOZYmZW} z2IFQuDSdp5thWsnPq%LAlm232eL_cSlc1aZ%2rs z#iWsGm_HB(e5y&Y@XmTeR(~y(6h!IUhC`Mkro4h3#9_%YJ|$T|Cw1qap1>ge2=C?- zc-z8cK)q)35fBy!VdF^HV?(N>42Lir-`$^ak$W!doTwh()#?paZj6*pwJ}S_b7<$M z>)9`}JAhuW)nfBB;V+#TANGrDSt&f81`7pG=N5c0(7BgoRpY-QkEq8tGCxB!w7~td zkk59;*!T>nscoQ=PKc>a73$GkrFRZ*mxw0Ebdwy^D^9|DqYGIUi-E8!foMs_Y8t;o zH={k>#ry?mXQb8w`lA-m24RL209G=D<%8V)d9Rhn+oCEn^UL|1+u6RKM=+Na$3Rlr zGqdgW$UJkFR?OEt;|;oKILZ!aeBaWwwCT~s?vXg%q`{f&kXCUP%hqYM`~U8}CJIp48)dR{EBL%a|`SH&9`ra}a^ z3kc|nSIkmGIie8etdBH+ab6)^c`i@WH@|a;*7>aTOQGc?vqd_t7f|1_g?czo$Mv}b z*XJy>ab|bhUS62HgKx3k4Kn{#104QAy^5*vm9 z56JP>O6VkU5ro&Z0bX3d9W`i1+zly7Lz{Lch~!L+Gm}~f4x_Rq$7ktVbPloF?yG#0 zogj5GTco8)S>P!pM};UWfkJ8kda?_*2z86Fu_N~batil4UPg`@n_F~5dt-hskJGoj zbBNRWtQ?R`tBZypoND7eN!EkSPEVl%P{ujn=sUph%8MkV<0n*J7Ew<6tp@Ltt5|R* zEg1a=JF5aSG9gf3EpRc^h2ER=EtVs&r6$PnI@o~k$AItWhP<4#I25a!11%0RX%PVy z^lc=m34pdE320rEv4z#bf;+70mE0clOlJ!)&z;7l{HvJLiOOl0p2R&L_=}6Sw9-d( zb#>vxP)i#|UrsZm4NQ3EiM$yp)(Uejt^&Gl!AM)^VqZm@jd3<(yW+IpuLP?j##x2! zf?_ui*wq7tOkrSPLJx}l{Vq}=6XKp=U;^q@Z9w*KArnxqrY>Yu$TZoW9hbvNZKFtS zW1%*vKT1;iLtCw%uio~-AzIsWMgJr^^|7kcw$kVXsH^n=waDH2##bV{ynzp97`Gn4 zYji|QP&9U6;*EtPLk29MKuG^R=j<=aP7=^5__P6pv_PK`dkyIFZdN9M>Muev)&*Lz zGal~fCIED6^XfaeANvz`FhCt_s$x-f2S@U$t=LpgK9#=DI7vxEmfuAStY|HK1|AVz z0DHw$ud;R6*j+|sp}tZm`+JHj9cDr3U%aBD(|oit#qkc>GTwIDwL~2r$`OQ;P^hWV!h7qKJPG*cm{`z$^PAMnqH9md>nY z7v8e!NUgdke15iiTbV;lsaY9Z8Nr}|IcdwyU6^@qZtl84(`S``Vn59BG#iNB>q~K0 z)eLoq8ImJLki~IphvpsR>G-oWeC4IBkR9TBKy-nsOlR?OLK$VituKp(><2w8n02xU z*klSm=JiCnoPsAqJ(dfSTbqOID_AzNfRlX7ekjAAHpHJkW-09io~Cr2FS3q~;z7CD z8^9Uwu^)6wBC92@)F}p@$C5#`nFjoTL7+kF$Z>k5QcY0pl7RY38d43wyv)+I%BrXG zGQ@tka;H)f56FWrgKm5+oS-N2a-H%Oz@LNwfo}r#jQNKA3zJOCyiGZQ=wV}1+S}#8 zfnH#OO4c!s5asj0Z2Acur?qzr;k(5gJW%KJv)_}4;>(vIB4wxcR!+Qhsn@jwC(iH5 zxBVsH#K`M&ZoX>L`t;&$j`CFUII@+GzBS0RA2N~ zH22_^q)3lsO-}*x8=B;o6w{ENXeGbS(y&h_6tlPDj?b5J2wDWb^VUnLCScU= zw(m+oMNpsL#E`b8-)kSSwL0YZ>c~+#410y80`anzUnThN&>zLTFDOmC0_;#Qpt~(P ziho_BWYpL(0ZYJdXzjoAj6J5(3x@!j(A{QhkOF!phwGHj{2+_(C-C2tPR2`OyX^V7 z$Q)@ajiL*hnl21%Z^|4gfug+lm9qG(9FNkfiJ*-KN>z8AZPY5s&*W&D(0+o;mLLpj zP!Vo*0fMsznE*2g#_`4)Qf6!Bn##tevmw9P#=adG>zmLI7(VnG*5e%dvzvNlAgGi& zf&ezPr%#%{oy|+!I7sezv=@@QdE*~4omrc7q@CE{!?v++NPusW?Q`a&2X~k`I|rZt zALCU}u#~}VZ-+8@c{WUGJ$7t>$c{OhAd^erO$=c*%3%zGsUEkkw84Y;a3`$Z%K{t{ zUi6Raod_1-E6h{NFFj`2rAiOJo3$Azq88b^~ei_W+SKIhk6B0%zf)(fiYoO(PyowS0Kp4TB zc(mo?ix-U7tIEaOg8O0dSg76ro5D1PEr5uzwgHgT11Q9e;5!Cl5t4?I!sB}<0kN3J z+7==9y{o?y2**<3O|0~-IxK~v+%F}XyloE!cv?_#|=jhRXJqP5FAzT>lG*3Knbq8Pq zHu+0KLj#tP!5FmtguPso^#ShiI<~Q)VU+};WHY2~r>eNa@o>=rC`@P3azeSFGy)nL z|I(HRs1ON6!ptb`y@L73a5{}4sKf)p;&*(Hzk`mL5Do`rM?!A3=j)wuQH{cXIm6T6 z0Pcn|*gMa0aFWqF3t$zX=w2IY)9v;x>@BtYO_$&Tx4{qEu;*pS?w6ulyg@8ODB26i zHyeVVTsGLCdkBJv$)$YVQ>N7!FSKFB-2|S<5@FJj5Mj0D2ra+@guP8tC8n;8OsBC z)3&SCFt|Z9-eindszevlt;034pAmJ8li%{mbTfF8272-gfHQE-@Qg>mnqm1@uzcJ? z;My@JsF#j6{atHTw_H`v1SFMk)d1q!S#AOKwI_M1L4Ve~*yK6byc@MLY_4^KA6KL3q6qo!gF=;kl z3}*m}8^|RMm^|vx+bbWhBWfV`3jg~nG>`)+=+7Qzr*hL*Uvc074>K3x;<}vm=YEQR z(PRl~*0Bx?yL_W1Y1(aSK64TJ*%?D{2Kn!2H z+K1~O{2c#YMd{5>=iYXY-%IikLQ*@je7)kU0g?@*to02bWnH28NVraJ+)oG0&l#p> zqrp*+_ITgG{@4lkfvvl@A)%;=iYiG4;O{x&&prf>Gh^rUN>>tvOlUonQ>oyPjUHw< z?xwAN;Nb1yAxDftbUoT&S*)zf!L<>o*cD=OkJdlfknmiUI5QQKdyQDB*9U&`IXhmW zxT^wD??45*E08|~G3M?2=~!HA^cQ$ws0q5#dcF$WSd<_L_txBBfA_}(5aS{lJ}s5^ zv3mp9iI<+AC}PL-5XQWWYr$wL4ulyrM*;<4o9;S(p@e1O-IKu$!^JDt(=%>5fP=9f zs9_7&K3o5ELt+uoo)0WI?FdnVLnB|pEC_=x=hs~Lr zl04u3W#x47jXE53;bZp(mo0Ggr%Ko#dc{-2x*PjRr?2f^DPCVRZk!*Le4!Z#)$cSV zCaBrQxfZHTilc-~AXsZ`9F z{pYY>?LV@?WOobHt0A7%BmtJj0OK~X7{I+7EU>?@CTv#547*ujDarEy+-qo9id>Pw zTo0zF1UV4{Pc)9JoCBNr%^lG=mH$eQFHk(Qb9j9H2+X5topn{SYW7BiOH7xRC1E7H zxriAE^O^p_o^HK^vKyp~SC-<@3Wuv~LNCmB=)`qNdQo(&f;?Yy+^JglgP@h6Wn%l3F zrK*jsUp1JeaTKnqazhvrobp&be*rYYeSDxBlr>b4==G{-FUf&$O7C&ISfG7`UVFAOeIQ+D+ZguYOX`+CK5J|OWP!JVgZ`W zvJne;Y`h7aq#ixKo5^$aN{L3E@dy0s)hbIL#m>PR<_88n;BCgBz#1K?9iobPjiqf& z*noa4t5oSGloGroY^X9D@DgLG5?3IHsmLw#7RFUog<1AfW-50?`eoJdI;967RM!YX z^~waHib9+WsQ`OY6T+Zi+@_hMf*CW{J1(i3`9yW*Pbd=l4#4QT9eH^*<5D@^MJxvk zh#<(JI(h{zhYDImEN#tjwMx7Jw8v{NX`R3+@VgkVMWqXJ>~p}z!CLIDxPGC?_JY^P zfvm+sQ#;+ZA3vEOR4v`mPL~i=*mR_q>&rh2#*xM&(iP9beJHo*?L=-pUFZ@+u9+9IA)@NzoKDN_&)P-l1;a!@Jdr!0YfmQ?9yHVy;y^O67z zwV8zHaA>Y>I*2q z_sdSWqXYA{@|^PzFL;*^XDz}{0A2e1Hm`!EKqsu!Ym7lEaBwiQz{zcd^f)k8Efcv1 z<~ojDEK|G*Iye%F1%Km1I#sP6Qg!*aSXmo~$TD7k2^Ubwk3S#Fe#5zX0*Xijs_3kd zrbM9VALp-N@DMaCuA0H4g8h!SL6xcqHhX1AcdNw2TibG8KZ<^l6EGLFF0103V&$ zGQk+6ELS>+F;kK!V`?+;MB&SYH;PsQ$-y#wVNb{)4S6Y@)vy}p(l=jmh%K8CJvDhK z{&*I_jba6x^Ym!;Jtf?SQM~66{V}vk*ea$$oUXC)Pg*C6nuh=i(EI8CNcsp#NhE0{ zv(iBl%T?|G`g4K$cCB#~&rlk)%_*V$uk=lM4pAkOW2U8GDflkymJ8ewtP=*I9K}LS zEdRiW&M3{gG8}j4`mPpB4zdO8A)K7?- zrs|^yv(%D4u%Rdzc!g&(+|Qsw>=ZPU3C)y4Zt`SIYC1K4Urv2+K!s%w<_voQal>22 zS0Yp}3M!aHn*%(lK|~Fn%J@hBFqkG8DxKEc&&|k0>y`2eu~XD}PG)90$ooWSOD$3F ze9ymDritt;9&nd{8KTY0qRopbpAci3>?GpY!enK85Ql^dE!|pE7i@6Iw%Gmg+J!f^ z+3i31vu2CVg6DI{Ubpg3O}7ck?2GDJGH91+ElISNc~xuq6*f>kBy{fRkW5pzb{;W$ zsatyp>)JtE8-sOO8qk*Y2WWpZEers}AZ0F&VVp_k43o@t;3~;)_jG@D&Vie@`}&?A z`h51&Ls?h$-!?&|t|0tvQ3aI(amRo;-FpwW?{hxv;XPod2sAa?lZ&A8*~uP2v)FJN z6Rn-t?6OZzER4on!Viict5-71H0nE$b(k8a1XZHAvL?4A22wy6{CLeS;)UzrreRjs z768I9A4Rj4etWa*FS8_GAkwNnnhCiCUXGb_So zjak{T;~22-`~=WSrKrXBs%m$tI*alKlyDfIp{~UBmNJ}~qa&O-|LDtJ3(6xfb^We6 zbv7-t07hhP!h)nlh}744r00PGiVAN^e`+pVNYA{9|2QLVcJf^Mk1zC8Dk*O=9F;(` zV#a1&Lkia%?Iq0lJbyMpP#)twaab&?lE%Ux==l&Lve8RGCM=}qtWnZ@xr>3%XQfwG zh{^MDguqe1qcPTB>N;X|)moZj($crM=?!M=H9X+Ag{p@BUBwht zLkEpBk#Gc%)Ir??41y1Z1ztl6-^58X${&UdgAB$V=pkLzQpf{UOAZuotOZ;Wf*@AU z-Nn~8|KCjrQ5AK>I7=#&t$=;RZeWwwLt_*3fnT+dQEST=1h9#uu_d&Mv+1-O+Ujv4 z)NzW9VaLSJm(hn69NI&`p-tiW;k#W*OOV=h178oye!t*S3wRo~16s1MdQ{NJs@ zz)=`@Og{2J=4kH@w*CMFpfT`xRek9jufxR5tvUwNRP`M)F5=@w7R(;ey3VKnd=u7g zX8c@rXQo%3F!kW3Kxq@MfyvEWJ_^yZ{DB~b(x#E9Mnt=^}5+YUqVOQ8;o=^CdT93l>r~ zCVFC0p!%Pz^wd#u5(l#SJ0*OMi2VO|2+DZ@Z{v(Avz55yUgBYXmyFCkOlD%-w4|x{ z5F%I|9gh;&0fZC&!W-j4`sRFmOXH)bOcq%rYpCNH0ieDH$>zWT0oQuE|u8VKuS^pj$zB~O9uA6RWYUnQ{pINoOfJ&C^9>>pS| zJ;`3cci;v_8mFG&JE#C92^yPIgub*rDLjBH^8lH@&?!1W!P9C8of&c1T zt+MSB3ajFcz|nYJq9vGTXJqC(#FmVUo{V8aSi@4DF0h#dmyr;Fs)uj99>T8@4Fl|v z{V8>r`vCP!#63*&9*1UF0=HLAp(tV`iXsy5v}>S3hhp9j0(7Wrs_j+O>_+m70`t$W zQky#F_!t^<9BZhhrF8=QiCqNk(M8QU0K&?|Tq-ONeal1f9W7@ClG2#vpq`?ZYnM_% zIeQh?=mWR}>Qv%PQyGJ)@Re{i0AunG!Ca^@KqD1q6!T#aU`CkBB>-&0X)Xb`|LECmPuXtY7Icr4Dh=SLL zO(#Y30!`kQAub~XlgOcL!aN%A2`Mr>iZlBhZx>2P#n$RSfV zEDA^(9JG7J1ypg?a{K4&M84ATi$5AZpH?Xb2!OPkH(DgLb860q0!9(aveYwqA$`j= zSSy^#WPeOEiWWq}&M@gF1jB+5c7?KxbhDJki4yi07xU2~kb4FH={u%MBTK3U%;623 zkt~>p19yM~tRM&NQabIf9tSOH3PxL2rE42v2&}=Z2EtB_V3q|c!K-C~`tr7dAsHf` zFZcytu+4SgBm6+u3iASd#C{eFm8oCqG7JmumOrJohL#`r*1NnuDAa0w#7FtiG-he_ z;U30nmD2upg%{OTI}Qkn&f3$3g)XOfXWrRmd{=ww)n`(T`W=;;zM~-4s1#> z^v35ePOX|7Ha@CT=W##pw`b#JSLNMCNJD$#51t&0^OWUmSZ<+ZUb ztl`PC>6;21Vn5DKH#_41a;y8&9fU#x^#{SuDJwu7O5~(NEnkvY+1Q_*jx&LNJ6*?MOOk zd3tqlf5rP?1%pX?S4cl`CT-JIhdABBghfe9F|A>@OG)~7$}vR1MkvWV$zZ2dw&%)8 zEC#0T$z@!W7jwwmMr&!Hpbw>d0+gkA(K0}*rz#5z89~Y#gQ22HSyNPH(LzXB??txE zq^WOF>Hr_(4SbB}w^S`m4AZNYy8N}?bRbYf1Mdb~wu8286b(HB3tUMHoMFCnYv=*747IB|yn z-oo8Dm|d^Z;a#|nv^|Tfg(8&>&!u`jW9gJlfKaUGHFy)$QwF~~RzHt6CsGv(H^ZH* zgLMF$j1X|>!#dR9R@abn90foES_K!esDJfnI(HFoXc0&8!>k*7@XDxveZi;@zl8uo z)En^2IeXcb^`nWLb`^7|bo%d;LP1XYrdtTS&4{0q6o${Tt+q_~L-`xN#;4r$tyo9d z=;+YoVemEDvc_f98FwzVy=bgh!Pki7jh$Iz52RvDHrs{QabG9L?I!B!a zv(fVurQcZ;44hA=H9j+Yjr>zxd8-E2F&38UdJaWTWAxMFXD83Xp3qw327@^`=;}k0MM!K*&j81n@jODXQ(nZbJM;Y7RV#0o_h9>oeoT)6R zjNhd0FV=HKURuO<>j3pN2SAhO^1U;J*r)z00~7nh9s_uw<9WOwTX=Ro{ijMSz}(L;z8V9OA)4?-RfTosr&079&ozZODnk&p}sX^re9g4CwA zt9{T%cM=8Y!>0>zcl@K&ae>>QU;Lu};>Vi~J*%NW*V!+nJm3ii5sZzM`+x#f)UK4RslkCPhfQ6!FG=`9F6+P=J675xhME z(wz_cjF%?_9ht3(edixFEZHB5s>%A5VIEhqg~Ds;>u)-IPq5NOiVZkI{sBh_#-^Xp z*l%gZVwf9(*Up=tQNq9eKUpFCj+arjE)ne<(t{U^8(Ux z2d<~)Q$zr#?u;dN2J1Br;Rws7u=f%QwNiR`r~BG%YRx*QvQZgq7Q{rYM&A@WLHwC_S^1mgPhz77Ir_|_qvn-GS4i<4m^Q-h2y?}=?+hMbc*>T}#j|fA4pjT6S{^LO zGjQ$^IdLmMO&Ye?sZ69P~xy8+gr>{@A>hC4!Fd9%Y~St840tK=cL-|igai=dggcG#L=`he>ij% zQu+@}8->JtW9eGEXZtP^MeV);XNTXN{qWF*+ygh!hd`Mqf=vx=Q|Eg38)5ICwcze8 zBz>&H1+NipxedAxumh}E0=pj?ai{s%Z9?y>6gB}R{D*8~(G4DuEnt}7;Xl|*E_N=t zsF;mrdVh2`JkC-Qtk@%XDb%;-Q0ACi5*C0`a`qa9AOJ1VE(QsZeIwOVROdjtP zX)_4Nx`C|VSHPrViu~gGCIPGViVe}BOMsdBIOO{m3NcUBBL~x2=aZf<;rSxErYDo;YXfR^7$fI8)`|W~!r_PiAO!tBEKqZdS4Xy&qTp_T`qqF#R#pBgL zvqzWutyEfxHXn&GGb>y8_#h+mJ$wuQn4rm`mJI-Ms3E9ISn)u<(}N8d225u}wuUvk zlD_4xL)4p~=rIH_zXZ^y?`gmU?@&Isg;z!Yd=+8?zY%`cEj=Gr%>2vwRn1rU+`6JR zbY;#!GUP)qzTK+|XqxkXI(%nC>Wq?C;Gu#FPw_uQ%yno|{}iwRf>i>lyGON6jo$Dk zYQ--#_Ff?Mxjz2=hwG>A-t{}#*28Z?ANve>vBa*H@*8B&m|;DFY)vz*gJri9$Y46JxZ_KA%a#7JWpVbbtK;WT3Bl> zytmbRD34v$VYg~k?N%u8NhYQ$O-OjW<_Q6M-hsquG!IMX zeeF)a#PjoBUfSlns06?_olLQxrmR+(8lRzpwG=>Z0UW{=A5Y>zvDq0R830X^6z`eh zgTnOHFC0LNRTs2ach}xqe|Lk*CN+ZCr25!p6~KSHbBRt{oOTj|&C?*h_7^P=7cNqO z(W4AxPMxXe(oBXHhe>2V>aaRmz6voaYDLMnu>`bfc*Hct0t&vaOPTIwcOR#vKXvfq z^*!Y^BLMn{F*N(2?7bwX1CUbh4lpDS)`8*cC3G6ZXQuN3cBlWsENtqtyFC zD3x{hevBiO%1}N%mHXM9%7JOb2$@)?4kILDgm+(clwS)qE<*!g8*m-6RM~R^%PPCPU#_(bFp5R@l;1_wgnvgC<+8Ag3a@IHAv4&M>N;Msm@0$*9qUIH2cxy7 z(XP^HcpcDhwi@47;q_~xSrc#|>@C0}rt!?Heg@03o9uVbG2)~1Fn=X}t6-|PD0ktm zf24TDIkMO3CVL%gve#u~uLq40?-G1u&=Bwfu7tTZyOX~8twYqi0a3$JdZpT42HtrU z#q~adNr~M8X|l%g`>#j_|3Jj$WUfo9&Gj!*@oRV0$ibPdGIF)mXTxG;W{~*knra*~ z$T-$!L$t7A+t3XS1~iX!Xw9emYbOuNoq!rylx_L}-ciw7`0Yt_an)plwJ@vOjUTF@ zCq9bifr`+7AZq~g_mWX5gDWxsf2rDVXtWt^MUqk<7!;3pB>+e^h!EUN7?kaDfI7%( z+>RJzm1z)*Dih1l;@ot#inQ_Ao{xkty{_tV6Yjn;|EM7K)q+YpRh^3$im&)>Nj=|V z0J^Zg@(FE(@=$U)hFcG9uCfIcY{%7H@A|TF6a1Fq%~*fnj+6FmrrZ?j#G44Zp+^zA z@!^^Y11VLu@~!lHTd*L0J(qLOHmCR35azt%57Y{}ZEAOBHmISZReGst&Fnz0G2C^f z`3`yf|G9=hH5iWWn#wES{g}7vag76|>02JWn9Nq6blYQ0BI}Gmof+1T3+jgbL!bQepGY-6wMh zsXznhCdW=EW5vwA=wOtKjHo=YDFb0kC*VDpFGC$;td^U@xv2qb2BZ9io^88XJpS=9 zB8CW0^9Sh2&ibUX@fj>+4@iH_A_#bz#{1iy%z~Y`mzS~mzC&CIzXDTaR*E?3Jta?) z*90r8!Ti@8raMnw%~lvKHS+2scz*$c&i+P?9egL{@^N`-oX2u~=YT*>l)>_Q#^C%GnoRUqqSsj&D|vCs-u z7|b*j$Bj_zh=G~JuVq1dN&He0pGxA%*g-r}{jtcwPDw&4pwu+P1LF&dTj7T6p;$jg zh5`d6OLt`JzG(L@<71=+Xt4mg&kXL^?it1o*wTl%izp#KF-DapH>B)(vcP@=vwD{1 z)8+In2o#o&j-HT2ft7}=sgD1QxBDQrNa806vzEqyX-zGJs0UZl5b}=IjgOs@JPG@_ zim(yL_#6cT##xOPH#>RjA<+|(2@A1`Njkn(KrK1GqPm7}y}+t~&ZNfE!hS^hga0lcHq!lViiAXE707Y#J0ib2V zBWN#^`eVvMVnUOGG0@n`J|@`_kR3s?M?m&N=;9H)-*I>rPlPUlt7MCW$@&C&KsG6a zY}x`wC;*fIm@ZOH|(BTUb3;dm^Vo0kK3K4jjoYjOG~5X^Fpi>!i02wSM*RN( z$m+n`O6+)hew3f6>>>is)DT<2HA^1giE)%2GIkc_3IaA+h;Om~Rcr(}yuoRTcAZ!q7OvuHl~V?@!KuxZ$V7=gndQyn!kB&Y9P8Eq|9$X%8cKmZ7wh+Ruu>|MRI49 zYfGnHS@RtqiS9bP>&HOWT#Z5p?sorB3Q%0#WrC|mTRseQ*Z46yw*fe%)_I}*Pj?{W z^3iUzZ}xDs8{Nh0Ee1t8!B~1{%|%D5UEF#xxPRJli%|RZh8CEr4^8zx5LvADYNDjT zw$&okU)xmMr|cNp4(*e&QEtzcV2RWDN^CuPuh(Of@&Cn$9e8tz{n3{nM*(sQ?DrpR zv*Ib7F{Vf-&@yye`Neb8eY6~l2tNS~wfnYq*Oy#3XUlX-X&V-ySwg%yp6Emhsp}v$ z)WqDS3a*~tE~xSeRJjeREF^;pPu7C9_)@CqUBB`cT%%zzjltB`66S#9L_*H!=^`6S zvuh-=BSZLM6i_x1OSsuGoDA?A6|h4}>K=-lS@`l$puDN?uM2?$Yi_;B*+ zleQ;#2j0Owv^$7J8~=Lpr+4p8#>|^LA==Y(!iIhJHaQ3pIkS1(iO=Q#;B{A1o3S0u zOJd7CS9DLJ=1rYp1WJWB#&v{*_Ijm^ix&BZ4q#J7p9PgRXPGyf26X=+xQ)vmqB)O9 zzIPb^9__n2Lg;=}?KgR|dTTW=4A@=Xf;eIig;zC38)DBHkHzLt6s;|Y7<#gJkgHpQ z%H`xE)F+~T6-^F!Pe}8Ev?D49fJs`X<-LhP`U5`410=1X@eIgy`r>BwWvKeQYp|fc z*w%791t(+=G~()wgzBMul;XZyv*R-!YaLhkB%&1eC0oFD@Q;Grk?5N(*wjbJ=2^;z z@f=#(6N|G@XEwAa^Fimzk(k-QNAQ;{Yi2Fo>+rbiL&k@XnU3uk{TnDV6tf>zOZjLqR#Z%cGd2;GP8b&NS=J;IH=^cYaM2qGCLeJ)R zhQtG?Y;O97$dRJ8U5NH41=~9hO$Un6k947Q23BAvwW_KZ!kR5PgGAJ@-7dNkG&(@% z12>m8stNetan@j*Ne}r9jH9XnMtQyu#sTYssO`L>7qKrr#Q>QYU^Dm&^Ng)UwXs6* zi+NS;Azr+Lk*K>^@So$|2kjxwgx$N1f3R9CbR79T7tkI;J+=$bt^n&w!+2vJ0@f+Y zr$|%nF`hTZ+Xc0wcD-t}Eu<$ADct7BQ@<1ofDKFwSA)|2c>5|DD74*k40yEsD~? z#9eBXTvKH-1NtGeP)KLp;%x6BgUk*wao zcijkFHns78-N~%beb)}Q^8}2Z9=7Q)?l_npGUXjTMJ@iUIhpcEf)&7&=b23TP%`C! z6~L6g*P2YZi-(80k1(>w@ndAe@wR>q+gcZaWd~K;dc)Fpkj3wbRWzLlmfQsM#lxhCKH2MU&Mlo6tpU6 zkM_U3xii+83=icDdT?=9{J0}O#E;+8!1UE#vkkcBm~vd_FuG02*c`;0#0jv{MkwMn zmBv%;?lsgIJF&wa_~q$)0-i55z^_mj(X(dD-IBONs%;s5cue3&sJgh4s*8Q-?NP{% z16#u1;x$8EGQxOs7*z*w!36T=E%6^l!E;|h(`q8ILp}Kcz7>=#9Y3dUh3vQzvlYCC zM>20@_XG>t0#24(T<}?%_m9^8@(=`1ArYhEsD5}BYy;cWQj&+g;T`U9tG>L8<{Y0T z4ZIs#R(AJ9!HqsAoSgcE4gmO}@vc2T9yzi%cJY$=vD2q7_;Dvb7PP$Jvw4f=tOcKi z?nS_JOrk^lYj?hf{{{_r`;1%H3O-NE2r$%ukm()U19zjf@P!&OqP#O1UqFn0sCW&W z;ceOB0O%+kI_mi~V;h=`#T1)Gf@3t9+uIdDN67*|2E30vceoOUGL+gSN^-6ohW;SM z8upyUk+vqriM$hO3K<@%FqTWfdu^N`=}zSu4*A7 zm|aicE#)*4m56OedvHFO#Njmb;?14#&r9&nu$!vd4|_x8Zj;Cih*XckQ;6I~A}uH$ zPy*X&)17}IA|Vu@urI*qqnGPwldv1uLm8DV~c2r!-erB7~1&PHLs_zuE+wFr6b-Z=Mg*I+&c@TUjLv!qnujvF+&s2ok zLiu+R`>h8*%=f}2!U@K8-Vl%vUOT*vI`tPAXD7z_!I&&vZm0J9yJ`C?fW*({C=ErT zTC_YCQdDB{v-;0Awm?s?iE3}!VBV|^$X9;AKqp8!w4Tmb&u>-wt{y1DG|*cNw3l>L z1JN=^W*(qcl9}g!HI5Te8bgn&1w*m@}w^h-n-FdBz#o__b%FcSiFN#N^4W8^KOK1| z_fQ~&ts3w9b3@7dKcnZ)ofz%mHqqq%OqbfQ5Z)4S0){rkb@U+OGKUMM39{%~w0)DY?IW(m zPAmG-eftjRrrikaq2pbK^c;;0EPxTV;G;Tg*k-N+h0R4bu>d?nE^L$=z)vTxpi}Fc z)!RNfM3r_%BTc*|${^vWz=wfs=%C2FQ97`I9f7E)s1mG?+h-byQV@r-Fmz}KSwG_D z2pI}I=K9M5a{x7s4n+XnR{176k@`lm6m)p2evPGTe^ zJFAn-hh#a7Bqw2(qq||9d;gs!)@hpMOU!b+z(<%k|E`;y6l%%y4>9R)lvhCRipnb@ z_g96!#mW!U%9BZEKgi64Oz9QrZk4v{ioS_(r0zrJ27w0?k?BWtEVK6EMvA_r;cGL3 z!D6GF45>3Py+u%IcU3S^H>Hu_SlZ!EP{Se9WZ{ZN>pHDaRr(HU*dy>1VnTMqEmwh- zE){ge{RKxKu1aYM+LqN_4p+sMt~j<&j;HBEEtycuU<{P0xM85LZYWEk?qq{HI=zGw zY%XsWl=Jj0PWR^1RJXN$(dzBkOkKz2eG)y%37*Dw^5?=&#?=7yKihvX`w%5H&y2V; zD?PQz!-MB99k_9z??vP_4{@7$Xu;|28%%l4d$*eIlKxF0=v!8%08v*FIHH zeJ6G0wHgHCkFy24RmW!0=rPrf%^Ca8vJV!&7+PKjEf4C9yGp%)gSo3Sb47BetrLp( z|M{PLct3aMzbaO^w9r!$ynVKa2bua>*2X>DhwTLoHXb|$h=e(_o$b-`_QXwr`FvQt zy#ku@jO>xbZIKSf)AA5LJEKH*?j(F`mx!3Mg!Pv|O6UM%eU9RpytOlH?a5oyZ5#`E zyWIIso^?xLUi4AdK{1$HWT!-KlWJQ5fyV{@s}Zez(efaUb;Gyxg!LhDp!YDiK-hP@ zbsN^Y1&Ko%H%{WW|GUc&E|I+@cAy*I$B*Aao6&L%Ab<zw@ihW_rXnQBgjM1 za)Y(u-y+Cz6yRZzw`s%Lc=9&L46HMR;>5S^r%tA#if!`1f=^@Hdls+W_657-xxAa&zOq*F%EKJ=Vy1!DE~)R(3JOwn!F&JIx1G4*g~m=5;})8YPrf%ggg zxX}k3JpW#jUvNqOf=d#R*Z(d_Hj6!`ivH|7atxH!JT zZ|%0KUm_KWwg+OnR5+oGMd&gg*TWNhzmr^@O1X`zh8HGKY1SiaFTwaPwI3@7$e=y->KmgCO`-w@(^Q zx4#eM?SMRsCmCC{xXF60^iM*Ygr_*En*~0Ax+H%@A+NPJH$KG40MR)!f(U6V_>_v# zDb)fstrpG@-dhzu50-WLhD&bt6=CSMBK2L-+yI7*oGX4@~>-3nk-RWG&Fk@trs&EZC3I@ngNKBp5gyY?mEJTx zsPrO)#j3)BF@ZRBmOt=gAht9g^-9btE~#86y7d(+*ND?9M~O%O>$O=|?#nDd_RlI| zu#63We_}2u%?5?k5!;v||5)EdU%ZjbSnm>E{1mV0txAv!d(@LZKvupBJeJfRK4^7m zqoT?R5c^%m%qnm)V~B@fA{BafN@XM0uz`DQ+p^r@Je$Wej{yYtOB-Of2@OlUKq_^B z4RVNi1xy<#3yS&eToBvFpr?@WHoBZN1WVGaiFngoVL~~23mtV7pBuJGZY*~+gherr zA(*~5hRk$h?NZs8bQXBfHs;m9INwA}Gl#V=;kUCO5U^g+I1#!u8v#daB-30dF5#N< z@E}HTvypBc#ozO`AjnkjQsm^Rff2Agb%$;}X3q?)BgRhHBC=FuK?dO2`msNI1+vb^ za6}w#Dgn%rAR2qoPW$JU%qE@ruVs$E*e1Rkoe-2XEE!g%rH=ms9yBN&eONd2=08E{ zO~Iv<5-2|c}Mi0 zE!d~~} zFEQ61bU?ZiB~@lCYQZ^fH48pq8(UP>L=zcBzY^Se>=oN8lo_vtiiVc0L}OQAOS%$E zRQfDx1U>-}v0)CeuT=Zce}q7P59DXa+Q62W1!yaGlo; z;D6_v`k#b>(&KMXdJvPYu`v{kgBJ1m+ff1nj$Ger}(C13;O^5yF7>0ep0n{b@sAj7E2U ztic>k#l>5sO_{U_bU?@0wxc^Xt@Z(4v^&ec|H=Mhm0mw6v&Aa60fmvq`O<&R0TGND zEx4aM7~}hZU@QY&9zaNS<4#(}T||z7lQ~MnV4zh3&@U21y`X6tXmHLZ1!y;vsx*=|b~MYstxB|j#JWUU_QR8(;~s(H zY8aoL%6r)TskD^R2NtG_Zy8eFi5dXBA8$Y#flZdhKdaWUbm{soA~tEZxfvzN!~)pst~d1Yo zh1kdxPJeO+70_u{3y&bi@y;B0-cG6WmO9vps*X{1yX*SQHeBuq;Tdy% zNPVCq^~Fi|5vH*dXXXHqq-Xiet9pfbQeENJ4%|A%Zg)eU+0Lyaxpkcfm|cm7&Pr9H z3N#5>KU%fbk)D(zC)@2Z^x1Xli0WiG^PODQvMPB~j?9^NylC69RqR>asOKG?Rph$! z^%i@E8tjxjz+_2ZaBks@bDsRBE!(S-Lee!Eu3*5Sh`r8DE84JvUS})zkZ+zbPJevn zlhdC;P&SdN)kpB4r%(}A2fI1g^g;AYwerl)o($I)6Q5jBRz(?|wn9|4H)YPeBSlHv zQz>O!nt%DzOG{lAxI{f<4zi@Dqn zfKNN9aCax4^i@>)dBVp9M`DO$brL&y=SvgjJf0=GtZ7Bd83`i>ywxEzQstG}arT?r z?%j3wn}dhWhF&a<*Fmy%5qQwiyv{%YD4l{9M;+`UuQOO)r=^Fo_q|_Ar}vI~t4|xK zdvtJ{FI~sD8gr9~3`l+w5eYeew#CZzwn>7_XpFJ`!Zp@u80$rzJYp6fa!c3xI=7hT z>NL7ozmlf9yOuE%`;&T)dO_PZe-c1=LhQ7uCCW#VY_Vb1nVoEZ=L+ zJaOrxr4zxP<<<^6ZxVS(@D$c0BdS_m-F0jjlyjxOgdOs9$gX;@LzW&VaEY#8RXcM% zbcx{%*lZCc^ktNM8DH<8<ZDT9h~ucdX}&2)W@@BhGERtGhA$aKMsPwgfqpXT^voYWBpYBs-~=XuDss&p|<(iPnEIHz|#f=$z>c57~sqjdlO z;hi06jJ=B27k}i*au4HXFZm@99`}>H=ek4rB%I56k{0KC@Sn5zK=&;Ej9X^v zo7SK1k$c-NS*XuDvSV7qZk8kWxr=1t3ru7;TU(CY>$2+LGv(aQ=15-dfxBy>fJ(2C zlXmiDbMx)noU|*1Ey~JIN80fQ41UgDO>S}>?eF`(aQ98)`}TXeZ~Bc2oP5whRzNOz zSYp*)y4I9GM2KRE%C% zt9;gW5O2c~6wNAeTU$?5z#UJ4@+zPdya-=sRn56^lKWmVz!T-Y#(O^H%5sPxQRySx zQ)^8R6!#X4vk~aD;ha z4d#cLjRb6-$eB8p4bCP}b3P(ivw=xYKd@$=JI>_2c7L#DBB}X{HJuG-brT1d-(D&2 zK?Z+qJvy<%`yQl%z3(x$_zZ!sWzdPQc@LL{>83j3Wo#QvHt5+P1Vx>hv@=uMVWY7& zj&{DyY3Cbh=b?;;+s--K`NC}n7}`xzXhC)LW5KG-#Rxyf2-B90(^t{-xAiymohTBON)`hnbhK2$kja$O}mQ-R^BXO>Oy1-h_4KaFx9|f z=58qgj<@UDLJFLw@C|5e#kO9b!XNY!psKNE@_PmB|X zYPk(e-)DzsFObPgCj=re_I~#XUEfcp@NKRRFpjGBs0Gm$!OFFH#Mjq62yrK1fo*!a zRp&(Vqemw8?l;u%nMeF6I z;^Z54@B7Y0pYP=XZ}Wh+rL*C5wmYu|qZge`qO%R@dYrByB}}_;h)p_?+Mc}E@B|Zs zL^;yX&o9VZP=2Alea^@q%=*H zmbW{a{g(N?YGXk**bMrCnohm!p5}+@Co6lEDW40Oi7>7WGxQ}Hi43Xyuc@zJj5Jp& z(!`y)tFuvq;^=gB-SYuAAkk3SjItSAlKnHCo%!LGB`FPv5Qz6^q zpLABGCWFU#+?{^S^>z5p&ai&k3{H$@q`F2{xH_d4^>sC!#3Uy9tUqjXec za*a6ir@xk6y0~%T;DKG=t68HP>|~0_D-UR)0v>U6if4;2+J*OG)p_mbIZx`Nayndm z{!&#p(F2+?(@xWw_*X#Gb|DajgcnjO+Q3F^$14Mj}(xe#LjWIa-rCVrYp{r%+Tuwi5l$}WOZ0sl@&|g#CoKXb= zKA*&?spSM;Nqzn0EWantZ1tM`K7hdCH{^lE<$->BC*cacR&Nc@+(t)>k!~ zxr&ByZ0~&?vh1o$DkbNpy+jm$`bZZ_c-}@N4{A^s8#!611pk% zL+X}izhUSbo_^UOBou>&X7XSE?D6J93d&V4TIiM20%Cxv*=y=5AeU>aQo@UWKR9!_uD&>oF@ z(q1-&A_VqDxScfR|>SHFa7Cjh?i1n(@a&J|M&Gest9JX zk^KU`Ua`D;gy=uPZfYl>225Q-mhsq`p*pa=TBjK9X{xEvAAX|eqw)<3AowY{Hx6=7 zSf-K00>pCT5bkFGWM0P~h|zhqsd<$=gP*j1NVqlc*mcm}s_jf%A#7i@*#u8E13d*y z;#jqafyd}U>;_hlsu-waR9UB%6ndRRnGn-3!U#N?HP&((*)c@2YYC%#R&kDx(=_*q z=-=j3cul5%%RK03HPKV#dSpxk?b--l*VGNz2z223CM5IT)Bz^)PuQ*eb}abqXqRNG z56^9>qg63O+d`z(qyw(({cS|mAks=NDnweHW|0OxfCk@q6p?p|*=fzFv<5BZ>~Mai zn5(A?PwY+a!<}0A)LJBQV+3eKDUWk2+Z6q}>uBM9qOfvr)6KVy7EUyvHkAoem4Mkg zaBp!Z8ZQ(LFF}lM#l52p=X$oEWnZ^*>A-6G(Ul73$Eu#p`o_%qHh81+>JdRd;8-$n z<#==@9$lT=*YMgLFyHX}p8c+QWas6O?Ny(lb2sX*><>**x2puXRLfyud&E->qCbP& zR{Arj5l)O#p24opU=Q$YLzh7N9R_Q{B5nqQ%a@$KRe$d2Z^Y?`*kun;81;Ba5$EoUhs$RAD{7sO8j_?Zx*NFwth3 z8m9_ai0XH`sA{U(-A$J-mD`96R<-h7#iVaocIE2&iGv6Ac&}=;?n{4`{ZAjuNmH3> z)^(@;52ijGMSyUMN%dk{11uLHdDH$yR_SO~sj8NaS@eUX33;zrkTb5eh81!$aO7Yw z%PdoH1ifL(R+P96(J@)ZteZ?#J3};UvhtF#9v#Eo;v4iii~3RA^h+z=u7o_c8&Byb zH^#_~VV5}0`r1voF}4Qs0o-Wl6&T?T7-3gd_R~EW;SU6#-q-|o>)O|0u6Mjzbpp5b=eCxyR5{42{-0P|I)9&r zn0N08NmZt*n4vpnAH)pCfVRl=N&DYhV2(#Qj!y995Ub`WzKWZW*XTfh-lIPqViBx+ z?(_Nooe5_2o!{_aSlD5%g_Q={(ZKsO&?}a%ybUTL$1D|wk|z_h)C;o|j9H>gIFv9d zKLzT9iQ)ubD~$!^n`5Cubj(q&f#U0pW1^0uU?9!9sA6j7SgK}r%xTunupC2GQr9{` z?VV?HDtnVibFOL%#|!t(;J!1~Emf=HzZPqssu|_ASEY2#{a7m%u-iJSYBq6KXMP=% z!V<4)*E&dt+Weoc@T!31dEPKsOpjVuRZLY@)-1Kc8emlE8e(&48SL{MU6d-O)i}CyxclE z#n2wMma8j?2Ilr1Cqs5Lde&Y=zPFmKW&9TvPE9`GtLEL*AE)X9aqv;7k9?*yFV{#n zp5VLB?qS{|u%T7eh3pw7EyB@!Ud^a92X=s&>b&7( zdeVsJ9lM- z?nr5KBK)1NmtSw?^ijavmVMql$fFbVT|%(vDqK~6S0xYRshJ&UX0J3;j#Ixi6K3mY zGBkDNsv%CE>;k4I*<3?x=%IdalHaHB`xG^!q5S?GC)i4}jrxZ3s{L2?Oc@5g#6dMP zM&FZx&F~Iv3C}!h19&|ld;*46>zPaVL?J|{?xxd0z zBtmCRW}s6>F++9RaykGhjMf#icS0R5nq6&FA5H4?lE`hHQkA1Tcg)M+mQM+&<8W70 zq9e`yvRn$VYc62$zNOi$ZEgxZP%-loAYszQl^bMNF&9HvQ;`DapH+gW5_v%)Xs5xc z;SBXmLv8W=iXGbpQPFg3;`t#Le%iK|%A2M;b1HBAR(HC1m2hIfL=bZI8zhG{*fcct znD+-&JJr;FZ-vqQzpSS!kyY`IUI)&QbAmx(h8$!sWqky@i>h4P_^@8w?1UmqPz$R7 z&fpi--0cmbS2IIW>CINddEHarlVPSJ!}(Yxau^SD##$TqfAgMsU{u%cEk_Heyw%qm z1fUYftB&JU$IHeMgf68hXR+gN9z};L-;37>ygY3p#LthM`_?j;k^EGP`J#9~{buq9 z?Ps(D8B|hn+;aS!LS*S9j1Lo90Zd_oIZw`sMMSB}o&(n-yhqeW9oJA?1I_c-T>|r(eo;?7VYXU`S><9xHJrp&_-1$o<6$bauFgD*W=?KrH@yeLeoXV zhf#jnC}EMS&MI@CI>`vND`V(FM01WShg;QmDoom%F9Z-3YZ$X?)tS?*$Wq?7lIrIY za?#e*h95MX0rW6R?KPY_o~hZPgqrL>ESL`xk-Pz|P#}A%WbGDM2&z?z7QMIG&5A6E z%**5Z(@I+u(wa_fB(0obrRFF!Ta6*_lCR}*=e(JnXu`zQ1_dmyXUM~+TO?ZcUdKSq4}WhX-r2SJ zD4AtEj?_J{Oug|UfO8AM0d3Asi;V?)@=lnapV@OkS z>1qGi>^;_X^*3>gB^16LQc)-lVJM*v$58f4d+fE7kL&9mVkU$BF_YwTp_kHz+*h9f zY!m@l%;s{;=HqI*himkEU3o12sD$Se4b2mG_;H7y+|k0iqN1vif>J5eOx@z^2djb$9CE3sc7<9lB`J2D)U;)2_0tX{If&0a}-S65bsPd$!v82 zyYWo@Ml-EJPyJol2-FFto=N(IAOFOUn_HLF-_?z_l>Vx=S0Sel%(hKE?=0P@Bi)!L z7vcojWqW4f{qWAqohK&2%)3!4=sNHHXt!LlUoOc<1;R1=)y9UCOTJTHUNW!yJ=tIE zT#wJh@W4 zN}*0g^Jc}}I%-ka5ty<(Xy3iVN#(D%yg4jKL}1l#P;qHKbWZo zN>6|1t=m{P)!&t5P7fnKe7A!N+O8guEFF!gPFCbq{q0sA)JcEivqF7s*_l8EGJSsX z%(3d-dy61L{Jqtu(<1*wtf*mRpZa09?F@F`K1hxR8~ad*jp*!@Ew^xpl6t z3nARfssNPWiEds|HP>B0iOg|&^fwQA5gmt_C?~*(kfdMq0fE)Tv6825Fx&S8In#Df zJhaPUjxMQs$i5#nOqT9CJ5H@LoKN-h{^p6(^90lY7*N$SPR&30$%#*=T_b;=p!>~& zz=VC|c&*JFb}-hiMH%=+{1D-6B+x+}?0lu`f>S8NxrW1NoT@g&Qy1N6`Xnfm^aW=Z ze{dRVs6^dw4!QGl8!evuffMJm1qy60+F*e5mU)s4@^RH7-tFBAOV8)3`O>?+*3yc3 z51*JjFSRJ83;E&2JA(k)=|$5n7S^~|UbH@}rlFJ}z_Ga(7@p%VFudc`51dvl>lwN* z&)H}Dw>AiZd}pbe?_ljW((UHDCT_SUpLDztT{%W~8XX3Ppv)JU+sPU4tcM(Znel5m z%Xj*^a>j*FD2|sQaBJ>6JV(^d2oxa}kum?mf{exJ?Tv-IWWa|&K`xN$t54xmeTnhJ z5vFSyV;s{M!v^KRa1_-+&H&v&D0G;gU)qgD^i-1Sf<)Ha=+vCo1)M%w&?O03+xLr>VDoqrCBb+<;aQR{!UpDD%vo7t zqeHmwD9Z_krOzYs9zHdf#>!}Z)r4Q=2MPMjWj{NyaQapHn4tT92tMR6qu(5`Cyf@; z?eRLzBPlA;he3P(g@5-IZ@P!r*dCy$FHVkz)9g%0UUyNZ0v5A+EO0l&j1=gd1@ zG|uy$dCoZtM5uNV!l&UJ2J6Hc6ydL=KO;!QLt7q!(A-uYzE!p7&mjJ6`H%0>Uf;9K z>wCU};t<;dw6mi_z35M9(FLnYxA`MK8;iCNpx(QIu!L=@*Hk8w@Lu<@%I?aT^=Xaf z+-5Ukp9{<^pKsgnMt05<_3h@Lj=DdEKBw)(c@7HsY7x(-eu8N3CUt{~*L!?ywY+VOeaC z|EK>CBsJ@Aceecv=PU9COZ6*xi5~Wt|AXoP`&8bsBz;*cO^cB9TWmpBm8|O}x;~H~SW65>l06Y(nU+G-I{9MZ1rf|a)gSylA z*zumpnw{Ot)EUAmktL#TMZKbKpR+!GF*WkjT=Hr5+orzc{7GeYJ7=(-ZF}xH)Aree zaVxidzEZK0bxV}2+vmEVbOQR>GgGV|Y92)lK3h22E$ZRd`kbQD#vKY?P1x5K?3aF>j7MJs!+ z`+n2p{qA_eT>&>wQ_~e}3tJ`7Q}0_w0-xQH@_lWJ!;(6-5b-wu7Kpbgt=jX--;2`P zY#DdUGf9xr@V9N-aUx`A{Ieug<~_mvH2S=Phcs1_3BIRnj01JqlJ5LmH;^;gCvs4x zg6bfe-!`&>Q+C;XuQ+{o*u!q4)5Hvkw*$T1{`H?*mkC2ne!E8rGH)&wD1TS4Kc*P& zn$9cPeWBhNQqNRFJztx^=IkMaGJ~N;z3sDBwGaui1YvXFLc#O(<-)flYd^xW8`#2b zZV)>*Dwul(R9#Z6Du}t`f*>#%GMjZoEUcaPT^v!d!D}>%IWe&nmn%t&&$K}@_5S% zQpNTqVEd%Z%MDnN5ANmiX++T1o%D5qt}O4koPQ4HpFO4P!=xlwwNqByi#0P8&^}-JTX^>xmsc)B&@pJ7`QyZ5z;z+BoKfNaKLHC(<&`U# zw>K`=|ny{k*|We z#WNo4#!?;h-b?JpDVqv$l|Y!UwSw%mm4?wQmxd9g87Pxh%J(owk6haKkZx7fc@3n< z|ME_!U%pcreb?HSBB3VVgYS0im@tAAj&F|{f@x*RnC&i3FhE4i=H$US27q(H zT96y_q7&Zo;uWGu=z|AoMB=#-cNBuHv5+y_lSeXHz~R*~a0hcCfCtzUsPiDzqf3kL z9F$7UmPuW-sfWd>p5O}FyWD?2qv*k2gD;s${j`q`rM=J=#Ls2Lu=|k)-jxP^OGP=! zODMA-PEDhM#)^%^1@~aCLhM-_w?_cfw(ZI~sD#e-48@&8vYX5$yU7GyMjGsOh9q17 z*n|Mxx320S??N`WAkQwSeUO%ZVCXe@?y0~?gTY=17%$1qlI24he((Q;Dl|yb;MeV5 zq=cH)SG8QILf<&{*uKtmdfUwlRiHZL9f$5ex9c)iLA+ZK@0MX@Z#A_Kdmlgt=bb0n zHzd|Tw4GgJ$2fu)zRnQZAkp8AA$woi=p$`Zr42vY@S~06gjNG#6ZCPulvZpV5Tmm* z_{s~Jy4g%!GM%%mca6%C*_+Mv0N<8B+q28vN48a^yqaX+MBcm+`kmp7B@>lt*Jtp9 zX*^iF2apT07y>0y)$f~XkPxb`HB~Q-JadWr-VPAR<`%DbxoyU&9v9huc2|OJM*HWk_C~K>zecaPJ6&5XTVnb z-RrP|osripqJ2y0d`}p`&DJB8FWgYAWDn!3TBqtHKIm{pxK*60Q|=%4rcQ%=sHO@$ zL8{aifaECaaXXqDvX-`#dOHsi0>%=(Y;V1aj`v zU3?IR?Rm0!A=%_S^Z(wm?d7QE)Znp3OSmDZaW$I})od^NvB;K-er$Upn@B$92|GYO z$nBJVML)K79Q=XV;FmHysXfK&e%eU*erFiD+9dY3PgKxT9R$fF|5d)-%_YoJf&#Oh z#isgJMLT00j~RFzeom()IsW=Mr-AH3erDbc~+? z+S8ur0>2>B*My(M@)Jt`ZN#2IFGLd)58!X{lr>EDP_x7icq#|+5#R%S7OTeCy0I_c9_H`f#+x!gfWn}1Fc3Se<0%*uU_Fx z?_}!5Gxc(@#m0dK=^Z|qdM!-om(j9efaY0F{hU`sITLdgtOw9U4L#o!3fNof0$7mG zaG-pNcp|e24#?ahU_pw=-B`35IUQ)p-IKYy7k5{q1HN>?*VE2aU`NnEVF|W&YH`YY z1OePJax&m}VmN<9>$MDs&3L}cjdA~sY%9-XVP`0{{K=u67X(DxGDim`@%wW3ZijxY z3ye0ZlnK|ZhKKF9%l$LvgFspc5qJPk4_ z^Skk@#W`QL8aKKfH+t~=brpevJbnoU0mM}G%c_UR!qE8Medj@0HP&Zb(`pI2##rC= z0;+nImwZ(+w+Id12MVy@np2O=?Ge-hJ&jDx9fw`0#%e4GIm>rY=i#EdXNBv4nME9? z4#9YXYCurvVi`qK&tMp5#nG{&l>mzm=ibI3S~K)cq98%^_q`YC^x`DU@tHF9B3wFlNmcv>>dpr(oG$GzhRr4GmExF)dv0$dlhMDdo^$orF zygY7nzU5Tm-pXg0^j<64u8yk0(D^a|zJ@-Q=cT`*qVWmA_kdWPE&L!0y#DGVwT7l< zN>kuA>+vGBGVs;D_Gh%vE5;oK*F7-_M!87t|D8kAK`*_Y%?a7-#2BxkDg+eXzpt2_ zz0cI0>!=!do^Zh7`zoJbwR8JV(DF3i+V;ZWxpNE8HZp$Mw(rN|Ke@ah`-%Jd|DJsH zHq}nSIo`~u+A&H9LByru(s|08yu=dC+3uxhQ+3XQ-!_HWd1P*x_WJT-M*Fi4i;EeBqf5{~EGruOZVh1hLXoG-)c=q_wtV_!kHuuSE;h(H9wmLNrjw_4!et4^ zvxHT^X;L!L)dhFLF{+^*bAkut;!MxEAo>ig2hw_=q2VmIK*tEw^M9aYTr!y)^o%m> z>azccCpe}8QvZ2#j3IXN7-ljc`=+T2>zdGU(=;a3811Qo#Z;Z`idaaRt!4p zx-({%-TAW9d7Iszokb6EMaNY%WhC}Hm{Y#&N!oaoR$gU)e8769;!E(@V-|1F=)de_ z(QEn;cCuR)6^fnYBe4gxu4zjUE}a^f*t*LZWY)ZkTIN2-O^r3@ya7aCJrEwuaMmWnxrsg?_N`l`=#Z4wD;IT%s!bD*8Q>SGTC-*I0D z$LJRs7{U8$I{aVr(M-ZRwIe*XPJl9RP|tiyy=cHN5XPZYV-^tJ*6+QWl(=-`(6#Q{Ty0OZd8-No93 zkV)UAUQk>8Q1Fai&6^230FR!WyX)`tOMVbiSQ=aCivpT4` zV;qV#^;qk;ZBWVbH#w9e>IDUf+`ZDG@%I~eVK=Af?9J@k1k37qmTIE+D?cKk8c0u$ zyFIy0SV8(iBl8HWm!4ogetgI*-I{Ri*UYw{1EafjKVWVMTVN0Th|(wUz7<)KC0r%1 z=K7)eE4oiFaW!G8hFy{7US<3Es-X|($yB}IPw3}-n*A%l6rlfiROMO#QyR=kC_)B< z6mi#it5j1^6bZm&AdopjJ^%)x+Pcj-cF(7~G9w~kY`KnlT$_d>@L8PW`F1Z$%b&%} z-cn8!tOj_|FT@eLfxKN@UR6Ml>Lbs>VFk<5Sh}yO8O(65e--VvYbsIs{x+H$Q4b zdzx_!Gupaxj6QpwJ=Z?FTrozYU9qqWBxd)j=52ts!KD1x-sQ5v*+bmC?PxJnZA5Uw zmats`!0~yWBF;8R7ZArdO126XkdqG+T7!jI24*I=YJsQ&NSqs8-|sM^Jz$rD?1-vh zReW?wBxCe(IU1H^zp9!zeLS1YlLBQruktt4N6f{Mij5d_GjDu{RzuehI?MuebCk!P z*S__22s1LkGtEgghi0tWw(G~kKS2v~W%zE~`Ab@u7K0l#>?X7@#|}GB7(s%? zxU!JOXl_Ud#8(YI%JI(24Kt;Q8X?>;1l=pKJw#?KrtX|3u)^d8T-RsrZ>ke8uK202 zj{qquu43&c%K_K?gO^NvCM!f{JR$)9Uc?2!Ab-t!PK4)?aKzk6~7hs3aCwU1}A{9Je$)W1Uek z?Db))aY<*c3ks-_%-<>yv{9dwbdffnswgzqV(SRmN~lw6qN&2mfV;Vh4^6^{LOL^? zJ`NYg6NG(`y{ipuYz2Lseo2^b8q5mWMthrdP@+!SO?#VERC~Bi>dYpsT||!u9n{qk z#z}+1(e3s)3M`-b>;?0(O(j7i!YObV(SNpt8yN*oS~3dJswcQ5cNC_Bz>%*R#li?` ztdoxM1QtdE7eNG@N_)`s2UHROOJG@SaXn>WpP58#d}|4_i3w6Gzx|yIZ%vo1r3NeR zC)KX#)JyJA%!F4xN*%{g>7+w6d|X8}e%Wvc@>}%kj1Fp|9hM_~K4|S%N#GzYGQdZa z!%z#Jrz@}Us{IzX7j;6|a0gLz@+vu>#gYs!WQX9*!1eI=`kYY(I}@7qjpgKe6r+2U z5%1J1<1zUB;3)m#x;U8YIG9M+!CWT0{el{Wg}Nz!t4uixrfv)l1A&emaHbxF8tjfv zPQTC4;B+A4D5%pO#_Fy$y8RY(*b8b8R@q_FcpW&M*1Dm* z8!pD?thf0C!Wef$2iMgvr2g{**YEu4NifyDw)&&Wct|~akGkI+d0$l`$4joV6D$Zr z67-U4s(BYOQNy8)i%*&NWopsMms?FtauGN?Tm()WF^A6?)NK6;C={?bov4Kc2!(d6 zesP2c4#C2`5G+? z;5pS)@D-7N+wODE87JNqL9Kd@aT@PB**a_+eBHn8-*dd{D!V+ppu06x&?OK&22hsb zf`Kl(By;P|V<9^mJx^BUCj9{hy2IxcPo2bD6r5l*u25gMA0M_w63ma)MIGEgzc|GR zOaedt0{r+Y`%URHvp;G|rNpSvQWMN4*DLSRQH#Tn@B>2CX}9yhgmi7SX%FTzS?Xs? zXJrLlb3WZ-kGklL+GxLj#RdC70wABqfa7O?JZp~*ZmwS(;#vLKn!HHl#es41Fis#= z*{l-xHPI&|RTe{`!vOGN)M-pt7?#JRoPz7=7eXdD4Qu^^^ydOnvYDzJG)OL>$Mynx zl3YN~Tk+;$06iy)>U~VoLpiJ)A21N`oB^I`Jlppqp!G!cLI+pV$yZ#>_OmJ(=r>ky zsg9}%_zl2wwBeb=c?HeKl%sQ{x!lF{*I7kjW>R69D#A#ce|o_wfjQ{rwELm1J=^yP zk^s$tp%rYcTkgXRqL)6L?Ly0jyloy)UH$?%4m5=wbi#HC!>0(n*TG|R=E6{um(H3m zkv?aD!hrMtj|g=tTNw6~63zwb7oXda)x;1su3VC3H5<>ur{*Mm3=QHM{KE zUzu4EfQXWHwc4s0Aq*R^*ZVrtS_(bMu{j^{C}FiIWSpIUZo!#FADk;ZhPoZ_KXr=y z=CpF2ni(s%@A~o3PtA9CzB0l~tJd+%`B3OvCK;^;Hg4EGtkL?xM^pGgzDY*y4t2zj zuD7QO9BGvfYNr!+d6#~BYr9J5zy}gGt$w;ev}!P%P#r9$9|%&H0juoXktblsW zNEdw5LZDI;ybzQIMNVz7>}Kj0U7)>gu~QfHS?=j?Ev{^T`F-9xY#O$C3YWK+b~l{5 z_A+a$YSBp!k+Vn>*f5G~N{))98amc_^B*+M&!BPs^rCSVPKSY~*m&J;mJR|A6iXiN zxGENJY;rhhm(p=SaE=4P!P=%YFzsam1g@;D`pS~{Gj&=|5%NM7cH>Tg`IKZ5ziRCH zc-JReKYL%8T0(StLHTU>!?It6ls7n0`|l?Gnu7AQdb=Cc^!pCHhgOtOJ(2+S+M zV?Y`Ot4&5KvoUos(4f(LO=P(07CA{iJ;5s;lqBLoUy=?_A|1|l*f%wZq zCj}K0RkAFlFRhsxe>iX6WpS@;YLyn%(3GipIC5Qutfq`a-l${4oWNRNaA!-DkJj;q0X#Q zkDMO`(|%dq!HFedJfGt|^>1AH8^nY%xX(T$cY$ z=aa4Q+l_LHoHWutKC>Wg@dxLb({1&@IrN%M?VGTxB((>fp%-)Jm`GJFj5*E`R>l$O za}8@*d77OIi%kim#XJ3aCWVFza76IG=H5pSq{hG9;GrMFVw0ZT&%8|AE=sL_kyD(z zTi}p`n(3s&jL1-HpGpEC7Xo&DJ!Am+RK9~Fdvs42MZh3mi*Ggv!`m)QUJC-R!D=lU zA>Kb*U|9QH7SCKn2Szvn54|gBy>-(L5Nsq1y^KO;f}0Q#_PX9g?&(c&U{-+#&LUNr zkz9y~!oU8P5B}2m;$hZUdOL=6yAE!pU+fpR){cT+;7sCNBfvAczO}g5w}J`U#+wMH zX_Z|JzuhN}W0dQ|N~Z#S5*M~uT-Xm@7smDHIbv6hlj}Jpt0>A~f;a(xlJjR}`ud@h z&stYrg@2j3ZP(e5oppq=WZW7`%9FpYl78DOq*tLztnM;8Y_r{5tiGHSy#p~rj)_I- zNV9OG-LS#EI)=*8aQoo3ZC8XnL>m>iv`gGlPjO2_2y(o@cl-j1=7>se>P!`Ov6pbB z0SF-jXBt6Rq6}e)GWAU`&?=N@gj)vV4_V9G`YQ=MxH}-s>=HGF-Oow&LX3DQbtFJ) z|7$BZ#`&S0`OvA#ey)PMpF8K>&$)h`Elk$-=H_h;hWPzt)X3f&Y3{J6!?^P|T=Ht; zKYN+icy3Rpr+fV7cb~EWbVuL{v~77k3uLgrc6UYpk*&hycIG_}W8TwuGsigWRd5>% zb)m40p{M! zOl|Jg-E~iGBo+@_#@5iz#3B}Is-NTCd{Fu6;Q7p4Vvl0EK4-b=q8#BPExUvLrY?xa z#WT66Ak~1kR41a1S#P>^4=TT?d9?I2#!K4SY^8_m_G)-p(^+PLUu(Y{c+ngo!~o;O z_sK``T0Uc-=T%`#;cx=DB-7^?)mj2iZ3sL8Zwa>unhAnvs^xUywl3WEI=8(}>}=0> zrfOBe{95uSuXDrea>I1MhNyB7`)LSlOJA{{J#j{>!uGq&&~{e^34?wh;cUPu|0e1Z zILIv)Ruqe5h2?Uk^u&OI3TXv8iN}(@DyiEdw&U{%9szr3k~7Flvod`zXeyyuS*~hX z4^>2>_kCT9hkQyqv-VOEvC4rs(qlU zMuMt3pz2Z~)26g>+gT@=s(db{iUd=ai;`6W)#cnb$BHW0O_dIo>MPYsqOT;~A*QHm zQE&DPDDO;$dWq%Kr1LcyGlMZRjB$v2*f*3GJ+Ma?Dwto=X<}_{$nQrxwK-EfiUoJE znN!y!8A32g0!QP2v=B%Ofkp$bNEo21{oAjEY_Ikd`jwFzMIq>iigzEvKTL{uoJ z+YSe5E19D6npZfZf z3TmFugq9VW=>`*hQ`wV0Qf zi|sz8^c(H}y=*6!1!e{EkR>$P=i$=`)eD#846xLvcHMH?Y@y6@K6iys;?)#}A<0={ zW%)|DGsOPjf#7S~T(s0DcKveNzqRs@M7Z}nm+q6Kob=QIj-lFIdssy^l%A5oT4EOs zFWvSr{nT5n$9qZ}eT0;2e3CQH%Nen7FD`wWU}qbrNQaA-D&79&)jLb)v^t7byGX0e zrPVglYKicYZJ&nwTym&la1U(mQgX3L({8i`>I6V>7pKAzK&U>)G(6o?lJZ2>_F}t4 zsgmuv^$`e~r#nj;!zF9G-Oj7G`#je_QIl~+YBJonfx}-7k#X;)$GTsFBy@o4cJ)zJ zP%iYOuk@sPxX#^H<(3AISkLzqGkQAY#1yF8plBzT&`&I~((PQa2FH|Cd4Ba$I#+v@ z%X`DKog{qL2yP;tw&F=Ew`F~eBPq5K<)&|*9@udi-Nq*^Rf$oX0WBteU-8~Uj(FAt zBcgnyZZjh6OFKN=+#|~?jGW72JHC_-Y_9^P^{e6LPWeRzJy>!b-^rUy6?R6nM-~Al zsop6E+?f93uI)b`hIVEfsWRB}_fZ?zcxMME$ox*yZ_NkSY0xpO;pQP}Cjgk}?P;Dh zLOAPLiz^iQy#O^#n(i)5yW{o;KN@rGNfp&kMrjO}cht8m{ff%hLM1uNO`XIxNx#y_ z+FYn(8DzAcQX$7d{Ymcf(Hi$PEP#QAqWOcQ;=X|Cex!Gx-DLgK}LkXqE z+UKKmau<~x<#QeMm`d8DlMGdWfgfj|ucDJX|NEOQ{3h^sAqHx|Z4KDCbydNJzKDAG zMhxvt!jNdlOk}Hf!BYkwis|99Dmpk>1=G4_o#ojqh^yCiDBz$0JM`dZ_KFgEV3JCP z%JVm&GD+0Sh_OG+qkK1!Zu*oEMphL#Ie{$!;x-Oh{92lNNWfDrpsB$$wR(q6$;>KO zTz`_Jrn*f5F(}N_3rCgc^32fd^W550(U`A4v+N&|obU9ktm^lijeG2G)pSo$ALy{8 zr(B!-tcuSyz23UDxuP^3MAMCT=;oPrpW-?pNyXCi?=rDt^iq0xmXPm8BEAcp*;pxP zlino#epH%@siN~Gt9(&DpLifZDQ-u?daTpzGR|ngKRa~tGkakPJt#?aaT_EvU4fe_ zRMvUBD&k=W^E}>Ins@(>x&vHVU@fQ2c`@b&@fj|wqVp!Jyiq<2kQ6v?m#KwdEAk(Y zH*8W|UKOz=+)Tu7L2RqyQ3>oe`l;(BP3fcyj1QWoV9qnhNP-wNAbIeq2M9W2Tp8?z{fxQp@_i!$lr z(0#64+W41NEE#dynSKT9rEMqCAB_Qt#%X6eaU z8QRV}bk9ut^Wrau_BT`{pcEQs$5hqXl90sS4}jylVd)dfYR6Lkay(lIp>$ zzI1%*%=O1ns*3!l-+y~Q|I3f7-@g2)y7CbZh`aK<&JwNn@L7a1A3lyCCWFuVOng@F za{A2{>P_)k*@S0Ph|acy$vdmiLmYP-iOjS+{l8vUAcbP;e@(pamB-bt^M7<}$C{pO zQ!PE=44z`@GmX?NPox=`Ri`*bf%R0a2wf;q6^d|LtA#3F^d19*NN*+t#Oiaqb!lCw zjVe^y=dr$zMcGScxuafTAxklyMV{da@lhLuJS<>0zX{BWrOlafs!@b~Gf}-6;Uv>$ zlT>|D1!k2sJTt%ns%3U^xPG&>dQ;4uUDDi#`dNQj1rvD4X%NU_ z)d(G!s5o6VqQUy9KwkpwucW~-(qJPTOlz-qxJIO59}=?totZ412W%TGd%*)wfDf(K z=XbkBUe@hqqc}QPEb)1SQy2wM~&yLRN2uRShXF#EqC`e6#!7eSB(f4Rko#eIJR=1 z*vj``Q@*?TOCTA`Mb>cFS^D+~+gC{{0o--DRitKq*}m^b*5$7DtV_0je!q3Tax?S? z9W-3LrmV{?LsL(N{$S`6X}pvw&QknL)lEanBY>F^px>^qs(Z>Y$7DHZw>5Pzmfzzb8@kF27bxUirjWXra zWdQWs3(oH<=d{yy0bm6e6xS?FO9NaJ0JaF|WBv0H+DuetgwI3w`rTar@U(S2jZA_& z|HI^pf2MzW8tAJ3A7($Vbvg~XCwCEecZ{+Kq#Q-*kx+9#L{a$=UOUD@IG;wv;s4`0xJqCns3q&5 zD+mH8JA?L9?8!1{Rg6`T+;o(?3cdkqT%ByFcNOq@scD3>&Sy=xoE{{?>gjvoSvwv9 zDygUbvcb>mH>*PwW;(6fg2D6GZ$cYJ4la)>a8dX;Hoc|_Tozxlic-fiSvwx+`>ALf zKGc3Ou^FJ6PImx7V#EO5GWA3CE7+7}dWi*pP6u4V29Lkb19jz`ss4B^EuA-C1$(ft zmYi3=u#@qt5qpUyu5}8I{gA=l7GCGo=z(8 zE^%xO;g7BLok#(WJlscPyE)j!q=3BpsS|~eKK$K?a_(9lLl7y~0i^8BXk(~fUz0xq zZwmv=ef4wv96~+60@v}Y8+(S1oa~@ZYNKxS8Kb)AIYOwUsk419s|+jkLL6t$<<>ph zKho%h#6fC0LwZjDC0Estjpvxh7?P{ntX=OMT}VkJA?I7W?m43>z!H_;WV3b^Hi2Vj z8gp{`**anyO^vtgpRHr30iLb2U-zPMZl6;tv&WixS68)5`+9qnu2z5_+T{3Jo5NN3 z@+Z4?p9|Sl`$;=hYV3~3g?0CDtKPmI`i&HLm5(Z?dmt7SX8-DZVBXH6U>eQNc)_~J zJKolQ^<&d`$73DTF>Tb3PNQ>Ot?&uvqlbF284-5X9&pa=#xZ%_{%`nl!3W@hXgP*h zKya(&aFtxN2OL2nmHksGwa6|N!GTxms8a~utCq9XTOX-@X!l&JGd*TTEEs~#jw1K<>uCp%lJHy!|6VbtTmh;y>*1ERDk79%{G{rB6c^XW=M4v z!qn_`gi4=8)!-06^w*&^QQ--MHtY@Ez<3X1qzYct1>LDy@G^g4NMR2b6{?OI%90^H zyEjJHJhxk=|2wW0@U6ViCSr^FvcEe>)#oFkOgTgMP!(vT6Pc-PPcRrvcJJqSc%+eT zdEyX1aA!$XPfya8zDdZUbfW(HAq6SB2<~^#zU|7$fLf<7)HAxfV~RScfPQ-RWK4rt zu*=tlsS9#NI;Q73Fc;@db&80iSvKZA%45zUi)6Pqr2a^fsD#WKSobq1yR6M1rg3Gy zvbFAON>z!PS@+Mg=U8P2Nn*N|o*$VF3)S57Zbo{_0YFm<<_~v?a<)MOHtj>ZFM zxoa2z+{Z_lFyC2DZs1k9wNWJ+;8=5KCCFmREAvC+a=E#AM*{T5180sZ6$t^<9qYn{ zXd2;qzbdiUXyj|_LOQ@ccXjSX9A~fgX&!UP&@G&fkS!$Yxs_RrdhTxZkN|xPXwUa& zv@#$AvyevEt4*%`g)ON2Q$AofUgb^;y`+*#=%}0PNzg#$zcTlWr$wjTjG5GURyAQ{ zYNk5POpEI5?WCis#HOY**doudCYZC5~{9U!B;qJYvof zb0vt#GU`qRRp7R|NBngnR2GL-s`jlHdm0e*3akmtAsM1Q;-6N*yiV%mOnP0TtMjXM z)b@wyFWP31j;Pe^`H~)&-|;z1NlrXk1zpI=i5Iq3SA>#0bL$RIS96&zIMIlg9QcH= zg#ZY6i(A^L7kwHmFCTe^b>c!J`N+4VN&b}%SkhC(bU5JLOYqTErc_F*5*l&Xe0Z($ z4qbUs*g-n(q0-uY+3wCDYyEyCqM5T}dh~=;LFVk&%-I39uXOaTv^wjExibs&nMW;B zp7J%~FBz=Lrq(k3%JI2rbJIQwVFDLao1vi~JNwyGDM%f!`_0s?$yEkY-Fo_XJt7OG zEww;76>BuPRMF=afuz);1K^5rTC)%hZ8-Se)J_13-fFwV#rOeZ#7#)tGvpN^qo0k;qSll04d z)hcHM%AYgcReNBi*|Wz1bA8w)Ri5lXax)Sz*ovX<2xvb(E}x%KIG;7qa{8&Wc0a6B ziJA~n=mws*ExasbB-pZ#+1g!XYez|j11rWkg*v* z(%eeMW~A#8H{`6p3bHWvyX#MLg7HOpTNWm3<0m$G%qnbM?dWr|Ha>1=-gUbE>laVE z_N@ykkCzLBRR)EM_NyIxj**$`wQkITxfT$p{Der}S=+@t$l^FgE?AoNPS$yDL)~b| zb&Wd8b{nGf$lDOV7c)tE2YAI67Wueivc6tgbDu9go!J=qN`d@;XMB2SUot)q>_OJK z^x8&eXApTFHIM|5I*L;e(u!%8yQA2cHNn(9<-N|lJgVD4-OW&CA}sZ# z{Wx5|)k3|+36K&v)h$JSQ%xV3ZDv(>quGJ>3W01*l0#YZ2p!Z~1(o)>>3}NzilZ?_ z@tz_+oZpb1->35#swC53p?hIF6(q;XTl{7hzX_D~h=oI%A?+=-)Ka@!86DPIg~_g( zT$db>lXDm-ma8@(mD>?kTj*YusKTT%uJRt2rEfhs$CBL{BZ2CrcF{7NW2L2S)`NXz zj1Cg0{Fv zTC050B+)#-eUv|Tg8wtiSDp9xQYA>0VkiMDXf5cYT-=TdHd>U6cX6?|&8f7BV&NFV z8nhV`p?zB`Uup9U>5+Y;d%8MbSXp_9H|MYE_+KPFy~sLe`{Th6paDY5a!WhqD=o_{ zySOEA7bprM&P(lhvSeTZj3FG732sF!&rA_czckK?)R1Eee5PZ`-DPnQCDbFsvXNI1JfQQQyaJDu7({8G zJ7AVesNhy?*t`FGbnVWrJ(#0w*aCGcoKI>R2bcm|j(mf0u?~;w+_l+A3U~_1c{W4M zkQbB&CFH?TiI6t|0yQaXf+b@c+lU=~+4!*3@P}KD-(9VILw?t<9IA4wOWFe>Q^%U3 zG+sSag;JaCIYzpxoqGK#mG2KI=6R2TI`-QBlq2hiu3;$=PkudqZ1t6pKVps~JQ%be zb6sqG%S`o3=xsv}_XKz-;mElKe#6}EEoHgo=<3TMtLq+Vb$3V#De$6eT0DLhdehJ! zJ03x(k5_@0eD+kMtbOB;dqaL~v#INeVF&LNF8+JZ^A|(c>-;^8T0LST;NF`=!L~gc z=bax-YE$(oVS2L619YOq#ujAmd_o@>x~u1KcATkNmoe>*Eg*jX%UgN9)P0%Ht-5-X zd9duW|C~Iz`bNm=I)_@_9(;%{72D9_xyl_1s(B|493*MzlBqQVvk(43Dpl>=L%W?DJnwo>+aI;W^y$-k^i@tmOJu&y{cJ4g|WL zBZw17k=;ZPE^!Aw`r;%o_g3$9oF#hBJ4w=v()iYEl=sxqzcN(<^co*ka}5t~=Y3); z_laLwz}4IjQkEx1zIxHDGqvRUmQPil&^?A;dn?v ztk)A@eSHe+HyP@-6KJW;2n1|)a+%}RIiAXi`B}}Iz zx(>-naU;8bRanovNpcW z-C}pYL+TZwe?CYVJoRV^`jt3I;AEI1I(2$kJ4#CSp-Q6tp-db2#nnWB6!FwGQ;4t2 zb`MJ__w1JwM_EU!>m6==$Ga%jCOml-dd$$>UG2#m&d8m1=c`ik()$Lq{&v^jXs#_a zwh4TShNc~P)&Z~c!s0yqqz>mw^mtWAYAj0_r8~3of)m3ImAmlUu7f|H3HiC{wxrX8 z55t>bZce`cAe7|B8=ibl4O8t~FCg$?6dPwBF!eies#iIRwN3S>l%<XkDao4OyI^4vU=CVQk38T7N48=j@$m3Wc= z>^k(z>5!kBZR>D)$RS?DZ)4}X_d=iOfbg8xZ4YIs(?5F+3A2u%=t~)q9gFM0PK@-0 zUw0q)B{k&d=G!}*8G4ZPx9?w_Zr=`lBCzBO9?Iof0ZieU6u0-{nICZeO`=@gC8!@9 zry$Bgr@P|9|iOpa0$`Pc+%EXP@u;&N;_B#!KaUYJeFC!ZaIA7m2adiGJj>2Dbtju%79% zfM5Uh3*5CDZEAbWv&{H;V?a^EA?=wXVeC2-37V|aE<%ajgZSJMZKr44TwaQXqtmZm zC?U0A#n}X5j)ALO!W&Y+k@3}y_-YE;zH$tih57nq`iG69bVV8 z_zJ!m-1#rH7N~0o-+&)?)Ec2LkRLApVzbr~p_-EaE0)N00pE-+irBB8tbs4Afi1HJ zrp)&IpIQTh1$@(Ap#GAr-LC?mbB4a~9QNU2nQiO&YBrupBg*|=EiJ-$_Py-;0W|`Y zy%jD=4V0Wdu_GPdN^RD7p|N98@wdJ3i9NOBo{$(^aJ+82%D=$Bgo|J%f?T;x>v4O$ zY9yI+j+X)e_q!yS~ zlQ*)n^nqR3?ZAoZF|O>ul(JvGY%pX7V`3eh)ow7H+=&@7uRb8gs$(%0w)=}ZEA3{t zaBn)t0<#-+xaY%`*K==f-|;$ixCj0Jx8ujFHVF-N$XjGPp~DT({b_dsK&+k7kTjwG z26FUN8&#)qRvsrEI?dArPSYLu%G)+?(<)v<(?XF*b;_LIgw|nKSd~u1tK~=~E|rX_ z0(vOpsXMhB4>|5{)L){6Ve~Hmnqu+8k(>s4B0{NM%Z17+wikw$`Mg+Cighkt^+EPe zXXR621%o8!Q_IS zG8KHl^sb7$kv7AHEXB!gA27^p$5&P)J%Rx$^L-g9hX*W%>%hhwBV^!%9w1^>%|UJ; zQdEv&0RBKj9O!U)Scc&)W;i&;ja6azRLO>Avruf;dak-Wk;STIlU^)kR?YN^&%2Mx zGHQ%m1YK{Kb?XQbNqFnp85KSy4DUR`Yc}z83(R(_Hr!2QF%bs!JqEQD$pFY1_r`v+ z34`nu-0f|i?!tg-xfZrPo%DA#4Mc&jq@Iw_Xk-!^tlX`bF~nMx?frcoDKD}VZ={du zD3QE@yn`<7Q-;#N(k$ko2i5iyKrb&@beFB_MRn{)yri9U0ol4DwA=xt2=W@vbQoKG zKVuYrWe&$sgIESg^Hr z9&3#a3XF3k8x+&aJ{S}%HEb4rkZZAd&5!_$-$8#)w(^ z9Sw@YS{+Jm)eAj&>`z1;Cq(vAb!YVMJ4}4CA(3HHLFC`Q}rXPhn^IOlxU*HD!F^;JtZ-thl`G&XWBE!;BN$_q+`$KUggbt)%4j0vq^wd6HrBHW)Ip|1# zfpd2Tp1)C%u-;g-V;d7cvXa)+u5= zQ)kphR$$6IT?>ExPKo!l0eBQ(4eJ&t5?5S;G7+i$@Hx9)Bf3?6cNJs_ps-N&QM(E@ zA7Jb`)eO|%owap`P~mtdA+t0NZS_c5sFi&yURnk8$*%2}=dO(Nc^va6+MksZ-dp^79>-si^sfYOGu(!OQ$dp@i9+zm`j>NLzRD=jk| zbc4VSo3q(Pvdr0f#b|R-~C+vVFLWa+JZh*Z#LnWv{sLr?}K43Jy zRQEuII>?yPLl#H-Xza#l++(AG3cb+$NY;FvwD6a2lr7Z2lCus1SB-%`f@akVNPVE~ zf5~m{CNHXQQPcqx<;L2+UnuK;_d-_j*_(=3EGli=b&MVpr4!kZPH;*8`Kz`!YBxR&r3`gDi|$b$Of#u}jT@1-{3w(Xm=iWf;lAGa}` z%bebZ)V)RYQ8p1&HKYGuqK}`|bKtWqCsIpm>{!oRe1GOs9}DGn%?Xw46rM1+)bshG zauzJ4GoRW;`Gguf!Rq+pX5KdFbNCU7=%7LlKMtzBF^cx?)ZPYRb2kOwPvwLCs(amheS^ z;N#fI_#3w~%A&1DSn0Dd0#;ts3V%XY$ruS>#tzJN-;g63*gV7oL(9BhEM_Lv^cpx2 zaVhkY8rjSKQBOXR48&U-T-Qyl>srV3yC7AM0P!c>@S2pb7T!_^&{5u zF%q8Z<@1v~VpQdcznFq?YRRxgy>Hh-$EbmG&6m24g}*gSSq zK9K!aFJHu5HZ#O@iGx7Kz1Zw*#uqbQb5mwG1I331*FDUQp_-Yf#@drw<4-yf)g(}3 zJ2nB2g)-~b#H!llXXsR^*ULq+PfNoUE$OKQZ#0e@y}W@uu!r@qqA665m)Spqf^lQQ z{M^Yj6#oxZ8^)}IHSJ&x2k>9*PREmzzLtE1I>&oynGa)|6=xh$N8Ajp!q)D32ZFoA zT8Z5S0u_j@$WCXZh_Jy`co0&f)id$4L6G+q5U6$z}vc;0gJKB*8!J zLzB$aL4w`esn&LHp&6y8`ibhnL#?7Og$jq;Nf~8vci;rBO|90BW$vuj4{)UhW*qGh zipewZL&Q%L7=MtjHVvZqT`T2_K!=K-7)!@ItFetdMR&oMH%9pHDg|@<7zU4I<9VGu{EFdJdNiN+KYvH$hn6 z9pli4hAt8DoNBO+AygPI2OgrbKq!WbOuOUci;}j!ND8o9mxA3BdcykkhhKS1OG_HO zMoeYWtnFeBNS{I(J>)WQ?874f$`~Y<5k4lHm}|(V`z`%oVArT z4OuHDGsc#7o)?;p(;Oa_{!ZZ1i%b{j@9GY3rQKv8N7v-w`S1xb36YCwW`Dfpq42 zQPo3Z3DG1}4BeoPtY*@YlSW+rG~y+>j}*BsM8}WVt(9l)r1k6f+7Y*6v$tBzf*(e* zdUiPE*xDwtl8`3VX+Km|P|g)*eC>`Qv4i29-AJb?7!CFq6dq;!?6tNW2P+3QbJ=+N zs6y6W50JYc>gS?(tc)rhPA)77bMTl)&l0Drng8UL=il(!nhUn!1aw!diI%r?9b2?X$@ z|5A5*BK@4IS_iV#>#ALk04q+1NEHqhU~ARA1Pc1g_QW2uk*%E#9juCt@;Dr|eI!ri zKpL?T$DHk8Im2^EXCE_aGZSwUAI{aVvt;s!D!+Hj^RbL9E_vhSCx@f2q})YdgdpMj zE-?9>$3CEn@c<@h6ylF@+`f_S`@MUsWLe~HDxV8HAufz?rWn^8+dO%sH)+D8N&Y;s z1*OJ0Mq={_BsRODFZCALWlVi(zi;nfL4=g$(0Z~eE3rzE>{AuivOWVV$n1 zb`RoQ{Dx4orQ$2LgV(iFj&RI~|nvoR2Nwqo@)^M}B%QNYR zbk!=d9)vl-w=m`rJ2LY?9Pu*UQ7?C5j{-ae&^wZudVV7|LWcdj=&JOjGDVVab=bT0 z87y2l=~wkYiFENL+)&?9R9qpd>gZ3XHVF5ZQ)P0VJdD*>7^_W;nP)umo{59Z%;R%T zvE!llPFafzWRW2Fa^ZgiOK_%r>xt@&q)J7SUv+rP26?DX`&Qi34%J}ak<@ec2z1PbR5>t!JQzdFOm{z;xjX3FpuGw_0;WTxpnp?Ler{Zi zB6d=G=&jZH&rJHo2iM+F#?xL4IhVjevAlGR2H7WRx(`py(IPuF};j3 zS>Ii#Jk$%k)Oem!eItO32mKB0{kubFT#|cyA4B?@?y8@;E9kqRJ&Ko5B}^4^93P*~ z&xxy6#QJ6g-(8jS)WqUk5c+$83X8bG{?KYf<#v)9ND-3BXGgwU!oK_Kr%aLcDh zmRI0Dtc&Uj{P8*uvQQrCEwHQTI2&u}S3Y8A&~8-Nir%IPxsFYz^Rv%ZqPH30x7TDp zHL;8fth|8=d!WJ@BdGpjY>MOZbNbQNJX!AHJrw6QGR%1pEZdW|8s5p#i3Y9{RUAko zG4zWnk>1Zk5ENHl6Uhn;eS~VO(DzgC?TO9-;(d^q#VK|@jMx>-djD42`vFf_@2eCs zei-uoHDSz}V9Xw5V}7hDhEN}@_$F+8X zfsTfF)+m^vcGJJVW+O0RGiS2k`*<=9-IQznPVt-? z+i-g!pXSl~7~~bR>`8|cHQ9;Pie&G~khkkHF_?YM_}1Nn{p_)X8{{)g?(a_IKUNXS zl-N$9PT&R9W|q9B2M)zO80XYvW!dLPc*}+zBy)cz zo+lJLoN8Ewg!dx*{v#h9b$QBI5Ph0(7O{=_$2MK$-X1 z#92%qOf8q;ei>%7AJJt5XMu#vd;ft!P6Git)t%l~BwzMQ$z!Z$2KgHzW=`1vO~JF*Nk~I9eVXXs&nI6Xnnu1d$beU*BbuHW zOF6_5M!4lR!S5pK1ui9QDGJ=JS}Iu4g)$&~Q8Vp^8-ZqyUWIIy98`BKWI?7I3yAI4 zUqN&b7G?9ISsS|8TiUR&Doyf}M&e0#Hv~H^=|Wp|)@!<`g?6)~7JwFCdBAvkZ4sWA z<~~;BI+2cYh>k%CJ!#YY5%2vyR&wT6<}A?5m7amJz}baIS<%7}x=@CNFMPo6nk^o1 z^x6%kG|~T0(m5^fjv{Xa=^RWPHYdX`%{*dv>&Z#p$$k`_{S^X6vv#E1)@blEO=0D& z6&zUGGGEh$FK9OhYViWSyv6RE5j3Hfjfy;1qJ!X3MiQ}JzWJ56x3Z(5EO6|?0?;%B zprJyustfX=frXP50%STQ4~fGI;0mT^_l7QfhTBJKA^*7$Ve%N^a(`lfgy`fU#?Jc` zCZo;a$88=x|CM*LcA{bHK`Jg?5^7W&@-kvoU60;*3QJ~`yHkpEn$`<&+Cc8Z&hMT`sRoVR!? z%*8Se1V;nn*vrKLUP^wvsxxkI|9vXSuulFl;pg+eDF)Cm8QvZGk~_aWacA=u- zlBwoj&|7;Ba?WnV@R{bz0iZ7GMtkd$(W>P_O-$yc3z_i&xwCI9*K@{M$%%ZS`vcSA z>qcy0zgh223$r*gGn_>uR*I=M#PI~tt;v0@$g?H7v%{EKMl|b|3L}0w52RR z`x$VTP_-g&TQnK$v;>xt6`Xy)e(V&99btc*=#=4@>4ni@C$^vyeLuWVp5dg$43GOs zG%x~}cbV;?fvk*Jp4dTTCr2k(;H!oK{z`+>x-*ge4CghlT zQ3K;L1RtoR|qyTZNlMS}IzC0N(ox#g?4>_$! zr2>Go+aO7&9$O;^gVUdYMgEO9f06uy#Tz&|b}H7c%ZLTG+PdwgZ(u(O{pj;|?L>>(#uIcI4173jDf4Ot@| zlCD5Wkaa&96WYI@6`Rl$dyLmW(#eO77pli>V!Y(p1p4pAcv)9)nxisJD=YZBSp8X6 z@S)JIu4{N!H4oRRFTF^&GV%&UZimR1Lb4+n@F&sDhLy@4L3I6zOMC+y0Z(?KA6@b4ge;bRZ;jr zo5>CEabn?4HvIVM+Wh33isT8^fvszDFd3F{J`bCeS2+4X8Z?0~s^0%S|+L~d}m zf4uw4?ZePDTnWzq)qCln-l|}VjpR+kR`F5`^~OQ(NATZm6{GYjm1t&i>OMa#BTpyjxPm3#2#QLYty1g#rk%`5r;IcYcc$!Wd+UD|w zrnEOYWzIVFb2@9xdguhs_>OhTPWrCx2FnZuC@&qX*~4)C+ZXk0U{*N~Dxx?SjCH_) zKz&MB&rJyMGedab+HgE4B@R%8;Pm;ozDj#!VtX_wqeK~nGXaPZesk%3HTS?l)Y=6@ z&_f=A%-?q0re{zO=#o^wM@YX(N?rqvipX5lxvH&%m(WICq>6Q5PfdTI!r5R=-oT9v zfF!{xG25*^I`3*6hASXr-t7$;jV6{+LHV`HA zwGoM7qHdPTr@AY|bmvFW z`Pa{()*0!uZ?8{(Y+@4~R9vMz1|%fdHgGD03gh?ar!_`*0Q#Bx6Z-iOOU9he*hlq| zUL{!y_M}T7nGfzYgN&Cis6jf|+2+$OK@KbU#FC>BTKGrt#`$x7zoP%3y?u@(i_f4< zNBTgrMU{o-`D&YI$wuWh+II*E7h#-@SAS}|P|UR@~(23pr9%86zmOVY-&( zH}*4yMPwS;;dXU8w)92FGVx5k@t5jDI~z?_<8FAxK5Xl=M2UNz5A29ht4Q>&41T*V z3yww^=Y8XzGJ*D7z`6S1o+lD^C<={U%sKkX7dAQlTTfT#CEidZdR7FzS(AOwtO!gjAbl^3TowB=_ql;ozI@> z041wO_2bXu?g+}#6=?n))A81hs;`1@gxad^@?82c3mh+-B;#A?M9ojtjBIWlOvloF zba?ML(p|_HKsrR%Wa74pUGy}sPlH)kob;~3>Y`ZkBYehCGhFo4(;smFgAgPcC2ROX z5->;V-qQAv|9xi@jo}YlcP_tq;NTro2Y{K$ZJhT$oT$l4tikc8D!65RCi>aujCbu_ z?br;N;r|G-Kz z=kEP@|ChUed<$~JsVkX%cSFLE4rE1fRcUopGnkhNDg2K+Ha7gqyE(ej>9{WbfjEH> z>&t#@xm9DiRkP)0xri^n$z}_WKOQUQ&zhAVZq&t#Wn&`V;< z?uK#5(_uQEY-8jC1e%NJGFR5|JdVKry0sir*0sl!?kuLn^KjT19KCQask}^0W-%RX z0Fh}JyUN#wlMdzr;!1h89!9$QS*jI zZ77J;v;a?RmR&)J1h?(tvyp|BV$79whGLr?T;MqtSXd4mA`CSBbrE0)amM}!FGziDT1Lqh!I z+_M$nA&JLTGl=&BhjRa1w)o(}-issm?pbbXsOktABE)B3;w8N=4PGo}nv(%>gnN_= z;BOwz>D)l#xHPL3gMS`yQd6Q(mT}TT&FZ$Lc)aK?=WeqeI|$d?57s$2SUZ!BK6tZY zqZxYA`t8SGc?(PVP@O6b6|kn{XD>pLnD!ePAf(z7+i23UI_J3}w?FAP9&az#@ESkk z3{FFx-+`>9`!del43MvY6=I%r8>jL?E_irRUzN`ej`G<7Cvk+91=_Pi=g9~ynWQq# z4o}<94*sFYS=)<~I6FFE!Q`+7GldnCf?}Nd4WPm6MLa-(rKYp|dNYWi7zg13bhVmZU>^?W<(cRgp|}s-0UxYhf$wOWnbAt_78! z)Ks;rzwTB4E&$lTdBR-Tgo*_=AI{g-BsVFNhgSJCM;2mbS*Cc)*gagO&q8v-U|zK` zsci?ZHbt@ndRB7IVt85B<swYNGzh znkRxv^+x&{3FgaROD}X)i;#r_`X#wFQZT?A!5~Y9dO^PJ$8&WIsGB^zs=XM?%bu-( zZI{#To`4g0GH4*6jdnnns$|*Oy-apiCQ9551d1U!fTZd$x!JnZJ`_mykH`#3euUg4 zhLtQu|ID?x)-;apk_sU)I~|asy;!S84F~>eG2QuM*p>-<-1aFTCJNE&B49^>0Uk;- zk??E|vP3czD6O8LitLHX`ha1;nT+zMBk4|{Ooh?|f7~|R{=^q((ZQ^Q(c~*mGRMVg zfgR~^R@<|Y)stG5vBx{hWUsd$lohnQ2SiXj5Sk&81>&a11(k6VHL0Km9$<@%1;%Yu zdB~F|<*B!BdZs%$c?OLZTYJSsAC8MXv1R%4HCvV~U3)l2EG3N?Qm^(QWw674av=H@ zg?xJqX%z+_d1$q7^D=p9XlJILb_ZItGt-|!<`Z#{wn>#dusdLmBYWY*a3!zff$?V3 z%bH(Xc@d=ytMY4ETELor*{cA#~c@!4qu@yIBRc3 zE<19N;%jaI(~>;2()(>B%QUmP>J6NxE`U1Sv78J%!PW+7)hnqhyVL{`WN{YMbzR^2 zfC!SQ>w*aKbu;okK)zsQZ_Ctm4cUqYxuG#j2mMBJ6beyEZEf-sG_}&VIg&yDtx~+O z7do|90=c>_GIGfbAQHHLJug5cz=^^{H#<_k1d;RrmKQx4`cylC@}9sP zL6+gWw!1vB|L|IRZ~GCrVJMO9=tXdAN)eZ+c?{DB#3he5L#w2(5}dzXs1s+glkzhh zMgONeNS79A5oDcQ#CvX8SI(CnyP=30o-n>J93odmDRd8ChuAOy?TUE!&Vn>ykys*! zX)4!uCGBeABbE;=j8Dvus#F{wpWst8wNVfiBy^Ws$qu{tXAsQy%L#CE6P z31U$7wx_pPN}UlN&{TWqH;5AIHJx--dy?_!y71{cM=*Cmby(dUjoytP20d+YB%y2- znF{5ug$apynmPQ!@~j5GK=cZkhbvbFV2j$$Xl#Ob^y>H2Z-TA-5l53r!!LH ziWG5vnIU&p<|B&koEQd`-!iZ-bA!W&(vI^*@&nDmK%q`%A<1=CCvebY;y`3F9y|YdvaU*0h(f9;U$tjpqEtldMh1< zRx0Kg2@yb8)M|}lH`N*djdufUf-y|M7^0T(3BGI$6N-*kMtdgyeH?Z06sA92`kH5d zwSmV>hxWj00a?rjZ63&}*^q_f1K;P({mB?KAK1eZ*P;t;zw(oc78J!NG%Q9VEXg8v0L3jyv2~RtqnEW53H6^U29-6P2kd1+ont3(EaK!UrB!z zslI{aA#IE#34dhwrTy?tW7mL~?SCDsg+{t9}gub93AxDJ)L zegSu~-0UqVDwvJ>G**-mMjb_c8e$z~D%B79j|C)ufFbU}hS-uRrM@8&E;6Z#5tbhU z+Fb>-yIk}yD0&_%I)WA5yM3s!h!(IFibbT4In1E?n%jJuWJ70b$MGD#wVZuxDP0Lh z6Fkom18*{|&5GBA@+Y?NWiSg~3|VgA%glmY(_(yQ8XNnGZ0w)NW1o~8U8XobF=0~C z{Gx<}0!)C{rwPcFC*Zv6zGaIs1A{`m#E|l>^|eaGlZ!daWwf(3@Y=oL71UooqrcZt zV|V(yZW_{L2EPr1e{p|v?coEPt4OICZ5=*@S*)0Ahg({%ZCSoF>>EqVutRZZ)-;e? zwfG^aQCG_1T%(hS^VF>8<*(Xgkr0Uw#+6WVPD?Q1hwta3|9IFoTS zUvbn&dc+srFo6n&uFAehnnCnHU1>-g`IbiHnRKw>ymyYA?<>wL-Fc@7AADiMxon^v z+@^^6uBmZnuN})$9GMyyn6WtHd|c+yyrceSL(`U})|gn~Vsc3dH23sWrx9Q;@*%+- z01>7F^y)X`hT=YWA;B_-_Xx>}8&$ZmrJ*f?_t`me9;zzYdAAV%=dzx57&JxH)brP? z@o<6y6H9UO(^EU3z(d|-4<`j{S_HKjqqal7uX-w2ILCMsM>xI5+{l8jS{m@q*1?KI;cBtvdw{zi=0OWMI6^|5ZuFTse>W_~J0iq&&0 zQ*mUP6wYhM#}cK_EcoHtrhT$DfZ&$8^kKok^`W8I0T6UN=tBUs z3}V$8fH%s>O#)>G7%&a7vF@sRffNc;19gKgtXuCIk-X8tQCu7i>sKz*`m~wQXH(LlqhX{L+8PaE;<+-(WxCFdoN%~*E35+8I~0>Vp2sy|0$tMpxi zcFeI#wPSv-5M$0(r#$9a(kq^gK#hq5z#wx=AsVlzy2=LJn+^C3O}Jo2y87YuH;8mC zLP`|vT8PKrAlh{j?J${7ha{shF)CjZ6zsVM03c&8a8+te0W%+l&zc83#=jUhn2xrVq$NMsWmrxW{8ReNcy-@4(aLfA1=MCTH44)TFI`N;J z-5}=d1g*1!6DK2aYv!QZ?+=X5KDEg!>CXbyKC+WFzpqg0T67+sX>y_LnWEsC65*Lj znP*z2^-Oy6ICrgGEZf@1JQF{UvszAdt)_{pRMJs+k83hxRUl3&B3S+ynFsC9fV}JQ zDfFnKAvFm1Cs$H5uP8Ad{x#YwaYiw7f7UrmK@W~HQOTICgPHM#`>WNuKa1tG6DmO> z3+|Quf~YUu24H=Juu`P`m+B&qA`urbk13Nc zVeJ{u+Oq@gK{OF9nMy6Z?Aoi~+NV-oUXGx=8Pxq7LHz}3)O^9NwYTE781(FY+RGT! z7s)TIPXM4r%f6A#P;@zM;g7R|rWO2qW|*tggR4X|@+sE(4_7%<`W{C)qG6kwYZ%T$ zD)F9*!-1IWBvHZ=ZeTF>&TLT&UO$W7H$G#^{Ya3-7RFS?PRRCeTh1p1gAw2y?Ye~X zj2sR|fN|-|Z`CT#aiF+!z?ziX*1jg^6(Wv_s*3iI+sM4_%64z72XCvo1_rW^^gA{> zn8VR#?Q=NM+`5$>!qM;or-_oxF=qcR24g0#HH?`Bauu+px_ip6+TF_$!*`(F%jI|N z?w+*6R6e6xCWEeC9T+%%6(fTlk0dZdb%;!o&ausvBY^=?>+A{?N4??fsvAvg9&X2d zPWS)4n^c8Cg7pSSUv!bvrAuS+Jf(_<&!V2=ENd_vx@tX6^CghTa8h{o6{0nB;5sL0VRfC<+j%~lscJzYA`9YdI-?tnBR zT{GI*oOA|J8_Xb(<^G(;P8!Ti;RLc;pcmA_8|im~bj>Tkg;xwLx{#O~U5-dAep2B) z?6Jb*l_xxsrWGwhkhkK`wa34T*2D5R2RqjXYfX=G_Js4JdV_Um7jC(IOL-S;g4{^h zvx#DG<+dlckVvD4{63xKRNs6G?u3^^tc`|J!OIMHZ-N&AV>h^CNQaM90L;)78p}39 zg-hXu#GDf>+=J!B+K-3jjMg@y$z;vp4S#Mvs@DvX1Y=bka!M#?1KAA94b_b(+H&un z_K-AE-nh(c-^2%cQ*l4Ag7Wq#-$M~aS2jS0TI5Ubnn!FDL38Y_`J@&&#$XrIm8 zA>zD;``$jlM;w^*4TalM&-NwlHq!j|z>&J-0NykRc8nLVO2h)U8e?-~+8Em#^c3mL z*0>3>N|;NP1HPkjz{mXj5iH4bVd+cr9+?cvS^e&%5@N0$s2S(GYt#Z?aY4zh+xaXF z#h4tQ zrX@}1b4%iG#Er`KYgi-&@dLQwiw6#wE)LF(d~}Dgs9e^pVB}!fkS=&KaG|f@m}aWa z3jy4SP-K%W5px~uPv>ODmMY>VX9qr9_3%_ydR$?gS583VDqu0G{@Kv`_mr8`IDnhH z#AnQ0am>ZVrFqIsJXA_Q%XtH@p=COfz6KHY5ka*N>e$@?4DBpe6D@diqe2HW)MTzx z!|CkL)vSJal2sFnY96i1Mo6Q7F7*CgM4-mr+>|BWpQ|Zl)x^lvylJG}T+#fOlG{q$ zTH`K`bt6dI4V3RFmtUrcn}lwxmb;;O$lq6{Q{x~gaQTkWbm3pq*9;hp#=c^_R{C$G z@87F-y#@Merus7OHOGdIq@5zg9H)n;vNK|e82~q=es%qctkl^27~kxmdbzEg;zDoS z!c&0p3eJD=B=`BEd*Y&^EL?bk`X)$FXFy*zpV0-s0>>OqeY=8jx4ixH-7>0529$PO zdsU7PPiLja%2fq_sw&nmi&cfuXH~H$FXKgWRSQJ-1Xk4rRuwvs@q)gRp%<@oAHbxM zi9yiX+W-}mf8_1|qsnw=^yC^Hq*KlR6^F0o9)sLb;Ke^E_q%BXm!Bof?P! z$K+mTqyDY58Wd~`7^*A}s4_g_exd3DYGJl~E(mkDk)cDW{vyn4Bbe3W0796Y6^wB| znUxlsAM2SL@MxtxujfPW-cw$r#&fu-i~ZcOe3BQJ9N|?w^ADSdG;3jx?}c02V28Xo38=sDx$dX7r_zg#o4T&IyO_p66eAT+ViGg{Pg_A z`RC)aj~652ffX#pLwDZtkFB`%(D&jdY#kovCx#Vmy;q4>3%Xs(75=m$&ilxm{Uk76 zvHgkH4jI)h6N~od_6`{a@lRDNJ%O7l-;eLifP7+C85VeRoXL$^GSqdhnCD!4CNVWC zS8+V>LPXxm+|w7X98Zs$o)}uVBJZ(@>&2z_Z-RhIeWi1J=(;hi=|+4u zgZGj7-;><8ceUOmFWtR^hwq0{YImd*tF{D5UnBFu_?h%; zmg;Lf{i@-eyQv}V9g7w%eEzOKS;1N~RDduUhIAgZW`m)_+TJ2uIFH3(eNUX(2*qH8 z^4N5R%hSb1Xqr4-7@^Bc@7+=+QvLZ{z~|}8)P68>$uQU1;#oL^Lg)KuvNEymk?uC_ z{?hw#nfZ|U@W>8$xFR3aQD82A_ymZ3!wpara332ij=R3Bt`Z+~-GDF?7I7Y2*8(sn z;|#lZg4g~4InBX{O#bH?;$XVtN$@WJZ>J;8p(jUc?;+wzk2{-sEJtx9FfKfGSz27| z)gu{4r=JbUh|IiYA_X8iu_~6phmBx?r|*5C3aW>5_t1ik@0yfV^ot4HlwIQ%OcCc7 z?5fSh2OTD`$i#Ir+As&K0Pfsg5AXefy@5>bdVoy&p4i4Kjs(ZePFs~*Z!+f6nuiP|-*FKay2F3zOfmAxj_m9Bpu-|= z=E)IS?|udNTyM217f@mH5tmjVE4u$dbY2(0}g zQRT0xJv=gm${9j&K`zX0yUREUR?B?lA8EU>$}Zy&X56tLGO><|S8VYb!`rN0nt z0#h&oOF9kqcJ?(VWhm%dP+62titca8SF!U^720F3|YlF2hNcQ(_Ify>9_9R zDawMmjMH(Kj$VrjkoQrOG>{M7G-K{uaZd8)tn2g?azV13i%%t`MB}a|EN)KvD!tGN zx_bu=Lom%(<6l{!O!pox*{GUL7&Dg0s2hGQP!{o$s&8YZxQLiLv# zL+5wU(Ea1kPdjXuqITOBbRj%IdmY5ib4XvH6^*YImOlI96Xupn&EIKx20VU>RZW5_yZXHp%93^Aa@^aVcjqC z<1nySkEKWXqrw%e!b_32Zz|)c-m?FwFqY~sMTNsqVV-kQjMf+josY;_sW-(N!@+t( z%oy9qzsOVQqDmcag4%JnP^;=F%k#FgLHm=bSPN5;=qvvX5)E=*C?4?Oe0Cv=xJKuA zKVJO!d@fRY<3?xu)h|ZGWy6g?#N{sz&WUWg#pq`~M{0)1G}>KMeO%lc1#*+%9c8~-ny>vp4(t|#KUbPBq?8;7mdl`IeZ)*zPqB+n6vODx1T4&* z8xjV^qInoFn6iwxQcx6RPib7%5SN`7TN&rgOj!;K%@V>I8U!kO zN@X2$;n#t^g=l&=Qp)sq0Y{dDgAi^=s4LY2pv&?8nd}UPRKdxLnCZN*y%-oHV3hYiVi4jimJ!I>rq!4qBz{h0e#Z|_7X9u;V@$sP#>+xm^t^m(S_fetZ=}3 zBIAqqLUWX1O3)}L;5}ZCpa*FoBBesQ|Bfv9n}VnLT&MeIG?{XT6G9&}$WahY=j$r) zUq*8{o8t~^!%riBe+0_&?B z8hS*!Yp3N#IX*A~JgRLJ-=r~MQio8K9wu@3aM`g(s8VszJBU@;vpU9c)OB0`X#weO<33EELH+Ex8lYD2Inin%BTc%>%lK~4{u{2z)-q& zFCE<*S@O8EnuPaJUZQjovv{~V2&Y4akRgk4@&r(8FI_8SI~Siwx)`0VIEDx*e^r5O zx}$@VW)-i=LZA}2u%;48AN)!#^lSe)v&FfWHp7{nrur+n2@A&$S}Go--Gx7GI~P|S z_`cQ@JaRyZVScF`JOZHJy)SXrWNVc4eWv*(DjFK)`Yrv1Qcq5IHCF%AOTInMPba#PP1 zDPnvxX53$S?@UHkY{^-l+>pjKIV@y}4MZ~2Z?xMsZc3!*xS8UFOOfS;_`qNrH*&@p zs>h&@x{%YbKF>xtJ(vC*N%u88a_|RnZrPcRp zlm+yQ$z1UENsB_n1!>!ht}6?GCX^J5`1Ha9-NBRHF~aCIOOWdxWuDZ6-UBiXQi!7I~{xZ z$n~S)adWS&&Uv34B`qK?ZcyNA*Tr z=?^78<^2LQDYf22gTJHyU_*`=Pwhy~YaE#zwU5xC8ij(HPonP)8+VKQX$3VLB03F}^dxF<`*ZeaH zS6Qq(rF|D<950BPkr#p*bdaQ#?zbYSAlg4H>XOok*ZzEOpl;4u?lPmYKXXQgZ^ zNMkc`KMveY-UhktQ&wHHC_Ot zSX+tzGFkwm=*FxxjL9r9e=c2ga6#`yk$b;eX3EGq zw}PzGA{4j{g8;F_@qT<(F?cuPhUJcbyx>VfPIcViZym0XW=XH`Aum0q`E-k4nR-RavS-%Xqiy>&}@mKsNLzDqpE%wj&XvJf8_MdBi5IPJ7VR5@xarQtl8_J}g& z`k6>oTBW^YSt@2bJvf<}8e5=<^~s*zxKb{?Bz97E=z}#`h&npOvP%}(Bl|7!8Z$>6 zeQ8N~fz~5WTFuv@Q)FTQt~<7YuFxib{~z=QpO4$ouV@;FOrKtYs^?>BQp#{#U+SL6 zi~G3p&?iqSuGiFhTmzaYY^?ac*QuyOadA=KtXjG5o25(F9XidJJFG$bo+Ud!OAG+Q zmrNGEOhovytPv9yTZI@bu-ya4hdyXjCR5|N2xI;|{mIm5?kDHosOhNr7CU9|Iy4%(aJA6RZx_K^1w zdRfOv0V1LupSA#NWDKm)fB`fDDOv3&Fz~gqOO~7yrHbQT@so=d;!z){iW6Q*(+k-p z3p;_e;&`b)mK%pxC2ujf?3;(x$i>&2z}c`v*kl~S=74WuFj;yanH|9%cV0$A=z0bK zmk(Z{ICu>qiw<5OA*Q{R48^e-7s3iw6rPEPS&a%znpJ=c z4IIRRaN^P4=A`2wwva)Q3~=7c!g*``zt3CAIBzAh^OoDE^A;{9aNc?-cW)(ATmK1p zVtFnFXA-YPv+i98$!C?N9m|OdNDMDnh3>f~e?DhT|Jrv}xH$Xj*Tp&i?VRH{`K%{Eadsyh(=$CVt!o9s_`H8vuRoaQewSo{8! z_vuY`?x)w&BrT4|qL{sZb>^LdWvCE

Q>j&Qkq0jK> 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

>gOhuODB3gp{WIDX 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

Ew(Qg?Uv4HXo9zKdtUO(8pWO*~sWa8zi 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

%k0GaFcI{s5O=vdQ;qbkv|jLh!xf%91T=k z7u0`!AZNrg#r-(vz6(t3twXJPVLONfm|L2C_K%%wItZ3MEja3t8xQr*hs+~ zUF8!Nojg@c`|4yV5S-2vPh2@D^UAi7Z6t`vf|rTWVx**u7_Ntu1`AbM$@u8%vKCAY z25LPa;rN)w(-#*$f0l*DUC*Ag->we-XGJd9@qdL)m=e;=DPKZ9Bh4ce!fBVY>#|Vm zudZ`rjaVc)BTYYxJhpC-H^ZtqQdUMp(2ZfRY7-WTy+n15t;4SWmy=IuU>7uD;abQr z52Bqj=i;y`&6N=!RG?N}ZJ&q9A}pgb!e6<_@<1#y$R%<}c&q_!G?sLV>%~Lw{>RHF zG_v!fYbt9YF*Gpg{jiW-x=GVKG@i{WaFUhSj`6KmO7Z9}5urR-Q8q^|cJ zS)tMne?yk5+x~lQ;TAMA*dINfJ$fuui;2p@1E4P}{rT^kziqhUQIPJU*eFQ(R-M>Ub)m?>_=xyVTZ;GfE)GZX7snPjN%7 zyMaGTWYyJE{W4Auwe1FeT#-c}v;rZ;Uz2C*VEYB~#4B72xCTQoJ$47_pPLKi|GC>J zgEYH`c>GCY$#|*WlWic zGpu;Do1FY^%rCnT-@@j5EmiK9MHbNum)deUrVuji#-K+tisxC=R;P=Ronb{U!*kKK zrqLt)Oxn>SbWmMK zRYR8DcmS)w!WmjP8UaH!yKz5mA-by|6q^W7gZGFsj!y4qR_a^$}3=}!bRAu ztnmT%y-8yM2qg8=uMW%mc~hqo`PQvii}jwA2Gd+cCPNa;Zba&_2J5Z7be5CgU#iCI zZ0s4hlWrhGIteSFYBdz$8#yv|eK4UhTAa2)Q4+?!ixtSUeC+89KWJE)ith@tZO#L$ z38!Zo2GzFO)}K25y?uYX;snHJi(k@SpH=SY{N^7bM++OxcQPm}?c&K@gG_Xz&3v6X zjhWh=j|H_>&LZ%>xPEK_q>$b}oBkNj!tDMBX3F z3Zl2V;IAT>P>I!YjT6o?4ipj~y*cy)_(;5HR~sr!=+i2l5clF)tQra@%@#>_adCM| zMNE#iCZ5$8(xT%v2eDd1ZN~TxFaQKdVtXi( zm>>zHkdudUvzTCiMj@IjgA`@t5ea2#a_)CNnvAUhS2tQ~&}z)o5w)5}U5a=I9eQ3l z*-2jTp}5jp-COdqA~aB?j6B530i7F#(4-(KTB{%rbGc0GP^gc_$4$_RxfLq31~V=S zB{xRn9lvc_aM{`5)bxcn>rLsUn8V433S{O(?2M4q?#fxgABHRBhjY?`Bc21^*)w&7 z`E&E{^y=sSv*3Ym{q(9e_k5Soe(+>rQRQFGNelC#CDG$A4GUI4C34FlE|+N@kfh2u z#gMeja)g^1l3jS&M?L9pK~OTxI6G+Z_{9XPTiTG{FmtWa-Z^za49&wmE|TCN2~;ZL zWi!EkJBGszV6lfyP0VrUr2C`BVgkDQy}Y6&a#P_Pe_F6anorMMq{I+0BX%z^Vv@;w zdYUCH&}Wy=udj^C(as*1;eZvTOSiI_%8dG%72le?7wLXwB;I8(HW{n`OXJ`Y7SkUfXbY^AJ=n>%cn)_}bx@r==06*&h}J{;SSCRNC?3i{ zVMt{4^$d!rO!#fT0a#ok_ zOC$~TUpeK3nQb-k6BH6S%>R+bQ464K`KPhL03oDXW%16=W)^lorcp-uHVZj%2C=2q zaz~DHb!TtJJcXS5$p1BZ3O>seG6lf9$cqq819cypta;GxnE)Z5(9D%RjZ{O9UARBD7~jSzsIsJB!V?`IDljGC zbhfU=x;V{0^^v$Uak*|ys!>!V66lIDdDm|Nivw_@C0EC7D#skZ?m zc9Ma)`4)A$0r9Y7RPE*T@~k1^gRNpz=jL$F^C)v`On9+1aU?sR(oQ*)e=6@3 z7=9@9m4hufMTB_N2f+8k%Uo+WnMjGSdlN?CET@+%e~Ev*Ema4yG0TuD)f6`;|K+x% z5rp51wxE6a({P1(2#V$-N&I{SMe`7TRp9Zku;W4G#6&V^OE&gG+jMlrZYYFPV5y5J zd-2yasB#w+lv_Yhb4rcY6g=;%Aev(kTc~OSYKB@TLWR5JAso4-Dy-ziya`azE_qN+ z9=@6=%EIzC>SS$Zs>A+>5VdK6%8OIF(G^z7q+;vVUj3_ui=m30k};)}(A=S`AydH0 z{*UbqF@$H+NTMYi#UbQ;JONCPucOl05OyDoUNyRKCZyR#@QPV(S!jV|w1P7?49+ET z`(&^w6HZThic$iQ?+FJ==rXxrd?Ad` zeB|@}$AzyNlx_xIH{idHeQu6~cy{s+e9{n0E6h}<*Uo~k(}2LNZ$sFnCE^TSo#Da6 zG2o&({&!>_4mOZ~rL*q(3DtbNVZPkBE;xkx!xEo#4;fj|H+>Xkfm#Mn3$BK-WF?Cl zbQ-;eYE&L|jr8J>-EuvHanCR2+KQzxq87(@}(9u(~T5;G;Ue91WBt#m1(j(|TzQs9d@S|}C8NL&BX@oBJ2Rxwh%cbPGQxBZHz|RcsLN07eBpr97 zE{xK}zQBhxMsE3+3bjq4{-<2_@g~~=gWPin`P?|0oD@f)#{++(1(%Q>ABr`D;j9^9 z^IEZ8yI$@2?A#FxOaWUXywQH6!fW+loRp3Fl=(i`5xa%sc8qL?gQ>`Py(8=kwkUxL zI3l{`dg7x>*cnT*+wIXBD@2Lc|^_*#Kda0YAUn*SXhG!p$Q)_o~mhwt&&H0oPp9ad+be7)-0*+!v zhZ*8{;0+o9><(q*WoWalo{TBsUA|oTm6r0QBU?{RuqRWTemsdUxS&~_ch9C{rpH|OgcOe$)Z79|r1?g30xTJ@1 z`0}a?mJU@SQhBX;T7~yG@{w^K`A4%ny88w#!T!sMF8NnPO~DpYH10l1vV=jkr({X# ziKNWq(@7-NE`;7oZf(jmm$b6lYNdaPM;F8WI%jSCD#1R=(ex?(#JvhWfoI&CXe>!y z2#E+9m$19Z%4y20EvKJ!QOq=HP1V6lPe+mSA@3*3ri(fmB@uqCfv^bEJLvSOQ5*o| z#goL-gf9h3+V~g-=Yc6mDW)i3w^1=?^9j{u=NmEjy7SIgDN;GVuiDR zX-s#pmeSrk-H-JBoYOTQOM5vt(J0C@4=ROpI3&TZRoZz}rK8gCFx(>84n^{nkn0)j zL&_h(HSQxZlb+g-5iv9*2pyO}rwvc-okh@3iXz?E(wweT5f(uT*tS~eL>D9Y5Q*KR zJX-&h-nyQaK9`>0eTF7dek4>9?k6N{6InUtaFyX?Yl!g7Y;e)*6WGlZM=1;8kAjY6kD2kgRkrpjzEUk1`1wD1!aWRb zmH0>{Z+ErVw(m!P-$Br&qzC>InfxEx1cN4Zmg`?IhkrLwBOP|KuDs6SGy3d4OIKnq zJA=XE;d@Ar8tdYX`Wm;IuWUU66&`(AieB0!W13};6hX&PBcnmqzMuy*H}z8H@JkL$ zO6qETRX&@~knYQSx8CNib=SC8Baz?f^lSO*bO8x8)S6FK51zl@4pkv`(Iq4d*pbg) zpILJ><95^>O`^)dabB@KV-kQ!UT((z;SA1|%c%QLP?MuHXCUAq4ZQJ`<)P1x(DLT6 z?~#-*D{W>uUBUfGp*8B%tGe3+9UAoB*$lZMJ-nG*$>LHNA(fhh2{L&@jnllA;8?vNKCP2{Ty)+2d}KK@GL0ldzqP55EZKj#J9CWXCH=~SHOK?_ z@w-jbBri2LPmeg7n_p@JpoZg=E9|f6-Nh%JpSdizs~*077C|A*lcOZCv$r%_e*fr6iRK-Xgxk{yu!fxP7eT(vM{CzMM!a&8HX!i4sKHjSReu}3Bm0d{xg5RoW> z)e_ZpD7!-yd%Z z(21%OlB&CBr@qn;B5$ll{3yp8;F-VrzRR&Pdt$Yh`BPlG3UZO{%NwA6131t-u#J3r zZnjH3<13&ffPEF*J>btj-*uCw6xY}Em^XVqVe=mQv9j&=0>H> zn;W59_+=#W6a3XgdHhSqwb1qm|9lC%SD-xQw-*PkcMDy==9cL-dJRBATAvRH9OA&8?mNdO*C^kCpBDkiYLDr=rBq7O!KeuL=Q6^AD5pCq@NK_E zGVA!r8D*(UwGJR}hM*UTU-Fc+@j2W+A64M`I3m;pBqu0)%L>)MsPRh-jE1R+i~c43 z6*Pn(R!>zpotF?j2y@)A@Yq*nfReA8@si~yFV!dyDW6^fCaPF?mtG#m~9HsC)@NU&=;l{>zCl^@ZUr8ct9aHH9MmQN=@6B!^6f zNExSNL#y&G`0o;^D!Q%w3v^vlxK~i3KuBqnFBfwMt*z|MPCbcI;e-gnHA5=wN;X*H zNdaLm4Gq~ciU>UMzVE5aakDR)y(dIEnTYM&c3(LO1MRTq}YX^4y? zCYAEql`#UnF_G1zRw$R%gr~K(DPojzU7zwN@bMDW60vSCB#9EyjEVtpoISR6pW7{; zQ9bkHTGBG3G?+ms@IxdL5(tejOF~r4mMzNHpz{(`Re|-D==1L*`~IJqOZ|&!*<>8| zlxps7YhMJs@znb;%oN3ag^K&N)gHkGcN=+8;E!+RQ@`!H>wDK1iKb3Gf}f#Vk-!^@ z2M$S}UjmP;JB2>n>nEx>`>eZ!jZ?@&5VW|7tEY%ZNgoT5a>ECR?m`{z@IlqY9PHxT z-ZbhTc|Y=~4Q|-?0x|Fy$quZCBAAyb!zbX7H(7dz`?eCd%JZI9BBt+scg;WN+_gn6 z!Of2lgH%>jGc2MF^JXf}msY#^=L0M_e8tb$oSegr0augmitf51IE`hox=JZfQq~e{ z{ZoaH9@q-UFn6vZX0b<*&8iTT(i5&yjZPNj};TafL$WNP+t+QmQVd`(~! z4r}+2`1PX+k2bYSz_wPe^!y1|;?223Tr(5?;vrJzL;QeUXq@ojYVK~Ued%lN3Fh|X za?3x>9nW7fu*75@T4tKRt5toL-Q^=gsexKbnO`kp7$|~!^D_1nx%|U%OR0|(Fd1ll zFrSZyKc?5|jJ$<;Q+<5u%NkTMoK_ICyO8D<+xSn2hZI9oN{WkKoAXqD8Ro#q94Vb@ z6EX6^bOJ2Eo1vJ~9Zl_jBPEMD+X;#`X&chkSm|~_%Vb@U>@6!-c1o{}7EO2@{xJWJBv4BdEbqr~<;T4T4{dYBC838()Y*TBu!r;cg&$V)XVw z>_?Ht!ox(Omww*AZvJnKkKz8&vCJ2N{i#om#45mK&<R6)Kq0&F&|~yRsfOeMk@RI0_rq=1_e2+f9&Q!XY$44VkM@S{ zRtgfE0*~v~wU@Op8*yO}{LyR3Bp}c|;{+|S#8_UV#uhKY8}8G}{8ff3+eezLXDRdr z3sl8R{1n;}m+|2j@8O?~DoYY3u6~&v^ylE-q*xmk5U}Osi@L=ot5hQbT5QtF*cHll7$M=s?=gR_Fi))FkuAMG2SU__+e zXage9VK3s%Wv16eg!-EBwT5x5`c<1-0+}r*qCf|3U4y(Vy%q?-QQgpj#$p8XG1$hi zTWAkqyQw$G_y%uJdr$rnH+b}W-)G!cS{_mevowA9HEfU((3S#5MOS3?b!Dl5?PE`7 z*LZU#StI>jwn*7r5uK~6iDxxTZz)S|4a{hv)EN_U>=ejckdCUv<4)C!X=el1&Y@g}e8XF6u}twvad}8J!pz-@<5?Q}2Bq)r=6qqUm-moo z@tG4z6DN({iZX5p>N+5iuhY%(PNSf4ElFf!nY$&AYI=t1>)gJ~eCNIXcaaID+CcC7 zRH9f{Rm`-aOwbh?hK~!rU`WTQDWh~%e;}DPk`;)@L#?^?-<>t6y7hrwd&OXb6=9Xb zEVC;p7#ovpz+9Uns+=C&6~@f1tj#f4@sI*yMSk5fD_2YK5U_iC1=_qJwCj*WvCg1j z*5ROWB|!|~-2Y%Zf5pn9nRNLkRf`N|bjf=Urq1F@>HZ+YNZ@Le{}JuqoUxEBSHE?v zT_icX{w(A_G2+5Ayv_O}7KB~E;dJkY#whCM=t6>AhocU-Lg`w5Z1!(+e)iM|wL8)C zMdjLN=m9&@mX@3aBydHc#-QI*eJ)0-<-T#n8U-l(#wrOlb)GinPwc+>0xzmQg^)_@ z+KSqt*6Q^}!0Q!tC4QYjXIuQEMiEb*e}(GQXRx4>fHJKtXm)j@1}PF3?twyc>O(K1 z%CyNp4Z&I(N??Z_J5K{s`c@S?H&d)7QsCX4^0g>jfD2Ta{`6b9Xi}v6xK7QA6%*O# z8)fn}Nc5v;LWW*+wP}+Hh#=$-FF~u)dNdW!$s(dvcr3j56mQ4`ND{a(ud#S?_&=x` z5b^NqgP1ng+L(ed){>p5Oh;}13%D0uV$VMY+DVp5jzISYf6;VGcryR7G(`nIy}bh5 z%I9Gc!TVx5^7vgrB`_mi#y9g&VIhm|j{c%}%8!SrrC*s z5EAPsotj**Nq<0+5g*#=lssK+Hxd#}^fhMTrw)4It|oMvzxT~6RQqyZZHC2|1Vqwy zsJomBx-X7!x>^rP)xTvv5;q^V7Y@g>lY|BT=$~iat(&d* z=V!t|bJ4buthVXp=rY_owa$F#HCj0K`l6|A>FwXH0DPFPW6xi7F0PMd+PGc#EHYGq znk%Jj1$9FRA6ej7o-Kh5$E?1Uy%@{Xp5%+@n?kD%SUx;(?E_=kFP<2m*xUnpiT**Xs5i~02N1x#Ew zzP^iP3`O9&U>9LgYUtfeuxr}Y#)8J@#XQMp1Q#wu;WZ8019!TnwX!IMUE#9If|puh zT3Sf2W}>^MO*FL?0nzt^|NIOzsw_w5SdQ|D=%ZO=^kJYdi?}q1X)`RIzCiuc|6duUkFoKBAXP`C-Q6F% zF1haIfiSYWCU&5Zj~aMf2cv;y=jen#_r&EhL;7533`>8$H*Al}dfH92XS8Re8kjqS zFhW=(KnWVL*DA^W z1|`R^d^l^x&^f{?g+z))kM8U%OuwF3R3Jj9pC5qyl)B<15cFx{2lA9>nA7qse{OjN znqtyotD;4V?MyAkGXYUH`qUt%O|lduVL@LPE|$kXGmaNh!sqaP;nJcqD8ZnGS57y~ zvy%$paRwmb(I+1ObzH4784E6p?q4$W0!#XuR>)dzSoU1I>H56}(z|%O7*p>G z3d1Il@TXAie6&}5#q{Q0&evppG52pjPb(m2ZbmBhU@)Y(jL;|}Tc8cC z7=zj)&vUC7?ZyH1_|j(??fc7$q02Jl81=R-`1?jWtBtsj?9KcsW%NMOb=83|XX&%2 zzdjhXUo9TjH|~gfP&GJp){WFvil$2b-G9SPqeJSTy=`iHhO|Wd!l{$Vl}fGhH?$32 z)pOW40}r`@G|2{i)~2#&IAquvF2b;iD4kA6wJLrF>!2$^RwI>@`GNS8LC-9r@neaj z$zEoUAjvX0q&u9KXRa^E!BerK&<)iAc>(g(CT%FwGVNBHj}K??=*XXgE-s==Tf|v* zkF5N7F=y5sQ_k!;ZqMS0xu}3yL%CU<+(Y~MybBM!9f_@n_Am?2=$~8uxNVP3ZZg;H zawwd==$^GFd|&9K?o&$S!>MSfZ8%HKjZtp4_=K zhP|UAER~YymOlnk;N2J+dC&ulSe!$n%FsRN8B)mw}D-38grpYqK++m+tW z$htTFg++c}$CTUyEMlEbe!h>2f+16EJ>{ImY!)q~o1v;xFNtreJzsyUM$fPdX0>T=Fjh9p0a%q~+=b)p{u z=Z1a4M>7AzoH+3!tMl!SCgWhELLob079@Ag%rk~ZQpAztwj!N;aIFes9s{RVx}X2& zl}puL;fRh&V}z&0(UZan8M@R?2PqvE`w=4Cny;|G(h7>u1c7iBXD>Qr0D_duZngVN z7a>lt$m)Edi)CRcXBRqQ7{`l2n`4yr%_;8ZiMf3>&@V{?{>DI!fFqLj+aqDRbzf<@Z9kAZ-^`*?{+M zy+nSQHGYxF`A7}q@Cxoe>?9;COR8SHHjQgK)LG&6<)xe|G{K}rmj_0B@@wmKf;WG- z)7}%Psa}6>;f!FOlvaLMDZVJUTzOeIqRSgL(cSr3r^dgx8-#Mr#3H|P10$MXW27Q< zFLuh57yb5k5iR=H)IQa`AkW~LnU^S@*@M1H^zlejN*ZNOnf|YTphNBZoB||U-0MDF z)83lWCQ((j*rnDBeNE`jFmEX(K0=x|eKl?2?gxr{PPFTL#a%qn0RQzs0o3qO-~wVU zY|n9UYWeh^&!G>me3*lhbJL>BcM;t2poc&v`;IfKy@k z&ebxYfp?-1;R|p}j*DR}wLXBGTbfV8XYNyqBhH)7?&c64Z6nSp9xdo7G9fV!w&#$E zL{?peuhwuIuk2};i#fxaZ}rSf)=!#7xw8v$y5$mVBAm~e<)AZA(xJ)c zu#8T7@LfMBhFvT-S8>WQQ7HWH$3g>m&UB?Q&@El25tYJu@~Ln+Hg6%8156I)@%>^fQPj zkRaR>;D*|dI`jQ*zr(+y8~m)ti7Omn8`6fOqLRIn4tZkx z-CJC91Nrh6bXSAB{Jjm>fNa7sCSh-+W9}IP-kd`XKcIbd`5xs--Ma!k9|ogd)PYTK z6hpX@*ar7|2L%)NYD};81s}S6iNXZVT}c>Ue0y@(4ZiKcJpyXLRwRZayn?-x_PKZK ziDb_sT=90{-RIO&D)B1tcpMw@W*e{uZX^gUXK$tl+#}d`o#po>?|=q4arrC-7M{NX z-5p1wFFC;)un9wujM#)jsg}m`6>lzOzcc4Qy$IiWzjo*-GC*}-fgb-vqJL`v8=+mXKK!b zbjDn30~?xQFqYw4@NhzNh`pz3I*Wcsi9JlvA#BcIe)iiB)J-aj60W!8$xY2YQ&~WM zV*mMpMU8I(HXzLe%BAd0bj0nc`>v8yTtOEg3+9uCE>QTu#VgR=F%b2n4s1l4aFol4 z&GeAFw{C=B8A>T@#czOPDC;dA`ic5LoxTFy9>OC3+ySgZHsL6fa6U$kyC(6uVC+>L02+cRo!0pN#Gx6^wW2jv!(^d276ytca(oHzZsYn(;ifb8*3~=)_AR} zhbYC!I3t(kOU#ey{%%&_OOCruEe^hP4Ec+^yaYY{4Te2w0D7c3 zpX3&L*r4JCv9<-SC0kY#3VH^*c7qt0kHTGEmcqLsx*k+iJM%1aKI9wOgP#gl}I=3`kQAxO(AB< z9S^8l>hY1CCbsu7B%=>)7-b<5xRpv!qi-nJ3!lsWkYKyZ%WMuy*W2I|erdN%M%u`H7=&z#!xA_8pRcHcLDgY`O>y-j^sY$48`Q!;`Do`8xHAIKC6Ow-dkrofS+4<4c2z zwlVaBq{oD?-kcew&|8r@HKy90E3o9lXLfK^ut; z-;;{y83*YrvXv2}5BcFfNRb%nzfEp1A9|d3F=3bNR2}jQly57e;Jq+7F;ez1_ieSD zmZ_grVa4DD3x1EfA&cRk`TNQ9vUv;Qj^h-oM0vKxHIe#l6I zXl=)MzQH5yx&#B@H4A=gXMx2?3QFF|J}y0OK?10GN3ku0xTS*c-RT>121FXSY=h8b zqI3OmMnAoXHapSiuM=-ftltmRybAK_83w8h(joFtk%2hpY8bUgr#-3vaJ2%Hem0;{~!GW1bwMf z^Q?j|e?I_H-m+JsTE)YTaqvG^Xi3IIpR|OKSKoegn02r6o!#U3|035UO!f)6=`Y+f zBXf&Cv1=6f=YGWgrwOe|xNKbm{G|CCZ~}-E{8r^_^qXMB#$fiu0`SN6FJ5zTxa-9$ z_E;cuL_9X%qPSP_4*exg=w!-WKKtgLr~-CKA2;7&A+C%^dnvn>f`sOP~6&U?Y%tE%aj180$~f6VBgYYBDXYnejAK z>5r;Ep&^A@Y(L~boLj1GzC%R)h>Z^H-GFq1*aLic!v9u^;_#-`)5k|u1R-iPi`1~|_-AlY6)=@^sI@Hcs5+IjyvO(2wlzJLk(>`g_ zQvb(}k;_BTwL&*Wk1$n=%LtB>-8vJ0@gy6C1CJhOyaMKZDS=izTwhCu3@ABs6$>qe znbwBbFhbrjRI2&4o^E$fexnnt_a-wG-Dxd~cXb~?hg1|SfLXeZdl~Hq_%Kyo;V6je zaN$fcPGY4QDB+ZgJjo^y)uw*YGJj=nW*0cnBp`g_+m!dqPx*sdjKfurZ03RX};`vDKGMZy#iRXU?bh z;TJbG$YlzE=S`+3|9=M?RlX`|7a0L!vGrvIOgj$hosog~n8f`b=7t(a(4x8q036TT zgMM4ZMTu4=eN9q86t-4g!Ky|TxzrveCh+#gy44I&dUe(sv-G=pIQWfn9C+ z|Ha>U+u@%rB+KAIUDtxr-t{ZM&0p9bU%mqQt+vytD(MJvk_up&3kfxE6X~;W!GBsc zX{Ku}4_n8vW&r6B@o>>NXqKB7r{I}O$yQt@qt=f0z8W*`SMn`9OsM!5dD;2_^`}j} z#Uj7c^cE`umD^K?S!VKpXxckKNr4~uS}-G7G`4WB<@)wbGEheLB%V-WzK4t-Y#3X{ z0MscD(;!zB1Ocj^PT}HlU73_*}Lq9$oK7P(%gU!(dNMun1FuFt4|?e4OOEi z4J!#=o08Jm0o9ZF5?Y9?Vyh=H^<aF5HQa&$H0GVCF9b%`wj%zBDdAD5#; z6+z36x+*;2)wj}1&QJS$0wGon#<@MPz{>HOsT~^Y)5hm`UHrL)(N3D{z#veiK=L&2 zg}H?>h4oLB5e(7CHCyz})tNDQzO?IIA9enep5%oroHaiS<#q2@`L|8(<%PK;ou^Dk znO^4AY>f0&uVI$U=9((eC|4*7VIR<<@6R1*fJgLwti~rZTj&Mv7MKPGqYyA3o?C= z9&mqS&!Y#N7uC`dNzfc=tBO~^UP@n6=j#I@FkpAI&Cb(9n0hO2XSTHFxl-uD#=_Q` zwxBw~s8+22o;n}U8GNHaUjRr;dqe+r65k+T%NC9Y#1|Rv_XKr8UV3?EPs6Q3eRt~ok>;o z&myKAi6f^R1KP<0pV$bmh1U>kLV@%M**QrBfZn27@?qaNXa*4HTAo$BM%AH$xc&u^ z(pYQmx%^*QDhGCwC1fewDTtxP>mO%3STklP$;D-cj z=o8aAAc<}#x7%VJk#T>%<>8V)`9IbcBHP@cc;fnoI|0>{%6i}R5i|{xIEMvcl4Z6x zuXAvuYxEU1Rv|Hxx74pu^@_?@AQ*60%)YZHCZ7{BbC3dp^*-Gju{*3pLEbgLMKyWn z6Z8Scwdb_wQc#lz;W<0(5q40ZueCmOWf>l8*$vwY1%cdU1B|%V4yY#Am^wi5|NN;2 z229+;ur{q17_g&=RRxl#C6a^w+kyu>zhX|Uc#$H=B6&WXz2eCs-=to_XEML8RX(J6 zSNrXxfOIdJyt5QO)mr#I2=p+f*&g~XG`O2C8%jS6Vx{$z`vVQ^iv5=G6&>IZk|a<^ z!#Rwcj)1!@M!wMtj%&actdg@IxfE?yenE=^e?GYX5n@MyieB7v>Skak5+@L@X73RP z(*K&BiQX~1A$Da8GKT{0?;zz|FF1xI2#l$@htct<9lWf8uP*x!sAA>%!23yovYZN> z=7wxF1?}nphtVW~qRP;3(1}o1RQcjJ-3O%L-4*3M3mz4mk;&ri7V^1nZ~|>7Fs|Yp zLZ>2mg;J)xf-XiDLw^l{lrxDLWMjONdjL5XwP1G$esv|~DE}3(s}&K$VblvM&$9xX zjam6y@xVJYIEJR!2-kAIL5HLH)4NjgjTs@`;aPb``&v>3+_lyIa)0?MV}UTHX!@u4 z!O#Cww)5jUrtl`(!t%rF!e{xX6!V<3_m&$H!pj}+2SB+#oz3+f%4wIp;1rf6P*%-7 zik-@2Mlv!$*~abV1WqsL|GWD-kz_Ok&|suK4- zA1vzdB$EbT7A@*%Ez?wE<#>M)cbin-`$9SWCqFojs5r!{*vG|*DC+d$pi_$FI~elg zsYxUK0c1Y+7i?$AqRNMkb{kwzI+u4SeLbLk)qw8@(dO?YfMP1Q&{qFr*Ibc)6cl!~ zEcTM`G$DCuVd9U#-K_xKVC&~KSk-t)!c%Tp)z%9nQI>iSFaISEk|Nd^Ew(U4lT|AS z+;AaXoP-Tc9Ww#Xy9Q_;jA-6`ow;1oAc;r>- z+*X(gWItGJH9Qg|v>fXE&Xy%lJgW**k+Qn_v)%G|-Y1I_RTd0dDlZqHggAnxny}>) zvd{Ui;u`DuPO7S7e~q$cH+fDL@x)xd{p4Xw9<9O%QcNl4=MR-AM!$Y2dwIbAmD#ZU z&Ub%!V=I&x!vyG8?Xqf_<p2oAIq&ncx!+NvQp#hC?)-&ceB~59E-&4dKnN^qs$O#)uq}!Sw+1o8x$~Fb z`QSTh3Sj}2`Yg!GGu9Ssu?c8CcbzUk<}Yj47jQGoVyvS$-30@&4VJ#;Qa|~Z7;EqS`QG|67}R-J8$`-=ha)^Y z4N#D671$}RVjf_E#+wmot#4!x$JqReHQ#!fbde=7zcLZ1c}%D8+?v}wcr=$=zFEM8 zBsJFTuNUj%6H0sa9Y1l}!a-p8l}Vo5p~mPYRz>;)R;6`-9FRpmHtQDCG8&^*Q5GVm z#leQ@B5YB<(K9+;2E5zB1_Jq;0y`neKJ)HR^1gR3Yl{(&YAd=V?zdzP zj(An^Bl(yKiG4!zF+bVo@xsW6h4*CWyEiyhj7h)tecqI#{bJiL@h5GEE=}(@XCA~d zc3AJsT*rrZxokH3&D-oZR`j=K-l5%(y;&qnvc{wN*PIyFMak8c_m|T8N!o=Oy%0Mh zuVj2;pF$^ZWp3O)Lh>#olvtg;G_d5UxIOu2ov)pzCC6HBU7FKxp?y0X>CLnCN@o|D zlwKuO+r)HE8L{xby-%zXa=c|cNq;8qVS7&dF!9;8KbMdgxa07lM~X)r8PS_36={@s zq8_oqinp*6l$O~uWE!rHV7%KI1q3rO%z6%wlX-(KlQzR$no^l*+y zuC#o<(j1}dLPn)s&@xQ+9?S(IrhkJq25o`LP0R0X&Cu%W8DN76& znWKji?x?We!Mf`|%Qa_=y%fIx(C+uF^9K!hI|+Yoz?jE>oXhMQ&pOg`K{r73^mV&@ zS@$obnv8HwO+D#-N3K6bOTN!TNBiIyHAa|XN*Vv)V9cn_JdDs`4{1q%d605oAoM-! zJQZ8VukQ%WwDJGeavMP8BxvD>Ze`~sJM}49^82_ACKI)o!ql!=j&jEnw6U#m+Hdbb z=Z%5`0$^|m9Z#ua-Eij*cFJ>0*|na2oPfA|54xksthNfj!~Phs+Y~Xk-eH~BMy1Rs zA0Dbvko2Z#!++Qko{?n_^U*OrJW+=&O!+vrw|HiCYD8Bwt3cW<-K)@OA+ctEpd?7L zMyDZCkSjOdgU*Km$yinuJ!8O{CJ>VN$Njcj+4-}b`drSsNq4H9s4@y;I*2(t>khX? zM*4}RJiB|G>O^J>#f6}Q^my398+8dn?a$l)fX=@%R&p49zYFg8%@+5REV*@Zg9T62 zVhd9{R)3PaeCSvXw`?eS#fr%sP9Vl2!h1BN@jY>_Lt6K zA7R)?l5i*|XV9UFzYez)e=C--I z?(?>NHMy!?H)i&jQjbrLg64iXhL_Mkt@+(V4$Ar_-ekQ>4*SKFb7D-7nC_QjvXXZm zQr=8V;!)cLJ*@lc`mAoT-!-A>y73)e{nQ7whErQ#-*Wfr@&YGCAapDJor4gKP z7cNrspWBY|Epo_E2!kbjIZ|J!FyFP{{R`M@`Iky>-$Xc$22^ z?2U{bGVSkER{&P*I6mP>Y;QrbMxN=Zg)OkJs&wwa*lD8q>JLD0@1nuV{Gpnama_d> zo4y^$i9`QuJFSOx-&{}WCR6{Ei9pNt47`w>?vIDkclQS%_;XATn_(quV#@a0P85yl z&*+u9Q`hHolc{%uI(E1!INi&qL@le>&nerclRhCw^YLDr@Qx>+a&c@r)_kJW5Aic& zXlcE_IHx*6{2{A+jR5lYS%i9hw8?JepWzk7PZT z&LaLc@*jhmCptGxdE$ZtRmz6NbvM2`3!3#>@1kf?CU26Z$63Hoa=lYyf+koF zJA1K-TD66T33l0i$m65XY;#RHI&+&~lDVf{%}{Z?+sA}VFduI31s1-Qhv%;&_c@Bn zpp0Dk;fh|wR;J}1A}dE`YzuHalyVhA%?4ZI9+W*-dh2X-ggoHTDOm$xjhdc8_B0*G zovOl3D_H7~^OI@LBT&A+UGY5WXdu7Q)_8ydu^CJHZ34y-fg@ud z)#x1^mTwfA;Cc+QZ_J>KVml4(L7JayNoiBZ1;TnS{Oz%GZq!mx^OG9{9eoBRyZ-w; zqbxtylI1V0)qW9Uwt!KrM>c(+!}^W7mQ?{m){PlqqX=of>?T?YYNFi$A$g=l*>aG4 z@Pm`i$p2O!O#6vmQ`R%bD>CHaEt5vsP<@hHim|~gjpj0{CkfT}*S>n1O(4B5pKx9S zo42x2@^AFPfj9LUl|_P7={VyucC%D1W!>F@(f%QiU{HjK?*XiV^vBvj#49exP zhP-8It>F*QLB|>M{=G2!ll$QouvF1 z>%^XyNKo1I%7Dc0EFud7tOA^nFD+TND)QreCF=^9+dMM~<+E^sPZZW}$4w@0g@)8d z(p|Q!!lxQ0))$ek zs1nGWsKFMdgw%|I_Vpc#mzhVYdIEq>UKMCLcTNdemYagJ|045S%BtYfn9v7gX=}UX zXic3*I|PI7pdfV8;r;87t$*O{0H$n*GU)&8 z5{QRTS|%4(Jx!%AjRHoM)>`6B!w$D<7z#E*A9mm?GqK1F%YoJ|5DrNqlOI@c7K$j{ zw+s*1%c*vl{*+_sU62oHIbQ6V3$M)#cA^JXDyMr_tKm{JHtlcJGaogI>%& zVIq7$JjJvY0MpMvqB8!xE7Cz6p8A>|t(ByLEXn4W zdn?L=WE@}e(2dt+ii7q~R~Pqc>*6Z}xdmyYWo4)n3sZGuF+QIlKU~p=L|8wbY;Zjp zW_N3p3nUTY2bz1)aL%r#AY54bmemmYKBbmi%u*a_7VE6O?2Hqq&-8fvVoehQ+~wRp zEQ0-+BN!7%T~K#1MW2*eFkPt!rP`7+*^2(TeBiT(ZoGE#GVPpuENhXefY!Fb@VkKIQSw?o9#Cg82J}1zR3osc;f99OF3aDz+_YD_UCA6fsZeIoPc}fp8 zr|RLS=!zbKWwnNOV3WzI2)z*}Q?@+7OJ)|JAAt0|Iz*5fA|1oseT4i~N3zJa(p!G{ z+|y@JmzxH{2hM6XG@-i`o8)+oYMXBg@Dx=u^LgBVy-jiW8oD~=nYpaRXL$iJBZ%8% z9^*6LDXWIxd$b}f&5ThjA$|9c+)(|pm+!Ma*nz@QUf9 ze2JFJ+?Hp2lh5d4WnjE+xiIT^ltMr2>kO`aOT+$*v!wq${<_G@*_h0)MGoO z=6cJA?YOGR5K4Uz3DCPZ*kL!!sO0!kxrzGzwLt`vHH$N_1MV&?+#=JYUfRIB_3+cix4;<@Ty|ibuV+glTPS%# z5=K(&5W->k3=PK@OT%6Q&b6;#SS~ad7=Xd-z5}bvOcrMc=Aplt*b3q zOXkyoxI@*s&U$ryTdx3GY>u$>z{f${$-m741E7p7cA!ZDvb2%_NpUM%-rpoAve(>r zZD!EJ28#V7DlBEdv=IsdnYIk{NMkWW!SSWnU3gt)@DCKNO-gC)kAN_j#4_C2o98U^ zn9~f?+N!Zzn@Oj1EFQ?#IK{ppI)>P z$QUiQAT^}z1E}293BOWu?ima;pBPCejXoSSrU!>&=QW?$^&Hc-T2_0pcN%71s^%TF z`5)Ymj!C&|DQa_>2ccOGqD^v_`Kf>3gcZ|6S(=;u4jD+&P_pz5qLbwZQJ^8ofXho0 zop-ocUTeR8XG!M>cX>|4W2&Uc{8jMXdqB*(oHCkqmS)fw$ zQ_5d7P#Qj<#qP!^xdZ7*0*Jid{=Wz3`+2$eo}{a>VhE?nhSp*-Y)Uj@^U@>(olKvc z(lk8>LZ482_ZeDhcA5tvR$d_UQX_ncc{&S&N)T(Z9$TCmDMVXlc4q;t2w0*frX~$S z51;soJI8eVeY^5LC_+#1W-(ffD0SNIf3WUnYUoFZ4KZLe69pgKegY6}>fNfq)S87Y zPOUHctbY8J8pk`|zmktVJ@G%L?oXp7Sg;CzuESa<3Rly|Nh*^6^xo^T-w59izRCEA zDF#f@co*MTZoGpw*_%@S{}1T?u^bfO%P|bAm>9V6A^k!ZBY(04Er!igbQsb2wzNY; zq)-ipn}BOCk05tK1wDjl5{#{wh+Jw8kkyz}+QJt^^p(3wUO1M>TzGKWhir02x6c}q zZelJPiD#JQT`Mdi@br1@C6Mrl2N7^00e;HP5YkbX?izd14)qk0C24j@ox6S_*P=+Q zwU7p}A(&`#l_Tuv#lJ-IXWppe#HVHeA0MS^`pzjhe3PELRk232eVYb2hN^_8G;)tw z4F(k>S9(MLxdWqhRlq?cgS#^==YZugvoX5b3(%s~QRJ<DlUVN}6P{ zB_Mm9Yc#62S3b>l7drM?F=Tc{YrXJu^zN_8TtE>>|5X?GuEi2(r+sJ}snP@c;Uw$Ak4zWuEFCJm{kAE-5qzhPz$AfbXuzTQ^=KH+BF@W9~>xEW!!%ZlNevTO@i^ zqNHW{&r9&P48Y6dU!|R9rLLP$qg4a@krd(1nO0d7UE!tQNsceLf*Hy@KH>N0|Aro0 zk+hCblcbl`vOUswOH_U#%r8|^7QtzPURvTi^CP3ii^ElMS?iplb*CP}o#(H#jnOq; ziwyO-B5i00;m8teYjgEh5k$it$ai%SIVw1E5x-QceZSK9haak=gi#$Xd{(`&c0)Mn zazjHB)2h>9h;+Eu!&ZyZHNbu($#xf&>@zrGe7D5C79C_#d;g-{W@W9js>x8(npK6> z(F(89_nD$D!-$ZhV9?N2xE#Ou;9@!*0XiEk&bvBKgUo9;;%{uP01l%WBJ0Myx3x~* z+|b5d`%odU+%j6rE5*ZbKHi@z)-7X=l5B|j;`~VeUNL8#Wlf5AI(@dpy(;Hdn@XfQ zQ{4iUtbsNyFq=Y5?1)kB{f-`8AzAnFYN-J*!YSMxm!`~r<_o6Dn*VB{1t!=7#<@wI z)l}jO<|TGi&qx-y9VPY!sX_}4mDm=fniC4Gz2tFExzeSR<1OX5nX^3G@TvR6PD*u= zs>0o^zUAIo{VdFIy>@yAT%9+j(RjSt?wXip*qjgR;#+b$r1F~o_!>N~%w#B` z+n`iTSgmJ`z3Hik8mGHZ{<7&*=vE0iHYE!XwlcPs$m98k|8Y#0;=CH{crc zfqbJl$^0BM)l)&$$4jrAPJ@S_mvIv(tN(oJVjRo}1y~2~%JuwCA-D^4%sQFR*d8NT zb)^ic8}zY?8vtm2aJq*js3$(v%|%}^L$tK8YrF@UrTP?tZlb@-j@cycP7$F|B%f_9 z4-GL^$c`ceRu6RDa=He7X2+>&+*1V&&_d^sCaRnE9q9uMu4pTcYIotW@X(nYYj`-} zQe;(asc(<@;GU4)IPu*c@nd1^de_!$4tsPHy( z;46$ob(aMa*OHd#aX>f#%~y5<+CaTcL#bzrHH}n53=|o@h8DvEB)(*;y*1u$cpF5R zoFzRLvIkU7)g|6WRoS{26Y*y5GSoJXH*t~z@>2?I{EQQ}(ka|j0_=ekn7h>B zXW)RpEkaGS_Q|8ks~wbTCMFy&1$IJl#Dl5u6Yz*17-1yh#yD#CucTJE%=j3tM7Z+- zP~<1b*_3?ad(2&{2v?>wi!pHoi!0DE`>^Z2uHBXQmFa;eh8PuqCADG9w5fMrNUIgD z7rY-+Dx0RD8>g`|KFMb^PV`x{C^jG%Nm(V0y?29-1)ERs&n$Hq47D z*;DvXdQ)J9L;da&=&|e*8408c^dDDAb<44F)E%j?Sw7_dcb+)Xq(9^Ku1@YElBadj zuNnJ{&S@2`)jCRWaeA^M`Q@f_?6KTjzv zg(~lBiqd$3wR5HARq0|Opmu#igP-6J`@S0zMCS?}+g$25s;(U%0{f=MAX8ngb3#@T z!_E06VJWs3Q*n1&Kj3eR&=WT!jY$&Gq+r5AL2ctccphl_%Dmhc!U0!MI~lVYz- z0;VRrl=^!N?7HMUeWiW4o_UDF*_GH7p(NVIGleD-BV5INUM`1{99p6?z%W8CA}jJT zMPanF0#=P*B`*VZz;Vn2R}i!OsQ=&j;wZ4}?`FFAA0KL}ZeB8Bnw~5Y&P&o#Gg1=W zP7=GK)aSE9$6J{B+%QOeQE=wma`cWcAE6)y5a*NM96yK4fAjWn%yNE_vufRDIYkkb zdm9&AX^R@TLjU)x7{E;M9O2mgdq+;#w^`@CLzQPK*R~IQTwH0o3oQJ5;Ui@RpoVUt z5+T+FTXSZdlAXn7$5OlgkP+99@$LY`B~-G~+SjXqh5rwEJq?%%P7^A|+F?ibzaJ={ z<{8h4U%|cvRyuN!*Q>k&{;j9ny02t=uK#{z2B3j%A=0>$gT7^-$7+JbQ<9Xv-ffdA z2UISqzpwW264Awdq5Zxj4VZBzBn`IlR?_oBfkx9!1m0u6ZbA}4Gcka$Wz87&$w;h$MaaKjUo0&%Xntb&gF=m!!N|sr56ZuC}e^X6-WcsRIvQlod z3_t^y`1A!rza9HghdX>_6)^|h0&mzVC+KBe1fAP~<y$1mc~&R=dNOzRi^L<}iM1!_ zW>YujpH)nR4f3Js&9p4e=|iBvIrSEPx4gRwX2adxH$$sE_z~32;)Nk+jaqE2Wa@jc z8xapC#s=-f)2nF-T(wBYF)94U%Buw3R06#4OrtqAUwq(cH)`)z!J zL^woXH)z~=VK{LN=DVDLC|mW-lag+EcLUNGIC~PLXzY9i)b?UGB3@KVSouS#P4p}Q z>HZj2#I}2`vPH&pcs9fc^)R`ubrVcuUH>~Ov_O_Jgg~ZSfS2A7I;sVhgPRafCc-m3 zdMho5gLOJksVTLx0kfNV|0*Axb?|6%sX60*_UIn2K^1d+q!?>~+_d_ho)u6;n*1iK z=^T~Xo{6}`A%m$i9xT45ff;!mUs{CfIi8xZPreM+kEFK$AtNr&874AV4YO28`z4Xp zS#dAhjMsWEVK2y4N4!pbWkqOi?3 zMz)bOdR(xQHlmJ3i5t*5XaBeMoij>E6W?{{Lt#tAavlzJlA;%bYK2XvdZs2gqD#_} zJRn-8bb~kkH$YA;82_QxtR%frlix+UWUW4?S_lst10Fy2x4v=jU#KF=xGXDv;@9U< zYmVxEE5^Xz+m(5VkZ$pwiLYId*s@eVsbNmj-D8S*ddbX+&j+$;THm9=jJE;OG45#f*m`j?kN>xQ42qfFz$ zFE)eFxam*_h7DouQwwwF&?Wg%(XQSTKOnz;^avXZ&FhmoaU9rPr^5Y0BZ@3wqDZS= zE#_vJ5_IOymt=S>D4~ZrRL*n~h`r^HJe3e$f3O83MBMe}(C5}INd_)hg=!dmvw_Hf zDf2hbyL(3I6v28%PxlCeOb^w$8*?;6Vq!IJ<{ZtCSo{P1MH=9IMkAyn_Ze1FJJo4! zS+PE)S;&88TkEz=n-t6gtLll2xc&Es(|g z`z@2F=iIi0(YzjFMqL3>N9?PEr?c4RFosK{DjgLOJe?_yT_4g^8sF-dF_%(XJ(j0; z=lJfvZudTl?0#T(2Y|do7EFc7c(A%WL=NM?k4sc+hO>+V=(c+#WO8%LJWKOD`I!0G z95`hN(iz-Ll7pks_Ex*Xkg@ajDO&mtJi}eOA<;En*5RjTSGasEQkLt zl7zoKwy6tnHtt;XTCKLpRIk*!@4j;BSr9n*0=VOUGO8mWT|oz&Tf^-)L>+)1t~~vW zgk%`F|DMI}@D|6^So^DoS*E(HMmQv&c1E7%rWn&cjD?)tXEZz&YL9$U^1`!H?QuO} zqLLs+9}zaA)qCkyw_Hk6w#69!MfY+AbE!O4;)BoVaNOjCYDzW!kKEe502PeOdDQ)3vNvASd@1J_FElZx!u$=viLz)&At7cu{q$vpTd7!I*Zu z1!{bkLa0MIg~xApc2YGtzxH%S76T%mR$(5olQaKC$!dFVpTH(u+zzZR&@N;gks3WK zGbhV$FB(y=44Rgu3ij(o<8_geo25-+3km|0ETv-{zDy8dt{$GLMeVMB=F3g_f~x*& zrZUz#3-i`od7Ljm+$}LGW8q4{BWHY|jP1o=_n;h%y4wReLrhH^m9%}WX+!ZNzprYs ze9Y=K+xT9DsdxLdK`ca)NS1#;lr{;_X9tttWta36?!q^{Hey0lD^&#F+6c~tf9Rk` z1lMMECFt&jFoQD7;vXN6trb?t&J7Cq5^Z9US#2XYBQR=9=m6fQy@d=dArY-U{nV1k7k~K$Q*sxquiq~!4GQmeNfDLKwhhM7 zqIQ3aW{$4(g(c3vqSb7>~L%Y~awxg=s^2y;%l7zkT0?AU6`?f~UFrpS91uKhZ$2hPC#G17nk-jjf*9gBkD z_5bBz(o;BmLh)Ly+5`UDF6AhA(vFo$>XK=O7d7w6%u76z$ir1bKF=!kIuqY@>Vq@!@8l@Lw^_r! z{j5@Y!Q1~^^+C-Twm~_tyYK*f-tUWAk7tpLAdI(Y4XgUht9o^(&%V5ZVp;^UCR(-+ z%aTX=3LEP8;oY6E)q^|?-clU0an5};WP?6`5K$7(CnaKgz$4E%wWhMNWTU z(n*^HBh(p0dO|3q$6~y9q-w4>$bt>jekvJxs<6rgGFwG^&PG^HVp=qT%Ctm7fA0i7 zIUR|0;{#zCJiOcs4zOPKX!<8Rgzb6!8X z+B^$yAc04IH`EZPgI}^esZt3KW>$0;)EPUBzS?fF5vA&D{#GL#0S`7!F?SXW6ab*6 z%`-PAD7FcMx0e8yQH$-#YeIjqZq1aBUFpBF!Gt6#K)~8y7q71Yj=?JK#jDw8VK~|t zU+t~!lkKGjS{Ht}u0nbfb2oa#*H*z%B+d5XI?hq6GhuMN$p=5F*z;P30BIim_6~W& zI4+HPA~k-7UkKl=6eXJTPrJQ+ue8ewo>$}l4_S~)keE5al!Ji1!TQFG9ykeWxEI&6 zFW||@FJ9qo-O7(s-ox}Jx3BaQ{=kl;4TKw02H*rj5<*YBhbJPR9WgPZQODHFsA}b9 zf~J=OfF#^(&B@x}7_T=2$I%So$+a|Uh&E4G`7AXy zfHGTlbE983b{nTih;n*C(+vnL_MJONIDfkBrf=4rZTsH!;5GvPx>3edXkf8CzVnpA z6+ZqgnRlx8`={RAZi8KGYrJE1x6^#oDEF>`-w)0HTtBnlT>X}>+tiLG*Q1n)f7I;l zT3EQAom88@QS^cNU|DgAjKq{&^JFqZ@zh2~k3}^eS1g=bvuNtVfW@_XXP@-7BYy7S zV?uh?;PZonw+mpqIf2tj{AB&gsPKLUUs{|0dF4!Ys{BQjnwG2IRmx3wiss*&2lk{s zI7l^v;jWm}BnQszL}nt9Ba7#}UKk(A)qa`Wy|s$Z%`>4@e)o69?&P{n z0TkOpN-|&WrR=~cAw#auFYoj}EV}M;9%*J)?6gRKbl~vM8hm*0O3uy$VJw|^H7x9s zogH}(=&Z5|$}YMv_i5L;JBK)2MZ}bIzbNLHpm7fm z`(sS>Tju|Bi>_+;rXGN1Qq{|MnS}TF`jTXKaBiCQ`B0jbI)?}@x`%g2l(UuqJF0ojbl630Y!_GPu&r5SNN`u_j9 zd*^QF!QV`GNrEze`_0;kmq(d*d#BgD8?1baslQ%NQz9XD0Wz36q8X$XqahG{xqfJQ zJQeu@fdbbcusCx&5$X4A;W^7^S?8_)2y)IE-{@L7nROl*+AV(bbusnqSU%1FS47>} zVC-^w4BboCc*LUn{mg<5WfIX)ba~Ddgf{GZx-6>z?AC z-WJl=B>%%U)Qq;S-)`x1%%k2?d5$-wG#H(zzr=n8Izb`3oZN+{;5|N7@~TO@u(PNY zJG}Sszbk!{y<``G3UGt{KWU9N%M`>f^Lr;S%hET>NqzJD&aAN(Z&k zJ$p%lUB7rc-K=ThWNSu^yk@h+@|^u%<}O>Lzam90wjRU};`aoyJ&QUhqC|bt;VQaw z-4sXh7wAq%$MY+t^3u&1{+L}N8<&-{UjpWo7T8{}i$NcF#r{Y-;>TnX-qrHz3HUhg z$Qobup*4;?3qFT;c&(56$lA(Dh4~k_WJD*vHryc>t)fkl85)~dqKiiA@;k{`o8{vEpfM$JbJTNAm9ikr!SKh9YSAkc&D%L;tGG7S>fW>9NANaty zlty~ghw};qvj(2^`%4=;-W}+@b1FU!20)q)q;JQ=!AnnU!({d{T!x~|#Vkvw4oVsz z^_2QcB{ZV0|7piIx{2<%s=qV0@t0HgP9dhV-*?k3ZHV8G?9-|mdRFS8Dm#0<_(g6b zqHY<;?uEyo&AnGucVcvr1MMVnx2}7*8!`6Uv(DwhXYf|m@vHLa$K3vERSy<0QYCwT zZ{p#X3Xrbxqsj+#Ii06Wy#g7p*SF{HtZ-Yx0j&DU6MndBncJzi@5M)pZ)}L)@I+YR zUh;n3z;F7U>SFfk?31dpk6{9V;J(i7{gv*FC0 zb-6e9<=vN6!>&HAZ|V?|OYXazeJ=Zqs%F7*-?|9H*GdqqVC+ZWWK7fT)@o(6a;^7m z;!Wnq+>a5|ry|#~FRRX~PG!GuZpiXUIp(|`WD=>Fs?WXN=e`fTR&bBI+7s?N%n3^U zfbaCDsZM6Uo40&=oBNe^!i(s-ci0mcgdx5DIe}8A9RsWNX--vc6_UQ*p0uAJ?i0Cw zxSEjlAFPHivW{Kdi0;34XF z(n)tL-K7~s02A{LtVi@s{>@;E|6~x4cu{&oy&)|_jc!*!9=PUqc&p79DX8yF3jT02 z){2<9qd6QOED!J9)x>z8?_Ugrp;O z!leWZfMS<)EZY(){O8{ZVitb@`KN>yKf-%Psi|kYvpBv1D{vO17uW;C9Q*{Yls@EEMm zc2eDo)`RzdBZ=JV{@niay}sGL@Y_spPuhXBrk5#*}FJ}L(f~ptl zbL%UZo+?jduU%nAqS4yX=F~#>{4E_Cq;fkW-PkDe z-O&$-`9#5=9g5`+xum06leyc&$+M%qhn;5Ua?F?eCxZ&Tj8e{M>WaBZuZsd$CRRKd zUr=D;1mvrK^mR`;9%#|x3YB3-y zlwC@uR7ReXosgXXI@)P9H0@?7Z!{H6{bW+W)KZ@cdqp*6QX%nKr)nv*DxC&gDlHmK zK~p~I4l=yi91Ev1%wo0_RFwNC^CeFv_>{Wojp3%-@h}3}kgXx9*%x*qM?@62zDc0c z#(o`6hCrr2@;`R9r2jiIa0KMO$zN5YXO%;caV9=vf@O9Iq+2bC%ceWu;4SZU9ml&m zLP=r|5)xtm4fbNCx*o{zg-;EQ2|l|N60e?<`jfJ3djf2{($7w}MO+31$`<8NNa*9) z4I!=NNzDQFD-hugcHSXD4y!4jW%Ty6cjYZ| zr?@rGR@ODD>UvEav>XQQ?Jh^KpDY)UB*s}Vh!W3tp(vc<$ z7Q>*uCMFb-vk{(C9MCUqV?_i7_2XvG`)TfN(QHCPiHGCN~DmB$$gpZ)KVTSq{Bt7VNEVJTqp}iB04t5=em)x+aIhC?QBS{sg#;;G{zQHKVhI~XUKJ#q;tK6TN@{q2 z2)+m%3n|bDB7qZyLxA*t-6r;7TncTb79GGCQ+y#8ow;(4Wh5?6teh6o?U*i7)@B6gX?uMze^s;q-^e$c+0T%z z&k$2Gm><559WP6qY>hBTwIilWyO#+0f51ozSZ5!tT!xn`F5E&6I6UK(u}8LD01%%V zwVC%s;A3hL(3V;&?hsRTdEdNF29)1U&W}P|tjT9(ew{_Pe}lM07d$lKB#513&WDa_ z%1S$Hafah$gJ%OL9YEY~WnK`+zOHzvCo@L}U2k2g&MpS%LN13V_6co;?ZL}cr@~uD zBrY9C`l*!qA3`(@&(Z9k%vdweA?Y zM-QG!4Bdr2IBGFNMpZDCL9!Ky6@(0*!6QpXR7XopQqyg0VM!aHxy=)h;riYaeL)mc zRvaD0hVpD%VF8@eM{oz%`?RDa+XpT%r(iJ@6xjD6%qOjPBl+x z!NJ87`Q=sXA0TpapZP|9&XV}zt;rYpnKE`Tq&>3K@`id+$@f@}^!DJvdIa z5{>+DtF0U@$8%@=$Nk%#NKhL86wuEyW|`QE{Q;9jC@R7n z#%gt>mtmnO2i9*BDS`vW8i^|AK5u#n)TO0x`4VF(4qb5R0D!k&Y+rEihJycfNmZC( z##La^BtCU7SD}Y0g7Vo=f%?$4{ShYlA=&uP^i&cg4VQirs;rFgb_uMZ#cQGNxU<+r zL&#jG6`kI)AGfnP6RCoI-<-w6_O7j27Kctsbz5(IA%xeVmoYKr{~h^{{h4! z5()N==^}n%#~5iRBeKse5vwAR4Ijlpbg6lOAb|@!wLp@0QL5z$9ElRE_{24mwpRI& zL1%dPu-PyqzeY8ev%;mCA$5)G+gg!CWfBG0j*il&UQjE92~9(E`lnW7XyQ~aoyxEdlE#*A z%N(={S<`ozCLzZNyE;BBuO2a@=>@CvIOn+GT$D0A(yI@{vb)CpY)WRMpZw~^&YXsx z2B7Y~d$(}UyOVu=mzYQ|0>InjOjy6;)d(W{FK2Qv1$=t)X|au*LIVG^Jux_>|Hpm) z9b&xx;LXW5&sUIjO9c*{%;_<_lORtzekRcCQ_r8gUaTX(bdwmD54vFF{_sWN$7Hv} zw>tijened)V=d3S~I zM)2{I=UyBWtHcUxIWZy5E*M-t*b!5AMt0P+Mblv2(s*{A;(V`PCgaw9v+yAzvvy=; zrnu|fp2dd{s+qv!fd2q?QjXCcW{dTR4U{2pBb9rRC ztgMW(iY^&c3{;$)=5Q6};iDfJRbC8MSL^1_<_uvP`*)n-5|V$!*W4gA^HL2N4z;wmi5aw^_O4Ku$!)VR5~SF&CyYLi(DNzp&`xX1sO1jb)qTJ*t$- zcf6(AwwdUuzX2NXlwCzy5N^3bdL8dw;>goGiCLo7VLkRE?32A=7lS%*Hz$#s2&p zBX3~6m_#lyBQ38TYh|cxh2eo)eYc{Wd3%Vh7Tl!;;grWnRXD!XYTGlnW40#iowm_E zd#4u{Lgk@IZeJd{uJ`V_=4iWSo2kcmS>8&Ewou&_y0#Rgm0L+0d z#B6Pi_*?T2ZXdSx2}2|IRZ{`c0pI}EE%J-@Gt=PL*bk`&>M8pXz?_$~GBzOgQmlWh z9qwSA_P#tp0HEo)*y9wq+0qTQb6#25xv2-r8>$E7WEnz#X}d5xYA{MQR>{-QPFbKTqYvjCj>%JMD#dicHk-Mg?xjUK!Iyd0LmVgQ63E$o|&-30@sR+plk)KpPqHE}f z%JZuA7@Fg^=)?v^?2E!z?yr!d(U_bVd8YCMtp{IJUQykM7!|Mu4@Mk0(#q2ZumecZ zILHC=OUhEZi+<4Q%>*q9S07h7>5{Kku`RSh$@SqPML($5eN*`bl5pugDpkRm#&|o1 zaN~x$S)5$C*490g*}t(`9xY$%5jZV^yiLoLXdd|@>$>Wef(Gf!Ss$AhXL_d|%kt*A zcrYcEB9|8~kvWlmQTD-my;sq7>!lVAfgBKXNm&CYAfw95s_f$WR+kU0uotdwZR3Y` zH4vtuau1(fk>p5_n|0;x^2iaPHBn6cCmhFxn!y(fFMjROlgk;~g2U;=B6)&Twbn>o zHO9G)OWgu&Qct>Ee(%gt&LqhazejY2j>9Sg6FDkIGZgc2U%-UJW9f83MMCBo&n z&Isvk%J@Sz(2TYsxj%$hK8y2`>Zjgtl=$^tCMww%iG$eKzTkaxs*Pmh)gbqmQx2pT zI8Ues>LDisztFq=M4xhb!Mqq85~z+clzn0}(33sWr4%4wz$F{|Px%3qu7n%2_}kJX za*1ZYxj^79C97w0UQin9<*o3yf~eh>fT$Bv0`VGdO*~$+Aq(8rC&XH~}Hhflc-=2^1Orn(ItMq-_yb>r>?ou72gL8so9F-B3y`{a? zX+2oLKo#;n@3$q#uXKk)zXMV<(s1S3%2-+tu2V8qHzP&_sL60^PGsdj1HO%XCBMNj zPUTRy7e#l`xRRyHmLiKT%=-RP*yX5nM2ddI=fuYdl*y2U&ypeEy_bi8n(GQ_zs5?gbCA*dtRAqZc81JABpsIIYNDOac?S@%k^jchk8u&$^>o*WxR@1 z(dlAKn+@HU%(q2IGxgd@5MnS@gt-M<#-twbiocAwP(idvuZ|-KRGW{NW(AEfThr7XzWKen_x9*ge@ z9bc}M^YTAiVbl{o>H@W+tt;WDT#330&`{zhd{e2dlvciAk)MKWRY{ob1E%uSG~*PT z5D-C3sai_QUf3sIVDS@Y+|J%)X92~xKSEQTg2ouRy2y|cT&|YW%I7SNzdrF(zRCN+ zSg~@Nzt4``psb5GS%#Xrb!Ht7;swR5Z4lvM8lT_^-xP^`vHO*ib2BTeyN5JJ$wppJ zw-h5#aQG~7mtnF=D$yDC+aXe)luTTem{yK;DEoV?#xUpnRWyfzGQMh~#5P9R1dg%t(v%+5Nly+bFX8q5WL|zETr6 zC8kxAU20bl$C=&heL@$tvxtMTyl!X4Hrxz8*l4zIt|4brk$=BwL{rzK>%=EnCdnF- znk7WtK}SRgV_0(kCk27znXZDlsY`Y?#LYZpK6|&x1aa3$bQLEBCgWOWO-L?+Gdn}+ z!Ew!JSds2`QudF%<4H%1JvIM89{zGsK?leE3F=AeeE-eiO&B?h)jGI-)#nwQ*&_X+ z4daM(uvJ3+q%2N`^Puuz)i6KWcos!lL)7t4I+zOAq!tDjVD6wZEQmfLdDrozlL;p# zaEB!lI8s3r07LTk*>^XvP-$xtiR6>ErkqX52#W{1Yn|c#p>auijk;8OF;#5%Ah$Ug zf1D`S6aiHIvZy^(x7-~|I^4Ia_FVF#qS7f12ODNh`SKDbH22YC3ZeoNTwm+D0Ie7+ zaj$x9E)ZY>U|6tT0Q}S(TNkU|c!{UWt7jps`aGC_K^w)HQd3!@56(mKfc^Z9d?49I zz^XaK95Jl=!L4`dT}vxJAzG&vNTvo@QTjOyelv>yT`Gn3D`70E{tkjJ^h*{(c+1J< zFrxXI=uylIdc|%HrXeaPhgOIQ``ckf$qp)|L;e7zu)f>P!+3-ce(;U36`1VmSiSms z@{B(~3Dw6kJd566sAtk)NS^zT$u)jQEcWDZ3bY%lEvV~Xy5{+TghNu#Tp6U-yO|i1 zNKt>M%EU4^QBB9fSVXEiRgY2OpiV537k_GhYJtGBrCgf`d*aD225Ccgp`!QdBAc=f z$_@e+)Pcy0K1c73{=ZI&=(`{-CRYEn7syun7GMPhvoSWoRde-=s5+UHkjlVh7uUjd zbDLFpmb{9<`)RUGgYS^%R8o~{>!Rky7|D#dfNtB_VtIX(5g%xmz{Ash6Ham|6l9}! zFC;Q-Vp^*I6P;x%1~4sxggI>leV!!S$m{7D<1veRcq%Z_fNST{BIi83a+XLsvO+4o z>_xSak`3t%i}L^R=-YHR>*?lzNz{b6xdpZYdZOux57kPAG`IIS&^vsQFc|XHb%RDw zUtCAB_q%jk39ZooiKW>1{~0y37i;U`B{{k9{9RCs>qgw{dEz=_{jdV4O-bQSIQu&f zv+X!RD*ujS!=(z2)Y8{vINjcP%Bx~8iZzUQ1JrZ2!&A)hDmFQSq-?OTsU!PPTzAa= zNMrgDDiGxcvJONLgcATW0zLaMw}j%}SqiiYftl00zLZ=YWcucM?+v8937ndAfa3kb zb^pL#aLg6}sg_N8ZefjFe;snAZbq_(XyOAcoiM0b0nhr({5<+zd{3Qmx;WDuLhr!| z6}II=F6J?;T1A;`v0kPv%winF)1j^e>9P()6HZ@+sv-_V>;k`#TFoBvHE-_jWZBu7 z;lN4MF%RF0*n%WDBr5Kld@!oZbzi`jWDn9C-pzzI1g+5_oP%M|jTf<_={1rz$=l=( zKQAD_rQr5GE_!&?NgGlPMDE;C`OCsAmQ_wtqI^wRW>&#aHzdu9b#9<#!2 zw|*rcxjZ&WbyG>3irmTZpDN%HU>cYXasN%mAKY{4y7=RvJu&W3mL}9V2mQ=PjT&E# zQlCqBart}sPAnSG6MDGA^C^W4+7TYqWuA01H4MaKStkYHX(peFJ+jBQq8G<%4QwSS zowb$ff5iiJ%|UWZBIt!FC-;~HhZE4Gle_#b@K2E`;Ko_QFr$_zW;VuJdvF~Aie|&< zC)pZ`;9>QAeNCui#uRmyG#tqpP=vx$1i;SU4(~>C#OZX7kYudIIxJ=ap8mh^7lq zGECDB#vySh4(?Rb}()(LhI|%1qS15f}e_#1q!pApm^*tjG zI&MKMVl!-B4{|oa4z%b14r7zN2;zm-c#>oy)k=9I2NYYON25r8kHYir?-^i!0JU{r zY;}??s44S2jtbE&$r-b#l26h#8|Oog7G2BV{2O*c*8-c1(nGuKOPY#|K6m0`%o%jp z9Q0Bw45R(41}qi??}=#%cus!i<28@>h(EJZwFnl>k@p83k-y!|KRG-5yP4hab3d)M=yqENmRg^XXN4-ZI4Smz99 z;Slc`DNcT4R21+ppj=;GyBLp=R)IV4m9;SdmzUVoEcL#UXR{vTvrD&T4qA_9vWZKb zGc843L|Nv>7uDUO>T{G4}~WQMknII9N9O@HG+9w~xTGKb8-LyteR%cNcsU zR6FZ3L!tl17XVJ1hcw3*nr;-GUC;})WCs89c+Tci@X^}_4kmB*{kZQqE2oKF72JwGHr z?jnY6G98cO7<6UQl-}?exd4VBj+mydl}0cIl+kjqSgq%((sA3_C4`0mE)1n9C+GDk zJG=Uod_kYNl}@GLX<6;@TE&(_hq>YE2)SGp5w5?>wF%Hl-uN#M+eKENXlR(cD(-M- zMr3fGcJ09kT>i<$WNQD=La6F^)i*U;R-28~G31!+TU^!0tBEy3jT%=>erEj_%|9H1 z^S9>zT@IPf82etCUH4q z^voB(TbY+Ijn_@JXO05VK)o%~%bqx=YZ6f+gFp{@=1Loii61>FGaMO?vm%s8CG-c! zj#5Xe14v-0|8ZgRc;|9;4%(X0ir(}bVoe!M6Cd>s`^Yx$b4$_I)K>k?v3Ay!+GM%k zy$^zEPS3Jv&_=g`yZ&=|6}@W0kuAu_B|jkC`z#%@XW79$|2Xiftg5(`o{{V1$DKFT z3s5WrLp#JzMQPe5@ZCtJ3rhU{3jb#?@-rm6p@&X-IxONE<31w-G!`-R@5{=)0UPA``TiT0=dfI3YbjqV&(?nEbJG zf;tt&GjMdkbAr`m)J)w6v7sNKmWr0Nr{8F)xPD;lD4Sa2yV~B7p|Z=)x9SA6GNTgR z;yIBwXPBpKb43**H;ViO^DFr2-=h_&75Xh>NAt#1BhdLlo8dwSJ)e8(UMwS5l{9tH z)Fis9j-m8UpoYIc0x*vJTA9H&j&hdUGHho{P*iY5i;QY+ijHV%j_|(KLQB=^>&JeDFl{#( z&OtdUzu*Lt5-Y)Un)Z{a*i=eW4=NNF5>6_LN7|q>2}kz+_(DrODKCE2QEK85p#B{Z zPbj}0xz)<9j<1g1yMj%;_U}|E2pS>(GOLH-YFhQM!*C(xx^cSkQOY#~Kt66xXjYsY zDQr{V33zHBab~`0S@%^@EcIhWYEstqHWw@Af!{}kWkaBD)!_S)d8s*xNe_Ketv$EAtjgyW(zE$fJ}uwidKQuD>5p+*2eAKDNt-J2>$MkB8#De zVCmk)lIJb@@(`FUOHC8gc+<6%6Me6p@y@D>zEZWZ%HzvZJiap4tlJ~y^Y_ZuuGuT& z*RE1H6P${Hk*RSXU0|~>oM*cQRelJH{~MtCXt-IEz;+FvUi`iY!Qb+1E-? ziAI7+?68J$>MNpGhv{rOqi(lzaTyJ4qql)K{&PhGy}|35zT;zLgZG~me~8x6>z?D= zq?lB}R}T&ui+uUhO8RA;W`d^g%Pr05wJ+pt#%<)cLY8fj?NQ;l2}*I9aT(Z?QD-;cLIq(UFo8;hdn-)x23n~ z_On0P^U$`eHuQqm2qUrx|DD7!U)jOAM5Gfw&79PEm%Yd1S?Nl5={B+N*b`A#mJ8kQ zHAU=McK_W@|ULAKidpw?z&UB}4Bj<)A9&=_ov3=u3hb`0Qx7*6K{t2}$ zYP)mVmTtQzbGI(eW6EQvHB3v``-4zTN>|~# zQIE`x&fOp}clnB!<5@V0r{jPbnzK4#-T-gm9QT}JVVxzEj$kDUa(hj*Ym(U#nW+>8 ziEc3G+!t!17kLPk``yC1?VRYm$Jqs(16iWNoxcQLC?uB+oQIBd%#{g-P2u)T`vgEp z)~?wl;g{@|u3oc8TGEhz?wf)I;Cu*%<}Y~6=banI@-G^cD=sFSQgBDw;BOL+?tcBl z&cD!jref1R+P{Cu1cd3Jf1{U^helLVFk*A^ogj9f9z62G91^U(34w=A{dH3E(tw*e z&F0})Nvvj3Gqmrm2x-T*eSPDgcCc|ZbQ^1gylAhl0>$ijT548rPjR!H{)`C99LS403~} zMl`%@$at5w7)FQRGN&1gKutGUU&!Z^dP{;7ySvV6ZWK(+7LMC{#+xX}(6^$~0CwJj zH8)S)Xvi2W?~vJ$N%!w@kEw$v9WZp#Nzd(s`inw^=$!Tzf>n3RtTyO@v+p-rM>?Jn zJwuMzN4nmm&AKD3i1Q@%&9_H7t-Y6fb9w=Li+;0*G$ZDuN}wXlu$k~|)VnYiW;xzL zP0jtac-w#&UNSfh)TOj+Y9MWhEeQ)?!Uo%jhD{b#@}ztR(ue;djSm@M1bzw5fB_%O zlbL0SY+g1llO;KuB%Tm6WS6YxZ2hb8>Gv>3-T!5;C8~8PsfaQ6zC%{DCGtqMu$G>IfZLs)zM}kIaQk5H741;*b#{p^a+4#?|Yg zTxz#GDeqB6@99vR)cdkkN!7t@wNVW;^qAIa2?ufZ4Sy<~RIh_B-6oT{xN8Qo z*)_I-n&47FIJROsb@EweXk5ubKHS8Hp|csvE7lqiLsBA;5C+&l*fuM}B^;WKw%pVS z%bvXwF&I8rb{QVJW>Ta6>Yn8Hdng5pXU-{Rt`%O{hC2OI>cbOvO$-RES;OA8!TF6# zmk0;fE%oVGu@ZfLaa0t2g$dP5wng)f@TesENvq-3Y~C_%-g!|z!#dn?QL*`jM^zWe z>Gthi7k51RT!a zS;71s?onvZX;mJcJ3J}v^Aay;dp)@WC*VDMNz?1^hW721(?4|0NpGb6;`Z`wo7#C+ zKK)v7h7s`L*{~TUN8}@-t4z7KAXQ+Uzotufhvr2sXy=IXA}YlI3DkqSEq8JP&;Eq{ zvItPwOl?c`NnQ_W5W}B;*14EZbRoo{a`}i=F2t2=k+jGjXQHNk>3yglOilbwR6M9d z5aiEggbQ{NEyk!GM(UYRVOAt6sw)&hT+dT|r*5V7e5+P1{#MA9{(3F79VaWq7rZya z0knJ(&yyY2Mp;h1@Km)HsA27_^k|k1m$iuQr}<~R^JPv{Xml!g=V-aSk)CD+^zI!l*Hx&+^%7ZNBKg$NcoQ`u~*I z5B35+JQp&D$YJ@g=rU7rmYSko$X#dWue+1(PN6qs33U!DFQPJrLXbJ{8Pr(}NfO^= zFTtK#{3mr_!#7uD7jG+T1=@T>WXFf+vT@f!d0 zJ#rlbUp)k0tk(hG;!`gZ*$@IHJra-XAQNK-WSGTkFe1k31x=ypKPnas5gsfvk&k~P zlvo+eFj1!LXEI#BSMoY)UGv}qRZ?~R-&*f32@hq^5>%Cu>|3oVzZaR-(}bRU&$zeT zJ35-k^$XG;6<@GR`xKYdR%kDUiaiasl z^pp1Z$Gv5%_n%R}_Vhc1hm%bw{7GGNT{A4e%volnLv#@&3-Q`qdh^9*hPLC=yRE+$zhlfeLDG?+lb%3K(8pnpEQfBd*EF+cStktbF2+AY&GpTNBd8-9UM`3stt{b2NYqM%6Z}r4>F^N`>!lm|7#%mN$yH9wGjgwXjtp9{$k-EWg&rLmU z>6g@l=){zbxlQ|S(#8<^3QLydN-0XF8|B7~Q%kz#PK&GDmD&Wt-QoIF%$4QR4SL}% zyCrMZ4%2LFR*UmQwk(@-?b+hqnhl1+{HQ$#D+Mv48~p)cCj*>q6${YMQAz1SP*5OV=Bl*+9v!KzROHkSWBpR-117j(UGM)#ifh(Q1?97{6rAYt;j#vUyH- zz_zUz`9C{qKNY=kQih4PLv5`afKxQC)@Cn$vHIbjj1SPb)m669G!9$%c5l)?u{_ch z`4snbS?Ui@%vm0rz*e9=x{zFuH5*Y}qsYyAZa^+%ns3~I@OXdabMvo2hMta>Gdr#^ z_X~$UE+R*lBlBEZVzcUl^G!%iZb60oH-wNcB;cZ}ND04W=BKsrOaNTWssE}jL)(yG zx;EbrkvydkWLMlc-?$#(hdisx%~2%!5q^nuMP07Kn@SD7tF^AqHD!9=SUT4dOulwt z4sR0B{pLx~c4TgjhUJHpT@5Z9(w`0=(6mZhqPQ+}6b3p2{~A~-&>e^^op)O!6VFY> zrG}b-BSPLv?)<($@~T6pJQ9F^s-*FiOb6TJGl`&lBgzh7K*mtxMpz&dZc!{X?% zY*o7S7Nx+oK)FDAfXh7~6>+%YE_uhHcRZ;GlPBhjuvUbUqhZa`iJwqlGsvBtqczSo z^(YItkJ-u_$tPszQ|~ENL5pqVVFwvsWl4a3DEdwGf^!b0Ce$e5Ol~wH9ea%)UzPK6 zdU=5ihd@6$K)whbzyU!g#9>NNnZ0h^XhiZ(s-hw*C$g zOMIrki-VMvCWB>{m9Fx}ncNn^V4Fbgca+)=yPLAsVb8fmq~Z>GI#;+lzEyrDXi1{v3IY+@n8*-<=T4tk?8s@&E9% z`msu_Z32mOHJB{@NP*nfR9X?6wYksA1NV>l)V|L{y^Y%dVz=3-uK+HOBv z6R;QAN1=uVUlN%ya~I~jiDty$r9ZpkPwHPL-Vj&yqlswolll60@UQqq{msf|`y>+U zjESYsC0@#l3j2wQ@cY&T5C!UE6aF>SH+n&EWvdGfH~QdO;e+#KnO z7?FNUf!y0z%xj#nyU)pjyZlztH8H+m)JA2Xy9M5z-nMg+Z7lrU07psOfS?)6tW0Au zFD^(E6>@(iiY-}k7$=Fh$-BDxU5rC^LfsL`=Gd3*3zN&$!M{MH53>g^Nw0C9S;MR& zoDPGobFuLO8n==a0=ng~=KN4TR5%}Qq-`y`E#wZVCpVE8$s~a|mg-tii;`vP$lxDb zhIOE@9*x}snQ=BMzm`3BMG_sx`%%~pnov*t!sOgPSKvCl21oI4a4-XHLcHft02)`~ zC@$gmtP_L=D6X4n`>s>~k)*%Th7Itb-Gct(Hv`A(lb{{1~j0 z!IEMfy5MYWfgdV;MnTLl$DaY2=NZ?)S>`vkRh2rEu5y)C=WIn*tzPAO%hmN3r{Tb# z?@m36bZ(S9Kc8C?il1p-R5Y1Ek< zO2U@NR;Pxu=+A2_r`&Slh8w30=$RHoG!dTrBs{13Wy=zBNprS4LL6I3?c0ew;Y&FCrzZ(Het$pMq za?F5(J}|8Z#e`ahbtCiWU_qtmY*$m9wN5Ica+!bz3ueiTrjuf?hE7DD%j? zGOX1|x|Vei$&(9*v*wgZB(rW}HE}GV8bBSD;ewmQDAPa59D2NH- z%BG68GrrmVEJm|P;A*fGtZIxqd2~_3f$Bp2r*Z~1c<(T+R7(hTnZ6wk&e3*Ivq%cV zsAWWEV~@C0{1{paE)7b(Bu6u>_RgDnRb_-m-1%eS)h)S7kr*|c+1cRcHn&JAa_a>5 z;ZkL(=~$|T0Jo#tw|EcMl18;0U4|6Z8lTmW-PxPOfXC$FX05 zU3$oMGDCp4l)-f;-@q#Gt;UsV5veM}+L7Q?Cm_26KhKC z3tVU96DkSE#HI)@&#u=={-;m zexCX_)L*udKIGVefZ6t$aP=xTLLlx{HE_hBaiyk|lt`!ony^k>Eng)h z271Yl0ULr$+ga2C-=NKB@Z&?#ji>nsLf}q)>XZen~_o306qx^ zDwP2@#66;NM>(Ijq$HG~!Qx`eliamQx#|sTdqOk#;W{mCRIbb6tmCi;rJEz$n~+kK!LIbpe;e-2&8smhu*tgfi4RYC?INNVX*``MGK|<^-hI*KA+h7s7MrQ=30pfsfMd z_}{5WUKTGC8k`0Jx4C42WW?g)s#4rl@ww`U*nvo?S;VZBi|7h(xUTLiu?a8%^cdL3 z*bVpx{C$-!;Br})0CQlayhSCUxoRvn&eSH7@5t5me~c_Z=2$0Kfl>Ju{4+jUh5FwR z_Xtr3D&Q@lOn}D4S0=e@Xv_1l^(9!tP`S{s;=_lFs~%g!tjFreo>bS_ukW|^WBmtx zS3oq?Qt`|MDGJp!1W74Gb0L7L{kn(@CJ!vvEze($IH|@hIwh&ppzDyZJdhOtX@YVo zECX6RCl6e<3d$rOjsT{EHgYvNbv3e@y;^5UHVzmKqya&6)0FOm6Ezdh&V@XRv9l79>CgwgL&sh4TFo)eQ=4#4(AD%f(FbW2gaa zXm9d}PktshLPi1eOzSinLZifbk@>k`TSC_20^n+(!<(DjrOHybQg9z(E7?HzMUpTP zpL@ujq8`{0X&BH;NC~Xlh=en>%}E(8lzhFuD3A$#qpr`(lgCZ3pKio|dalwtHX50` z4}?I>Pw1{&-sCuPa}V5;--9^94E+WXDT2{0NEi#u3xJ>?2Bkoc6$j=)&EgF_U=nce z8Hi|Bi-@-^Yu382U}O+E)Qj{odl6f-dAmVaCq$9;y3kyxJu#!1zG7tx16h8@#r~LM z`LGKV+jxM($)AD_;KjJPT=&=z99%ECUDt2#cXBU?Q}fkkCUtE>Uu{9La--A4ZsMcQ zUHBw?7(=j36bcCtt=6cCS|M+7iQv=BiOyPD-eooc%aOY&u{bRrD2%dDWPY+>owUu_ zCgFCKMljWAd|a)YuXN?9ciG89-~zV%#iG$qddnrt8b}M#Aa(fUs_}|zdd*0qxc2`V#qW=^H|&4jyA+tG~u4| z*t!h+rGcR~$HkhHTs4UdNE$9&qgD{LnUUB^tszSf>E(2~<7#eZ@5w%XwU0fg zZoWgMZp~m=(l5I5dddtIOT$Nd)zq!>l`(mn6?qnBn&ZsxA*0<0yw|Rrc=A^}9CVh9 zHu1zfd2=>6DVkJI>C>Wf_w|)kPKhBYkuJ+Ha&JJ6g#+NTt!`^lFG%a28@_Q|Ljzrs zfGKE3YpQxu3@P{hD$}{mHHhhc-%~~NXQ%3Vdgb>eHT8)!cfW|s>l5_$ZWZtd#?hmB zd3<=ln}vBF623~mr+wE=X1G_1xDf?J?fC16bzWJq(aV}MzzNZ0)zJq1Sg%>LA)`%>_ig=OZVjW8o$~9=k^xAzI=w)=2L+y;O z4(sxf8=POrbMI!xqbk>>QbccxssY1hJM`Z=y>gjg(<~KP(t8*YVNCGpBs?h7`UewZ%&#>#uD_ewdeQ_c= zERD&nE*`@)8?=i2aK3(()U=r)XN3Tnlf{p6ZFKqN+c`jUmXicaU{KX_Z=xx;sB!UYOhNkn#a#Tcd`thp|cSG_9G`QZ0#u6EhIcdR$9YS)15f@{q6o$Q1Y zw7QQ-LNu(3RdJyxZp>%c3}RJ7;h5erLOCpn;#QT#Wz^`k@`5mKRV%NZ)czZ__tsgz zU^y@4J$3uKALk7_LCZ6CdI%q7>iWp5STAa7C}1>IOH_`+G2Onor8(lr?5fgHOv79q zBR`B+brI^x7FSFU>2PG`Rn!YimOQu+UzK0G(atTzlVKMQzUx~48<);KI{%gfw5(f2 zAzqfUD(o`W2k_y>d`6u?q^hUSDUd59k*n#(q?1*;&rWsS+XFlO2EDB`4##;b?-^c$ z^F+}B7B_8f$6DBs)fM3zzQ9QM{7TfP7ew{*4KY1gs-nI+k6aTi+?M@MY+X;T3R68SRp|c7vu7s)`g|&^s(4J7a!ekB2tZt3VwcTxG%eh&4 zT?G8!{p?@FGx&h@;-=nwjRY&7)-{BX7^nv#Lhun8FJZG|Or?RNuPzL&4`rYR$Zw&h zXsV&`&ZY9wl4&U#3sW7VehKMKdOu_)8A<{Xr6PTio2%hY>dkl{q$V4Q@%*~kQ>}Fc zT?ea-vqI`aa&<5~BLGQ2w!c}sY%X1Yp@Lg7ZK1X-xIkavCz?f$BUc&8)syx2|0ft@ zAuB8X!#a8er2km@wSa-vc|l)Y7*-#ahw9;3DNKL@vVzb1tZTm-Z$%7S?$#4kAN6K8 zHWpn3R(K*4C-{6vQ7rPBo}*y3a9W#x0gRy2GquY?GNCklRX78#XxbuNv0{s`v}CKe z*Hy$Njq{|zN~JV7Bt$y*R2B09FzwLRL+(RY{HfTLLuGYc5{{M5XkySgwr&aJlbE;6 z++7nRqzZS}*3O_|fO!aAhPu&vNGx&}Wy@O_EML695FZWS*v7W zxw!@|*nZd7tzO1D?;_Mz|CTJKIG$2ZNnnbbGr@_`sPpBVIMFApnp`r3%`37L0Ux3< zckXbCq1IFF5_x-0fh^Z!l&YpsscB|ICS4pqwSH>+jE&ksw0+9@^iq;vKBXU+n^AmF z0VZNv-JYc^qMa1)P;uW~!i_9r(OsCTUc6PTs+GYZjH5>xz+4FG zwMY$=f)~Lk@RE9L2maq7?2e)y%?Vk!r}#dq-n-7LO)vQR|KX0@H6mKg!7P}0l>Pn3 z3%k+)O;!m++L6sB34x1E7446Ock{dNN2-g!P>8U(gc1`8Y_G2$^0sGD8->Q}tNH4{ zk}|KL1sNwDuMXD>^m{zzq!z?quvAR;@u|)mExpyJVz0L7HJ8@5t0POgTtX{6Mm}Z= zGx9t31j-A=;!0Q)li`k5=Wh2)Ol(AtU3I70U2LZf4EzOtw$W&s&o*5rPjmBHW?MkD zcS)X?-;9itPH4kP0l5b%GEEd3XHZ&I)}=0A3DY=5I8`=xAA(hcA`{44nyRw4Ryn=W z2{g8jKW~+y4Cv3^e+3{V)y_|au{mkW!m(_SlifV(EH#CF?W+agiBmSp05mpbvJI$S5v?FA}`9JsAnI{}k7%^oDj znRWum;%+qqrs6>eK6A~bP6VHI^GKz;x0_ICypBLPu{10aDB$2g&UMYOSChi8Ri*-n zU{r44fTrEV8RlylfYRGRP@a|p!S$P#M9O|n)m)W8*}o(T6fq3b1*c`RPn|YZ6)+6z zB%2kw3!-1eY0Yo`3#`putBaZpV|fR1*KFS3H&Q}3P|{0%vd}F5NB1-PhU13C)sP;e z!AlC&Kx@@(m3VF~mR02^?mcDQOiA@R-kA37#gG;BjnBhISU+AD zpBAncj*Lc2rM}x5`$oSDvzm)>|8T{~tiD-!v^jr{Ti|j~)|4~`y1SOF$K^Mtp7z3P z(VO`|RHRpTAueAb;_VZ|UQR~F9@IT=7-s}9l)s*GpTLvwzI z|M=7Cs0I1~%Cu!R*^3y;6t0na&<&4f=qi_OrEOA8pPSoPp5rbe1|g1{`9#bIv8-Qi zO>`!nUY1$mg8vFiF0y8<$-v1{yuFkJfOol#lP=A^{^|{OXIyPl~mcQuHgP%jD8i5MaDk0#1S&X%XVImf8j-)Ohcy3cOuT za)8@Ct^F=`)VDOln^%b3@EW>!GqE+nUE~=u_oaXuUR1_6c4&xv&3L8A0{Q1_AZK5p z#VV?uqTX4LH_6B@aLzsH%G4p?+;6b!T7oF&t?y;FOnLX|hD_qEvuT6m>r74xs1eIb zc_xdV+*UJHEwqBcYyF}t6rkSWJMY;K)qxia#A-Zi4?IJ>_ z<9p*Y{lb>H7NKNdwb%=_PJZ(~a|w|R(~i+{i&$|C_F?L0H?t&dXbW>C?icAhciR|7 zio16nw=o=g?QFKQ}SZ~|K zikv*rYY7_XjM=#&><~%J(RfNND)UmOznE#5DmYzw;$9+0g&V{#WvR?9Hrn1CK5FOx z3b2C@!C}P|7kfy>{R-f0oAUzE96jve=OsXn?K)W+q>P|vWqu1h4oL`Rg4uOLvqR-? zI3ET8o!#ZowzToj0n~U1Zr!^iPxGkdXP~(DUAZn4n~#z9%M4rgo64{X^Co5~K-EFK zPCWqvrltj8^?A=FCSGH{a0lF+>E}NbB#W}t_G4VpOV$@$aKDU@dc&ISUJ1FQcB<@w z`EaMedH>9k5se1OTMhI%h1@*ly&7v*^(-|xzCo25=-^2e!3|1D(g-S5VS2t{r>l(2 zg+X$nSWE>@8ityq>rX8i$l;FG*;Y(5xM;{Fw4!5$yCdNp{El6rvO+K@SEqNIvok>B zO_WxZZK>N=!ZJ+~PF2j^ciLV_V44DXOVd=g)+*<{m4kTVYmKZhLg>$SI*r0r*_V28 z&rjdU%9HmK_ae1qdydM^g~Pl7ndp;))o`HeuX+OHmrwGYnT_fB5|5)t_|UKolz#g( zZ&9>XzBeTuuL=*d%M2KqS>_3I+KYGt%X_T)YmqF?g$n}PRygm01_x;2H^Xgp0}}(V zG!#Pk$c7_}O0r+jI@=0e*d>)W(1J12aecUfZ#eH%PHIIG8S}XgB|m&v;#||`EyV>M zs5vyyK3jeZ=R{Swp0CG}3g~5S6wwvlGKhC{m!AQ$+yn+LragJv#G{bb&X~S2zPi@l z>Kor=4(J{n<;|WyG`v-PY4Viod6rWb+aBGn@^_VudVexDj3dShWoWb^xx$hutwL?o*Xo+REM@7L@)e^#BlW)-l>jn z8Qi7{beF~5KN{=DL&kDtaI`*ot2?Wwz-jsLz*jH=v(1{3??m>c3Ce~$AkwVDIkYJn zg&1`iCMSZXaz*gg4ffYpl|O}J|Gg^vgyN|cbv46V!`royQ;*gB(cd@jXq5yL4T;+W zQ4{Z3{`i!ff=lX7gFb%20(0xMKc4D*%qgMYyr%i&UVG!EHNbYuFCUT} z_Hf2e4^*D>pdV^9gQ>Ghdwe0fMG@#OjXSNdn(-{p~7 zQPW0I;NT2mMm`M93yuNxe2v8(A8E)Fv)fG}wIsJoJimFb%Tn{L^UTD1sKILm2p9M) zt7gZUcFyZ-J{Gk1+C8z!XudS4%Z_@#%cC^MjGJZXvyFX9x!0-YW^b?3GmT2ylpD`< zxFuow{-XZc^xC`Zjfed9Ub`zk9;HYFlPuXlp1Qfgv{`~?{(IRoHhz!CV!6jVzWZ*k zrHkgHJKa7y-E{V86A+rODh29y)l+0xhAB(sshWePjWV>Upz&a^xbRQsnbxC&`8V^C ze+1R+$Mpa6L(O|#IOn-J;?N$ZqA%oa34$BN!R-^o!A3NQ#t*`W_8q+88?u6M15OTa zq@(Jbpro*mI*dpFYc6$rez#r%+l*rV`Tj%rA>WomplQ<~|DldU1H6|Ef)FsV8@Ezw zqipWdhzQZO0Z{3%aB0njgq4p7iaLwhtz4x;Qzn}6iWZJ3Gp4@&T@mdJWwA3NC&!nzv12C)=u0o`;h%9QeRur;x zI{m_e@E~xN`Qx5(%p?cjbET;ws%E9O)tkFC=Z)7{>MOz#{;{^gmsCf~uGA%OrT01) z*t@FSXHyqTVkDDx2EiDUm?iM|Y?50%rl!m6b~ZIy*k;-SV_m$KW22(Wc zAKRsC{C>6}YG;>b`;L!cb)R2A)Lm$R|ZJK0d)OhL#zl^&OT9rakHI zAp(K!M6cq+*3&BD$~~KPNT(%7?CL1xw%H-;R2SnUxy{!G;JD!j+dfK#F#@c4i1VO# z*rass;N1R`%4ZxT2r+)2vzO+jyLoiF>D(C;HqB4^BmNgs*Gobrla4~7a7<#6n8yn9 zvi`#Yw=!H}MePXJ$}1$BZEU51N9XC&`gy)>+|X|2z#wTgvfZk|0lKU!Tf5$5qHWC9 ztv4F0Asaw4<^cY3%|K$2M1Lh0END{jYXy`>O6Uo-O;K6$2szm}X_`XW;rOd{QZz(bVje_Z9W)nah`+j*J3AFqhtU01uNifuDooO@-^tWv1v!Xyw- zv{uXE-80c`Puf$l*ljd3X$GpWf-Y{nNX>5&7IYOXWC!+fEYLdPaVvAfs6#g_n7UB^ zI&uEBL0EwBsLfQu!tdgR9kezJ#I%naH>R`FKR4#o*ZHQ@{Af7(WL-!!?PJUxtrZEz zmxItmNhn0*0)Y?&CrU#hxPqXtkB-rOzIFzBnCSqbnFGmzuBG+ezB)=CR#s{3HKV;L z4}E!puTkh55_O5U41f}HlnJ-4UU&LEd5z`kQxEb%ub;`mYFo{w@!>=-E~Fov6K7+ZYI`(vAfT3PzB~nGKh#c+_TSbPRfZ1yq9w=- zyi#XNJe#;#2e_hq0luKSQC&x7C}ogxf_ zvl*`1W3RVvvge&h3J#@*T#6Qok!-|Tg`m&V;Q%oVBP}s&8Sb8^!9&Pkiu#0&vMrdY ze`}l9T4qT|I}Y3lvC?J;ZgG*Tn-@+Gd!JM;Yvz>bax&RKe5ET(1Nn`Q+sNB_@v;Ad z)^fN?bO+9Z*=fMV4=S_w{Eg41d^*Av0wjVV)_6_RkjL$mIbH%5cRp#`fmG;zao2C^^uI44}zgV{=f7&wNrz7zwE02nYzj!St5Zi2{ZHPQr$1eEv* z8<`v#q?>pxLWj>Nw265bPso_HT(F8R8G<6|#`_QmhLbDl7+qnBOL+HO8~Iux(e)sh z26qPkCXK>#ChY2qs1?PxLDaMs&!2y-7jwVBUFjq@beR-=>*Xpr&~>9BSnIZPStE=Q zbE`=N#8^oiPXig4@@;lvt;CwQNH>jRTxg!vQu1TjlE4=+tj0n^(V@pNpdv4CPN}lI z+1PC23zI@kXZ&?5_W+&gVc7a;{Y-|F8MHUaq1UVv8e!EP11MvMCYC*n=YpQHLc&Rc zk;mu4a;LO2UJ3jtiugWSqC_tQ!~UnSZ_8$F8St1`;+{Mm$W#ZtoLdZ^Kfpkl61JO%`8QS^f3LeoL*dG3>1JCmYzV1LS zP#Q}3Q6TDj3zojQ7eNit>Hcry_LLV89w%`Alj69Ro@NU&#V@!Z7#VuQ%4MSiUclZ< z>jMA~2sjvWaOS_&lj=#x+67@c0&!=jb<9?om}Nl2gEO}QVGbysV*EG2PR<&qs}9Cn zyXqQ9h)0#NUT=F;U8 zJ6rk@Z*mY4 zvZY=V(YsNml7Zbf7(=vfr&bmxEUi|M5#@|kyrX*WO?$?sKy%V=)iQ0RU(wBNdjf%h8Y=bw(+%;0YYf-4g!h8+LUW{pK6|Ep1sCDC5)pR+K6r^9%yD za4Ce71Sx({o!XYPhz~zg=8F;{wRrILZB9E4@GzVv(Zc`$X3*9o2iNkW;P6FkXnY8l za|s&sk>&2lrgZ~=lNqovIn7>K@+RZw zL%SZP9bE*sl1qrNpP}N)V&Hl73G&1+^G^H4qJnf)a%Ut$PqPmUq}y^4wL>`Kr3sll z*WVqtu%70$B}6Vz@L@p2=pp&k#Y4EbW$J!(j_HBg|BX7jY6`@mcb?vgFYToIxPs@lPj85@*BIml?9ur^4&vm9s?PR(+@ zw6W6AaGE3YS{f~rdg#E02;g!3Wnw=4R{T+16x2>CEjOhb14_?+a~Y}6>M?B462@Y< zKBqUB$J3Xd<4A^)nOV;Jc6J(;kt~_pp~~)7ddff(jQaw9%!f4Pnlz?ClNk2QFyJUW zHp`r2LrEwy&6Igeb*5pW>41|Ib`gJ^{q~#(z<%~&s1ceWk?AjsLi8V#FzVTBF4gn0 zJSi3nTR14?<#o0}3m?PU|Q6BN|m4~jwyA$P>H%UnhRSpe6TShGPK z$N>iP1kMN;C%9jE(M~SLyk*9+U>^c{I0d!0fuhdy)B}C{ke0p7!!WKzj76R9h-a_4 zjHG5oG;H=@gq}-{Ac+h|>Uk^t@C&3AtDZEle30QPuocQHiUA>gS}N^HToO7hbT$YK zI+!*N0JB^Jbd~eWj)Ydh-9^t|;O0a1lno^fBo<$qz>)9Mo{7S1(F>EtInG&q7-R3i z#FehoO24c*+03ajy!6`29!_(rS=QryssnP=v+N9~nQCItolL8<9)~8<@69WQs)&1# z{WKED8es>$w>z8W|1pMU0yr>=lo);Qz{I6ze5*^=aPUqq<(i@aS{uq5Cj3)wQ~L1c zWHY)l&aU(K3Iwe#Y7mSwY4~wx^URLZhdE>Gx5NB?#WsGBv5XLP-YjKLjK}DcGYl| zf*59k_O4XqZEN&>C@EuA{5%If70s;b^nKUkd$RS?1;+MW!rP~u3}9~&z7Q-hAf zPNn4L6XWdZnwueNQkk9`k2%(R*XCF5CGb`|B~{c$ihuFAh)CWu^0-csQt(@#$|bcr zuplXM{49;Za57>}z@-4UWr0yDd1g;?&A|VAsTRH}rIL$74~PJ31ItPG4$#d2-~k*q zsubKW4l7ixSbgz4C)Y)iW8gNrCFQa}NY@kSOgXZ(zIavc0CrIDm&UW$roNLCU%E>> zv)|2`d|((gml4Q7hUw zdOVGShf{2sI{-H)iCo4hB>UFeen?y?ig^w!ZXvTIUay=XC3B?l<94T6@CY(J%UywF zA0XNqm-+qcH|84O&9treU9!Kk z4=dZUZ4mAY1TZh$mTOa+Vx~IWJHvouxJfuV74hD2^|SBz9g`#51mYgQ5A#4xxh4yp zTZ4IK8ImxhdfvULrcZ;B6ayE3ExMWxxG<^{;eGYEa&o6G^5OhdvWt&nbjqTxTDR6s z)wpzxIvjJ81c`xT;bS#_?y?#}?N*Q+@jPTM)pN64@i*b-xb5aKi#G<%%<*ztb!wpd zV3omvC1i=8(8}4=g+398Tv1K~vH%I>0L#Q!SxOG2d0Jep^QIZof^*~|k~z~&sgZTq z9yr)ID8+Kv9`bw*c6w@{>tOwq9@DY8`^DLXoUo^ ze1KydTWYFnQ%$wXd_!GTyYuOu+dy`LF=2zP5@3px7?5b(Prn`L+t}ePU%xq|e76=x zPf4#{2=}h9D3mT{2bT?Ku79xFrZHsN#ZC6N&+}0ex2Fwi+2|WQt(6TpfuNaV=FkIx z+s2l;R*Q1?**isy%yliQFE3=*tq<(7eBC4|>V4*>@0zb`dp%cYy;PL9(TL88ZPC(V6M-qp8-7VmjlPkVKNSadgZdgj) zP93o+q$z!*u-71g^jH4im~a0JroK~c^@&OGwA3N7&xi@})o%KjwW6r0Qx5m@xci}o zI5Oj@C8_6vPc){gw~3~G7Sb}?8_8(TiHHVal^x+x8#}KWEdp8xHLkMH&h~)m-{(PG zOpR)ok_j7wJf|VykdCX1<#t;+ZRl&aajhT;TCK%lZTGzjh>QlHau{t?Jj$SY>+NRW|+CX(H{Tq65F(G3Dp~|`Ir|UlZ_n*`d za#B!v+(G*2A-X?+(ix_?m->LeTvoPK0*j%svW_y3WI{t%*=-zJV_^$YVc{0FQ5$S* zrCm*vj62Hw|4up(Zkw_Z>W@Yh702DMU)s^V2}q<5;?A zA{Y`)#K79xI4GV71;rC_Q*Gk7v`N6PX~NK&M!rBA$L3P)z%nFgQ24$jT87os(B4v+ z_Gd7710|W^#=G>s?DxNgsPzPfqY=gQDm;N5TjsqtZXSMEn@xz4W@c}YUe{PB6newB z!tFYpW+-aVPlS>y1-WDQ@w^s;7R5-zaf1#+C2@-LZ;lZG6+r|Q)d`ZAI;2vm1DJ08 z-fx|w)dcw*eUl-i%xgSW9a@vsXc{ut$b8dui68ck0SX7O5l+WR1%g-vhENPTe%YIh z&8Fv4cpFqiU`gO$H=UpOx?2+{m|Wfgi4~E$AX1sLD52AJ+ejn1#|4FBS#PM(*w-60 z+H0xQT3_|ZtF9^No#(Bhm%@$|sKvZEt_%@`GGx~z$?(x$`wvIF*Z;9zSfl@ho$)VB z`3_=#j2yapztO3gf2-SL4hiAsgfWR23<*T-N(JFX3X(VVDiW7{Ti`5TB9)>j`z4?b z&mtV8+(|q~}g-5-O`ziup9y$t|x@W4Mj4DV26k#Ypp$snwo8cRN5eDJ_q+?nc@ z?j}s@`iqv8hTeZrEulED&w@3YC`e*IK7@Xy;XFfmNQTxf@IUs?2;dnI5iQ;ZgV6{$_*^D{H zigI8m10Js&Hv}!{n}Nrs(BmHZjNd1rNGfuy*gMv)oO??Gj1^I9I$N)gW|%yw=rrLt z{Tr&~y1i9x5njHLiw1wE)5qbMo;<}CzvUasmHznn_~vx&5Z{f+T&rT|BWWPM`xpsR z=DZ_uBk%I1arob;&0`pt@nd;_PzT3R1jkS}N=z5`xZdP`XFtckbagP4rUy#u*c@VLh~ThqFw~QN{G$@T;oE{nH5xSH z#}x{HfstvB`f#PMT$I8iFigec3o)8#m|XbmMdncIQqet^OXlOE+fKkc>yJiX30n)|^?-zOymoMU zPA9`Y>;U3T(V$u#N=zVpK2L!n3Z4%~cy0bZ|9S8e0(ReLf%;X1Aw_jKTu!JueRExWc#0ZWp4c03AvPjPG+djgO1imOX+j11HP$vpgOji*=eegP+ZM;)LZw$&d@a z$<^r4>8<{jxa;%X;FWY&5^roS-=OPXyco~kll}I$NKqq@I5_Id^AaLLv=jBja|(Ve zV3UigT(Sw|^>U%WJL2r;W%lk?s*hH^hSv5~BhV5%svObzVgB_W6jf>uteQG5 z(MO|A^^+k|L!xApa9|zu|I-rJ7WI;v;5#Xm4clRO{m-c(Jc8TsFy5ds{`t~F)Dz7_ zgxIe&E}~Sg-TCa<2XSnYOkI{vO5IHrwY7~ET~JhQ z{>BQMO0V|j|D!YM{_$3A1r>b0K+Z2`%LM|yLcpecGNkJ2LWfMY`NptkqkMy6u$(nG z$f~!|o!8+T_h$vXiMWtj10St{I|I7OyI$07!k=B;rR$Qy9i!g)rbhJPpPH}qGJUNq z?fCR9B1g$4y+8Tfi?ALBh?o%K(WHh_A5AZ?N>i9hs)~Z5iBM295jCmWj%Qwy+7U#V zj7F3R1R)X;3OM&m3q1c2)Q%Ccgq(D&3RLuL{gAZJy+2f;SnYR^2^kU7WH22uBG7P5 zOQ0x&4UChtJe#<+qI^|odq6>q=yZy_Akwuuw!(7Dw{NSGwFsis;Zm*6wN)pjB6BZB zXT>|YU3*p)=R7Wb99MezB=#`Klv4VJV>t)Zbkq*xn9!i&=KSZ|%o zpI|^f$eRS%+J6*tNR)+X6)1`}1euLcpzVe5xuq8ojd_zNK9-P?_MEq}Yugp#H~n&` zLb1y4Bok61s?H!<0!2`;VOqypFmYUrAie@pn6BvR@uJo^sloe zGIgU2gtYSQa;W)AKin2jjSf14@Jg~STkEIM-iO@f^|v+)hc0iF?Dgy|4~fQ^SQ%xSe*?4B~hfks(tG@ z?BAf52MH;~in$-*Trz*eNmHmXGhwRQ;GGC2N@Dv&Cp?2T9jxgW^s4OMdY$|YpAS`( zh+rV1RufSbkf}1Q3Pp4TC>DeWt!uVfY#*brdAiF&A^8KZkx!}aeY%QQxt;n1rV0^+ zDwM$WsY0y+*|c~v=5~2kLZ{L^?*Qd@FLBT_UC}{npCa`O`tI(T-bR%#$rcWR zgF|e%uiZH6u&IIxOz+G(D?7H#k;7EiCDDGmDE ziY@IWt9*7cAyW-%G^!}RTS(_M!HK=M+zOmo-jJH%lQgYvfQl>0BBKj1LdPN{ z_#Bu47y8IN-pVW-kH^R1nx8q#fe_UGJSUdN@j&pQq;g_Nj%>*js^9dAJ@%ciW#vN{7IR65Y)W_syCdHR&U7D*b z=OzQa3d=WWLZ!bR(einScA~3!e6>^rV5c%b5AML7dmWie+G+gWxT#!EJd{36Y?Clp z2}`evBF9BIzybCaSRnVmU|&1hSZL30Bs{X-q_ezJbv*UPd0N0IPC9$PTKG?gpF`YF zxK4_K>||8#l-$wEUMNJ^+|5r%UW`QfCNlO_P5-s zYMnZO=*1v~kpRz;`|ZX}05@Z3J&|tk4@TLhy>e#lW{BsTZJ};P8J8?&tZq$sYX_YG6N8Pa6O#)D@7rIJQT$ z!zZ|fQ{N)?56HMXzi3KOx_=3mQC=M%UWDj1f51Suk#w0xYW;OqeW2TS7hmacYjRR* zT(QZx^4bt`j^e$_F!y%Fi7-JB;RH?<>y&6}M|Rh0DpyV~bJsWM3Y|-%Q%OO4eq4{b z=;c>J$QP9Kl)uTq>O1@yC<&bs=xnGC0_WWRvvZ=8{=cg?> zzs)13C98p$t++!`VI*83Mw;K!C88*iLK5g?f5dBV(Yds^DM?3mj~2jgM#|2z71rCj ztvv`#BZ+A%J4vcXU5qQQkCk-T=}~JrrjJXBaPi3WR`oN{U{iB_=T@u*F#Hs*pqze! zl;x7ILaw~AMuDuY{1Aws82T(@rL{_HQ^A(}x>r@L9=PhYr@Ci-Hij6Zs4}2bDgC1u zId#Lh;`ADJTtO7IX_Q=y=XZVT!y0fnOpaGO>thq&(Mwh3V~&P7XVJ zEcyGn#4#>q#g@$#dJdWo6_x38Pj>nWH?RAlx|~u`0K9dYmzEX$;+1g3nV07V!uoX{ z)7>`w8lK+$VBOXLYP&<9RKoLl`66AnZrQ`|;>RI~Gbh*ey+Gw9dxfHMQ{iLnEhWlN zJ}T6!>iPJ_3ooaJ$uI@s%D7U$G1q;Xw)Y?Mw-z6dsn0!0`0>wiJ$}-V$9#FA_5RXR z<}ZEJ0$BQO0TVRIow+$KfXpbr;`v3memKl{z86=u2|H##%31P*j90$E!NDE&);dLP zLyrtzGV24E@DQ}PTV7kQsQZY1Og(T#RAUMR6DDo z%R?@aTSFxw<8hw2=fktR-@r)@2WT`Z#<1J_sjuxWzNh>Mkkacrmy8l)6=az#3x$A; zUuD`A=vq>jx-@pU=h%;AQA&r?Kq{t;13IZpo$x?{QcnAfw1oa+C zVs{!r1=V{XMeO!3Hk&Ooz)VG3O?u@HQ|}_aLo_LV&!QdeO8o<-nacY1=htNYc?u zTtfW$Y3@^l={eL$DNxSMk(U~nZ9S__2evQ0@p$!h7*No=&%whA;Tjn79?8{J0Sb!w z^9mJnbGotcya0){a!c2T?<-@}m)5(Wv!*JKsz^qv<;zBOUeBW84B58n2csi!D)wb% zSL)FKWiyz+(T;>df4^yVmd5mooyPPcfeU3`UE$Bc zFnxr)vuqoz*q0e#Gg3Mw19jfs6>hChHY7<38x!+}k??vl<(Foh30A#KLqy;xc) z@0qk~@ra>;9(Eq!Z|c@1bv;P5{Rl=21TY$nw%LDo$e1(&O8crz<4?r_BJh(x%1MFQSaieAEV}~-ed0)?l@B?~X zZcw)i_SMXx#ykoIhm6kE0EyQvQ8kzhMw8I$bnilN>0(jydRP3e3Wc@O?$=Dgd&x4etXtfvi7|9!m?71O6%MnG$g}7Bv24{-dX*;- z)UwI(O%49HFY|3J{4um`D_?L&Tm2m{|Bg1!TtAV*w3=*=cZ#H`)*5-FNPE6!gr7j1e} zUvU{&*#~tR23cAik&T83r(H|z!ecL6N*pnSwlAksy~-KAwfVN&`GP$x+F6LdmwC=f z^vdaiSDnS#xfctdY@|-sCNmEb$Tq4doU6e3 z!8W)ph*qR4jMfob1t@_5C4;N+WWu5sUgbzIc6AdU0BkcN0Oxs^xvV0-c{yXp#+a1WBo*4 zk_n_h@GbxcE5BZ+^6j^3yHL>2SN8ZI6jXGW5Jlml)l~=K&2@DpB&4@ez~Ts6TG}|Q z_Gb4|SPtZps_Su}8Vg*BumMz=9Jh14h2OY2R@9Xh_-n7*TsAp+z&3-2r3f%LV(7b5 zbKXMkO3J6r%ws0wY08%qPwl^zF*2XnzYB11F1$MvXk0Pjp2$*#^Phi5d%Mil2e+9# z9J$ynfK9O4S!%4kZn` zq24Fv&A@t4N!+LzPvY-N!V|LH+t|1;;#83)tIwRVe{as&zU7^c&t)Zbi`UXSyBvzZG>hR*^HR<*cpq>U#COrZMx#9y zTRAJ4%#}^F3feKDrM+*w8Qn1Vp~L%B@r}E@XlWtARMFcr27%BJWQcXv*LQv+)U6_a z?>&qnb6j53$=f=PvN;#q=r3^CFVGp$0;RsSe;wo{F57>(?vZySmreHWfHS$aD`vl) z>u}8()mGGh8vYdi&ZG(&P1roYXSUk=cP+eM^o*l#r;arS+d?5}fp35DBLsSd&3*+!K4Kqsjl@O#;7tiJOTuh77Vii5T6GrQg2Rx$TI?X1sK+ISR^aKUmHFNRmrL97q3kJ+8UKX%K9SDWbWjuwPKj)$bfPLBbmQp=Gx9QGGX{bQ zqf(VH1cM2Ks%rleA8y-!=W&FNIcCjxOo2K(@hrx~&LtP}l}w8#A~G}s;N5cqSTV!0 zIh2Aw&0G2WSIpqLxOEX4%hv;{%qx+-t;Aije#80^aRpki5-{a6;-rTasY<~ zlf|HkUnWpxH*W+j3;2pMK4|(BMFrKSB{dzUH_{liFx^3?rF_w?aZ|Ful)+FRwu7Yt z<%Z}pC$@kuD+T|aeSp8kz#Mu4qXy3F38x|cFqPU}zmIP2soPhv4qQhX7V_m~0?;^F zjG{!&2*|LsJ^%Z#p?ErGYlyPbF>=05_<=FsGdg(g<{@=)o&K`{Ebi!b1DO%=oVr8WO`p^`L82`k+wSo#t@P{!Q zg;(D7O9g{_F2iqaaz>~q&EZfQtq7yr?d?Uayf(dU&FC91hf_4`bs2~T} zeifXVv4q}mKR8QU>;AYg#rE{xaEjYXuy{;WLIs-cYX1%<<}%&k)^q90)OPfC1y&H^8FvD&jBpl1g!_ET-lmkJJxc2YojX{0XkDEK)>ed;avY6*Tf7Y?d z%;1+VP|kC)-6??5KFlQ}77wVJ88v}{eJ+*(m}OP-=~BX$nfqq@3vMqNOL*vFC`Z|& zbcXJqJ6@;!CxmCES&N~6;YKaFcp^WFM(kh4u+eMS+%?g7uy2JKvWGnYKS030PtU=4 znEc#_0@Sd9URUjE_bHcr<10;Msl-fn2_}=TFp;EE6G>1B`~uK01)bl^V)f#1e>@-G zf#|iGdb-1*ApE;UX)(1bQ$;NbvxU7PWWKM4>ev6Hznwlho6DIU9zMY4_J?E9DQ?G) zWRILW>x1zy`%TWa1+-4?r>Aq*)F^qBB(>muc&BKzB=e=_HZ7dK#}Z~C?pVp?%!!U% z&E~F(I#Fk6FaXknl=_qwx``h6j_7F)n9R2Z^sVTS2alQW+YDw?i$)@DNi&(-(!{oi z0WPOMGGaD|yCUL5E5DwV z=QH+jC6(EZTc5pt&zNpu01nEp!gPAfqI%E?vl+OtZR8WlEy6yX;`d`I&qy2Mgdb|r zn9bH9mG0ylBU=*^TB9QRx!nE;p-uvAr;p@}96jq6;At9zDW}lhSiHJuE8QYTZ(uYH zH@0f)r2@V@8K%mlg7(Y9=Dxd*fx<7<(!cAth1M)Qfbh38S8ajX4m8__UA2C{ySA&Q?nrnz^4^6zO7T!J5r&v<`V)iR$dX6@Ok(8GX5}%G z{-nMZ^Iow-HslDkET)WQICP*4Z!0GG!5!`ntBW1+#r=>p0M21!AFmc<$bdQQd2s+# z;e5~Uf;k^HHhy@?@Ll8EwDrdm;uL+&iUtp6&P?hCK6NGASvx%KRu>y5?nM;Z$O6in^W>?^;@u)N8GWFFfbyE6lYE3*5{H+GhZ?9`TP@5?8q0v3|8WHsE&0 z2h?}Q+dE}FO)YC0*u91g!f0`aWsGo$zwpjcZABgz*Y?_N9ZgSiSx+`)o^v;+fHfcQ zHc@qn<~VrHMAL3_9{XcMIl{<$Hyz3GAZnFo?dTPI;FC_ajw4o z;WulGAY<|B5&_9~;3~QEmH+YE|5wVEN{}}6@}ECHoNKdgOnGX@=6tMCUAVe*%;n|( zU^9d9tO<#n5^>28izK5g-v&Wq!>}o?-2i16&w~6j0QEG)dknzM!)1esaw7~IQor8l zS5#!k%p@~wi}KRkBFI!YRkVZdKwL2*)O3YDREXRl*IyQ(mzk_fDDoKV@mD>lRH~27 zgG{MHAQUMFn{=cijS7XLdVSn1E39dOsa!vg-{*6PEM;4t;6edr6u z${}Q6oR@B-2tx&3kQhgMRxqFQ2s0nXNbHRGC{CVU}GYfbIIx#~zmr3_DaFKE#~mK9eM# zALMHLT|0RGpt!Btc6aD=qelEB2@isgXk+NAdx)Mp(H|OiUc{|sPoSf=AN03zx`8)x zky7Pe$D9+Oi{{Nji?vfu&zFSRDwdhUL)?0l4ZnO88}*H%qowWv^jN0sNTcShg9Qs* zSIDzaKTHQc{5m7{ekbIwRbP>=2#^Ql08`WM^>F&RvCk~D^n!Wn4gRpq*uZO5RZ&*( znDdJ*2t)7pb9t}x_t^lH?h8G!O4|{~wD?TK+W7qNM%1g+qsMp&&pKBv51^+&w!Dg2 zvZ|(U4tJ3dlvzyIY}(%CKBoN=Tg{5GEY^)|6Yl^x3)%rMj_{lN8!|gtL3ZL9m`8}P zXES(jt64U0M{dMOOldyR-gBz^Cd(hu_%RRc`46Wa37vd+qn!CIzJ3w6iGAa|Nj}YR zsfrT^%+|g44y5bvb+|{1O@I%7G zcM=(2;wgt#n}RB;T(8B^vHnC_BBiZ7%VyCzvZLGNjcpw%w~Ap_dye%-jCScNcv43UH#cpRa(;u00!@)E2h#fJjr>~O}e8Q7Fws{ z=$+Pxn>BQ{;^*)}eBVK_-{x;Qhy^2;(T4;Nopv-WfcS(;9Ok#~KrIYvn(dA4eR@wr zf!c6S99_~jbIrZ&l{RTF>a~V%UFZAIlDNU1?y10i_E{n6LxUEL@`GcZmu~fJ`D5Vb zn~(nsYUN6PeQ$G3D2B7JPoGh89NVOdqzV@_U?-@w>IV{b zWl3J?s6Kph5TAwILxZ-@*Ak8L(CN7L5pW^+OH_gXpP=?1!oh>hA)$5LY~-}3x80n6 z4`+^+Ph*;Zd7cR3!`6}qtk!*JtPEo^hh(Lby$FsJGOZ7qOS4$S)yZ8 zX@FbDGgYoh*M(+7)5-aeaqTwIwU&w)$=1GmUX6$PPN+H3^$c+nB_ny4;ji7^?Kp5s zPtojVoX6j+Tv)fIySsY}v3~95-foNFXw+BTBEEQ3E}1bD_4KNWYD-iVy*vgLD;}@3Mq0chLIU= zM7D;y$oLU_#a=ev2$U`-Oc8v>5p1GMm56^<_d1Wa9`B_y8D0*RluQ$NwWFl-^t)qH zKB|bvuzsZy8;Hfx0p)E8TBmvt()J&T^mHmtR@J^6cN1^sNYI)_0l) zS$aK@Z$*$!W5_ci>MOe}-r6l;6)gG5sy;9ui(^feh7^5JB`j{tTA@1L~c)6 ziIYm{=JU(^at7qr<>q;Z#ny4T!7w4ezsRN?CJf_X`0}tji|#*Vk;E&n@B&Jm&)bYD zgIbL;lt7Kf1gZ>aw8~%{ZO>fsBF^-Gf#v1vPGxaELNh-?vQD9AuSWBrj7_&8gkPy3 ze76vF`4q}s3^AlH-DUd}QVN1({^kD~25MEW!v%lU%C7yd06FSZnR`BW-PB!U+QsPi zl<_N7gfEF2^kZR0_fqun3q(0(6z^W<*SM&p{ONh@FfIK8t3FZ&fefOEi9mEIby3#u zvACN3l)Gd)C^d~?I;<);68V(gD;r-wrGMZsz$`=gW7uy`D)+S{e_jI0$ggk~agI3e zsqcw#;JI9%ch}XHM7%tLq*WhtET=!Z+jb&0?EM1FPZSKJKRhV?g3i@R5uV+bgYm#d z;X0#X8M68)MvuV=w*k7X?%GE7%WBGnf9J-0pNY|Nyaq9*2@^!P+-L}|gzqFGl&D21 zhm?gWEdw8+je*Afn%~VmHTBEjamX1DyP}e{;WjB40mdEG5zT{_ZU+3_8vo!(#SV}EAl(QtaftiD1p)X*DM&&? zZ^W|AYZ*MzTDON!0RjpyzMKguQU>;C#}jOCd)bv3VHZYfLzWO!E>$GX=X;lEPJf>m zWV!z}A-S)KhZ8k>16wgbB~;v0i7fo!Pj7($Doq|-c=y0S#d4l;WZ7+D_1t!&re>Ha z+gSM0HnPN>Akg-S`_h;Rgi&k`)+-2W4cPN}-V0yILumZK4)Ohn!nHd3O(Y#;?K+iw z7=g_A8Ok8CFO+*l5mI;vLg|ge?d=Iz>8&Ps5>Wfx2L|z3{{J0!1kb$%h5n;inMXn9 zQ8eqQ({G3-E2d)E9=P+jGvvhKBPbsBcAc z0DJxoVP6Ec)D3yhPL6*-O>l&s*bcb5so`;V>j^clRe25xy$^Y8goJ{a)udO@9Sed4d_G6_ct+rAWk8NPZw6Fyfg&vj*?u`1 zD7d`IGd_&ueCznX!1KU-kYS!&Nc)WRGn|Y*#p%QxEtAL9GSkwQ;vvsWub45D666`O zaBTFVF$btJ|0J=VluX!=N5;^G1m|k=jgmbLJ_K$+4y2!F?)3nN5aTEZxv|8%40r?F z)ER2h1FoHu1{TjSihd53RI10qFI^W@Ugya>h=Aux-rdQ5rbU0dCA)HqLk`+e z`vDS|)jI;lzhR9!z*+$y((T2)7VQeCo8BP-&Jimk-7aEKi~J#QLffnsHsq1jx9Ng2 z;37YR{8=zk4tF`SA$^Fs*TX!77=O>_bf>inTKx|KuvbFT(1--3Yl~+ZB)?Lm6(G+) z3)TmhcX((L#=i5=0O;&+DZi9m2LTK>=`sn-UP1;vGWvETI1?`N)61VzWaTI?ARE?) zm{)jM2a%rJrj%zSPbH=%lisncc6Bfg(j6(}j}E=Vhi=l)g4m$Krf(>+3WPhmZk~Dh zHRKoONZ*6Y7?-kRyBV+`8iLeicn*2luD4$qclL^I5a6qp=qMRbXLOF+4-I!^NUZ_9 zx^yzu7Uj~V8Wsq!-L$EMFgzR{;ixcmo4nQbqC4=$Bn=HPrG$b;Dctjoc4k7Tl5JyD zsjnX$6#xDzDn&+SJ$ovr#Doe`(+w2kQxHn}wN6VHSx_9w8t9laE+^^;gVC*!A=h^2 z9t=-~M{@gZuliVOf3l`xviyM#t=a~k*r$*J)>ijWcO$}u@` z*EGkbV>aSl&0j<;@rmX(0S?yTKhQu^H2Seh$AZ zC*Tig&XHHiJ(?$6KF!8dmq4a&h$8bxOIVQ#GFe{Zw-zBgktJht^atMzpQpp=m+`Xj z7qssZlZmU^bDkL*Bo<|vOdY0Nu|LjWH*_Ml`)h)hd}KHa9>Yf8SLkC%SA!3Stn|x@ zGVn*WFA}$jQSC7w=+L|zGIfEJnn1LK73Puc9J$|CWEr(Cm+0xY-HQun z5WY{?@be1dHO&oDPj1${OMnACh8{A2gHA^zf>E**!dNS<-|`e;6y%Tajfr(Xr5+FL{{@n7vJTm?5# zpt}5~{tw?BAJrA<1GjfIZAssoj-+eUuuCLg7Se94cUx26qhPEc9_X?*zFq`Rsp5BD zeSy+Hr9Ur;hw;;zGB;WSa&&LwFtES6m<9Sy-Ec@|tL3R)P|$K+ zBXx8ycgjM7@eA2SGL|E*|5ewieTLTZ$zjWMAz2{2VL^Rc8zKi^*$Yp_t^4LmY~@YE zE@Q`7bHDM0alc0vYled98kWNg)dHKe9DfF~qP-k`-|{L9!oQzj_?%SpA-=8}t(x-Cq2C z=yP=6xESV8&&gG_$7EVxnB*Kk23Sp`zdM%81}bqoDo~+!b6Ho$Z_iqvP-8&tfsS+B`dMMNz4&HhFZbaz7x7acB#iY z(5BtyWu8WDjPlH2E!w%;d%w!Uo2>3KWtrO`xQ}>Dk*8aJhmaGY-8$lkdA*ulR;+K3 zC{*CL2PrStXU&1W(bgB_sp9?X{f%qk{Rl zXP%QC!8~)rNRT24#-hA*mfmm!i^Cez@e*N@_EtD2(Cn{cpocpg#X}{Xb z-V>e-4|BVb*F1?jXRD&(5clDvw$9zABdNF+e}M$vG6RG!@qcIq8fYx##<)1at_d98Szpuh(KkOIqY4Qq%sZ?pbZ$Lvg`N_7Pjm#nxheBd zK=vm3-A7vjkKxbZCj)zxWeu^WdepiTUOyh*6&_w^g3~ZX8f+?M$9M!@UgN)S*r(XZ zb~X0-YJ#s3Uy19%zs}pl^J-<-ynsS#feFSr3Ui`gZVkBa1l~3V z@z40Vkg4R1HG`}l5AO~Sug{-LyqFu~btT#Tmyl`lscvJ>MkqgXAQ~t*0f{%J;c2M^ zwR(>=gRF6`HbK4S{Rd;E6%Ad8{jAJ?{IWk17u35#Dt-|KfYMXMN8+-gN@8}Wqk9|n z+PDJ0S!&S%&fPZpneaE^UG%z&DYU<~P~+DWMR(*nw+5nnbqvT4%!iMr$I>5U4qvqC zjKlr8^4!`+tS?b0j8FS>A4hMXTXOYv+ZsoQ#*|~2@&P5p1m~Zt&{yf!ZHT(w%1dbq z7_vqF5T$wNJi{sUM!-3ESz~%}Rq<<}>c^|ty~lP!NqvES2WN->NL!WyQ2iO<^K(Dd znqA$pS<`-IX{{*E*nDVEJOD@n7TQf^ zc1XuoE;zVQ(P~6~g7WGf_nz2V@f&sw_j5gZLo#^EJl( zIW5wfeQi+z6*ybaO3l}wXN{HyWN~G468m7;pUy*E0Kg}~1cL){aS2dO^n=PYm%Of~ zuB6U7x+eQlY`mZcP7XE}y&XrvHU}RSvx%*(A&-R{DT=Z1&EHz;Z>FEt6 z9IypirJ&W#qUYdItUTl__6^KP9A#%@uS^DJ)N|lglDq@VXjcOgG)0wARQD$G?ANj~w+g+HpK*O;Uo)w%0 zfQ9+W%Dg$K{9Pqux))E=8dYMvNd zGLTsVg;JAP%a+Vw1@t93dQ`AG)DFr4T}W_eTC0$f+a6%)ts+1}H&e~FPQ|S{W@h@2 z^E2QZ!{rPW9L8$U$!h5i%hsY{taN^Tj~fbB6%7{>j=aIiDIvmft$pxl>~gwa7H>Rj zfUd^0cu0)8U^CxcI>3P3johiWfs7$mAKG&b?V)@_Da<6O-WINI^s8&Ans1@)#3h;4 zgII<6v2-!5{5HzhTfkTnoh2E|HlEnibmuMJxp+n%Iw|1}-)n|rZ<-{4GrhOOJ61{M z@u+37#UI4&lHaYK60O)kI2)P{@u?hzKtXV-;5x)9^^j&+LSKV1At!fP+`I-uLTT2DypDH8laNXy1&AWHzBYulPoYRCgBS-;l^9Iy?$yqQ%)a##(Gku_%~F6qOe31f>fY zCWoKZ;+1KAsCYNH7wkAyXqyh4xs5=efpZAB%Cu$VV?`RnlX^s023qMtnFl;b$yj+_!6W>GU_TTp(p&><_>1wO*}uoS{7Jn{sbXMcy{N~@B% z{(YdB-Vzmr)pc=Zi*Qmz*n*A@;>T?jCo4V4KT>}u3kH%${6_9xi`I^nOuha}qzWt& zK9+zs#|iNux{G^URi0Je?k?^E65|vC~ESx|1v;^c$(#IY@)X zlPx^gG#G2G-Z70KTM8Mr1AL8J1RComr~}(v-cUA#r`L_)V3AFxgk0m3{gnc~-P5gE zOfx8fZ13T1HBhZkg%nOuHP7g5H`ZtDngffYaPsc ztek56O;{p|p5DgcP55fy;a`x{!66l}_u8eyILdIdc?8Fh&Q;Oow?XNFX9B9U7JTXA z0(H&0?)j#~4rPBHxKy^piG{~6+O8Y+Z=wR-!}iyu-~j{nwR4Dt#6G)h2wS;Mkn*3o zA&sNToZkYa&wP!g+KP}=*iBurGu)4S^i;(f=$~Y#OSZ5E29B}P1H;W8s9ZlRF5c*Y z$qmEef4Y}?Z2wM{>V9Sa8GuHImEEqb^=`|M9GDhn&wBqyrqZ)fpY!P81z2SKj6VHMt7CEYCHwqfsVSlJorO)T}Zh3aL2_k|~p4JOS?D zqDlfaZ7dOr1Az!nt+mSsJ8Ka)^xg}1WMg6v1T z?Fgp@&nej3E_vC4dU4bPhZ)F#`487Mm%WRaQWUF^0rZK9H~533 zO+|Gw?jFTseEXKV6ayNGGLf>$hvr7Y$_ZwF^Hc{rNDvTR^T5rZ&Md4Rh@vagk}Tn& zMQsIjBKbb>F}_V$kgr1`5Dh8IeDd4zch%m35ylLBvEe2*(_WMTu$;o`OIR($M6p^& zv{(2%6HG1Uqw|{z>*N3xvCVa9hG$Ib{71y9WH~o8*~&sJk10%uKM8IR)IsN*abet_vFd>T09zMpheT3eNX_| zV_=nYJ=bg*;nJn+1c{|a2#`}78!y_=TA!aA88#;6;D!|#c$d`6_t^zA=nO|)-%o2` z*!!r$6}&v$v8|#i;slv~#m*T{56lx&iz1zx1%=N7Zu+mFV#8S_Vv2T;i8Ih^!vTg0 z31{hG_sM$%S)bZGoI3g@koY2XJ;LnPOIbxxuKWcB&-`!ton_$g%!r#0J|4i%fN$$I zOEfs1&0t-1&7nJ*SnWW=uwT5Ja^Nag82H}NRZWc5V_MC=Y=EZPlV*N?sY}QVVv5Hl zDI{5?>{!>3P{?g$fh$0lGC_G~w#G7o>exq*2Iu?dZNNU&4zzFLK#!IPheP*gyQXRYZB+i%^BehIgJX17%cmVEyR*}h zSEP@gH+2$%Ad12n<9!MLtN;s{7GXVXdE{a@^MFYC*3=gAUKN&({8bW2j*kW90zp zy=!Y`9m0jEpN{WPK({S5lve7wTpkuR7Sd#!_;x;%-?Ixy(vT}nCWhgKIoe~n`U%zT z^V&zm-G<4gzEnV##4VQ&r3sJ1nOJG=-#?n3QAR{!6}w0c&ebcI`(?0VjUPs(cFVw( z>d9c0c;~772sJJQu;9uGm+xn&YReE)0u^Lz-y_yd_AYmEtfs*X&>!%N8LbM^TQU{7 zjJ?F3dV`lZ(-^|&AqW-ZHPOvXquACEn{J%5p(%^}<*vK9M{g^l3HNQY=vkPx7j0{O zOaU&3c9q;eR(s1;OR{)zi{Un?C8;t~#L3i`#AH@26(rw^93loS+nnjH0~Vn1GJIeo z&NCCyV$~Kgb~7SFK}2$SXsvX}PPq0HPXN>`1E~P5JZl>Etpj3MvQ-B2RS_*V|)b4U*%)S9bWK$x0n#)DN<{HAvE!_KB~M6BkcI zQ&_ZEpv9F?N3*%qMN7y$b4xP9cfe1Hy*nB*Ef^j#(dwzspG?nC;894CN3QaaGl91+ zD?@uRtm+_2nasfLR?LT@{%%DmiBjkaD#G)cI_+88c1xe4yG|9xXmP=Cv!9gpfTAib zLhbB_^au@vN2*Eb<~#goEV?nY9tU+KAwgk<1)>GV!6*1`TVYBy!WhhgNjxM9%CEP< z1prgHiNkDIunuo=do3_KKugqs#jY%SCM~jx!nyS`SI^3xV7n%Z;&qncHVdxKdjEO- zpFzkK+Y`g~I8qj{OZdwX({jH@g~tMq%)#x&pKO|_sAk1m=M+-s(=bNB(vj%&FKVl> zoE+8VmNrY8C+jW4Q32i`*7=BrwBZO~njt?HLxmp1_vj=vxB^6%3d%dD z)kwb|0!8z`f1pKjjRkn}d-&G2pW%jEhJgO^i z@;tExT0MC~Tg5!Cq~Y37xxK1s1%KJTnO8^FpvPdIMMSGcEX9|D;f|C>Yh4y~+c|^1 z^0!|njoK=!weW_d*R^`Z z16X)J1S3y>wm)iDZf;sv*!QB#-j@+mR>@urrZQ_~u&WU^XZ{$#*loCp>K(JA1?@_^ z7Nao;>Y-n>g$J6aPI_wzrQV7%TjdYMA6(OCX1S{A*x+%NrhXjLHm#?nZyO@IT|oqm zZOa)PHiC`MgsBn2gEb~I(18&ez0f&7&rj^NE`xs*Uwk%6phOsk^FZCxmXcWHvlG5 z_u42Xb;Ti{T*HF=9U?gWvHQ69$Q~m?3v_hk_$-~Mz;wrdBMV|d8Ql+m)Ag@6J}%$8 z5S=>&{(v7sXX*AD(iDF1JoU(8puvg-m&=0PgcLAREAmuX0j znHFx#dSKkT%pi~CA6&u3w;LxS1GZiN}Ix+3=rgz??}M}(iaU7NW3Ch86Zik8Slr5pO7Z9zqA8vV&AUx5#y)Aci;?LssyvR?FPQQKl$NsJg)kG8d- z%|lSnU7yV<9TqWWq>RMmOP&jJbInN#p&b7m){O=O;E&lFn*nVToj;EW|259**B?)e z)ZfpN8pZ9QC5+7KEx_RVDA}RqG{J!-CP0+R_}{~eIW<@q(qIFo*3;pwzXEH^|GPCZ z?en587yS_Q198YTUDpe46Bc(hh#niaDYi&s#F%O&@(+aMBYxMlt=?-M$~R|(+4vtc z<5F1!->e*Jt7WneffW}#r8mq!@o#LUbMj+>p8kcVTV~Yn8<&R6Mymt3*FYy5dZ6Kv zt-a2_V=q9+kX@6s4THf@eBT4~N!#vy+KkW|jl!2S^HI6oxZ^p zTd-MazLAU^WFY58uFJ_|#Tb)mh!qCLm1G==b$b5xd zbiZ^gXbP^HZGO?OFoh@8X7&eR+!v`fxFIqhYt!?QCTYYcyUA@)bK(%2oo3}1C=QVrZ$OD;gy%z6^RIs#9lAI(y z-D+3@i_P1~Q(sVV5ZHL9imw6vcUs%Htr~waxvw|_QmaGA*jY3_qvzFR=%mf+{qylSy zM01}fH+szGdp&RDG51mlno(qoT}|EcTD*5Mm3Hw0_;2qb%h1v?U)%E8sLM62ZCO#` z?_ahflljT6w$s&i*S7tsx4f0!cTzwD=8a?^`IU(JYn~&wOT+!*_QL)Py!XxQVe8{mu5+5+J4v01DnxAKzcF~sqpJVtL%y=kq zQSu0n#6OihO_T_=3TB=szrL2O;pEj*e1Fv_VuqK%iu6AjM*7A|;FV)IVIiH;`uy95 z6|#ll$dxd>@Ofc;wEcG}h#$du(){+9DyecN#hV+^a5QX6B-f*0O5vDsZXp<+Se!n$ zI=ma;vf%U57x1h2HtFN-9Q7F2Up9A*0g z27CpB7s$9cH{icD@IRgED*yiPCkV0u2Duj`cX1#5y5tV=a}d$ZdnOsa5hgC15j)A! zXAR#Lz8r?z~k^p+TUa2~C|xmTAj$^HO5bw%`GzOC`=oUd7+w7bI5_ z2BAh#7T<`{pe~=KKWj=c?Se;>*yJY)eLs>yJN`r&{U(6If-XrPCd-p_>4ymuF`4rk z)GReSzdqNaU`d~AQ{=g}N98r}vs2l%2)^z= zvC}pXU(7G2eSLWCF``7IMuD7HB=>O=ep_-UkuNOJEgnilEmY`FH0ZO=C97I%A~?(B zvz}ze1J;fQ9Q*g(@9=wI`QH7^ORpIKc&P>A%c089eWCi0RR6g^(t<(Sh^^*h1a-J@ zz$l3y^hUhx{5kznYLWhGoJ^lx5dORE@XylXi}(V*247bSih;)ewU}FY8b1HkVPODU zf(eA7t;btiZH7Za0roe>7VhA`s!ujJAZbA#ZP+Ha%4oxdeI|*)0dNyGZC*zMEQT}l zC~Kdm)Vj673`_rZ{7XH#O zARV)>$)L71-hH6=)I695wwm8`YKDFqNxt<9 zk17(f^(Z982gblapEI=og3>QJ6CEoNuSop+BnYny)v&Fvfl zb_SkLzf6xt%KvvlGIW<2?KH1(m7!8UZ<|tcSR~t2dlpgDdEd^FT}3H0b{o?sLBZrG zO0&b^@Oy@tlHIn2A#$)6cC1^zYhnAs%wFkW(_+wUr^jsNck+6ur&j4n8 zcL^o_@j9y5q-W9GtwY9^c2R4j)kCsX{rh=K{kVQ|o$)we-*+##dYf(EMCWvuUv(QU zz3w@i7x^;s@750-zPC(?QU_SP0f7;FKJYiYh3KVq)&5u>k|96H-r^w)xrCd=?~u8d z;VC2?Gb}%^Q-k&vR-8UQ&}M~!Rh4ev8pznB+G4Y?mzg*54VG(_`V_1RPIuB;SKS8%>TtTgYq5#Qiz@pf~Y_9?U&f(QNYBNEX0BQV(y{zB{|d zROO-Ts@_OSD>vA8sNC~hcpjOYZ~4n%pW^k35X#bRi;1@k%H-sm_o@+UZq)I z2tz*!WW!U|o|j&-Cd?)6vd=cVyNb+~)+H&6@Mc$fTJH+AxH?y_!B<|uhZP}RRwGY= z0-XwAX&g#nG^!+gt3`9szNgGs04 zN66h%n)qCUdKP|o@Xvq`MX)EMQw{(k`4Ts2f|D7oRTf<#?8*{a_e-hGkh6*W)6Jf) z!qmJJDZJiANo$yC^-7VKJ}J}5To0z5r6U%0btYy+TtzokXKmxUVQ>Um9g|P)o#niia-(BkaoTlyN<_GTfM_XKor&Za)?QiBXg) zEId-iWLopk8Je2AesYrz3mnr`X@|3R=^GZFo`cdmV=if0>I$_yhHTU)T?k%a@DYT+5!^CEKSW!1i4h$Z~ zprPo{V;GPtRB3X2D7XSBPL}#zNRovXh}^~mEl+LV@Kg;u^ap0IQxB|b13h&dfMM#b z?rWi&SPoAe3I=6!4Y@;^Gu}gf6oq|XL0ol4@+a4Ryk_8sQnCLJ*iOCDByo8wczT+y zt3oDE*bDZva6dL_T5SNmt*r&7$g4+D>iZokUK4>dbKyx%W8tEr|@m_@n(=<86 zJlKqVE{gcRfVeK!nh|W7k85iklZ1Fx8S590?OCbMHCR6)nMEyO&>o(AB$sJ#?lV`G zn$oWUTX2k*c&c_rn}cQ{X(Y4F*5))a6jlmR(?xQwU>)Y-FU!^d7}_S!P%j8Xn>Yn> z({+?xQ2E*V4QDH}*;hwWn$5_toG=~GSJPBi?JCK}D-(HRzTWX)l?@Lvd**&# zW`|LHuBW7obR1yg`H%EDks=S72~R9)h?9Nvk*04e;)Bb;k=rJAKGhES>NzgJVyQ7v zSr(SV-+(~#qU?<;L|5(2Fm@aRYV-=6mRADEqBP>}V<79a}nt;q~6)DtD@tDmW$SZ}mqqLlatlc$m`5veuZISr(4nTZaIv*u$dXi&$(t7N4PfG~^AN9i^Zp=|UHT*JhNI5>DbYcaKIZ z7r`8i=il6V;wD=HUjjC=1HNh)TvLs959`r>}R*b+36)&tWdpD`ZQjZsr+>t14_oV9$h?JiV-R2%o}laoX7`Z(B!)t4+vu z$&}n}{J~|nn<|Nf@c)`t{%<7+Kmn}d-~8LeYA8je8gs9fBryEnO*%Yf>wP$+PaI7+ zWEVDj+sXYhP8o9Z2?&MG@$cKqSd0H!Sz8KPX!F6=1+i-gy4wnhE76E8Q}sym3=ISxDo7T40H6`J_V zd7CtWUuoA<5Ldb$^i0@Q*O~^@z9F0Re4DF_Vs`MBcNw>d5X)w)(=XAZ` z0n-7p7z+x{*1&blrugj3fN~@qcoq>>E`rK}DC#l)kv=5;8+2JJwYRVdD6pqgs%0~* ztBoUHow-k2h(IsflM`TMwr-ooDtQ@!IttCEngS*bxIJkP6co?*O_h?gaU`! zEg_NSjPpiP(RC`*Umq@*_QkW z44u*~cA;{FqUE*P%1SQk@^*|8@yPG4KOhDM=zxnk=wvy0j1bFjq07LBJL6?O%gzTI z^VfyuyV^@~#cUFY=BM$<_bJbe!E4b|PvXKE5vLW@c;5J`u*Rd^e93Ifrb;!}3mm}; zj;_t@u5dNbO`PsP1>csF%4r2I!&c+^k~Qo~-M52!mrfql);)lvYxxw$gwR%&_Kvxw*(QGo* zQ?wjnoBJ8M&MNW1y{>9YfUducm|j^pzQj2NWYWa5qrd3Ru3d|pA;Z3 zbzs=DocBe_x^_5NrTCmB?7Il}M{b^x_6-YB3lO#;k>R>*;~Qug z*f_9#V|4SdXh>w9ZwcyF(Cdgh4PuCOt)5(c z6y*kW*>s*!R>cDa7;M?R)r(;84ZdVy$QPT!o3>*p*hMj0TMGbJzW`fH4cRDa*Dm?= z;GTYdYvG}^G3W3P6e5^|lh`fbC`Q`+Gu3$hdM4y5_9dX=3wjB=?d3&|FPaZe1_Q18 z?$uSkV=9L)0~2o%eYvNn+cO|-SmbPRCA+lr8<-pVle#=OsQQxi^W^3onM*+)tQD9IG{P3n2y@CMaKV{nCAwc`Zrd4bZH^*89c?SyUd)yEFB9v) z5?DtBa;`T9XdoAlHN>28^PR|lK4hNOt)dZI9Nr-kqhz1Tmff|#wq2e-Lx|e{Xb!6emXA9 z6o|BPew+`1>wIuI1)?gFEN_aekjsmO^H_O3i4f3LHx)jva>ZYV5gq(RJ?7MzZ zp1=2(aqQP0ZP~YJoVNF(+KJ(eUE+yDrH(xL83*=NTq7WOTZ1V<_+*Ny%mB94hsF(@E$roZQ z=4DIG8A}t9JVcve%U-7se0uAn%xSm42{Xr?iY8)1UN17FS)h2T|16jvw7i7^wk)urM0n0#kQ&g{H_V=P0>CV1tfOD+rS6UW zYk!C!p&xWMmemxnOd|!mrEN=$6&0{e7ze-2e#_S77e?nR=f(S&NS!y2)g+Q}S&bC% z(b+!ch?m3qR(5XK!&KUSHmfP1SmEt$b8YHfSme)@Jw2P$>lQcn^(1TBE36h(VQr~$ zg;l8{mqM*)`*d@U1Q%(8BTvCmq+eMV%~bbOZKJcg1~RCu3r=!3wFf*Cj^2{XTQ}HL z-~BiV{9J+%$S^d_HPoSjY1-l$2I1=$W;w?%1Jnl@mWYNR;VhWpc#5AzsO0A_|^}p_PTno2{c!p?CWV6twGy#2iBUxzH zm)ejU9Y&rEjXi0>-mrpL0n67pU`@H_>cs#UJsWhER%DaJB^X{)7`EJ-aLR{?4TsU%HAFy{y)(Q;7@`s0!q2{XbPfTQ zC}CwBbMD@K+yz5Ku71n~b!$(Z))`Mb-88!U{S>B|qW`AAlbgPFZzjXq9VE6{SW>QE z-cIHiHdKWoWEw~>;@-16%o{$(ax{~ROq~5^%!JLDqy2}h6kTRGir9Ek@kgm-2k8EoWBdfP8#+1hPE;!lkwd4d#ZHWI**+ty}FCYUL) zp@vO-ccMTL*=7ar5qbg$|& zN~F=aB}Uq5g>$L$8gtCadD@vDI@1lsp{}6sCZ>&p%XpdiDeZaU9dT8A5(kGbxb3dd z(5TjeLpefkJA>Om9zGS$gVUzb&?67eHua9LBvxkL@bgOIbXUsHHyI0a~CqXiJ48KAwKfO4Wsg29b)+i_NGn-OWh6dR~UWazCl@Uy$K>!ez2 zkmbJi5>7iWEPP3R-`Q%F*U!$ z6-Ku`Ss#c-WFTeIJ?fR?;o}}oqrkJ}P4}G&ouaBZL&2unJh@+&7w^mibCFnoUA`g! z%-`~B+AICafpEt|v7MF$Iu`3;#$|yi-XF=S46GJM{IAwf)$Z!eGd6B=VRKTn>=|bM zPj6Qxfmo2Kkw12r)jtt4#E+pmuqct!c+3D$M^pLKaqPofX;Hz4IY3FcqWVl8dwTVjQpRz zH7jMcSg^50>^aP~4b{)=*x=LcbM07WB`w3;)b95*LQL&`G%$N8d446j^6fNBXCr^C z*4cA$D6@BRjLiV=5L_DpsE(7*?^AS5uY&I?K75GHKBQ2EEqFAt>?0CPUReeV z*0ke=_y&V6S^Km?g+u^g_dw+l;g-}&{!t-KD!Ab_{g54Z`>iG*_>hsGQkEb}dH zF%O#y%8D{>8~<2m>d9ZoGN13kvBKUSUciszYyH0BNhB$spTQZ3fKKI@U*l*5xA0vj zth#=}3O^-uAHoB-Zc5SG^mkuCFTe8GKXz6kdlPrXUkGAF_rrtm!cjKrARL)cW})7a zg7Yfft;M`XHi5IMJ%_gWM82CLN4&%Ld$5uFwsaqVjBgk}oqE)qHhfFy5FFmB`n~x> zySR9_F>dT~@3do@xPe@&`cv({)Gfl5c;1UK9)Jhn1-(;iLphb6HU>A& zC2&@i=M}5YFr(l^E*T_&w~2c=XgU+sxqiz7(qm^Iqv!D`3gA;3oSZ)q^RnNjcNlDLR_C)@)i138C{{T%AhR)D_C=|a^&+p7D z)fS99N6bnSlCqNB0|hQg9X>rL2TVdN{n>cHmjxr@8;gOQ93c~xw@CBan{pDh=L zmUhX;w1^h1O}hkHGNvh^Hi8Z&f!ezka&W%r(~~M}n{T<$wlHy3i+XNZ(sq0zZi_Ga zjvGSbL#3pcp<mvIzD zVLqiqq>Q6aF*>lfVgo!i*?(+`sDT4_vh)9aml02|$xQ}xaLE&sljYxqP z+t{rhcOX4H=}lWFDQY+vCC(vMm^)9$+a5txyn!#>w|`|!)ZcJ2jS?fd|NJ!+(~G^y zs$tFSS+S9NJ8`?L*vZAK8aNboebp;w0z`|J(w?Mox22bInPO3LGahYCYs1_MjnLHi zMDKJ;EwmfPCfPh~A26{;2WSHtN|PJfE^{yO(?4W7B{?$xKj|U1V{fsmS<}hkl{3j5 zxLtNUqqm^7fGV^-KxeiV0a~&WO4!}sM_&Mj!(6HikpM@Q(A#jgA_FuzbxeFDR|-UB z*W#l@Wu(AvyHrtGFKM<2M@6_jY_rrhdu%5nDeQm_0WIg}#z|GB-?R@|+~ z2u)2MJ2pwItsH9YCRR@`iF7g1+apDzrylBykJo#cbLBM}4>=x2&E#Ql$*tMZY>3K& zY2kLx{rY5fNjMkIi>@nYQU}0dlnE43HpnF(a|iy&KZEDBBX=)@cn;ay7IWEd@o_y! zRk5RSI$oH2<9d9igoq{r4$9~~A(qWzpmJ$Vb4V6~1Kv=N&?(K^SHits?Nb%>P%vR3 zvhQ@}g581>sfx*JLWn_wOVYl-G!a#95ds8|Vp`2!flOG!NT&sU76-;AP26(6Vf&`Wf~;w+=|JE_|F zibfjUKqx|f0P_soJ5~rFe5vtSyojT$DS%9MGYDH|Lmjwvs;n$B3pR|(G*hhRI4=B5 zS;-Jod%86j$^A-Tg`lO zzq=ZP&E8-%%3rcQN5>Li2BDOnGIa}5d@>&LHL&1R$q@|QqNV6z9K1f^e zA8et?PPu*vb?Zn}JcLNH=TkZ65j3GL0i_Ax99?vjTdvrE^ls6^lakD1qp}+%7D?A} z$y^%3uXTwiyketB_b522M54I;%aP&(WI^*+!C?`G3yF@7STP=sO-R8)*+s{BI#v#b zQ|V~hN_lE73!U94v`D&UB`4Al{%6^HSaRh?fxA0#abewhw%JTtx@ZH(WRjs$Q}%bq z#p~S-B(wDuoD~4ZV}nl*!hpja-_9vH!%DKRPuBj;u*i~n0`;!qno^E31fI@vd z5vhqV3ML$_-FsKql3OwAF(&}~#%n1HR zeu*H#Q8qW*2Tb5m1DG5vq7Yq3c1^dv@lX-74gm=TRYQPiok-ptS7Q;*im|csr%yI# zmSf=zU@C{S@;9@oLvQ$RjwiXRrH?TI4430rdXbDa?CvBF0%Az1v6TFOzn9zUuC8I) zLM?KE`^o&uKd?`h`bU#djKxR~DCW~kEjmY(_vU0zd8e9>+Lyf&#{6lemV8pz6Px^( zJ()_0kem{{wgv zE&!Io!;?KdL&P#Tz@GB_W|_9Y4K_vu+1y#!!@#Ztjd@#hFXgLosqXym>(;d9Gs7Fe z?%!2-!S#a1tl2J^492o_>==?x6cn5*9!)E$I;9*;lKiEtV$K%dK8}ao97f;+eJ{Jp zM(3NO-PPcfO3-p4Qn*KS{B(Yd3Lm;AGOl#Ssw`AW3>9T=-z}=16ySw)xNI|91?pR{ zIEWUZe_6J0GHovwQD5aYC#yP`)`P|ALM10lS381j4#CUDe9TU3qBZ$XwhY{zyzRb% zPL13K9=>wr zVdkhx+Si&>&c7M*M9`(%8QA2fdc}mG&g~>alB&*6zhsdXQFOY< z3`Izdc__=Es#>y!Jh)-(^5P(fbvpDPVp6B{r`I31mt zIStfsJIa_j`Ia%!5ydKpajc=o>mW(TXv7B>$%4#^HF%8mMjK8*X8DU6+^~4& zCK^+16@fF+qA5?W#^V&$QHY1i@=ov0t&_o+V3V-!Sy zaqgc7>1;@dgEga9!9BdSS*BzXgP-Sp_Odp!feCphJ!`)S?-*GD3Sn? zHpA%5QdxvkrRx0T$)=17NYxeKv2LVWY=JH7u8 zRmO>P;RGYJW36m=DI>m6Rt-qX261h{Hc@GQvRhcjumEN!RE zD^|}+mtqmJg8QioUqUL$XkpWFK>PL$@xY$;KDyR<4;ItganZ=cCgbRf-ur-`5+o2s zbbfs3!sTrxzM;M+Hl?K~lrXTa@-XS#HMEItvd+{fpY*?;O@`aTv_OXMZ$SC-HVoWn zO&aajTi9Ai75|N5D*R>X@|JNcsf8i@l;7ebMdeI6Fda=oa53%(eGEqh=>E~7%?-@ir z1F~h;WJ6cMW*(9mZsWfDQ=-3!RE#Fpwvg|-d|dJfkDvzIzI+S`9%nx7pxONAb48t* z*p(A2L5V})5;oN^yfjtW|X6(^@n%Hl!j4WQ$h$YTQN!_*2Vx=G;h|79<>$rR>~y zzn?m?yiQR**1*zCdwzs+I7`IqHV@yqSB6|yYp-pjd*+cJ4Z#ipxO{Lq2d+Alvy9zT zZ>|l?G;rV=oh z{ww(_pTDO!#icarFnt#F2%Tp)|L=^y;gL+*YjgodkRFlbms?javTQ{mmUCiPmS8u8 zJGX~@eWGFsX%F{+QSY1$q)YVe&jHfRG;68LQO^jVG06LzFk$u5V>!^xRTn-o*TICu z>7*VTf8XBHWPYm_?3qcz&oPNX=edD}s}6u%kP~VHqSw&CSJ&{z#D@Vw&P(3SJ#$EV z(X-Key0w=1&FP}=vv6+x2P~xn=n9B*t?wW<8Yfp}u-j$?kUj9hwvol^^^T*d$bBaA z>o3PIR+d9#0d6aHq0fg0G%Rv_vrg1GGk`Uc@3X^Ict7m9_OG#{oTEl#vq`kM)yin3 zM^mi%Rlub4rrInf$J>uS6AKk~K`-sfbyZ;4_H`TGGQ2w4{=872!{yXAEz~9Zyw_X%C=5ua(Bp>|OAl7AjJ z0DHcNrKBQqana{<=$%^LqdN~t@59?}AMcN6+j(3zGcB(BOWtQNRawew=wBxnKQZ!S zKMi__ha{SJVK~oVrS1<7u%;e#ZLmJ zINOi^Fc{f>NTSb5()2)udVVmWK9Ur|Pz=@Hw~4h%Z)F*;QRXR|qqqc+t8_jedRGU+ zZgoau3;|u_TSZ8 zYizF^o#UL@&$P&hRi>B(n6VaErV}`DkXBTQfLU!Kq#*wUy4+y(>i>Z0M~i~OIeub% z%24hxLEgI5mYZs&c~3<><5bHgsVg{T6molbNNjlRHn#^3fAACYjb~-RMI?y`;195n z1{oT)LJ!K zsJUJ_{L+G(?c(_K&{$>2N7F;O_5Y%gJLD$w2X+5@3;zn-z6`$K>hJZ_%Qldchnm>; zSsb<(nWpDj2NOBZ?lzy=#G(VCbbc#|BB}B&S_jU*Od8mm-kOd6Yy&?#8^UdmpAOvC zZZccKxp>w75kicl#){z!crk-8+ThIlHX{HsmvrT z{!SF4%9^o+z;$W3l-XjDlNmoLiRj_Vklhci!q8+5Ea!ce}UF!w3-kUD#Sm-O7hLN&rd z`QKO5JY1-+%v{p;>k} zHFEv1kvgvwG=sazE{BVqx2a8AknG2?Df}|1vu!1?_7;-o&r|sLe#IR99p~&fwEvM` z7enJQa$Di|6mWA4^%g=*&Q?gesGro0WX`Eq9@gsHi~AfHBJ)tsFKv@J(cU{gq_OGt z&briIB7o_|0@p_7Xr*7l0JwdKckCJ8S~FlHkrZaOYft4bw__hif53eMD6;@3QkPFl74pZN4)%KfpSKly8#Irle#5p$%HYA^%} zk8t)qao(oZKP~##VXEQy^JV=vE6;PpJI>+ zm33#+&uwI~Gv@0YYtn`j;3OpQDLMVua;JejSMI@$NN z<@s-PR%=I&!a0GGB67ZR{dM%6CyEw&Ezc6^zh!NGohzmG(sdrW*$=`ye@1ht@QJw+ zTkh{Md9R@snL(T9*0}|yl%VC+_A%Fx;iE7fLf*9(AB5QqKlEfm-9mzd=1#>r2L4JZ+ttup*+iLXcE%C<0 z`iT1Xn6AAQ=)MGmEi@SqSdX=K{hddMBXol91t<5uzo8u3I@Ivb22gb9!ePNUg9616 z`Q2=W#64!;@pmEoC<-;3X-oVd=059q_YOO4w?r}4Yibfwse%PFh%*949nlvarG6UO zMt)Dv7@r9UCK3SA9q-_=*z!1KmEeK#d%wEmfmVmMLf(3C zDmRSAN7Jj8Dq`&9A05=4u650pfJY9PoE+6_ zsJ}Z)1v(suLcFsf)an?2r2K^?*LShaQUHxQQ*f>o@wPCYj3ccUoD^sHENSqYHCx2r&XTU9k#z5|&NLs>`I zzZpgerbqSC%L+`C*OL-O(zZNB`={lgI`_Zd{mO|lx4!zf#ouInXN@A4B8^r9+&|-% z%W_lE_T^lbj$pV+UG*D_`taYOCpqOn&hN922WsQ5e>77qdyS6eY?cP6wUL?zszFQU ze4X^WQIyyw%J0sBM!OYl6;ze|5s}iySN2RymK_k^OEIV>r*14bn9ZYn1nK=im?YI1 zh9(7dF(yK=!|4vR0Hh_Dn9yDhB2{pU>Jm3}81QU4es_inVyLWB4&|KI!`j(+C>TXn z3CS61S3-Nja3foWw}s8aZ}6#6LHyr_f283lLM@2#&uj6}n+uh_?k{EF9{BD(Amtv* z*H7IJrQM#CZO2;e`&&(|s0M}om5#00R2acPYTT{aoXF|%>p6>X26G2ulRAd)0a7-j zO$Mq7+M@m5z(!O;Gx2z#tA^ptZ)lm|B`-eAUzFqP7t0h$5@g*bygf&}V>P)4Chq_w z+Kw;q;5#xgZt;4&k@p3BjvxrjeoSL(a@auu8XDrW%!=^der}NMo9lfzkoqQDb7=#N zgNJXS^#hrlU5mB%sqnRPW6snJ!i)GJ!hM$SnTI}!O&qY71VDd6dX)R#gG3Ds)(EGB z`^z$H?VLvQu>?7;93xq3SQ(D60gD68dR?%bkaT8kr40;>)2X73jDdj(1~o9u=#I*( zhQ`Di+)zc;kXY!_%{>fO9ZoAMWQk<#JTRi`ZeVGZO|idJS;*-P!`Q2BPoBfI^hdv@|;M&}>w`wbpHQ)%A;}ES!^%_6yDIuxmSL zLO%Be(BA{|m2~&$lBz8#AVo|#uy%^Y3a!zAQ0tXH%gPh(2v0<)k zH;}cuvcjS(0p~(Evoo|Ecfbpoi<0B=Yo~FaR3=6SSjG6-In{0CWIkDc6-{3z5x%am z8{6BE9>x$-eEStb(4EqYoHQ8iFLVt9yN$Z%1rg`IqeNpzNHzfi;?5>V5GGiaAjU37 zn_wtzW4a7jbMoI@$3Jo+Hq2ir@U8Qua7sG4a}~aH`>+n#i~tg6pCR13FQ zPB1@u*+TG!_y?Qu5(!Ib3NFXR&$W7)@}fyW0qRV2eRvs|97*1weNl@IQDHCl#cZ5m zW;bDR_JNwna-}u6iYn;7_Nq$5Q)38C;5Qoi79neu$-tD@ilEeW%MOu@-}!*Dt}saPH2KO-62L>UDeY z(%!Gc>IHJ$$)$LN&HC#e20*p}a++@1l0h%ol(||aqs)@*+zJAl2fV4z<@8pea9;;( zw0^k<5gy@vAC|{5Hi1OR?d#jv&HZhb3I=sKG_p!i-&R>|J#(|>ge0f>O7$1I#Wi@7 zw7vaQX8xz;;P<;qnx=}P3=q$|Njor-i& zH}#OLPr~uy4s6z0k0k}89_RjkZRAYP(8{_H??@$wA1{e|Kc8V> zUKLCJL?lvah!UpQO^L{?1GO)`Fr=tJjMIj(CV8zoKclX2gXrQOeeP5R-8hxS0+`cb zn8vb$nj!u-)I`Vm?_VA3q>x#-vmA`a;urglE@Tj<$BbJq%PsDD-c$_M2adE7tdG{D zSTqTi{iH|L(hTTroz(jGSXFzw#!KO_>hSb7lBb*8{Y|K137Y=ta@ypSu|--ij%B(M zY#>-3YYHB-)YOyUQrHWwC>9!HMeS~Ox@qW< z{bkZOvjUJf-{%*{f{j!UeqrGEnh$m(>nY&%Kk@5UI~naeSOLG?cE!Hg8=27!eEYZT6~b43-f6N+J8 zq>_CSkD3oy_+Z{!RG{q5w9crrk*Z+NZ-46RLhYaP&uvCly%hLU8M_6B{e(Fc)+6>Vchb8}3C5DtA^0v@PJD#%jwtjU+GzN&cUezz_3l3yNcv#5^7` z^I6~1tg=$dEc%gPmMu&>a5`QO*pFQQv-1SFlzfzMSP@dUX!ygihS=~=si7$ngROKF@eE41?*A=y9|Y8QwAOjo_6324LEj= z7(et>{4|RTXjoGugjlD&GgrNnrIgF`o^H(t&h1K|=n3(k^JCFt9urW5)5HZ>hrJ{B zRHb!67I~`++*kRr(<7O$YsBdx0LDASE5T#&V^11Dq5B0zsDW?Iy-;uEf1bny*Za=j zsdK8NGSZ}t|HDtLe@PxQmI5=mK3Ieq__mz2rccDLn{gkBemop%VCRY*%w^RR>XdVT z4N&x&t67glkDW61Ffr^P@{dSrn5;}c@=dVvTcX#%}NO;T+*ajD`T8Qo{u|n_E|e;xpFrGj4!BUh1gLK>5%F=znmY@?v%sA zeKI-Lh)}}GzA93k0Cfi@9@JZT#D1&p?{??IerxwN3OvS{#T}Oc)49cpveoqD!K^u! z%`V*_Fase$rJYM#xJlVnL5d+=1MzR;QB$e<&Ba^g#d?Ln0mgKrhs{w@>#TOxIQ!w< zGrH0{$D34oFcg}nU!GSxlZt7dD0Z*Gu#nlaz;-BsdT=dq3I@}_?<%mc>M#1AXFaeE zYQ{W7DK-xGr#{7;(NJojwQnHpISi&=qyhcpH+~wDvJ9M`ACzy==;x7_9asZ4qaI9w zAH{>Ns({}0JqZI8hb+tWhEP&*8KxC+r=_TE;VHLId5inH8gt0mU*8VTvJ52siU-SM>heJvUa#w+Q@fG>rtdf$fMp(_`~|uW&&^ zlSXfE?wmH~m!^aII|+TJVOLvU1?VdtLL1~#8hmnM5ZY4uSNtD0XP`-$mJ(y|K&rg3 zqM+g`Hrw3Mmd1P=euHn)R41L3DEN#0$4=;tuNiH;+OAzSIc(%~deJvf8yK@zd2;dy z%NX9avWzejHb}Ks(4IDFZ~kwP!H2oCnpBwTT8$QpofEc z1tuqk;gJ+LdsJXHjb5nI4Z;ct+5R!cDSA;=+^o{BWjeq-muk{oJLQVXBV)G=ez-c!W35h1MJ#)YoA9uc1t&;d1c4jCV7x3}larP))- zf4hI#r;m04HsWEGv3;Umq1vN_LQx(Am<6sNfk+kM823eWb^S^f#@;WhTB8Ek;ybDv zRJTZ`n#+}5-+o(qp3n(Q5B0?&tc!PMyTagC&3HXRKW>Ff|MOH`GZ(-uq0p+Ig|K=9 z7rf?pB<~!T7;Yp9s$;y;(wNYqMMYrwm%{{M`xOCkHLnN z^y>_hr#YmgKzB^_Ep^5Vuo=|=tvu(YP;KNuS9wRo=Q7hH+0GIZU~P6+_WvwxexU0P zoZo`CmroAc`~<8kb+PnH3TV#?73y_d=$hjZ@i`7d%|(!&_=b+=qn19FITn%-8gTf? zt$(oKFXWoVV2{2R>iv*KTQ1-HAs7yvHUS2x4fW(IVg@`uU@nb08or>z1P-i(notie z!<}$o`Xx1q-2OcY=S8mITjUle;y}JW0Zc45v-}78lTQGvH+*?2Asqbv)D6!ItuOQ5 z7bjR2$kKtVr;Lm4AgD@%z5>hz7gP30PmZOb@<9O%6(RMk{Hf(&Vw=P2xJ0G5Ppt*+gL{@+{u=2B>%$d}+>sPYyqVZr(6jcskC&1BZgHXT2gOK$xaZ3}~c}%*>J@OO|NG0eLbiTUN5h_5tH~ z$^dQSl!;QHei|kmvS6VWx~BBJ9&LO}ED?H*%5y99FoYne3{nUJ4UAnmF(*sech&qX^BXlHYO%o z?*_}XL!u#eAXua8k(p#oBCS!qL=ZpW2AUq3n#Dt#S)vsW;N&~6JuM<2?l{a8<{}A2 zTyncc&0@jsMt#I1o8~DW#e5bpfBWL5;xCy)`nG9Stj;Sd)3`1f@}sEX4Yy%o@@A?Y7%bf>TAD-ea$Lc-PCBN(EskWn^s>=e;kzb_kcOu-Z8 zoAO1K8w2IwgVP)DeP`h97b@0319HcFVA}{ z{zOoK6uhl8=5(z$o2OrwL=jkM*t()6d^Blw8TiyD2?m2X8}K7-vrk)>f`ub*{>c8G z_}-o`cm#l)1NxtNan3DEhDv72&*3p);oHgH)_?Ia1`2ibOu2kI(j@C%1sg%5d&o+= z>5-K=XJ|W1C7f`3k_s~&ZxE!v7T8M;C$<19z|Gt$MxYh>peDn$$xjxS2a(sCp#k>;g>^S?-KeD9#YOt^N6aN% zY)Z`1$Sx+AT{aBu$1oNuqtkemZ(jtpEBSqLS1sHFA72Ed?79p!IkCilj<~8nMOe@E z@-R%Ijx97e;1M(0UReHFrULZDZI2W*Ds~3%{)2v-J{P<(=MD9_WZS;e%foQC00UW` zCFZ5t37~DJk*k!t)*6#71Ma`cX};>ms>dlWR|oXYX;YoqUS(+!ED9NK3^mF<1&{w( z$w>_9aTKm#+i`c`cQgAdw3cTx6U@%+-eJIWjqIH!a;;SZ@-}5 z?)zdO?Tv-!tlrG9b-{0FtgkxXmhD(WYr$$l*w#!n+5AO8Y+8cKk149@-?es?M#_UV z(J2XPzqBU@g#Js{|LYKd?`b0@3(j(;+LNg)5Z#tg4cRqpZklY53ftpIx|4v6N`Lvl z!Ltv=XmxBYGhK*P8wSLmF#7s(&#&MF=UC?46}6W?Qg!Fc(Hovrylt76Hm?F^F4hTg|xC*#bWhR#4| z1e{1TV??*Ou7AN|+@S}he>;NU;cy5S#j;ZjO}NdmcEEW{7)Phh7e$B9C! zMYacI#}%Zmr}g!X(8$7yaqyv9YGd`SeB9fK* z#1_!y(J|~Zc0b@NP7R970t$Tug&0Z(;x%QfseP}i-qPP#B$@PHx^5BNze$z%-=6;) zkjs+MypKzyPhEau6i}eHSKZ%IEV#9Wfl_J>H`UvXW=^!y+<8Xltl<6{h>PHtTg1U; zc3G`0@7}HWNH=-nX^c8_pp9{spCQ>OGaBMPjS>Y%tAvCq_~KB ziDOERI2TPQmhl96YIy@o_h`$Bz-bsF7^-Vs>msg4&NQ()7pu0{ehh7>{iA2U&AEa4fIrBM;x@ z4pnVqzYRX<`Q-I?!6^;-R2F!NMcbqKV+wJ{R2jJYm5)g*Y_!iFtNf69D*{aC)E%Od@?%p-Z#D&DZd8kKP2A=?Nz%XuDaJj z8W7Pkj7D++wfo`sT;fzg)A$i4S0S|tn?cshKu_6cqdwW^ZvWLO84~=g7W+ChfLwwg zU^5m)M3h*HWO6#@Nwsn-5Qd+vyoVW0-bcj!PO7&tXi-2!h(%GR!D&)EE&o};td>*y z@?Qyhb;)c*;8Q05n@G5Vh!V?@jR(Aa9exf^Wj;7KcrQ4twMF8=aR0V7c9HCoUP77@_rz;ehRXbHAUQ<7bh zN6U)ejt+>f(Sio7!j**c?Q6oge)Tku$5Y^Y?rU9x8zcS&<03>~+QE_{PZ6v}b8dwt zn*)criR-I&-s;DTUMz1Kpgu?V z#5F1gSaq58#a5S2_7t<%RP$ZhjTZP@`2Mg*Kv`nOX@XUs0}VpiY$$9oTF_1w;c0tW zc?=`9QUg0Y^| z9SP_UA4FJ&d<4G^C+NaxGP?L-b*h+k=2XaH30cm`+bitEcCUrf6Q(c41f6>Lw#{}I2d%6Q()wPOLRWNlVNgh<+>lz(cSdxEPgwoP;})=fd5P2& zommvDNTyb-=$Sy}kCK#c;TY==Wd(+8b<`@EO~DQqVCGFcN|l^a>N{1)Dcc?O(F|`V zH=o(Z)y+A(&@-qweOH1G9R3rd{Iu^VKCrM@Zprc)x!@(Z!zi-H-fctenDvQjhHiF- zF(xE3&!C+x+<)L0O&jNt=;zC>H^`YM!1{WYLRWakI5^}mJFGzOcM(J6)6-JiUcP8{ zP^^B9j_Q?djcl6wy=^Il6u*Y8FPx}i9JNw{*^sMI;T+^F_YwL0dE|dCUw3sc>euM1 z3T%sIKV{XnrI{O}-3_UmG81eHJ;F)RG{?b> z42apr7bnep%vLX2NWHeLjY6YV6pV%S$i2F&8Kqzd6f>&rQq)$!L3fWl95(pX8)hwa zAb)AL2a;?|UYwi9pR>LpXYS$o=HjNEKYOMe{oxh976Yn609j3xr*6iRYrhM`McWnn^O5BTN%xdU4sk{q z;o;sBg*@j(E`7V&`|k|52dZ=eU2_PixfULEzYVP4hD^$Ok~L_rv$w)}xwz0%ZWi)y z@v@SPXOsdv!M{BkZ)tI?~(j6_wSrK^*?oO{CiQA=YoQ&6 z!l0te2MiYu_zWXixE{_7+)0E}@`j6jS|_f44PVI{1+lt~!j`K19tr%d~LPikVVHnhb>0+)nH@i=bt z?Cw6S{@;b6A;J7@Wo^=PY@zRrXs5j^_*M4|zX8m4-E$jvrdG8BX6c@8G4l>$(N64m zy-Ss)F9=cO-3#<%4Y_yGmz95~j@LcKR|6SXR|!1(qS*0+VXIsAg++lO!F+Fp4Zant zTe$ziF`5?k1NY&I_NuzA{2cHaDVVL_D#HPN1U_5#>#$ zc(P=_WOg!{EH|DvW@EXG?|jN>!(<1}d`@cxZ%KF|Qb6|)i|pUQPk|h|8a9QK;aooa z3p0)w7t8BN*36$MJ&|PA2S0-W&$tY)wv)t(+<66C7Mr0fC>Rg6se^(;X4KwiVYL|Z z9nlN)Rd}j*Fget34k1JALWqz9Ggjyp5w!&Khub8KNHXia zpTP*uToPDU^fw_QjQvFv8ujap_Y?>rPN!$g8ME|FxNtE)=%gQ4ID0!Qgf6FgM?^o< z7g^pc;76pO-*!f zU1-cro!m@7F}N1BQP-zr!-1&U^~txX__H)~-Cma2c6WlB+AbHu^BvbfPE}8gq{+O1 z3GF51@Z55xznc+&I;aFOcs($MYrQnF5SUsI!@hELv>3Ib)?Cr3JX(+;bQ}&5Sl)_T zslDD0AX?wFKRCpW`;mok{62&E+I2GXGJY^_cVz3u`#Xz9ImEBrYT%xW_V2u6s>bu% zwT!MWS*sc+#S;XGAkKhs^M*%0`y-b05cdyPvmj=TLfEJ?kUk zqg_i@j!LM}_E)dwgHB*d#A7Pg1ivM$f z+N`Zu%2Q7Wa?^Smnb&wWg)`MT5Qq4D(g20#cQqeB^FF`;A1Id(GDCB!!5KiV>}3=^ zx0JLewX-4cy^jxGqNc-b`Tn(>wfR%aE)Zbz;EQo+8P5n<>M(;__rV__Aw{Xe;&CsM zWsQ@{7#j#;IyamxD>OwH3Wt)dI%VoLR)3ph?U^P00e#41Inz07y9@b4-q?8y1y`tBZ#ygY zjq4$a`|V6u+U`e{lVSdT*0!xO~l4di@j4TJSUC_kEBPOX6j<{=@%s z0-Zyi!wm;8>-I73P&?oTM{b}t)Icjsy|l})m8;Kn@?d>p&5R$mA_3q>;h5AgHXG;4 zHm~ja_>#X#RBhTO6Y(T|ISN7NqP_o~j1N2>1ZyLhV%xA& zNf^>);;94-yw>bay+*FDt1my%7a|@|O1-)8jFaR&#*dH7E|`UP5F)yMN-uFj7q4)k zAJj%qU=Msy86e7WMfI3=3+&8eD9dY}bL;xVFKhLPtyME;H9FNQrMU z;4}TJ=W_u@Lx_3kh4((_UBRicHIIhfee{_M?ye-A$+q9pC-e5= z0v#!Xb7O*;&A@}5jeFvt^R~_r;G~jIX5K5T!Vcr5+gm)D$X6Jb>xrH^2zKOVucjG;P}`4WiQDCM%oV&6SJJKq`Dx1uiu zzAFJ3h9*T$Iq8>cY!n;K?dr)K55pD$EMBfvO|#r@=dHza_^L~;A+l`m1R5mImBb_# zJo)t}Z6Y4Y($}Y26Ka*?u$HdkTa@R{9ogx6_k<>zGj)SP_d*w*8axQ=vqMVEPTR*) zyI~724AjP-UQ0mv@!S5W$0BiU2R?>%>|H+*I7b32SDmEWFITK|vDJu0Mw33yJrqO` z&Ca(QOuRkuT=q{h!n4#Oj7mGqc;P_%Ds$qKuE+b$Y5A;Krvxyv>0zJ1By&vwmc3Ji zJ(bxnUw`ffpgp%_?>ekF00M|*NC86~@76WRwiowk^t6{sl_wz8Rict;DQ$wJWp^f*VtvF^Xx!` zRC1!*#2g|Syf1%1j&?As zdwtDI59kgHZVQsIgy z7m5IoIaC}uCTC3|+mrIg9$X-$M6 zmSBhZAc7>N@@!ULm2jV%NG}!0E^r+nQY8GO^8|@WWvO#Le7s7Wf>am>M`|#g1I&}` zL%w~I?&o53R>M3jGw?9LB+t-(m_-Dh?6RgM`Z#sXAGdB)uXNvhzcpeDB>K~FSwu%Ky)CVHC`YPH-@9-w;6JdvB zoR=$4{PVVmxIoDs)Tqb)=QWWgTo;vTO+eC+5#CyD81L(M%8cdhTHLW3uxT>_^ zp9MY^72qDt4{=SI^_tiGZE4v1MinB&Ga=BdL4ggEn@z95I2#VbmO({somoj@>5_wk zd2W1Y|Kv{_^+8Sbm5@1D7We7ta%1lqcP98TMxI?7%NT z!QLf8WMK>xg2hk24xMdC!&*IFupenNugLx#hgDxy41N&2EprDxccqnNfb6Q;k}Gf^ zX#XgF!7R9tO5|NX&G6I`XC@OOKWK}g18e#EGy3^6+lE#6h438oS@dXEX?!`~vs>mN z@!bPO2q~UyNQUJ?H012^JnR5D0dSmKdgX0UOk67q^4^?FghBRI6C!dwaF$`W;2|G) zfNq02I^ae5h7#R_<~}pMK#SP0rfxv)EEo%N2og4Q;Lxmt$1OiwM5|=o{$Qv>wHJN@ zola-vx9S14`teCExS9ZXiKHBbEXnP>Y}GBkT<3GAc3@qW{M>2D3|2A{L{K6NGGELedi#`R`WJYe()X+N=f7TOz3T zpxH!fCgV{zic4oTI5xER@PL}T`ug@q4yM+lEm&D=xpJSQ%kFiPo7!>J2;-9vhOUqk znFKhoQs*Yqkq#wsmXpa~)auD9p~wd$ae#^UAZ7Tt)&8jAj&M16w_MWrXqF;ZqYowJqK4UA#b_}LL@v#9+X1_Tn)XMG z8765g$#<;-jg`|9)Ofzin7gL0Ue{t|*WW9h%ez{));u`u9GSu)x^##bwCH(U3us3mi4vS~ulMlAY>vjC>@wO%&4Cr4 z4ZcCcD$1!TD?`9a7&cm|LNX=s!s+o=V%PZ=u2?6}tg(=s3U~be7LfKRV{FP!mC{k2 zYn~f@p+n2MD5C=gQ63AsHh(7D01lZ@YS~?0w1PtNIfTO^xJq4TL*iiEznj{if&=I` zI?Cmry0IdAc}-=TkaK};!QB^U7Q)Zcft=kgf<|L6;$ItkY9NC}5N6j_?z&!_=bonz z7Get0k2z}pz!ElHa8m4lgLP#wVv>n~_0uwoV2ao!(GQD2!4k5T%7o7zP+eoEd2Ox* z{cCiu6i|Q`0irB<&=@c|jeD(2ZTC9Uww`Q_3ysDhlg^f&U*&iRXSXP2E}*6GZk{t! zK`D-E<;P>y39hu(5d(K_SVsgAvZ z9+8stT@1+`0_4sZkY5pu6vxj-Zwh_%{H0~VRf3P1Pyz>+HpG1YG#2=g z>OC(YE)%iW1A^C5Z&h>q-L(9=v0B!(eK2w@^eo+pBDesdBjxKvmksK^j-7Xi_80jw z`BzhD!^&+m?A)q4O{iF49X3`@X=wUf^zV$BUcih%XMM$*#yg`f;Q{6l8LS~Xt!~u2ni5w`7z@VDazhF-3e6Sk=+*te=yQr!#0GV z7+f7SHBI!cIc$v$V~rwA)<#SYN4E&3`csL_$zKc@cJaSNO^hu<&WtNMWwyy??tHUj z4-vItfaYRT=c4Q|H}NZWw(q(r=TS5&@M*26d33I`6vJAO*n`y1w*@rngoS>EokEvp zIlO4gkqD;OT7e$_)fsbp>^ zwMLi8;X=%7;ev9_Zgs9~H^K5c4TMWdg_S?a7&wX>37g1lAZ!Czw`}M*KZ2zIKmfNV z)QG~%jFU?mjZ^ot489JVv~IfnemeJ1I7s})7qGwjBE0!pmXvc?rd0MUoZlKH6-x6ugU}lr_-=0U8@WSA}>lpGZOPn56+5%z}<+ zj3GypSJmlK_-HVAqFKtbD0EAgomIt}vi8 z66e%?*Xmy)bQjQSp4kkJ1y=iY2!SM57&zFtj&EC5&5!I}rz57)CdN8AY_hosQf+Sz zQM}RwlCzD}MsCa}a)9%2w*Jb)6gIJU*k@V}+FAvuR&M5wQ+$A?U7H`}A)8raGx7LW zBxD%-sAd*uI6m{BVT=#JbE1T15QQ0r-+WWqt-8%|n~x{;MZOPN}9`j*(6XK!MZj4~Te`2_ZZTg63Kr<>I`+H2XBgds>3&2he+ z!-kDCkS+TtU4-SIV-Ai*+p#e!j4|GF??>tGQw!_T5`^t36eF@JvuUhO)zh@M>aF*( zvhXRNvst&FoR*=+_f<}MKRuATD!J5}9$$3y*fpyu*d^j1f!u1hXpyQ|Kgg;cBq_`a zab8VB;?(1|s)Mrj6B&lj%32pMkNk>+viZcy-4?HU8?Z*C)mvfCAeP;1E9_N; zFG#k>a>*)ATVp+ae_NeoiTLQ8i{`|G_=;%wM#d7xF=^5B!z3&nzzLEB1hfeOLcdMl zgw{*0=U%IvCbJ}u+>&&r%R(yIT~t|3f|i$@$b&yBCd-qAPk9k5{n5bi$A|fDf5w|c zvQm9|4=M!}T&D$un>#=^G&R2edEBl+bQ>}X_clY$`l6pK9uQ(VKwsrWPgg1g>eZ#U=EDw+ssfh_L7wLB~As8%|*jXf;Xs|pCKyTBa_3=H^L$z`-u-?jvzpyL& zUePzI_M~Dlk?ZSe!39Ft^`EWz-D3Do5P52VvlOWBNv7NdK+X1+ojauZC>iS~Tf)Xx z$H{X3Mj8 zpyIuWpWoKvs(_KBIqb^w3dm9-%AL3!+6F(QEF8%m|7PfB*hk;2?M1UuF@e_7!2vh8 z7}q3VH0T%5pFpc^t{w6Q`{b!STBMEe(k7%r;G^Nd4{M+&ZQz_C%Y4T1>cXXlcG6N} z*pjJ*+ehiWVlzMxH-^WHbu9*9PaJ%BR)JhFAS>)anA|TiaY4N$WmF=&mgXjRQWbMl zi>Otp!`aVzJCEfdGkv%DY9G8|@|7fe4kxOlzP-d>_GLco`to!fpz=>8yF0j{+O-va zo-IZpG~VTa0qap`Q3|!rGk*3Pkl3=mLJHxH>_>{(n6J6|WH-Y5816@fFY z5WzV8^MU7v(vB1;RFbZw%maUEKk1zI6(q7mbWQ5`gks^DJyAJrPA>B%(?oXwazS0d zi>aRd(Xhd9oWjICiShl921Vx0*C`R#-*Q1^>s@NivDY4>WY#rYu2L$JJXpF#4>^Gi z*{}KU752diG*@#sDC(oslg0%zWQ~nP7aLYCm(5u_x_&|1;^eX7+Ei@hwa3g;(Sz`t z`_p+I^ZiEl`9fY#IYO6Nzm=s$ZxuY zl&SgAC$F*~?*g2<9iMopZ?$Tl@x{A}tjKW1HTy%%6=B9C z5{aC!8uo=>8_MDhMA0OPw123pa%!xZ`Y4P%s}yx*SVV+_5;@fh#F_3I6_gUo0G z;=VMs`)>!!NF^v3P@-&$h%3t!28tEuk_2J)NK7lm>)VW&XjT1_3V8es)m}JV-B>h@ zKx(qDdVYQOzx+EHxARmzyqrz4U+VlIVeXJAl)=UOC{wo;9hluhwC3N?D9s*sEFk!# zWUBZO-$8ts_NmywNjv?h8u6h065!QzG1R&_R?QF|`QN8pc5wtTDFAV<=^~WHd#unH zcp8hC$pz^(VGxm}c9mnvq2dD0u1A(sj72t3N)@v9`WFuM!590Xs#HpaZMdrt1P7#@ zWz-CiN-_f#$?NX}K1Qn_@4^H9Dau{%E*B% zjzM!(>efEVPN;o`b%+oe@jX$Pu!o%>Iqj*E@rGDF4p7i?>Eq-j zJ+?vdnw6j3*`@}Kz!U4g_+*-$w0JR4ikF+x1}TsCI_obbNM_6zh??kXFU5$3o9j5a zovP|>uXNTIU;&d5G`Sk@=&PV~#>(WTjK1^<_DMgbC>c;8v8&Jbfq6}c?$pT;rQxO+&Lv3+~3L-}9XF9m3| zF1W=hIo3wOv3|N+(EqmG9HJIO>R6Dh(M=kt&7cs?`H(3?l)MptLtpFnkB!pHai$mP zLHR;2<>x%M)wnhdniQrW6gZ?|wkaYY9g2u|I|8|XzJ!kx$gl{86iOL7OWiY<|H3Bj zV1h>p3Ln1rngeO0hVPVG{LL&aur?OoLuHmr}sf&!L zS`f)E^k8nje>$nDO&U#ZwM68gM3n?nCTsA7X60ZPMNdH%V_TVK{(uuoZ`br~ccolSc35^vRl_r6B-*G2 z*B2bC+NVH8-H_Jm7df|n&?ldr&v-V5}7?x+d~*4t1iMeo7~#gmPrCf ziuG?Bi-z!V(_6lx5wSQ=X6I69s2FxRU_<_M$))kmjGeQ1yQe5wkMP3Zr0hy4Wj}-X z#=A;dwjrz1m2Y0=c2u4M6>Poeu5d|Iw4^e-6b?6twB@*@GOVtyPB$EdvMO=4mu`kB z%MX5uBdAGgVXZuhqB~U!@J(ufu)6pPbALSV$I~3}Af`eGO-^`f>aKKh1x^gd2MN&U z{iV9D#QhzEfu=#Jv8kYA-EX?5_By8kw)gC|0pClI`Hsvj`B-bLWC1Q*xBYV1k=n}5 zLl-a?9wk@~m!b+pdr+@0B4_Aw#CQkqlAxjtdoEtfOG2;j*$`^f+k3)&+Vl2lI?k*D zRTJN}lv2y3zO)<=cXzd4mC3ZVa=J;|R44X7pD_P)}hj2WRvzUiaCjSt4jS7kjj7>?F6As4;D8^e1FMJHeQ z^FiEde@U+VB@{UDNOm?>!rKq;A5hS~Mb#qU~aGInpNmh){*}B^=;Mc4hFj zDk)1jnVae#_^|lf5vH2G$C70&BRH1!_Uj(gTvliENp1h+gg`Mtq8)4_E4sB^I)AQ{ zs*s(PyrHwXxL5QNHHgH?%lg~B&Ur=>SHrrmud9f};dso%>AmbdV!`VDI^2Hpr`H5DDZn|u(Jet(ug<_D7L6LkQ&*U1qXN@|u&syiraPD#mXCfP~O z5-gOQl&M;0NoUe#I@G|cv+A_wXh(*SBeat5$gjM*6)6rkZ=!17cQQ@7Dxk*LhTB&} z{lbq>{L0@W(F4z&Dl7Fe@MQ{ZDig0I1mk~M={ z@YXb27nuSBH7y+4sWv4cd_6F-3{wk5#ZC|4JHR!!XsK7JSBjc%UTj+c7e0UUj#O}Z zqcR2$?#a)V=|S4hj12Nd5j7!e^Nn3kUT2{jpN(~jwNKER7tP@)$81OzDKgPt%?14+ zC+zUnoKZbw2zr(-?!lk9((!e)ktnghYNBkliS=%dgIxR$8(+%Hx|+jCzv<D@1lxbYrN*Z~o? zO+138BSM*?t)zECN*#wuypZw2sC}xKLz!Tz^rM&BpdVY5yu($&YyLv&=CM75OU1Q* zNg`E;{vC-)hBFA{8HC#&9o`ND4aWXqXxYmj+f`sXgoZ{ya6MbuI+RZHxqp&`I^Qn; zjuZd4bf7astO=yqXaUnh^JcKDBuk*(_u9+xp1a_Ts!e0g?ZxKIQN0=!3esan2OpuK{>lB{g>no_Y+l78z@%}3BlcF@_T_jg{SY)v1augw<(R_3n5I-h@uyYc~%t%GNI(b>kx*E+lP?*AM z*9Cq%PZ~piwOA`|Lf_Oi9LOd*DN->M&uoSr8K;zHtIH(X87N_5%QzimnO!Goyg)?} zaOY!e7WmIT@Piz-pfdL}ihUr7yD?BS4m+4x6WA%A*L*wkY&hn_c2MXgX(<7VcSh>| z0CP*9EG_K1f=$#MTa9^oO9b4W{j8P zHG%T0YCQ5}d6lG{3Uk4O>uQOx5{!_pC?q#}=m^m<# zHu<4SqqJ_h{jL8c9Uh{5;9+kMHK`EodZAQ5FwH!z^1XG$DMq;lO4m5BOv4R!pB;nm zz`1W2hM&N>#fW(6ef!7haMZ#g;_;8y>nNtX)ZR!8`a(`kCC^M9b8$-RfS5SX5Uk1e z`5vOYeU{l+|3M+KMw@E>giMj0K0@`_Iljs9QLB3NoGyprE%7HSwNdyk<4yPeNN0+u z__&lwqhv#M{G>vli?4Kr{Md@roXP^jR-`Uxb#<4D5>(5muJBkAz?ZKQw~wIM2eF1x zklsDL6lkcRQ$-lVpZ5a7KXA>9&~MrXZ(9&(gLa_SPLsFsYS9%xB9M3oC~MBa(4-Y- zuXf8QcnH443;hu0-sj5TKszJvtH2tKB=u{Z-NHbYSXfTEA}e+RfxIz*!QLU6_o6GP z%hz>LLl|*erqq)t&QCe-LSB$#oy+4ty(4~FoeYHY@_?Z zMwOwKbK{i6xTw~0AA{5)og38D?6#dJKu2zjKA-2P%)ZbDIIdXJL^=L=96l9cTz zlHM3{RIvrgL(tG~dlVmgIhDf8#5$|~2BEq%bRaWRr;-T-vy15@^^F+T0XW4rGo?#z zej|QVw7~<5)Ji0ch$Mu_C7g4DWYjp;Tz28SFj~L)L2<`nb-a3-L7-{tmyPZn4 z&8CsI6Tk-Lu);)wGE!upzhZ~XL$dk4{vHncl zP|ywx(`4Hg21k@T%S0a0l%J#9thk*I zmao39E|zg4#4P-{FeUj#HA>4IX{E}Agv+^ecOYPeqcucHP-Qhr6FYouO>atoGKdnD z(DuqP8n#kgO9G1wJcscwpPaZ*#p zHX_r`u(@x7MegMtj!<*udJvkpY_jfSOK0C0pKQUF9va9F+~n`4QKuZl>G~|63Kek^ z%tu#W%W?qzSr2~B)`Q4NGb3k%zp$DSqoR6bKE`70Vd0_aU&He03|#*rZTHaXWR3~i zq3`-;RY0v^mxKvXlqBP|i4$q2BjnV;S0AWJ4;5_hz)9eV=_}bH(J}5Z8QJ_e-V)f8 ziXWQ9GZc5a3y?S+6akT`UBX+JzcUm`$}kmIzvlrhR55NClMAUPSg%3KorDh#d0g8Q z_7XQe_UMdGv>S6uOEh(xg8h<(ix7EDUt%S26k2@gyJzFIjjrh9x2}kFNUUM^e~{?cD!-EEXz+zSD_Y4e~$kP7-Md z#{LCW#A<#8v^jOWsRk`6&h)mCZ9DO z?Eg{!y5&Yoxo0LN9o%HJS`k!$)9CTMeL4~`xe?9G!uq2J>NG>`q0N1HwsL)t0$vjB z6nv-$tsmN0@V#qM;t2%bz5|!slK7z7f;V{uf1UmFISzMd7xRIE!XV$v zdA7T}W=7Dfs<&src|<1dUe>rAa-{qV5974ydo@o!^OHgmEfsOCz^@%dq z?rUoS6E{$QR?lU5Sg|{D`>`?);)uSLTTAnvMYl8AOj6c9yQccZKXzakNYZ40$Auz5 z3>|E6XLpz5jz31H9vnl>0v4DCP@#Y(M0qw^DPE zw|2iC7+_%8e@O`#%&|nrxT2{c!Wp&^Hk3T)rc-+n6_m#iQ`~?s^1POhdr%3Ftdstv zF{^F7?Tmt5daWvIo%j)&T>(<9=jsp4c*{v3|2DILwQqUIUf@z5A!Yo7>C95z$R|6` zz~NSkq@rc4VGM;Gpl?l#6ucP~lhabu{1O3!QkHNC z5J72#k*4a5IfzR{f&$8`g9>qLX6q|@c~rbU|0mojarl9yL+-cYl?h>-Krwu7`nA9= zrYwBhtje65`bO8oE!W5Inb&g3S8qnDX_TE&-KyzjwR!b-mHZ%QQADh>*|U7yaRR|! ze(i!l+z9E2i)jG_NI`t`$AWEt&YHa?#Jd}ncZ^>p(99-50N{j5JgX0&)8k$9!zP=M z_h=Z4ps}vxx5`k6+K*YS?Ch5b$+3gj>PhB1+Qz?~x+F?0e&s^m`IK|KBO_IK?Xlt6 z#))bHxqGIrs8CS8Q@s>P+=UREx(%p-TSeZ$?)nEIB2r~!~wz} z#K1Gd@i2l*j-#5s6YBia9@&Q5mNFhxZac?*o;0o+$O&e$7q04F*D0Hg`dk?|VADIq zR?7)n2OhF#h!Mp942Oup<>R8_6`lh_d3B>#-Y_1H;_eJ3>XGa^_8`rND~djmj}iHI zQmfB}ZO2*`O-0+Ys$5KDM)vB)_S~kut#$%;d{i5H6t0*yR4Q>ofgvg7lraWdmswgt zB<|u&&J0`>nE_ajilOmR!AK2}mtfZp*Qr)FC=5ZbT$#+#jft zc|!}u;)tyKaj8&k82(Q(>4|O>Br8McP$Srw(&>QZu(1gY>qQ9^h|41)j+}osQE-Z_9S5abC8*2^`?j#%aPf z`5;Q9Ki2m%5OUggXL^ZcQ-*5amo&Q$36H@vaL9AUz~FSwKfgJfcVxsW(Y4AR z$Bl=LS+@rQm%{K)tH7rh^&H=~ZtvneODP|bGGw6;?)!yQZGqjEL0}o8C=!5FU_Z4; zZb8pe@{TxB5ie0dp)$ZT z94Ou&xGN{v)g+iXT)?;>@%nv4v{^1DH^`isP(DJxVt zi?|Mhz|vpDk)&SU%K2=?fPqXH)QnOnT&lMioSALNV<6TPJDXfpd@oyex?B}cfAZ%P zsq{Tq$%9#C5{l8vUnB3aiHv=8iJjT`TEZsMFr9|Qiq#altdReZy9Ze%En9qzhvdrq zQRuWZrMyqQikOKhraRL#&@u)c?M-W4I${FV{ANx#xpAv-e|&{I;HsT_B9ZkE`TBMC zjK&;?uap}k%`bHc2HAMcTU^@I#Y%BW&rOwCgtAo(AqrHv+TGApIo}@yw%57hy9Nd0 zpL0Fsq@R|NCjrv+5+qt(GQD%L@WiFb5M6L$$5GS1pA!-(dLx>y?8YeH9{}_SEpHl= zHp-ZL&B}AkYWyVp9O5uJGA2{SmNz zyaVeWy`>{b5bRG-362&5d~~4Wh(o1?6nKyYy;Ne_U{Sj~g*Z^XTFH{i zgwgwP0Z5m;k7yk3d?@WO2C2-P1+V+pn}#8hl8uP16Ts_cn~X)Hd^kR-zKu z)G5bPPkSG)k*p&xLOvjk9i|`uR+gXMrXbC}D}MLeoT`Uh9eZz6du%4=dymXPR;&3lJ)zDun2d z(UmM?YuP+_V1F>xbxvrVkDxQx-6#^2o>IJ!Fq4NZinwxsDV-jDqwR&o!lU`1>d)4r zQWWhG>-vo-Mmbq+^=kzUC(4SGxiv?}UdPbX`iW~IQsb0%qG`3ElD#2$ zqKGMt3bU2qZwo9~Ay>8)f>8tbWR4_?(PHx|McRp6%@|Ls{ZXZscHe6lA{a7;=A_Mu zo6e$U^n@jvFBJb;9sk<)Z=FXM(k|Jz#75oWp{LO0@u&|^@R=uV)%$A@cvMgVprIB9 z;}yZ_ewCNa)C;?+w3Ps~4|dJEZ5)ldo6AvcmqX1A)`cx;4ROf%C&D^Se%^CP%K*o* z7oaVKJd$7tq6jFpv7V%wGF+SXWw&5al;!#pI}wG>KOS``O^U$f3t3l+` z2J}~yQEP++W7f~KypH$^S)MeQdpIf2^K|YSC(7LV{99ed}gcimjoCNdT=A#&9r>I_$4(tQR%7F z!o4iY8OO}NrOOoh%c+Ju&fGFml45fbiJHb=N5a&f;LH!r8bt!1dc3rbsvWo?+q0TE z|K2Xnk&rn4Q@xND;UX>>jTEnlfr4-yL82zr_UCNKgKu4qc$$w}v(a{Srix7t9H zVeYZQH2b;Yf{yF8PK)PiXV<1ywT}OHcig4!!kfvKE5&;E^Jn(860NN@d&;PXSR4@P zu;M|1m?yLtqs(D{zTxU(5Mjl-S&qV-E+5aRw_^SIQI5Hv%R8Pp>D&R+rD(eIX@NEY z1gi&+)I&?DWZ94E&EIV}HLKfPmTWXCt~yq`KEa%bjyFG$5{P45MDUEO$Kt$4HQ>B; z1NS-$%zeezoTaLfJZGr1;7K%cmL4}x)ZyKuGSceJcn>~mI}<&{Du|oN(;1CDZh1Qt znsbITRX(<$1U2QK%xi8OT|3a$DJ*o1`kytkQAm9=I?e3+8VSxo)5?-6mc49wp}MbLPV3&=)AzjfghuYZr&CxdyL(P< zi0)GyK%D*84s~+CDtM)%4KmY&nU5xknYE|hmPkIZS)qW5+0Xx$YrrP0CAe^ zsML0FAsbL$nT*e@H*`=-eW9n2)->!8n|7k<7oDVIa5J_a z#}y08m+F&?a_m=1sdmJO`ey93nYQhy`C6{cs64F=9h&1?Jyak9qbX&QUp(wY=h&&e z-X>q!IJxJlON4=md^93;8^GjuV=s2Z-KDa6 z4MsJ`!7;6dOzfFS?xwKZ7KlIV7+PmU9q(nEr#;}Tea%T~Y8bmU--)+ESi(e%y%Gb_ zsx?#7{*q~^A9&Fx@T?EFd0ylwJZhPVN47hj{A)&Sax2G6ahyNZE??tBM*DDtjI>j+ zd9Mw(p1<^ftuuSrJ#BZjl2JxYsv*Sn@RFIOg^T*{r?Hc9fQQ$x(YlZFA>>nlDi9kp1o+oa7v@6hVt%x(=XaT+OufqsYm=|oI&A+=+ z*n#=xsZjM-v$!93lV$*R%9+bHKNiwsBNVIK2--oI%r}cE>^P*H#BWMDu=v zL;qS^1Mi>($A|B7S!m&?Zx3>WN!c=?PKaB^7g>F(g_>RY(p$3&5mI2oVOR@MO!r*~ z-%v_`eu?1BAl?)7i27!0Fw>s$PhIBV0)w7RkGDvUy_VgB(}_bj^8V(oZFHOzBcP-< zeY-fwL@qsAzxT0>L7ada1KJHD&Gmw%T51VnOC|4*T@AkCbLlkfG$edrNv8l~Rjywv z25M$D2GbfB0^dRt^mS!d48Ry5OhBKv12?!!*_UBIQNA6s=~P;aKBC^@X8HTx1sj6l zKAZJgb0E8=@6@k(rh12ayftA;3M$Hq((=3|R)%!V^=Djt!O&KUD28$)Ia*WYmEM&KT_z>oo_j~E@%+C&_a)DTX_NlKPfg-?jS>kK4x{C+IV^d zDB+|^Y1(?lnK$0$GY7;6``rXLY)o0G6Rms*daOU8-xheQ}egT*`fucDKS|~Y! zq%l;Im>GkH6)I)tcUxH6dI2r@~od5Cuxzg{%D zh@`5rEW6BqST%j&W8(@TrT{}O5n-zSAEX5~o(4FkCfcu*@J|ljJbeG5?;jSLZ2rp> zrMM$ejj?u%4j+sXca4@W4tfE@Icq!(-V+OOkbfHhGGvFAF>rJTDio(qlr)Aam84nl z-#jGHD#0!)JbdsZ$Pi%2AqW&FMx=H%i_k#&oK766ef(SF08mmi{l zLsB#u-GubwzbOR>7j1Dje)@dfBXDuXD4DpjeslBs`uuz5dfb(VK!%6}mWjyv@{Hz- zQ2X>0=ZzTTK~meIIi4HvK8T1t5J-x21HGG>lmk%3cvO`I*oFVF>Y+Vn1NR?rfQ-+_ zO#XkC#-4TgVvu{NxB0N=%dUA5|A#LCL{b%ot^ef^R1Mw4q{@Gr@&H7Fwsjo0M9fX0 zj5UiH6i&kyI&nb!zlF{Y-?cPQCIO%*^X0|Yn?omoRDHf>yMbo&frk%*n0>sdyP~S| z!hac~`{LLk{LfJR{d4UDKBq?>p1w=dZBo(vAdtsfuUfP5gA_9hiT-*q{=X~r z8_eI}srP{6MwmAei%(0+;!Ywbx9$E6VzOC_zIYSF7?Mo?i?$`%{{_ks$o=@1dGqX- zz<+`O1ZAqW=H+DKE`VYzqWmnx;y!Z?4Et0MixT z2Qm;Ds<2zHz#p*CUo_*Bhe>Zs6}WH1{}abZ3M>QN+d1?j(D@|P<;B>=CfwC0;07q< z7JpOhzpXlP=5OKtp9dCYruh%jx&M{rUOaj?G5-iBU>HN*pN)SZfvUcff?DI>rksFE z(6mnxSDc)N2L5yR)MQ$mmH$2R|6do)|NA$|ES-2F*G8{t&%O&NDE)|T9UENR1wV$W{YrG$&Lj_&e3u} z|DWB+z5gdy^2~b^QgU4H_2J%02EL;A6?~j8<}v=y>z&@uJu=jNQBPiA_al4hs5s2T zLGJ(>es${4@d(a^P7l$AIPir(V8fGV%SR0UPo%TgcS}Z}@6Q9gzOHmJw?Kdw3b5!~ z{Z0eT&jI;eQu^3ux>^B?nQ!ifDgg_=HGlE3p2w)d+0Re0v)o_-A|G&(MO;1Z^47(j z?Zpeo&dbb>&*#pe>$P9cuq|TS{f_U)jW65}AMj)jwe8Pq+5af%+~bl;^DwU91y?Y- zY362_%0OjVYOY=UV5H)O!joFzCE2yiTq7-H0GUMnWUFnW9#gZ7nSjz!YYVl+Q%=^F zG~KN9Gb+c%Ku1kTk}$Q}*V(_%3+J5Y`90s~uk*fN2dp^kd(*Y-nW=Y|1IL@PhMDrQ zPtLuD(XhJ*pNw4pHd7Vc!?|ZF`Sx|-dbj$yS{rj}*NS_$PR&joT%R2JByc?bY!j9> ztO)(h3GDNm*IBVKYz7Z2Lp3@3)yU%eX)=EwsI{wq(#Ip$F7nlyL)#j)D7nyh_W8!# z-nLAdEL3AyPg=MHR+)oWJZ^8Z4q01zeB7HlRFgnF5+lm@WnIwZn84;BZG;fb2@h>5KRty_U$NPU`B=B?vSkA)*O_`X`Rr|LiE~Rh4ybp_ut7qe0MF?45b=>_ z->#!DoB54uKPit(;4mP;zTHUp)*lv?#EP+ViQLXK(geC9m=3kr^wq9!i)D7I@}+|C zwa;%bg4)$&eNvo=I1@VLWF-+;>t=uGr@2$RM-16ARV<9Wck54>O=136ioKe)>O+H4WqMP{4q6rpc$l6dw`nLPKq*8JEyQm*`> zaCtD6I@Bcc^}8-<6sbej8YS?FS+UHkXu?*Z7@y-52Jf8Z65e^ zb`EMi62!>j5>`{MqF-1SbT@KDBCG-!H!a{=VP0YG(`t-G-iin(HNuRH3ex)EqL&s* zHeV;Uc~G9iy5oETd_H?TDP?wceub=Kk^JJU(*}dVDNYH3(~Aeow<;Aa*w5 zhz0H-e-paGI-MAHrmEG}lK7P#c-W~g3g|~J&cu1CZ(%vIleg=@J7k=h?z(y}&B{h8 zCZ5&_u~~^@%D|fV<~GUs3gf>92C?pl?V0S$%Pd<`q}eC=UV85*%#{9oU$4HU_*88| z$V_y}GD~ZS=6B&Jy=Ej%JJLL{V+NlpMwgP-Ljr3sKXa7sZa3ID&U1J(zB!Nso*`bU z*(WaHXV_OC#?eOtSeBfESQJYgolcVksupE+nQ=OFGeggmW{>+sYL+S#|I})85NxWp zwqThW2`DUu!H`d$mXu%Y2v0BDI+saHX)kkw1mMCI^%F_Ci444Rwo#_bRHjzAg8!#; zhiCs7Pkui&v&xFcT?|`7cv~pU?EU=k$fz-NN%fX4si6E4mji@666a^548Ye|)9Zy;Oq2i46_n+DQOCt;(F@*$rq_SkV#7|izfbEnFNi{CXhbkM zC>PCOvEN{(-c^9lT03mwYNPpC`LvQ)ku8UDXf*S|s+9I~0p5C1#-i`1H>5C{U1+_C zxGXF(`?gxHg0;UD(n|Uhh<1@h6AmDd`J_r??@COQ$`Pxd65$%0fwZ1BO7FrLbl9ml z=uR@$djhpoRey6`{nlw?fr-p`vknKo#yg#=9gs+RfOsBWR72B(Q&r_AcZK4a*cun@ z$ml)BU5)qm=|u>*ie;8CkiujLLglJ!{rR2#A&g$_a=iZmODnxxv+Y_Ml>91E-KnzY zFoM4XTOF`CbIOO&U@#b5&)g{}3Kv}~P2^f1uqa8D`$$(&rB^eb(sXoE=mOq?$K8mp zfV)N!Yw56X6AMDaBi)2Wpiq zuCGNRA_OHj+wX^STKTZCX$Q`0uA?f?*MzCIMCb_%_m_JC+yV1@);w%iJAj?o7tF9x z?YG2x_-F=LiAGjAa64@QizoO5NxI8@X`@<1d-eCpIt!U3PhV_tCh3nOr9ECnJU-Sg zGKv?5i;lu!y|WO9Uc?6n2{3?NF%YU$HLO|)b{dY(PW+PsM7hbG5p;D3sBz}=$f7{x%O4W>Mb5;J8XZgh)w<_TvKlx!2{g(fuB}BHE+nZV>bef2SbmzSb#d0 zXv@zp%}c;|Ig}a3*P%VVaOb6h+maDdF02BDUfpWU@1 zkHGm`U1kheI_Y>hv{>y%(%&$ggW)QW^IDo;=8uUH`b;oN=#TR4d)aSRPQ4ph{b)XO z-g*HEyOC1Zcr9vhnhZD(4ppR3xnRwX>TYx9`~L$qNovY}6O4;?BZl39he1Cq1UrEi zvAYgTldUA(?LI9cai}0@_)(=!wiPfJ-`0j(V3E0jKoMw*2WkK%LrlStgwQq%v!8&2_%zwP~t0I5C0JwUTz>(>M zEV5(}iqjuDhty1p%O z4@m!VzzG7-haMqN%8&kAqV}2-g=%))sU3ZU!XI75LpvlK3ck(~+MOJY-)3K5sWbmn z^>lQ}8LH`X%}IIv?)S^NV)xuG2gBZ2CTSIn?l- RV(+x@aca`itr#n-{{bU1oPYoT literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.eot b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.eot new file mode 100644 index 0000000000000000000000000000000000000000..0306f2e84d062edb470c4fde54bbc0dc34aa6b66 GIT binary patch literal 431072 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⪙4c

H8$X$%lr<-2KhcVmeBPw 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

(zkif$b$ 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 JI-~#B_!l{oUWxz! literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.svg b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.svg new file mode 100644 index 0000000..408b6f4 --- /dev/null +++ b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.svg @@ -0,0 +1,8489 @@ + + + + +Created by FontForge 20170731 at Thu Jan 20 04:13:54 2022 + By Aleksey,,, +Copyright (c) 2022 Sunn. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.ttf b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4aa3d30bc9b803f2309dfd395c36ebe725ec30bd GIT binary patch literal 429600 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�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 z zi)NGRQ4fcFy#B530*$7idv65U*zF5LKO(fB6cjKT%ey>{V(H9p<0cH0w*ukiJdZFL zwn|3R*GT>y?K7=3U-f6(-BNN)aAj*dztJVDlk{rX(mC0-m-LXcFzc)j7IiY3x`KU% zITAzdu*~`3Ap#`W&B*}CDnn|EGov4pNsz({-q%`hv6TL~%YJ>~wm8LVP8DejY7TCT zH?eGNoaH%zo_^Xw6t$f+DfpN(MH1Ib^ULOQb3vAvoMkhc&; zA4Auc6yDR)$+tibRU8%qAr;LD*ludeT2oXSpdfUo@Ojf{r^}Y@$ZsD>JE%p2RUnfo zl&kLUXoO9Vmk-%*E!zbf6r|0LDxoc~C8RY5sOD^=6B3bXYjB}sHoGf7kbTqOu5g|O zTJB&qOh7J>uS{kSPeT@2Wxth16z(N2(0>tM`VmRGbKxxO_vw9heZmS*3YWyy5Fva) zNTP`(k}PWXn(NmQ3O>AB&yLPwErW@(e6df;1v=v3`DcziqeQ_mTu8K^1aGLqb%va4 z$gcSdEY{Gg$85J&?`h{1W*DRlf(kRiehAw1TKpCSv__lS&YxmOx>bo}spuGA6kux` zP!w<3ZC#jk|c!#L8)NS$em|lZD1GKyi>TU11n3rU9aB`i_F(<-_G}ScF;_10{!)%HUTI<9dvs+=yo&K#mP>J zU&FmPBOJ@=V?*?ghCwhtHkb|@53sDgM89mA{`L(z)f{zbdw4hS+pr!+8LOb5r-Um% zJL+HwW62Z|H_lgu(NmX)w}kvg?^kg(Od9FBwqT}&7l7J8Ier(|5K|fVFg*fahhGfk zYY=~zGeS(RD^G$q2YZE11E2?B_20|kN2}*p7OyIbIeN@_*uoGu3pNGBF0!R1itZyB z4~7cXjTWXK`?d;J^E|7)=F-f&?qWD_Tfj=P1pvO>3}g%w7VwqO(?5w@exoOvjmY-} zEZ$RVW9Zk!HAYJwWEKG(V8(#FZ_f+v2eUU4E#(^m$JBEalu~+Xh~6hz027TMeMXOw z<=U()?Y5K@`jV=r)3+H`2(1W$CRt8T>;ZBISeWNC@Pcdw80s*TAc1vH4bT%W-@N_i z9RaHJ2=IxLa_iGJ6Ug7tM_5jwJ0V

!rFWoj;R3RFF34hp6+I!@_6?MsFV`fbPGcBk^Fcdz!SCwX*-g-wmU>54_dT)J%hC3o@UzvBHah_?;U zC{e`BL__3Jkg z$i}Kv9exV}+hIA_OfwtU2tfb%OVAGrb%srLxJ&zlstR<36<8RC?uuckd>I)7Iw3X| zMlhS0u}uvCnFR_M22cL@$tS-;k%P&QY1*8Par11*s%<1VNe;cua*nyl;oC?HUAW58aiwFI{oJ|sT_hYv{hgR96hn*(dG>B;C+-M~1Slb` zh(k&+3dW%&_T`iBK7o4}F_Vhm=$dP4~WoF0^P^Lk0$^ZF|9b2cZKC zFX%8a1|R{Z2iTE8jNUxTC%*!`VRkOKZa@QssuJWh z`Xz$Y5Xqr_Gr@+iecX zr#nrpX4_3n{KB{G8?V+FVF6i7t&pd&7Xb4uJf4734<0%(P!|iK&HQ08;xJw$7DPET zfSBF-QLAaq1~MRSukC2HFCtG2(_ZkP&=xMfBE-=u6N~v)W_k1j;-5)KC)w8I-RQf3 zE-EPjdJn_5V!aToa?}9J!AZiys4c;;(@s!awl5-6)u$tM1LD@6hLA?wXLlEw4J2@F z@|^2EADFqv#A2SMS&4rVJx9`F1kyowhlD^&#D6&+cR|k^?vGL0V*JJxrEt8mUr7!l zaSUXEDz260?Th_G_8vXDckj{0{Efz>dA_otv7(}}p%Tjc?-6Qgj;ZxLd($jcNnsH* z1(o^L32L%yf%iP`1$3>U$qZuKZyVNo@yq8}eB9HJNI4nSkpLe=E1 zu-5QS=!r?wErOr;o3Y-T_cWHMyy5#LNjc*CL1f||iL1Stk7l$nQId9_&M~MiR8- zG`O?=-Spxt0?@^%m6gyz71Dou)@x_U;A3$#208a6pgC zK)Eq&Ww=`wjx#os(ID^CY7fvaRBAQG=jav~SSQ=!Go<_A)MK8~*mk%f3}^i9XoSON zuOSS@sWhE_E&iQ!J%r?tA93E33;au}3B#UyX4NPbODGA4ylEVM3pXNI6NKQ-jts%6 z1h9X>@Hu5tXm?sp?cM zc}{%K(y`UmULN-Ww89-;!OT{~sPPC1%Pa}__TgONa72X`G!y$30OQi__L~ODZ{lk5 zDQGdFEx0ALjoeK0&25^TZS{xNV>~6F-M0tW5Zq?Ls4wf;ALeQUEa`tj&St0bp>L2G z^nWCtrt3gwnXRMW-)^@Q;wflF=*dNxhV~->wyk%Y3D$Bh-3}IngH`j!|M|Ck9b5bN!oMq#x***`R=HCFKhxe@!|hx7DB~nvodU6BPZ%(894z`+mA5-+uid zsoxAW%U@ytBG_!sOsC;)&YD3~6H4K`Y~Z_0z{ZFE zJwCe}rIFE>;-z6Hg?9~$_1Ms#7auOOnf=J&av^$X=mLH6-+IA{m8)Ao(So_45n@VigJP77Wy?lDXSX0#y{`QXFc7x*tws0i?~MX*?$qgZ@we9 zo$r00$wVbA?3=|34(HL(ykW|ew=>H}!d^iZNbm-r>7Eu#=+*52G@FDB961tG_A2q- zyl)Q!d{y@zoN=;U-xoSMfu8;!aTm^ic0c?>xa;3gtd8d#-s2@jayVp9e|Ai6j~R{$ z)MUqei9QMdHEfU93Hg-Y>MsiB?cP12Uc7KpPhP$92f6=`KKd@clSzL)#PTgTzf+nM zBc0HU1L7Ry$6znRfMus^VzHjT(T% z`6c;}Ay>ozH6Grv;&wgL%oqJNVL#v!NkZ>TC=axV@9vC0dhF}6vuNEtoEFSbx}rV} z?ek97ME8W6#$N~}rsl1drkDMR)gxz)(*CvwA5={_g%kf!2P1x%`@+6r)F4vrzWjbT zcXN`&q82o;+Ax22VAIO|Wuz4vND>*R{ic6iFmD4+`&dt{poO2l_aR+~?Q$=|!nk3W za=)BZA%HN4IgQzc$ZMm(zDOSd7HA#Bwv|&4mXT(;aYgu3_dLM$>3K&--SYG4KEdYo zw`hA#4z{iU7jQn{yU1)=%z({ZGxt03=jLat$@Nl=vqlyH7~YvM^Mnt z&bae3@Bg5GOJ&|V#lH75y%?Wek8LaUPz-2~TgdG-Wb;R#lI>sj(qB0~_cFe;Ww|A2 zE+6sQWh2&Qto{|lQ*@S|qAYRBZw`x$j2I}JmA5zo_Zda$^N5qovWnXgGnW)PJ14gL z_;$uQJC`k--WsS`7!usu9nea4zxN^Oe_`QEGM~sYa4K-JF&BHYSF4os?ByyQSOw!` zxLYo!f8Z;wJAUhyW5>4KdVH^c*|h4KS=CiFHPs}avCu``n_M7&suLdrpidY@=_Dqfk%y-Yzir0Bussbp7+5G4gMB9c<4TkqA(Z-pSx&vI z?}!-|DbJctY)6qo-qMMhNF6;iZMD+{j zb>En^y7&B|6MsFWCof;ROpaV8f>;AC%$Epn3gneT0G<`_5U)*!gN!^QgD<=J?2uj? zGy3~8#K(fj&B1X1`*+*j!ZPYaE<@lX6-?hhUwM&SKJzlY^##5DjA^@j-T_V&H~R4}nZ( zL?LIR6V3O~?`<=qci}d>NWUaNnxN59l(rT1B3F zTfF$j%Ohb=V%*E3w@TPxY@iAlA3icvX7tVhGIO)ICkillhMtr$xS~I2*5=;xhMrE# z&4o3lmclFlqV1WPD%C?z(Ft#1`y}JB6RH9@KklWJdh_^O%2wE=VK#V6+kmd3`G1qPPIk|JcXMVVQk7XJ0zyW%GwV{aMGR+}UF z1w5)dhF`!8nsI!CA=arhj(6~K-+^BG4Du1m;aQS@AWhOWvMD70APUVnNfBb^4|TS8 zDj4inw%X0fu4k>|n;pGS{OjQdoUoCef{%c%!iwIC-sLF&rvhB8*+<(Ae1CYm^7%mE z$ASuAZVz&*;9HsFX|as{yvt^8KABcRY*q~pt`fe~(-q7m=p|&k9?G1DsGgXRJm~6t z8_tDu^svSR_oA^HEFN7@YBf)oLIbB#u1E8V&LN*=XSrK~on~`2rj$%tGBmX0bNbwC zx|6@@_1}U@_3TjzKmB~>OYuMNA^qGy*82m$^ZjTZk|qN~SgBhKAulF(C&AT-7jww} zvZKSmocMFM&7ncaweH+f3Vhr{LUljWGOE}Aq%v)Fw&}SCMEY2uf{`9`W@=m(xVYnMA#H+_Wo5aWzd@h2J_PPS4EY>FPSC8rrBu*8Lxb*7-~OCh zeP*Jn$wR;EN=Vlq5NJJn4j#1$oDp}J@iU^OfEsNK$aqSSx=gbHItX?NZ9{^>ITz7C z_t@;iPMaO2WD9*nsC{3&{G#rm3tH_bcu?EkyXhn3%9r2J6NSt&J{h-tR7x0*5 z+e-(a_h!;0W$z8y^v!p`V~7v$zj21XFqBdws1Fj0p~GXwW0~7X9mH!XUdaEl7XaS@ zTI-;@6U6CYS#9o;$fzFN9hyx`g_@7V?_SkC{GCpB-U4o>kM7dvIXJ{MqbPN7DAr*_sQm`V>PuagVf@;cwE<_6?Dy$7cQmP=7cTSvp=9FDTY%S~~hg~{2tz$s>PK3WF0zpg9vIB_S34Lb-Hh0n&9-F zV-M@eYnOg{>@)Jm}lKX!KR`*Z(g#OZ2>y#&um*~kRBtOvLTfv3uzR~MH0e8a5s^>U8Lw@?=D|%CR zw-EU{o$%}^9JpM>DyA`T7$Ks@!{a#EgM;F($^@wQJlP^)@+T~?z3IG8_ix|^z~s)X zEP6~3KKg|Aq^1ff&rrvwq&vYJ66Xc9$8lQ22uwW36Ik-~NQ`kHF4%=J#=Cs!F|!Ky zt0Vj4*#!Z0_CS$AD?UHq5J3)0 z!cGK&DaF-kr85(Bb+b;KxUXHJ+lPW5ZT*(r zVB3tIAM5KYVpuy5$^Pw@W+wUNJt{nAWQ$1M0|r~f5Q7CHLF)GagJeb#=+UK= z92#oGljhXatY#k3SZQDXchd3=i|t^_)N2opEg>r7FG{YyJI-Bmv;AL_AI1}FKM-3 zm^M4wke)l}(I3dCe6{#an3!PkX4n(k0zYV?e3BhG)k1q^ zt7M_nMd91%d{DJMX-*vk0@ZdH*M`3d0x56*K z(T#0wN?Qr<7;Q9^jpM){ZM%%b;3@jDY`ttLLhA)iPxQJZ{bIW8qE7c2JU@@VebCZ( z2f6m`_jIXLJId_^q(5#nOBx>opuqLKFnoe4r=j`qBQe7?MwE59avaPC7z(j8654j7 zpl$aLEm^4Y1b8=cga9XC@ly;mzFE;aNyW>oDi|?xH_sR0h;}0 zR?mi3-aCiH57ubYbo7@W_4@yDY=5naL10lTo9x6C;U}j|Q>tvDm z2d4?waXe=z%_0~kThA|gF#$B3 zogIWehBaK@rOS48iIv}wgW|2MCdm?d_`c!gZ`?fS{EnFXrocb--`={9L|b-G;bCY|^X`UOnM+O$df{>Px704F+16&hoF zKSO)0@1H&h*5VM^a$04l8PXQ(bj8{sjd;&CozOTm1YghaKLy|K2H!7LWsLFt3f471 zxd!cxuajzetzGY;Y{w%zPOIFyT06oun(&U+E;{im|Mu_v$kx_YgeTYMOkuQ_I_E~y z9}PiP48iXKU)W~a%`sk)^)_?xQL?uw12PibRg1!r8*$>?|j=r{@B@p;u_KpTVIB}Owk z;NF{(wj`}-4%Z%l%^aFY^2BMfIENoI2ZH7&lFEZ@Y=X-980e&88@1qQIP+bAgCo03 zKI482ER-VIXeHDbv~DyEImPvFF!^~VF*!|Er0G^_wJUXLTJ1M8XO@(}2NxH?&L=nW z8AAo=fw>ZliOIf>GxC)oT7@Ah_BI#+KqZgOc<^eH2S{fv;R(_6diFHPMonV}QszrxdTz2~R60 z89no|?`>*=U0r|OX}7WHRCYm*uylwze_TQ4A#i9FP^%Lr+O#=a6TOfM{~?~IFT6s| zsMTcR*FA3ld=r4r^HzKsg48jfII{u+WdaNF7&CtrRFHO}d%neTdgX}irlM0B`Bleu z?mUK{cWUga>gy`YVUh)@8tUj6QVHs1>NFF}d9c~6TgZn05C^NOii;~Ni^+$}mQibI zfWPp=#a=dd)e~^VdTP8Ixe8Uj8wH-y-FOS-RYi~Y)mg2j-`?iXzVwO0N|HE_=%IQ8 zZ)K&Kb*qa5QC}3erw> zb^_oZVUrZ=+Bf8s%^g_jk4fqy$U)cAOjG3@x z1VGe(cs7Lf-*sHZ_rJ&_{E_X;ZrA>**Z-=$U9Ts$zy3-u-+nveFYK=_RXMt(l*Rziy{oA+R-=jSZ0e!{m&d!BnhwRr0^jmJW|aS2 zP6E{GG3Yf?QXBemB5}j^|He0LRAB#|llKgyHWvM%-gTHi|j$Vd^Al~QB zN#BPyft)X8oWivnexEaXs`#J$TY*d9TlIO+1$go@m;+bnDRPNh1Yix&R$VUG1KM0N z2`mECpEj^V1b2n^Ud!*_EB5%~~#kbiqLJu^g)G_uw}RMK|Z9dI>TTB98p$h=i2 z)a-ylE2IVXwNFuYvN5IxGT@3XD3>!32V#ZJD(GbUg;zDh0NWa!DW;PW*C=NeG~Sr*DTG&n$!5=cXlb z$L}T+*kuvV9M!b0rj8DHV23q{(2H35Y`{dbd6pAD_nntWgr+9(+>s*^KAgV8m8gs% zMpKu>LK%!i;mhKdUlr7adbT43te-(`HvJC?%GN?L8Ja=jlG0Lc0Lkwf&n>^~(I=NU z1>84-wKdEyQS`ncddm1+tETA|Yqg7YbhW;$EEJ6Yhqcksg3Drvn8@8Jn9>N^q>Z(#%tG5IyUGGu zLI<>v3t1s2T)S$^aL+(Puu0`Z>d5@1!P?1k<^U8N&*JArR*0ngR z=3m&iDEy^60$mL{T4-w3W@k>nAx=WyT}O_(3A5iW(~ zE-~y6yPh>-z$ZCBjZRC?Urt*+c3%hv^=Bt;ey6CF~1^ET=BiJ`LiyuIThzopRm(vCD&~$jCo`zVP zp`O)nH?dNG6$oL8NUSg%31pX7VR__gk7ZBWV8KRvQc**&Tkj8vKFMY_Z4RdNDj}rj z;Uh;N*$9UE#1Xx77-v)Ps7x2s;vfc;0P_kn>6DE8)x>dyrDon5?4DawdMm7YttA}; z128afZCBUYZmKc2ZLv24#rQ|LN_W@VwZskAPXS!x9y;uV9t~Ha*@vOCGVQ#A4CY~eB;YccK2~_&4?AjXI;4eJ|1>tt4NniQ5UGQy*B^}!u8a}7ceuH+Z z+)HOQtnbIdgf%6}=SN8dI!izr02Zr=<7(4c8(C8wbdHhPvq=~9vDE?wHtMC_-AmPU zg_+HK8;fF;PPwY?BalPAQU;qB#Mc=PxHG$)^|4{UH1|}{GL(83k?u-8V+eb(8S`fT z%tmw^q}jxIwRz*_f%ZoGNb(!U?W6Tu*AGQ>?+TdpPUHu(p?$4II6x~b9p*b&ZCtHV zll7WjwYpavT#z|=a^?a%7pV}oj^!6Ir0aCx{Fc+#kAq^${VN!Y67I<**)Rr^c z7I;dleM(0?d!d;a2Eh{t;`7u~Ob4OPc3|((U^}u(ixC=i*nU)%Jw8-0M87p?RF?tR z8MX`*H|f+33~b)4BX?`JYqi_yrnOphl9^#sXNC--cT??r|;VQ^XA>JZrXD5u5jJ{;Nbn*2-G!BT6A%>bfInq z{9JA=u(K;@wNu;RYz)ccMjeZKW)hn{ihXuc#VuB$NE?262XQWO$PKT2v zsB9`u87N^;HETj6qMm-_G^m%BpaRr3MZpWSsIp^nxq% z4L7p-wOX=Gw@Rm5MdNvh$$Zr+5_)+a z(zE+pCh_xPgA{b;&=9hKey5R2}W0w9Cu#mU~B8( ziWJLkTih&W+b#T|y-BO(7CZU`cd6{bp1?gIlR`Fi>^0-xN9@?0QYH>4BXo1ip88zYOO5;jOS5){&WbrhbC5GrcUA z(_eSm)o0Hax`(LOlhtG)sQgR1&mfgI$=1;6;QQ_OWWUI2enJerMLh35My8c>GJA>8 zx@4M7zRr%0uy~C=Y`2bWnfXUG#2mVW-LzEH>o2iFlzX7n;FYWRPC~%H;4u!gHnG|U zsRJG~zI%2SOc0_$0rv%e7#O=jszNZCUZ#twc))Ij&_R8nkaQg^ulIfoz`-Em*XVr@ zsMSYJC$>OXM|+T${M(*94SW{@J{sghy*32&icJI#97b zTg&&(0KCPJoQH-ZsGxt55zO+`gujw0&rVAkar9>faupN0zYEa{J8Gjfq{FvW54Dc^Mn3ftem&glP`@+=W8-DYM^v}mYgR36qA7<^ z+C|;#yp|v9&~Z>L)}dFw_YvLV;o;58(8bSyE>qymU=I?`n!);bxOrAo=wJfL6;w2% zhHNS`ZlAASJs_SvyX7hI7mt*#%*?J7{(ECwa7b)yNN}7gg5J517N~Anzi5%}rRIc$ z=Jd4Y`1t0ui1_%3$oTk3lzY#56UB`UPtjM3ig7Vp(b~3bX?xr9Ji{KF*Jxx`SWs|SSa497D&mRW$H!e;?TXV*oL8b)Di0KjT=Lm&C<~d7}zxb@7Gm;0C z3`{kQBCGRYC18Lo+62rl0MnJ7ifp?#r6R~8sY@My?};o<$>nWr%a*mZuDE%29U^#v z#GX2O^kMq!9eBaSVKi{ zVU9QU5pjBAlvK_vj-V)*SIpt(^(mN7Qc@FTl+j%S8)mjjcU>Wri~mUATo@2RZl%wu z!awYTwW*~uXKDwE0|Sf0BZ>k8iz42D1=`=um@&f*{?fL_M!0XJE8-U~@ge%&@krN^ zH$DPCNq*iqj)Np|Ghi7JfNuq`9HK9(!r$$CS#T(>uGVZU2nZ+$4=)S|C=7ogEe#g0 z{sK5opD|-PZDflj@eN~tQVe^;K~Q-BV=c#f!()hABShKFJ9rx&G*Xg1=yfX-v2Q7= zb9YeC?#}2o15NqM{-m~6qfx$W+M7}pVr?B#m15OxTbh_yYTHeg!$Zd(vi65w?4aN@ zM)@Q20M5c?ynB5b!zqS&ScyNY5@-B8E=%MU4KxlNJvy}IXqHUzqT|P_W>$l${;cmS zA*piqY|T(%U|?YcXASydk$-JTNlk4rDFrFz=HcN+8xq~7O@kCM(*7R6pUY2A*dG9H z)OfT9PL*4V;N8iU6Qg9Pf#kv@-d^NwJ8xKyvPP$m>gzR{-xP9`9`V%EXG^AZk}?ku z4|n)WR({v}3UI{qzwVUq!+KtgWfGBcC#L#8oh@IygCN5}aLZ|{ttjMCDK&(hL5 zN>fr2qwKTC1$>>}_o9Ra4LQzKOO3#^7*vBLFv^Ew zdlOg__~-QIt+d)9dQL*poapE|NeOeJR|a}|2L^h329lKiqzxOA`h}BfHQ2cCG{wg^ zrKh9HOplC-i42d84TnaVqeKIRWhW@c1aV##?{nh#uwI7o?q7)!*QI#(=*h)`3OPBr zgO<5O)g>gPRi)lp77|hx6^Xwip$X63 z)7#tg{6QEljkLRu^-poyvE4a0MmuhT8&QuVHaj7qK03NS0T5f|>*?tai1`U}a}|kM z7ry}xBD^_srds_YKJoDI;=rJya4p}MriK^Ot4Ke* zEU-pk;yAt*BP$KwkYB9vHFH$)#d$Qzv=6dS7m~vfe zj4Jn_0nNDn{y4bnu^7_BADPk`8@S*poPg{8=$*F&mv{eLU0T|G3#zKHF!mc2>GT*MO_hqzh}kLCw#e|+s_VdAUrR1_Dh`}6$# zb3;P%{QdJnrcRv(B%M0-rPNf&gT#ZHNB*1wdKG)UI9=nIX2RDq?)`JB{*8`Rd2Hka z-U&Qg%3geZR8&2__(yRI)lImCDmeHyO*lS&;0q7%Ng;+|_b*B=3Vrw;7;^8sF&E1{przx;Qg!hG^3`n0)%w)iIcvwEe_&p6u zjR3u3M%*$xArZw_V#4gG9;j9fj|d;An3c6GGD_DM9~`li@7B)1fQ}{~s9cnoit#+}A(MGNc>)9zum3tn^SsjC zQ@#a!s$AYlZy=tF6*$#O`2^<2cWgg?eEW{$gEQ-9&zw2C4$FdHz3`e~_RyPIOUw;QX9c(-qVAARk5?k>D( zoWF~+3pg%P?;%>7*S9#w_Af_!nCNFF6|qoLTBN`1Veanh?R!u-0u|QULlvQ+711#j zAt4nppWWO`9`}(wOvLSesC$Z)aEqCcA$uFw$IUpW0!8df#t^<-3_pXiBP=;b%%s12 z)3%Mcbvo9g9$E?f$4m>0N9Fo|Qn%bP0*qoZ$lDIC? z-#-#Rq!fy*^uozSi+XzKODzcrEorF`l4(jqs}es4$XqZh&!FD%030T%5|}&~5tA8- z#psv}$0gSL^TBiCkKrul1CgJ!^yY+m7H16(^Y;r2^YafQd5~h&2wzuLLfH7P(%|6I zNN%Nl4rU~YknXmZn2Rqw!}TG~D)m!E0bYu@47_0wFyp=A(eDOo?Yp|fea{X)BVGzi zY)(sKv`A}CRI_HxsbPMIo*&3Vv5uJalCXxkbG7^M)kHcIGQ<+_ePm3?xgk6uK&c4h zD3LYH@sp9p8;@_1Toyn*mPFs1R2gWU(5Z(APDN+{!#WJ6BjYYQXtkuaw`so1EG+C; zo9pM78yb@5=a(1q#OFc8)U4TZ;5{GI|r$s?@!<@|{rVp3FHt=+-`R^YNg*lKjZY9xMg zyz1}plk92bbzn?wB#zt<2BO1=wvqwykQZPX7UmCFK1?4%%lfunVp0IY)Vci1u`N}b$D2!K0?{!=%{+&(jq$FqyN;{N%EeTtB18}r z5y5`bFCj`*Qd?U>3LpeD!_#vHU66p@4C<7-q3<8#RQPVW-San`F?PI4HF*#u^D8^-$Tz-OzR?5U_oHG3TVsg zSpp3>@?E+&D96#wR#H|qc?dEM!y>~V$7cyk>16U5bthNF<&mNO0U@#+->SKgQ&a?U z9Hc@>2$SajXz`yP*do|Y0|_{N`cy8*kEv!zIAZTBaxavgW^yAt)_3fffGppXD2`{c zV>7mznlJ)~fiwqcw`>9Yn)&;{RdIb3(iH`S#imuOH*Q?LdgIM;dAackIXMYJ!Piu{ zS95Q6cE_?TAD^tCj56=cpik4%I!VOTsV;FuqJ%>md!(S&g7_?*tnX=$eOs=ny8iDGw@lv`H%@&{ry>&Hf(sCzWbC$Fa_^z z3k$4;mjneDha-QYJH7sr_})uIExye04Ao8n=pgb1mYxL0rA%mMs!` zvjDwVKyQVw+YE2-8E(FgEVA}v*1C0B@SrM$`!TGx3v*P_Txfatczb$+MfAx*z0gfz zl!b>(Lmt19apbjwH+Zwk?3JMncoyoi}0 zj0zcJJN~uX3$5aQ$kLx~!|Mmqz9WRpf-u&AA~FbpL3a$TzDwWKRaFVjm&MPX0OF3u z6?0d~H~wyr1As$s2wxvJ&ZgFzaZ~ypjJtJb_V;H3#utRi)y2i#>oMdO8kX zXqGQhm`8tZh)>27yf?}>7INfgXeKnY&a9n1vx~jW2;2x&UtZq5nKKZJ&_hmIGbSn@BZW z)Zk6kMs!uf`)!uOKvU#*95%S-rU4vsx+gw0EiNG?C4q!MyXb|pbh2xlDWSKnaXM%FIi$a#M} z_=I>ZAh87;#zg*mO>|&jbW~7K6scG^IM~y(P&m1GG30GtR+KuRXB`m}6Y(Yq0`J;R zuN}+3R^;q}<40zjvCdtQ_X4Iz$C7E6_qNg*XhDqa7ac&>rjY3O4|8^xz28|b?J z>?lS6`&|P+;=V_R?g1p@n^IF3#K$j4O>K(rW1hBSh_6p*sE;p9uoElp&{gX`nKN&m z_O{B<(8`#Y%CNA?n9sKA$mUyEe7r-kM*Bl1+;zd zLrlR;L+_2->D*W2xXQlJ4PiS*eSrZ}cH!}WBhnIo>(FC!4)OB~4fXR2Ay31ECH>Rl zN7=eu-6C+=wlaH{7rVSkUm;(4dU{|AoOZIL$gt1G@kE>VMyWcE-!@FuQMh(<&&}0< z?Njt2q3@sKSE;&e-9m8P26;sU{*HJB^v9FrBHBKf@tzk08_1cBj=o#G#GgDTasyQT z8%=^Ek{ByI2F&Uhz}b|u>>l*s)+~sErFX&m)RDy@zQ_zdp+eX5;+oz1eBI*OTJ27> zhN7ZbY?UrftMs?B3aUu8gs~_oDHS$q(g!s>9zH%Ea0KZLZQ#Rknh)nhP|RE>W@L!7 zjxknM$=Bd}==JD*NG}ihgz@!)_}NvM6NwnCn3cIK8t3RmFHT<-;?I}|f=S|=Wx5>Q z*}|$S&8^HSjX>2HL6^3q+Sx_ax_i_?H+*Ijq(oXe{r%eKLrUZ(aG+rD5}XWqiTkF* z?-OINH*`DW_@^NE6eFS(k5%~unq(){OJ=Oz%BnjntEwsm?K$yWtu9Z$2pqs2OwCKN z?r;XWVruMkS63(;#W?t|KY}$CSc^T%N^ya6F(C{EP9xK)MNZAIS8}!`Atk1bI9{0d->eBlgO z{@wd3Lqq(FJ`_6-xp{!7_V)4d_V)Gl{&K5cF!3Kq>8mlqnE=jZL2vK}1Mm#0mG)^fLLPk!##_Khb=axse}A=DDzCEC??^^SY=jtZGLE>izu-T?<1w?$K4Q^j2o9Zu53W+&#Q(h7IeEJcjwKx5Zzgrc8yB ztMI}=Z;zB)ii*_lfFXz0+)Gf;{ggH;iaa{aB$nieUjgp8-{>#sgYkz`@M(_RGK1>+ zSSSgIL8AgX31EMiahQTYHEpEm#@~(98d96byYR|R8euH83x}xd!Q$GQ;*wc4CBnsmg3eA_9%`PMn3GJqZ|}!+VHge2-Kg>n4mi zUGV~jsj_(SzJ2@lE?$gSVZVYKY%^LyKBv=KS+IZ(_?W~+C&kAn zMaP-=w9NRA*ZhxWkXB1eTQr1Grt#j@1gO!(`TXdyusz5|jjFH=8F86q#Jg zc#G5$z{)hq{(I6Yf=y!DdSdUsXC|5XJ&7Wb-zy3DeqK#YZf;FY-u)!>?!$*4pf6wj zmye0r9P^29yVq~U8T(sffx9PzUxF1d z5P^XS)uVY@Mim3c%6k>Q7q`qKGkcdG+PU)}XD<121y6cpN?~PXL4H+L!4ps|WVy@F zJR?3mJ3Bo-!`x3T*kxsPinl^H%**!nPLqJufZydl4bJa4?+|Vn`(m&^>HmQjnaEn) z0kytm2Y2l{Fak9Xdgqk9>gqf|E&n~(8}uRZyV=()EiN@ZJvA=P%(q)0nVB8p=Fm{` zA6r{TM>{)5{s!)4ZxQF@u;^v0^Q7Tb-e@)Wj!!z}Et5Ys?GDx*3=TP{3)y`$bf*KF zhjz-(Q>NgD1%Mt>?{VAYnU%GmBFeo^n5&h&%?T}rMyI&w>maGTTjjrnqC4;0yXVe3_s~v`>&V-Fp}e7?qP(%8 ze3E?S&*bOk6%^#<6buBIXT)V>XT#l_2WSLGuzR@oR-}SWy&nlk=Qoase34}~j;GHy+ zPt()cJHhBF;Nt|c7wZ}zyT|k_SSh@w0p?;b;fG?M%YDpwLAL{j7@R>#DKA_2QLP@N z2_?DJiLDt>rCy!4yvTADrHAe9pMwO^#rq?If+Fw(39Maxbe8HCak)@nUy~YzCSp`- zjeWM6Rm&6`z2Mu>puOPf3BeLi54>lbWn9l>A>MNcR0bQWmt_oPy~OZ?c1#IB6f*`* z0U0>qduacn@x=v|OQHU|vS4+k_r8D{!PAALtSCyJ_Y>%7>^;^NHMJnKLU z>-jGBLN|G;u&{+rTBsL@iwhRHNVsCHJ?a>wKYw`U9)3CLd70ygK+%MZDGbhTudi1s}_l(D;mu_|Rl4_lY*MoNeZjWoc;* zbivy`4exr88VH#IzNWwf|4_|l`3l504C<>>ZX9FT#WZ*UDBp!&T3WWys3Msc`WgV| zpKi0`IJXawvO#fwdR<*;NJuETjXt1?_@wtWVLB}o{4G<%5;C*m!%{4LOswiB*|d^% zNl6WK7FbkI3fbNc_Vy0cJQ~b>({u{EC5jvdy)=NJT4pV0#!YVs5H9tQ!G8_2VdLHaq z*O2>ib6do1HK|rsX|t?5o!i=+JIR^AK+6qo+s1 z%o$zeiI5N&g@^ofTyZZ^;9D5#e8xH5@C#7JCgp1}(judzjK#{~D{4HlYu6oj?Ampt z5Ra2xSvR|~qOPt|6@IPnvaoU3tgWQGJbg`%?FAqNCfPX*$ z^>>Dm13tVdq3|Kg zVeXC^qLrsuiMgb&aRwqi zcC9)$r8d#5@sp+2Haj=&q*YpB-=O%jcYZz=&64ExxB_E6$reJbv%*sgi&Da~Z2V2k z=S)JXW@NNbKly*0M)&tei~mVU&Q;gW2Bcd;%o^WcWn;^b?%yofiXFC4>g|{B>5D!x@uS}h zFny7DQ4=B9Iwvx{xHvsB$J)=_tijp3o!o~CDBvcY0Q$!{bTSBa#96NMMVynRx*WOA z_wR5vyji&^9a);aR8{y!wn*VWsWS4M;u7*d+A;_WlzY;EIaT6SBcMMkDsbdx8XgV<7e zJ})E&c!kqH4*ZM}6~BLT10&ujbg6*IQ9e?*5w@e{KPf3WYQ{!IdB{f6p*GyTfB!xA z?B9R4bw1ole*dg_^JmSPKMz(Nh(~|@Scv`h3iW_{$p}l%&rc4^u=bm1IcJh}8#xH2 zR^rv-l6+i3OZGTT3Jjz{&dyU@Cr^eRH=HZN=bT|zJm0$k93`LShU_fdA?;U|KP#y{ zGpi$MR>8u#mh0$GM;shq8hTm$-vd!W!O_vdK~YkhGniO*wX%s-YnN?i-7>`%Oe`qj z{1!?cdD$cIju+tNAn7T@3!@Aj<_o!4*WRW)rAou7EhC@r<5TI8+Ejoj>Fu7%L)L+wpB9=I_Fuf zp%?etxt<$(R=n8FM!IE01qVk)1_wt0Bd393^`{VHRS=zCTACi6Zyjc014wp|XNrqk zsZ*a$m;!bcH>^zHeosN}HvzhOP!`94oidJ$Qwq6J1{F#=2k-mKimI1)bgZZ@oTInw zyE2$$JN4N?z_D4-Q4eU%UIXl$m}Qcfk&zghYU!i0oaJaepRCKw zY@l^7`_#YgNoIQcI69K);(w8zrf}!~V0X^x86@=uD){j_6h%+fARy43QaKFK;PS$m zE8Fni)s6h#U0JuKW`I-=h;H7*ZS_CquT7-3}_Faq-G zYWm{=yD1FkS8m?AX!SHZ%e^EMTToxK(yUYC%D2M7C9sndRKcwq4{z zK|zbSt1ijPDyhzY)k-?!6jSVH0b@i2%FsTtva=S2} z85=qL03@k3BlH8i5c_nY zwisfv$ilIzXbk+I6vNOD{BKHu>jX1&y!>H?Ee{nw-FS5C)?*FNL71?rdS(?gE>`{O z86N5(Jlou?*NZ2%hSyd%G*s7wZ|fl~&~FX_T5ozmJ#nHMco%(t9;b7FIUxAbAbwJ< z5K|2LbpmxR9GTC;A~0On_}r*qUFj?ytoz<8Ai$gWRXW7`WaZ~)6?j)c!0!3{{4VMY z0Xr8bCuj8UpNv<*-EzDzZkH(0CW6&{j7OdE;&u{pa`^6rxfr}d9F0SFxwW-9=;D7B zHr*{u5Lx{0=9Fpa7`{uNmeTCTqjw!vRyG*D+Z`YX0qouL**NHv@O@tlOGET&$7sGiA~ZD`@6ll?b^t?c>Xsa@oQ$ljj9iagjW8Jy7kA2$sgqJv z^4?%UfTzsg_g(P5`8)@#2^)Uj==h^S&Yw6Ytc=N~b;*U@7; zcOBbaSzB9)AK@Kn#?a77J#W5A*1#;-Vweew*)r@}iU5O#o} zkJrNh69F)|^3){={{K!-c3{Nu;Le?gwi*%vKj!B{BA`K&B<|`+BIUWcS(#Z`nNC0n z7JXOB7pyatG2w?FDOJXy1x%rQ9EMxULC$zK7JG;q4atc5V zX#q?PAR-(Yd0r&OYUF7RvP9uD!QT*!xpB(;G@Jmq0t7^B)6650&Z6smB_(aYH_&`jKb@{X+68xI*s^H^^-iNbMb^uaIOj}IG1c9f= z2nM1j@#?PeD1VqDF%TvtQ?f8SK;NLR@0ODSSN)rt{aLV|#64{$)O!P4?$6zA{!8?R!3q+ zK!}IJ!5YX2q-SNNQy=480Ll!^PejB0;>;#K9Z``D0D=P7%VJpB(>@9_NfsjsVHm8; zds&zoz!yM1RU`yHh>L?2)B(4uQ&Pwusi_@RkQ7MG$VjCwAtB^F5NtdhV35OnE(hks zz@{B7hw0dGb1AnGZ_wcb`A<$c^*-j6EKDJg%n!#MKoC~8)a7vEN~l> zutpfyl$SL&mX|luPDFO`D$Ee9S*jo}UOtj{ubdNTbabBL=s3mM@k)1~d0t8$*itEZ z=7EAaPm_<)HhB+AbxsDvzPlr)dIAAvEn? zF_gQ`*6r-jIq@fdoN0r@L~y3fhR7hC&=C{~A*ZEFyM*K7XXdsG9L#^cC}_xsWo2C( zSV>YSmSKis(+oCg^SAQ|#F;Q><;tenK-GZ3N0jCy0(DV7LnwqHDNUVIVhD~6xHhri zD4r89ts_&{Sai0p6kNqQD?57aik7r@ELqy#zGQu9Xjn){7?=eUjt&kU6@G?rK`U*u za+vRAwsfBM%i4+EpXTPKLBmptlY@g3+FHg8=ysGet2ytuP-@uIG-MG3-6YA0BT8uAmh zEe;J24-JWk2qESN2L}(TNJ2tQ4Sm4UzRc0QV}WY+L$R?@QShM;KJPyJB{#AM1S$&E z_sQGhYnU2DDGxrRtHclTJQ=8_8cFN1PGBUbVzGu;qV^CVe+#gMS^fHshfy2U|si_SObf=|bje}KRw`#$2DJgMr$;ol_ z*1v=WP!Nelk>bw@3B-f^CGLULIm7$7%3VQs)CmQDPkE&-XW>)`^%)7=cO({83L#5Z2E*tpp1y5h;5Om+ zj0`x-b_@Gij^+zBs`<~SrNza;dFagS>@2JVAaA(a+qsLPy}dJX(>1|N+zcF#KC%t? zZHdela%8;3W)jFZF#)n+W+3%sc9)ZnN`9Ab03G_rHteHC#PNt#LH&kV`L=%gIvC!e zpIxV4GC^~t+v=nTVV&^s+^Pj#|^?X`6oBz_xM2tThbTfcr83EH?(xCD9k1$3Kht&RDbMJ7#W zlar&OQj(+T$}iTE*I-`KC4q=rr@*j<6^u`8!FPkIZv(Dje9O?^;mWKAnL%)YDrapZ z>={N_i+jv6s@Ip++XiZ2_6>eohCs5^Pt7mz_4e_8Wo3W=N)iOL{W9nOi2D|}sH*M% zwf8wNydT43cnmNwGYpU6A@BD~Ku}afR8&M%R8&+_Q#4G?N2pk4mRMF+R904Yv$C?X zF1M_#Yh^bp>w3+~TUK7PvMwC{-+g8fFs**S|Nry(mtW4Dv)5jGoweUru% zepPSYOnbjm$=D5}$GC>iojiHYoXL~t&gHyE;ahroxvpo5 zRw(<8RcqI-VsY!&OFT7o!UW~nz)|i_bEnA@o=8neOiWEpRB}Tnyk@B3Oa1-)K46D> zKK126J%5M3oz$|Cq3(ATWkblGht&@3_W1+pe^W6ptCv^Efk!l1GuGFXctkf%66Ix5 zQ$3E=+WXl3osWf-mz9+-ubw@-dfcp8<3_ixTh}UHhhNCc!}peUqwKh@T_H_>HY+O$ zK5I!zbzxy)5$Y# zX~Wlgl`Nk%y9Gy>t=KSe(xi!O7Y^+E50;4dA?XskBW+phT~b0O{T{nlNbYu9$WqD zSYPS9q$jl+i3)WE$u9NSs^wG&_X~u(UNdtMj`j>^KlZG_;5WQxM4LzH@|m-jFP}ZD zMIB?r#o5HXsP++CoII<%osy55vG!bRmFnKW%5+9yVTQMtr`Frkzyf;CqE8U#Rcj%u zq>k4ts87NpLD)@gr4IXd@L_@h%RvLj?4ob5`=W~ByM#ldi=joQ=?mEEp6ydBHhCFd z7TIkU*^3kPmT!o&qEEvb^xewCFxx%JM=QzBUUlA1rOFS?Jzr{M+lz{3Oe`tR&Mqm* z_VG4py}YzaKt9GigJiW?q*LwR)b5iNIjuS!{jR(=YiXajxh!a<)8qwBY|`eQo98c` z^BaM!7`vfF-laSUdH=?J@eijJEE=MVLRE|IQ2b$%|h>vYdsal#ZEPTUAv%Sy*}R!IE;Uv)2@@Q?^uAT2fwKGTdB=GIPh! zp))37^eoDZ@ViyuYuvYKM%CQU^<_wVqoVmaJ^7heCr*S7NY{KE|FM;$M-LZPppbxokYJq-R-k^rF57pi)%Hn@-bIrnp|!*?-ev_d zUQGrch}dU6m6E!q!4Nd3>$i5Gueb4YrKK2U)y*&X^_DpWmn=cTq$i9o%2NdesyxEh zY}?CXoB6>1s812%Y-O8pKDGhMfE*sE7ir}4TPoU>Z~G?YS2YM_Hi=V0n%I-VB;*ex z^ZehKgjAXO{6lRvAy}U;)6u}z@=t2&Z!`K0Lo;9Pw+r<-iJsbKcN4vRW|Yk`6vZrd z%aDiNNmThJDhl!u7j`= z3_G>$g_NeI6xG<03IFVIVwNq8EfFxbyd|dEo}Ru+m)QIv=G%{;eA~`=5o?{QCsAL1 zisR93`T5%xHe78}8gx*OaB_q``{o^JQH*`k4{96H z=k%S^IIvA&XDrW{QiWaPFIB>-G43yYrL#yFP4B+-)_d03Y#+6w{e(eA;1xL`LB4(7 zXk&@6Ym}Hra*eQVLD_jlMR|%vHGIJ3@o~FhS&Y-LW<(NnZbbiX`?Bf4(ki~cf@ZPr zEg-DATHm))BqevhJ$*#`l)B9o58iy!gEu|+&_fUM7iZ1FD$%pou!pPT;;J*pPoF-% zyj=Zw(!ln^6<@X%yRHYNW_KUIN@n)A8+{Js?!Pr4+dRp~&QFB*`1dd$V`FfUpSQQV z79`$R$Y5Ka5_>!QWI+4XmpgydR$RUw@b~)0xoPJ!WuR}BC)WKQ+DmG>Sd&hDJq_$+Vc|4o_#w%Crn?irH7hIU+H2Ka{qRjyB2!YVaVaTrzP?&`CfoEXY^7oz zW@}lnWMTK7h39Pl+YBuI16yJKo$bR=(*}x+!frRBqIX~6EoEAqFm{k473Mw~TZYc@n5HRy{0gETjwCJroVgI4xjg*{$1$QRcL@B9fR zc7y!QGs10adXHvgWMu)KE-s!n&wMfV2!V;1^EC8aXO0(xI#?8jmE2!zR ztX4k`YGijmIH@kyJ$30VIS)TlJxE_dI5lT&3kDNP{=yXSix#Q7XkA@Bm2Z^JUqwC&S%v4s+cHTa8;>4n%H4}$k+DpJMs;eCvXGFdkiBq2^xybJs z*ghj!$YOaATK{ZPYHyf_JjT<1GW9@+e6T|d+W+;23HbqV1*sHgGd zaOM0Qn3n^84_KqUOio+-a;Y;_cMphhi&&vWFIrr7a}#&R>F71Z#p>#SV(sfjA4WH- z=5=42lZhH5rL}j_9_X?Y99d6iGv3 zqp@9}dl~i$taA388Q{K%>+0(lc8D_;aA-&j_6>wZgkzsTcsTMi0)4Ip<8;yIikXX9 z)P+lPuR((K&%*3Iv8`Q(flD}t{*%`j+O4d(GcuFZ!+%{@T>aIeRfB%NZ}oJU1Q^lTzG_qu%F-&hCN-vBW#N5 z5Vpd}eVi|Rz*Y<$I%PE6!h|V9`RXmxq@&?%q{(DrhMq4VmGA=-HmW|oiCsT`Mswms zus-R~!U+$s66Pf&Jhw|YAi)zba`~J&E0)ilvpknC>1i*o75-oMD!ZY&r}#)E+}X3% zAD(pgVRAib*s%Qk($ak8ZRL9&6cZb(7>i&T61HudpIVAtKH&=@_EcUaXZweBk*OkY zRY$ceO9{V3yOf!;hR$wnojnu>G1^_#R7v|i)e?ETobdAO>|us%i}H@@ zre=X1OYsw4YC_gNKQB=R#a^>Z=k2Q2p+Pw=WVMfa;oa3Qd1{|p2R1GP)N2zQ{#}s} zeCX`Vm9rpu=_Ow;Av-+1CRYyd^fI`3PtoB89vC{bVPQ^qc#b8fJUk~#S=;ASen&LC zyv#UZ&gSJM#_Wk0Pq@LayzhJxRpSnS#+vHZ-m|Z3OIOb~5xMhgj z%bJaDDl4n8sAzW9X!T5sv?Ob665KnJ*&bLYzfk?y#o-41U-Ec`CE~OI_3-(Yo;Oul zo|TN3^kDN!fko9Uz(M(XSZJ0IOn>_e5w-1&fs+B_Z7J4 zVl5EsfkUvdD42bLN;zlxn5v=TqaDxLKHA~f_t6eV<# z=j7zrK6Eiy7U9`;sTJ#&rN6@ABLVit0ZsovgKWP%D`yp>Zb3zLo7k|;J)M>zaZ?iG z;)bwCl;@CH-*fNbC_eMYTgnp3Crl`}ebwTJkZgQ*JVcpdJFm_HAGUPZ+J&E@@L|K6 z`5@nkJS^w1KT)N`G5`->e@k-Hj_8;j^OC2p%usfy9^cl1Wqf^dtThP*N-f=Axec4| zIp1SM7CxUf-!-Sw>c)P;_bt@3JnY3?lybGCuj$#Kj%_WlHE8YmDRv&)tRsW+)2>6| z{dI*_3yZgog9f|!&J!|N6#h80uxkDm&(5fN;Fen+c;J?8oym2oPA64Om{27E#p3v( zv6CmyzosUtT+Qk7Ae-LejPTk)t>Vy~6$>0?!}75od1hsPepYsVem3ijv09aIoGb0^=H?B#IYssU$Se4#@GnE_ z)*uWtmPn{i<0u?fbSRc->6DhP+D3G0KYZbT4sZ%$4qElo&juB~fM zN-QZ&NM0o7H4NjF9#+ghz=(xPjNTecdNM0sKPUBWtT~n>FB`4Wz_!PO_O18=arA&i1hOxHPo71ye!0xFXY%6 z66xZR9uX9z)ha(;xAuY1#KiQnxl0y#; zI=N)pGTP2m5M&zmO;O&`(UsTct}HGrDk&P8l#)>(jtsm$d;ajU`Po^CtY%_LZhd;j z%%Ra)Sy3@rOVdooAxXyksVT{mG83yp)con;RnUhE&hDc^F~t;iXO=9bYB*I@tyCUh zlUJ_nV!AaucP?kIDMh`#HXZd|;IaG|M#hl2PiW+tB^~OzBrbNTVwk5v_Ocu1=M*h1 zFWq34T;!$BK4nqa!^*OZMSgY8>;dI{S)X8F#|st~4_#1@m+a`~nC+?y&5utk@X@BS zg*R;XaI=@CQ2sHAZZE8V#%F-b!gMZr=unPw(U)nCemF2pRKT2NM_O9!|CY_0 zeCMRecTBeZV@c!37lpIqZ`s0^fpF5D_ApRSmW<*AR1jrH^NlRjaw|J>XOH2k+rT=76Wf)Sl+RTWYiqVCrH}arz z5F^_CKX?V*9S6)@LbZjO3eC+h;V;_9*GJXDWxzG)6 zxYA*A6AhPb_G0goey6lvbaYD$w4|h1{3G3mIx_Drt_}4~7#8B5@onVPDXr0R( zT{L=Kl#h#pgNrs=r`NbRUNx(_l%*^?pkRKkJ}?q*my?v78ysYg4AkSRBGKONzTw`{ z7IUp$!;kCv6C>RF0-sjCY6H=D2)+vT_IOQi5-#qq!J z8}D!XNG%`zU3XtLsJWnK0*1mGG1nY4Jl0s)sw1M?w)OAIzJa~_<3h|XNADs_NU$l! z&DD3-F6HO@TxE@q*3Hw$=q%;eBIfeG&Yw*i(DlD2qz^0{;$e<)^D4IJg95$kOAEKT zx_Ef`glQc8yj|g}d%2!5w*P~6)Balj4?0%0U@_SUuM?vwSRWdWqlv?cOLHjUgzuVdF6Zv!Cg@X9_f)`$x_ebLX{ipNd)1h0o{8sPq!Tghwsg>70G!-+mz7E(v zB@(lXt2a)nyxk72QGVgpIDVVh;?(j3;ySDnM^;oo1rJkU0Wb#sJF z@tDIV|8M57=L_?$#T+*8dfOZ}Sr{}NA^v?zgU;9kY?(BFQ2PTHyTLl+6RPX#Mzdh$YbcFTLhl#!9L>cniI&0S_S~kq z>*4Ls;I}u0-nBiSfG=XKZm@2=pTRUI@@71(q?0@kaWv30Vu@Mv$xWL!@x1lxl`h2R zl-c_uea8#>X&{F2yG?B4m({OU-}>G!n78C*u1%Yc@tmGX>Rtto^|UXzH+n zG^}iCl&_!BQZg|vC_6JLQ>zPT5c**BEQ?{o*waW$cmSocVO!bLn>X9Sis?S~9Ulr? zAr+?UG&+q1BMKNNEy--mbrH+Q)KrfjU%A56!j`aCEKTMG!ZNBpLxYqTp?d*7ga&g%xRwxFl zCw!ju<$2dXv1&K|TlK{C_uY4&GUSOTFm`JucPWCuujsrcyng~dTo z;^VbODPqZzo>5DdOuhK?qZA8-6fa_ioYU`|t5JTGQXs*C+wZHRF|yIXVQ(1evPf| z!auyd^~SEce=J(`kGif?Hu^%)m)YnGEJoFKrb$jqWo50Ki_6Q4H@EVUui9d~dRmmd z!rs?e4s8%$T}uRJz&hBzc7T`GtB&PG)oZs4?uJ z{GBCbD;zv_YGPCTbty5LJ3Jg#l$G3(zv6QKf~(QC2q30q>G4=kOF^5CWdUr2@=f;p z=1TnI^6yaj-=T>~(fOyuYIdspciQ;R?tPh+qduc0DO5|DcQPxVHS5$V?8tg%oixTK z!^_NQr@?ks%)L{Y@zktYl2`W=>-g}sf@W^-E9^(;!2xZEkCCzD3*9&NGA6aL*~%pL zAbS8b#i04SorXz9ANDrmN?VVjNN&nxJC)!y3*|Babm&K_aPk|(`e^(cZ}8&JK0A!E z$*2I~&bDx@dtstrVa{)iA1})8VbG{$sgZreswEF0Pa!5bc&qBwO=tOiZ!maMfJag9 z^DLguiST7uBl9*EAvp3)~JbYyn?=Xg+6#g`#-kk<%3IJe7X9i7r;PrvBkmuQ#G!L&1iP-BdkgC zS6g&%v{K&bx)WQiAAMxy^Lox^FPgw#ny^UF6@sqRPNx&=R^FERpxU}s@}JOCG+|LT z_ri|T?_kq_BwQl>*tpg6zkR&z4u0P;mZzNg*!vq*_M+ZrSOQ(Jy|Yat zaInVwun6QYYum!#S6+=f`-wU>7{{I1yOOW1Z74*)f?mML<~PJ{S_(+s%FoPAxoFc# z5ollPqaBMDNC(;n(VOLMtenYRk&nvH;=QW48`G$CG!_*1gF^CEnJ~)ZuJnUF3>@x5 zn24#$Jp%l9^z)aJbr9#(2A{Sr?*^@%zelTgufk(j4il7$t`SY>Zi*7K9fo2|-w z9XGgr$!kx!-LN!n?l!Y|+njhwQX8Gt_LZkj*&80#wov&8I}`|IqCXXDD&jkoe>9iALT`I%M(u+(smT;Gw}BF;OaWQYSKcQIvp1_Tyf-^XtQ;G?1;NH zy(-L=b7KkT8f|7+u&X>|BpmSK6Gz8~1uu{tz6sF{GOAB0DnVxpe}?x8WHRl!ldwE-%yF&>kw0J#i<7|<*_`g zT^TJqFgdm)+Bz%>&)GNAmE+3UkYKHEsNSd35a8__9w3(SQHP3q-;f?aUx3xL9XM+B!y!7Ogtmv;n41;e`2C{lzlAgetpflOi_yXojF0dk|21Ox>5I9V zj(s;P-{j@zC5^PYdPpN8L;ZcMg)v@6Q$&h~S3nl`@^KBcRC3JJw6oGJ8AewRUT6+> z)p|%37QeW{WUVzh&EV|sr8n0|I`^<#?i=E3NGa~XrUOo!;Gelta)eLGM3KuDwWvch zWFAVTXfCiYC!`RMuz&`cgk(51EYiZ&lB;HaI&>5nsnNu9+iRqzByf!=FeuwBaDfk2 zAEnB8gI}-*&kD9gghYfoqzusq8lqxHa9_8Sk&<7qS8U1L?c-*~Z=M|H>gC|z?p&`K z;pHfeE6oje2u;qNC3$9Q8r+;Ujt^diHmU))DgXH4q?sl&d>*m3I zlZ}2_H?yCw_~Yb;@7u&j1zRHVA){F#VTp$G`b5{T4A$<*ik#fsorgNRxH%U&ySq9k zhdMgBpLdm_BWJri!Mj1@wv#)eDsj5I_im{IzDT*W0QJM$=FtEPwpxnS3>W4FRR?IX zP{hR>i-D%`H$UV{s`R#Kq@oN9ji#`PtEVTs{$qANmX+1io5vXm>zQen7gAcd~rkAn)XHl4Ot z6GL!O(NLDue$O^+wvU!=Pt0Ppt}0X5ZiG_8ZLO?Pw6&T`f1oH)2~+v>f$!z+=pyyM zms|1j<(J;e!^{3&J+DFbmMAKQs989O`jOX`n|mR!%He1!I?-vvbo>Yt*j z7az+KSrCtJDj^G?ec!$;2y;!;4=hWz`i7pug50+MvG*e0s9I=hQ0Hv5M`%KAm;6jZ zZ~j<3OZUFi10{=c2R&lb&*eYRszU2(NrcWcQiZ){`1rb+P%}h98C)|GTn!mLH`@!p zt=!oviIZzzB?)uXxSw~CW6ZM;{p(1iK^7q@gvB4ku;72> zAtom-8b|#ylhxlTIHuI!Kh~5t%+pchY79$RK3*;?uMO^5wtRf*_z-U4m9Q(bLI?{({jgz zvC4VLvB6y9ADf&sKG|$Co5qfg7@J$`VkusbKVpK#6c&XsLVNGa(iDD1_|@Bd!cdn~ z=~4JpEgOCCzxor>ix<=Nc}8*L=y-h~53ykMCq_1-bxzvZT1VaJc-sSuUJBA9fSLcqkiNyUNA8lUCk(#C~oxo5~YyXJJIpH-9=8O=WBQ!*>YSbPB;cJ@c(cFc>V-yff|`#l$UIImd2PF!U)&ODXd*<58j#@-Cy zXZlqt(V+05x(EBz?t!21tnQyrtDV2ZBR zKbdSrPqc})>>HGG_BH|KQ*DU*A|+wR2Pza=&9tJT_>dHXAtgjfS@X%7HJ_}G4D%}v zG**YkR9Q2prl(KM%uSnTiVX1e^qYF$)cSj;PQACjer!SW+BGLuzgwQ1S{9yZjK~aU zo}a8)ePT`K1Po(!;n9Yinc3MhbByM*!HI4ziDnV+KJjnJyrR{gtPx}F5xpNvp{Q>r ztgT~GTw<|FBupoR7Pf`=CU%30TBS4jqv^BY&9!I_#XE_njZaFgTfSg%gf=BH%$PE* zAg?|pCvTCjzEyVM4kn*FdtQhuD@xuKZ%Fa+^G+}pM}>K$kDf9o!mq5x7+MscFgZJG za$@>;a|?!t=nkC=^!GoR9d&(`>^zqgieA7eWDTDlCy!SBwfOn(3P>DG72bPIG zm9q0SDHA>~Tv$-BurPza){`Zr6fP_*oL?y3wX(OroMB4z2P>_r=ZBcXUSf`Z5Gqh} z?CMj)>+_om62}`VwFyDSY?CS57?hx`G>lIyXv)88X)In?WDXy$^)u(2BlApt+7aQA zMGK4Yt};cjJJ`Ra$tZIn$RTmANHUI66XO|da7^v@NVLm!ncrZ#7$pjW7_;OjY5goA zbxB_D=g!W}ot={-{^l0M4!6b*kHtUh@YuEZM2MSnG!H6r3ik_%{A>1fmBvPFEsu>Y zw}J{W(%hY$?RNHDwoAH6nhBc>hOw}Y;s4ZdT{2eAh4+ckf-kIXy{>Kr8#|EWA~!P4QAmOm;+pQ{Nfo?3X-~ zDbHjUf6Z3-2?qvhwLwy$InQj$HQ^tA>=gdPcrNPp@7YEEtledK@3-_NKaCPZWARpB z&gZ9loH38Km8pMAU)$wI{rNq~{cR2DRZ3L1{k_b1fw*9AE#AR9_~^8U8isF3uG7zo z%b1>(H9aG4mcA}|!|;ZOrd{Ec5#^hGjX5dvLd>~y3i9XXnnUNN<~Ht|4avv!o|E2^ z@>KnzjsHD4)iV)QYfiV&s2S?UzgQtpkk%)VMYErj`&feVZikeIOz2a)sUs-J+b1Z< zCvxp$o0PYar!CV-}Sb3i!h4)o<-;Ty>o_U!+dkK4r8XW zfdw$i$;u6Fu<_*Vc20GcZd_<@CY+%Jk!B&B7Td;6zzXHx&rZ3 zgCQg?ILlX~6^}*f7F^iR{#sZ67OO7UKfEF?a#KcDQo8#(?>L=jU}Uf%gario>Sv^H z%1z8LwJ2YD__=vSYTxkk(K=}~PTsNH*WXR!@@QmIV3E-pn`iXX6qUM}45PwQtRbF` zdz^f{v<4PbY)*(y&2TCkAg8t(7z;pOY(vcV}-sdaMlaQAR_a&`9cT8p}q+4}?k z7QPd4!pq5m*@1WmTn3h7vD_o3lDME7w6~CK{Sz^Z$1yf;QOv%k@*9R!h0IDEGA?Y+ zF3xw&37wFbFgv7b$PMN0%crk!_R%`8n7$%2d3vZR*1SUN?4n&^jx~o)PeyG*USknJIYr~&AujUW#&DZ zE3=w=HkrzpQ)tL(T)I{$&#>VFE0~9Jp1I@XB#)k>dsb}Ss(iKw=`t!uhyMZ6#mNb( zr$16fw&LXlU_nh!<_^t|Jow=9#~yol;ompC@XRf2|MIlu?d|x(LVx+?|EKJ)!&Ew9 zz*^sg0c(9Zl+SnaUBYT_-@zc>DVaU~%{MpVAA7Rx>#y6sfeN65T*~3M@mmG$Op9$v zP^`G|^mpE#`p!G`Z@n}1$eX!uzE$_mTlMe0TmSakYTcmW;J*#EMC?FU*BUiwOGNo# zPj3EN?Be=*^Jc!Sz5QQp)tf~+oEqp(_@or5anuzrZ^YoGSoJ!kgz|z78^nuvoy70I^t^T>_`}(V zKhA!%t~KL^A#4hFfWM9g66%Z=4Vp3b ztLxJ1S1x;|m9+#b3Tp+O18k08NN3R}i8IK;FssNGZ^VrKE6TRER;{CA^njkUf6V&Z zFy6I6iMnBLYHeED?*MJ-&QFU3z+5dRkpZ zMqOHXLIV8!6T+1j2R#&i(h1?BtPE_&F~|Ia@fdub!>>NF_qC24qi)|ZdPm2|+itsR^51rJRPMOFa>tI!+jm^{-hV7dx@~)! z+WcHyjunqBd<_4tD#DP*9&6sa7exhSY91|>R`RK$9xYR=$2_)?ZB#49hpbI$5w+?g z(5>qIPMU!>&gce&5Y7zDsM;=da)CQt4CTngi2ZH#7$s);8o zO8ID-;8(&T)yk=~*wSBx%$R}k6!=a{4F@qs@T^iWo636HHnRWLE5s6dzO~6Z3bJMh zzGJ~v$L94_b@t&jRO-ljQRx|N0MB_go@2pH$52`}Y-BxCRaR&5ZMk+ctuTT(1g&#$J14wc>j5}_b)_)pkWyN@jC>gsfx6bzqe6wsJCgt z_Fj5wmEPht7^_28oyGw!6lgWgI*tD9m^$|LlG`gz*$Mv%QRGfqfSKo1rCp^a|qgYi;uK zpoa#EDi6|!?d*@sChV7s+_yQvKKUBhxZ2-l_;qDv*9{;1PA|YLlsrDk_IFruVnT6o zLSpgNm3WC3F%n8j5(J=EMyc3KykCk%i$aCYT-vV`D2420Hcu&Fhu9&T?)zy(58}+d z2M{LXY=w9F$a_3+>Ia^H+rT)Y4@W8VhUq)+nWvv-hwO1O^MQly#TOuD)IEp}%h->u4b zp!Z#TKhi;jP4H$1`0fNLMN#eNgW`=1hj(16GK)XgQ?JI`ig<~(c!e+&Cic`z4&6uC z9ip7~r)O(fEs`_|)Au{~{O|*k?Wu2IHz|uiccAw;(iXckMXTn_&E81Aryj?JUjr|X z*~(0I=XnLE#r}rpOcu`YQSA%LEXXwT2PFt>6;F0EIBf;b#7jJxx5e9GE8jg`xdu*8 zJG+lO#J)VQ%3p=m{5~H7xNCf3Z5RU|f}gSc&xl-OX`yJ9RZ95k3GWh&&aU(yeCTPn zD1-pU=wcMYFmmR?xQ=_?2y_C+0k}EfBx;iCfx{RW!%`sc0?uLJ0tX>Sr07@)pnGuK z2b{&h8E7dqWx#%Ma2bI3PPITguonPNXQbnj1Awo~9!L+quB(CLL~aEDc)5Yjy$v`9 zbQ5{txkobqJ|4LDECvu)e1+KyalH`78)4o@iNwO3HUj{?7Vn}x0w9i$9;gJi0|$tF zLFc<0I85Z{1t1MS@bEiH5m& zUjXt2uLjN$>2a^ey}lWM%zDTpHoS*efd&9+h8!abjRKkg@CofA3WH2x2oFP?u;ai5 zA_L+W$^fKmI877|8N#;%7l|TTNtpb}2!6)1M5apM1d+K0I71Y<1UN@z!PNqOQN;kR z(MUIX9RPkYcowsdC^i6SBeJ>yokVdN0BGV)62<2Ldx#PsOTr-{u`rW}Ff3Ek5Xdm3 zizo@tl8{c)QKIA&0CXt^0CcIKOWjVChWoT#KsQl(6M$<*1+bSW6JeQ1Kl36{Rx439 zx0vso*E(0L%IHWu70MU3{$Afml5&&^)Ou$y)BGJSK;55;s zCSWgsXOj_s@-6_sYw^7HEYXxbM0Jp%4)k@$iKar1sfUT`tw1NnYXJb_Os@dW5zPQy zgA8<`jWq!6zy+dN&A=I=*^L118`}WLHYW;zOmh%-E_lv`taA?%&2t05YaY^ULYniz zbAAnQfM|gUK$;5?cOmq!@DNe67f=iABf18^uh|NmAzD-nAkJc37at~Ck^^)ST?_u# zBJNTdXaTx0_QmrS6R?+Pc`*PvSL`Ob4$rOwzgF;V#dW1G0NU#z@AU_XR@D=&)&tbVCk+`?XELQKEIYUk5qYCjtoHfVdlQy|D~HI&Hg%Hf8{jbraIt1pb>1z#gLZ z3g9BqmPX(-(M`=nH+uo#zqOU<78zI#oFUp)3mhf774f(0f!##6;d&dcw}b!f$BA|z zeh1=rY$w_o0PH8aqnhZ>DBvv7t|dfwA^a|+b@v{kd+_|818ClBfD1(Tb`afH3Ekb?0EdVk2F)V|-~`d54Mckh0R3YHz)7OV z+lZb3%@aq7_Tjn@GCbJ?bQArh7C1)qR4ah^`*Q%qeHyYneTe9pYNBWLz&hXp(Sa7C z=VYK6I70M%27vc@0W!YONp#Qz>?e8=@n75uApMsh$4mJA(rKcXivjRGgzKSQKsV7V z;PncwudW6z68&`vaEz#{0RXSRc>$33Z%2t<%K>&1z3v9I6CE}IpgD~AZ&U+&iQYum zn@fOWL~kLTw~*eE3ZN4>P4qToej9P#k%3y^Akp7J_jm9=Y6Z3uz3T*Y5WQyrpuhL^ zKof9;=on~@Z72Ew@jqw=!1Esn`w($Hglr$4B|2UPbP|1pXCJiyCx||-1kMnB0@*$} zNpu2ooB++IxPFTGpF*ZjFA{xL0YIjI;`u+@0MMSqvy+F2{^biG&3}RJR5bv)&r^Wo zM5hY?@c#nwzUUzO5@~po{2RUjRJ5MZE9u9^dUD`d$Y15}iZXxklg!(SN}6KL|Uo2kL=+L_dJ;hXw%h zUoZikz%im95%0%p0J8pww127rz~kotpa}rYMew@_`d>i%3!eRQfaq8J{&h8gIRAxA z|3!NLJxA1?0ki?9iFz7=ix@1NSQ`e;5MyP)e(cxE0S*(BYKh4v zpbfY{%mKdZ;!G6B4q_NDG0kpbPPlj419TH}t_Q%=B?Um3t1qyNm>c-H9UI%kb9yNfUrq5z)@n8D*=Sn z>H)|w1>sY0U)KsihN)YL)dv9EiA@8|wEe`UgU|F6#AYCD#%W>=6#(MQMEFe5%}N0} ziOt6SY^2|q0~{tcCj&S@Y;GBFjM%(J;0UoM$lrwU`QSSr*9G;!MPdsp0nj(&y_zB0 zH8QXSI7@6%3$exEzZmIa+`*O{BzA2BaERE_L|`|uWnKW{wIE*0I%3NM0EDlo1x^yX zt^h#%Rs*n~*vd)(>0gig>)U{H#8&Mgw%Qi}pVi&O)*$^G2-r<*Z3=Ll*t!e=bnC%? zeFw1(px>~a*o{`;1hKZ&0InM=fP=&~B?5biZ8ia&#M%+R{WP&HtpKh!)dINQjCeP9 z5!(vBTbls|c4RqU15WBSuI7Dna_-x1hZAj;K0_uUI#CG7lb{r?ZbPF#sMI*Ra2| z0EqWgH2}K(kZu1#Vo&D)`-we+`)9Tid)5Rr1K@oCzYnYf&JugB5&-@4pnv`-u@`E9 zV@ z9l`Yoc)blCZ|^1cP85K2-nmHZ?~vta0kDVIyS2apVi@1B_d1BZ?+YOO7~&mU2b>`G zK{2q8*gvcQ(CIG*W^OPT+cCH?dDm zz+PgXf#+vui2bt$K>8;W0i^#gFQ68{vr~}i)H*yoV_bEI|J4M3dJ`-puZ1JJ`4 zXNi4T0JH*K#J&Q}SK#s0eqv|9_Y8QPIZ5o_mB2A#Ul#)hiG2fkzX2V_IP9z**aci5 z_AThXMf%_60EdZvUk`xqIV%92{U-$g?SIY@I}h6P`-uGjUOyn6AMor#1Auq?5%)jg z`A_0{jM&eJ_w#mQ7YS$vx{3V)xqrd4UqJsWe*fA@?7v9ozij~Cs~fz!5eADG>p?n- z7l615`1KY8`-sDzh|?b87{hROk~mKUwgTsfOZC7J;&K7dMce`R4rhrw)&d8JYYA0ZxL0M-E~i5rUn(3uc! z+6o*cZbrDd88}QFV;LT~m$=0VXaXQpR4oAcqpJbLje%@2pos-->^|aFgj-J#k82Hf7eJmuCjeoEkgEu^MaPH_tp;#k41Og6 zz%JsYh*R1^e3$_M|1#W{;l8Y!csXPpt_SuIA5jb-or)&lB=M13fpf%1)dRR6T?^n^ zxf;L~;}wqa3a=^v4iX=m0~{q@-3;LQI1{js_;_DnHE@pj1YB!yUn8y;h)--KJ_&M8 z!aGgI^T|ki@-gDI1pwksi2`;JuLDgTWSm+7oFrbK0U*vaH((ubk@)l_#AnC==o|C^ z(rCc*ncz7SY0qjVJ{xJwZU7DwZv>CVF5+`cKs)id1auIemjdi2-UQkv@R|?0`Jh{n z1K@rk(p=aIfM+v!H=ibcO#^_m79rl^VgPhYWB}ny5Poe9aE$m;&@Ds!WuU|Og|~oD z%LU@gab4a`e8oEA*BJoZUx#?D^}rG0D;Jc;*I7Be0C;{&HGp)t6$4$wZ^iwsXNhlLNBlMdRs-O7J7nIG0~{gV z0hv3xiSO(nen$;(nE0J#0OIe0e7lYjzYFQ!jdbqbPy8OFdrvz6KD%21T<>ioeqSPh zbnZJ%{C>p0{~+;ByieyL;tym1xMF<5VN>A`BE5%d0MP7-0`?Ne*n~fPg7_my^AWtm zqX@^igzrV1y+?>YhUbr6ApSV$9>?{GR^t0)U_0?Akq*Wo{4WQHKZUfO0^j`w0Qfvz z3!EeV4AOWOzYll;koP$!pq=>hxPKn9y#W3%AiaaTh`)&6FCy+s)xa6zFC)#D!Q)U1 z@mH(>(s>m$uOi-Gi-E($yD9;^``-}%wJ6{q@zAbs__h#x1Q zo%lyq05V`)z%ef1pCHXo!1o0Be%b(>A^sWC{-+lJ`jZ9#yfGHw|2j7S_xj)X8@fftLj!P{q_xc?ts?+D)Z(}S&}y4`6keB#`DbxZ!ZRpkc9OC=_WUz1-L-c z&8+~g=-;GUOuzw>wnYK!06f370XR+4_BN8xze(udq}zP~q`jjUI7w2+R+4st=gwUu z-H`ztBk4}?-G$$~4w7_NHA#1a=iO&Wx~CohzugGG7jf?GBx6##hbLHHifp+A!z0gp%8NO}}J9z9OdUeN4C`i~*a$3XLVGf7W? z*Ash5+UEtVBk4)pKZ!U`BK$990K%R!07zqh6tJ75r*VB6_s{47@OTEipUnaGkaPgF z2N3ogXr9|e((|}JkNX!2fc+#LOaX9@`Ly)nA(CDK&C8&9`7lX`wv+S<;=cmASL;c_ zyjl9|F_OBLkn}eh=pgAeD{zFQ*BePXjAw_z;|;`nvl=)_(pz|b#02ai>Fq=SX}yE6 zcTSV^_ZE_lBJ3!BzYAXPf!BLyNO~Xqj}-t1N&27yK=?meN%~L^ApY?hl0I?+knYFp zNJ76ReS)-3w3GBH=s!yVj*|4x!z7)oC+T0HMSmupT20dD86=%X`00xzeF2_dBJ9iE zBz=_w94F}vp8Xp%|HkjHyGZ&5a-T&S-x`2@BzvapyAe1>vbF-~A{lma*#~ia ztAR5l`?Zto?+ff9S%+UXn8n0BEytpS7FhY$sp|aF*npdf)`fxlJVJc>$oy*8{D< z8IlXCfeR#K{wNn7BDu%_K#n5B9g4U^kC0qk030T{1nHJ^lU!N@bdfwP5!g#|8RC@f zBDoy*<)9l5`r)`A;RJx!h>IjwK%S8@0QymtzyXp+y8+F>F_J5DfPEy70k1LJNv_fZ zpdD)haIH=Oz@xm_$G=aFFE5Q9wJ%wRl#$j^rtB z0IqeouWKcFD(r0zf#-{S6)#8>?8R)U!aX-*u>@5gCwtne$emA*P8&uUj;s^K(`v#|hk-P~!Hthzw zN#2aG%_m82UqbR0@Y+%fbOMn1rb=Kx$v1=k<_?m#%0Mg0w-A7M+e`qS-1`u!O8ItcP1CEe4%q`B&S7XD z))UP4?toT;IRgGiVBAp{e-y?Y3kMVv%ny+7hfIPw4mpm4)N29Y7r&ce5(q#XpoL%( z6#$5rGzb8F$=v~v51!pj${B)5RRIhHlLm3pG6^Q#9RTw>F^ga_7(g@t{4ybLW(~n) zL7uDzg2`S>Fge2j5YylQfE>9HGj}K89>L^+e_k=coE!z%OECH1lMg-x_5f%Xf^T6G z!4yG^qLqLP1XB!SiYo}l7y&p+FeQ+`WEQ|gFr`ue#4|xW(|&>}gK=eP1XB*OyoF#+ zsQ?CosQ_64{*{pcSWgw?t%5mLcLZ!Bn3_R=XaK|l4$IVnt@bIw)Wrd62&NwL)bAvi z1|9&mhBks}j3t;R2C#u(;F-@fL*AA^f;kPg(}xJ=N6>!)|DPc5nJ9ueD+7RjZWh6u z2cPrca{+uV+#{Hap#Ka$mlOok+7Zx3Fqa|EmF@t@|I2QIxe7V1LJr`s%(dGDb3Kz_ zZa}*&8~}5@3GH8F2<8@yxdr;|Ed&G4eCAF*!Tbg}?}8n8D|0WFVD7sU%mc{t0OI_< zl3*U%0n!NOQ6#}U<^eDsp7YGpaDstnJo60t{+LQI&$|O^2t=p>Ajt>-d@>ch#t_l) z>TtS&K+H-4At|7kK=5ow9DLFimq{Q#ia;G40A~nf1#RoK1nM{n&_W=aEd=TmL7>j# z044(2MiZ!uEx;T|9dKQ7kz#PZyB+yu}jonM2aWR001RB4E zKoewudjyg|d@1xxVO@@}E=RCALBI1LKrw-25XS}bxSS!7YXqQ`KyDDnodAHJ2h7c* zhCrTc2_$z1Q~+)hND&EuF<#vPuqH3a3(sTZ4KbB4FXes$siFwvGY*hRAm7yl@{FHi0H-0iaK+0YIF|wt!&(h&4G9 z0P!b-|77r)47nq^17ZOUfQJN{Vh>ONq5zO<3gntn0k}$_H((y{Y)5ab1%UmHGX#2* z2S@>6e=`oS6Oa#pzNsq-G))HBOQ5$P|8xf64gjCXQ3RR+eQ!@C&`gLo>nMR{L!Nga z_ncvXOaetg+^96b83N5sBG9|D01#^)ta09L0!734=xqR)OLPMOZ17x1?{x%#?|ZET zf@eC40sj~iffj;&A>>-P9{~161ORd@f;lV#`yxF6#w-T^#c>3R9R+}VO9lZB0btCM zhXh&*?WN$e6nvI~eJR+NJ|)omGC(W<;>2|aL;(y0S{4o11}G-bavlKVm&5qwTL4D^ z*nR;3F;+m|3g}w_u~)!6R~QJAAPAD&7<_!<YVrX*&C5!-y1Fb6r{Idcvf!aeTscOQNx<;s|C_+ZPMR?Qm2oLH$p(1U;=0c2t z&$3fe)4<+HC}|zx1^*1;L1lox5M&ehRKUCFRuW?&h7Uc5n82hHE_5(4ftEx3Lc*RZ z0ACLLwn6-D5T`Hb>j-b^JjDG2^m`EJ5HXhSLikWyh|$#h@C7@+5q8uv&?AY_WF_%B zwH5TGgfH2P2!wZ%?4u$GAL0Qaql*bY@K;cipnnJ9OMMFdaRhu)A2E_V2jd_X9H}U`zjG-WLOcwz5 z!H~i@oFB*N1i<5L0k5?Kw)HThD@Y9Ni*4A~&fLa2_QmlqdIGQy?#DVFgU5>fVop3x zj46)Cz;?WTJhmGEueC3r7Xat#ZI-xyFaXEK zF~vN%jmP6y;=bXSxNQT#^T#p7_2Ky9KL1mR*N4~N9v$1+@Eq~kiopJ&4X+79JWtEE zXm39sajxQ+|3%`w_zcB8#CwbP6x+ph;5ObHOJG|c!2gn~y)Rym7z68gUHFWK18^;j zFaz80`QdZLcI=1s(Et`;Z3dn%-fMiGSc?0O&sJ<(fsTROcpN?hQDQ$l7Td(QSjWD& zk2g!K<2}QBfOYXY5YG_TJ+|SvSQqzEl-Li~3LcN+h~w}X;4yel+Mn@%YvWiLIIpPV zd^olUT<;k897G*UobOc-&rIycv2Y!TIj}D7v$#G>iSHBG7yF4Zux#J9?E5<%?-A}7 zV~TOG#B-GbJpUoazrxQ0>>}i5AKb=qMLX6V%{HvNTj-*%I1df<1pxxh(#I^Z%@Vjj zz-&{2#BCf4`(xm_h`K1TAJ)YjI38|esWk(~6m`pZc)$9ZfpxsEmNv0ZwBtT}{x)Wb z?-jWIv8|sO;@OGkA&wPeiFw2}mhE%4_YwPXEb-dHIW1#jAAFy%^c8h6m)OQq9E)|) zF8W!@_I<;^ANS)u4gMS8{TKV)L2nNk*xEz%!FF7mSYjKNPG*Vg+vOF&ez?yA;0*8s z;2OdRGo!tZ+qiZ_iT!X6#Vdeo5clD=VP8BB?}gqOHBewS@1r_*`*K z;rhYniJ$-Y9)+LN_}-6g7%$6#^I(Xv#W~o44c`~>eF^uA_YfRU1RjHHSRC`RIAUBZ zML$a$*6}`w=iXl8n!xu2Y{xp@_fdc`W?1T?%~Im$;)s_3+r>WYkAJ`UJK$%j*e{L~ zr5N8brUd-)7`$e2k6$M78REUgz-Nhp&l215nc@9?**I~pvBYDr#OGo;PdwjOjkO#v z>S8`D#kG2X?*0nM!R~4XzScxtl=ylSbx}?L8;Hdo7oRmgW4zD!%<%8q?O{3oWqMy2^D;ZO z;XeGl=?%bh!Z~m*TpL)&HHD=({_kRmKL1UM_cVN8Qv;SN=4}4$8cv`Oe&QTEfiCh%Tr(Ir2dVtrUjTq_=c|JS+^YetloXNb=QpPdMNrk3X_)(aks?`5LI<8Xb5wIbFF zwuyF8TILh;h|)4&`ZU`_CDfTUna%975o0%eqld+2LH_u&q2IiUM4$0KmPp^ zqay%6!|?fH9Y15lXBzIeHrsJO*0IDsqAzZXHf+Z_j*p*(*ax>Q%tI4+JQo&)y5di&>scx?}czJHSUpZK(|J3Jpe7c9j+5q0r86R&qs;uu)}yL^Aw zC+-biGtMOf=f~G0K2LED*k;*}pp9$np8)&542;>1W8ky?Z?W3Pz+*&+eYg(AbzzCu z-+m7`u!(0bN<7{QfY*tCH^2~UrF~4x_@a(|@qXd)JOIZM_Y3>rnihRuCEMr5aqzW@ zuPF?yTefiyd`@CLh;qnFY`Cv|9brGwhMy-mR(pu|Y|$>}u#{p9%N*_F;XZs_jRc4s z=GqbOhI)7~b|1@AM~MTm35_f$MTT+0~Z zHGunZ+p<=~8p3sf_XSIFF1X!3x7Zea#P;9Gm&Iv+f5+#J_YBv7qgi5IW})MDd*E@R z4f{Hq+dN3|S%FFYfrR` z=Y#KCI5v)heQ@20d2t)-_}Pfh634;!An{!BeG-rTr)PrC1N-86i1%15Mc{mRKH~2H z?axZAb9`RybGC2)U0vY$<8{5P9&ugb`o{4r>*t@u$K&wa#oGQmiG4A!4-4S_N8o3c zI0m1AsADO{6D77`9}$*q%W*iSrBC~3-{0*4&LuuivBb}JY{UD3_ZhDh@2BOSTAoq+ z*!bSk{=R~J+Rq7JH{zVJ#MhH$ThzttOsp*&#}e3%+oHt&;{8sXNBjF7_7VNXSh$U^ zEnLTzwT$heFSg@(zbZbqi!tyRyas#?V!P!&;XSq7L#$(eJYNww&p)}2{##reTfA=Y z_4=yoN33Za51+N=9RFJm>?>a5mU75T?4k|tB_1c{#W}@mShVAP!+!XT@Z7PE*CL)b zZsRdxEOFj=zSw6NV5nJ+FiX)U+HpKF2i|+}{)+FJI0lZ7CH8+=3~a|S@IH(4w$w!% zmN<`ij}|4)hjo1I;b#Y4gXMl(>Np0DjpvCa1|BEsVn2?7?br|RA&xKB6>f{bYqQ)l z97l{{nb*>8nH%39h6C`PVktswdw|W&40j7%v|%~kYbX+RGG1e$?$v5h5O7p_?mc)gwQYizT*;eeL7mw&mWvO2_wdTz9Vmz8~YU;yqG4Gx515)`Hl6Ro++GE$1cr z;2fge2K4sN2Fz{6wOdMDJGd>z5o2H}+C*vD_uq7JjiMCSIu7FE=iMto#lm;*Y$f_r z-tgMUiGbw*9l!?=4w&>pXND2(|F59lhSy-eO~e3XfH44jz*vBjSz?* zrVhaOmvh7fvJ2#V174#FfY-iyQ0{~ie5ZL7nFOyhU1i25Vh*_pUMuQCybDl~3y60B z3iwE;D1bMmC!ztqWIXuA!@r4xHpMYKlz|tQ2SdbsQ1bB=H zh=Jn>cmrf60LyJ=`DYvNDSpK=eeRE^@Ph2E&-XpQkKA6oh8e%U`Na=>qBBFkMLWQ| zCJ1U1ye^m^G%qCi7My*Q=!fNM2u6ms&I8pJw{;VPgNb~?0ltw>$U&bYnaE);GLX+; zj|jp6UNsGY0W<*Kiz)QNdo^S%LD;nL1Yw0*;M*u%2nBpPb|kT!_<-0?943wt2}CN9 zL1Yol#P1G09C|tQbr|9xad2~pby(|g%t7Cu?%$#Rfc|?1^ct{hz?XyG8&ou?W$=N) z2M4DP&KR6KxL~kp@TtMIL)ammhrB*y#*mpqW)FFHNc52XL%WUZGOow?nG@_Mtkjcw zMsKa}sqd?I&=1m&){ob_=-u@Sy+$9T57$TNr|M_x7wTj6ar))@HTqBVTlCxXJN5hY z2lPMa_4*`zmOfWspfA>&^cDI>eY5_ezEyu!e_h|EzoWmaf1rOBPsB6vY`jf;mw3B) z`*?@=0rA7*N5?zH%i`VRed7J%{o}Rq;qejiGva5)&yJrT9}~YcepUR3@gK!+jNcN! zEq-78q4>=Bg81TiQ+#cFeSBm5nfMFwt?_N~kK&&uPzfCptP^Y!x+jcJkS53yTob$! zd=ml^f)lg};R%xxrX|csn4K^;Avz%@VOheegijK-CgdgLCln`CCe$X>Cp0FUPB@cr zHQ`3W&4hai4-=jyc1W~Iv`rkHI4)6|=#eN-R3`c)`X_1=rzOr#T$Z>xac$y;#O;Z@ z689!%B^na*6U!1$B~~RiB(@};NxYVLC-Gk5!z40^N$Qwno76q2Z_==&aY^n;K1u4N zfTX~r;G~I3lar<-O-ovpv^r^R($=KUlC~#(m9#hMyQE`DiAl*x=}DPMh9qNBSyF9M zLsCo9#iUC~my_C(J0y2ZwoUGq+$*_n^5EoQ$)l1TlUDLqnpru0hbo8pinO>s|&NST@vnKCzJNy^HUbtxNDwx{e&`6}f=%E6Q)DL zQ<75BQVb~tDP<`YDK#l|DW_9@N;#YIbIO&Jt0}iq?x#FSd6r71GO2uOm((7q_Nfl3 zlTss6r>0I%ot-)-b#Cgs)b~;srpBhmrLIX`m%1f&Tk6i#1F1(-^{K{GQ))$ORccLY zV`_8i>C~T6&!%2TZB4zJ`ZUcp%`VM8%^_`g+Q_ugY0|XNwD7cuv^Uabq|Hp5ofe(8 zI&DMRp0s^whtiIw>C@8FGSafr^3#gbOldV~jcI4oE~K@lT}iu{b}Q{p+Qal7>2~S% z>4Vcpq>o7-pDs<8rF*6Oqz9#I)5FuJrO!w|kbWrrX!`N=Wcd94-1PkP;`GY&+Vqz6 zwi8`WbU$HtqW_73CkCGwePY}R=?V3TsV8Qgh&r+F#Qqb9P8>O*KaqT*;l%9|_f9;_ zATv&J0<%K0LbIl1P0fnTnwvE*Ykt;}thlU| zS?jXaXKl**G%G$UDJv~2H|u0pK~`B-MOIzb>8$fv7qc#BUCnCCx}Wtpo6Kgi`RpFq zF4^wcifr#}|7=ZmaQ4LPi0rA^v$N-BFU*e3j>}$`y*_(O_OWbzc1m_uc20I~c5${T z`*ik&?0eZybBG)!$0nz9PL~|J9Qz!HoZ&embDVNyIi5K_Iet0*IYBwvoba58oEbSY zb7tp6=WNK?l(QvgTh5`JqdEGVw498btek?J;v7>>O-_AIW6qhJM>$Uogn=@2FxVJ6 z8@d?m46hpo8-^N&8%7((8>9xA!OP%d@HYe*w1#Ph8HRO+4Tdd-PYt^aUmCtL955U* z95o~x(ha$Wd_%FJ(okz?G_)Ab7#58j-k!X@c}MeV^BVG6@-F0E&TBhKp6qb4*U7#oy-uo5s!xWV)SaAoa_7n9lg5*k zCu>eNo;-W<{K<>?4*Bl+q4^Q{Q}ZM9=jPAP-=4oSe|P?Y{Db+2^W*cA@=xUF<`?7} z^ULxp@@w)>=bz2LoPRaHE&qQ0@A;4N|0o~}m;%1QwxCCWL&2bep#`H0#uqphxD>b- zC<^=wf(j-UL=;Rdm|ZZpU|~UQL0rL_f^`L-7HlinS@1={zJhNH4ip?NI98x9NGixJ zC@wG+R1`E6v=m$@Xf3!}aHrsI!To|~g+w7!Xj9m^uuI`QH1;)T79*$i8TB(eNUlqPa!UMKMK-ik20v zDq35#p=e9d&Z7NAhlT89j`0qmMDzIMF!8_?B^oah5U4xX`%7xXQTNxYoGdxYhWXal3Jsakp`= zali4HG2WPN%rfQ~%Z(MrDr2p&!PsKFXuM>+Z2Z-D+j!6TdkI;>mvk(#E$LO#w`54k zu#zz)<4PP$oJ(9v+)BJkR3++?(2|KI5hc?~B1`6%EG$`8va)1#$;Oh+C0k2&mFzCr zTXMMMNXfC1|#q7q|CX-Q>CO-Vz^*^-MT*Gk$-ZkIeNc~bJM6qWL&9ZP$Z z_AKpH+P`#A>9ErArIJ#|Qs+|7Qbnn%G@vx7G^8}5bZTj2>D$r?k@eR^g!wNrSYXnrD>(Pr3IyBr4^-Br8T83rDsc9ORtu;mEJdzCdOoC z>SF3pIz+0$~OyhFK7dG~U=^5Nw{<=XP_@@eHW%A?9xm9H(|U7lN>UtU~ZSzcXUUw*p$ zLU~*Hy;J-t+f&_7*`4ZtYQib6Q~sv{Piaq0IW_IntW(QQ?KrjfROYFMQ>~|dId!eV zroy(Odqv-h*DD5846hhfF{WZ%g-eBJg-?aLBCuj&#gvN3idhx!R76$8R4l33Q?a*V zf5owi_=@z3%nCz=v7)r1tfHo(p`x{-t>ShiS=phoW2J3nugX4^eJcl54yznh=~Ahv zoLU)KIjeGh<$}tEm2s6DDtA@xuH0LBxbjHlvC5>%;>ya(n#!w{ZI!nxA5}i7d{)I& z@l_qGx>xn8>R&aeYFO3yDoK@N)s(8KRc}|#t(sT$UR6xhlB&3>l~wDi)>mz;+FrG@ zYIoIvs>4-BtKzGYstT%#t1eevt!k^fU-hV(tY)hD>MqsYs(V!1RohoPR1c~iT|K^9 zRz0ygqIzoe?CLqybE_9t$5zKxude>MdR_IF>I2nBtCOmWt4-Axt6QtDR^O?lRB=hL!E8i z=(=%r(mJO)k2-msSDm_UYTc~5_v_Zwt*zTox4mvx-QK$Wb%*Nob;)&Eb%wh9y284$ zx>I!xbuD#g>Mqyask>MAu%4`^>rs8DdfWQ$^{>_Ut?yqyxPEy3sQPjBF7+PuKJ}~W zSJ$tt-&()Deoy`0`u+9C>W|mQ*QeKK)*I@L^=0)n^)2-m>o3*ctiN4ub!qC+ zWZ&e_G^lBGlS`9(lcLF|$-ha{6x0;jG_fh7X=>B#rnyZEn_`g+I@+XfN@~h#%4y1NGB%l-Dw=AW8k?G%PB&d>YHhmObi3(()3auxnQ89Q+^gBX z*`axO^T_7W&5q5oX7^@QvtP4+b7*sT^OWXk%`=*3HqUOJ+Z^2-(;VBps(DTG#^x=} z+nV<@f8D&V`QY;_&z}qYZye!DcoAc7<=1!kA1&(P=mh1p#IX7`K0>}~y|JMn4L2)J4J#Lm|dWm*-cHD4$LkJnB9VexP%o6YZJC47zAclkx(r# zyOws$juV*OC}4II65WB>c>%Li1GAf&I4d#E%FIk%${wK4G17^26d4s_0w*LpSJ0mc=s{*roC@?z) zn4NV>_m?ocsFc{06)9_h*=+-6_hrg{V0MT9!t6}I?5cs;wV0V*D=@noDR)zTPkEN| zTwr##soex-7Y@ws&D6J2XZ^|SVgzQlI`v~Sv)eB)yJBE=rvzr#@JePk%*^bx!0aXi zvy1#k%@yGy|A+RV(ZJ21OG>4VaT0<#+j%+5Jok*-YF2+VG3`t>W6Yk}Eq%-Wiz7nq$v zV0I>8c2!v|Sw8`@y9CVcM%KNo-?Irbvy+*bof?>3P_|BBcC)hQWXA~1?qh-39nC(T zos^yVC$nq$8)hd3X6KfpGBdl7|H|z0|HAAZ<~+@L4$O`>SPRUqyP=O^keS(y17_!J zP#BcJ>;i$=O$BDR7MR^;V0Jr!+3hjx2WEG~kYq?T7zAclVW>7UyL-Uwo&d9B{$zH8 z1ZJlem|cXK*{udRyCg6>{-oW>J|`6dv(uWHT@o<63Sf2(C(rx`vx@>| zw@qMn`vqpF&ri%x%{Szq1ZHOfW>=lxlK)eFtHA8;nVB8&C$qCJ7+5f*U{t|aV0JQK zcJcysfuyDh-%b^x>6Yi4#w+cCRlGqbxbFuSJ$v+HPPc6Pw* zUN0PGW_IHRW~cp=*+mP?Zl%ENHdrvbL%{6xg=qq_I|Iz_QsIq1ncc&}Cxy?8_@a(Q z-2`SgsAw24yC^fWiz{0B5@y!|%g@zJ%G`e!=XDpIb1y zVFI(0nVFr+s5a`1lZ{i2kpi=eF)lW)G&8#`W@h)Lnc3-$X~s-rj7t83fF3BrrRPnb|1>W~VLD0kfM5%r3fQK}npz>^2C@Zl}QP z4hhUI37B0*NxqrcRS3-POv(9@s{*roC@?!lV0PUFX6GO_=_SmL0A|OTY=PPJFxd;tZj=SH zQ=0;T*~OTd-D+TV>r9*f!t4xYX4fDvy9)xddkV~sDeGv#?6d;2i?m>N8_djZx0%`H z1G6gyW>*8uuCeTN*%@GVKLfLCE4x+pP+)d^xwV zyO>uny9)xdyDc!gr~kq1qyn>3{e{^@o0;88f!Q4rm|dE{?DB!xmDbeM)YqI5m|a`V zErHpM6PTTAt)f<08z?ZlsqL8EeqeS-YLi~c>_(ZHo%>&y-D-i^ZTkze%LHb35}2Lo zPiEIzcUxd~guv`N0<-G|%+9|4_4+~e!+_b1t(Voi)vM}P3e0Xx{b%*N1!i|tV0LK& zvn#GQ{mJaw1ZMYCV0Qd}FuOQlb{_(>+whN=U3Xx1?gFz56qsFvnb}2|ncZSwb}Jg! zHm+~{%*^aeW@gtcFuMzlmjq^a4>P;Q=K`~{ZR++Xvy+*bo!ZRo!p+QXPE(AT*=>0R zvnw_;yM}hm?x~sC*$K>Un856$7R*iy%x)4eyU4#VyOqG~HVDjaw*?0I){@pwTGzF%ZC%v5ur=UP3qkytQ*GOl+wxX; zZ1|$^nDFTEdEs-z=Y&UwPY<6GJ~=!*JRsaZTp6wi_Xu|k9~nM8d}#QP@c!Wr;r+t< zgxiI83AYWm3hxlkg_Gfg?wRh1?xF6!?xwCy*Q)zjcR_bvcTRUk_ml2NU8AmESEH-e zmFvoMMY?=luFjx4p-a;x==8c{y6AuwM)NR#m(QVeP(|xR4qg$n0sav62 zs*BYv)V-sN)CKGObUr$7otw^8=c1G7#_2}uhUog}dg*%Vy6L*=y68HF-3hxDb~CIk z?3b`BVVA;w4!an3F6?YrOIUMQLs(r{O;}Y}X;?{EeppV}*03#M8^b;dTNAcA?8C5C zVJpI7!rlv;A2ug!R@jWN$zkDPVPVc;j$zWU(P5*)Muv?D8x}SotY=u4(C49#LLY?Q z4Q&g(7J4bv6j~Bm6q*}q2+avS5t-SMb<~d4j@FLQ4%80N_Sg2& z_R{v$cG22uJ8L^?twMeexgF9NQWsJkVhYI%$qGpcNenp_awOz%$o`OTL%s>w8}fC? z?vPy}pN4D-SsU_E$m);}Lzagu3yBMf4OtwrC?qCien@o4ypVT8qC#eeycIGnWO7J& zNdFLrkbWV3LwbeSh4c)0Eu?!$w~#I&okF+}HiQU%7W_E)R`9jpE5X&lmBFWi%Y(~; zOM;ET#lc0vg~9p3xxv}NM}l_-Zw=lQygqn!@Q1-41jhwW3w|?rN^nH5E;uYWG*}ZX z3mzZbKe%78U2u=!uEAEp9fJ8_D(HF8)1do7cY;oSK{vLQQ@Md6J;Elk`ftLa=1Xcy+1f~Th2YwK^GH_Yo`+>26F@eE>lE86+qXUNo z4h$qU&o$39Pc*-49%$}sZfkC8u4^u7PHUPp^_mLJDNVViSW~FU*JNojHR+mEO|s?( z%`wek%^}Tqnw^>*nvI%8ni$OjO_XMi=50-+W}0S_W}+rU6Qt2-R2rqmL*uF$qZzFk ztQn~3uj#GnrLog=)!1r?fX4y91Y8I>8}MU5eL!76ZNRAjQ-CobH^2~(6ObN|8juul zEZ}Isk$?jMp9ZWCSQ{`uU|v8}z>I+D0dECF1WXFh1q23Y0s;b50p0=f09k-@fKz}p zpl3jjfUW`70agJW0_XrTfbf6f|JeVL|3m)={`dTE`nUQ2;(yuyXa6SuH2)O;ME?Z; zWBy0|kN6+-Kj8n3|Cjz>_;2(7)PJ-88voV)EB$BqNBU3mkMN)DKgnO~ALQ@pFY_Pl z-_O5~zn#CWe`o(r{=7f(r__(tkJNY6x7EL@uc@!9e^IxpFR3r6&#D{M4eEMzr8-5O ztWHwLtG`lzsotsHs@|;Lq+YB3Nd2KYPQ6sUM7=;At`1Xc)gkHtwZB@e_EY<)m1?=# zQ|+O4Rm;>)YN>j(dX##&dZ>D^y0^Ng-+jNkes}zC``z%n?sv_v)$eD&3x22lTKww# zYWynwO8ks|g?{;dxqjdK9rioucffC--(J73{dW0%?)S0ZD!+IAX8O(Wd&_UKUyxsb zpWILCH^Fb5-$=g^e#8BS_zm_O;P<*;cfT%vo%~qed%nN<-txWVd)D_y-)7$$-zwiq z-%?+rZ=r9FZ?sNZ-!FW3`tI=k)OV}z7T*oNpZKoz{n+;d-&MYGzDs=<`$qfD z^PTNG(>KC*yzf}w(Y`}`2l@8%wen?r9{Ak%srRY%sq!iHDe*D-toMobnc}1K3H1r~ zQTzD$`1D3g`PmB*CdE5B8Kqui(5quj0hLb+49Rk=mES-DBMQMp06MERaFS~*www(>1y zgmRKnrwmkTlmSYW(pxE4%9Kt@N99=MXypjyAmu>i043r5hxb$O-@PAr-}k=f{hRk4 z@7vzLdjH~m+53X`Iq#pm8@%hhGrV_s@9^H{{h9YB?+xA`d4K4=(tC;byWVrWCwqr_ z2YWkvJ9_wc8VT~P6`_Zr$7oy{zU#*{z!gTen7hX# zKe?UfGtVcU4?TbP{LS-@=WWlMp1*jW_dMr$*0b5O!PDq@($nCX<(cA{?3v{GgXdAt z-JYL&Zu8vgxxsV2=O>=4J?DGA^IKX!E$?amC}ZN2|xr9v3~%dz|w)L>`~`Y<5B5R;$ieS>0$8Ddu;O9 z;IYo*1CLc6?|aPjnC21SG1OzQ$3PEzk3Jr~Jzn#$^+4`_xZiMZb-(C-&b`^a)IG~R z)jiog!TpH)A@^_GH@h!#f7d<4UFtsAeW3dQcf#!tx2JCR-R`;Fb-U$u)2+?zhFh!K zCAV{KXWUM^)w$KWopLj|mAaL*;fQ@DA$xw%Q*ByJPjM!5}l8{*d6t-I?Z*9We5UE5r5xL$W{b!~JlcQv^h zUGrRXT@9`$To1bLb^XfqW7pNLt6Z15E^&=@eb05CYn1B@*J-YkT_?JRxoTVkT>V{# zx(;?7=-SV>CBa4Sa?IsBmjf>QUA}So+GV%PE|*VTwz{l$iFSF{CCX)nOQg$mmnkljUBX?0 zTr@5LE-IICE+bq9y4bqd$R5b<$?nLm%dW|;%6^tzke!t^$?9YkvNBnTEL)Z)OOYkY zj>?Y6zL)Kn?UQ{a+acQ^`$V=*wpO-Ewpy94 zyuo?B^C!+9Ij?d4zEOo3o>HZ)ZE_9?spJJ3DuBwsGd1?m69b`pK!@ zsn)5=snn_1DbFd#Dbp$0DcqSHog$s4J56(X(`ky+WGAgth?BolH>WO6ot!u))`@WZ!|{pZJ;%F_zd5!! zUU&S(@q*(y#}>z0$1+EgW4>daV~%5*W2$3{quz0k!@<{ zcJy*|cXV@fb(A_fNdJ&Nkv^2(k=~O2B5jpkl>R7fkv2NqX=}zR)vC?PXq9DEV$ECSTaU0Rvbt|oY|UBaS>3k!&6>6P!RolxuU2VR z*;dKc-K=e_J6m_L?qU6!b$9Dd*0$DNtp`{Su^wnW)OwKhFzdnA!>#*R_q6V1-P@|v z%4Ah(Rb_R`s=}()s?Ms+s$5u457PX-D)7!g%rfB}i||9i_pNj?>x_jR5jI2*vz-O| z0Q` zo*ZJo(LE@cz&jbLd1!nKZL*OYqE9v)+a1%G`dT!$R#5rJLv< z?%)#_yJ&{@g6LUcv*#>{p0Q}s>_v;`E_lyj{Frg$oUq5}KRpN~v4DsnmJy4Hxx^eI ziim~xSRMmRfb~y+KMsVBSVFu9f5w0|k?<$N!R7SOB>kEFy?mUp7kYbAWM+Vbl!3i+Rn0 zc=Lt1%mW*|e;EF@T*-?yi53T93ix1~8~ABJUj*Z42s816H7$cZiV`xs13e2MGLD8v zEFxxtrvrRX*b8r+An{y=fd{tD0>5bZ;~?zyd>D)K%!P3?V6HFLyI9DJBQAj5Stdk& z5BAf62oPe-fqKNc*gqRIyh|E$?{MMdVquo9@b1^KFjMi&mVo}EJr}ZtgWrpt@)aWB z)5clffxh=47GAZum(ju;XG5OFV4Vea924*BBG6+Y686Oxi@P7X9`|1Fv_adq|cCm04Ga>prfSC{# zUzNC?mVlfCdGI{(c`br@;Cc|RyBF6GK4m-x&l0c2vQ8af`~qUBFcw$wizY8mf*AnezRd(nU1i6(z%s zDd7lrHfOk>yTJA4M!3Vf|0$9t84{5!$&ozSfwUs6$&OGFJ}_H9xI6g6)vJMd2SJ^L z5LzM>YD)*THW99g$wUO)f8Kz1HB5!iNU$M0k)26fvJ2Uj>_&Dcdyub@JxM#V7ulQa zL)w#l$$sSPqyyQX96$~v2a$uxA>>eU7&)9AL5?Ixk)z2mOYST}e06o%A3*Nja$?y-06TNvcR6(wFoj)ucZeKx)W9GKdT&Lr5(dN`{d-GMt=9 zP9i6h5#$u|4f0KLDmjgOi=0kIk~7G+$(iIVayI!6IfslQ=aTP|^T=p&KKUNGfQ%s* zl8ea2WGuOaTuQ!A#*xd&<>U%-CAo_Hfc%hLO|Bt7B0nbAlIzG%$o1p~awEBk+)QpE zx00WdpOM?h?d0d=4ss{Ci~NH8lH5)1A-^KOCijy2$ZyDR$^GO3@;mY%d5Anreor1D zkCMm8AIRgRo{T3G$V4)UOeRyvR5FcBCr^+WWG0zKW|KLjfy^cI$dhC~SwI$&MPxB) zBumIr(nOY#<>V={f~+K~$ZE2NtR?Hnda{9RB%8=)vV}ZN{z(2ro*~bY=g9Nq1@a>K zGkJ+@B`=d#$Y02-5fn*L6iqP{qF9Qfc&YxIZd7-w2lX1&ld_|FQN5`? zls(m#>PNj!IZ*wn0n|Wh5H*+@LJg&cQNyVb)JSR+HJTbjjits>R2ZeB!l{YW zBx*7hK~16Fpx&gWQq!onsOeNBHG_Jann}%~W>fD_bEqh4F7+-okBX+|Q}0m=s2FM? zwTN0w#ZpVCrPTXW9JP#EPOYF;Qmd#Bs1K>t)Eep|>SJmxwT}9PT2F1DHp1sbY^JtQ zTd7Z}&!}zGcItC#2ep&h1-}P)Hl?()PCv!^&NGPIz%0&zNd~* zN2z1f57co=PsLLSR3eo`B~vL>DwRg1QzxhlDwE2hvZ)-(K;=?-)JZCzDxeCfBC41& zQYBO=WunTca_SUSK~+*!R5evY)lzj-J=H)pQcYAd)k2-7ex!b)&QNEmbJTh20(Fu4 znYu)^QkSVK)GyRk>Kb*OxqE#Thwjp4)q&#m%2yYryfwhQxB;})MM%i^^|%> z{Xspa37VuSnx+{V(Jal;Jl%n|qOIwUv<=;f?o8X#UFfcKH@Z9BgMN+fN!!uA=-zZ6 z+Me!9_oH8@9q9h_0D2%jh#pK2p@-7L=;8DTdL%uH9!-y-$I|2I@$>{*LQ82!+KG0i zWwZ1pu!9@FVadItSAJ(HeA&!*p@=g?8~T>4#l9vw~3r{AL&&@uEv zdJ(;tj-{8-OX>INIC>eqoL)h%q*u`&&>zyP={596^vCpCdL8`-&{SEysy`Mfne@7pr57CF|@987- zQTiDD1AUy<)A4iyok%Cq$#e>xN~h83^a(nH&ZM*GY&wTF(7ALTeUi?n3+O_+h%Tm$ zbO~Kbo9HsSoIXWY(3Nx*T}{`}wR9a_PdCtwbQ9f7x6r5QAL*ayGxS;d9DSa?KwqSP zrZ3U0^kw=A{R@4SzD8fCZ_sV@P5M{*7JZw(L;ptKrSH-A=?C=h^h5d){g{42Kc%11 zf6&k2YjH`2VrYh85W_MY!!sQiE5@4X$k;HQn9htX(}n5EbYr?RJ($;+o{SySi|Nhu zVeFZ{Oh4vz#)0Y23}6N_gW#*zhcH8#Va#x51T&Hu#f)agFk_i<%y?!3BVnYBBjdz4 zGcv}7ab?^XcgBP9WaNy3@nXCgC8J_|7+=PZQ8WHb0Ha|7;Va04nGi^} zjxa}=W6TfCaYoO?GYL#0lf)!5DNHJp#-uYR;H#W7nJgxo$zcpkE|bTcWb&B;rjRLO ziWwt((Q+wcV#=6u<`h%GR5DdeHB-aXGIdNn)4(*smmfDXE%0^6KQcctXPC3hIrv)R z3(Q64XXX;q%3NlyFuyQYnQP2-<_6Qo++==bZZWr+JIrs)UFIHhpLxLi&OBruF^`!i z%v0tW^9S=B5r{+-q7j1-ViAXU)B#x`Yt#|hpiZbWvPE4`SJVx4M?KJMs3)>Ry-;t| z2ic>(s2_SAIiUV%02+t}p}}Yf8j6OY;b;UJiAJH(Xbc*Q#-Z_O0+JvpazswZ8Oe|f zaz$>)9eE&6Bu5J5g}jjxsgMuyMSe(){80eXpg8+4qEHlubSNB6M3c~D6oICo zH_)4CDw>AgLeo(snt|R%Gtn$G8@+?(peQsKy^H3dXfz+ahZdk1v=A*qi%~3Ef|jE9 zQ5;%^mZKGDC0d0(Kp&#jXbt)ZeT>$kb?6hc9&JDy(I&JRZ9!Ynr|2`Z4Q)rCqaA1` z+J(MAU!vV;5BdsyjrO8_=o|Dc+K&#P@6bVX2pvY>qa)}jI);8g$B`bzqXd+Ql29^A zL8&MWrK1xl17)Htl#Ozb0p+4RbQ0yG0#t~KP%$#15>$#zs0@{(Q>X$}qAFC4YEUhz zL-nWuHKHcej9SoX^dtHSok3^OIdmRfKo`-^=n`s0m(dmU3%ZJ~q3h@dYC|{Cujm%K zjqae|&|P#7-A515@8}_VgdU?O=qY-J{y@)Jf+bmsrCEkWEX#5%&vsy~SZlT;Yr}S8 zJF~WI7q%%n@ma#q25vEHnbRk1#-FYCvu zS${Tw)v$qV5F5;fuv#{h4P$j|I6IM@#7<@-*eUEA?3?UVb{hK@JDrVWXRvRxGuc_} zZ1x>?4jaYJW#47zvC-^&_C0n18^bPS7qN@kSau1!lzpF#W0$eZ*%jp`ysoU zUBiCFe$1|A*Rh|l>)8$LMs^dsncc!}Wj|#>`rzU`vv~1Z``H8RckDs-5PO*Yo;|`IWsk8xu*X?F8_y=NiEI*^%%-rZY#N)+o?tWB zOg4+nW^-5ro6F|0C)s?qfGuQ;*kabmmawI)i7jKx*;8x_zrx_7dC5US_Ybzpz)?YwUIQ2HVEoWPfFEvA5Yf z>~HK{_8xnmeZcSDC(fCZaW0%I=f=5n9-Jp9=M&r{zMqFiyvXa}&8q++;3-o5H=py~$1Grg3j^)451)2KP2MlbglO z=HB7va8cY`?php4-4}pQ?o;kFZX36q`<&as?c{cGUvOV?ySY8wSKQa! zUTz=v4fid#pF6;P#~tJjafi9@xg*?B?ilw2cbwC6@mvCz$R%;fTnd-UrE%%p2`+=n zHE@kw z6W7eOaHqK+xu3W*+*$4%cb>bzUF3e|E^)2gW$p_13wM>f#$D%baBbX8?pN*>cbmJz z{l?wp?s50I2i))6L+%mxn0vxK<(_eWaL@5S0P+-1^9+x8mgjh$@4#E})_h0ahVR68 z=56^dd{@33-<|KlzsC3E?f71NZ@v$2&-dl~@vrj^e1CobKad~959WvPL-}F+aDD_o zk{`v7=Ev}3`EmSsegZGyrMx5W#5?mc-i3GN-FSE2gZJd+yn^@Qy?G_C;(d5u-j7%F z{(Jzh;RE>~K9~>TwR|Wa#_RZSej-1KpUg+_Q}{RdH~FdjH2y7qIv>f;;NRwF^0WBa z{5$*{K8l~qzst|#qxt##d;9`EhF{1p;urI={1SdC|2`kbFXNZrs_?{0)#~&KZn|*bpn$Rq?(v?=%ZCb7sbdy>|l%5)BEa zh`o#06}w_r?228nudLf#b#04Xv1{xsHssykoacL!pz)8*{p3FPnK^UXQ_uNLd42MR zXr;<-6|D1d#IWPH_}YCjXZFd-5O2e@`dD!$$uwbO1_+Y zCHZRdwd8-2^OLV9-$=fhd@K2O@}1nljNt#&yt@fzex5Z zzf69W{5ttf^4sKh$?ua3lmAUFO8$`iG5J&S=j1QR#mQfjOOmCVxi#(}cd$Fet##|% zdY3royi47o?lNwJyR19RUCtfuF7J+TS8!K!S8`W&S8+$WtGc7y)!fzHHQY7bwcNGc z(e66#y6$@J`tAnqhVGx-jogjhP24f=rf$W}UFLGPaD^*f!EU2F!JX(fxy|k*_Yilo+u|PT9_F^XQ`|PU-JR+l?smAHZkOBb9^p=N zk93c6k9Lo7k9Ci8k9SXSPjpXmPj*jnPjydor@N=SGu$)WGu^Y?v)yytbKUdY^W6*F zneK(|MefD!CGMr}W$xwf74DVpEcYt+YWEuVTK78ldiMtRM)xLnwtKUCi+ihkn|r%^ zhkK`cmwUH6$GykB*S*iZ-+jP+(0#~#*nPyE>pto}=05H|;Xdg;H=l;cg z*8QvdH}~)EKiq%1&$<6{pLbtyUv&TNzU02_zT&>>zUKbNo$tQxzTv*{@ zzURL0E^t3^KXgBGKXyNHKXpHIKX<=yd)zPGuiUTQZ`^O)@7(X*h31%U|0c?XTmn>#ygp?{DC5s3)avu=?c^R4fE@Vy`W=x^_1k_xJGk^!L&eS@-ex_4o7l_Yd$7^bhh6_8a{P{zSjYZ}unohxn8I7XMKH zFu&EG;7V7F?VsbH>!0VJ?_c20^e^-;@-Ox;@h|l+^Dpa!6|5`q-bqzP5}g8yPfmA>r1;=k&@Camjx|8@Tj|4sib|84&r z|6Tt*|9yXf|AGIZ|B?T(|B3&p|C#@}|Ao-5UkcCqwa~5K`rrBA`wNA4UF84Z|LFhZ z|Lp(bFZO@+m-uBmOV^|aO$eEAvUTbDG)Z0R(=ghGoYo^yqubm#9UMIb7dcE}eLdR~H{!@CR^v3B;(qqz_rYq?@&C)zw zq(xe$Ra&P_db9NA=`GS*rpKnYN{>t1v`a(Ur$aiXw@z=9-Zs5mdi(VF^bWJj>&=>1 zm|byprP-BdR}q?Z)!9+$9n(9dcTVq;-Zi~jdiV4m={?hXrT0$nlioMIUwZ%a0qFzN z2c-{AH>M|~C#IXy&FM+$L(-GeE$KtkhoxK7Q_^j-%gru3yPDo5`}Wx(+L8Z^khgW| z_SxaHTcxL_4^MZ@4oi2YyR=WA&JLYDQ19+Mc6MC4JAFiYTKdTJQR$=8$E1%Rv^hxQH)2F0QO`n#Yo<2Q2BYj5t%=B65v(x9K&rP3~K0kdy zdS?2<+0ipMJ7e~&*)wO)o;@XfQTpQ9gVL9zFHK*TzI?VmeMS1p*-O&1(pL%J`;E}M zYtF7UyT08scrEgE)k-js1SNiVs zob)~Ed(-!&?@vFFelYz|`r-5=>AC4g(~qSepM`bZF*|q8n{~aB!N_RjHb#y&a%UrV zHF7s2cQAJhc2K6w1igB8rncxXa^0@9y&lrql*c7)s(L(Uo(!H>uTz)nV*_| z)~nYuFE#yWsITGrX7xDzZu5L7 zPM}|b>jLF^#@SQvKsy814O};@p6B|3eh$<#(9egSY4Kl{w|zt3!*di1kLKl|Lq*XP#19=+_*$KL!= z+nYZUwRz~x|FpgN6H)3xKYO$Dwl_N$wRz~#*S@5mCF4SW`-*btZ(q@`iutHa&V9x8 z)#~-k3;NvGjJsxD(BB??)dN10A8vc}v~Q@VWgO^PkDm2`^5|2KKK1BR-*dhc*x#{_UUm6xRzQN*EJD?u}`Y~9%((%>nY}^BWY_NFL4(QE*-V7FJ zbe!@QKg2VB^l3n!2J~nsZQh2`=50W)hLY>hs{#KvRFp%H2J~n^j|TkTfd3ote|m5$ z>dR1@o(%Yz0Y5WzG0wFEdNQCN1Ab-*To>pU`ZAy|1Nt(cFGJ6`disn03oL&JVDmj9$1#|^$DV#7uMs(o$Y~t7p13d)7e?eYn!LId zvv1MZZ_!wQ-=ef*dLo{AG=1q-EFOqbZlFH{^;>-C=4QX5HcxZ&@8Ydr^A(%dIeMb^ zZccX8&CTzNTL0#j--@?+nxjW^^k{DRLN~X(R@CNYo>_n9=-E8udh;9I-28$l?Q5)|Z{hV7~q2rV{ztGKXogzv<(8syu89L7REk1N}%YQ|w$NYtO%Aucg z%M-e}&{S<3n%f=;UK^9s-16OSjvmj^+c|nUx4gBRqc?Ml2i+X~n4=eS z^BX#D`a18CCwehAf6~p(pNKLZ^DEsPKQg!cK|KAp{IbjNC)tY0Cqthy^e97*GK&jc zhM&o7oh07$HbZ|h^d+-Av&)cwhTqAMPlkLl70K)|wo%miF72XLeajJ+>YZPk)eShQG-0 z3z_AGU4|dX@Bv zr{x9W&F^KlKIt-BkBFK*WwtI6&v?be zj^5>^&2wJb{N$D=b~*kdM=x{yNRHpg@f*3Vm%AMO%+b%Bc$cG}IeM9+cR6~O;~#SL zD#t(M#FZR9$}R8ca`Y&-yrav}qa6Q{Ti&SSj1zsz(We}J%855Q`jn$Tx#f%90(mWn z7YpRFKrRdX|H9Uj-GVrkC`gbqmY?x`pL^qV$h>UogK5=5>L8 zUNDaf=5ay1UND~v>~et}F0jJ|_P4P7uUlYe1$Izi2Leyt>qmgE~H`d>1iCG%Jk$4cg}#2!lKuf%_pGxAuF$gzy{d=@6?#-L z9~JXa;m0fdcxC%ZT}6ITkyli#S1SBTg+H(G=M{duBLAycw^aD`ioByDAFLXS#})ZU zMgCFYpDN^3v7V`rQ-z*atY0eRR3WE|^-I-R9#Em@dU;gT^NMv!#X6)S@2HS#g}zq! zp$a)yBlVFFRLH#|4phYXia1}R2Q_+7+rC0q6X$EzB{g|ujeXSELrvaT#FYm5HN=&M zbwERW(VM5D+#2$>hPw^Y8Xt4K&{J$apZ_tYd zy=ch)TkOBZ{#*2;#r|9Jmliv0vBMTUY0;0?_655Z|K8d@pm>W1E%`)i`@~&~y|(!O z7XRO(M=ko(Vy`XvVoSc?qE9XQ)DjU1o%byx9C%gUI?hL254agh(TII}-gt^Usz^@15Z(w~9(2GEx3Xa_c))N6e3B+M=ZB3i$ zV_-cISWg7>BA^!meF(%0@a`_458&M5O`ik$5U|gHeFpR(uy3b#c1F1e{Cgk{2g3up zK%N%J&jR~HfxIlR9tr4AAde2{QNX?f_8nM<1oSG9pXvRf)(`AEpkD#K3dD)P`Xdl0 z0(usR69GL7_yfI})au0#1pIg~e7OtgVIZyt^e~`@;LK8Iv+tgKu162Sm%AQ4>(P%M z{QyVqdgR>W&%uRt-1-MTEHg2`(G&N3{B@6i?(xGt`FPJhOOKp;{BMt(d*XSI-Gk?L zJ$ZT0{%nuDd*s|BXK>%HN8UYh?vZPc9KnBO-sV4h@~$3v^vDBzx9iEbdh)Cu`GD_s z;JBie-wn+FfW3p)b_4k{c&&Jw&w+e-z-|ZDmjn4Scx(qAD{AvT5MKx60uI}Ozlxe3 z4B$KiavIp58Q5#_lVKOp~s_1A#h2i9K$_B&u-;IG|)TnF~gz+bz8csr0^4dhn?`PD!^ zHIf&Bvv%OD-H0C^S^tdq;}Lm|$aBPwz)!moKM7vifs=}w9**QiBXS$@ZzK9U;+IC& z4j8W*tXO|Uqn?RI`GghI6H$&^{v|%v zt8hm>CNJ?ZPK#3B>{7RP#qo+pdl8NO6r~-@*Tu&;rtnF<=8wfwulZx~F^>`Ddh^TT zx!(MI9V4TXKq zTYfH{ddC>Qb-SCjJ2(9kZ{r0oRJy=<%M-*~{osA#smJ_Dm?K~CKk?L;*}TmyFVJ!7 zvAjUM&EMSieRR8>&EMSeM)5X(b6XdP=X$$uKUx>Ft$GP_Sj)W(&eN15f3N^2>H-hfXAa7j@cXJ+dP@w9_} zfKw_hroXm-D4ubmADQJR0i05l^5{i|f6E&43mJNlS^g2gAw`)d40&f3zr-^?_#JRV9jBkRPbi*op%37OA+!8al>Xt5zz21ldMwY>a>48x zJW#y#Ge=)?Ti<9oVg4OlP`t?_M_<4PLykYnEe{oM{m9Xi+}0H#$Iij~#9P0>`LtY# z>n~BRxBWZutL04o;CouuP!4&5>jiKrg>M^3rL*8najO24qn z-112sr$5An9J|bs1NfbmUDi)-5Q7dTk}Clj@C6~wW^ z?zhr$vwQF}@zi7cU7@hNPSo_NAiform+Lt7T7E8`@gc9maPR=mCTf1KK#m3SEAVRt zaj&qvJQT>YK%NEmP~h(h;$dOyGTn}D@uk2n3gTg5d3h+v?+ROoiKje%us|Qc0YgE& zEAV>-ey<>p1K$e;dQ;%{3fo81apr^gSlE4;+D2eL$>)k-@whPDMCX}T^1C9Ket{3_ zyv28LL2XAcueNRw&-M7*f_%Ba?-ux5@WW7G&xPHe5eoFZK+g;OY(d^v;8zRcZ$bW7 zp#LTMU!wn|tt&%m_mPX*yqEZg61ymg)8LufUa@hMwq6l$`dSjFOIxpm62AhTDcchH>Au!yv;|2K32p_aBH16 zzfhr<;MbwT--BO^XB@WQ9V+y*vgfbFn;n32i>F=Z`3jMBZKThSS4?V9~AAz3-@N-e~ z%i!nY87Fp7*?wIBFBe5V><3ijT^06G+5LMeNBhK&3OfNm4;68uB2HAS|10dG!Y(S} z0=Rmpu!o9xP+<=h{=dQwD)Q_Ky$6R66?q$YdH_!swRr$n7jOOyTwT1`Ex3B9Sy$EM z%{6*ov(5rvS2>e^jsAnP2k>;!)$^7|)#yKXdZ^KN@N{jv(=YOxnss@Ne%JWf8b1k6 z9%}Rtyj(ov!B5t#pKA22M$c+{{zBXPrWZB-vqrzb*#kJcDC1#WU867H@A~?V=|zqF zYvf;(AL#o$(f@(B2XJ;#(|diE%+8a?*Z4Vbcfk$FaaGR5ZE*F_5U0V{#aq1%ak{~u zHLQyo;&X$%!Q(?ip4zb9ZHRl|?1DM0AK>i)d|lM+r!hQDyv;|0yujB5k8m9O20srC z^WKoxH+KJvU=*9T#`asqTi(zhj|Mw!urF})&@k@}@dg}S$4x)L%L911sQJkTc{IJ{ z9pL6Vzj_`0#~vHx)Udt+FAw15q9#}Haq*@{4eQ{B{H$R;+}Qmy0lZw){BDE1!OI0F z*}Sx@dt1BTTF0$_Epl#&UoH7p%X*~6zQDypi=4s3#ZwRYOKbPpg_b;~Mc&}xg0XB| z;M<`^ZY}lz4juGBZPar;s0uZGYVm(9`9RD5XG=cZ+WicnMNZ(?;%$CfEIhvS2u?zhl0@lLgCJKRV{CV_nn{4?FU> zj{Uoi^+`t_C1A_i!_Ea%z+1iGwu1R=o_QWQ@cgl;T@M~BezlzWUu}rR`n1snwfeP@ z1W!BIzcy;@IO}@w*AU2?19@}6j|bMR+EB3T$e+Pu1xwNn^QQ%>l_MX~0ui2a%%>I@ zcAWVPrP-wtT|16{Q6ghJdI$a*Wbk&JeSdJ)AO+>P`4cH7Jo84r3*H(6asqc1yh{Jc zYXg2p4O%_K?|@tbat-Kb!0vn2RXutNPAZtz`U74nxYowolXv#4pL*mBjv9L8362_i z<(NrfNP4H{efqSryu0i1M@%F^8*2#Q`F`OTvNP_ zAAD21$rU^^@SLfr+0{TE4W1dmGexNv`3=~~Kz=ij4-drI0eOOV27N9x>ia-GJdh6$ z!+XH#dz&-`fpX$8L*GRqtJ}Psvae$Kso<9{exsBwr zBl#@&sm@#fNAzGs{yeuDcy3kH-i!u;V#K0A`nj^s}xavRy_2e;L28q5!Q=t#U=#a~DK6VI3G zb`IJhFB!pYM&vS*kBnw-dd)yAFB;nsjpLPji}NoU=R=g^HsAe{rYVMCqr^vv}&axY4iJe!VFDw0#n}b=o!i5Kp@nKg82-iz9kH1LZ9b5+Cy>QLeLm zRXpumUfT2grzqtt?uchxmVfpuCTCH`X?|5<$I5}b_Ta9fRv);l_?Q=qMmyGRJ=R~I z!xV4*<#|l;HgDjr;%Nu@fxq@Ve<`|pKH6VDx4cu-=4p;xc@9%ylK$EHqMw^T6SeWp zk>A|nk&aW3`7MQ2${Eftp8neYmUx@zIdTO5?C0jUM5)i>QJ>lVsHo{_W_hSypJDZY zJNB97S)$he%#&J6HmM7cV^F_>9rw@+x9!e z(?0r}S={I|^fg0YdEQXRtzK}!p63QdP5*LR4~w^Y!3V|1e6{C!LQ%?FJ}o}xo1$E2 z`IdN-1J4!qx#icQHV$w^@$}2qUE-<7;z^$)_Z)whTfU~_W=}ct&yjzQ9|Vu=!4*Z# zPI#VBuUnxX78k^?o~Pf)JxA`j#eb!XCdVB4gG2T_S18JPyDwQh_2T!yDf=9~0I$?* zU+9nJ%i@_A^nm9M^Rj>~rE#Zuo`LUejyvOYzqK z1#(>AuNKVf!s2w#bAzJR?*(yVVR^A$S7ZGImlSXPTNrMy+ZIjl^*QF)f1WGUaoV^2 zCh<0Z;F$e_`CV8(-1EGkDE+`L7PcSWFDyS6rG4fFJhNZmhZf9BL3}Q3y`kGE?K<$w zp63NcEp8R)AGoAm$7ACHmlV(S`0>K_q5H!2p+#+;3R};Kr#x}Fu=^u=@Iz6XpThEC z@isr;iamIusLcm>qIlY|eP{8sgB=u>C+T)k#)bbYkO#P;ZX;!UmKXPh<-ej92f*{R zjG~{&3H+`vY@b4ucF^a-_9=AS?7ARM7nXN&l9CzmM4p+ zU+6#honD({c2FXJ@H)Ll$;Qj`hT^S#o;wt8^@G#(Jbx%^^AG-}*D%@qgR6rT7l=>`h*6qRc z2mc6e)|be?ME*SgsN?20OY(@4yn*K)`;z&Ov(C@nwNahq43x9q{Yw5+%GD)MshEFCwwfot{PSfVzs zmEo`Ash4~OJWH?HGC6@~>Go?IcSXKlA@_=W54=jR7&-0g}Cg;lbqx;JIMMnG( zjrEGgI3ODBOEivGH1=0C<{6@K+@f(FMdP?dW1cM<+Y^ob5{+^Y9o9d3^N#Ju>^f=P z_HCOdvg@>oOLm>SWAntXKWY2!9g%K%L_EK9%Oj`rJ2yXK^S0@a&08LF@~)}Cwk@%O zDQ@X?9@hUAi(}%g|GbB1WySJ7(KtR)&f7d^D|xp;9oe*f*XC_oH*egud51f7^Nuas zH%%>`xc!tkNaf-T zi^dt&@tEm}MoU)0X4iA)T_(?wp0a!AmJ>H_-KO5g(Sz3OW=jIc)Z`%~l z&MkS>ngJ!SP4jHg*M|(dcWjS^RxD!}M|(p+#vPEl!Li(M;+7pJZryy!?ybAFoVxW< z-q=&O?%uh6LXGiQajuf6HY&v*ux& zcWl$K>ARFu*@I^5W_$EI(cg*ay<_Qz>P@x!OoU3@K>zu-ymwir?t`wB9)E)Y4jU@6zv&`;X5K)*F#OJv&5a*3Z`HZN$_0gY=eO zeX2%3dSShOAEuu}^v>SH_51qzS*tIk-AKQ0qMx<;Dq5l6m44Q$rKil+sI{~7JJufS zooZy1>vyP*nZ5^biQdh7)v2e;Z!Ircp1(YEdBO55{T#Ra%JRYD_bkuR@AH>u=>IwU zjVBIFyr2G<#u};SV0pg%9r;W4{k`w6hvAzA;=Bl4gb!cRJmOr(6mzP*s&hL}Zr6e6|yLfr=@{jSaJ^No{ zSN{EP&0Or+@@!gCZu9aJxugW z^>DQpDy5&Zq9&fF{%WSC*7p5do-_R&`=*}iXKz33@9EgS(yM<-$3GX_KT~ynU1dJE zym0y1Ng8oBZS3lU_`UV5UaMnjbNNR*v;1K!wO6+LOUka0E!hk`ewsP`M2YD4Im=yB zYpeB|zU}4c^?}-7E%X1O%U|tRdVkxxlwaGg%xw8Pjq*FI?K9fgD;x9vWe@cC{<1jG z`TdVg-t_=-TG_wM{(mn&HF47w=!&GY+EXjH{Ik&m|7JAPRR_?H16>o_+B12O=~^VZ z>cKA55%c=z#j~=PT%8oEx?FH*M{^PHj#0`T5oP+rOXx_^Rpp{Y&nvFSa#(7yF>u zaXPw2-#9%sa#Kt{I7arh`fHuOl5Mfx>6nji;=hdEh`&K^?mtZL@1L@hsr(@-=k}hT zz7cS^z7=p4eK+7pMaX^M4w%mH{ebx9|7+--`qP{BudRL@qyJNn^dUsisa1UvP4!Os zL88C(ffW6%h^+JaSc1+Us$LuvGmy3F%jNXvZ1Z2C&9 zdVQ>Z^vwhPTwby`ZgzzKvOj-zq`n&QOU<3-jW?dX=4D?~5S&*E3x=U4OBz zoBBBAlB0fKQMvZ@B%@OEeXPDAaj?Dya+ZIS=-c$Ykh4YKuCIo?S@a$HcF0?llTO*` zQ}zF8`hU9Sec%fCh=pX6Y*A0chs$E{N<(poFK_xM3-{m=t`%|!i;b-&WT zQFW{5(&yFM?5YEO(PSz&_2|j|S-NVfW8YP4B&*48)@Tm))pV4!`+!nVne@PO97m{M F{|DUJHShoc literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.woff b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.woff new file mode 100644 index 0000000000000000000000000000000000000000..bdac27ab33fcc5ca7dab80162f6bf72b3e81d0de GIT binary patch literal 228880 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�?lb5@pqwA<2yBxNKABj`;Xpe944xYDzev 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 z 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%0DTUYfQN~wRXO6)1FQ1p4&ld|sEN1OW{}97 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�H`dK+qHcJ2IVZ_3i#Vz={#y7 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

Jsr&ibL^6NBP#Hn~& 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 CSz(p{ literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.woff2 b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..40f298e60536a87cf13bd2877a3d919c37cdbf40 GIT binary patch literal 167600 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

!st>F**32q3`_6+3C^l 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 fNLIq! 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

vXU-}ssB$zjwB;vrI~kvYE3Cql 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.eot b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.eot new file mode 100644 index 0000000000000000000000000000000000000000..66cbe5c6062585e9c9c8488dd5386b09040fc9aa GIT binary patch literal 444988 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�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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.otf b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.otf new file mode 100644 index 0000000000000000000000000000000000000000..10b64a16660a4df3c4d013cbe25c4fe496b0ec03 GIT binary patch literal 288020 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 Mg4kRu6_t5C^Fa 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 `ayfbSwLuKcp8*?j2 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
CG*6e~|-d@DM#UYPS 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�B%mMZb2;ggn5)gC`|dHWmbNt;%DrP7^> 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 O`)_LjaoFFN@&5-94S!t# literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.svg b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.svg new file mode 100644 index 0000000..bba2711 --- /dev/null +++ b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.svg @@ -0,0 +1,8614 @@ + + + + +Created by FontForge 20170731 at Thu Jan 20 04:13:52 2022 + By Aleksey,,, +Copyright (c) 2022 Sunn. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.ttf b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9d3ec9f8338c3f0fddc3e6f29d95d6f8beecd597 GIT binary patch literal 443532 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 xu+nkB_^HN&@Cjr$Pp|R7 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

pkQ>;N9o_#=F(K!TYKA6Ypa0Oz-R7*SrC* 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.woff b/src/main/resources/static/fonts/sunn-main/SUIT-ExtraLight.woff new file mode 100644 index 0000000000000000000000000000000000000000..f4600f918d66deb7eaec2603d7e05c781af0cab8 GIT binary patch literal 225972 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 z z>&gZo76`?+TPN}f39%#*nlw5hU$iUt7Mo^7HSAp}gn7ZEyHsy+9riI#lyAp;c^0ZL zw@q31MbhH5UtU=F@ki6Ae{7qQnK5Nb1|`wnVyd^~(H*)(ySsO9*S>rA_Kli1Z`81P zvqth>5#Jeo#A@B4zQK+uZBjKxhrF&}<`wEu*v!~>bztCEeSMl2CZR#p8VmLe&<;5` zyE)U{W_!gq=-<>3YD#I*Vz5uBp;^BMJa_=nLj!Go@eOiulKLziqdawk!W}4;FjrGkk4r3?$~2xbN7x1y{0iFRc<~}HaXi6DA%L`5g7E59?2#VgeA|`m zX1ho@UR48GL;fOm`UK>+iVqx_Gsh-u`+ZGHCv9?i5OBM-H8!PzHhO4$C|>d}%?Psn z`(hBx8hKyF7yrh^gZFTu^V+TSTCSw7f~=Axw>VPEJ2QE*Mc91q>$Fb#KEs2$GSGrF z+iz`+PHm)(8qyrH0WbN-jIITbZm>SQ?_`o^&G_O!xfq~9Pvwf7TvD;2npE{&66dWH zoUqGNz9@xB5{KCcK>zI4)+Q+psYDQO$<4JeM<6=In#{gn8Zusmgi!X2i#u=7gWu2# zhz`)TY+iDd=Dxd9+j64px{_==P*Y2nvf!(JpV>`6AUk*v6M|epiEw`Ptu3)>jdd~U zEqKt&<*>^Al4$;{*tt$z27AAxa?HS-5$+G9OW(MEogk(oikm2{LrP1s4%ju` zq6;7#+=A#9Yl0p+G~?=3<{thNHid@{Y`7WrSfzv5=evw0q$P2Dm?`ChHeu_zuTy&I zQicWhwSa@9c;++IBo8}cT4Qb0(0IsJ`PFnrLqFcH6F&LBB@OTX}NF80_cKuVkly2|W7U#lU&!!O;>kx+3a#K(SLjr>5oZ(f^W^ zSMmNOX?d+<xw4-!+{)eE8(a!?Pw?(vp%=(-M=?x{F#z4obkM=OOqzI8+b5XHA^n+~j0# zT+?Pz4t&E6@GUu3bRz$959^`yx^)8fuhVJ|F-c~oO7$_PWSN4%Ds%zh;`Y@)GO}IXO_xz-`+PYn9*JNFPy)P8Mc?2Fb;L#tf7c`AQ zzdMyMe)vy5yg}Ui)9j(-@c`;L+|P{Z6tW^vuj>rTU|sK zBL5X|7IHy%bd2fRibEGMBpv(^GSBgEeRy}BB>y;TRr*3(KQMpCGrSxvIycj{?_GTw z(?Ix#F$>=^8sT04UGtLK=pwq-uEDzQI*FS6@-z4@m`Bf9FV56|_jvg8aBv_0(FYnx zMX8QBhLG2y3f);BSPj(~TETi0Voi=SdK6k$wIt_mBe#cl!F3x3h2oMBiX-y?{}F4U zqwk#^X`LrgkLndzrK0n^j4pU>ur4#L;5VyqiqRn6s?z50ugLuSd9c40L=Q~7v2RWe z+Q`kE$vnk>mRy9c(LuJ3(to~oSYb*s5AnYz8Jn#AeyJz1xE~@b^uZ6G@A3q4EtcGH6tHtnVsm}R{xwFd zDw@4&)$F2GwwWWcXU-TgVrKmA1wCZVZ@v_syt@MK;q&4q>uomflKA@#<3#>GGZqIH zzLH9=#HZKrd15an_&O)lck)tH$$X&cRZ%1_56VYOli+p1{};poEbUp=6#o`6j~? zxE;H!)?EySlW$lf^Z~t4%RTfUB!7p3rBg>xlZ)gIZ&z|$THmUaPf?HdrF77x)B~kj zA^M0YDPg0HE9y-}+j`SgSS z>0#hH{<~DkzUT{P_E8jbQTT~e@^Vt^OE5<;?V=ei@18(!;Bc3GKyTTQq;)*wPfEw2 z0cR!EyJOXR4{o51Oe4Lnx7dxkooKyh6R4G+k3Itfz;;Rd)NK>BZk(I;=ON%vS@ly? z?Zc$&wFc{aLeZJrI-K$qx_*WCjf{p~TYvmfm@ex!nW-gQ1PEFCJ>J_aBa%8gTNQae zg4dctbRI{mJ}KxtckLR3HTlhjcsi9&Y~~m@lq0{wxIxrG-emb!aLOY54*o$Az3j#z zM5SNh*~a*s!x4;cySzN~9cjh-45MEc8bcAEKfs1ab_k_$1Fcc-phboEi(Q#ryM)3E zUyB=H!JOpUede_GN!frSi4>oGDut>F--6cg&*nTjO;!ng8lT?GVxeuceTQ}IILtSU zyxN?m%O&1{Z81)3Ea@l44QeaZ{r`#^UP-n~?yB#V9@MIv&DvW1?9?SnB2&D6ysv3S zw5CZW(Hyzohj*Lt=#($?Mc+|2MclZ+(8&!VBWc)BxeqM@BeE%&r-c4PO-$E%AM;nK zxS_0-|6APf%DQu>FoXIY)_vU4!osEGhY&2M6l4r57(|^=(ph)}+{11+<Sm zc5Rc;rAtD+xHww6l))$O1|3xbFq5Op+}-L)ii=u+A2&t#EqkRo2#MX{n- zi(kyADz$&rowXfhkG9O2gY@eQx-{0-Zo^d@#k95w_lF!@meO6zB2zfGIHY+~EORV9tXK2|7 zLeU}|YoWthG}a^}Rx4l{3GZ+S@g1WV-t;`OGL@JkP*etWKF@6nh3FaU#T)zmn8O{y zAq4&-F~@RLhu%YS9HEoG35&g@%U=}-=w9BsB*1D)Ai*D8mfB5O8a;w{;7JQam#{AG zn&IN%{s8~kA1kvB=|x?RE4q-c;547JTwTfuC1ia@g**6(Dwqf@rBUo9xDP^fn>tIM zapTYya?s;&;ar2VL;MfPLY^UAxiv~mLG-ML&!OfY*7ILO3cJ=0 z=BzNN*hzMxwzqw`Z*!+@-tx>IY(6A)l-DRlPOp{~w}? z(k{^{R@W)9TG_B7>flFdUFjYcb+7b{J6DHC=Sa-ErAwE#q(TcxFCb04naMmpPcQ^O zDBKn6so3L+UNi8U$m6j}9N^nFSDCBP4S-sRs8p zDL>dqvv`&JSquoo7c!CZC%4C1Wg+~pHlXHqqX09X}WL(lIsy}5&&DC<1U|IjH+83$R)a~%1)TUJ=}iSgQr^Q<+kOm$%^Xdp>z zpP!GVt>zB7dU93J< zN)EigcVYj7FVV*-DG)3O`(ITq;4g{&C+0>UVe2x*^jnIboZ~AC^JXOl6uKKxgiL$Z zll)2g{F${9z;GMsKRSp>5VkW_krB9n(09NIooD`rM=Hb0zz+?XJQ;RJH@P!sSWo_d zS(Z!s1UXA{t}b=(mHXb7o;6U(-UY7PghN9m!3iMXNx?+@^eMF%3&K&pBpvvS8G|-~ zj%nEJU?ab|3SUKdGG`83iC-_~FNWazK%RG~oa0n#*5#HUslWiUXZ5O0S^=g={JErZ z&46~4;nJ~wicKsfd+|PcLH(`&pQmf=gwv8m4WFm$;td>z~WU6)6aZ;+6gAVww z{C9nO==!Gx#jLc=&0urUAGxlX3||}R_TTy8rxzfKlsUzKVXFz>!#XrZH*SpHHO$ip zEFYn#51Dpws~OZmsMdXKhgu~Uu`X3;Zy2fxeV?h{04w1wSKE@5F-6$@SF*+x^3Bn8 zboia^hn~*Lb}m4_PjrD7z8%4RwNk4HNHfi~#!M;|-+X-aEdM9&5_ zTQjwgGseVQaY)T>xwhfQ2cV6upuh%R_0@R=2SMllZ@5nwQ<$gz#?CR^Ps6}-?h^*ks$>{NN-O3)4#z~E8HU)k* zU=qHKoiKXTgbAa@jJKrp={-25SD%y)SJz|pTiIsKvVq%ub>2a~9-MQ3;0(VZ6VRcT z-Mhn-diCnmji?(@GbpHLjo{!K%t81K2h5kvkMMej;rPl;`lcl2PDs_;7}@Ot#f5I5 zEVTS713X#0>eyFfE!l&eH=#=|{13A_$LiYmss?Uba;?@}3zqW`f=Ho+{o*r?dq{wp z0q_Y+e2^sS55ZXB6dFL*x^~G%wv~hx0x=?N>-awFRIVof4LFdgFkPpGhffPfbJ|G|##FXc zi7dk%Bl72t(@vUiVcv&rF z7bhYIhjMWgMa(Ful^_wzl7P>hAp>h`>kmn-b>|*vCV>c-@Snob-Df|s4F5xAt}@V~ zulU^D5nD60ZqQA;D~+kiZ{c1|oQQUY5mu)Ywu*)3lM+nnL-9?0r>0Kr9oS)Z^~&g~ zk&23&B)_N#aS*l|bxFK(xy`jL@>*Hkfa~Rf>5a89S^X_nt^)HX)>UXlP3%6{?%ED9 zP1?6_64QZi5FXy3L3pi(U@IIq4ubfwb)@#H>(foy^wE9qV76;lj%g6KE)1neKqS~~ z4i2hSD~RUGp2TzeTf#}frB`31)tOX?iFVu*mwo{4(rOSHb{H|goHs^C^k(WJALeiF zXAUE^A~+uX2`Y`p!NIX=SS{pv?3n1|dufiYj=q^kl#=U6QFAb`10}-lf{XI!5=b_; zfH+^xm#rr>(_*Y`v=Ji;nHO*$54_MaILf(wi-e9H6Iyg&M}b9fAE~b7j+$b# z5S&Kth(L_bbP`{s3Pl8VzKYVOQGKM*!^~e|BC$FPnz4=@TwooNse`*0CdF&59c$OP zwSVb~BLlXFhi{j-Kn<#fm~`k@z&V>izWJmtG-yG9`DEAyCZzbm31TA-pXJXb&QU4G zPFXeN^PG8ZMLqz|be{N`b>L=Q?B#U>yXhJx<4t3@wrS@*Nw}}8XQ;OhodR{8dGH;7 z#l#tOz`|dl`Rs(tVNm1-%2|%3dLmYErZX>W$QJ}pa~?O_nz~)z?ELC}oplZS)DCQJ zWx|Ek`>t->^H8QKxfnvcwEz1O8(;$b86WC8^v@}LsKcMb=v`*RxXg#XOV-4vgH6E; z^+DZ`3VTngU}7-SVe5fs=-D?wH{Q8mA($*YXCj2p8BgKqk^$>nqR+4H+f9?05yT`> z{`%+KQ?y@i2=Ufr?;OV+%HW2xW{jUd_k}*dh#HA;MeUN~%nPcMAFYn2LNUfN4JsW% zE}~Dzt^1$Wx#K)%I@aaHth{;ps0*tHcW~~W8N~EJVc?S0$~=NQI1HS>@C)&BUQB8s zE_8;VAKc+*HX)C_ds!%Q=VU!(9}Sb<1szybszoaOJSZ-e6l!833F=}4zuJV87>Jk)?ruNylC6SF;0Y@93p42E&(+id9r>MI#Yl zeQF0y%g@LxD9Fsn&%K4sihb%2hC`XY*lv0HPOV7bRXg5$2KMj1aEC9CovQ`j-x1N# z5zKtJgYt_gC+0`WiSbvzwaD)*(lg6b@tGx^Fk})y)yK0kwas(l!N;H zLG)`?e7s3-5PKx9gWOM6^|m6v=Gz}v2n~b)gn8Nc^o$R8cYInI4IwDx&Q^t9?gF~? zhG|7;4l+h~Ql1PoE+{P{enK1pA=Pb6bzuu=D9K2~GCtz|aPxuzf1QJD748q-UeD-n zg}3K057qlgITM*MFT66-LU=$v2Y_fv%mj`D`P`{0Vbx0bpCDVCJH@NsY~Ip!@RMIn zB2+6;{(Fsd^i!EH7L6om!{6bt=55$k2pIG~2&Q4k0R!$TZ#8P{;X(6WZSozY!XEz> zcT68k-b@n2u8ux;2d321Hcszf>+byuKt~n4zdz^u?isChhiK}urKvna^ts{)Qm`~sp9`=MSubdu~Uuaes=TXs+}1z0_}h^X0ST$ zXI_4%J0Nj%{G=PELPk&-@Q&SVwj()6k5ySTLWezo!fPTP?;Dg?mL=rMoetmwKy~gk zFTI`Zmfo&B=zF2Hj2HNQ=!wYT`HDC|pH*|`e7b7x+*P$_j2bnA`~X9l=c@@}-*@Sn z(57?eHl!RA`C-1MFIUbIPwM|sb{$|*TwR+pLz5x`b~K8xJG02{s)!(nSg;#=N5qDL z*n1<2UF>2nQ4?cgi{04kXEa6=d+fb|HI`_UIsEtDnc1CP7R+ygCV8IRbMLwBJ$KG~ z-cM}q%d4+5>dZURfz+NWR$P|z&$t;~UGO#64BxnPomtN}Wk+Cz9m&4F8kD9WvpGXuW$)a<6{v zQZ2qpU^f%zD;-_+a2GLLN*cpW#t2WppyJ*Jm@b~==shO=F7mG8NtvrmF^509-{q=> z*84r&&-yG-CGT?(yWd;vI{qf&y7OIJL~nM2E@&)UpQ~jB9-J@18Xtvq;(OfTA5_W! zUkmGK;^4i#BZU)vxpG)tKA-6Q{+ji}hkf@8QgZX<_Y$o)R1_9yW&d!kb|3$HK9rm2 zJO%Im;1+%P$AtFeYOhkE85be_#uXyF^akn1E8(yJ-k9O(A5^R`t%Y%<1P!cnF^e1y z3}{&U!CPJwDr#rM?aLs8;L-9>dV=$0e7J#jCB7r;3Pl<6N63%~^yQGCj56>L2YdJj z7xRV?=q2o>m-cOPbQ}`X(|IRhFTJzdlC}6&!R7&~dY$IemhJZ&Y3|c~$=%#j1_wih zmq+UMtL|2FP?1@qtNl01exo+E z`C`gE=aVm1%*Jrk{*=zH-G&DD^+`jSu| zTQX@gxFURXr}@$_4x7+5-%`oDQuPxnX#840zU(`bG$VU|a%b0G{dGgQO42!w!_e{B z2gmkytJS{_O?4>=PvZvxb)gLz7{mcpDC%y2mY0=@ugoI{^mTY z-dg5WgbXfwHij6^i}ILM4pk`|)>^){7=YG{Y{dR#=ad7Z*vL9_{#cf&Bi_dVKHzup z5}Y*rI)&*MT^x;_4~!O0_1AK@smEcMu^oV@5-t|%LFLC^gaDQ zAepW*H+epoA=PNu-cYrwtRhskYH0iV{=uc&gfI(8Zq*xNrCya;jWg$X4`&=~9)N@m0ZK04g4* z_wQDxZlb@=etj#*GynB%%dyRGUp38`$VE(;DeZwdfAOVni!b19Wu+tcXGoQ=h$8)4 z(ekwN(n>Myj_L*P=z_mC%KCb=M_c{b`9c>yInNq_A0>TliWxI_(C9G(2aPrM>O^xm zJN4oN&WTxYPyBVVXA!-x*M%_{o{%8+uTi6VWQ`h;x{4Kb`id3x2h0qmVsoK~ynJXa?MkP}rFWNWfO{Y@XAS&? z?U@d@sxMboeRb99bmckO$V{j@Ws{&TJ}=aLaSPYB%esbxKV}b7bmpW7;F81fcV5@N zw~E$NFZ?1C%i_yyhG}J;IjuckW-tGH35|U#TyRxcty9Yu8 z%yR#6t;^a?5l|AJz){m26ZtzUq#00V?Us-!izPxb()#Y;>89X&y7jcJuXkZr`1bs0!_;P&UFhW=? zWEfW1#t7OCsNoft`TptNWqIj%y*0BNI|xD%wn(7m+a+(F$+MM z8fE0tYeQy;M{HnbOk8T+ufD3A8dul~Gc}may50-!RROr|zazH=hMD4W&Z|J^#`<7=?R^4BAd2#hrs{LPOlu zor^F_AIYil27JZK;kTAEP0j3CSQ;O_rFQ7smOJrV{xP;vze&l-4*039Ysd97Vrb*k znopF8^O252%ubVOC)8)ERi9Ug&o_>^By#c3rRmU(yrfK(XiI%S2Q)JlI?k>Hy4~-#TBrT>u| z8y*7r#Q*h&?gz2DqWezllC?+QcNLvN0AE0$zgGDq z&j{r&*z&sIo=H~+vDG(ZTX)Oq<5DpUN>PK^co)iZ&Uco3`Upilv*t?1^XIvQ-_aG^ zY;C&PXaR?R5ff?FJ(+x$q@9DA@m$!pw%nk~Rlc_&JFpp^XqP zUa0Z z=Z;})$JTC55m0QiP)bWlWVDpljFv+BD1o2&Tj;IjOi(Cmjugeh_}Gzh7@voW!shHS z_sS-Q&%ej{ZC>mA`3%}Y&#l3%qbaJmm?>Qr7o*7M5tJ7%hTU1kdiZjV^te^4#*N7j zB^*|(6&oSHlggM(8?P2{c77pV%{J}aDJ>+u+go_(j&80!cMfO0>r9K3_)8mVelu{u zH{T2x_>D2SV~5_!?K`B9Bc(im_)EyiiR`-iGYz8>6ZNUFu~E^nvC*Q*BTv5qvzs^s9*3x1kgmaLVjYeqbO>B9+T_ikOJM5~+HGV0rhK3+Wqnu=$ay;p)##Md=o|amb!WRT_ zw_e;`9wHrcJ#8R)W1P`A4s@ggE7;w6X{>m9%E*Jmh5rqJ?whdL?FSf1ysO4_zIing zZ7``uBhi;xf3={cYum-$tkxT;f#iDC+c1Qkns;W1*XGT|Cj?+~?T(`lxPFrUak8;p zs({hwqtW=1*l)F53nkKSQ<#s6|#>C0~S zN{)Kqu&lCG=^vw*&eWQD?v?+~<0#u2-HekbV>yV%cW&#Kx^`UFwkmkxo2G3m z8SB-o)tn}B2gD>4FV;S)dNcnLU2B%&dK-D z(vOXdsbP$7R5Ykmmnf>Vo)8t8P%4P8&Eyf;+{)(}uW09nTdNEHw-eT?HEARfCiQFg zh0WYsFOk=~HNs5qD@T}H=z1rI?L)3i?fc()`Re_=pJz(Xn>TCNfP|T9hzXB>$CCeO z@UN#@MbpBubA*9Uo;-Ajpy0uH$Y&722}#?@X-5Bgor{q;Pc4@I(u{QvZdDSp+MWka8PVAXX2caGsmt@`W_vzcEOIYo=s1kwyCGXB=#}qHSb6^Zd6VhD`(1-Cbzi`j)=@KzN#`?TX*1&R8O-4f zWBSN5`;4MYz-z1AX%)p6Go;EFF2Luh!Z>tYr@@%EZ*P|M`URXxOdKRgh1#FKw3%zm ze^z-Z02z`1M>elmg zu|u4#qZPynYYrSZU@{$mKBTW?vgV8TR^il!9SpT=%b2rv?Ye1YS;agBbCwF`+-3@s zq_;n_x%`D;Pha&dB5%+0mosv7R@5LarE?ofk>|om7UbD)Jd{xOaS}T>-pmv3et$}V zo)NLNs!{j}lcoxbq(@ura2@*sYQc434A%t}3)5qbZf?d);annW6Gd5p&<$5eLUYS6d$eae^G>2lMHjE)t_J(!&>%ugVknm zY*~XhZ0u*vYv$HwewQjAJ`ww_Ut0mkTD22Ym6;tKj|t>h+=D=lJrr^{4>t_O$_t<= zmQgTAWd(Coa;oa67hl>@i*giv13Y7QHGCWqm1~Mzhhraqgn5Rh39~8*Tn2%Y^$1pV8+35PuQDZA9OFeT9Af z^nEQpI8FNdSypn+#|PGT5N)r^<5SvfH?E=dl&dDK;7Ur5VN|CLor2eN6*}qlqkc-! z?dYQFq(<}37R3jLR+MZy2Y%_tlIT1z7@GIq-&fe%U+680>6jz#+NJWTX#1|JI(>d# zx8&41u+i5HH_XyWVnqiXllSxzcJ>jHMX_^oGM*Kgw1hOT3jKjbJr4FKy%2jC4Eq~3tXH=|gSzHw)y$P5A}ZPF zdzQ1+_tbPl(Ylj0K8+YKVlNEEX|N7wz>IUtlbrv=^TAZ-bFu;J@rlwn=gk);h<{EI zHZl^m$|;oj($tPlu~aM{OBT{JcX-AOvy{7H3v|XcFdNrG^4^8r`82#W-n~DkuY?|a z0A?8;a6xEr>%Bcm*pZ}9D&!#)@de{(eEpQ!z0UMSWtO%hjYdX1w3QhB2Y-T;UnZrw zT*PheJu|mMM_gOaL?YYEaFeNwKHfJ#=;!Ji6l`!Aa4=Pre%&DQweYHl2j!gX!^CD8 zjTVz*tA6=w2g)B`1_xlilQ`eB?uabjlX#EJ8bX{mkE()y&P!AaJqzjvkx zJ=}aM1Q}dBlZDGUx2#tIZCZN3tWcn-SYMTl8Fq9Nb)L7LlO2ApbX6iREf@-Nnv zDwG;0m`oFl(17o?y{mpxFMUrpj|zUC2HYLj&RDW!%*gWPnMCPmDp494MK#8vBB?}a z`4^IO=kp6Etww1Hs~(_bYgi^#CreaJh6R_t>*sP0f34s)ebiwXjT5;Tvza?(*%xe= zw4rLHs$Qw8DHUi{+RVE*WK}U)A?vI7EyMw1H41CA^l%#XuoE8G^DxWe>_TpG&F zL_goi6)ky=WxWAv-&lZk7r~)8gc;oiZzY{rEzkGi`NR0X@JIJ`ipFWrje&vdd-{=i zU(BVT!6kKT5B-*&`V{I7t|D%ZNsI~%j7p604EFERfGJ1I^Kh8G6{uXZ0#`!*iVS8f z8*g<`|HE@flC_wXb@K^JiJnsYSpU9dZ#KDWO|;qT?%6hGN>37PqzZXIS+FFhTNy^_x<}lL4?9S zQQWsry=O04@Ed(~anM=`%NI^4F~NGVF3h$-xS6*V6gOO?DDHp=Er$%zU=;;#1?AJe zW*_P7tdyUZZ4bE?-iDD0>pKRoP81UK`jHHEtxQNz_+(aG6qNsHEXc^wn6%I+{x)<- z-P=RhmMWwg4Dkv&f?lbqs@|rGk3t+@KBIvJB5l77wfY_EBkmn2^dl%~ z8$n4$ixQONNl;RwMg%26Cn_)|->FudWOm$({MM(=QCF-`Y3iUsQyElBz7287GFl=a z@fQUxnIa-g^aA~yoUGzSS|8z^MMcZPowexbUXva%_FRB;zbjuDXPa<7_wIB?$n|gZ zSVF|>ptrO`;uLRL=}lqj+i2<1f8nEX4tUdZrXih}#1o#H8`e&bR(<1Q7Tl!YfVXoA=SSj+uEKy^ z5=#=ltR+#!{=QPNZQC^a#?2B@8YA4R8Du$l8dVnTw56RNbV8WdEuWo7qZ z@0PV|xAYF?OR}+QVhTUCc6+{Bwd@gGE8ay0JYg2y6tgGVjoV-eD7uJ=e8W0)XVhuP zCyKC!Y?p)mr8qUHVB@c-(XB04ux>5G6->LfER-J4k6UOSHp#saY``fn6YCS?G>H<8 zuIRZQ=*O7u1ooMn4Y2o@0mA-NGOq@Wel1hJcc@=m?F+>TwY_;@K6sGyrtoN&LCcIC zzjdA1yJ8bL39dx#u2jD^rj>v3#M;FJ$yNLVBx4FB;A*~%^k<|FF5wst{~*6Y6Vsgq z95AA;hewU!<;o4O;o(ttMCst-9U`j7mnzx0dPIlf!F;hb9rWLIq~}{XjfSnYMnN^l z-U5w|?cEpMoO=y5HA#1mh8}np>fk)6g1|J zD}Ke9al8|*t^L3Il9oFA%SEYF2X=fNq_xx*M^mqD%(&<1aj4y=YCyxzsk zg-AdCy47ghN?=JpE)%({lF9~mdz4D zz$M|Ui7ulSo4agqYYyMzY?z46VKB~6$}_kZ^3fG>Bj;_fa|j$cJXkzR&qy)%2w9tD zl3j<<%p_y{o}5LyQ=}LBMdr)XtZuuf%7(L^*nasGeqb=$2fu>>*ptG! zF5s8$oVEg{N=R__W)7sBG4X2(aWlA`_eke+TK(mC*@5*}9rwM>83BHdh=wxq4S9Ox*n* zJV)~e82?ju{pK!Gg@XrK&5t9z!LpxB1^e3(+nY-x+Zr1<5qMZ;F4 zZ?OMK!`A++rjDurrP5u-Eeea8G=Ki2$@61t44r4&)!u1+`=-$!(#extb^O}HuR<~R zA?}Uq#WiXaXN>h7;}QZhsN)i)CJ_-#uUUg}-dig=D1X`A^S4bO%{RJoO|5tbiVEa> zu0($XxcA#+@zNNz?vsjj%38U=Omx=nb`K)g(A}{F?@YUEi*}a3fo9^!zfTJzMc8?0 zhbZO*BCyj3IzY5#gp>D1g``k1gGvnX3;K#(G*Xo8J$S(sNAt0Z?pZj}7hxk6P zbgrXOjIm;%ad&MI5E;yLp}P!%x(hIPO`@=&BO1DQS9$$fEL6_1p02uQn5J&@ong{% zL+<89L%rTYcVQ3(M1utQ&H{+84jQDvM4CEhs^@|Vz(sFOznk9Wi;D(`6UZ+S7Vqez z|D_j}9W)5fGGwG;6G_D;x;&~_xnv2cd$zGn2S4<61LxT zs+@52*dNrCFY-edIW| zGKq69v9pSP2e92^HFEw=lA~L4{*p+ylfl4^e!EfpcdhKtLuCG(n6_{+t6r|{H)uXu z{j%Y0v!UvX;`H3VxYWZ##G`|3<7BxWij8WmX8(}(Y`pFw$H(C!2^&tZup#@1x^K>q z_C8te^L%uI)n3|!z|J-sX1rcM?x&RC?OnL9)^yWv?5N!*oT52b!a&kkyQ@R`-^sPIJ{ zU)4Ps86o)J8g$Clch&XOL--gytoy#3ep4q)-5q%k`dH%1 za4kP1@6C|&rq#k(T&LNY(o%n$NzA-Y4h<1AkBj1Qfe+uAD(vkgl{$W$o)cY}7O{+5 zm5io5`9fJH=?9pG>x&QmW2noBbA#icJ+6~=joad_?81J6pASUKc|si&ZDZPAKz=z= zO0GO6`{dy%Vpb8kPgIu3GmqbN~E@bh{;Uy6$BQ@4Eix_#ojg%YVPTBa5k zWZxc9YV^rDd;iajJ?r>K9PZ=N@5o5jl?18@ykyFh#ij}U`c0relncg{tbTJTqxn6Z zB|WCZm=-M>(sGVrF)?8>kBHW02vD@(NlyZO*^l~p@Dh%P)_8*}WL~<|%pH|(a~04T zE@MTm9WD>SN_0H!neL<9hPS+5#j5?s3x*Y+kc{y|{Mm;uJbb zY~`?6KH!XS7LG*YIuSha{W^TdmlexH#rEy>DRt^ZMAoSjsjpN?uQ!|Z@*Zr@^j+1t zDWUbNs%>uT*)XmcmVyt`4aE^Ra51FdAqc=n--|azzU6I0mZn`d>n&mD0h^i+HiN9l z6~!{F)WZWT%?JFZ{{s$2;8qa;b7vk+6VD8h^HSUAo?tfQd}pQ-?3^e2hF9#l&~-u; zxfGS)F|}Rlrgb+xd;&!uLJ!q6#DbIQ!UZ}qA9ruPccK5K=y#3a-rQuG~v;_I{V(QM4hwzdmM!?tvVjQKK-szGa0 z)T-T()}|;`vr7rTRxvRx{aKD-3%tVl(dsYUeb%c&^*e?(ZCZP5VBnZKO`95-ByY#a z8eOR*Z$yWZ!EgZdcpav^BKye2a-Q(Y%dcSdfBw0JwsTR&!f2Gmcl&$;r9WvA%eXY z6tk^8r=1z-h?kpAj_2_+xR~jt;^QaRDw4RdeBg#eUyi5p1l&Vh2c7T?c;j2F71^ee zn4BzDY8~kjT%>dD+6hI1`Knh8AM&1;w!1--Vr1`xO5{KbfEy%u`6T@X_t^Mv<9E;n ze*+)U3~E2!>&%9grRlpG>q^5D&Cayh7al&@+woOQW1 z`CjKRbhgnrTbd5_aUYa=SzD=EflhxvgRIMs8{tA7l*4;Jk|UGNPbY=w`|M z$ME0o6Wf(TyHwkz-jSwOL`m>^33HX+U8IM&WNg^p5FReqI|>gswx?Q7a=jy&DGA?0 zS$qIvEqW3R%24L0@j{s^xzI>O8q;O2qbxb z?tWy&6v}!4_bxxGi}M92k9V%y+S zf+OrMS5n9iy^jz^i)s1c_rn$+S=Qix!Zu&VH?j{4L^$)snc^b)4%FJhAM?@b)GM=p z_La%>3a3C*yw4qd4h?cv!{7Lt3r3z!I$bv%+5aEFYI7E|s7MD|b~E!Cmu-?h#>2RW zCeuSqhgNtao5rFdyjpn&UEglgg8~1N-`6^lJIqDd6UDTu=r*(b*CUhZ5l$di%Z;Wc z&Q&_Yo!Rh_Y{+&yVG6+(5%}Bud!o|bX+`^6jl|TB*&r8ov)sOAGTp*4&;c*k<;tTE zS3)`nudpzez2F4KUjCLWrax)iF^`Hn50K}v6MJ8g+qXtR_BQMyAtefeJGYER#h@<~ zzTK{Ob(iQqoea0`LSri1d~+L@we)w4xv&yC%Lr|zMYUOvYxJ^6vojqdn*&eFyR~AS zPJ=cQBJ)7~KkgyE!W*@?VCg1&zzC{;`(hIe`|d6dp$Gk976g%YJ8Qv2HU)e$#*M>G;^fKfP46hH^-0@TvxhaU zJ7oNmX(t1CM2y_%ID8TFx$%g%zEDC|~}^E`G$v-Y+)8ur+sZ zD7&hA)Jm-8Y%n;7C)V~3_D`x;uV>LGm!Rt!b?VdzF`GjSl`0t= zU~BaRDkh^B_R>24Tchz?2CKPFCKI>yK1Ad^hW-C=PRL+2SDz~PTCp{+!PfNMPcteF zwx(C-e3NOu4YrnYIOn?S{=(8v)(JFRUPI3*E4I$3ZC|x*wGJF@JJV>))PQW#_GoTO z>-AaET4=gWfU0A^OkP!C3#ophDy^kernEzNLN6@D#VHxysNSN1d7i#<%4^9 z8{C`MhAr;3nGajstAiUgSN?{v=T_x|d)0Z-JGSKLB*`_>fmtTW4gizc+RZiodgWhO z_QB6OcA5;y1AlEXua8A_*T(*T!@rzlqWB(T#G$Q<%d34MYTK#gsb*Y1tBfwqwBmj0vPdPo2gUPwlDHd793K_!L4r1 z@YbM_1`LhB>qp#~Hs47ZZ(9;PvIZjYROTHKUd*1Yw5`P?<-UMQsD=EH3B0+*Wqd6ef;a4+=dOh})2BOG`Vd9> zP@Yw$pgBqf0{lxTT99SNs-tzv*NwM6U4Ocoa(E6KopO!R#p{BnY0S_BB0pzTIML zbt|IdyvB}YTyO0iUBZ6X2FdeddsD;qZ=pWDtVjJp?&_G4>Rmnh@L@PZuWOd8LUonT z%CUzooaJZB%v>6KEXVg;J$y%5x!hPR8lOd?wh>td0~CQ8_&=-u-#_I4_f@`Nshftr zNChc5fEV#2^vih<1My=KCgVdkP+9IDd^k=N$3YqCJpOYZdi?Q+lSYU6lhUR>Z>waK zq*bSCwu@IFWi8j>qccGzV`S3Iy_g>Xe(CDhLy| z3=j_VfT-Ws8glPJJ2HEg;d3L&h`pdNzIk*2iftd_>Y?*=J={w_ zI)ykPMfhd=cKio-1=IIM8(k)4kLYBjXUn2yqo(urm$a`ZoiwhdJb_#qxzL|r**o|Q zip?GdCGqJn5jUSW!IeCH+R3W#d{bCzJmwj zUTDyBAT=^jJbe1J^q5_Ebd4NW_R?3%S18L2I=mrl7hr{qcoStSCv7NSegnB6!sQ({ zLJ&qknVejUD73yhg_1-y7vtGc*lD8 z6kiQ3o%8?j(LPAkD0{aGaG` z#_}1(cAXFxQv}MjO*b0TP1rjn6PnMP+JaBU+&S7p5>8<%ElTLT3)O1$R1-T+9iAKfM~SiEx&`gGIH z*-PhBI25Ng>SU}~vCfzZ6~@-CSkc(2k$+Ih`0CM#rAj46SC20l#FajFjP5O!ghc>wBs2j22ZFosPVk%ry`JGVS zS7i#`S3z9SUGs;YToo+>3*hBuVhC_-#Dq< zV%|fsqnwO+?bu6B72UNeg@1~B-BT7YYhGL^<1=rkd}hcs8oAFX^>iy7RKeiV3;63h zcHsNn1B64pxr%6z<8;a|exledoxf$9Gz4Zjb2$GPce{_8yp>o!{wnzA9=h-c|Uf3R8Sb2_UDJ=+d#3-xVq0* zxPKSFrENwhV|+$^{~j9xD{ScDPXOsj&XaWEF}@t->K|O9aES95@RK}iCPoWFbRx|% z?b@J0S3ezB{P=PBN?OePP&M}`_ne&za+bHrp&tsUeh|d@Y+Evze~3HXdN0@tJ@L09 znUg1H(jU{f)V|}!r>2gBb7UPn!Dl1giUgArVGI;|@$0X+yh)RK^%^&>M|ljDt5>hg z{Vx3}-<1rv{;9^WI%P?RsmPV0VZRAny>X9a=n8$a;-69U`i!7gKZ;)Q<+Eq%{YSCh zTLtUM?@FvC0$Ma^&xP*ci|LPZ-e;v-(H?ZW!@b38(?oF^0eqLwid?xHH-4Tr&4L+F zlk-n|>3}_~whqO|b2Y|4b_Dwp@4&qN1oZS5gb7>w3;TOOjh#C)`}cRUV6R*YHYuk; zCt+5{sOW_HMnNc9>0C`ZAPYJnW)y(ZV=xU$28+iCKzTTIDohwWSk1Mkn$I#u(cAhe zpLMBq978EH8fZ}p_25T*I9?RT6QJ@*t4&CNN>M#m?(Et1RB^_VAJ08izJF`9%q8*yHJ2r~Y| zRUuArhN7m&Tn;`VZl5lW8Z{lWUP9vUzvF505Ar$(-LsM07~rya!O$3<9zxA4;$k*jd&k|md#`a(s_wzX<}E#(?k;5_CGAL%g{ zEdA_48|R8(*=wT(VYK0}06yGTvUsL7*74U?*2v2)X7d$kCz9@s^HR7P(*H=8%fT8$ z3X5{|DF%qo)w58C`TG!SU)5InLS^5=G1rxR^nV@C=v=iYf8VC_xy7&!H$6 zfKRc=ufHnsj*BMV@yQ$Ur~~uWL_D|6 zV>magRT!mIhq>##+tjYz##_hfPo1)yVgD#x4ZX&$Ev?!H-D;17bXik*!WoqEljlku!tE_ACJ@7V7T+db!a-}#b#M|lk8rEM;jwZaWD7zPPl^+|e& zB=ABKXr(PzC7%1F%w0L<3zKDs$gfs(Sr!E6$xg{M;oQccH-TQ7QjQueH*xIPiS!3v zW4SVedh{4Lut$$Uuvcu+LcCJ1p2)?%#}3u1RShS84IsAyBUml+Q29A%9@` z?iG+9i(L5{@xUZA$j9-cmzjo5a&Jz~u4G8X&z_UQ~_v0<{X@C9IdaO1*Z)(cpZ=W$;Y%kU4IX*!51ICZX9Lvw08qoCLb= zxTt8bm)rKOE+KpV6uHR#``>ZAG$2{Ad75Eib!>uT*1CEa*l<+toA>U;(ok}&bJ_yq zunBJMNi;_v4==fKW_03$q^*!k)qJGfnlv$Ib0MEVf7jVFokghrNVj}B?*5^heq(1@ zAC>fjyKnQ|N8tteX?mf{3tKHtXaU7X@dGnW(?+_(R=iZmM1YxeiE2nfsb5T{U${?M zS@=KCB0+xcYrb_28MSH^?n_R_>-s^1;2YQ^eXPd(A(FjKzt#CE+CoN0+(3O^$EfoG zuaz1&6*l(tYmm{Y`VIb@#pd)u?(Ja;nW>I=3F;p;nU3BGh)Rg@4E9ZE&>+D#*fS;} zD&RzMosZkTJ$wkXdKbK5!yULJ%^OO6qsu*_)W%W2zl1sVP5yO+mCohh*bd-5%5~6p z=7D1i!3MlqY{8^SnVFL&XPQ-p?&q^6(^>AFB;g)+PhDZRIkTKYhi%$~!<#m(Uys0A z3TdlEMpgkg_@8txPS#vjbmHYRx16J@0ctf#YsG-mQWxhYGfaItxJN>F{1(FT!@F%p z<2HpeALZp0RI!3vKZ#2WIm%y!%l+?B=QSc3VRKaglQiFNAs7LisV@#|1|`37?mNdcbg4V+z;m3DD=qDX95a1X zp(lH~r*DwI`^x36A#+Zh!avW5d_!q~`d)C_QtzvrsurFfE1z0sb;VpUy)_g~;|DH> zG$lICK}hek#tnYN>wv`azaKy1?m}d{xsBL4kc6lDVa|q;n>W8j(Sl{8xh(6qJUMen zW_GKX_=*`nn=e~IaTx<1gPQcm0B2QT?5uFE-zr?uQkHwsLcK1bdHI%(_2xY;m`|GU zc~29CgiIgvE#8I-*q5xaFF zH>AqIFx3DZDKNz6w6qb!Ex#)QLfGe!``Fl1B? zpP)BEMggZ!CX5qZdr7tBX9GU92`B>$w1u!7oP5OxYlqAbSMkN9oQa z7&{{!>ctnn6I*-v?Agof#@?AddB~8-Qw9&23@@#rM{ z>-x^Y{ZUb2RimS;!v1sT@J6A@la*LJg5bE*3jaf4JjDdtdNW3mV{Q2{m82+_` zwrticfp0nQQ>>qAUgK2|G1<`boXC}BN0w%-+HjEVSmi{|@;o8{fYSLLkw+J2p&{Yh#mZG7;8Opss$HkTG;5_fE+<{>nP;0`W6x zJR@%)&b`BjPzJ|{xG8TC&b}6~JIXR=mMS2!#o`5hDNyGze&y_0D_6{(y|T)bAw#Cn zA9$&m)6K0~HEzvd0xmmzfP>Uo=)cS(K;t7Q0BhN6P#BF ze#H}q(@ z(oL50a0NrS_N=%g&B>E_wk~R4R6P-S&9lB_nWT^HVJeP-PI!^4Vlv&w>nM`beU_fl zYcizIN?Z4MH%l(9uLBNX5Zq^g=VE=C|M!CQ>UZ*AlqAb3cLct=G*50zy@T9TmV`Z* z&eGbYSk8bhw6G++We>3PU;v5I%H!SjhQCC<1s0a~LOf~H(~=|WfS+gK;@+3X8f(MA zrENdOp9q*eM-wAv9~vW^8pM^vSc=Eg+(w=$Q^=9DwtdGLoBr|?F=Hjc<3{^#5zbM` z?Zg|mpbmY%zp?FSV)T*K=&U{CTs`!ju4nq{@jD$&*yKa8I+?xB7GAEKl~-cVTeBLA zRhhnU!q#I7V@<>&^7*VCm!}m~S-F?CJl{3yGN~I1|1(Mth~sL|j7>OO6_<)6n$5}> zJsLL&85wLoj`3wJZGUCkvZEZUEVI=>+ZpkdJ5FyhS6{an3fI9H&#V>qZm z|9U||as3M|)p|g29kWMbNnX~IV^z+fpwAp~;)rz{K&{3!VZ_wBYDrqZwRKcX z8^4kXHA_})ZQi5Z9N^O^mgY}YYt$%I&Y!Bz@~5KYe35pBMsS{zRfw};0$G~W$46N0 zd%JU};M{HNT!t>0M47~s7n>&Z?Kg2^zto9v)kJgN>7?$Vb{@8E+tfzweXsNn^T$#C zE5&YwJbbi#azZrQqqCe3Vx}uKek#icsqk}xKUbVszl-aky}V{I)?qRTAC6v5PU>Fg zZ1RmYuLm|K(JOR^=U9}U9sOABr24#+&_@_3Kyx^SKM9o6NrLN|TE4X96j4+wwd;1@ z(xqnUH#3BoSc3l*vS8O##EN`k)4%_gj*0Ahyvmt&v*c^4dHkA|l*-UD8Px6?H{yhw_N@$`_f~Be$cgV-vvC3x1bvErptW5 zL&Iy3s$^#32;rxn7U3E2G|=Bp8#4m_PV56ASyU%~Id z+O;s}p77ks!WS>C@u!2CQSx8y$6JM69(-whDc~_~M9k{d*je1Yd(wT;mRD$H**f&7 zQolY=>nbUm54bA+3;&uHEWn|{`t>Ws3whd?D-&5>6G79i$}OXYCtDg1(Goh~F=H?O zJ7We;hY`5-+i%Am9xa?4%#}PPTx9cg#A1i4lvd1R$?knvXT!_3T6Lzp?5<;LyVMzz zL|NKV7GgH{Zsts!3Zrn#x8Kg%HN@RZ@9lOtMUNZ6%!U50zv*Pl%~o%=P-{>8^W1Ip z<->BnX}e-a%?`sWq$iA;y^-~W;5f?aMZ>OTnaPJ7qYQRi?zqa(la+96s@-Zf)N$!`XY0BnQIo>&ev5yB z0dnTg$C2W?b=c$DHJ;#@_ck`%G`Y}@R=4(ivtQvxE1{eZxFFtx8x`lw!8GBAAJWL> zyhEHgQC;VU8JFD6lIvN_c8}(V%e4mWiRI*|;LGF)c#o@7gLrTdejnF2u0#nNX8HUd ze{|CDwLKMX0a^dS)>2qupc$iW@`l_^E`l+c7Np~M*0DE~c}*$fWZw3BnaI?r75q() zO!23maCK~Kc-7e0s@&0sBIauMyQk$POM5>#VD59LtQ6%0?F_T^R9NVxPt`*l+#_C} zAgo>u6aN(NYq$&Yxk7fBvZCc|NK2B)xTh8I2o!q?ONeglvKHenKnvsS(9qdN?jbn?M-h;-X5G4tc>g`u z@oJXz`Rxl0N7#iS{;~>(mwF{k_DWDO8=kNmW%)EU3Oay;;P1Zvn zar0*Q?r#7ojayh9_)iMZ*<-!39XW`kmGMTAmafJ^3 zfl=p9*m8NTuSi<9ren}L*>y^r60jG;=){Gf3f*c!Drz-q~Fk;V7$-8p!QVtGgjZufO+uXRK zJ$43G*xA!BZf-Zs&@7WVp`mk(F9M^x)$-8!B{goG%`@u%nCm1d{9NXX0>~8JFWE#qfE(xU(TVs5S2E32nNCr)sslR3${&7E zc{D1I%2VZ0X;)xD98UYa+i2lrssT88p+#jLN-0b7673ahd-?ozaACk@^F}O%b!%3Q9ODW)zJp|Zc5B^=YyS&hIo&c;pT(2q=(kdODy^fHnhs~=fpd@P zm|+rrziQR>cI}!qBR|#a)~#MWF0MMaZ!U4cw{p#Vl|!Vd#u4Z%4>pYTh|4x*W4akC zkUyT{Z6zUgcrMEA!e>$pNW@%m%p)hR=7hNrXX!EOlcpiD=pjf6sMUXfc%k-k7_gW z5MNqKhxj9~@u#1Tea5)myC>fk)pk#FpOyXw0Tn8gAWaEh_H*tS{cTMT>q^DxHl{=1bYI3GG)*0X%B9ddR5hy04^) z;F`wEV&mg!8Ax#Y1?DbWw(T)?|MABwty(ovrN${^N*VuQ#-*lx5FLA&j9>l&m%j&k zPU@i2sT0-)mS30P&t)xHvim7IKmQqK;))-Bz|>k@s)=HF7e=Ozi<8OJR{XELg0cHw zTR}l#MU8tJy3%M|iHAuHz;&eW`ZsQTfT*0uum^LvAawcok!#B+Q8pZA^{$d{)iB#l zp~eD?H%oBNbdzbiCJ-S0d(U}RTfBJpHS~S4Q~3GkrFb*PmdBh=`@U-XRxUGvb@PnI zc?{aMQpwB%xw-XMuH64pS`N+ji92?TeJVOBSj30j6$(nW#s0Qqpx)t~(TQHJV~G{2 z^vJAmjg7{)hN~h8tKTnJumysv^mMI_09`<$zs7c? z>1uGgN_zV8{n-4Ewc_H%)Ax)J{+FuZOk2;3a+bN)tTij{r=yyxnUZEIXBz$p4dtGy z;~{Hn`NoY4@uqm?3U5G9Crw=<>)8>Mk1e~zZ>>EI^e6ui$~~DgXZ>lceReCP# zS?5ZQ0eq}VLXJFF&^H0?yeV;jMhhG+k^bGt%-rx7mU*;~9!Bfe(>Oq@1kRn1o@;p3 znoJt|(^%m_YmpHbmCe9Wzv&bkeS4oGql}|R+4-);Mr8{^M|6x15t9283X&4%BP{N! z0Z9-rWs340L5q{h=7TycJZpz&30^;?fa!fFikJHTsNf}dJa3-$TZI+Z1brFVFfSE= zZs5%m0&t?z+E9SgX_5utq~h@53dYH{KP&P_7kPbWK^SoA3HNN-vZRIRIk5==8Ov3W z0e5E3Wb4l!X9Rs2Y2>x1K^t)J3HNHzqVBUXB)zjO;DFCe9KqQRbA;r3>pJ3;7mPfD zpKy;>u1s1kt$W%57SPp#X?d^*WHY{^{4Fes^@B3XBlGs-%LPq6#UQFX2>?-8-=xAywe%jNfvU`GX}%Ey?a&8 zI`3}DatA67Xf+0+2Mxj#V+@8l_~|xuWE_2#cg=ee zkI40al}ty*5Y`xw^M6?$=@R417BEn2gd2_(5K5S`Zs5bWhN%OgIB42BeFBc1x62p`C@|bY%e@o=!VY}BbyY*pWq%g8T0^ttzZ@+%{=KxV00F|Zp zef#1`F)fYrA2!UQhZo7as$aS6E#>o-%hq6dB?YbL#`5JilG`VY7fHgcAhs)&KhI`cSV!iWPf3U|S0)3RkI?m}iJPTWkXs3FcfodoeAK{pHZ1cw(5FpRTyK=rRJL@%hM+c<%`1 zvi~mPDH|?3%`S{`s%fkAtvKAGa{C`>?c5<^86k6*2_nrqCZ#$5jvL(uCYc)7s?~(D z+GD#E_it5$%JIpp_ERJ(%r(5=N?;YzMN|L&cwv~UZ(tB7;{MTb0Rb^10|Q6K5P&i! zAh-l&wwEl`xq4)W62YAF;KAf9sF=H#>6EKHm}N|Cno-USOPD7_aElp;tK3wE(lc3SjhYz6-CAy}>G zqv<{c@xjuiaLsdOwmw2@x!`#`%M1D5+?Wc`R+NZFjNF|+n|mka8^B*xaj z9`Dew0`(qmaHpdK_~I+iZ~wlf+vhIiW=I&9MejXeD*e{_9<%S@GZsr)Pl8_fGGV7w z5}ytXz}}b4?64HR0y^Of&pr$GJbW6_C{WWQfxp{Br;9#74~)jJdlEk>n7@`Cr9qtH z$lCd)Kfps4;21n%P6R2~{VEp-DGV}i022^De^PI5=Pi-%M8bF;-uYgquU^3FaZe-g zOm#aLaCe4BJ^~o8II_J$&<$@tZ2{hZ$H%fg_9!|lB6dNcX(LEQ!Nh9~7Gr#zY-CS$ zqyO(DrPpK6J)?BQXB6o#ZRDOb9zQ988}2b&J9c}x2iI+nL>OC?D)TwOy}TS=%f~CM zse$ThW`8|-yqNDX=X&i0+706P{zhsT15LO4Ps{}eEuDXb$5}cPW4Km(JP*jK*Sro$ ztE%9I8U$A2yB(37c;gKL#oW+`D`NL_l8>jh=04{q1xNEZ#p}DuO}p`~b`0G~+wYH_ z+#LOzYFZ5>m6h;frNtO;CtKM@WLF@f#5oE@bhv(g0`h4uX}dVJpaXcXmhBF=>&A|4 z_Ya&~3uKbFbt&-#f1ZG0_J_nPY&S!ZPRLo~zqkHYU)=LusRZBA%vSo_;K0VlaxS#sJ@Rx5w?Kq zWzq4+bs|KA81uc^z(ybGCTbz|8U@S|)>|>w6vkTDAGgq-86fZ+-mophxKe%cE|HQ+YUNUXw7zQ zZ>P%3sm(9cSdEd6v3jkLppk@qLm|6z3myaG)qUH7F*-GHenXy`?baU>DgbrwHZLkX z2@pop!5E!ZZo-4bgzerIj6q=l?r2yeD=DddrJn8NK3W9)5jJ<=NuPW7wEnuark+KA zLpDzbwG^=@JeoNMthJ}>z)R75vKdQJGYK{~G{E=acqBtsIPN#oIpd*Gf%b_FLN30`ol%&)-K%gEfZMux z0+U=o(9q9Pxrr(fWX30DWF*CBn3hmr154{{6b}T1g$00T5W&?lWuv}zlo;ym)}^n%!GXOG4X(nJA|yy<)Z^pr)yYUxT~dAb8>Yq4^`)DLvyDDRK|lEfG+ zGJ3t-Lbk(Bu9X>+A?>5ONo(Hy-3KTdb^zORrVBUYZf>v_er>AT$PJQ?DwRhC=6QL@ zSvQ4;#hwlpOBb8UY6}YB`@0IIFHL(6yvW=O<8e7H2xjRnH1StQV8iI}*k$Ot2Xh6t zn_v9Uta6WH#!idg3cobuoU^OY3!EKu*ok5V(IN>AWD4{gx$rCGuwIIgfHQEdlh+uF z_3H#A%x{Ym3RNwho-Hb&Fuo0W=lmY@u;7^@AAu8kw!g`uBJPex^5`hryTzTQ55JSn z*jcjU5YVs9xOnjj{pOqS)c58~`;_y0tk8MNX}FM>gzQfg&3rcsq~nSv<_ljEoQI1Y z$vBOwlV5+jMI8N`5*`NbzX3qr z6;$*jnx!r-oA~zwkPU>&@2}Cczy{j-OOO_L(bmRijAe6^g&#=D&xa4F*|Xt=y~UQc z-nLdR6;bdl;7Ft~{|xC57a82(uICZcSmJxkTDB?YJa3Vs1aUMh1dZ?n-z7fY(oSM; zfxbRmAO|N~Tj49@iWU59o8x?cpU#d%16$nn85xqmu~Sg@H0V|`_m(xTvdC6~2pX27 zBYF#Q#Wlhm=30&Mva?zW|N4RKHpLa<`BT&O zKDuSlGK0p@D)3MWOPX+JUPCbJh(Va_lS|vzD1a$Aod@8n!p_X%W{mjy~W&DYse#|WSv0PQCMj5 z2)c3d=>O=HW?#9_lWZ(EQZ!C{heraqb_#k|`K$UiZ0K7&7^Rx|v}KwSs5r8`9oAV> z+u2o9((z1>X5R;I{~pg*#8Cv@C(o&2kX-c6voGkZw0yV@peye<89ckEGv>OVD3^=g^g zseTbr>$l2Ejc;e8R}ZbbReXpC$#>N+WR5MmGSq{t{u4Blt=NfdCBY_S{NIP;kP|s- z;X-&3#i)FrF^Zk6*)44H$M?MJ1t(nJ`|=fe%KQ~c_T_s$Joi@E$#f_>mwE;Lp}FA{X=b1K6pIHwL5b0A-$tA~A;0ZA$>4gV>uJ7n^ zncsh|>QHVDMXg6MDN)1*r2Kq> zbL@O0&73e@k6)yBJH&FHrXwC-4c+bRgfD}sFkLq5Z3^5`-&d-6%|boFSnoRx+}!Zr zTs-XB#)jwU6;$!wdh%Ea2*6RIHde9J^e<~V@9jN@M??I*i1`pkt{};^@J~S`ds<$I zh0S&2AZtxWuG?^`7>t1sZH5Fu)_ed|OJ=AqMeOmVh+0O}ow;865JtEW;Qo(~|!A zP5t0UM9?yddM76*EiF4cjW~jHG;lKR%~z>{z#cY{U}`c}W4o<~%#bl1>Uz@92~bPS zmcg%|wJM^49}Qcf zG;9HR$irucmS*VGwyXQ~hsgub)U#s?JD@>FT|0x^yB{}hgbnyI|K*pTgFpO5)G&Xj z>t@&;9)`bD)4Q+zPL+}v#k>dZV3%>%E|?Gg1^W*lUU~)3IqlW#_9On%^z4ZA>h|$PSLTuyG^zVuiN`F0)K$NxUx@2Kx!i&9LGIwSEn8qU*aX+_-3zg#%X>gs#I1@ySr z*01LX`uy{kh7`jPCz;!tIwB`@ZjS015EA`b;YdPLl&&KKf5I94aSn5y^YnOjwnOaV z8L&>vM8rg;@^@-dL9}M`l5KRsBnte)_lF|UFw@lf^8NhWwufPSJ3?Ro5K+lvTl*~( zz=Cbl|DIPp9$24a1FA5)RCpukvtR;T;(~Lo`Oc@B*Ah9XQZ|)Tt%^ znu8mGbYG$duKI?@;PY}iP!ICy{(dF%6175p`QVBe!Uv85kC<}@0)TXm$3e773h;oq8=SPsF#hu{7ZViXU39qpjc5S+f&Mamv&>-@qX zv(SoJvWu6$*{hNr%U<>L+*j`K1BVH)qYZh;vf8L#LM6rD2E?wal<##coGb*4v%4bRUb1C#)#_DEQ*dwjgC%d z7nesDII~-Ygm`gz;1uOM9KN@7(f%ipn-mim$WDrJ$qNZ7bQRAI56KEI8q;9cid`eFqec74^-41;Xa?VC4KpHu3{|&v1H*8qkyMgYis_E*gsqS2> z(Ty_rh;WX<$dFGxbpf}|Pv$mqO^S@1MD*~#z~_(U^>qU{M(Jz_)WJab1Xyawyq^Zn z%)c`^tcn)Ro4cr^VcsITVkX`dIJ2Tim&hiMX3v&N!L4P>;8qIp=K+-}I3zqgMB?i! z@sZ1Yh`0IQfSQkF7qRV1LNV-Uc0ZAB&$M<&w-F`~jP@(>^DAM>WDV5mtqot`3y3WZ z?B?!|VF9va`#?p}l`G75)a~2g9{&RKVluL0HX5HEXLDrwax&b0Ip}oW&a0KZxv@5h zm`XDjmQi)oiH&tv{c3!DYy60BkY2#kwRS)K^d@)?m=fdg2YBSbic7yT4{qON>7Q3iy}7A2pC)MLUyU66@BOO%&|l)?9XntRSE|4CJBoOS-{QXe z=kEh6W+95q-{at)6;PVq`|-Nn&+6wlY*X~9fU(FUqM2KSAMov^;Qggn=H|C26v z&}sBg|2BT==2}F+cQ|_-gZJI1j9WTagFU9a|CU<`!8IJ4zy~ z%FL`1N{HL|*O-&GeRqpF2!j6Na6HNGIq_omI!rPNGf7nIbmD*4>AGYDlT)JQQC9P>;v-;R8)h||m{R<^$U9uxyIJv2I@>45U z?%1(%)ehyd#>S;f8ylBRrfR9<8)`K=1EJG|n^1S}{yHlwIVCGA1!qXu-k>G;cjWHf zU_DYFKLg^X#@Ej_(nCI?zt8oM5B2zeke#RCtA<>D9iQJ?Q$Z>l*0KH=zu&m$zna=W z4UX*lM?CtB^}(MEet;n_T*nVjQWEyesh8!;WtR>v7r5?`zvz3F=!@IE8y1tVyt3@F zOkl>p*7fVOIdUDp?#X@25xvU+YAv;9ME}wh+biNO&zsurMV>2pXd3H)p*Ho&zuwz- zPrg{*Pt*Nh?_Ers#Yaj6F@JK$3n7?-%;fj*E_=*~r&8JaQ8)gkj*qak6FhXLcxXMC4*e3u9_n+?ZGsozo6kMR z%pTw6zTX~Np2FSH&%!Vlf|57EGtWNz=EF$joX)29@9)1# zfi?U0^Dyyj8#PRC?e=J6&#CTPFa(u|VE!Pyn0*}JN4E}vf$iJ({t~`@J8YKj*|QE$ zzd5jHj~cFn2CmM2%8}t}I@*T9P9uVu2k4>q5$4R_Ue{tPj#3|;)j8ksPx9p2+K*vpoQj}-Kv+QukYmV}Hx7cOTeiIXLnz|g zHYC7n*&*Iw9p+#&#J{Ime}jWf^Si-}p0lxyrg!P(U-|aQmNVVHOXL^#FR5CM0+f}> z4&^97*<0=ediw;f%pQ<+9IV~G{pFwVDKy}DUL6TFan8>1HSx9*r<&~S8Yc-@hgcBf z^}0aC?lr~LTq=`j{fNZ*iHw)lXt5r1d~$R&Za_ovhD@@scb;jy&6amLJOZspfHOP9wopwewi8Wy?!HLc#9`(Hr(GPZ9TZc!`TdMxf}3 zn@@+HZT!~dOE+&`x_qm0@!Y!Jp8AG9pv3Hb1(+QID|YPI_eUIZD;H3E_MAuN3YRqD zOD%S?vnR*vYJZ-~i;dUs@Yb_S>Sf_-e_rd$&y~&c^__KU^IYuD3kv4^@B?$6`s*+7 z=!YL3nSkVnKY$k@daq}@b?Fg4GItxb<$M<#G2mNr9NFm-=4ZJPGk&cWwE6l9tf1rf z`@pK5J72rvi>)=1`>%$WaWH<*9`G;b8Yc_-y4>54HrM(P!F*@kFpUlZ`iCm@!D~pR z*Kb4`ebb2(CM=%})#cdGRQ^klzlsuVM z1VPKOV!S;E>&3$DkI{>BdU`k}$|yOHMwn94Ny2vS5!|Uw(~S z|1&d_0#vF1wh+K$&z>T_ZjkFuJ*Pisl5+s`S_^ewe}KDGK|TC}KB|P*e>w_c={IQj z%P(&L@kyENBsjKh8!V?@eHAqFFW5Tf6X;wmSvXFbTsog0Qdf_0jVKO7;q9P7nOgn43*B_1j!6v&NHG zPka;bH#B;A4}9V}7`%K?0sqJb^$O51q%z@?gMg;-Z?7C=OK$Lzx0cFEa{4RP-G-^b=Q|AH!Bd07gRgS<;2`)LdIFIG z{qE225G~Nze+Fncd)_=*Ty-`4kcet*WPa)B5V+&t$Qm2bx%eR4?a%TfSNF|%hx{QB zMspm)h2b>rt_AfsSIwT7zbZvs@{+grDyO8PFMYxf{&M34_^3@LYlG6L zqOh^9s-j41N?4GbR3sz?o;5Y_6RNcpSfUr7lI*+$3%+K^Ov5*P-ghXi^y($B#&#Yy zGjRC%X_`krIpm-zA{whcNVA3p_8@bss;KQ58Hu=@2<+p9Kinv+mT^z zqC|eh9d?$fIwwGCJquwl!jkQP@+OC;((S#wmdh`vY^QhjoBj%q`Ba8NI(Z_efFaKsFr+_p7;kVqG41cE=-5|We0b;53j3`qR&3d_V#QVsS2Xkk zi1=ate0Z$379_I&%4Fyjvl_2BO-V@r+j@Ip5WnXXzv1!3b&z*;ZHks}xn?NI5c)iK zSOIUP2}ZMBQGh-SLTJRXx2_%{?k-;r*MND@je?&8zqhw;1u6IwifxeM_gD(7_%0^? zW_U=CltIDO>zCqe%M~5XUQRBA_pXo&N$?C(U}wnAP9Wl6@HXW`WK)2?P0@Wy?e3wW zyuiw0j$n*VSJekv$O6#W310%!U;_E(n>D8?V$|~Gzz=^W!_y@6`(q5~P(yuC-Uf82 zz#6UvRyr+FHi+>4$fWok#wO*kU^H(20}|Lzma+y#Qo5(937FtdB~49S4cAE|6SkT= zzeyU}bDoa=^n#&>p=;y>{^*Rw6RuO&OF9zGQo9S4H+}=oaQ$Sp8ue2kLAieY1lS>~ zfCqup{n3I@|~0;Lq0YjnU8J@f%Qih$GoMOcyZ=cg zFduI3jQ2Vj78`?oPY%Q6r;)0zreMeL?x*osiV%T-Gyg*EC!OT&oqCV^q#@^}-xMWz ztg*w#$8|@o?nbQcZ_w5u9Nq-6u$0OdWW-@h7ndQ(f2q402C9wSLHxhSy1NmM;~%}w z?uE19rzh}JBsg1VBH`N$EDV~u#trhHfCyNdH$1D{)L{A3hMTfM`H#m3fgdt;zu*RE zkP6eBWuvT+@eQ#6^hV@LdgISY^kUk>r!;!?o_;TghC-TRb7Q)dt2)wd6 ziDVSQ97I0W3*Vll!2N*%pu}&efdOp{p{-*crpt!L4~De8f#5-{>20d2@FoJ-P0f0x zmVCV!kd2K1;14OJJS;Rd&e|Hqp}hB)xB){q7&KV6w7@q&0-Q-zp^(7~Svhm0L!I%b zGHhtoux)i}81-uXNbS9gXRrbI{LXNUfX2q(V}k__1CvKMKmbAY6nMX_4IZHoTbZLs z!Hs`o!s+p&tnVk_=}(#{)mu2#u!T?PhvV91PMO=OE117L=Fs0Xzn?8$7OQo7xl9K3 zu)g5?d?7Pp0KPr)FJJBf z<7t|B@8(VBzl1+?_uf5X6n;&i7jw8iFuaEY`}pd5L#LtBvUGEJdUsHFXlAW^sr=&p zrBWhO$z1u`w^#lZzIBi8n!L~g+z;5k9X3(8_5d#kAnx*SS$@`sD>C}j#%jj2uw!WOrIPs%VG8AI zG|&~`9F6OPsGU2TkVL;iE?r7IL=fG}e4@Z+z#62B8P|NuLrN)ZmL*I+9 zE(zYcZ0VLQOP6g`_RX#D?X92Nw?!iZSBUW{oWQ1@d+w_t7aGJ0{ukWbatXiN3U{L7 zO-@7hEJ*m-NgyntHe_5^0?5Nc+jQXvPDUJxG#Bd{#YM!=j@^vGULBW@2O>!T$oQuTy6F zMn%PSkM$PM3J#tn_7+54qi%DwILGe6F-{A;Syc#^ig4%j7FU<%EHT1ms**5cJ^~k5 z@ISXA@J{5o`KeR8yhxY4j-)2$)@4eN0&kM=DAyx0f!{YHWPNgj)KKq0R6l(rrhc=l zOB9Kz3o;%u&^Ixs%j=XO5AG_vln`hqUj6bv!MJ0 zyAH+mEcLm1{uu|`$N2e=yz2^thnGdTr8c>WTUksNZRTB6-@F!#+al59>Oz21N@wjofMFB>! zGrZqXL#VO{*R=U!7QM2F^NW;VTlnR8OEhOW|D|T3&HB&Mo@eiCF%0O~JB)__JJXaTNsrl`R zMT~iTO`N-X95NWBs5&#VT0{zh7#aMI!%3;ZDbPeU5>6w`o7UH-&FmRPmZ^HDPVh~M zj!sk1Q-Va%h0YE+;Sp1W&T}GN2$lNK8dwoeK_V`3nbn3wd~`~#EF>hl#Y@sTDI~;i z1}-t49U5BfCN5M3&vEe)O!%I>&hpSHjqDqdKVsya92~x`SpRY)tsm^`9UScK8&u$3 zTbZUqL#x^7&og@+EHX|N$##^~aLH3u_Wo%nz{ES&4 zyO-3UZPo0w@(7$YX>3fH$hk7sGi3H8;7t$G=r8f^{7Fbo#QMjigpj0 z?(fdFuYgE?N7&^R{$-P$ecZ~U66SmQxaQXftbnFJQi9-nz>--2X2Ey3*>>*<#_;>0 zq>r<0+9zfq7l=efQR61%PNY%9dK1qm0NL~!g<=iz>bfTsWjIM(izDLZjYmqeF0dV1 z$v>k6ahHE(Zr}f%edbC0oPUnbpTNdx;Ct{CcP@=_4VvNaP5AMn{uyWj;<@Ei#GM6n zewvfFYq2V>ajcI^Zq>xOPftRej)-X(D`{gl z0+{H)*6ikbyw291z{F{RF40BKE~U}ppj`j4H29Ana~}Ky1Aslxc)xck^HUvtkaCHx z8!Hh_DOGksNpmxNjas}|;PTEF(DUjg_8fwdpFfeO!36zEq2UxTvCC zP$Vjia^1J8fG$`a?@+Se(`$dR5Jh(ff$9dhdHxqzm|Mxw#7kVHiftI@1J}k^M!362 zRL0v#9Bb3lYaJy#UU58LQI9*B$L|hMqsg5aE3hR|u4QQ#V&@`$pI$MclX*QWD~VI(;emnSssQ5f zkAE{iKlp}?SA6)MK%+WUTQtnZEMt=wxx3?-r5495?D8)ZwWO?{KUPBS$S-xP{wiHICD3+S*u?;he-TJ$ZX6`lDpdm#O@)8B5{JSREU~2;4TvR#96C zYnVT4VL}lX%8Wz4QI`kViGmnDKFHwXgU9GnH8MtH1iUJ2geYMj`J(K++F#Gm*z70s z*PqB|=MWglYwsXiWxXcDd{5~U_?}PTe?HCwT_NkIb{O(OLYu# zzGxcni%$HXe9@uKo-u!v<n8ml{JQ_ew|jE$Zcw(8`WM2FeDndk z=T6Apnb3yMk6X8dFRvxq4loX{K;+)JrZu~{&d+d10r0#Pi;2*l704@C_Z5gzV^prH z%XX5u*Cl1QjhBjMwI}8=;F4T^iJ~rD63Ev0uEUG)1bY6Smoe=W#Ct+)_SA^icY4sE z-}miZxQ~QGwT8uLR0t|FeNhE2AGFi*B(*tGST+|sgX68J`N*!f^V!g?hEeT&n&q7<`4V! zVfgy~82!I^WGog>;*}j=GooMC*aPX_wq1BopV=_qO!lPS8C$nJvWEu#yBa%bo0fx1 z-D{0GY2de>9u^OMJ0ALfwB+1TJ)t#6r}jkleCZbE=VzAgTeXVILE>4}H`qEKSGEV9 zz2i4vX^9gweH9MY#?uLPp<`3J-CVm;#)BWhq=!!v0up|O4f(#5!TIhaxo1wvi*gA+ z2m1zlf5FW&)UX}5_rx$hg-ehXk5ntHESD}eIwEGg1kE|2gqQn{p*UFYAy{sFU4mwMjC43G39puk-=Piu>U{lk z07pJmDnGp``+@|LjkC}Jl!VX4CaN(xyTem*|0uKs&Ilf!WoO63Q=fd05z6Zfm_bkY zDO_9;A&;z3aZi}(x`iDxgV#IVg0@8Uei-?a{PXDxVhRevYI2Y%s!z;n8z-50yp4Kq zE}LTvKzc{bcfS1n!ieyV44+}ykUe{ZOiGIzKKlw_`_1&q5VP>=neuPG1F76rOQQ4$ zjQC#majqIGsry`n)p*JD*Spzmm;bGi!rfBf2yYIU zdPRsucnynVisDs2`1j>kHApsNBx`e=5$TdJl5-BXvq-*QIkCGN?xMKaN~U^va#oz> z&wwDqo;@31*K3sMxz?%x@XK(|?BIxpeWCvi~tk&pa#I{or z^UO=h>KrefrMI^;2*s@u9=>A4r#2K!-=IJHj5%D2gr*GN;JCUh$Z~mMW&VWxl}V0e zdp$j0DRU6GG0%V|*=aZv`J9EU`t%u#Lm*EQZi%mob$5@ginoYOAYsAIHtUf)0MFPwCfXOG8pPA zh5imAn$5}!ub+b09Mf#P4{X1Bm1sTyoq*6p*H7kTY$S`%wk^s0{QeEUogJhIm^sNk zx=bXhjP)S)(KI*@{2u-Y-lgCT>>eM89cUcyLvju?(aIJWn3{z0xls$v)Z~%vAvgMr z@KY#uz{}Go;%;p*a#Ed(qg~fNOkpzaXqF^mm=u16uWl8h}?-Z2VEp8j2gF= zh-H2y+?dyh(F%oN6tn}jvSYAhW^G_c&qOv*D2a%jhn}7~O$nwj_qaSE>z7+-W{*Fa zHB?hzJG?aAALqAN3Y5f%x9fW5gb5-<>Azs=FS1W(R8O3{KruVbN#a(jifR%4&6Yh8`vcd~pp6T*{rOsF*B{D!^fi+fJ<~j+h|z1SJ2WKAcfC zVd28G0S_PdQkDpu8!n)rg~<^3>Uh97{Gl_whT>3+I6)_C`Vqon`XLzn8~M?U%8B#m zV=NFO#?BijDNrX(Dd@@N^-c@?SzZ+L8^DI};)vN&?o`w=Q85`0Fu=&Xyrz&YTpceg zIpF1Wpu~aj$Fgw-d4&S%?2M|3h%PHIT_WQUMsQVZ8J=ZY7Hchas7gz#a^ME8nQC&T zm{-`2)e+?63D&J@a7Bbe92BIcobjwFQHAhMKLOoL9?3qQUNv#iqKQSEOe4glaQkEO zrUIII#GN%4b8$S+)hrw5`jN)SX%3#n9|y?@|E-()bmFeAIuv)|U91W3KqttvA&a(q z2}|$yCQnXOhh4b%gLs$uSwG&g=Cm)T7mVlz*0dwzzF$A;VmGvIlI^G7XLhT@uCY>e z*rgM9sdK129WWf@IaK7>z4g{xu(do~lS5sQ>BdK2&$KfC93}fH_|fb|iRI;y3ucO> z<6F|Ec6&)%@FHmplZ!2MVcHvqsfjOGm=zIzs>riLR~b;>~)V z|A8tPx{+$5;CHi{Bg@Of>yTANK~`qRc%R&(ZRESPx<0G5x^DRK)aHCgMDNq5Ps91h zp7YTTw&xnpmDs%y68p#{6#QmJYg~1;Y90=Go04%lcOlYpUwmPr=eufWAwLGbuK#*M zq0r#KI*)GRmUOX>2aB=r*h(#;;J5j$F*P;Fa}@cEZBEVV^pMWN)tnUDHo@P$NO(LZ zKKA^Dh7$~D&YXd5CE>oR(r~xrMpu`n4A*~SPj*GJ+LI-=^f9{tL9L|VXN5h=KR~bZenm5^Xn06F~WFGR}vy} z^GuOs{DQP8-QLodb8=FWv$ZqBbbLyFQs`sOUhP+|U%wun&F4JJm{O6bg7Yki*td{l zSx;@HU`NYf>Y+n%D;qt0$hFh*x5~VUPOf&oTz>eMtNU^KEtQJE)CeAl{7frp7X?3_GdFPc>d6~@B;#u05}Q4|r~HgP%~lf~KhIi| ze|>Tds73>y!nx`GzSu6uU~ezlfVa1^8m4Tc$|dm68P)y`&B_8ykc!B-#-Zh%815WP5i!1uyEK&2By4@2P4?zNUXXQaA2+%JuxeP~?Z3 z@VM~Rs6d0sW21W(pM1rpO`A8vsA)=Cksas~HQPxvJ7W9}CHODRe1S0X2OqOudBS>W zCDjC*^XdbeyOl+m&d4E-h;JC@lhxJ+_sW(n6Ud>G!-?}#taWn32I%Ab#I6eFqt8*m zQl9M|Iolag%WaEZj#%TX47NgtgH$60FXq(+w6|xi_x5qGia~*s&#|nmq{Ph3L`|9M zd(2PVe&axainxe;DtFw0$@Nw1scwQCO(2QhrT_~b-mcnOt*qS^BT_A{6T8&+M>x&C zd|4&~!Wn&OiHWI;XV_4qlWU`6YLdoK+8t=>9ZeqE&h25tzDTb366{dm2KCm#Qo3wI ztV8ipZ?9veLT`2oJt$naj-s~4SE!WA@QQ>{q(gmrM!k@P*WmTv)%%z@Sa@;;X&4%z zg~q0agS>~pjOeL!!9d-Bo8mW+h<77{%GIkWYJGe;3psuiX%jLnAfpa}zJa$Uvul$1 zJ;}IF%gn?USG@wHFVTCFyiG5K@N|C+fpM!Pe zu?lV9q@#(QiHj!xYGB9mFj8~)nDOaXuwG|@+H_2MgjzF?Sj8LO-fvXcgC=gL8gM$$ z#O_f$SuX8Zw1|8mq99x@4=aqYlGqicrWV;r?!d!7fZ%4nbND%EcX1e`j)wU-?ZZ>% zZynC_K3XbNY8Eix8K9^ED~|8V6Rf2+AyWep-$~)m@OSFW89lfyM3hkI~I+zFL6P;t*w;j+LjHabm@i!VL3wVjdFVcq(zc4DG2WG>Z0~W79&;- zFOD1~u`f$aEwh)fu(kW6jnrxq>Yjg7Z&Fh!pAlIRDb8%e7j?J_BQH<6t<0x2n<&F|zRzzfh$Om5M_T8%YTaPl~W(y-cG<$oclZJOM==KdvUea#* zHGJJ--r_|abW4d-PLoL7lqRaw*>ep(T4rwVBaxdAjP1=*sixJ4Bu-PJVoJmkc;`L5 z?E0JxzRS_$EK3jEnMQG&Wwg!TlXT8v7*W)Pw8TkhkM!p$@H-siJ43Odj$6LnvWRXe zcFt);sHHm-2`o|;uT+so3Z-qP&GRknyq#>REsN5n(&@F%633}Akp%!zK(4=HDHwO2 z`kAk%Kc#a{O73nzvxVE}Nf{F*&Dkw!H~S3k$7i>&*m25y7x97&=PB#CLY4K3&g$w# zi>j+T1#a+x3=#^cGF#ejZto?PztEBv7M4}wAQ5J$kpClr2azMgIx}Hm0a(0rc3F>N z`+r6}QQdvkz-Qh}!A^MIqCc}?E?tu&jwup3S0%cDAGoE~pyMqwTOW6s;2pnJ*^?)y z^o*5=3&Z29-6fy{{u?wr+zsA?HRvp5h^OpWKh#}aC!^h?Jpxl{5RrGp69rc~EEZ?g zRx2wqol$t{R2nZ@LlcfDU`X@pQz-iUz!ys_ti2tq<$`6d9Z6wfk&UiC&eJAE6o`G` zpC3_zN$@w|&D4WL_!YZr`>enPo#QBelF^7%5gDtim2@Qv_P}cveHpb?%JOXI*aByS zn9CY|&4Ga z)O!!v-bZVG55t7VQO(mp(W`Gq980(Uthse`MHahMuq@Ge88MOhm=Hi;K>GF4bgv)y zsnf#R%fVVE=yq#~3kiv=6HA<@1%=N+df^uQlX~+_f$L9qnVWZiXKe`HgXqHJ#!0|P zmeLNzp0Rqf*Am>m#?QFVwc45O&9!brTZDk%vstdiaVrp#6lc2jr1I*vUe zOi~Qut!MrovuRzI)bf^Omefl!(Nid=1USbOIXadlIJZn`FsVWG1`J_66{ z5160t{br)ObKP3qwau$XgHMKICs6!+wb^3$=gSs*@)s{wMpZ?Lv)bLn?b)tGxl#${ zp0=|0cCnQS-lDga#>Ga~X5wnfl*ujQeArFwCOW&(N3n7()t4bdt!{ky4+{TXAh-$- zTC^ohEv_(lIZxJA@59xwFv>04Us6PjthZ+by5TYj0P!&vDLJAQsKfbS@(N_^o~n zlHf-ud=xLSK51%e;pYnD};I@*;T`OfK0h$xG@-X$d1UL!BXf)0o9>iPZ)y~D!=E-=_F>O z;Y1Yj*qGGRz_Vb|Jkw=MEbP3T$H<>)O;sq88(bugGs2NyA!Y7$bO$Hq{e^d}m+=POsYA++wlV8Nm#N@tU$qK<)CioAhDhZ3YSUMz7CxH6lG zDi|i%u-@DOF|&MMX9i6t&Bv@17E_E!HY&0poFu~wv>Jocy(bXu+;}|w*bNlO*znDYb) z*BjcLfyI-;$MWciR@B6aHg-XkD~f~Qfeb< zI-)k!M(Wg*HM!AA3U8d%jpH3PcPfv2P91%MAYXZS=W6}Na=LtDl6}>2Z|~z(_Cb2F zJkiwDL{Uv{p?RTlIr@(!X*VY+X^tHU|K3|i9xc(?@8_sXO?=zO?DK$I&${fIKJW8A-UqDg(gb6r` zCxumM>6Jo~`8&EK(!(RN1P9NhX=$Zw@T`rUN2o^!I#e>6xjb8rg#oiisW4%%46frz zR*Zw^Eh|@U(FD+fG0M=AxKSiJrnG7yX^j&OFk=z=Lp_a0m8GU8;0a|DLqaAZ{M30b zZ9e>Q5;LSYJ^Wkx`olkduGG(hd2Jgca@TKVwu4EyOVQUV;CkYIP*h!tjnpQ5 zW^m3tN2yIxT}%+1Na49E>hBle=@OpCzF#{m4O2W;7};Cp;`K(UL&Anqe)YO~OqyT} z9a@%PEwK)n8jxP&AhC`s3#VZ|Qi4J&1%3M9pk81aUBi&Dw}6 zdLtd;)?<*mlhFj`L19(N))Jf0+`viGLv18BiB+l~IF)+)?W+G$COi!}SscSwkm_%* zw>OwG;-6~_^CMo9>%i*)#Q$E1)h=S$mz|=3Js^<=z&sy6igc(=Lyt^q;fWA`8_a+J z12fprb8bwuufQ^1VVAJ6oJYV?Xa1Tk`b;Dbn-gv&wJT0ZDYlbZh0h6-!_~5?gLBE_ zZpf<>wvpPisHqNeQi&@)TT)fDHm0=9v9PPSPD6)7g7>4N@5+9As{Ef+dD8jz*1s6H6~`N ztwf!NJH^i7b5Lgp4N8~(+%mnvKxcK&B4Gn3)a!ayVg0tM8?IZsq@kg|zoB7?U^E@7 zdo0#5rC~H|Bx?kjiOE@6$qAXJ$iIw;2*k}dEN(Qr*VUfQUj`Vam&PsxYgPr0BeX;d z!AG`!-ezQ_Hz(RxVb-k_PG3%ztRr8Ld}{*)raPV$mJn< zp@@eIl9CGSq|8M+W1=)WTRJg=wvgCnM@3~L@@Zw3%V6ru>|^EDUYp9aW4#ECXaTcE znXFM-A}yDKaA1!G2#b`ZbPN`$F;f2AKICDu^Z2wHLtABOP?qp0VjcsR)q~8|jjP;- z$P;+)>a_(FwSfA7LVtmW0fD;z!3P)zUlfOa&-Z>v4E25JtgAO;lK?^9Ag^nVD6>WE z(vl$xFH_|Kw=O})7JAk$OYqv~H2pd8XIMt7*hiEX6;tXWu}_>67zU?V3w@j{;USP} zD(@ktKHPnciw7x|cim0wke-gj`*ZX$0BQ`lo$^mq(Z%67t2>|VcWlXY%Ihowjtfm& z1{E`&vZ$V_^i7S9PQ^>p*xfog;i@SP&U2zgVC!+E^0>gtJE0E6iqk_QW;;t<<|li@ zm#k4FX}M{GsT`)n=lThSsy0s);tPd}>GAeHqM0F~bHw5~p&>IxK42a=$$TBpJ(~}r z?ca#DcG``6L!M1&fVeoa^eE55x7$v|@uHlnqV1*yEp%bAC77{aq1X>lOhjA=i<>9% zahejWn(gA_+MXN+dtH2l7Vy77Y3etZaC!L4SHyI#_Q1?U&d%j>=i?(Of3K|GSghD}F4-F|3`8Z@un3U`6 zBW{QYgD;4^$5^dhZAyK4h61y}C1zb6Vb9dFIN>~_D~pq6zS;;l>Dbp`J9iMCDYBYz*%_My^x$#*#C`wARo$whJ z$2m=|OukWMTDVY=)@iYu@MTK{lq>hs^nQ?l@cY|0e5TOHK8_BW?C2$`j-lW&D?4wY z#pVqH*{#3H7hV7r;1KhR3S4JCWAQshKwhRPb~Z`$WAHP+j87Ne@=WJwBoyTdPT93d z2;bs%MQVq|D&&E0-i*9(WpC5GzP@>leNVAsf)W3N3@&k&IHHrE?(E}IhX{L|MSS-z zQyILNkPsV-e(1nJnhpx0!Dw)Vxe*M0V~%ll70b;}yl(V-jBaExEa;vi%4l&FFU%B2 zR7TDL<9f_$o>eYbZ$Yd<$lM9bXc0?AGb7^5T_wVl;*c(WJ$L2Gf)YaI$ta2W5fI*2RzEi@9V04#h%SOst;{%Gx?1P@yUf z6QwT@i<&Z=XDuuR;!e|f%a!xDTK3a~m^lg_DwV_o#l)F0c0SJe5iw=168D}=1#BE; z?_+QI)OK_E?oV*FP?L5pl_`=%5vLo3JPmX_T3t#E$(LTmq?o@IEadZo4|T9;;P-#Ey3XZ)kouLPfRkBodY5H|FS%QFDWcLErA-cu@JO%41A1a7qw`Z!o@SdZ9c zLGr|jNp(o3riVr5J4={9T3ZDabYSfr?n{^Qa&K638nWd>^W5bKjjRPMW%9d<5eo?# zpQUrRS-#FD3zHm6U-0yNu~bOdDwP6(KgYT%OdxSvsz2;N66I*M=V>J0jgbZTdZ8fF zTIzt4g$`1|BxVKIr%wFH+Cz85SD|_mrlW|kpKOSPx~{WE=;m*kEC@%jxiz;HLo;C4K-3`!|56G6QGUUuQZ~go;uzZdSeYa6Vgqsf zL%oz-9}^T5U7u==g7v)MDNPPiZGDqEMwb|gBamy#>mYA4?1<_`>hWCYaJe1D>5DHB zCU@9CJ>FVsjcbf*9HiE{=Q+UV#U;lGa;7>ea^E5t2B3W-I_TEMlub(Mc zo8eOVs<+pHT8GRva}e0kU(=r|;N5Z>htk9&pQPFtTZv;?c20#8WgAnQ>;tFB4nv6tUrKsOqsME{n3qOt<^UV5_NvZcofa%4NboiSbyGx!swxKEDEDR8~o?u zQi@s%e+Tx!4@I)b^DmCIlJb$Pl=?YCikL0OQHA;?17yN3B$3i zD&)(xICY0Z+kHvtq3|9GaB<8nwVsp{kX~gk9fiYi*h;MsM*HEFR(>(U0eD8G3c>;I zCY!EKuI?~Ypd!wjIGVT^%QS)aYqmyaBf1b@A$sr3sHn4(vB!=xcNnsmJ&q`)v z7#5D#krD@gE?1u;ldVdwi3kb`uT8O$*o4mv%4&3!z&}5vwD}?@c6N)Gv22yzb>G=C z98Tk`YlVFxmuMU^J6hl*XAA7?N>Wox>?BsI!Z0~pNtGOIBu`fGHI!JsFigtuyayht z!C8+Og9Q8X6JA~?%Iy=>7~}%+FQ#R^2^L9xRsPp+f^=X@e=Bf6m_%Ah?Qn&XozyB4 zW71FMA7~skS~|w+WSJDc1Zb_y3lT;5jz$TeyE2@kC%$5im13}*jB&X^q-lvX==d#8 zmTe>V#g(%8aHM9r+@O?sh?8Zen))mYb)~y*uFTk-0G}t*$;Kb|W>a)HN9NqxibDAG z2J%_1l&*xkl1O6{3jO^Woidu`Szlv3YfzVP&&Uw*9oUVwN@JO^k@EgA!U$yB zJl`l2#%)luAl4k3vN<*@W~&Sp+f*tq51b3UXf-zWU2b#yjxv57rel z^6h_N>(-o&%=z;M=}8S?<5K(F-TP9AFhCls*Dh4EOZsOWxA*;B5R3BO6ERcf&B8@(_&ilTqGXt znNt^gN?i&&6Q<#*xeQUv+~wdzBRyfk-UmCgaO@4wxZ--HexaGuTi{RhKzFA_H_s4B$G2uq>GhPj%vlsajd?(QNeL!HTlRUv z*`3#J?DKdTe;(aFEc8?-Dx(xJ)hd^)c2{vnhU+S}2g`{$32sC5WiTAP1DEBu$Hm4* zEy#72j&I4x>GqVAooFTBnak$8PO`BbS2d`3(&?`3=vnl@!EEe~6!90xR(V?Bha~d^1LfE`jm$1F%S#Ci5@tr3LQl|o2%Hla`uEgtY%;G^xRwKByeNiAQIqg zqyeT+k7=HXP-)AY+V3fWgYngI-rlj*@wQUu>a5AtPMn^NLOlJuMviEs*ck2eLT7NQ zBGNCKMafOvmLYE5yrh52mi{H16@7KJy*+hxcmwML!W_;i>`s_AEd~iT!YX4L!s_*@ zQ`6GW&!m{>;E?F(5bcbL@$9)MMwpSNxo{XBh9+_|GTdBSCc8#esQg#V!TWV+JkKO= zS+p=8(Q4lu2SS9UEiDvFn|octj}Pv^Yhzc zr%hwoXl!#vPM3!Sc3hLmu2IyrYusI>l%M5p!S%{TM5m_05$WxzhVV~A2m*) z3<~;xtbGT3Th;Zy?~_-C?Zn%brzBfXVi3K zpf_%$iL-Uuf_8q4eFQzay zW6bwF;ImZ^SxS)7C@o+h;&h-fP~s&v`IQoYHNw^rxjSu$ubQ z#H&6gc}&mwFsa7(SGw$_P4;&9J1EKqd0y+BOpwGXtnjbM*QG%82dvsb!#+yMYW|Q! zP7LtE@OhW1lmMYJ|vuQA8}89YhF(FO#pJ z^x)3cp6rSW{XV5)x4ELC>>7zk*kv>$c=OH1-c-@XzipDfw3M~Q7ko0~Yy8uX%bH1} zQM*Z!wNYy{`n8cr?lI~+lO((j9`~&;mpfyb=1!k95?_8@n+}g`JA8QCw(IE43m0z2 zAA#^28T1fI$XWFSEJzaQY~QG@bvf$m9eD)>d0LxI%hs@!m!9DFAMSi)y^N0XMq^Q! z)Mw-4M~?=s#k(_AXf5FqyfusFh+2S(Gp;oto(8d=I}KY_tlYYF<%%uT!uF1Zi`v^3 z353s(AA?umT`hQ@>h@ELJ*EnPHmX=G>@@7q5^3y472nv|DP3i=nannuSw_<`8Ne*;T*&G9&MXjajwVn}^JX@oZC{2Z_b(tx(m1&U% zWvW1U@dP*p`%rwp3oQ1WxxeD6r);+ya*vij^;GS>jL5v_8jJOaZE>cEeH-QdeJRH< zeAnJ5M-b|3YS^=ZqBc;FHYg-2MyxOtq|~OTR8-N&VKEq9U>O=OvKIaLgNV{#f-n4I*PP7TW1ptfXLqQsgMaDAl(N`jqVF?UIJQ~WN zl&ENl!eA3ti-cA3oQO!hQg|;zq-vczyhp88ubdTvfApi#e%w1ts*2DJ%F3B!n$2w6>La&<*& zdY$mMM4{(fBF}T2nCm%*LM8L=tKct>zY6!xTPUlqHzI7;6r+swgj}o}*=;cG9WiFk zdt?>))M73N!T7xTQ*d>QX={*ktC!Is#`YKy2a^Od-}oE~zWWlKf!E$%+S6mW5yR@~ z!LYR3_UO&~b{NFl;QP3ldmtwMY-gI7{N4Q+Tt?d{uKOrldU}?a1x13Hr%uD{xBda1 zg16pL(%H!&>+E#grp(lC-K96}-Koo5ux1VXvy`nli7q`PDB<<#oF=kq`uT3&{ETA+ ziT0#$eS=C_o}cfcnEITA{OAi!K^nq(Vm6Z`!9eMEn0wi4>m@)t*ntO zEYxn0NH%B-3(3Z^*sLVC-q4$z+-=ZxCS`H9@C4s82ETgB_pNU3RC1rxEnY?kw;bKK z?YQ&RNdAT%QT$-jXoD*qLt1S_83sf1bH~&r!N_d`B`gP$ z#FBMoB|e@+^B6)no|J{%bl#Miv#(F-PqgP;bACF_2ef$!1HF|o>2ph@M_aq4W72q(iuQWb z_$Tj&=5zcT)E9Ugk_8!2o>Mr!W9N8$(ka`o{zQ8PnZq&<44dEB)xyOf`qQ=n zU8rechy0VzK^2${fB5J@6pfVU$w%QWE#1<}N*$s|yUdl9WmikYDV;`?dJ>2u8If$a zKDah?X7;SmX9lG34^mw9;9}G0TD+X(^4gz(ll(*rt(GhX<_pZQhstB#fLTw zvH`m)x9NqdL)QTrIZPZz< z_Khi$#CC(BJ2|n_q-#r*#FjP7tcSf+g%kfFA63DtOB22RJW|sf-Zq{f{u97QrfVCM z`up)V?yrmeM|SSI>84#fk1*SpEFBqHx@0@@93KKH`5Ih-bh2cLem{kH;*uq-FXNm& zr;``!>YPsW!H%AH_5wC<=gtE%eKpm~=BR*AW(Bh;&$hs{U70%@=k4H6D=BIv_V)t! z#96y|sK~Y`Qv~J$(Zw_16)xt#E|9Wv%;NJuuN7-&!*~PEOee^hrJlQp z2$~km^xOeDWpCn)dFfJ|l^!Zux^zs&y!JzUA#1fSFJ)NyWbmGL60SL6#te8*E0|4> z%bLs6GHQjt^Us<=_&SPOhjVA}4|r(a0$D``&Y}+5D=M5gZ{D`sXxhI+pSkQWYshC7 zf~6;5>3QsH#h0FE?~DofI~B}j^%#&f$9Mq-D?R&I*#&0K5AXv{6>knv)DU7~v%wE= z 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%0AjU!Gj)5uB7baVEk&3+127W3AdH+^54#!#9J;v4x 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 H1@->{o>-QL literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.eot b/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.eot new file mode 100644 index 0000000000000000000000000000000000000000..888eb8509757b2ac025950fb3996e99aa4fc5d2a GIT binary patch literal 429100 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%0Dl=-MVij9fucO|3@4Z@9 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 z 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 H@az8v?E!w9 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.otf b/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.otf new file mode 100644 index 0000000000000000000000000000000000000000..a706c1ae60d3a6a08f417fe8af3ef8e8cdec2cf0 GIT binary patch literal 289988 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
yL*=0S#F!^B*I!>>$amF(uF$EDBB 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
vdTja?t+F` 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

>aOK8`Iti$mAJV5y3da?i4P~sldz7aB~A$ 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.svg b/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.svg new file mode 100644 index 0000000..f5370dc --- /dev/null +++ b/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.svg @@ -0,0 +1,8334 @@ + + + + +Created by FontForge 20170731 at Thu Jan 20 04:13:57 2022 + By Aleksey,,, +Copyright (c) 2022 Sunn. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.ttf b/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.ttf new file mode 100644 index 0000000000000000000000000000000000000000..3696746a830eb53d7fff90adcd927084a7336f57 GIT binary patch literal 427692 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%0A}J#&yzo%y%q&f9gc#nT*+)B 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

ZUk`~QdLIR7Lfd% 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%0A6*nz*m&{oqdLcb7Rt@NFC4pLoJ zgIVOcIo>cK5yu-=Wgq%2S91KmgNus?4=xNNKB3=uiCiH`kjo|DGnMKUsdNmBEiNv|FDlBX zUd_x*PtVRy$66g7U0vy4YR1~y-p<=`r{3kejCeb0fI9~o2LkU5uzlBT zpSlA#$t2#I3Xd%t)!8@n^nUpeuvXd5z^^Vj&zopfcZjV?lGen=)<~0TVqvSb!+?i9 zdFzA*n?+-AiAAU;3iH`J3xe|6lklP+a9Z_j)@{0zT6K&JOkk(mzbs z_cLW>IG_3rtNRgmZ{Qw!o(1SPb#h!=ZydKO;o}|`pb|K#_-gpoic8!~U;pfEf8R{n zWsrH9Qa7^Qd;$SD0Dp`pQ14*^xYOEh#KjJ1fVjE2qP(T09PW#chfiTQ>C6IU7t~`+ zGlGS_H(j?!I@!$3IdqG*?r&>Oe-3z%Y)g6^Q;#sfTEqauH>SzIq_LQP>*okU2k_b^S(Gq6n>` zq^S!6$;(31nPJE{U*B>KjX4yOPe*DoO-lAOXJdXbcDJ$Lz{XN7SbO=dJ*=v>M}C z0P}Dli>9d+i-rGzU4zd*Z-(Av5f)~l5xvP~3bT?eG<-V$G5KMv zn>y=&Y(|neDj7TvUuUuCUPe36Gqbu)Xt$?b*?rv2Ye22U7OSyR6qPk6f>03$4lVCh6$+{j3L!fC?tcJgb-E4^~!yy{oh>B(y!j)%9A;Xk^b|lyG2I#HjCRfh%Z4a^?2i>(<`@YwE56 zKiHGwXTXMS3*R;0-YDnU8;grK(66_S);*<_6=kKBRj706OU(H#hA5Uac&M$dhCvLz zz!3>u5Mr>eZ;%dK8omEJ>E43%`8E2l5B2@TRWl}ewv2S9G~Q8NC7$L<8V?F3&IH4o~HG&3qXIts010+!I6^>0_{`+@wMm(gUe zab~w}`OQ`?4ivy>Z0r&gJIG>$w38FYY<6-~vygyiYrUtzgUHiGMX{dF+)R4+5j>dd zDKMEEt;10^euf?&L?jf@Bn%bo#fD%k_$f>RA5jN{^*eUdGbDIPTC%dxoC^I{0;5>m z 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 IR1O{fKYzWYh5!Hn literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.woff2 b/src/main/resources/static/fonts/sunn-main/SUIT-Heavy.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cff23e60a0f77ba7eba95365b67b668eaa92ac13 GIT binary patch literal 164188 zcmV)SK(fDgPew8T0RR910)bor4*&oF28&z(0)YGg0RR9100000000000000000000 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 Fe*wiFZEOGl literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Light.eot b/src/main/resources/static/fonts/sunn-main/SUIT-Light.eot new file mode 100644 index 0000000000000000000000000000000000000000..e863957fce27cd2787d27a64705977295666e906 GIT binary patch literal 442264 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¢V*+FRV?1L#V%%bGj#&}o9CKsz=h2@< z4@aMk{wVrXbboYjv?;nR+8EssT@;-i{cQ9z(V5XtL_Z##5&cl~w&)GfG0|bsis-q~ zS4Pi{{zvrX(L&TGQ7uu8QFT$3QAeW=MEx@=C+hjAXQTE;?TOkIl^L}&>Y=FAsLfG# zN8K59N7VYLTcg%Q#YaU&MMf#3LZcK>{!!8>?V@lC{65nn`{jrcg?OvGSBe?(8jiHPG7Z4s>zA4cRyyc_Xm#2XR05ids^h4BW{XV9&uyD z;)v@a>?7tyTp2zQ{$u!f_&4EShkq6RS@>{xcle2LeRy$rVfc~ocf#KeKNS9Y_`&d( z!uN$|hi8TF3V$+uNBCpmkA^=S{!sX~@U-xh@O#4V4o?aX30H&%hs(lOhTjyvEZiyl zy6{Ee*M!dxzbbrI_{?zIa9;VP@^j^9%1@PNl&6&+DNiYflmp5hWw+9#>`x+zyFZ&tb}mng4R+J&7D`#EeP?EA2IxeziI@o;*4TY(XZ%Jm=s-#6N=*sqoPG|Oi`=QD~>8k6WMn$6HHbuNbrHEF9Dnb+r zMSw!8@KM~NSgmkVxGGjCmMfMioD|n9u2U>hI4Tw@Y!zJah2W{+pMt*+{wDaV;4gyD z27erUCU`KoKe#9OL~vWMF}NYPF1RMRBKT-AU|1T_cM1=R#q1eFJs1ic@W7ql7ZRfnL&>PJrHzz(3+t5AXQL!P-u`WXm!xd zLCb<1g60JML;kURNIoF%mG{UyACc$F56Sc7Z^_@3za~E@KOlcm zzF(dre_sBaJWIYyzEl2~JVXAF{6YCvd76BSJXO9~ez*J%d7^x+TqBQ{$H=4QQSwN6 zxI9!IC=ZbP%e~~Da(DSH@|)!=lO2@3Bzs=APnIovT9zeyQue6q5m|=pL0Ot?i|lUMCRws8dheg&=SxXU{$Bp8{jc-COnP4WskBw9mmZatOJ9`km%bp~BYj5twDc)yrt}HvH%XJFcSvuS-X>iqjg!VmU8Ofkmr0$Z*Gm^juaVkI=SXKuXGt%U@_s-1 zjro1$chaxduiLNFuhp-`ui5XIpTV!vufXqpzihv~eoy;7;rF=TPQQo!QvBBY-R_s* zr}k6%#rlQ&dHSvLTj_VT-#kA%znOlvewX`kzQ6hY>O0{(?)$axsPE^#AN!v1J?&fN ztM@(XTkNazE%Gh&J>vU;@B6-azHj-y>3h)kW#1QlvwffQ-Rt|bZXXS2^HpF4dLeb)Iz`-J&~ z_yqa*`S|+y__+JH`Ka);ifscdFH9mGeb9`obk9mLX{iXM?_gU|cy@$L9y!*U6 zy*s>Hy_>xoysN#dyvw}vydU@8;r)nrhIhL6Ht#Lo_j#vyZ}3j?zSDc1_ge2TZ<)8h z_fl_X?;E@qdSC0kzwT}cy$*ThdA;WK zj8~@D{a$x_C3|h~y3OlWFSS>USEQH1OXlV4BS#waROmm$TPmuWP;Rysq$? zhZ8gy2loe`#kRTNcPy^ zafipP9&0^r@o@84>9N#fiHEbtbsml$3q0m~%=5U)W3I=Q9&clI4=6k{cxpCD%$8 zNajiAO0JOnLt-nrTrxvK?&sbA?f#?tckW-gf9XErKIGoxZgTH%Z*gySZ*s47H@H{2 zm$>WPi`+kOf8YH*_jlY6x#zjR<(}*Qn)@s62i*6$KkJ_5{*?O@?iub6yFcW4L3S3S-Q++ z`AsWaSKhqJZS^hg5)V%=Zy#SjseeGAOdb@BUy2D+hDSt3MaRUd)N%2eHEVB8Sa;j) ziRtiu%e}N|<5R!;;`dhWy4b4i>>miSKM!t8+j>81Ji-1$?AKBLzx;8* zA{EeKkM!7@Ed29BDZnqX2z!75Oyb8{;D>+xNH&Q8za3+fLv)z~fbV5xL^EJ#V0^|H z(dGDsm&@^cH?|nFMO@oHFooZraRyNUelv&h&lu~#1b!tZ1sI8D+XE%Q{OnQuTSvs7 zBLV2o(SmmT?vD*{0|&tvez+$MnDE0eWnhSCt`k6vxtYKK5a%kyxeB#hl>l~t!vMLj zI!!bWzVoow-X36${W#HlZ_q?^wH=TEthpNbuQn20gSl(qcg+Zqg9;b`>R8Z+Um$V< zDIgnQ{k0SLRU=0b1+ac0);qd@956(*2!4z5@v}lokP8swdKo~>>#^1e`JE&n1z_Gu z58&f8PPEtoNI?=nyv2yW*hF-L0%QRA-)IX^>y2gj=^$4CpCu}Q+Lqb@Z-DhnQO8pF zEFC9W2ES#AU=P69vSBbqd5iL&#@Vm)CwBi7MbI2Kt5Uo6n-#Bt2S~VLOiQMXl zRwLIfE=2Cg<*p-=WP#H}9*F=odSHzQ>rdjRj+}uEqypsjL~c(Lz?_!@hypnPeQ(Tp zqZS|d`=AD&b|PQo_SF;l4G~E(7hp>ih?p|?$lx!}B?>|Mm9 zFhUgP3Niuuai}LA^~NUy1L0?efEz$8O%})_TB9Udi&$$hw)QZXBDxjVeJlJEq@amt z9Tu)DBf8BI=!kAdj@#Rb60s)HM6^B;Am1GrzXSev+Jkh^N0cN1$g{x~WPm9=+mL4? z>e!eGhVi3N$djB;v?Rq(cg}} z*{&yg2=zTQLiBJNI8Bt{4dC~P6F|O4T>$1DH4;6BvBxsODAA5|qMZ%^u^v|d9Uj`1y_JPIT*{yCfe@+Ft;By{nG}Z{ZIJ4C%?EDNcN%VmV=!iaa28esa8z80@K3e!|v9B@ zDozB5Q-XLU@F_*Vbcm=7*IIU(s2sJIBgWBeq6*}yfUh27diYc#UM1$La=Pq->w7ML?(NXPt>g>>Tw1mM7`-meRg1isNX;| zAO%LE!6blKLkEdYqNbBgM5i19VxPjgj}Z4XYCfGybOv$Hf;&hKnN27urA9xzGtJ#v1pC;Gt&93=V?`G3URgagomF`}Ok`=@-Op9v&@I-*|? z_ZJh;%2J=;^8wCHwSs=OcHlR3c%czh;Qctb^yefs{mT!u5tp1GY|3bnTWH; zxIOIr*#LR*d5F6jV^_oHY7=qSID-SkIbhxa*XRJ>1&FZ#V+&C0weY>Row$YYTZlD| zHUK`090Ar}2jA;Z!*%ezUIUtlb5a7#Ek-VUw&51*h`Ryp8&Uvb-6#VFFhQKN6l4MT zFL43Ly9BY8Dgf3ka|VdNY=}4)h?7V_8ZZ#& zF&iWTv^}xj^B_QNUa0_Uyj36MxF9Ex1>hH)1Q1Vwyb9P5tPhvBK1^H;;>2WtapGc=!7y?7yuzvBuSPv_h#iOdxH015 zbBV*}5Kfar+!_K>um|)Jw-)|uGYLOn2o3`HCm=_Hp15^bvrb3cZOC<73K$~pb`?Nf ziD{sTxb-do>+Y}xh;t|Go#@|rnz$rKfOScTwE^QBQ0InW;_mVW@Y#sC8?(R&amjha zZL$NfcSnJI;_ksU+>=dQ3f86^Aa1iONC!sZ?nV1v%-si{`;>sSO~j=lXDVt-9VKoH z@@&ZgQ^ehmvHRUL>;U4W^%1vK3Q*^R3E(tw+u*aUow#(wNY@d!9r?Dy zK7{^52I3w@&WFeF)1!#<2z(!P0I1 zz<=KaanC0MjK6@oUN}u$P8xChX9LvtPe*W=IDGEl4%h;Wy@XgV4HNe=?8`>tUP0Vf z@`*d>44R00HIKO0902Nk9dob4=ECNp#y1kcIB{B^P8k^wPluKN*E!Y7jiEDv>%Q$hZS;QG}Eyh0L+F_8eAChk+@{!~xgXIS%@iMSEO8c76N;yy?F^JIYhUw8x5iq9$B zmpNdPIDA&&M)QgL$`)h*#QRzWP~$hq^$l`=1HUoUH3s`F=DyVt_b*of`yJwcmj=d& z!{-+6d&K!3_6IwVPTY^^|EK}*oxs=xd?$v8`w6w;a|`z~;{1$Uzo6b}j1xD7`6(lD=M|uixZlwKEf-7@cL6ys7>Fk)kWD-{8W%3c&o;N}wekpI!KC4ioQS1CVn8>;mLjFh%^eSijI7lo9U;KS%T(k#A8lI8FR@ zE+7ja-t{Vgnw*jVYH=DNelcoTya&MdhA7ZP{EdirBYbZ}t{X>*ca{S9FL3~Apq==o zGB8B^GWad)Bi;pZTrz-(_~r0lZY2IDXMo%{A@>TbTQNnv>j5xH{K{l7Lj29C0P9zw z&Q+*m6@1+g)2)v9)fiiSkoa4i0CKt~0K}CzfDAB1yoUnliT6~39DtZ!$nSL!AfI;@ zz?e@Iz*=8eU&Qi5OutMpOuQ5^q-DhWW6U4*1vmou25P`z;$^lV6~I@H_3}F6gOD$1 zg7{#>4~A8sW`%+H5CRDRKA{dE0}K<7&nbM^5b;XnQZ^AEj`jGQ!biA*G2$Z+5Fcd& zkQaZ)!bhVYgS;_&h>u0g*euXTyh;M{0M@7#AQ#{|gT&uz4-ONbkOIbuUk7`e6F{EZ5a;$Zfbm4+PaGwFy%J#k9nL^Y{GG^oXBI#$ zNiHB8z;6TcZD=C?F3jJB`tCvv8&T`VJpk=w888yR$r)hmZUUJAIqyOLo-yK6k^uH- zvj)K4i~0NDcOT|cu`YFl_$^t)-!BEI>!@526NX}}QiyEDNU@lPZE)5F9+gSz%0&mLUUUVBhR z{IdxFzW6&4KAS)iFcH5GweLgB=V6~m%oi~K01hDQEjK88I{-6R(68~xr@vqGW>0p%j*Aqb>@wuoc7xoQUd^X|V z)Dr(z6u{a%XK;}CLyiFUZNz?CPdq-C@b8Qee^>*s_FWYiCjPw?;@`IiY2Y;R`N)w! zMf?XC|6qvt58?me1o205iPzeJ9O4TQvjB62>0pxhqGW)zI{51Ph{xY|@WtqtV7!z- z9r0yoml=sKmjWH}MPi8yCfIHQdBpd)f^0BJd@sg(hluY(&3#7V z`;`Fw0jwWHjzRbh!4AQmOai0CpUNcuBYU7H{&WKIXPm$R;y=dN#|Mc&i<-{rh#yvf zG2%Z#y`K_D2U!1EDu5k9oX=eVv#9Y4B`^^Gr3%1~x&h?)DhlKg|Ftc^+OLO*{{~~< zoF;xuOZ>Nv0Qvvr1j>m24(q=&5kHQ2v0+b2m#%qC$y)~+{^a0kZlUMM8l1FYMCymv{!1PL4aNJu_F!Y1@LA|g36Dns_~X4y z$V?&ONeu~4Ie~ln1jeR+z6 zS5A{~Fpq>+5#!ZS5?(`$*U^3*ez_QbBb9_V(SNg@gtt(`TazT@<&tnn0meyq8+E*s zNy1?p0Q)ZNyNLfD_T#;L65dD7_pv4)?GGFQ;(zE2;B&+d)RCa|26_?-;9D?4Lg5Y) zir`y>>(IeRcaVf)%oX>MP?7?sNGQcznJYL=LOEg{C4hAmuob97Zx5PCsKi)RD!`g* z_!%T5;C)D_(UMRb1rYOCBA6hdE&;TYP%k5)VK&Gjq0t7Q_9kZl+bji>B($KWR>W$} zBf;nZ&~I}BhedGL&gfSC*x*dR)gdSXDkB)?1 z>6i5%(;7&tlE+9uhur1BXfYbT-HW*q_fbNf>bf`6PVq3XCLtkxIgssN+lI7)=8c zBz%=k!q!Op-8}N5VNLfExcT1H&ZzinUV;fOY4Q^E~{2!`KA^2g!#1 zAJX0fKB{8G}*-Z!t`un_p*k{W*GtWHp%rj4$nUgZW2_n*w zfI~!NV*$sBC^P|{C8AgW*g`}_6#%~@P(ETG5tUN_C?Dwp;C@shU>OmkMZh*9#^eDu z5-}F{V-FB94&~#H5ix!S;3py`tR-S1?x}15+)uiih-%P~jQYuFCk4M#QAdOJ5MPRE ztBIIy0iY~mOEFUqI7q}S;K|1CoKCIE%*-mBNlHVq80c`3IL~xXhZvUly~5oGYxQz zh_2&Abgw63DR6jzvn&z-9+j^qB5aQ68%spLAAq`nMMSK~1K@t;Vj@<7rs`M#=&8Z| z+U-QF1D<-+t3O4=hGj%-v;pwFX%`WjL09u3BDTyUVrwD*<=aLQu^nx;<9^2~A`a*z zVkhc!t|#KaG{9;iA`TM~hl$;D0Khc}eH=U#aGHo0Z6xB5WB{%WMfsr*6LFXe0Gf~= z7DwRwh+{+?iSi>45pmR$L>yfQI6%ZPivh=pI2QQFenP}?C_fJEj9)~=3BZLIOPmOr zCV{?5_`Em~u!V?|ZGhcGoHB!mQ?mf8i8u}SrlI_F;F|s;5oc^8;>=_K?#+q?+)l*V zC_5Y1=QIIOW-i*f1otj^mWY>vmU;L-Zv_$OqwV?Ii3s~6E;vQRg%1;P5%9wPh?n8> zGJIa%2{=H+D+U1$5pglDFA)JKdu16BuR>c_Jx0W9uD_ayD^P#MdLrJC2mn1dMgmZOB|cYfB;u+nz!oCjgf?zkO~jjH z0VsEi9`G6wS2qC;5b;*vUIQF!wh{3*3jnxpLtD4E0YJwc1%S0gyc1>aM0lPy3?*bek;@_J9=;yXb0BGI@zC3`s z4-&w$M0}_d0Qw)s{fBY=VbJ$T9bh{VAGH90>mN42ZX!O0wjbL?#K&>}ag>8S6Q4*1 z;NFwC_7reF1st$v;?pAmuMzQ?EWl#GQ6fIu20)w70q=8Y^Z6%#!heX0$xk%+$$0Q&OVQ6m2C2Ruf^ z|HT4O=YOF8H0qo_PQ)Pa2X6=9ngkw5`-s?s@;$qVg0ul1CJLGcSW6Tv60jI>iYNs9 z783!t6NSP8I7SqR=M+j2z(0Q^ipVK|Ply6*(uyeDkDdrPK@>5oh$6NV@DowQjRYJZ zig+7fBT*zI16C77Vk`ikDm?%=lF)9_aiUNIhZ?_=X8=$?Wf@VV765=l;|DxR6luVf z_AF7P<9GUNM3I5^GI1?)3sGd10Z=x35dimcP&a1<;1p5hf==Xa6?uaIXhVxn?Lnf* zzZ!6YD0FCBx1A{Td4SuA!T=f#YXQfJ!q^1ZMieGoGXZx2K9Q?c6rf(=JfbiY06vTK zfYn4{!F}Xu6~$=);It+K76X1HiW0O_f=?UhvVk6Z0RVOEKM{pvEZ`_nILiQN&xLv} zlyd{W`)Z;nO$6Y&2lqX@h@z|s@Ci|rZzKw@4e%OK_&}E*-~IR=01XwOsp3hZs6^RH z;I0B4)u5|-J5kikBZ}HiqNoGjI^d~C-G)d2a5th{69KFyie}(wM)?+8Yn?+BZ7ARN zEK#(heuoWkkSGS=dZ!<7fG7r{kBAo)U7)MG3UHh#25ljV!BdFhBK*E+A5jb$3HXsH zhOQ=xVFiHKh+_EFL@{D4QH;z2faX!1L@}BG9wUk|C^H71W6J;sh+^C-q8N{I<3Yy+ zv^NpoC!)?I)R}aeC@$Vc6q9j%iXL!^D5heprlF1LQ;1>)%FY1IGl6f`YND8pGP7}S z&J3cMn+G^V6qjryic9Aa#XPh>Z!J;GuL2w=iUnJUVj*xWJVq3YP<|0`Uj`ho(TdA) z?TTeYvDgJb*(EE80`^&PCCb1)E3O93*WlhYpk*oWT#Ne4P;VK^UWc;FZGcaR;(C-@ z(L@wCBm;2oMwD9#I#%9J6sv%5)j^`T31x0Z-J5q2#VvJ!*N9^E!$ff_@ZXB>YvvKf zZNPWicA~f)9Y&A7IO0Q7+ML;>5Y*g6sb z`tNT8fX2V$+TYg#9s|5a7@0!|d6B)1ER&KDk4|t3&J^8~Ww8TV>g(6As^HvO6hOIF zHit4n2$fUoOiqtdXIfIE^et8vN3c0-=$bWhxl$D7_%cZ@Ar!cj9CRKT+)j@U;8X$x zTw;cG_r~9`E-n!FdTb!}w!g*SyawO*MpuqXcs+q>d|&yW!$1F5z87A2LDGHo6$<*A^R)a}IP z^HhyepOTD^9GXj2sHZN)O;4%Y#Y?MLT2YCw>mrRREh)PWN8aOn9knH%C~st;-tW%H zFlFUtt2L^ei%XMy0|Mn)E@@F_Las)e5*jF_)f!EHPLftF!5%5d_@3{C2N@q&ikXoes{7c&f`sr*oLo zQGvc&@iU&LkUzi8UaysW)mxoIU9O=H2Y+`4^gf*~{L<5#E_jQ*9V}r(hr8Xw-L4UC z_XwAN@%2ZW*))XPr?!u5*nHwLWE=4Fc zxT1+?N{v1T*F2_pmXeg3OL+&4y8MU~7HAtjZ{*mlIn{Dvq>snpTR()xg=?&w^$gIff zK-%($0`9iYHMPDZdXYINGrvr4tf)k|NGSeB(HwHEz|aH2XT%j2r4KWK_lc4zJ?~Hx z>mf0Olxmz@{7OB#h?FUdYik-BYHAn%?UmvCXU*C_{FMWt^3^@>kRZy(5t3vy>G%*v zD4pn8u+mpkU0+{aF?`e;GtfpId78e(d?X$XdNfLn(xf!u;RhPG zlNR2gzGJj~^q7*-cd766({(nleW~fX>r6}SUfX>#?U>OwvDKVDs!h?VbSkY|t8&uo zX@vB9x%4}YD5p1irTQS41f zbrB(Y%t)gNLyL)>l8kwaK_`5wIvsrOau#tpm!~(~6(65gFn&ToT3lS3Y2x?-X=Qv? z>e$xSF=?6caao!%ZLMQ8S@HiIH)O~dV@JDb>_tPy;*+{(+N`y;R@?MpBc|h9U9oM} zP|#Qe&V0yTB@tXJs=!z0hu+Z{i@Y&xq0?Ex9g>8chnk>bQrhtE9S=j_%xs8q*<}4rWc8@OC)tU=y^6|`( zW>1daXbj}Lp%{jgS_fpwV->?Hz@um`wFc;U46@cuodWdS{yB4e(ndPg=aarU<$3z) zGP+-~(|Hp1O@MEV{)~Ej7WL{XFba~}+XGH`gwmvjWGXS*v}0<8@8UpUkya7qic1?| zx3&~nTg`dx8RjTDLi#vDRo0O@s(MeU4%6My&{gswx zv$@$4dVjl!uFjQun37WO1b<*sdHJM3NKTaW2Q1k^mZGSMa_RU%dfZKGrR(T+c3p63 z78_TN*#N#UL8h;WUPp=})&ONZSypx83Ne!R+A z4CuXssW}3i>0BUfWMn63aSnI>Vkr5y`j3`)nS>L9TxWx47A(Q zk(oK%=^ayAI>t-$y?VVjFHe3C@iUVC!uErodW__`{OqMuDVRK%0kTS`_5IlSsc%YU z#bkfV@2>k&lA_cVlYF$>(qb;+>?|_3SU#G_8R#@im*h%HMoY(6VGJ)OTgXF918%`z zQA6NVkh_QK>+6}OwpKa-{lZ8y36O35%cz}7-L`sK=d{SB-g*e+LJnv2{Kz8MJFupN zYN9BH?V|$eS=v+}-OS!8ke-pAE})kH-z;*7`B~Wa;j=pha>@MAbo(U-6TIG&UKw9Q z&yVzz5I&75ihAg*0@@@!3nYmJw1qYoNVlLIgYQDz(8;Y|i#O3~}1H!by)@eDNcb z`1|ne$qN>|Hh+_~v&7y}T-;&D0~D$AwfR6{ADEn)U`%z_RZg#{m|khfuaHhR$~yc^Lkt5?Y98btbJ+N1f^z$`02IlkOc>LyH58*WLZ@yXy(*xHs(R;|uA3I%F+gQS28(+{sdU``L&&xH z;bVNZdcG_j>G6!t%5Jrk4tGh*O?8FFN&_3M3mDx^Fmsf&^qgW3V$8D%635|L3^%kt zTT9{FP#w1Wjv2FMT=P=9wP0GH^ZEe;uI~&?E3n#^Hb+i;U?N`S&O&o>*G+>4-P~n0 z7dp%3afUC1bMl2VeW4R?>>PN*z@%_p>|4 z-9LW({o^=K;nx6HGH}VhfeNx70@(JsbdI!|-Xgi^KDJi+%_kl6q8zW&6|MslMMLG` zQJ}^Zbf~l~Kwn1jAAHi2C{0Ow&nZF44$JxPp3quXhz&LKp6kvq)88qpVXY~>jr}c-_#}4 z&u_uxq&!w&Q$u~yf-?9!PP{wWRKGMa5TNV*bg=Xggk&d$M1{(e)hLg_Q={-|KO9_Z zxUUsGzd`T4O;q4CpE0mpVf727^cOtetp1YBQgyexq{HgJYofQ&mu_|yHJTZbD96p^ zZ(N9$C=9qVg%blSS56C>rQfarIZN8;toXzF{lT9<>8~^yoD~7 z8Uy9!VY)cp1Na`xXM#%53A~q4)X5I`zqOw5`>8-_fOSjl^oigj=&P1~EcbOF>a9dQ zjGb0Tc_j!ATj`SmsPiu$n-;tiy}yf1g+Ae9mjF3V;PKtL7OGF5aIQegX>j>~0m}z; z^1ZXF zC)Jf&I;OawB+9QaRT7xD#Ha0DxzSWv+P0GwNs`IAXXEs}MN?CVii6~~}=ceap zCuuTclCnzDlFD*T`W$0oOd@5t)0UZ(Ql6Hb!dP-lT1rNWAuGv{k)+IwRp(iKg@xrs z<@u#Kp*|w6U{3H59smWaRPZ{P^F#j!^e479IEAhCf)9gxeq&2ehHJy{IAW6Zy2$v- zmb6{fJmAVkf7ygU`9z<8&$70*Ydh)lQhn8AuXl14eL-pf9&TS?Jh<eXK${ zP=!Q8G<09^8g`Y;_htmLKck#H_hKj#DVdbNgp8`4&r}@^y!cGTOWP~hjNt94bO)Qx zfsYr*|2TXG=vwFkR74AzR72O(l-BRQYoRI9w=Lg&*Gi{JcT$hEhfbqYq}SnE^w!;h zHY4!^Y>?Zd_XMO*8-F>~Kr^H-X$E~(T23!VI|#4XJe0*8kKzHJo4cWGo}{F|;m=wI zC4n`uJAzxiJ~m3$my>(mq#7u{5Rc(wVd`lXEO_iOwkKFoCfMcn5yuS(#c`SF@shXw zZ?V&-4QEPOjJG0EC zf)LI{xqE(RNi+yumH$UwCHq{mkE3(tZbOWIlQ!Vn2ScvZ}58-NW$#W%7z7XU@d8eyxG_n=Wk1Js(QU)-jvalqNB6A z?T&7{eUJmM|N8SLx@%`wRnDn*U7YQAxkr?FM!MZ2J!K=@>~U#}zr0~#eZ#_rK>2Lm z=e(X%^azXRzJxyHG+e-b(x%32t6{XOabbP^!baCr5x< z^TR5tC&tijX*R~Ea#(RhDwAd_9392Zj#NkXlsXI*ojPK8UG{-@zcO1t(SMY z{KLzJ*fbN%&<*6#Jf*{&&S9mV5iS}%zrNDFP|9h$vgNY8k)8?F7nRmEEU1^~06cs8 zCB_T7j&l&~MYkQAr@I=cyi%+=eoVu%sk{M+k_*RC3A@u8oK>wy=uJcH=j|V&}80JO_;`&tN z4`p{4EMZ3*OY>{Y{u-~jN*4%NCYHBk1A3`+Nky9Njqq8;6RtN z*z4#nk)ELya(l3^^b53iHqTSeG(i8}Qei<(C6LnY^A5FF&=~^?Dzwr*8XQ^R#2~;u zamaEMWa*Iq^ZHYLabd6I4C!`orNQ-v?PS&Ln%X&4RdZ@=L#SUkgBuHhaoEHMij zARG1aJKE@wPBW`4tLM>!$oHSEo8WuQ7-+W-EGgkFmHZG$gE-ErtejQjouCQGQpp>V zrSjDU?kdcy`h^YkcIhU0UZAa%3$@ix=c;1V2iJ(l!8}#LlTkTLPDh>X8}T$158q^eiAxlBkEUn}eJyE`NinL_OkHJd zVr){J#+F#9ic(cp+A~XOTzW!=B|ToL$xcjGDidSuWx70VT2g#cd`h!HnTUsp>(U%_ zePTutM-d;D5EZS;SH~4_>_2a zT2_`ZU!X~9je$>MuHzW8viFcQXeM+9^vasfnZmVOD5BTUn&Nc5U)R+YxcX{iUP5xT zIXOw^*U=j9J@ z^!iY&)VpMH`MRn_3oDmgT222ZO-7w5bS(#754h=09co?{ZrVGQV_vJ?dT+IKI>AwK#+7DYy$Ur-lvuDhcF6Br2*KuxX zRQZAtw~RXXs-jB0!H}AsZZ@ZkjklWru>XYdK(OyP}>@Ott@Jx zoh`YW&Lho7d6oL!<7~;+_z}*<5Q+QJ~>pab#b#6DnC!Q=~pM*ZfY^gb7|0_KnB8x33fm)+Z-m zlL`JYauGArq450U3F2C0qeIIQh$2B)$VCV((fuy3C6>14`*qzmozBKVu<#W|e|~Ez zKDU&V~7397UVLv>(HI%?|oFy*$Or18|Cm zr%h#Z*+N<0hL;@q@*`{b@MzJ89~K?`sPO2AQ$IXf_~D0UypDdv=VKF@i}l9o_@?Cb zc)LoBq6YJuuIV_<>Vq$w?&x6C2MqYsdn+7T-cASY7S^3vTNKuvezI?Ev5Q@TxKHGL z;Mx5Z=BzqF46nUbA||{y91~)#a#~S#Et@OfV`MO!ORMF2JnBSE6M&{zvg$4}XVwG7 zt-K&3H7I92v){qvV@lmDOLlEzy|Wm|P>7M4v;(ort#Y5_wFoVG^F#w3*w8?4mDf52 zG6!Yu50^o|)#x`j0v?onrtwsL{i$$SzB0=D{AaZPHBAb#f>;ERJp`H(u!gEZhMQ1m zP6hQu$!i=~fZ`6i0>D>J*zb*v(q`#I0ZpbUX6ak1E|5-0C(H@W%`~P zC;07er0)u8vh=N)`kVGQvqezWoDWv|7@a3f2(1IkTAR;PwNr2_sV5L{ynm#`aW`wV zO`mR~Y0~jMd(cm7&s6dd&E#^X3CY<*_HuQb{VpzMNG)<+SbHv|O*D(oW3Jv{b@(Qa z|6lX?-9Meia$7TKBh~YHtna_3`u{kOEB|~NgLgfX={%Yq;$3(R^^d%hS*MY{e&rP` zA8`Lw_z5;r16`ZVEi&gh(!KJ3H&XuU@PF#j8B7=hop8z0+s1fCtsCtbbNjW!D~4_y z5*T{#&_Hl?<(0JBAD{w0Zw*Kf(?J{p@NZtERmd<_2iJcYIC@n2@Jl`(v8F`X|zpW7(iX1h%`PoMI2n1Ue#ZyG#!Ro4)c(>w8j z2{Mg%drq**c96%SoW_t3elCdys6TmOMMopTwh!j73)atW&(ANR4fHcU@FB3(wWw<)EssRr(M{Wsr8FUWK5G;(Hlv5)u~gIZP?r|Fy`M7_;LbOybo zKzdqwrjX0RQgWMcF)NnWBCvECMVHdK^inflG~K}$iOjTFdKNZnAn=_C;WJ=KGzwR6 z=b0j2Mn{`z3l>|Yo6)q4a|Lkb%WZRYMVFfRvZ-0RiJk&x{%ticS4vh3kF%kC*MS;_ zM}fpWHfR_$%F<&+cjG9r`HL^icL!&zFQW55H{VUyn?L`e2p^c*lqU9k#}2V$ysp8c zQKKH}3V5T5=Jj-g`PebJ#<91|>zHao(XnGi8-m~8Z9c}^y`97f!!Yl7z7-CLk|$l+ zQfUzzQxM#MWUx1QPazv4Eu!Ct`g1qRj}4VKAPFO{{0n1!!FvnYSZM+M;TT;Jyswar z=RV8bkejjW-yApJAK<}KhYB3MF}Sgijq`cg_`={udZUCTCr$?r{DsP@QA)$zq1(M| zLP798x*oj`za0{%ju^%=rr+8GEJV2oe@dcVUU-#GTqn8(M_a6F;)O_Jqv7O@V_WruR8jl7`Lhx^}6m;QsKi;&d@V-svO`8ku zyYGU{AKbjD=)O%wn^EpQ(BVgH@y;7g~Fk3yplqpHP-U1r}GDo1L1g zjZwsWOS`1gug1hDmKN)E_CYC3WEZ6RenBZ_=ETO@vQkoG;-yno_eU`qx%rlMb-b-e z5shhbc3;~6vM&mr`H=Tj^lp#p=akE8y8ninKj~C_4Z?_=@`~(ikH=qP^LmO~%-F6{ zWGJvcGYO(*fw09Q*7C%bpg(;*l(W(latD(t}R+eOnpa~y{`a+~T5o;C?Pm8%A(YMBD zpW$= zQW7bfvI?fA|1BYgb}X^h{jQf3By6pKMd>&qJP0{A+%` zYd2{N@y9DM!3y$>He09F+G+FDxZTy&Zg)*Wnax(l;evgstxHbv<`>o&3^j%M-jw7z zqot{^u*qWadaW-E|&!L;ar#$?dXS6y`_=GhSef7Pi=Il~pArRaKCYv&YFuD)>HwzZfTv z>>ZjgTp?dMqyj_hlRQJlH`T*|mo+BOmh;?r%7wf1j>F+mJsX{zP~&t}C#s{P)rr+E zXALsTB~gjd#k$JO#Hgsm%t~ExbYj#6hwDF5Dt%T{baz{RUP(z_eoIAVYkr=!Bsaf3 z;H%C^$#G^>`SHb(qt2{`O+S0gjQx7~0Z)X$WJzlksoA!_oAYI+x19;PJFIPPs zp>8kM=a_BrQE|`yDD6EG5gDDEosyC5j2B%aQS-812Z0Ximyi5a(r}JfClpxXR1N05 z%#_%-O3Xh+Ca6<0EV0oUX^Am^ zWbxSX=T41vg?gQ_kZ-?jvRrVOe!}=Xr!h;rjAb5u0roN)a~%$yA)wO*4Edgsa3#G|c{5!QL!f8rCp$GdXhf9wqn_W%6nxxb|OW2`gmD7oyilK=hh z{POjGo8{_rj4~+wKO5zDL9y!d=mc+`y}Hht>QosbetTWi>x$>tJZpF! zp84M{w!Bv)MUCDxb}ZjV#^0HE;)L|t$&<9qFYgZw-Qak|v(^9%e9zZk@Jdz+a%%3v z{yufgEB85&7kmE#`TfhJ#k6g23y;%o!m|=aApS#+l47%=Fe2!{ij4z1rdhvxJP(Px zeI-@|cZNy@7qOb)PSiewN6wuZkUZpjEDgNYe0o~SWcz^?^-cs&(=URK2Du)^pS&;% zS1~+M2(hk~3Rj)}maa6i~U>p0Dr_mef%GuH}=@<$HFR!F;NiZ$w$G>|% z6r8k^DF^iQ+@?L_5o*lv_A)Sv+lpt)9x}+}pD4j09 zKMFi&?qht=tti%42>!8je{a##r|59*F>^nye;p`IekMm16+uU?z3VReXt;&p(*4p_ zI{mJ@?qcGH}sO$j@vqZJm1*M-vfQu@rB;h zdl@%555=?EDIwTV_g8y4d!3!|y8Sr|XkkjaZs_d1q3di)p0x25ep~3>!E5&D!tGozAwvqK z+MrOI3~Dx>I=&y!L!_Po-&4md`g!^b((4aBL`z>tr`QO_`*#uQ-6q#lqbAZ89*xOU zLY0{uiwRihL;E+nA9>il@y(`Lvu0BJcO5-Fq~kmKc;c1s&b##Bm5DFjOmn2q(t0t2 zmV0{k2~*fff(?Iqe*TJ|p@i3Nr6m+TVFE=shg7iaCE^=affFdsFeJm=Xz2GBSLzc} z5`}h4OuW!)%t=*Ss?CWyeZDI`G0n>o)iLR&PL>uMpLDUuRHloGXVnJm4UHGtOew|H z&LoSoG%qSOG0QMi(8T2i7!FG2x$4$7^1j~K^Ng@Wh`^o!zHo(Y89W6H(zwOQrO4nX zg!a2?coc`dub_!jCU5O9@@*UFOKBwy2|>6o=*S=X0;f$w(`TvUlT(FGYhFrbJo9Fn z^0V`E6fS#KdR{?MD@%@bwF@bkiAD9(Zl5#5a`QNUYIH(;yE;J`CAQ|oN5)rmdn2?K z+W>6X@UrMgF#JF47!mu}4HH`9!coPv?#d3rumLT?DdaU9X9eQs@ z{A5*}S+6fLr5lau85!fVa;&*uXBNlgl+sJ$tTa9$yCf^qni!wu$WbOGeyxf(JCR7RroUNLP`4L`}RrT%!;v1wxdo;LUVE=~B?E(j~|M;0A_VP^y zHgdl4cTL|L-$ux#jTX^-d9z0erHA9x$#DxfIf;qm^9}K;uM?A$IZm1tpJ>gDODM@s zh^Nw)j0}Sz!&Ic#o8uFc^P`he)%j6Ln%pAl$%!e>{5sc~lQo_m{52yfDMOlmSwdn$ zLVV(Q-EjLP6}VS(*@Alwxrqr=m*%Ne183$YBsQ_hIzvWAMgi6H;kY;q`df<-tZFJAuFu6i>aNcG`Jv^>w{&hU*T*hrr0^rSc)y-vN`CHwZF zpE?8I^&&Hn?;YoC(1y1j@C^vczBg>s!5Rnm>PGkPPMqpYcNQ*sE+*6+eYiKlqhX4< zOr57&1LiNi3f-d1`SF+jlSz zp?QRg{u3ZE{sI#q_;g6j)!~Vd5GT(BO8d=)#6+qo$@}B<%z}jUpPqMwX5N`8s#1sM z=z#fWPttgJ@08rt^SRI^MDsJSMBcC)N+95jaOjJyVqhLBDL=8R5z5q9!M(V#pgJwO zF*>cbpm9R<2=WeU3ISx24K6v|5|#_1D7E zF)|Ei-)~`G;`~r6T9swgis9hLZ29gy`CG^Yaa$mtZ6NaG#2l5w?C{>=&~85^SNgI6 z@d(vPQObm&b!Kmxvcwaa<~7$1NkkZJ)VdZ8j!SB87@QHDy>O6wP_{B!8I?WAT{bEZ z6B(_k%k1i$8)+SKMQLq%l#*WDn3tKRt7+HiVkS?H*6Z49va<8C4K;fIl-g*O-`kc$ zhfi~wqmvTi%udH3haumX-_@SiR69;-tealZGT5lgGlIA4z}o@XXUo0tPy?G=| zaoiUoFKVuJ6c1hCu1=4PNSfc}?9NieMn-0JJG&OBlu?@6&)WlK7DN4He{+|%K&Ne= zY&R>D6JpKwDQyKgI{kn)dG1Z`IZhvEUtv8pFYKdogTwu-)X=6UJmMj|_ZUo|CRa|m zIX1#vT5eu%X*K8g)n%5p5}eS@%PLMYc&O;r={?ui7pAD`@4?NM7K^dI2<-@DR?l&q z!#Iu%k`JdxATz?)i>Dex3f&Wzu-FMzar%;8+lXnNfi*u_CAukm@qAon9squ@ugbEE+pRcigj{r)G(O3b zUEG16W=nesofKS^<Wzive%P!E>AX@~TK?PK~-aVG6BNGDh^*Kmkod)}g3 z5nrMlKl7q?KJwq{pMR^Nlcj0&PI`x2rVeGU>MbMa)WY)Ley;xSDFnpR!=)I`9`C0? z_B-$(Qj{_In1G{S4?S7&)U$z6mCrs^`2?LP7r#@Q#y^1?x~~EC-tVnP)f{{1MRT8h zs^ZC~M?L*SJ^MZ7hlOz#splZo zlOBGbFZQZ*HGlVgmiUA8F4~3a$3CkSIK$c$<_AjX+y*WGppOKOBcL|~j)x0VUPb1~)nuuV z%Q{gf6-~%>2>eX$2=D_aa3^ru`$qqMdP$eRt6f*#o}AoXreh6K4PEJ!R<7#Uy0v3f zesMZZMvP2{R_1j6gWSa43DK#RcawZazYHEl)0a8v^SHkOCnkcdjb{_oI1%E}aNivZ zg&2u`t#a>9b;LcaFruMl8LeG5piN)aqE@$fG|mZCM%IR%)-efr`dd3kJDsDuZ`WBf z$5vE~&CE@Vrh7RZBHEeHK4TXlW>t|K0(nxak+HgOK*d%S`9qkvjM=vcliAQ6Xa0q zfppQW?_EAq(J-&B=>5YObglI9@yA%lZ+EMmu}W+raZ;(wK_^HX(3cR-AAmCvxsj|8 z&OXj?@~}0Hs{}2d#6Vm<+pnx!*i;P6Ro;iZ(x+cM1k~$kRIDRDQbxXQn^fj}{&~)) zTgWmYpLOx49q?ZFO5s^@FAo84h;DhmW@fqA(B|)K)s?j-tJ^)A$^}hD?;Yl}Lkx3u zH?(fuI$)Jno(Ll{auQ>BgW&IK%-P>r2lxWNowpR0KzZ{xA6|JkIUnM!?_M`SS+%g) z^8OL*Fv|Ss;K9$OPk?_N!zT3@>2{}cjq`4da)>Vya3+E)d1vT9LoU=LpG{nHWTxM} zuWCkV6sLIa8`R}-Q@h(Qz4GdiF!e4>8Bi0YOkj+5@i{8>Y;VgF$hLAwUN zG(5h3^vm+0=r@aa6m{+-qBrkYGBUE_lG>sjFVf8G{Y#}6Qac0w&Q5=z(`7F(IvmCV zJL~v$154#%OzyM~m^8_`sJpwms%v0%QE6$B*;C4WAx0h{H()NcqxXC^g>%#F)!>)( zBWVn4m;7`$4yTWjHlyr6Ad9;(2jtAO8mm_PSUm+tzNPB}L98)L6WL(M0)JM)ojHDP)b;ktJ9ik}Z`Q!Udz=Cur|(D3eaUzd=GFvt?Lz8pF9ixC*t zyy4s@-!0DQ6%7qnw6$K**mybGm=5z3T&JkyPv#}H!tnXqe@&ZWl7+S-g0 z%%;V3i7C0oZS3g0f{k=`?rUh+*XeY24q0!sITv4#u-|c`Z)B#;xPC|{D5tOiGuV6V z8lDB_&x7NucIQY8)X=)XH(%a7GiSt#?CcdIa%bN16%($!(v>^u)@*y`?9R^FnfB~k zC*{gM#eL*z_HQ;s&euX4C`<-!1^!(j|@r7@(D6`xSo+uQ_GtV-(Gw}@R=JH(*-+N zt5eztZ8Fv=&7@L@3kW6l2m-7JRX@6c271 z<93hn`No!3c2`z(cUM#lV$qjf=5l?}U@|onTljt@zKa6j<7xwYE3fEzp4}+Kg|r5^ z%5BiIZ@(Q7;-q^@rFx+oWvo3rShJ8Q_n&(}_|Fe6ux8&@pKq&>c={0>uo@#6q{r!K zj&n51PZ1JA<@rd3@vh&8e-%Q4^sDnJm-G%!#xUT1fi(*8VP5rO$J|%Bbt$aTzscv@ zv`L6Z69MUS!T7^zDf^%QL>uX-SJX>4C<1?3QQ+Nog}Bp?(w%NP2IKGn`ZiU-6W)6% zr}B9Vm5xpINsm12^F1uYo_ln~mT@Sl{IQ=N(shI2*ylf`t zxdD9S<4bS%(`l#w`zu`_-RR_Y(bMz1Py^bdWevvtvIwn-?`x1(tbu;wvWp|$k#0?E7Nv2z%`coL!5#Z{-B#bV{IU0OD4&Fy2!Uvc7aDp~G17qnV#cR@Y z(d&lLk$5UfQ2Igjp?XJ8Mf6~u5|tu! zCLua-b;Lb=obrMI~_E=KBm9%Vn_hJevL zLyy+PehT2>OR6ixL(-NQJOP3e5*?jr)$(eXC+mBjr-x&gImso`g8j2+?;rN^!Gj1a_+Eo`IB%$uZLXhG{bl~5cR981iC>&poRfg#+A!JCikLQ)yLp zdZ5fxmY$=qNUhibjBzW4tal5!kaZOww~&S)I*3I*AL1K#GB9Kp2l4mvDV8%R0w|oS{Y@Ew*R*@_^i zMiEbB+jHG@!29oL>7VqL54LA43os$LOURKe}}(38^CCl)yG{j$_C#$|3yERa)jJ{&KK!U>H7QU zxYi%CxtjOScO0I^Wv--WC-@!WOFqH&rSrCeFcZp#2Q1v4gpw4YA!yneEj>q9qC*$a zv?CMe1tMw|Pj-CpA=dXI0(*p<1Fi$`NtSKB#I@mw%`xPq>B?AJY~In!f|L#K z+guY~n5m4h#VB7N?On7;y2rj^1?UmalB<-^o~A#JKKAdpwJGOH)|D(f_&E{>qlMfL zou5LoFdbyc8Y=B}y#GF*4u)-L3e0)NJ>(|#Yoig;^)#1W%@q}Nb0GK`{Ztwy z_lX&-z&~x8pOydMw>x%R<_hYXX4DiFRZnkF*RqU&)2sHX849u+> znVQ_~3k*!wj0oi7kEJ;e(r=}yTpJ#DJERAjh88w9R?f>eTwdDPSid;anl=ofT1NUP zpJ!MaMn={L+xx~Vo9}n~qg?PD-1)KxA;RjxBd+0gX3SrE&DD3_dG$4G{fj0|Sh#S) zq(wsR*Y1)QJCQ5$vn8%L)L+OJ(l>2K1E$L6{2J?3^wYpd{>6NEd?5!G=v z_4u0FacUcQz-f41=0Q|QADty1TobuvQ-NoD^d($-)zQcAy_B|fC)WTgrQ_EO!n2qu zWQxH}7<6rY#_0QWy8A|FuxPH9Si{E-SK-5#xPq#RVRqN7SuXpqirA8*u{AYglS+ir zcbrE;w4BjP=bxqAWeNWeF`@aTNHF2%Loa4r$?~Ke`o2_1e+ljra^Jx`Jt!^MHrKh~ z1DmVOHr_rN9p*ORb@Vr61F}OIwsUojnuifQnnu?RZbU+|va5L|ns@c%7t&^3e>JPP zaz*fQy7Dz4=aA!L`n7cFqjR0>KXtmKI}f>Bhn&tshh%-g$G6vB8u*@|KT4P;%;GA&B+|%pmK53kgkBH>r;CugB1MmMio>UiPe@FyRW00rinMC-*@^T3x z$q>dfzKkGxm-&3lg1>BtmcFM0AKjF9Gpq6kPYXH0p6|Y*-@XMU``moj+7pe|4(U~j zl@;K3_q-?MorV7#ie>z=pbDbzTA%OQ;4kZAq#tPKBU^IssbC4gCxCw;t&@(h5fIZv zseb!H$J+0ji)%h~0KW(JA*D|y@Pt`e#8k#Ue~BwbIf;O73DHsnQv`P;g?jMtCM`Ya zTjoW#esul|4-&uS>3OcZzHTg`d*1w5iu&^7F#dut{XD080se%V<^BzN!7&DZy*pa^ z5AAq#Q_h{tBSo^T;5K?nQou#4dg%rF;P!pebz5h;*1R9ER=#?P<30Qh6;g)2^o~Wy z)?J{rkUi}kk6+hEbACO%DQ_Kf1ozWlqz1GS`^Crfqc=X3#)bRTBJFd&`6k9hlzG*QWNv?UM8ljnTFH_=)nS}WN13VnIcVQJ2zmpbqKw6??xv-Y6# z$}7V%wnK1%hun@qSDw*Rct+Cs>{uux0I%u(ZQJs0{#&$kl6Jhja(Kn?l}%|A9?|O` zo{&yw`M50lnEi+5694wgoIz{-WS`mWn_M4jS5IqcnWnZ2c^`Zm+(R{cLUQ<|0Jg|- zj>zi#KXkyO_i4v`6qPdREGlgR4B0UYmR#g=;Y*ke-Y$a*Kz1}ey=_7rf;c2k>BIe@`A)!y+Fh|c% z>4h{-?>PMo2|oz}H|4Eff5VFP>sQ>cKCoo^)Fn%%PG5rg^yP0y=(it!Ck=jfzI*Mr z4c6NS4Qg%e?rwE>y$+|>8_o;xSgA|aHS!t`*R=r5-~RE^t@w9##B|d2mP^`wZpehW z)EhJP>KfTMK39XEiJQ(JIjwSC?_B=pvD2U9mvs%d3+IoZ9&&DR?mahxIuqk?-16E^ zm>cKBd}s7PZwn0N&mz?^Hv`{evU8o;!fo zw`PtHIe2VjjUGcg8#P(exS6YX(smpXEY|1q)e54Kul2C)@~Qt!(*@IXN^ME z?_4S_B!_IzGW-ij=kc-v3uP~BBD}0M&YPS!UeM2~a6@ML+dH1amaPY0f$FtSuz1|i z|IzBPd#;xaU$=Bb$baXXKC^fCzy5{(oo$z}c5wcA7K*khZ{PyfiT-jeH&E|B!$xd) zq`z^ZuWUwUl=ITlvr9N*LwM%@{Q5TR9dRoncj;_P^2p}1EeSonj2n}glj(!Au9TK- zo9VjkaGRngL^64=-MT{J}Knm zmLacvQnnp(KJkq0pjwE6mWFLR{rd2Z%uO%H-~oo$Nw2etK(L2;UJnFbXN_N#+O7Xw z;FQ#O3SlIj`;A0DgiRhx06)=S-$o#iQZ=^oDdpAH`oC-kBbvcp27XEqIne zF!*n(-CI$ymoaK9FwMGRJlIA-kh_?*hl+$vh7B_Pp9RZu!J0 z=Q+;T&e^Gt-eq`pGO%x-RDfK|OZ4jZcW6e^%^WnP(Rkgyi>s^^$A6pZlCMXU?2C^*cW5zv$4D)exc@RA9)(U_Qw{+!V}% z5YfLs1%2S?dj(+}->i@3974P0SxZIjjEZ`e%%XdTgy`e-hGgBCAzl!~yA077(mJ{4 z>b=PF%Lc>cCRrPOk~4ymk_=N#F??-Th~Z=4RT+<5h~eErxugfw?k?MdH@V+TvJvC> z=d`WeJLX6IyYEtexa{5}^FBV^dG^LRbJwq%H+O@+rm(OEe?UqoYU^56H|Mpf(uPf?khtybj{{ZcIL2EqzlapXcNECaL`T+1u`WE?GlFwVeJjC+#mz z{cPx*ME6nKe0;Z$awmP>H5lII67CDC;FqWJM(5ZZffEFd&yBSWcOKQZ?A-_&)&y8mi9q|GC3yzonfp!~i=I4SFYoHDQkw?ki@^ zoAOssz+l$3y`631;H!_`a^H2*8Z7q=dYL#Fh#dsa^%E!5*H4&OADcIH=*Uq+(nh_- z_({F1iU@-9NBv7mRAsTT8f|Q>)-N!S#m=15Z5naG6hB)7UlQ=G*hw^5PdO`0Ir;*R z5^JsT3B);1N&oO8F)c3F9N3s%3t99KP7{G)@U>@XP)W43Ib3i*QGfCg|hRUedC4fL6>Rf zkp)R1v6m}UALYXip`Ki3K7%9BV>Ypa+@yF-yC;Fb<%294&`VW+(swy-Gl zHVZ+2rwQbgM#I$&{gU>4dr4ZT=G7@`>P_EOUB52zqfmeo{UXsnLEFya&^BmU*k49( zukS{U=J>ETJ(s`^{Y?7bXbwZk37|MD?H<(~TbLRW`Ql{gA)7Rb9)|2H)YwtwL5h)( zQ&pSfiM};PGh(j5Vx4W+W43u)S>nTYy+(61{VlJ9jS!M9N%6=(?C*bgtUDN+H=q|W z@pKhGDjg2#+bc6d=||?M6f$?ksj0<~xkDbrSQIm>5Q{#)>i>gnhD`6io?A7VQyH&% zF9NNU;F$w#l##>Kkc<>8`JzRH!p11xUpg3X8nwklIhb+N@kEtz}%Gd@2STnP?Q*m zNR8K6I6ADKN~>kzD0j~I5HggIa|M6E3p+|pT(El-rUK*vk*tJAK6kjU*Hijq!0}by zM^4y)b#CM)CjR&OH^sgtE{upS=2N?Cdi~R< zU-r7N)MMub8%*y*jSXE)?ojA9-9hW_*JiqOFVX+w}Fi1BKi_>gUWPo;;6sD9S+?}WfS>11*-x?kG2!wcH8jy z4J>$O=j=VVm+N;>mVHl#)A7P_UE6!4taZi*DaT9p)S_oaFhC&UE9jL!m`3m zAu8eRS|L_AZhZ9`^KCh1i_o`qg$h{vGBdfkk8D0N7+^I$FD~=g0jqff;JWUa-CXXq zu(i~oTs^0FU7)xYbaZhII;bV0kL!w3Yi|t}<__H4AAkHZ;NnV`9pH7oMdm0!qMcf~ zx_!omPc3}GpAUdiR!Glz)Yate;ynd=Ac3L`&hCn_?CH77=*e_j+m zwP1-4@4vkQn4UuwZ%&lifRlVJPm-A#4iB;k>eyJdS74x*XFve;RFR z*ha>xlICLzP^6}E+_C#X7nixCXLph;w7H?z|Ma)naV9rr6q$A=ENmUMovOY{&w=lZ zdM1IpUG$q#4{(>-p<`jXxnm%Q6&}06UjYZ*`i4&T)Y$AjlTW7?tqkCU_D|&_0+-W} zJpL^U{~6EfX?DlDvN})O)Y?cTaz`Kbe7mvBHt?arNwU2K>iA_#FPfa3U$Qw=r8-$7 zM1~(U9yuw{-WG0j@j$GJ;hM3pNc5v!5sk5(75}H%=3aRibZ%+q9pF=)A+v368Vpb9 zd+mDES7#Ni6;DTa*m`O=iKmhO?o^99Ao|mIez1nwwzSxYSR0MC+_A5N&Np`64n8#m z(ss8&C+MFW=FVHk-0Iqbf?E6`XJ;2}?4^nTuR1z(zwyaTHGK?T^?-~Fu|ft_GA1+3 zXQN*$p5?YVL10|-Z|>+<0Zm#m*BZt1I~UOG?vnde#j68ULEzk?p7f{)KhOMK+#k#n zp=Ar~heFK&Awc3rR zEuB8{3<&=`e$?{N5EVFnp+Qx2*w~13m#3(16+rDxi?o~T0xrxO!)%cn{b5rK(riF1 z4mKm+V|DMpJR70j@iR$PECkxGw{*(LXHzea2~!`Q#0Q7YquQc~3lk>L!+c#GxPo3x zzNeW_hUXhIjcsd68z-Dm@4m!qYn}HZa6g}tL5g~fX7ygI6)Z_{ABT=vz8e<~i@#7) zv?nS=f4WKt4&Oj+Yk8`UFVObrp)H7qfW%;3UAKrL~=%9fC*3}DiQVVlL zazNmO>;?3spoXY1!>#s)ey*ku!|PUL-m|9}T!!BGwUX;Ex7XV%j894J@#8Ah7JBa~ zm(VAnI93)ruCD|8?g#MQ?-+mh-R2JghawSEm(VSRgWeIolt%_J3Wa*;x!A*fr%Rri zs^~W{LCMp)6DRnQ*VU-!y}(FOTCAjlXl9j4yJ(_Djsy z%C)2Vx~u4h0|)pL{sJZ**!M5O_y1yiW5)GgzK=Oj?v~6}XDe&wK93t@e8L47w{Q-| z$J}2ry4+}aR91{!Mc>}OozJ;AQFVPB-s!#mxzMx@KZxps+ojd&LdUKhNcD0zWwv@d zc{AZ*#Q9c6zFHPtJSO<&|HxqCOdo%`pZis9D2kQEjnzq1^w{p*Le|MLnRU30?7fj; zbYJ+Nf8v?y1-V}>_b2Pu?+G28xa#H!C{!zd^Oj-R+OnU>QbV{|LsGDX#2IkoQ-&BH znD!GH8B;lGgFSL%Vsbr#edZ^n*X`LOAqX=u+ zdwHC7VxQqrAiP)?m_+LZcbis1Ku_&Ec!9K{;kD%s{-SdOlU^o``ZxC4y-#{;*V8q$ z-o)-uV)J2kL8L-kJ|^VDYqngfNzNp3aBS>g{86g{dqza`3{*WC1}`j~+q+kl`(}j< z`;I;s#o4O$g>mw@F}f=u*wLc*Qa37y1zi*>dEFK-Q(0RN2j_zI>U{2xc@y9TwkxZ%d0U zEF_*3b_Pe1fp`XgEYgz;I^)|MN8v2=?LAf}(~UAXs_3E3n}xK=lj&a7oH^$6avIiy z{i@FFE@*>N8<8q^Q(@oYXf9lsVaRCc-#LGupWnW5?%Xe$_=*I1LP;NmiY_^JOhpgI zjnVajr%0Cy#MrJ`c(h>Hlatuf1R<+3e;56ogqXEamFt+C1pSLI3&U#oM+o zf@d*Bc>#yx9DkM?`F2O$=ql3S83LQ6xX7Ie!d5aT~iihOX)9WOW3^Szw^;K z8tVwByyWCOrwD6JPBg!D?_Qp)Nsb>Aqlg*N8^TRV2Om={R0(+zmZL-C9SLU2DGKfc z>~OY%fksFoVS$vhQaBj8(1xI5-R1_an*O{_$>r%+tNJ61$gcE_1EN%p}y*M^qU7<&7Z;})HS60 zfuuj9i_s%yshjCKM49Nq5={j$^FpPHj(Q-xvQfWoiL{#jv|hPT4;7LtOCs&Sf6lWtD`AIO7FMJ!O4nk^qMwLY zgT=x->fPxoZjpX>z3e7ErkKQqQU}h_cofp|4&*6Y{-YjIMSW!XB|JUC?b;!?5Ahai z&Xh)6$>YNBsNO>!WE}$G&Oo{2>>E}+LNPP*T!$x2zKc6x<%h@f4 zHDg4CG;&;C(1+K1CFpm}lGV`PHY?O*FNh1+B_mlOWa~O)k2to!g~O zAuhJ?40w;o;y&{HVwz2lg+F>E3Hp@326tNk*dOE*^$@dW=%tzY09|Zm4>ZJ-rE_6L zTc#sGJ24UXk=D?^wkcywLfoZ?X*yiHio?^VC?ZKMA=&dmCx25%IFK=(L(V{(qbGg4x z`Y}DBoV0fC+_h`w&0C|dDk!Y1EG(!Z$3z(iYswR(eTpJ^`T}?C6}dx*ulnYYAt@VFL_PgF~&|#Kh$b8 ztFpLV^c!pPi>6AatI}|;kfu_rt<-RLG`&mu z$odo-WCESby>?7$3&TT8-xnlt^cMgFEF}pPI-!w=3(!YrUN`GbZVDePS8iDf!0ixg z1fWPKWp)}n8RKO3SjhqUSh?_o6U3{J4 zA7uZRx%p~^cKoQ&FYgn5Ov7-iUG$++MG9oLT4Wp^AOpNMm1dewH%;@(e&TkbP--1& zBfpdzKA+pVS!xs9RUiYKxTksah$Q8mk7?k07wEnpe+1j*3$_z^M%}^8RVyiS=94I8 zw;V{W$$&OXQEnH5%*bnE>WZy4)6bNf4djB}_!cLjTH-1)$9)s2%{NH(qcswqZbnmT z8{)z7m8GTh4IbWw?R4`Yb-ns7=riu?X_!|Nd5Xjra@)}@d}NKy(6(brTI}@+^Iq#? zmSsw|(JvKC#%dA_h6HW?;O?;_+&T@>>e4#7jfm||UX7{L=_+HmFQW_vvGUl_IxC(o z=MEi^+68wP=*HSa0FIsJ>stvphKaRcPO_pk!#zBP$3$nkg-W_S_|5q9SNHH<@P#~T z2X;opnQo>H&ub_Q=K>0I+kM&QB{-tpJ89bWNPWz_QIfn*W+|6%SlqaA)8fS&^mS$B zwYBACb;Q>s?|Yiq!Z>N{I6WMqW!&LI(vHDSHvFyr{gV<03`h(WgwQZS2;<(m|BLYs z>F^NkNCfn!d=GLL@6i@Fh}oa>MKj{dbyhm)JJSZM7xc&HN@vqAHY>U51_O88Cv``; zV*57U_$No?^lxygTso?`3YIj&xrjHoC#LUP#0f2Y8gL@aejLzogb>7ou1!qQ9iC-1 zlYX~FIh~8w!`J0{J$P`sNlA)|DFU6x9e)+=x1F$p-v5T1Vf>2eQ3&g2G5d`c(REA9 z-DIMCIaeh_@JhPezg)L{vDIUG(t48~=5WrEZ-L(3@Yt#Sm3kEYL#|=7o5x>Q5F%TpGbeQtW}2;>-!i7HgvRrfD3^**kVH zpWkNZ3}(L}(PGMXKhe_;{d7m_CH3^XP0CoZ3w>7wT{qZNvV`_fNMR`HNN(?Lxnqcn z9ZyPnX-oRb;>M||KtETVJc(;J)9(iK@dY?BPiINLrLhA;2O($^55`Z+wfpBu9)R}~ zOLofbHNe7}R2?~^gI?9YX>Un4>H$94ILWpxa{Ev(o)oGz`39L`RJ4Sqg9SOMnmU!q z|7}SZCIjRFvu5pc(1s_({Qz!PnGP8Fh90->O~5PG+RN$sl7;C8m>6*%x5v+K*EpEytt>GYUmaH zdOcBLl5gyUUB$}$?G@pe(b(uDFvXP!b%tiqIIdGc?vJdU6l^5;9CFG|(?Gm-44+ zAHklmT#Cg?EO!x3nV3&8FJ}ZdL=J~bZhXYKni49jVW|5EPj<%kDU6fF=EvC?RV<|f zw8Wgs-)wE3mN75OxmwUf=`|gtI|`O1eUy7kyFo_+TP9Zi?$ak*UIBsYwNp!x)p` zp`!C&hhIE>`T6vUIk$qjohA&Fwz+8Uw&XyEn1q{jC};bk#VqHdGpAR$U*h_}L5R!m zZ3mc2FT*d@fpjtD0#62;5-jjWEaWzH@J^JoNv}Z4U`#-RME&KiDjnz3)q1*?8{n)2 zm+^jT`kY}rok?c#!{!e2fD<5o!vMJ|b3U4BBj&lq-=;4?YO0>DB-T3PXYdx+8ZI4@ z(|^Fobi%|W^&$HCWB!mjX<~vksyyc5;Z8F^{@l66SJ^kk?;$`0WaHUaVXS?H_&q(> z*|?wkp-*b{K>p*8`2jVl_Pp^iYtTeKFTpo|!R#PAL+lIq6<9Ol)y%2fekO2gWBh^h z03>9v(Of2+SYXx=U!EvzQk_?kz)eEp_`Wu1;^4a%;k$n!3Q6nlnq|-=&zo|)>2w8A zHYc-*H3&Dmqa42fmpZm6E~4(83975bs=A22g?b6r5`rKvWZ?b=S@^M@Otf0ayM;6) ztuwTy`PZBBjx*>A9jqW5RQC@D((Uu&x>!ZxtTN&AFUcU{pu55St&S`0%`aHM#}~&! zHoM!&LS@H@j>^lq;dCGA0cSJ_?t3%+=8XFPfdf-U9eG%;HS^#EdF%9X&n486i$2H& z6gz+mAIPUG!z}aZQsCnx@L^M_Q_T}fz;}c2@z_QoL5|*ugXQXoI(1_8ov5}DmL!@_L zfRA_2p59ESQU87u^V3b7gYH>sAG4=76!x<~OROQ4B?s-ufW+zVTt|Rd`Aye%VgkR7 z-XQ_o_{55MYn4%Q{yej5`0YPIHq9Pqs~u|LjNFjJXV`!lw z%ySeTHSqwqNJTRPv7&y-mL*HJES(7~FuS9gHGcdo{NaArB}_`3Q)CJnV( z$)`+!;+QcaCMJT9iDC8#&-iJ!cWfrZbpF6@v`$91Fe7O2RzbG!7fIH_RM(@y)rwVsa|u0?N(Wuk4g!(;gMs+5Y}R?NrXI`sJGb?!0v zd~(*^0VbMttOLp`E*rPO0%(JKtpDHxS~stwf*vHx|SDYxy>M_RkWP+O*)%Yqni(rye3C;RBz%HCsnJ}7Ej948C0m!CNeA@XDT!{_MZ z_=CO2c?CImQ0U_{(Z#5ud4VEXlPC39f8hcx-0T9YTp_oMR9RIv=*#CTA@|(PxEtKp z3A0t?9^GXYywJH%PwB)h`k^bV8#yhNa9+k;fZ#%)jmN%E2$@aq+UDm7 zE)xsovJhwG)=iR#?~jj;IFkeP{eV8S`@ot#5zDk`&4@7D#;X4-4ZwY`zj)F3%c~=7 z<$w&aSY{g)ZdI|_P&8AyDo@*6r|Y8~HPF+L5xVw9HG~^S*;9lqfeRRK@ zbcJD-G_9b$1+*RfgT8`1OE!SMqW;(=`$(s+&=<{6t^#L&?OJg7_0`2iRaHgB)u>Au zVPr2oW79jI=Yylh#wnz*t;b%0EZ$q_??d`fOdUo+Od{#v4gL)WJW5!!W{O8zi5E^2 z=yDT04X2|XGa=r%OGe7=)Lo?+)w;rT1<5@S6LUap2BzbbsZ+H=Q0&zHGOG{=IXyxK zO8BLm^RusRf?WI{m)e=p^ni*g=o-icBGk4txeaRxPhGOH2B;CzUK3pCeUc%!^NW_| zRB7_YDvrWbSNg(KxBR_O&?|8JWw%DN8-%g|DouyvB_+JSy0AB=2zFH5ylxdqgQ243 z?#^ml4%zYX*$xq;hU_(-DhK^XKE?c#1bnO*d@t@_`25cll!eAaZpwE?b1a%#oK3! zrc0OjDvwatjOdtLclVr_s0`Oo(m+-kpF!FT{ly-TbNR`%&#l)14@@#L2}V7vhTkN_)Vxs-ex(8 zmyLyO@@AehkA{)^Mn}hQgv>KQ$;fO6d0AC8l6gAgU-gwUp;L*%2kB0m_!7O8kJcCU zR!BoTDfZBdL?-M+C?%kR{;ve+bz)f#hW`D$O~NaXbsZ6(O`XuzcZycYO6MCUt+Iyk zSPuwPA*n(R+02{BcV0Xb?4Oh3y-PCnookrPnZnkExf~moOAxI+>S+t>XJPkXZUvY2 zH7sq5BL_=saEy+Wlx-jjs5SWA2VfppK5@cyxMl#6=@LD!D45K9%$O*V1$UG;Tm+}K zFk-$HyHC;fUNXs3jQZFKX+xsWb%R8~9=f1RCvLEnp-iPVL4B?27Ld8d>tz)SthoiW zABa^B&bIAlSY16QbJFu zrcJ|r4Tdws+pL_l;Ki|FM z+~DS0!OP*@90%5ZEJlH3%>(W)A+{)1HC+q@r>puD7@*J?Wu7S$ z<5)3{XpT978blH;sCc_D91QgJKb~ehTJ>>rBtb?#z+hrRf@%i_6FXGk?2Ey~uRC_& zdO8?D?x!I~VGs7sGEW8uf&0+LP48}N{2^1~2)VJ-Ln=&-# z`yMz`8h@8S=NU@`a8C`1laqPA-=qZSyqELuA?BdC?|;JgEV2sC>lD9-`wtprHyt=c zZTdsrqMPl{$T)~2`M#xbRw|nO(KOZnCa^m|jQf9sZ+kWM0JV@JXqaWwm^tQ$xC5Ba z!2C*^0sn6?eJ3OdLehl3&^{OPRv8QTuZ)TSxGRRWBF6i_L46Oi`z+#VNk|=FIxOt+ z1D4E~S7e1nXrInyLfrZX7ti=1yT#5q5_onZYk9afI%0Fucwix>Z$%e=JPm_Df5cd|LQ^^p zdeTUmMJHNd1cvy34;mB^@lH|&<8nfxs^C2GZY{f-zaB;i5faENAi&EjAP|lr-q{#~ z{{Z`C!mAeJ#AaAQ= z{Q00_On*-Ut|p!b?B+Mc^Jb3Qx`IAZI?j6bBR9lJY5b)pR1DG^Qa$paVz3uFC!QMm z&x8{YY8{5||+$ldLCEtnNHDVn7gq@dw=P9-~PXxAtEhi0ey4mFz#h1_Ko)}UpQw5=aWin7cF>F}>{_ulMWP(-)7D>#xVtz!#h{e7U zF=_ssDm%5KKxB=McpGQ;6Av&K&rb9Fxie?rf)x>-BvoUG}RBGP3BR3N|K zt>mhqPCfvKC!}*hG1Qw92=oxV!iU3~; zY~H#`MI8{E>kbSaIg@8F zU;jOnZWA5~s*sl|dFl=jhLTK*Xr)@{yT?2L$_sPY=>IhH$8H3?yTFD6m!W`;2s1PH z&bl^my{I$S(Rdv2%V2B?UN3l)Htd`zY`Gb#8u$(ys>d0l3#=B5-^RWJ%$l|SeoG6+ z=IPNv0Ak@l48W`Iopm2W9B&RDtCqzSj_7ssHc5m8(l58R0@ZMGmCoM@!}Pa9Rm0yL z&zgMS&x@ct!;MDJdz_=kdZ`lVKPNGBlLJWXr_av0@4bi;TSBjMy^J@>Q`(=rf?N7P ztqOS=@Cd{adKjm4hVLR)0M@v1T_W~h%T=MVZZ3RM{;ZN=K3;NLY#=Y`*ogjM;64E0 z@M`t}^xxfZl?5oDq=O#(WSqOe?|ZeDSzC7LdmRnG#Gp1meamfYLq_lP`Kg`r_xSqm z8`l{$=~XV34mnk$-uYAu^YTfheSCcp{4U(J6bF64Gyx@?chpO~KvoP}v01nNbGU~o z-H)H0^VrK+SV}hy3DLzH3rx9$z`DunnY^!P0qBOl&|X=;s&5VfOZFy z@|o@-k`QXk_V5(cRZ$jL?`^3;IOWxDndq^B_PT<5+E{$Du5;DK1q(K8Sg>$|p|-fF zuCA!K7Uc2-?w-sO)k5j9x&Gm+0q1UDR@OkAk;fmP7z1}P;2D8TSf#&}Ou%o3`_~eT zmPz8LPf?i=V{a+_dp69+^M4PWm*hTbr;pE$QLda4L=gWKuL^!ioQ~(Ef*|E{4L0FU zBm49j=@bsh^iHsDEu3}4=`i;@TAub+bL)&OjOD`ySVMfcjGmh}or|5h(D)K*e2+vU z!OvBE&_S4fb^lDI`i$p4`wS*f;Ld|JVht<@bQ$qLaDvE;3>z5*sZT_P^>e~MIRHfL zwT1?0%NQ#^_CtOJPja)Q>#kqqL629esSbw3zx}I0*iP?E@eLCrP z@#NfC{s4R#2s+TpAO+~M!(I@;_a)|k7qROkIr0M!#*_t&W5}`JWyx26IJ_iS;`vzp z6=do+FC8t^pGpaQ0Z=~VAH7&AEWDEiSE>}~z0ramyJy>^=1qLzWX;{f83I`@*LX=} zVu?8b>lGs`rzXm*50(pWk963$jsmc;6cP9kScyFTWM)9fDV}<&+`$Hox z_Qgd)FSD7x4`lwrS?;eb9$H%b7Mmc}%n-T|uq%`YfT5m!0Ht-%Xh3N#9Nz2NN5nQ$ zzUJD9qTm%GfGolXUV~RB&edh{m3tEdmjRTl4NQ8xKjQMnar~@{gZ$ww-mquSkVg?0 z2yqm}`+#+so6a=ujHzA5a&JWTNw3kRfmx`Ib&%$4QFJ;fnpG~1prr;`IT z%f<-QjlQq?@I$iYP?@mcPDT&%-Y2SW&9pCqe2_NYM4q@q7PKvHjDMp)Lr-?-jrRct zW8}t6`Rc2~i$X{q?99Oo7S&ni_I&Pq8rXqhUSBoA2|`Nr`$H_0JiT zUSh8|bOAPV(8iEi^8v*MHKwFNqe^;aWrHB{5MQeSvM!K`-8;53vC5XOy*9kWERU?y zsR25WhtWTwIIeT&xZ(u6h)zYRsYRV4$odz{goXDq{K>sP1^Nx+EBc?;One1_*67;e ztKC-O)?7jhU9h-a`|s~b3yDdHHHgToBV1k5H2O4W_u+a^63Nu4B-kXq(I-;^G%t+i zjop*7g7o@WL~n`G>l5k#y(KFqCJ!3_w9$axLJl4(;}`r7HulP={1?C{>XeAbigwx? zG6$FfV4cHg&D!(m|80+#u9-V$?V7oB*J!H?3aX%Kxatrp+i*~}Q7x3scrHCXH5Cv8 z%;0q-ZhxsT|8{y0a`_A4DeSjs6T~~DwZ@q|JG2OGa1#ioU?`e|YDB39@ZccwtMUCC zpmS&sOpHtbQy|o2@iZ(vFLZ1e`E|`0zW(i0KeFwra1HMk9&lQnz^6dWPMpgIGmpP9 z$KSyjjepbif`5`Y>1wpv8siVj#c#!DtB7x`r0R%1kC%8s;qF~J2Cl3lq=@z<-T3wN z`w5;sNXNDOLHbS|jHOt0P=VdY`%=Wf!|4F5Xo1#Zi%_$Yw7zR33Qe_ETWx$fS=MmA z|M1X8uAk2M)3QWa&9S5$9(;s<9zP`C0mA3z7sl{2P7d;4j0m3}zA~O)csJJv=n7!# z{aVo#R|zR83%YQ^EhQ~cXsb1vYU8maS>wfi!$UV3I5*?LnF-SBqlwu_x0_*VHeZ)ur*OtK(kZSRl;4lqU8>BJP-Z-#wsuiZ@?-J8!A!YHt_w z-X9gE5VDyQj8|$BVCxe>5?5#+-~d)jK8029HHo4D;CQZ?#6kDpxM8vZ7n^v%ySII5 znC!g8i4*xip@S~SmtIQE4c?+BCn2w1*B6wbZAMgeZ5I1PD`S}_Yg4@u|)~B@ws!*MikM^6l{;k5DKPWcIYdO zIeNe#^%#4IVUQk4kk-D6TIva%o1VAHr#BwZ<*W0B`m;m)=wdVQ3&N46rUD!(S$TY- zu=w+l;0`jKJtgU9(woQ*aqaDvnZI`Jz6G~(jRm(kA>$BlTMt$rdcGMlsTQsN2z~dj z#jRC=Fy;3}gwkD&dBXHp2l&yM5R5=hi@|mY0)yVpiD3w(8iehFhoVY_dDnByI(G_s zfSYwcs=ZZM1}Du7TNV!hzR`mD?9k<#8yYrkYG~LzF9A+uVorqBj8cS)DV+f};n7dm z$%D_H(DjX@h3Ur!`rQKKkF^8BqrY(@$A^AtfnzHA_Sq&~K>N$w8FrJKEmM;LX8!#` z_|=w&{}h2u&$Z*?vpqfDgqhhzoXkSs^LhUhRI!DhKNo)KX?vdjV)ZP3`M>%4f#5f! zz&?n6HclROfY;60;J&XK+cO-W^YL-|!ps`+99 zp`QuA^xPLSPxlMZE*-6=-64i|dFN1>dj8!^|3UaK+|b49hR8Xf)+T${-z01F1Dd4` zXV2muu*j%b`rxzS*MEB9Q&eR_<-hvj*rR=t$wUgVhZn^1IL(KGfTv&0@zryA6 zQ7`Q|j<_2>Ch^2ccMC#m@?}-7f5O31e$;^P==P-$c7mt66p)Xs1^frB74wTSNmu3p zz*^Z}TT(Ym6aKC#+ju5yd~goZb$`+LMTTPk{gEX-m+CoUd|T4hIF}e^4i88(7Rj1anop5(3qgnLLeuXKKXlf^)0K@;RxuY3%W$f#A@gtS$3-Xp5Ux z+A4Z$K^gWm8>L&!g&MDupJ~52puO+o2A>HXAIgnA)h|#3=>+P-pnk}fgJnYAfN!YN z_1YZBH!=Gr(#1V)_Ar`gx7uTiSPt~+&9JiI%wh7CAGjPg-pi5i`EpE2&t(7sB&Gr3 zWfvNDx-zRrpS>k~Ucb-jp~ZRpjMq{ECLs`z_(%up^C^ip*g2$+vs-wcEvZ}VvH9M# zL`QyNI2Q(n4i^1^$IHmX-Y+4)abRI41J;DXIo2=WdO1KmCujI4zF01l4JB4|?b0zq z{hKKPbarxSpTNN0C5W(DJYWDq14+Q&hB_6qy+Qx~A~wq{3LIV5lWoxk_ErX@4#${a zHe*DXO;6GT_ss2OgW>Ja(qP!L6tv1bBoPr=T)ej#vN*tPMn?m(xCpmN4(%)EM-Tad z+T56&0h@`rnN#q7l_*Q|l!h7YMYKN_=hgE5Zc$KsqQ4McB%WQ5qo%W4*0X-&{P`O; z%%8u}P$MQ85s35K#}hIG;t!Sz#Y29>BaCUQfIAr({TXZ!R?>7jJX#=AHRNCsFBRXl zz`ttRV~EZ%1+Qj7gk{FjD>9frF@h+qG`S~6k?fL+e z@qO2qK#*a@!Cd*vNr92`NAgBn&Cn24UY;sAO=}(QkZUmHI)sz+TMPN&13#s9Urrce zs@?SZ=Nw=gi7_Sm+7|b%=;`A>+hD8Pm~p+*a+Q0galMUy!@Q3ara=##O_#5_-szaZ za4Don#eF|*Z&FX8HcOyt0P_Sm&u44K3R#I)Y2<~nG=Go}4>6uCvpuZOw*%Y|;vL#q z%pF=FPqLgSmyi=aIKgW1*`!!W`HqgWVqzBgj#iOR;Dx;|^y^98NBuAlP&0|cI=-QZ z!~^)zzB4nraW6t832O&$Sk!IAc+%pWwTL4v#4nL+jIV;*e4$@f$UGKHHYCU{M zPb2u}f$M3c0D!S|*=TuBfhu>8Mxe*tawx&yxL z(AEvcYyn%Z9p_>^GB_Eir{snar$p)GLyol?&4Pdt5#**u^YQxvA@8rt7iPaT)VI?c z6NQq2-y64)xLKoo$WO*9AZ^N#nd?=KP1dgE%G=ssjAKk|KcA8fu@rB7e-bSHphJyD zv(RruI6SG;7p$EP`IYX3lUw)NAfI`#{11gy{iW@W^K?$}ppH1qsMLOcvXdndYi z$tZOGeeb}t1^9FUA05qO%Mei?E*C}vo83RE$pbdwykK7-`ayVacs1V}O`ew7(!n`` zUKyDjuB)#@`wOG9rK>)W?=;>Vr#Sk3!Gs8|@qjJ7PzF9%)}$=&@ub^Yb^nxK!R1=0 z-bVj7#dqr~Ia!RJ*%!h5CZ3p9c9nH@s;!!|*yNAAyuZf_!P)8Z7v7caFc?nKO&Rii zUyUdZ5KdE1+H0VyXZs(IC6;~=0y4H!5!%lGLOa6#u z^jyIF6t;E&Y&YJ~xOUXo|5$q)I?TO%pvPjordM2%Z#NiTr>jgi_5OwyH#K=};o&Jg z@S2VZJ!IT}LQR@3>cq0%US4q}i5vAa7ebo+nY-I$A$!2V<2g++fR zJ%jP8cI!BBl!y6k?&wU7Y#S}SCC~Vy)zY!7i9YkhSy$usmJmV;uet?HaeUP zesvK#h{=JDdrJ7Q;N{f6ETZPXL^y3sPR;kDSh0NmhJ?bj=smI%-^Mj*1$oH>0kJC5 zXS%|LsGq+p6Z_tSt1@CrTDMOQ<_;#;vGD?O4XkJGEURxc;{?HlWyX#ptY3-&%K4Hh z&i;ld$%h6~rzcs@o{;6l+s57CVfTz;moiS@ZRd8l4`(a(8qj&AJ!sn!+y^OS6j zy#U8p3$rj-N5O~-;%sz5B0-wORM55sBP*4&Lz0$Z+Sl-#rb}hsf(Espy>J$9eKnXWguH<@71E8@>0Vi6+jtKK(z^WKJ5=)Va4o z(^rpkb=*^*xLFzUSu<6%=G9kKY?Vwd_g(XWku{K#3t(u_iz|=sV7+W zf{D&x(=;k9Rz&FOMf@zfc+9d;`&wq5IDh>PT1yW#3&hSt=W0*h@z52IP)wW{NPN?K z_fE$jC*sMZ=cn!!6bUe`>ZfUG5fLu}?i^XtEv9;qbz*4*jrp5%S9e}!FsOLFp69M~ z*HjIZ*OVHQdi3z@-lIo%&`l9z&%AFCyZ!sViN0jJJLlPiy7#-Mu6D3|=6Drd@$$<8 z+0j`uGfi1DfqDtY!3-l^z{HbqroBUtRn!;I%(nDJq|5qUJ_T?Y7mjVAj$|{n0V#pn zbmLNtzj8f|n>c6#lW^T4C#EQh0A%U4ty={$qif`pel}&$PJezpe|Z%7TYAaN9>#kh_S>0JPW2klY z1Uhv5c&J0-piV0f9~S72m`t@w6`2`h6Ye~^U&?5Z zpAyd3FlF^*lU+Om@_WYiHK-XisnxzBf1y3wrML$g~w>>_#*WmOul!6as%L zw+r)8a|+dv(%SDXzksUEV zOo*+k)|;DGTphD$G$3;Qv_V$D#ptQk!8=MPt&{auGDKfr4-hV$wX=sQYbOhIw$+h? zaytMR5gO^Y_c?v2VQN1`a=B&#RYRAAl+6Ujn{tb$T6%jtHQQ+uXP|TzjJasNxOoe5 zV;aX;)zGKw6%)BIYR}N|o>2SkcN7j9cQbpBTq6M!wgU2hN31ri1NNNl__{ZXBiS(7d-}pq>2J067!W8W#$o%8=fop4el`XUumZ&S&e%i(Dn+r1Jt1b)BtR`{+Ku)a;4St?BGr_}#FQF8D32-~W_5_( zvvxIY&CJb<8#ixmT)f#ZqpW=T^zyP9T}-QkO8LD%?~-31{!Ry4z4D^WHq;Z8+C^WR zW>Z;Wd^%(ZLxWXCN2~CMTM}fLkSL2UjRd_$Jgx6wudHDm-ePUlY>1n$3oz3y?+agI zZ|9+Lw_mz?RLsJO(mC|&?Ml-9p~61KUU3+j*5IlL9I&xiF=llV+!R&-^YORLA=DLc zycDXzcvZYGU<1Z=SWo-_-remE^l=)~U%atUkEN~jn1wwSa)Q(4OQy}Nm3~gQNY_?= zd(qZS>%%n`834rkmDP`w4jM=6ql^`+!?KQ{-ke(c(iIQwtYPxHDKy}mAmM@yQ&Z*1 z6`Fcuji|Rcn`6)J2gKeoy#ddnKTG@D5`D|Ox9l4ACGIwOH7qHv*ML~QqB~(sKMvkA z@iFdz=-asck-{O`{U}s50glTpa$2fl0yOpQx7xN@2Jnph^f&V(E{x=?0;5a%D#n!+ zvKCsXVxA$4&NgS8Wq6@Ymw zo&z&)a_0AVL7WcrAI>h|k-;QQlTDXeum`0E7Yo*KAAccl>W!Ce7=xeF%}xAqd9+Wi zi8bg{)sv10^+%G*WP5f2e?FW*O59`W1_67<~N=p}tprD?3N`jl=0UhUjsK$csfCR1HiTwF8ad!=Kv zqw*Ls{OizE#M?|AS}8raPth^dms6989#PW=D<_v5r<*`9xcR}_iX>S=v3jcUftc&i z!+hXbb|!t$b~c?zmh52H3d|;ZoBkfqoXF5l{yIOGH{h*hU9I*v$aqu{t*xuh&Gw%T z+}R#k$LBdremPBmx9tF79e;Rkt}gG;RKz?7NU&{`ZNOt=n|EMo-s}iF?-Y&hdLD?OMlsCT#|!+d48A!X5lB zVw(I4=Ly##_ip+&JI|Ot5r5;~lO_J7ix>A1>1fkwI>2Vg^~P`DEy%T`gOBtM_pANd zm2>9sUGxib_`QJLFYM)KBMqDrL_DLf!G0hW6NOf!kdT-VCPBW^JET(+DVG^^y^g+6 ztjFpG*|4NhaNG<-P(qj9FN_xM-W5)NtY+&#oE{^a5NMl%MdFt&iG=!aK*x)Cbi*ZC zJJkT{jKcUM7i?Sy&u{;L*hJ*(>Qa^S{OOY?s@$Tg2J_X|Ch@n+_-c$4aaIpzCLsRl z45x|*6pPeNp@)1?GoE*Dm|0!HyGPXy;TJCC&!1u-J+jLqtuivg^9*`H zt=Fr)d-U-3ghUN2iS3n$6NU3SZEA!Gu!rdb=pI?(O*)GLbgpIKPOm}Sv6e_YK_&bk zMe&Qn@})Jid5pUOyXPk9wT-Wy!yBcSE&)CB+~6M|LvcRnIUQsgh}6I)F{{O%U<0aM zx}sE+PSs2*#HzdWPG<`wpFixEG}hIqJT$Y02?q}f)2mgqS5+0D`PA2o>qNc(8R(*~ z*tW(X={6D*B-k4j)R%PjWM{#-4iTQ#E@;R!WG+f|E7mX%cs>y0>M7i=5UW0a3R?sHAhVW6kSy^fT|^b> zR7Y3LShBgXam&&funC-(^iF?BKg^s7DG2VV!^#(C&)_>7=4J{Dq{EU23>!8ed6;y8 zFl#1n)N8e-N;KMpvrIOaaWF|n*6O&zVX}zk85TVn3K9YoNhe!Z(%Gc5wG0L5H%0cG zq|OEVA>S~rbJCn_1^oktxK@$3>g#!XZQ}^|ug>~8+59R#I$O*(^c(FMZWEIg1%Jh4 zf{~7u(JMv+0ys=4`#{1Eqtf zPC8+;eoe6jDo_EJIo}`z^<9unCc}xesAc^t$5#~PV3Gsy{zb{?q*fJTCZEy zMcDwbK2{8-^cjQo>7)yT*HAy<3WxJB!FqOVI9Zu-<}*3adtRt z8Ssbka&HrV7%QXq&34U#D~mriN$c!F6?j%U77ljjmRwfYM|Y7<-lVUn zR5py&Bm&}!77jqx<7Xw1cE_f9Su-@H-$te=~m?FNLs-Ta|D%452 zZ#Q57M^q!zFP<1>QC zKX(pR)QwwyMd=h;X9o>RNr9j6sHkxK!9DSSI9bF5@^3~@MK|K#4w00_ z$!cE-r!!U#_pW}~y3^2pPS!QAC>?qQNJrIbYX>Vy(O#WyuL(Wf zLFmaNB8UP&^@d6L1)S}(uRarH=>z@;;wQuD0*~HY>o@D|^QT%oUt-i8WoD~`&UjSi z&Q%`vs1Q0TYF?Dvb_uc?Qm;*&Wj!B;4vi1L*rC<#0OuJ2Q{Nz^1w!ZA3M;8LH$n&& zM#ONkUJlB`2VnRA1VpY|WTWxB0l3dT;J1iavu*K)CdWc>P1-AZF-=HD{{U~{UAU?v zN~iIHJMh-AYp~Vm3A&Nvm8*16McDX}iMKLt72QTAOc2~6D+gIwm6QuTqY3~mEZ9l5 zZ?{za$9aKFC+CgJrZXM%fwK>@olI`wkgYMr8y3f@P2Ma{zFB%4aCi))S9Jt5uGqEu zh)k3o;}A+6zj6M?t(>*-XA`3g>E&Zmkiol#7xX5wtXw`IEJMx7g6x%>H%R$!kB^CX zE9Y%eK?7rOkEI|-#2*)VMGQqKaf#891-H$HyxEFElZ`1*!ZZ!2AMSI62UmGS={Q~u z8~u{pHXdY&`@DkdZ#>4?(~$KhaX#ca<3TUt-GvFsR#v(Z;d~IEr&WSD5A3z#pV6;X z$BvPiWUZ0vTkweIA_A&y|HdN&RT5PZw;O{gbW6;eZo#NSMt_k}_h75+D&%yfo?JD+ zOs*XbUu)v^8D|A^jKu}OYk9Inrp*cGd-20TFM}QA+csONz8^ITFcHei$SS~8>(~c% z(;NElFjtBd{bbDG{P%kc{~>MjA!jw=0Sq;L+z`(=oSVYTBci4c$=_@e{{)qN3-Oae zTnd3%{|DW42wDZ!Grp>`8MG=lCK^DiI#)kUw1SWJlIq zvvDp?>%R87($ObcR=h#CxYBx>feSIN1~W93TMT&S1FB<$ZrV8+5_w&v;HRBBP@)KR zw0ZNSO#R+1I3gUw2kr!X;54P#+pyR~v^W;$SwyH(G1JMCFB+xO44pf-@ce9$l z04{EV&mItJ{AXtNcI&BeUAQ$|Kg@M_sHgO^vdS+Lx~oh2T1kQ(r1cl4hTkZNm@ZL~ z@-jgMX9V$^-i3EIaqeA2LS=HXV5pT?;PhGmSp8@){?NNCxAwZVQ%PFqHP;mO06IYpFUx+HMbCkh&@?$V=GrRh3^twJ6Iy0QqKEERV0F7Iw^M2d&F-WfLR&NoI$(7 z@RQlQpAx8#v%JQ0R;7s}3!`FjUf~f{CMcH$(#Bc^hIm87Cf@Qx}^1oTMR&TUrevlSKeglh6+*d)-MQ!Gx$c?%Q` zMCaf-!~F_>K;&AMZD#H(aSg>#y(bAWMe5h|zZkBODLdBk&ih~5xdsCDjio%iA~g?x z5O2o^dM_iPj?A)f&Uj}xQ!tSdhZ~x_JMi#)UFba+>Ag){yOJ)h+zsO7R{e1$%)SQ$ zQkJvv5!v(=@v2wVO%vQ2=hRjTof_w>>d%z&AC8E?ND1{2?`SpPhj=lZJX}YM6@eXu zTs1C{oltYc)NcC_nPc6FbnASLI4B$@{m<~g@GXedlGXmcTF7(AfswXcITU-@_xS(9^p-%)>)B-Xp|iFwbYW zxekj|rFDW796QS$VqrgyL#_t#1H@A#c8vmTuw{+KK&mJ3nq<3w&;RfTE++&AzYv<4BJI6H)=Xv-8yrz7fV7m**zSlpuAr|}6 zgxh7>?^e;6IdS6eFTG3LI(iTfPe#UN?z6{5IvDiZLl&%DC3Nh)wH*G-J!w@D&#!wR z<}grS4ct%geSFi1;SHJfw&gZsdWOCC)r;UW^)7IX+H13d3=U|vo2?6R^}ImP`5ak`%)5|9y08$g8Y%o{x7swv|!pwE64X})LNRSVAkGOdgx31hR z;;3{&zMzELobtIlqeA7}FsE{w%00Sns7kf|YPITKIocW#-{^OS$|Tz3_V(hrG!NLp zC{O?r=m%19w{s(I-H|-g0(i*qcFq_<7M))heEVZ!dSQ{AU0BO^(k>o82jk*-IfAh6 z%wzr9;&V2Sb4H8e;CDD+0DhjhmJh2xH*0ct8=b8*Bdq0$U zStQUO)yt2#!99z|$r%u(#+b3B$m=iE@{a3P51FauyBZpDdHxi=qPlvO(J||bnB8ik z)3lX%H&{A!BoIz1l5+3HP83oq)*)Q<8F1O6$$7}`IIdhVeLmmCFfS`2V)3k5bSb}h zu~|P6H~B}{AFT7YP0egAEe1A74?iT@1M_NTYq1Ch?y==%+Svdg&6-tKHk%x5Xy6?-ZWubtz<2K5I8qS)%+4M(C@X7_IxbEf6&nZD z2()D=|Gyb8?Q&v1u;|*5p590u?54#|=UX;ikauR!P}#3oKA>8o>Z+fUp;B##CiAloJhdAKG@Qh4v+F*xm ztGO!C#l%#R=mBG`gM|p81qFeK5%91KP%Rz7m3Rdvx*V=#$T!}~Ees(w;8)@-pc+6! zXv({jOo$<~&i3~wnu2k>vrcpR95hOdisT1|ABsfNMm5{wG%zh7aV=31R0 z-+Vg6qX zmG6HrrnD!#^!SPvP@JC7fy*;+GmApOMGPi4=)uN3e&!p=J*Q5cN)M`PYsrCq01k6= zD6}1lay}vHX`+qw%T|=zFa;J2Jk}Y%U^-M9xMxvDEMUk(|C_Jh-a-#!rhN0QoI+s2 z_!2jmuEBP2m{p|p@kOydKCwmdb`dUx{reZXM35~<%7q2@GO=A4WTA!H@*gICaE<}( zL-QE{S+r*rEZ72_`wH0tq@D?z7X5#WT?b%P)zaqNO|qNbDIx?2NHvgq?*@`BAwcLw zAV3I^0D(a0z4s1+AfkeT^{I#mNE4(e(xoa=!~%$bic(Zm%02wwoO5@x8^U`(Jbd7L z+%sop&YW-NOj)q%wfPHHx~B{nFm>vH0aMm=f-*ofpzLoYgui80KYib+bDLJ3JGG`k zw)6tQ+$g!Dwi>Vz?GT^pC}L~CSDtP}k_**sX@iA;E54noL>iljBKSXk-?-un2q8@L)JTX}!Pq~*V zr+3;8e$}{(QW4ERel@O~O+3h`}FhxQiAuIEglQ2s#g79g@v`oYl`m*NvcGh`FN)3@pVF|qrfB$2_l&T*F})i%?uEwO9vbM4B}T;H zd})vx4iZXCEmqLbOlah(-NMQYn~|mPhYTm3@rO#*jLfomZzU$al~=}+@TGp9U8v1Z zK1GBSy0eqDf&wi$o0{?EHENVcU0eO_T(m%8{&TBNU2m~cE%~M=w5YJ$Yr4?EeWK3`=^!kjsKP~_4W{L( z<}sjt83_K10GK7r_*029)(uQ=zqoB++ZQlNcB^Bi1OK_H@72Mtn|x1rRQ;$h_RcrI z7hsnPFLbt#!hA>?LGV8M z0irUSH$1eLeX#X_#xIoDqC)!~La)98(>|>Y!H+!f$!pYVtLMWZ`g-ELJ{m&3dUr z$~bC}gjJ9?&Lh4%!@fIpxdH#Qygf2>7(bxm`oJ2rACIgni2AIOcjR-0cx1lBy=t)) zGPjR+vF%Ran!kB7tW^Ej0rvS9=hOICv{FB`JzA?#H+YggrsxRXNe`PO4}3&2A>R3# zD!gv`c-S5uE_QWT(!$pE#cX6}bai)qwt1QS535yOn@{r}_pv8WvCH58-i~jNj??0z z_}fhj9M!5h3Npj%#TK?~St#cRWW#1RH{}N>w`7ibuCvF6L@gGF6sr5}dA1JAI@=o} z7}}VUzv&S>w=@RVx;n;|LF+m&B=qum_T7mKP5J&O^r%q2s#%v>85!xLD_5J4l9A!t zy2w$#YuO|rlbs@Op(r=HM43De?L$5$aj!43WxbeXAGv()tXE!{HD`r$BIZzH9wjwX zz4g~=cIlg6GWlmu+9Shup}|2b^rusuPStF1AhA6f-@*=%H!iFwtQ@2UY0>3MMn&1P z7(YA^f54%E!1$N+lXkvYg8Y>D7;$b0leaOyB_gk6FMVvLiBu}%>oCc)@B`?}9as$Q z&(ddUvx?z;iNo7Kri8=s?GkXfhxYiyWr4-9xLB(=8h^|FmK_OC7Wg;&M1LN_k-*G8 zHbwI&EEyHgW|Sj%djQ7o=n5S2d46!e14A1rdiq@aNWW!=RjI=`-xm{aFCD|)T96{T z5f$NmIb*Si(>{KXiI{PpAmU|WbJHR60Oexne1tYwAN@FdPW}bicS56H%;+PH;+S+c zeh4)DC@P(<&Cq8&ic8y}?@SA`4sJ+hM>?7h?=E8Krg0IR`||VP zqbI>P-UI(e@Q#&1o6HYbC&1LBxQcnVQ;^p;mSof!?;Yer(tap%S0oN!P4ygV zAG<<#u(`3vq0}YzXYC*VSD0Fa1L?e0m2ZDuh44^-{r(RuXcF>Y(cnUTmcI0V;=wHR z*`l5hl!Fd$Bi3tLqp9SE?mzm82dVg_-4?d6wOO2BpM9J<&*7Mtx@VrUktc>mHHZpT z;#}Tr^iM?UU}wsLIr*j=hgf`w0wGrr5Ab_f>oB0o4VO@w~Wc?sHD4% zhXxC9yZHm<8ebb3Ymbd&^D%q?9pTwW8;yIc65VIH*thB3Qn_dH z(tIl`%|7@KFU_KjPiHjG%xpESLcOxt4N|kq5+=?Q@j&T=k{?ft;_wRVX_6$7j)G42 z_gSE^)~yWR+%2T%wh;{nyQsVzc6uJ0uI_KlUyh8`Bb?LW;a=r|I9oJ9v1FTM z?os&@{Y$LIj=nBs$flmb`CCS$vkoi>T)YQ+g#17D4}T*fCK>VC_>Ej)W#~NR0TaXu z9+n}S=g+|+WFw_yue?ebzNK4eua8GH?61`1rIm1Wng5l?{>&^`#sCEei1tV%m^cm$ zRlm$<&#vH(e}SX(9_|sn|3hK5O&`73TKGyUKE2SavW(f-HKf+K$54Z+*S@jSNpb&l(cpXP7W zrOHJ?&px5wk{VVhw!O#_HxnlC70L2lB7o#!zT?xh4w5)t>V+LOwTLXK=gcU#jdK|BIbw4+Ti(`D8A@l~ z?gOdE4=|#}j)(EBQE@48k$lOQUn&zn;K2+gqG$~{XzY~yW4txJR$=R zEE`8nd7H;%Xzi06BC?Qg_P|P`_W6h` zuxD5x)bPG?g>RPnH{Ga$zLkv|%iu!e#+j4LqyH5e7K{E@*$6I7Ue5zrSs{-d=zB$X z8odOeLxmreJ{<#mLkb=pSY;W#F-M5M>+(5smM@<(dxdjCe;RAmf5Hx_49W%mF^Iyk zoN65H+_`OQ06+qM6yH^%KSJAV%B=~2t=X?U6j-4QG!M~tUpnxxEMp4L51QWOS${DZ z8(VJ}o2)sLmCPygjrZ8nlTKzsxaVJ3Z`0x|F``e{?I$$t#0h1TX?@7Q&ILxdioFx& z5!AV)voQyDX=FxAw1{L;#+&KWh7X@Q70$J@S5}8!y*gy|de#)t z-~1em6ih^SUI{MtV7S-5F1FHXF^okVbccLnOvMv5)bYd(69-4*wOw4S4F7!btwq5d zmuIEirVL>=$KgovIL@&=D%S#kyWx95;4i&zh_g+%gs&$_mj*rH z0UZ$8p{s zzlPwZca6X_@>Q1xcY^0I(}`!P?Gp~Br5(goG+CM1hQCGrcIT_QGJO}$6C%EZe~SEW zfhT=Xvght)<`$}9BVNzjoxP}4P}}G8QkZf)E$uiP;qdt0fAURXktva(EZ{xlFGk%m z9*BJ$^uEW4KK;dc<#RWQ<&c6Xck_ZR3r?EH^A>H3=O0W>#iqEE?W@O6mWOASb6{k> zQ+?UAg}e*-`hk$mK~pvnh$u*;EG@5hS7dm7cNS!voak=$3{9F zxMTJ+2ddI{g+{{R;)~9nRmQ%`pJo9+@+gv%?|O1hiHtA!YJ;yG_UusT#OsTKJ1on# zPj;~_PBcyYgSTodg$6CSkj8gBsYi!CGhzf>@kx`E$;-G?@>BZbgwg5#Eybjoq1@G@ z)+O0vNKmPmmbRa};Qu2oV_)#BaK=mbT}#e*8Rcmxe249DgqS*+zyG8b9mcmb>6=!i zN?PA0VfAABwP?{Vww@)~*a(^Cz!sA~PWqqZ>3&+I|DN?9YmYtLw*=DBczvO*Bh=O{ zym43aN4)VrO-%+Ua_|jwTKIctXk@p;9j`hu#cn5eoW`2KB6k<=xH4o7-c&56d_Ke3 zCtBrf6SKD?QEOhrk2Oht!fLm;t(AfXBUa4u^UM29YG=}SLy2j^*M&twE7zD^;Ojc6Sr6d=K;#;c>bnyy&tx!X!+7i$&2d;BsZm`W#!&O{3C9>~Dp-O#3>Yvxpcy zCX#f}ADiO^+u!aY41p9Z@;^yYfc)6#53)mYKN^|dL22kVc&UdBW6@09ca1N^cVSZ3 z7zRK656c^@4mWNc6KlvCRifK`C6^z495zN9x z@bR=-M2BM(6!*u-kMY~9`Rqjb3%Qn7nXj^PVooFCTm4v(_p$@%_%hIUi0+mv}kM*hYBy7s)#y21B{S*M!H| zqr=$(p0uY>J(|bTdaAv6y*1cdK&f6P9;A7PA}Uc#O5!02w;=sADF7+0ZE z-S`Hpwg13JQn&fy@K_DF=^Y-(zf_MLQK}3`E;Jq<@mY&}K0+e!uIZyC;!p2-xPR8V zjPC|Hm2n?*v3B1u+O2ftS*wedWM$B9W&;4y1^#MytR54=R{j9sh zYEcNIAzR*ehyT+i_^RkiHf~K9Yqt-_xm6#WM)`{E)0`dS%XD`pz#$S^D>(lvUq-wL zXRjL-nrEYhQu-KJhWaTfnUgW_sB0RqTG{StDcNP8R%+#|gN+9#L9XDFFJ8mTydTAn z$7^1mt+Gt~pi6Mh`pM~CR?POnY=ql(7I6;f=_N_vD&uotHV@FU>b{Ix#m0Wn+173S7?;w)xUV#J8@EH?-4>naU--*pCnDG? zV`f*K@0ndrWqSrB59ERSuwD@^5)-zHa1kzkWbnv~g+Uu%T=~3sd?@ws(@#HjI6h_Q zr>^Ya(G^kvkE-!AbM+knNMqO@0!W09JlG`y744Ozo%6A{(t*Y;;9W#s`Ry0AwzXf{ z#Y8YOckkYvmbM!hW}-5?EuSA60n6IzjILDcpFGWYhf!`Q-M>5h>^okPJqY7}+jnz) zKn`&sw_DUExC7Q7v3&0A6)R@XUG5w|p#ON315L>G((;q?WJA6zEJBYAeH~TJRM|}Z z1d>t5%(nH0iHX|@x{#w>sxI=dzQPR&If@V<&LGL~s8X8WWP>04&ITa)@+-bwyQAxO z*aX}SG$+bwp-dgbYGS1!5`QZ(8kst<-Cv_2)lD`KnX>~PL@OQK#&4G3>-tnxoyro7 z6a3P3EG@os9QnBSOZ<+&jbEcM;+FW%K*Q=nm)H-K`?s~Zx;~dxHNJ*5R#10~JTglZ zzJVx6aaxLO;}qEzJA`d}jaowP13ipk^}%>c9Nfg$*!V;K4062rItN zN;}W9N}mrFeb7(zN}kb=1)b9R>23K+mJB@{oG01p=#hvZgFU6Wx*xQ>t`u%E4*lBH$rVT<Hu}{ju zb6Uc&u9%2dd{z1Ka~hoU$kK*ZYo92gT(yM%q)*ng$*ipL4Zo!B*a3MKeb0(mrId!S z=Kk!0g@`}J_BoCHgP|Qx&)1bfK+91W5dAT0F@6M#xuA{E_?oRlS5VFpdQG39sxw&m2RAeFT@@?3@-y&)li#vs zuQ*B*6nmhxNEY<^T1*m;o8jZjqli_{KD&y3q4UR}Db)GH685t`MboCRCykfUq_rhl ze9$q}Qd33l4CT~+F7)lc=rAe7QLjb~FhZ4%NZ04UniY(9ERm#5I<$%_^>XX>rud+g zZHU+hVJ&}+D&|}J(qCce0;Sip&l}IPH@~uke63AX)rrjd;O1dXJFKdR)sns!D zSS>~0sb*R_&EjCl-_mlAYoKCI5N*WwW*Q+FRqlI2>uIX=$m6RjcAZ)qoXn_A9{-b-+DjC2jNMhoR2~Jx%Z2ZoNLjn%+lQq${o}&o6v8BLR5^$6?;}g?uFLC;`CkM zJO3|ZXY$L`4@(#U!&yA16>aIt6|AH%F1o;lOaQ#*g?Wc@#xH9BA- zzxTFnq>{v=@PNIA-Qbwuc}_cyd6H8s!>?`Dh6F|>#f7TVcK27m=pl8y2IS}2Unr^ zLoC|+;I;Bk`&FoLtAMd+J*|(nM%6AGY3J`xXi~YFV@#FA(T-}Bn@)g>)VV=gkFw>u zrKWVkizUgU3gYgekVhcw6zMYEQ_-FtTh!JGcR&3UPY*A%YJ634ue7PngL?lvIGEja zA{TU=Q#r){wKJFTN5JZL15t7x(E#a@YgvChLLBCWk}rwiOC!i58d(=Ed1izN%+67X z(f^Ad;F0N!#V5YT%FQ3x#*%k=l5IwtrR~u3$gD#a_>k(5%jBk4U|UkhI-O%vm8-|J z;enxbVncPyC|1g-F+Q_=d0Bc~zPzXOxI21wrPl9KI>}Q0mwU!9KVQNbsE79s>Ir1Q zSrmw(1pWWj#X~3Va;C6HJoq^! z**GEd4vasbx6cGjWPzvDalw&Er6cwE{6~51VXddVYsKNUp;FOWKBri6jqby0_R8@J zmJ1&tmV31af;8)Gn5w+ViD|PpIbNH2JVxo}1&-xk=%dj)Cs7}PUOGF~(W9lFCP7az zqyZd_L$yaqJF8s1go{zK6N?VsF?(ddHNMsMKFzJ3*Ro6j^5)*@OPLO@CiUvac0w)npnqZ4S^Ar2AcI}!s$1iI6 zRyQT3u5!#cLm0A@4*YsdU>IQ;=;a??B#1#fi1@=wxmgz<{QlD{_Tp*f7%KB_swx`p z7%Ohxl)S9{aFZ9yBGN(kWYHHSnx*LTS4#Mt%MWh;I5tASS+?veOYpDu>8d&%i1rx& z{^mhyZwiS}y{HG%KKeazaELA-+j;oj<vISo$_it(obbSGU2HN+1!avCVM~bxCFK$gmiTQG5ndVzL@*zW5pb|2DqesHx3T79$Fisk z$zxUi4yIWy8atL~Ctjnz(!_

HfSa;Q-JkfDVNqM?E>evzwq{-_?nU?-i6|8^5xI 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�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 z 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

I0!I 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ფrsc&duGgv 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

p2E7e4qkLhJLs$M9PKAJ^Iu0Wv0^1hDLVb8 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%0DqooWy&+{ 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Light.svg b/src/main/resources/static/fonts/sunn-main/SUIT-Light.svg new file mode 100644 index 0000000..ff9da30 --- /dev/null +++ b/src/main/resources/static/fonts/sunn-main/SUIT-Light.svg @@ -0,0 +1,8600 @@ + + + + +Created by FontForge 20170731 at Thu Jan 20 04:13:52 2022 + By Aleksey,,, +Copyright (c) 2022 Sunn. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Light.ttf b/src/main/resources/static/fonts/sunn-main/SUIT-Light.ttf new file mode 100644 index 0000000000000000000000000000000000000000..021afff83edcbacbd01d69e7dbe8d3c3e972d7c2 GIT binary patch literal 440840 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

SlBCn7f{5cF) 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�es4^Da}4JFA2Lwt^_AS{jfdTT5AGQYN? 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

^Do!kOVNA2=$t8Mxed)e#_hT>cH!JOZd@ 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�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 Pz5Bnm0Pj literal 0 HcmV?d00001 diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Bold.svg b/src/main/resources/static/fonts/sunn-main/SUIT-Bold.svg new file mode 100644 index 0000000..b705dc1 --- /dev/null +++ b/src/main/resources/static/fonts/sunn-main/SUIT-Bold.svg @@ -0,0 +1,8488 @@ + + + + +Created by FontForge 20170731 at Thu Jan 20 04:13:54 2022 + By Aleksey,,, +Copyright (c) 2022 Sunn. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/static/fonts/sunn-main/SUIT-Bold.ttf b/src/main/resources/static/fonts/sunn-main/SUIT-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e83ad3e3034c0ad83a4d7a6ae1dcf3d1d15cdd98 GIT binary patch literal 431160 zcmb5X2S8KT_c)$=A0&)~Jrop#K-ilA%HC7idnPYTQ9w3H+*Yer(K=gaopsycXlrYC z?Xs<{t#`eF@ z5(qbh!tZ981^LA#oyAIlaQSM1z#=BIxHP3W_vAc*aNSD+0dCJP4hc_BPx(M#`U(79 z(7?`7be@|3&T|6OPrU?!7?IgMQo-WCF(W0F8%`gvzZcaPn%@Z|!bE8uT$6ktKr$nT5{e<~0OEChmdsgH+9 ziX!Y8hLJ5OBqs_MqNt@Io%1YTcmdxaHOP+q1boOG`5kw{XRHO21RerGxkq?Zlsr=A zL%+$S9`+I8PL2*jsnnMLgGic*YGZ1nBmDECYh%b0gO_}xqkS*E;u{^|^M++ieawu8 zsqxh@HBqEGHo!Lu{VMmBg<;@w!pM*K1imhqDiEZ}Wb(+UC;;dz0vw(~p`(M7Q$%=F zw6jnsMcI!km5-`&mqp}HW5biX($cz;!`W&15zBJzn~ycauh_^c51+K|w6vZyUyrKD zSl|v8WWhT2z&b1hjsk&-TZ4>J%>Wv@0$2i?2cPLqn=|L@8>+)9_;q7$Y7an3B^J0t zb-1zdunIr{t#JTrI>53N2$DS<^|whNWjrjxd-FHSTyda zX+5M+9BS>@6VT>9HzS=AogS>r6Mulp(IT5E-gWDXP~)-ImSc@Axv^nsY5kd5ed*Y* za7H(`9?F|X`1Pa%Wk6j7e2>7743fhcZZKP#r3)(SYiBojX;v2f>a58-!b8_(MPw!1l?MY7u?OF|rr8?5scm#B=u_?VjGowE}y+0$fKOMCm zZ*D%`#H%%rhw`YGqss|2gwtcG)G-2ijH7MC=@x1d^mZ^24|lMO;LqK zvwXapk2UdYqWZU)ThpYw*955Tr9M(v)gyFOFTO}#L+Oca2`1$kFKu{oT`y{q(uLhd z{fV9FWj*fX_rL!J`6Z2fgYU;b2=W1<%m>yb5{kf&I6J|YvlDy=X@~$e{U!DEk#Two z{~8e<9Yw$7k@Vku;G^)nJTe;i!FeR`Nmw|^NuDfrO1Bf**w{PD!m1iv9Nny~rcav` zJ87~@eR*V(WuK|keVTl#z0)K=cN?LNbz+`8)@$li$H@|xIgyT&f)#SYNA#{1SNYM^*W@yeNnD+>lgio!w)!v^12RaCgD7@a4nktLy_r4i^Hp}1%qnFer# zoNZ8RLN}L?R~O#?Rci@0aTu3UxgtUQ$nPd~@Em7*4A>rhl-gcz-+`yQe^j41w&=h< zwIz1beE}bP9|!0@z=3-BrtmqvA7G>i!jye9`W8)D|G}k=Xe#+~L~Udhaw6ZM zUery#M-C9YIoj}T_^cW50oXu47=hmJCs)?Ie|Zg>L_S4Q^fGx0Wx%u3fM*ZGv(zsm za2|5x0bF~S1f%zK%g|dS0;_SmZltdhqke%t7H)y({~u!EvawjWdhlNw3;+Fz#==|o zj)i=zdLHoH8LP&O+yf1Bv1-*SavKTxXhr_HJ6!RxN&&F$j8zI!gw~LG=$P(f?0rY9 znyu#v7ukS`9(Xn>Mtx-E0DW{UR#CfsorgUxZoEE7Iv{SWyEAT3Up)(+H}chMb$=Or zHRk;Pb`JM{__jBw7x?ZwvI8~nzU{_@zKzoM90%(^eah<;+V|g+U1-jzPdR%ppOOqd z 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 mlkc<#Ay`@^|5(}* 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%0Dc1%YW;)A#1> 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 *Akol^hEE@ob0HZo8K3; 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