diff --git a/game-service/src/main/java/awesome/group/game/service/bo/MatrixAdvRecordEditBo.java b/game-service/src/main/java/awesome/group/game/service/bo/MatrixAdvRecordEditBo.java index a8916bd..dc17c3e 100644 --- a/game-service/src/main/java/awesome/group/game/service/bo/MatrixAdvRecordEditBo.java +++ b/game-service/src/main/java/awesome/group/game/service/bo/MatrixAdvRecordEditBo.java @@ -17,6 +17,8 @@ public class MatrixAdvRecordEditBo { public String sign; + public long timestamp;//时间戳,秒 + public MatrixAdvRecordEditBo() { } @@ -43,4 +45,29 @@ public class MatrixAdvRecordEditBo { str += "secret=" + secret; return str; } + + public String getSignStrV3(String secret) { + Map map = new HashMap<>(); + map.put("deviceId", deviceId); + map.put("appCode", appCode); + map.put("platform", platform); + map.put("advType", advType); + map.put("ecpm", ecpm); + map.put("deviceBrand", deviceBrand); + map.put("deviceName", deviceName); + map.put("advId", advId); + map.put("timestamp", timestamp); + List keys = map.keySet().stream().sorted().toList(); + String str = ""; + for (String k : keys) { + if (map.get(k) == null) { + continue; + } + str += k + "=" + map.get(k) + "&"; + } + + // 不同批次 key 会变化 + str += "secret=" + secret; + return str; + } } diff --git a/game-service/src/main/java/awesome/group/game/service/bo/citrus/AdvResponse.java b/game-service/src/main/java/awesome/group/game/service/bo/citrus/AdvResponse.java new file mode 100644 index 0000000..5d1cb57 --- /dev/null +++ b/game-service/src/main/java/awesome/group/game/service/bo/citrus/AdvResponse.java @@ -0,0 +1,16 @@ +package awesome.group.game.service.bo.citrus; + +import awesome.group.game.dao.bean.MatrixUser; + +public class AdvResponse { + public long incrCoin;//本次获得的金币 + public long goldCoin;//可提现金币总数 + + public AdvResponse() { + } + + public AdvResponse(long incrCoin, MatrixUser u) { + this.incrCoin = incrCoin; + this.goldCoin = u.getIncome() - (u.getMoney() * 1000); + } +} diff --git a/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppBasicInfo.java b/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppBasicInfo.java new file mode 100644 index 0000000..526c963 --- /dev/null +++ b/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppBasicInfo.java @@ -0,0 +1,23 @@ +package awesome.group.game.service.bo.citrus; + +import awesome.group.game.dao.bean.MatrixApp; + +public class AppBasicInfo extends AppCashConfig{ + public String name; + public String code; + public String img; + public String url; + public Integer version; + + public AppBasicInfo() { + } + + public AppBasicInfo(MatrixApp app) { + super(app); + this.name = app.getName(); + this.code = app.getCode(); + this.img = app.getImg(); + this.url = app.getUrl(); + this.version = app.getVersion(); + } +} diff --git a/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppCashConfig.java b/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppCashConfig.java index 1e7719b..93bb446 100644 --- a/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppCashConfig.java +++ b/game-service/src/main/java/awesome/group/game/service/bo/citrus/AppCashConfig.java @@ -23,7 +23,7 @@ public class AppCashConfig { this.moneyLadder = gson.fromJson(app.getMoneyLadder(), new TypeToken>() { }.getType()); } else { - moneyLadder = Arrays.asList(30, 50, 100, 10000, 30000, 50000); + moneyLadder = Arrays.asList(30, 50, 100, 1000, 3000, 5000); } if (app.getNoAuditMoney() != null) { this.noAuditMoney = app.getNoAuditMoney(); diff --git a/game-service/src/main/java/awesome/group/game/service/citrus/AdvRecordService.java b/game-service/src/main/java/awesome/group/game/service/citrus/AdvRecordService.java index b428740..21b12cb 100644 --- a/game-service/src/main/java/awesome/group/game/service/citrus/AdvRecordService.java +++ b/game-service/src/main/java/awesome/group/game/service/citrus/AdvRecordService.java @@ -7,6 +7,7 @@ import awesome.group.game.dao.mapper.MatrixAdvRecordMapper; import awesome.group.game.dao.mapper.MatrixAppMapper; import awesome.group.game.dao.mapper.MatrixUserMapper; import awesome.group.game.service.bo.MatrixAdvRecordEditBo; +import awesome.group.game.service.bo.citrus.AdvResponse; import awesome.group.game.service.bo.matrix.AppNormalConfig; import awesome.group.game.service.common.exception.PaganiException; import awesome.group.game.service.common.exception.PaganiExceptionCode; @@ -28,12 +29,13 @@ public class AdvRecordService { @Autowired private MatrixUserMapper userMapper; - public long saveRecordV3(Integer uid, MatrixAdvRecordEditBo bo, String ip) { + public AdvResponse saveRecordV3(Integer uid, MatrixAdvRecordEditBo bo, String ip) { + Assert.isTrue((System.currentTimeMillis() / 1000) - bo.timestamp < 30, "非法请求"); Assert.isTrue(StringUtils.hasText(bo.appCode) && StringUtils.hasText(bo.sign), "非法请求"); MatrixApp app = appMapper.queryByCode(bo.appCode); Assert.isTrue(app != null, "非法请求"); String secret = app.getSecret(); - String str = bo.getSignStr(secret); + String str = bo.getSignStrV3(secret); if (!bo.sign.equalsIgnoreCase(EncryptUtil.sha1(str))) { L.trace("signError", "sign:" + bo.sign + ",str:" + str + ",secret:" + secret); throw new PaganiException(PaganiExceptionCode.GENERAL_ERROR, "非法请求"); @@ -61,7 +63,8 @@ public class AdvRecordService { mapper.insert(record); userMapper.incIncome(uid, ecpmReal); - return ecpmReal; + MatrixUser user = userMapper.selectById(uid); + return new AdvResponse(ecpmReal, user); } } diff --git a/game-service/src/main/java/awesome/group/game/service/citrus/CitrusAppService.java b/game-service/src/main/java/awesome/group/game/service/citrus/CitrusAppService.java index b71232f..d60666d 100644 --- a/game-service/src/main/java/awesome/group/game/service/citrus/CitrusAppService.java +++ b/game-service/src/main/java/awesome/group/game/service/citrus/CitrusAppService.java @@ -2,6 +2,7 @@ package awesome.group.game.service.citrus; import awesome.group.game.dao.bean.MatrixApp; import awesome.group.game.dao.mapper.MatrixAppMapper; +import awesome.group.game.service.bo.citrus.AppBasicInfo; import awesome.group.game.service.bo.citrus.AppCashConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,8 +12,8 @@ public class CitrusAppService { @Autowired private MatrixAppMapper appMapper; - public AppCashConfig getAppDetail(String appCode) { + public AppBasicInfo getAppDetail(String appCode) { MatrixApp app = appMapper.queryByCode(appCode); - return new AppCashConfig(app); + return new AppBasicInfo(app); } } diff --git a/game-web/src/main/java/awesome/group/game/web/filter/CitrusLoginFilter.java b/game-web/src/main/java/awesome/group/game/web/filter/CitrusLoginFilter.java index 7ab078f..4b997c3 100644 --- a/game-web/src/main/java/awesome/group/game/web/filter/CitrusLoginFilter.java +++ b/game-web/src/main/java/awesome/group/game/web/filter/CitrusLoginFilter.java @@ -35,6 +35,7 @@ public class CitrusLoginFilter implements Filter { String token = httpRequest.getHeader("Authorization"); List openApi = List.of( "/api/citrus/register", + "/api/citrus/open", "/api/citrus/login" ); boolean pass = false; diff --git a/game-web/src/main/java/awesome/group/game/web/rest/citrus/CitrusAppController.java b/game-web/src/main/java/awesome/group/game/web/rest/citrus/CitrusAppController.java index b850224..757a162 100644 --- a/game-web/src/main/java/awesome/group/game/web/rest/citrus/CitrusAppController.java +++ b/game-web/src/main/java/awesome/group/game/web/rest/citrus/CitrusAppController.java @@ -1,26 +1,11 @@ package awesome.group.game.web.rest.citrus; -import awesome.group.game.service.bo.citrus.AppCashConfig; -import awesome.group.game.service.citrus.CitrusAppService; -import awesome.group.game.service.common.response.R; -import awesome.group.game.web.aop.RestApi; import io.swagger.v3.oas.annotations.Hidden; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/citrus/app") @Hidden public class CitrusAppController { - @Autowired - private CitrusAppService appService; - - @GetMapping("/getDetail") - @RestApi - public R getAppDetail(@RequestParam String appCode) { - return new R<>(appService.getAppDetail(appCode)); - } } diff --git a/game-web/src/main/java/awesome/group/game/web/rest/citrus/OpenController.java b/game-web/src/main/java/awesome/group/game/web/rest/citrus/OpenController.java index 0fe582a..a45c77d 100644 --- a/game-web/src/main/java/awesome/group/game/web/rest/citrus/OpenController.java +++ b/game-web/src/main/java/awesome/group/game/web/rest/citrus/OpenController.java @@ -2,8 +2,10 @@ package awesome.group.game.web.rest.citrus; import awesome.group.game.dao.bean.MatrixUser; import awesome.group.game.service.SmsService; +import awesome.group.game.service.bo.citrus.AppBasicInfo; import awesome.group.game.service.bo.citrus.InviteInfo; import awesome.group.game.service.bo.citrus.LoginReq; +import awesome.group.game.service.citrus.CitrusAppService; import awesome.group.game.service.citrus.RegisterService; import awesome.group.game.service.citrus.UserService; import awesome.group.game.service.common.response.R; @@ -29,6 +31,9 @@ public class OpenController { @Autowired private SmsService smsService; + @Autowired + private CitrusAppService appService; + @PostMapping("/register/sendCode") @RestApi public R sendCode(@RequestParam String mobile, @RequestParam String scene) { @@ -70,4 +75,10 @@ public class OpenController { return new R<>(R.CODE_SUCCESS, "ok", token); } + + @GetMapping("/open/getAppDetail") + @RestApi + public R getAppDetail(@RequestParam String appCode) { + return new R<>(appService.getAppDetail(appCode)); + } } diff --git a/game-web/src/main/java/awesome/group/game/web/rest/citrus/UserController.java b/game-web/src/main/java/awesome/group/game/web/rest/citrus/UserController.java index 6883da6..0da0372 100644 --- a/game-web/src/main/java/awesome/group/game/web/rest/citrus/UserController.java +++ b/game-web/src/main/java/awesome/group/game/web/rest/citrus/UserController.java @@ -1,6 +1,7 @@ package awesome.group.game.web.rest.citrus; import awesome.group.game.service.bo.MatrixAdvRecordEditBo; +import awesome.group.game.service.bo.citrus.AdvResponse; import awesome.group.game.service.bo.citrus.CashRecord; import awesome.group.game.service.bo.citrus.UserBo; import awesome.group.game.service.citrus.AdvRecordService; @@ -59,8 +60,8 @@ public class UserController { @PostMapping("/saveAdvRecordV3") @RestApi - public R saveAdvRecordV3(@RequestBody MatrixAdvRecordEditBo bo) { - Long res = advRecordService.saveRecordV3(RequestContext.getCitrusUid(), bo, RequestContext.getIpAddr(RequestContext.getRequest())); + public R saveAdvRecordV3(@RequestBody MatrixAdvRecordEditBo bo) { + AdvResponse res = advRecordService.saveRecordV3(RequestContext.getCitrusUid(), bo, RequestContext.getIpAddr(RequestContext.getRequest())); return new R<>(res); }