|
|
@@ -5,6 +5,7 @@ import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import cn.hutool.http.HttpUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.ytpm.agent.enums.AdRecordEnum;
|
|
|
import com.ytpm.agent.enums.UserStatusEnum;
|
|
|
import com.ytpm.agent.model.YtDitch;
|
|
|
import com.ytpm.app.enums.LoginType;
|
|
|
@@ -12,7 +13,10 @@ import com.ytpm.app.model.YtAppDefaultConfig;
|
|
|
import com.ytpm.app.model.YtDyzAdRecord;
|
|
|
import com.ytpm.app.model.YtDyzUser;
|
|
|
import com.ytpm.app.param.AppConfigUpdateParam;
|
|
|
+import com.ytpm.app.param.DyzAdRecordParam;
|
|
|
import com.ytpm.app.param.IosLoginParam;
|
|
|
+import com.ytpm.app.param.LoginParam;
|
|
|
+import com.ytpm.app.param.VisitorLoginParam;
|
|
|
import com.ytpm.app.param.WxLoginParam;
|
|
|
import com.ytpm.app.view.IosPowerResView;
|
|
|
import com.ytpm.app.view.IosUserInfo;
|
|
|
@@ -23,10 +27,12 @@ import com.ytpm.feign.RiskFeign;
|
|
|
import com.ytpm.general.RepMessage;
|
|
|
import com.ytpm.general.Result;
|
|
|
import com.ytpm.general.StatusCode;
|
|
|
+import com.ytpm.handle.CustomerException;
|
|
|
import com.ytpm.lemonios.dao.AdRecordMapper;
|
|
|
import com.ytpm.lemonios.dao.AppUserMapper;
|
|
|
import com.ytpm.lemonios.dao.DitchMapper;
|
|
|
import com.ytpm.lemonios.redis.RedisService;
|
|
|
+import com.ytpm.lemonios.service.AdService;
|
|
|
import com.ytpm.lemonios.service.AppUserService;
|
|
|
import com.ytpm.util.HttpClientUtil;
|
|
|
import io.swagger.annotations.Api;
|
|
|
@@ -45,6 +51,7 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
@@ -64,6 +71,8 @@ public class WxController {
|
|
|
@Resource
|
|
|
private AdRecordMapper recordMapper;
|
|
|
@Resource
|
|
|
+ private AdService adService;
|
|
|
+ @Resource
|
|
|
private RiskFeign riskFeign;
|
|
|
@Resource
|
|
|
private AppUserService appUserService;
|
|
|
@@ -160,22 +169,67 @@ public class WxController {
|
|
|
}
|
|
|
IosUserInfo userInfo = setIosUserInfo(param);
|
|
|
param.setLoginIp(HttpClientUtil.getClientIp(request));
|
|
|
- YtDyzUser old = appUserService.crudForNewTransIos(param, userInfo, LoginType.IOS.getTypeName());
|
|
|
+ YtDyzUser dyzUser = appUserService.crudForNewTransIos(param, userInfo, LoginType.IOS.getTypeName());
|
|
|
+ // 游客登陆校验
|
|
|
+ if (CollUtil.isNotEmpty(param.getPreAdList())) {
|
|
|
+ dyzUser.setLoginType(LoginType.VISITOR);
|
|
|
+ saveVisitorAdRecord(dyzUser, param, defaultConfig);
|
|
|
+ Result<?> result = riskFeign.checkLoginRisk(dyzUser);
|
|
|
+ if (result.getCode() != 200) {
|
|
|
+ String errorMessage = result.getMessage();
|
|
|
+ if (RepMessage.RISK_VISITOR_LOWER_VALUE.equals(errorMessage)) {
|
|
|
+ return Result.resultErr(StrUtil.emptyToDefault(defaultConfig.getLowValueTip(), errorMessage));
|
|
|
+ }
|
|
|
+ return Result.resultErr(errorMessage);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 状态 游客登陆前风控 -> 正常
|
|
|
+ YtDyzUser newUser = new YtDyzUser();
|
|
|
+ newUser.setUserId(dyzUser.getUserId());
|
|
|
+ newUser.setUserStatus(UserStatusEnum.NORMAL.getCode());
|
|
|
+ appUserMapper.updateUser(newUser);
|
|
|
//调用风控服务校验默认风控配置
|
|
|
- old.setRiskCode("313");
|
|
|
- Result<?> result = riskFeign.checkRisk(old);
|
|
|
+ dyzUser.setLoginType(LoginType.IOS);
|
|
|
+ dyzUser.setRiskCode("313");
|
|
|
+ Result<?> result = riskFeign.checkRisk(dyzUser);
|
|
|
if (result.getCode() != 200) {
|
|
|
return new Result<>(StatusCode.ACCESS_ERR, result.getMessage());
|
|
|
}
|
|
|
- if (old.getLastLoginTime() != null && old.getRegistryTime() != null) {
|
|
|
+ if (dyzUser.getLastLoginTime() != null && dyzUser.getRegistryTime() != null) {
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- old.setLastLoginTimeStr(sdf.format(old.getLastLoginTime()));
|
|
|
- old.setRegistryTimeStr(sdf.format(old.getRegistryTime()));
|
|
|
+ dyzUser.setLastLoginTimeStr(sdf.format(dyzUser.getLastLoginTime()));
|
|
|
+ dyzUser.setRegistryTimeStr(sdf.format(dyzUser.getRegistryTime()));
|
|
|
}
|
|
|
//调用风控服务校验默认风控配置
|
|
|
- return Result.resultOk(RepMessage.LOGIN_SUCCESS, old);
|
|
|
+ return Result.resultOk(RepMessage.LOGIN_SUCCESS, dyzUser);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveVisitorAdRecord(YtDyzUser ytDyzUser,IosLoginParam visitorLoginParam, WxDefaultConfig defaultConfig) {
|
|
|
+ List<DyzAdRecordParam> preAdList = visitorLoginParam.getPreAdList();
|
|
|
+ // 保存登陆前传递的广告记录
|
|
|
+ List<String> adRecordIds = new ArrayList<>();
|
|
|
+ if (CollUtil.isNotEmpty(preAdList)) {
|
|
|
+ BigDecimal totalRevenue = BigDecimal.ZERO;
|
|
|
+ for (DyzAdRecordParam adRecordParam : preAdList) {
|
|
|
+ if (adRecordParam == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ adRecordParam.setUserId(ytDyzUser.getUserId());
|
|
|
+ adRecordParam.setNickName(ytDyzUser.getNickName());
|
|
|
+ adRecordParam.setAppId(ytDyzUser.getAppId());
|
|
|
+ adRecordParam.setLoginStatus(AdRecordEnum.LOGIN_BEFORE.getCode());
|
|
|
+ String recordId = adService.saveRecordAndChangeUser(adRecordParam, ytDyzUser);
|
|
|
+ adRecordIds.add(recordId);
|
|
|
+ totalRevenue = adRecordParam.getRevenue() == null ? totalRevenue : totalRevenue.add(adRecordParam.getRevenue());
|
|
|
+ }
|
|
|
+ log.info(StrUtil.format("[visitor adRecords]userId:{} recordCount:{} revenue:{}",
|
|
|
+ ytDyzUser.getUserId(), adRecordIds.size(), totalRevenue.toPlainString()));
|
|
|
+ }
|
|
|
+ ytDyzUser.setPreAdRecordList(recordMapper.selectRecordByIds(AdRecordEnum.LOGIN_BEFORE.getCode(), adRecordIds));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @Deprecated
|
|
|
@PostMapping("/iosLoginCheck")
|
|
|
@ApiOperation("IOS登录校验")
|
|
|
@Transactional
|