From cb67c18371c7b21eedd85f2fdd6acdf882db0951 Mon Sep 17 00:00:00 2001 From: nili Date: Sun, 19 May 2024 22:42:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=8B=E7=9B=9F=E4=B8=80=E9=94=AE=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/game/service/UMengService.java | 22 +++++++++++-------- .../game/service/bo/citrus/UMengRes.java | 13 +++++++++++ .../game/service/citrus/UserService.java | 22 ++++++++++++++----- .../group/game/service/UMengServiceTest.java | 13 ++++++++--- 4 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 game-service/src/main/java/awesome/group/game/service/bo/citrus/UMengRes.java diff --git a/game-service/src/main/java/awesome/group/game/service/UMengService.java b/game-service/src/main/java/awesome/group/game/service/UMengService.java index 0e93815..6a9f785 100644 --- a/game-service/src/main/java/awesome/group/game/service/UMengService.java +++ b/game-service/src/main/java/awesome/group/game/service/UMengService.java @@ -1,5 +1,7 @@ package awesome.group.game.service; +import awesome.group.game.service.bo.citrus.UMengRes; +import awesome.group.game.service.bo.matrix.UmengConfigBo; import awesome.group.game.service.common.exception.PaganiException; import awesome.group.game.service.common.exception.PaganiExceptionCode; import awesome.group.game.service.common.log.L; @@ -36,17 +38,19 @@ public class UMengService { private final OkHttpClient httpClient = new OkHttpClient().newBuilder().connectTimeout(2, TimeUnit.SECONDS).readTimeout(5, TimeUnit.SECONDS).connectionPool(new ConnectionPool(8, 5, TimeUnit.MINUTES)).build(); - public String getMobile(String token) { + public String getMobile(String token, UmengConfigBo umengConfigBo) { Map data = new HashMap<>(); data.put("token", token); - String api = "/api/v1/mobile/info?appkey=" + APP_KEY_UMENT; - String res = doHttpPost(api, data); - System.out.println(res); - - return res; + String api = "/api/v1/mobile/info?appkey=" + umengConfigBo.umengAppKey; + String res = doHttpPost(api, data, umengConfigBo); + UMengRes uMengRes = gson.fromJson(res, UMengRes.class); + if (uMengRes.success) { + return uMengRes.data.mobile; + } + throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "获取手机号失败"); } - public String doHttpPost(String url, Map jsonBody) { + public String doHttpPost(String url, Map jsonBody, UmengConfigBo configBo) { Map header = new HashMap<>(); String body = gson.toJson(jsonBody); @@ -55,7 +59,7 @@ public class UMengService { header.put("X-Ca-Version", "1"); header.put("X-Ca-Signature-Headers", "X-Ca-Version,X-Ca-Stage,X-Ca-Key,X-Ca-Timestamp"); header.put("X-Ca-Stage", "RELEASE"); - header.put("X-Ca-Key", APP_KEY); + header.put("X-Ca-Key", configBo.umengAppKeyAli); header.put("X-Ca-Timestamp", String.valueOf(System.currentTimeMillis())); header.put("X-Ca-Nonce", UUID.randomUUID().toString()); header.put("Content-MD5", Base64.encodeBase64String(DigestUtils.md5(body.getBytes()))); @@ -66,7 +70,7 @@ public class UMengService { try { Mac hmacSha256 = Mac.getInstance("HmacSHA256"); - byte[] keyBytes = APP_SECRET.getBytes(StandardCharsets.UTF_8); + byte[] keyBytes = configBo.umengAppSecret.getBytes(StandardCharsets.UTF_8); hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256")); String sign = new String(Base64.encodeBase64(hmacSha256.doFinal(stringToSign.getBytes(StandardCharsets.UTF_8)))); header.put("X-Ca-Signature", sign); diff --git a/game-service/src/main/java/awesome/group/game/service/bo/citrus/UMengRes.java b/game-service/src/main/java/awesome/group/game/service/bo/citrus/UMengRes.java new file mode 100644 index 0000000..931bfbc --- /dev/null +++ b/game-service/src/main/java/awesome/group/game/service/bo/citrus/UMengRes.java @@ -0,0 +1,13 @@ +package awesome.group.game.service.bo.citrus; + +public class UMengRes { + public boolean success; + public Integer code; + public String message; + public Data data; + + public static class Data { + public String mobile; + + } +} diff --git a/game-service/src/main/java/awesome/group/game/service/citrus/UserService.java b/game-service/src/main/java/awesome/group/game/service/citrus/UserService.java index 907121c..9ecb75e 100644 --- a/game-service/src/main/java/awesome/group/game/service/citrus/UserService.java +++ b/game-service/src/main/java/awesome/group/game/service/citrus/UserService.java @@ -7,16 +7,17 @@ import awesome.group.game.dao.mapper.MatrixAppMapper; import awesome.group.game.dao.mapper.MatrixMoneyRecordMapper; import awesome.group.game.dao.mapper.MatrixUserMapper; import awesome.group.game.service.SmsService; +import awesome.group.game.service.UMengService; import awesome.group.game.service.bo.citrus.AppCashConfig; import awesome.group.game.service.bo.citrus.CashRecord; import awesome.group.game.service.bo.citrus.LoginReq; import awesome.group.game.service.bo.citrus.UserBo; +import awesome.group.game.service.bo.matrix.UmengConfigBo; import awesome.group.game.service.common.exception.PaganiException; import awesome.group.game.service.common.exception.PaganiExceptionCode; import awesome.group.game.service.util.DateUtil; import awesome.group.game.service.util.EncryptUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.gson.Gson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -45,6 +46,9 @@ public class UserService { @Autowired private UserService userService; + @Autowired + private UMengService uMengService; + public static final int STATUS_WAITING = 0;//等审核 public static final int STATUS_AUDIT_PASS = 1;//已审核通过 @@ -89,9 +93,17 @@ public class UserService { Assert.isTrue(StringUtils.hasText(token), "非法请求"); MatrixApp app = appMapper.queryByCode(appCode); Assert.isTrue(app != null, "非法请求"); - LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); - wrapper.eq(MatrixUser::getAppId, app.getId()); - return userMapper.selectOne(wrapper); + Gson gson = new Gson(); + UmengConfigBo configBo = gson.fromJson(app.getUmeng(), UmengConfigBo.class); + String mobile = uMengService.getMobile(token, configBo); + MatrixUser user = userMapper.selectByAppIdAndMobile(app.getId(), mobile); + if (user == null) { + user = new MatrixUser(); + user.setAppId(app.getId()); + user.setMobile(mobile); + userMapper.insert(user); + } + return user; } public UserBo getUser(Integer uid) { diff --git a/game-service/src/test/java/awesome/group/game/service/UMengServiceTest.java b/game-service/src/test/java/awesome/group/game/service/UMengServiceTest.java index 3d0c6af..4f91548 100644 --- a/game-service/src/test/java/awesome/group/game/service/UMengServiceTest.java +++ b/game-service/src/test/java/awesome/group/game/service/UMengServiceTest.java @@ -1,10 +1,10 @@ package awesome.group.game.service; +import awesome.group.game.service.bo.matrix.UmengConfigBo; +import com.google.gson.Gson; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static org.junit.jupiter.api.Assertions.*; - class UMengServiceTest extends BaseTest{ @Autowired @@ -13,6 +13,13 @@ class UMengServiceTest extends BaseTest{ @Test void getMobile() { String token = "eyJjIjoiNmk5amtxSVwvNXhXRElTRkNIeUpcL1RTemNjTEJsOEtiWndkT0NEYlhkUFJQREUzZ3g1bWx1bmNYdzRtclBWODVYOEludnJzS1pTOTRRXG53ejRudVlSaUs4cTFtRUdcL2FPQ0tIRktiUUtuS2Iya0ZFWjlyNWpPV044R0w3Q2I3V1g5dDA0ays2dmJwUXpaNGVTMklyOTJJcGtqaVxudm0rVG5vWVVVZWl4ZHhNNDArZ0hlaXBFRUpnUjlQNjhyZzY1VitrU1wvaWFQbXMxM3h4dEtGd2c3OVAwcVJ3VTZ1cFZcL2tUcXNvYTBOXG5jTDBtNThZc042RlwvcmZwcjJqbDVOZk1SdG1WdWFWTG1RVkVicHF3b2tUMWdiQk1UR0I4TDRIcHlhYUhyUXJUNnJQTG9kbDNWbjlNN1xudEFTZHRsU0JmMDYyVVVRSkZuZE9DeEZRN2diZ2JrRDNyYllBcXZ2cVZMUmFYWGlhNDNONGp6SnhTemJ0TnprM3ZTTmlrR0hHNFlaVlxuWXFJMlBcL3dlYlJucnlFRFlGQzhhaUVwdzB2R2UyRENcL3ZWNTdNMTlvN3VBVjFGaXFYUFpOSFFrdUVIcUFwRkpUUjBOODlRQ1Q0Qmw1XG5abmRsV2hyM1JWWTlRZWZSN3Nva0hjQjlHV1c0WlZWWXcyY0VFSDhIcHp5bmJlKzY2ZlwvbHpZZlJPUm5QUTNSdFpVV3dpNmFJNVd4M1xuY3F5ZVZjdEVCaTB6U1V5Y2tiVlRrXC90N0JaTlpMVkwyaHRKNzBXOXhXVnZRSU5LUloyOE1wc3M2bXNBNFlGa2gxdz09XG4iLCJrIjoiQ0ZZbm81SDNwSVJKK1FPMHhHZzZrU2FteGU2RXE5NDBxa0VoZXF1VHBiajlnSHl0UFwvNEdsQzh4R1lCYW04T093TVpoTElWSER5VVpvSThySFBOejRcL1ZKdm9XWXhwMEVNcWpyRkF0anV1cENDb1RKWUMzVWtXTmpMUkRLcG1za3Y2RHBjc2lBeHRvZnBPdVwvak04ZnR2dFhJOFBDQVwvU0Q4cHFENytKZDdqXC81Z0VQTUFndGgrdnZOYnp4VThrbU5cL01SVmRXK2FpUlFZSGswVFRZUnZ6eEJONDYwMCtDRjd2Vlh3djVcL1RUTmNBUmxCZkpkTFZnUnpnSFBjSE03Qk1NRzFRRW5PV3BGcjAyd29NS1dUdHZ6NndxYWdnQU9WeWFkdmgrRzg4eU9TRGNaTXBxbG5xOGtXQlFoY2QrampTZjRZaDdiOGNpdUZubWlzYmlXUmpmdz09IiwibyI6IkFuZHJvaWQifQ=="; - uMengService.getMobile(token); + UmengConfigBo bo = new UmengConfigBo(); + bo.umengAppSecret = "7e3a9e8ae85cd8c1ff58343e241ec154"; + bo.umengAppKey = "66403e5dcac2a664de3234d4"; + bo.umengAppKeyAli = "24785365"; + bo.umengAppCode = "2c62d2208aa640f09a55449efa634424"; + Gson gson = new Gson(); + String str = gson.toJson(bo); + uMengService.getMobile(token, bo); } } \ No newline at end of file