|
@@ -1,12 +1,18 @@
|
|
|
package com.zanxiang.game.module.sdk.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.zanxiang.game.module.mybatis.entity.Agent;
|
|
|
import com.zanxiang.game.module.mybatis.entity.User;
|
|
|
+import com.zanxiang.game.module.mybatis.entity.UserLoginLog;
|
|
|
import com.zanxiang.game.module.mybatis.mapper.AgentMapper;
|
|
|
import com.zanxiang.game.module.sdk.service.IAgentService;
|
|
|
+import com.zanxiang.game.module.sdk.service.ICallBackService;
|
|
|
+import com.zanxiang.game.module.sdk.service.IUserLoginLogService;
|
|
|
import com.zanxiang.game.module.sdk.service.IUserService;
|
|
|
+import com.zanxiang.module.util.JsonUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.logging.log4j.util.Strings;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -14,8 +20,10 @@ import org.springframework.stereotype.Service;
|
|
|
import reactor.util.function.Tuple2;
|
|
|
import reactor.util.function.Tuples;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
@@ -28,8 +36,49 @@ public class AgentServiceImpl extends ServiceImpl<AgentMapper, Agent> implements
|
|
|
@Autowired
|
|
|
private IUserService userService;
|
|
|
|
|
|
- public void userAgentUpdate(Long userId, String channel) {
|
|
|
+ @Autowired
|
|
|
+ private IUserLoginLogService userLoginLogService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ICallBackService callBackService;
|
|
|
|
|
|
+ @Override
|
|
|
+ public void userAgentUpdate(User user, String channel) {
|
|
|
+ //渠道为空
|
|
|
+ if (Strings.isBlank(channel)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ log.error("接收到的渠道参数 user : {}, channel : {}", JsonUtil.toString(user), channel);
|
|
|
+ //判断用户是否超过30天未登录
|
|
|
+ List<UserLoginLog> userLoginLogList = userLoginLogService.list(new LambdaQueryWrapper<UserLoginLog>()
|
|
|
+ .eq(UserLoginLog::getUserId, user.getId())
|
|
|
+ .orderByDesc(UserLoginLog::getCreateTime)
|
|
|
+ .apply("limit 1"));
|
|
|
+ if (CollectionUtils.isEmpty(userLoginLogList)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //最近登录时间
|
|
|
+ LocalDateTime lastLoginTime = userLoginLogList.get(0).getCreateTime();
|
|
|
+ //最近登录未超过30天
|
|
|
+ if (lastLoginTime.plusDays(30L).isAfter(LocalDateTime.now())) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //30天未登录, 更新渠道
|
|
|
+ Map<String, String> urlParamMap = this.channelTransform(channel);
|
|
|
+ //查询渠道
|
|
|
+ String state = urlParamMap.get("state");
|
|
|
+ Agent agent = super.getOne(new LambdaQueryWrapper<Agent>()
|
|
|
+ .eq(Agent::getAgentKey, state));
|
|
|
+ if (agent == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //更新用户信息
|
|
|
+ userService.update(new LambdaUpdateWrapper<User>()
|
|
|
+ .set(User::getAgentId, agent.getId())
|
|
|
+ .set(User::getUpdateTime, LocalDateTime.now())
|
|
|
+ .eq(User::getId, user.getId()));
|
|
|
+ //回传用户信息
|
|
|
+ callBackService.userCallBack(user, Tuples.of(agent.getId(), urlParamMap));
|
|
|
}
|
|
|
|
|
|
@Override
|