|
|
@@ -12,7 +12,7 @@ import com.ytpm.agent.enums.UserStatusEnum;
|
|
|
import com.ytpm.app.model.YtDyzLoginRecord;
|
|
|
import com.ytpm.app.model.YtDyzUser;
|
|
|
import com.ytpm.app.param.WxLoginParam;
|
|
|
-import com.ytpm.app.view.WxUserInfo;
|
|
|
+import com.ytpm.app.view.WxDefaultConfig;
|
|
|
import com.ytpm.constant.StrConstant;
|
|
|
import com.ytpm.feign.RiskFeign;
|
|
|
import com.ytpm.general.Result;
|
|
|
@@ -33,8 +33,11 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author Marx
|
|
|
@@ -63,12 +66,21 @@ public class VisitorController {
|
|
|
@ApiOperation("游客登录")
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Result<YtDyzUser> visitorLogin(@RequestBody WxLoginParam param, HttpServletRequest request) {
|
|
|
+ // 唯一性判断
|
|
|
+ // 1.查询设备ID不存在记录 则根据设备id+渠道id注册用户
|
|
|
+ // 2.查询设备ID存在记录 则根据渠道ID控制唯一性,同步出路风控记录
|
|
|
+ //根据应用获取登陆配置
|
|
|
+ WxDefaultConfig defaultConfig = appUserMapper.getDefaultConfig(param.getAppType());
|
|
|
+ if(Objects.isNull(defaultConfig)){
|
|
|
+ return new Result<>(StatusCode.ACCESS_ERR,"游客登录失败,未找到相应配置!");
|
|
|
+ }
|
|
|
+ param.setAppId(defaultConfig.getPlatformAppId());
|
|
|
param.setLoginIp(getClientIp(request));
|
|
|
- //获取该设备最后一次注册的用户信息
|
|
|
- YtDyzUser registryUser = appUserMapper.getLastRegistryUser(param.getDeviceId());
|
|
|
+ //获取该设备最后一次注册的用户信息(包含查询风控记录)
|
|
|
+ List<YtDyzUser> registryUser = appUserMapper.getLastRegistryUser(param.getDeviceId());
|
|
|
//该设备未注册过用户
|
|
|
YtDyzUser old;
|
|
|
- if(Objects.isNull(registryUser)) {
|
|
|
+ if(CollUtil.isEmpty(registryUser)) {
|
|
|
old = new YtDyzUser();
|
|
|
registerUser(param, old);
|
|
|
}else{
|
|
|
@@ -76,13 +88,17 @@ public class VisitorController {
|
|
|
old = appUserMapper.getByDeviceAndDitch(param.getDeviceId(), param.getDitchId());
|
|
|
//不存在则说明该渠道为新注册用户,需要风控校验注册是否在规则允许范围内
|
|
|
if(Objects.isNull(old)) {
|
|
|
- Result<?> result = riskFeign.checkRegRisk(registryUser);
|
|
|
+ YtDyzUser ytDyzUser = registryUser.stream()
|
|
|
+ .sorted(Comparator.comparing(YtDyzUser::getRegistryTime).reversed())
|
|
|
+ .collect(Collectors.toList()).get(0);
|
|
|
+ Result<?> result = riskFeign.checkRegRisk(ytDyzUser);
|
|
|
if(result.getCode()!=200){
|
|
|
return new Result<>(StatusCode.ACCESS_ERR,result.getMessage());
|
|
|
}
|
|
|
old = new YtDyzUser();
|
|
|
registerUser(param, old);
|
|
|
- }else{//当前渠道已有用户,校验用户是否处于风控中 & 更新用户信息
|
|
|
+ }else{
|
|
|
+ //当前渠道已有用户,校验用户是否处于风控中 & 更新用户信息
|
|
|
if(!old.getUserStatus().equals(UserStatusEnum.NORMAL.getCode())){
|
|
|
return new Result<>(StatusCode.ACCESS_ERR,getTipsMsg());
|
|
|
}
|