|
@@ -1,12 +1,14 @@
|
|
package com.zanxiang.game.back.serve.service.impl;
|
|
package com.zanxiang.game.back.serve.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.github.sd4324530.jtuple.Tuple2;
|
|
import com.github.sd4324530.jtuple.Tuple2;
|
|
import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
|
|
import com.zanxiang.game.back.base.pojo.enums.OrderStatusEnum;
|
|
import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameBackLogMapper;
|
|
import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameBackLogMapper;
|
|
-import com.zanxiang.game.back.serve.pojo.entity.*;
|
|
|
|
|
|
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
|
|
|
|
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameOrder;
|
|
|
|
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameRoleRegister;
|
|
|
|
+import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameUser;
|
|
import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
|
|
import com.zanxiang.game.back.serve.pojo.enums.ActionTypeEnum;
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackStatusEnum;
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackTypeEnum;
|
|
import com.zanxiang.game.back.serve.pojo.enums.BackTypeEnum;
|
|
@@ -15,7 +17,6 @@ import com.zanxiang.game.back.serve.service.IGameTencentMiniGameCallbackService;
|
|
import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
|
|
import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
|
|
import com.zanxiang.module.util.DateUtil;
|
|
import com.zanxiang.module.util.DateUtil;
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
import com.zanxiang.module.util.JsonUtil;
|
|
-import com.zanxiang.module.util.URIUtil;
|
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Builder;
|
|
import lombok.Builder;
|
|
import lombok.Data;
|
|
import lombok.Data;
|
|
@@ -179,7 +180,11 @@ public class GameTencentMiniGameBackLogServiceImpl extends ServiceImpl<GameTence
|
|
.build();
|
|
.build();
|
|
try {
|
|
try {
|
|
log.error("腾讯小游戏回传参数:{}", JsonUtil.toString(request));
|
|
log.error("腾讯小游戏回传参数:{}", JsonUtil.toString(request));
|
|
- ResponseEntity<Map> response = restTemplate.postForEntity(this.getCallBackUrl(backLog), request, Map.class);
|
|
|
|
|
|
+ String callBackUrl = this.getCallBackUrl(backLog);
|
|
|
|
+ if (Strings.isBlank(callBackUrl)) {
|
|
|
|
+ return Tuple2.with(BackStatusEnum.FAILED, "监测链接未匹配到callBackUrl");
|
|
|
|
+ }
|
|
|
|
+ ResponseEntity<Map> response = restTemplate.postForEntity(callBackUrl, request, Map.class);
|
|
log.error("腾讯小游戏回传完成:{}", JsonUtil.toString(response.getBody()));
|
|
log.error("腾讯小游戏回传完成:{}", JsonUtil.toString(response.getBody()));
|
|
if (response.getStatusCode().is2xxSuccessful()) {
|
|
if (response.getStatusCode().is2xxSuccessful()) {
|
|
if (Objects.equals(response.getBody().get("code").toString(), "0")) {
|
|
if (Objects.equals(response.getBody().get("code").toString(), "0")) {
|
|
@@ -194,40 +199,29 @@ public class GameTencentMiniGameBackLogServiceImpl extends ServiceImpl<GameTence
|
|
}
|
|
}
|
|
|
|
|
|
private String getCallBackUrl(GameTencentMiniGameBackLog backLog) {
|
|
private String getCallBackUrl(GameTencentMiniGameBackLog backLog) {
|
|
- GameTencentMiniGameUser user = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
|
|
|
|
- .eq(GameTencentMiniGameUser::getGameId, backLog.getGameId())
|
|
|
|
- .eq(GameTencentMiniGameUser::getWechatAppId, backLog.getWechatAppId())
|
|
|
|
- .eq(GameTencentMiniGameUser::getWechatOpenid, backLog.getWechatOpenid())
|
|
|
|
- .eq(GameTencentMiniGameUser::getAdAccountId, backLog.getAdAccountId())
|
|
|
|
- .eq(GameTencentMiniGameUser::getBackType, BackTypeEnum.BACK_API.getBackType())
|
|
|
|
- .orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
|
|
- .last("limit 1"));
|
|
|
|
- String callBackUrl = Optional.ofNullable(user)
|
|
|
|
|
|
+ GameTencentMiniGameUser gameTencentMiniGameUser = gameTencentMiniGameUserService.getOne(
|
|
|
|
+ new LambdaQueryWrapper<GameTencentMiniGameUser>()
|
|
|
|
+ .eq(GameTencentMiniGameUser::getGameId, backLog.getGameId())
|
|
|
|
+ .eq(GameTencentMiniGameUser::getWechatAppId, backLog.getWechatAppId())
|
|
|
|
+ .eq(GameTencentMiniGameUser::getWechatOpenid, backLog.getWechatOpenid())
|
|
|
|
+ .eq(GameTencentMiniGameUser::getAdAccountId, backLog.getAdAccountId())
|
|
|
|
+ .eq(GameTencentMiniGameUser::getBackType, BackTypeEnum.BACK_API.getBackType())
|
|
|
|
+ .orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
|
|
+ .last("limit 1"));
|
|
|
|
+ String callBackUrl = Optional.ofNullable(gameTencentMiniGameUser)
|
|
.map(GameTencentMiniGameUser::getCallBackUrl)
|
|
.map(GameTencentMiniGameUser::getCallBackUrl)
|
|
.orElse(null);
|
|
.orElse(null);
|
|
- if (Strings.isNotBlank(callBackUrl)) {
|
|
|
|
|
|
+ if (Strings.isNotBlank(callBackUrl) || gameTencentMiniGameUser == null) {
|
|
return callBackUrl;
|
|
return callBackUrl;
|
|
}
|
|
}
|
|
- GameTencentMiniGameCallback tencentMiniGameCallback = gameTencentMiniGameCallbackService.getOne(
|
|
|
|
- new LambdaQueryWrapper<GameTencentMiniGameCallback>()
|
|
|
|
- .eq(GameTencentMiniGameCallback::getWechatOpenid, backLog.getWechatOpenid())
|
|
|
|
- .and(qw -> qw.eq(GameTencentMiniGameCallback::getImpressionId, backLog.getClickId())
|
|
|
|
- .or().eq(GameTencentMiniGameCallback::getRequestId, backLog.getClickId())
|
|
|
|
- )
|
|
|
|
- .orderByDesc(GameTencentMiniGameCallback::getClickTime)
|
|
|
|
- .last("limit 1"));
|
|
|
|
- String callBack = Optional.ofNullable(tencentMiniGameCallback)
|
|
|
|
- .map(GameTencentMiniGameCallback::getCallback)
|
|
|
|
- .orElse(null);
|
|
|
|
- if (Strings.isBlank(callBack)) {
|
|
|
|
- return "http://tracking.e.qq.com/conv";
|
|
|
|
- }
|
|
|
|
- callBackUrl = URIUtil.decodeURIComponent(callBack);
|
|
|
|
- if (user != null) {
|
|
|
|
- gameTencentMiniGameUserService.update(new LambdaUpdateWrapper<GameTencentMiniGameUser>()
|
|
|
|
- .set(GameTencentMiniGameUser::getCallBackUrl, callBackUrl)
|
|
|
|
- .eq(GameTencentMiniGameUser::getId, user.getId())
|
|
|
|
- );
|
|
|
|
|
|
+ //再次查询回传URL, 抛开时间限制条件, 腾讯坑爹监测数据有可能延迟
|
|
|
|
+ callBackUrl = gameTencentMiniGameCallbackService.getCallBackUrl(gameTencentMiniGameUser.getGameId(),
|
|
|
|
+ gameTencentMiniGameUser.getWechatOpenid(), gameTencentMiniGameUser.getClickId(),
|
|
|
|
+ gameTencentMiniGameUser.getRegisterTime(), false);
|
|
|
|
+ //回传url更新到用户信息中
|
|
|
|
+ if (Strings.isNotBlank(callBackUrl)) {
|
|
|
|
+ gameTencentMiniGameUser.setCallBackUrl(callBackUrl);
|
|
|
|
+ gameTencentMiniGameUserService.updateById(gameTencentMiniGameUser);
|
|
}
|
|
}
|
|
return callBackUrl;
|
|
return callBackUrl;
|
|
}
|
|
}
|