|
@@ -9,6 +9,7 @@ import com.github.sd4324530.jtuple.Tuple2;
|
|
|
import com.zanxiang.advertising.tencent.base.AdvertisingTencentServer;
|
|
|
import com.zanxiang.advertising.tencent.base.rpc.IUserActionSetRpc;
|
|
|
import com.zanxiang.game.back.serve.dao.mapper.GameTencentMiniGameRoleRegisterMapper;
|
|
|
+import com.zanxiang.game.back.serve.pojo.TutorialFinish;
|
|
|
import com.zanxiang.game.back.serve.pojo.dto.GameTencentMiniGameRoleRegisterDTO;
|
|
|
import com.zanxiang.game.back.serve.pojo.entity.GameBackPolicy;
|
|
|
import com.zanxiang.game.back.serve.pojo.entity.GameTencentMiniGameBackLog;
|
|
@@ -24,11 +25,13 @@ import com.zanxiang.game.back.serve.service.IGameTencentMiniGameUserService;
|
|
|
import com.zanxiang.game.module.base.ServerInfo;
|
|
|
import com.zanxiang.game.module.base.pojo.vo.AgentRpcVO;
|
|
|
import com.zanxiang.game.module.base.rpc.IAgentRpc;
|
|
|
+import com.zanxiang.module.util.JsonUtil;
|
|
|
import com.zanxiang.module.util.bean.BeanUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.apache.logging.log4j.util.Strings;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -123,14 +126,17 @@ public class GameTencentMiniGameRoleRegisterServiceImpl extends ServiceImpl<Game
|
|
|
}
|
|
|
|
|
|
private Tuple2<BackStatusEnum, String> doCallback(GameTencentMiniGameRoleRegister roleRegisterLog) {
|
|
|
+ //最近的注册回传记录
|
|
|
GameTencentMiniGameUser user = gameTencentMiniGameUserService.getOne(new LambdaQueryWrapper<GameTencentMiniGameUser>()
|
|
|
.eq(GameTencentMiniGameUser::getGameId, roleRegisterLog.getGameId())
|
|
|
.eq(GameTencentMiniGameUser::getWechatAppId, roleRegisterLog.getWechatAppId())
|
|
|
.eq(GameTencentMiniGameUser::getWechatOpenid, roleRegisterLog.getWechatOpenid())
|
|
|
.eq(GameTencentMiniGameUser::getAdAccountId, roleRegisterLog.getAdAccountId())
|
|
|
.orderByDesc(GameTencentMiniGameUser::getCreateTime)
|
|
|
- .last("limit 1")
|
|
|
- );
|
|
|
+ .last("limit 1"));
|
|
|
+ //回传策略
|
|
|
+ GameBackPolicy gameBackPolicy = roleRegisterLog.getBackPolicyId() == null ? null
|
|
|
+ : gameBackPolicyService.getById(roleRegisterLog.getBackPolicyId());
|
|
|
|
|
|
//判断创角是否回传
|
|
|
if (gameTencentMiniGameBackLogService.count(new LambdaQueryWrapper<GameTencentMiniGameBackLog>()
|
|
@@ -141,29 +147,61 @@ public class GameTencentMiniGameRoleRegisterServiceImpl extends ServiceImpl<Game
|
|
|
.eq(GameTencentMiniGameBackLog::getActionType, ActionTypeEnum.CREATE_ROLE.getActionType())
|
|
|
.eq(GameTencentMiniGameBackLog::getBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
|
|
|
) > 0) {
|
|
|
+ //新手引导回传
|
|
|
+ this.tutorialFinishBack(roleRegisterLog, gameBackPolicy);
|
|
|
//创角已回传
|
|
|
return Tuple2.with(BackStatusEnum.NO, "创角已回传,默认不重复传");
|
|
|
}
|
|
|
|
|
|
//回传策略等级控制
|
|
|
- if (roleRegisterLog.getBackPolicyId() != null) {
|
|
|
- GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(roleRegisterLog.getBackPolicyId());
|
|
|
- if (gameBackPolicy.getRoleLevelMin() != null && roleRegisterLog.getRoleLevel() != null
|
|
|
- && roleRegisterLog.getRoleLevel() < gameBackPolicy.getRoleLevelMin()) {
|
|
|
- return Tuple2.with(BackStatusEnum.NO, "等级小于回传策略等级 " + gameBackPolicy.getRoleLevelMin() + "。不回传");
|
|
|
- }
|
|
|
+ if (gameBackPolicy != null && gameBackPolicy.getRoleLevelMin() != null && roleRegisterLog.getRoleLevel() != null
|
|
|
+ && roleRegisterLog.getRoleLevel() < gameBackPolicy.getRoleLevelMin()) {
|
|
|
+ return Tuple2.with(BackStatusEnum.NO, "等级小于回传策略等级 " + gameBackPolicy.getRoleLevelMin() + "。不回传");
|
|
|
}
|
|
|
|
|
|
- //判断注册是否回传
|
|
|
- if (user != null && Objects.equals(BackStatusEnum.NO.getBackStatus(), user.getBackStatus())) {
|
|
|
- //注册回传
|
|
|
- gameTencentMiniGameUserService.userBack(user);
|
|
|
+ //判断注册或者沉默唤起是否回传
|
|
|
+ if (user != null) {
|
|
|
+ if (Objects.equals(BackStatusEnum.NO.getBackStatus(), user.getBackStatus())
|
|
|
+ || Objects.equals(BackStatusEnum.NO.getBackStatus(), user.getReActiveBackStatus())) {
|
|
|
+ //注册或者沉默唤起回传
|
|
|
+ gameTencentMiniGameUserService.userBack(user);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//创角回传
|
|
|
return gameTencentMiniGameBackLogService.roleRegisterBack(roleRegisterLog);
|
|
|
}
|
|
|
|
|
|
+ private void tutorialFinishBack(GameTencentMiniGameRoleRegister roleRegisterLog, GameBackPolicy gameBackPolicy) {
|
|
|
+ //角色判断完成新手引导回传
|
|
|
+ if (super.count(new LambdaQueryWrapper<GameTencentMiniGameRoleRegister>()
|
|
|
+ .eq(GameTencentMiniGameRoleRegister::getGameId, roleRegisterLog.getGameId())
|
|
|
+ .eq(GameTencentMiniGameRoleRegister::getRoleId, roleRegisterLog.getRoleId())
|
|
|
+ .eq(GameTencentMiniGameRoleRegister::getTutorialFinishBackStatus, BackStatusEnum.SUCCESS.getBackStatus())
|
|
|
+ ) > 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //回传策略不存在, 新手引导回传条件不存在, 不回传
|
|
|
+ if (gameBackPolicy == null || Strings.isBlank(gameBackPolicy.getTutorialFinishJson())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ TutorialFinish tutorialFinish = JsonUtil.toObj(gameBackPolicy.getTutorialFinishJson(), TutorialFinish.class);
|
|
|
+ //条件设置为空, 不回传
|
|
|
+ if (tutorialFinish == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //不满足等级条件判断, 不回传
|
|
|
+ if (tutorialFinish.getRoleLevel() != null && tutorialFinish.getRoleLevel() < gameBackPolicy.getRoleLevelMin()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //执行完成新手引导回传
|
|
|
+ BackStatusEnum backStatusEnum = gameTencentMiniGameBackLogService.tutorialFinishBack(roleRegisterLog).first;
|
|
|
+ //更新新手引导回传状态更新
|
|
|
+ super.update(new LambdaUpdateWrapper<GameTencentMiniGameRoleRegister>()
|
|
|
+ .set(GameTencentMiniGameRoleRegister::getTutorialFinishBackStatus, backStatusEnum.getBackStatus())
|
|
|
+ .eq(GameTencentMiniGameRoleRegister::getId, roleRegisterLog.getId()));
|
|
|
+ }
|
|
|
+
|
|
|
private GameTencentMiniGameRoleRegisterVO toVOSimple(GameTencentMiniGameRoleRegister roleRegisterLog) {
|
|
|
if (roleRegisterLog == null) {
|
|
|
return null;
|