|
|
@@ -1,5 +1,7 @@
|
|
|
package com.ytpm.question.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
@@ -11,6 +13,7 @@ import com.ytpm.agent.view.AgentAdGroupStaticsVO;
|
|
|
import com.ytpm.agent.view.AgentTopCountView;
|
|
|
import com.ytpm.app.model.YtDyzAdRecord;
|
|
|
import com.ytpm.app.model.YtDyzUser;
|
|
|
+import com.ytpm.app.param.DyzAdRecordDelayParam;
|
|
|
import com.ytpm.app.param.DyzAdRecordParam;
|
|
|
import com.ytpm.app.view.WxDefaultConfig;
|
|
|
import com.ytpm.feign.RiskFeign;
|
|
|
@@ -70,15 +73,15 @@ public class AdServiceImpl implements AdService {
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Result<?> saveRecord(DyzAdRecordParam param) {
|
|
|
+ public Result<String> saveRecord(DyzAdRecordParam param) {
|
|
|
YtDyzUser user = appUserMapper.selectPrimaryKey(param.getUserId());
|
|
|
- log.debug(StrUtil.format("[saveRecord] userId:{} revenue:{} ", param.getUserId(), param.getRevenue()));
|
|
|
if (Objects.isNull(user)) {
|
|
|
return Result.resultOk(RepMessage.SAVE_SUCCESS);
|
|
|
}
|
|
|
if (!UserStatusEnum.NORMAL.getCode().equals(user.getUserStatus())) {
|
|
|
return new Result<>(StatusCode.ACCESS_ERR, getTipsMsg());
|
|
|
}
|
|
|
+ log.debug(StrUtil.format("[saveRecord] userId:{} revenue:{} ", param.getUserId(), param.getRevenue()));
|
|
|
saveRecordAndChangeUser(param, user);
|
|
|
//调用风控广告校验
|
|
|
if (AdSourceTypeEnum.rewarded_video.getAdSourceType() == param.getAdSourceType()) {
|
|
|
@@ -87,7 +90,7 @@ public class AdServiceImpl implements AdService {
|
|
|
user.setPowerLimitTip(format);
|
|
|
Result<?> result = riskFeign.checkAdRisk(user);
|
|
|
if (result.getCode() != 200) {
|
|
|
- Result<Object> resultObj = new Result<>(StatusCode.ACCESS_ERR, getTipsMsg());
|
|
|
+ Result<String> resultObj = new Result<>(StatusCode.ACCESS_ERR, getTipsMsg());
|
|
|
// 766处理
|
|
|
if ("766".contains(result.getMessage())) {
|
|
|
resultObj.setData(result.getMessage());
|
|
|
@@ -107,6 +110,69 @@ public class AdServiceImpl implements AdService {
|
|
|
return split[RandomUtil.randomInt(split.length)];
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Result<String> delaySaveRecord(DyzAdRecordDelayParam param) {
|
|
|
+ YtDyzUser user = appUserMapper.selectPrimaryKey(param.getUserId());
|
|
|
+ if (Objects.isNull(user)) {
|
|
|
+ return Result.resultOk(RepMessage.SAVE_SUCCESS);
|
|
|
+ }
|
|
|
+ if (!UserStatusEnum.NORMAL.getCode().equals(user.getUserStatus())) {
|
|
|
+ return new Result<>(StatusCode.ACCESS_ERR, getTipsMsg());
|
|
|
+ }
|
|
|
+ log.info("[delaySaveRecord] userId:{}", param.getUserId());
|
|
|
+ if (CollectionUtil.isNotEmpty(param.getAdRecords())) {
|
|
|
+ YtDyzAdRecord insertEntity;
|
|
|
+ List<YtDyzAdRecord> saveList = new ArrayList<>();
|
|
|
+ BigDecimal totalRevenue = BigDecimal.ZERO;
|
|
|
+ for (DyzAdRecordParam adParam : param.getAdRecords()) {
|
|
|
+ handleTimeNull(adParam);
|
|
|
+ insertEntity = new YtDyzAdRecord();
|
|
|
+ BeanUtils.copyProperties(adParam, insertEntity);
|
|
|
+ insertEntity.setRecordId(IdUtil.fastSimpleUUID());
|
|
|
+ insertEntity.setUserId(user.getUserId());
|
|
|
+ insertEntity.setNetworkName(AdPlatformTypeEnum.getDesc(Integer.parseInt(adParam.getNetworkFormId())));
|
|
|
+ saveList.add(insertEntity);
|
|
|
+ if (AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())
|
|
|
+ && AdSourceTypeEnum.rewarded_video.getAdSourceType() == adParam.getAdSourceType()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (insertEntity.getRevenue() != null) {
|
|
|
+ totalRevenue = totalRevenue.add(insertEntity.getRevenue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (CollUtil.isNotEmpty(saveList)) {
|
|
|
+ if (param.getLoginStatus() != null && AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())) {
|
|
|
+ adRecordMapper.batchAddVisitor(saveList);
|
|
|
+ } else {
|
|
|
+ adRecordMapper.batchAdd(saveList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ appUserMapper.updateTotal(user.getUserId(), saveList.size(), totalRevenue);
|
|
|
+ }
|
|
|
+ return Result.resultOk(RepMessage.SAVE_SUCCESS);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 处理传入广告记录 beginTime FinishTime可能为null的情况
|
|
|
+ */
|
|
|
+ private void handleTimeNull(DyzAdRecordParam param) {
|
|
|
+ param.setFinishTime(verifyTimeParam("finishTime", param.getFinishTime(), null));
|
|
|
+ param.setBeginTime(verifyTimeParam("beginTime", param.getBeginTime(), param.getFinishTime()));
|
|
|
+ }
|
|
|
+
|
|
|
+ private String verifyTimeParam(String fieldName, String value, String defaultValue) {
|
|
|
+ if (Objects.isNull(value) || "null".equals(value)) {
|
|
|
+ if ("null".equals(value)) {
|
|
|
+ log.warn("param[{}] value '{}' is null !", fieldName, value);
|
|
|
+ }
|
|
|
+ return StrUtil.isEmpty(defaultValue) ? DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss") : defaultValue;
|
|
|
+ }
|
|
|
+ return value;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 根据应用查询广告数量
|
|
|
*/
|
|
|
@@ -298,13 +364,8 @@ public class AdServiceImpl implements AdService {
|
|
|
// @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
|
|
public String saveRecordAndChangeUser(DyzAdRecordParam param, YtDyzUser user) {
|
|
|
//增加广告记录
|
|
|
+ handleTimeNull(param);
|
|
|
YtDyzAdRecord adRecord = new YtDyzAdRecord();
|
|
|
- if (Objects.isNull(param.getBeginTime()) || "null".equals(param.getBeginTime())) {
|
|
|
- if ("null".equals(param.getBeginTime())) {
|
|
|
- log.warn("param beginTime is null !");
|
|
|
- }
|
|
|
- param.setBeginTime(param.getFinishTime());
|
|
|
- }
|
|
|
BeanUtils.copyProperties(param, adRecord);
|
|
|
adRecord.setRecordId(IdUtil.fastSimpleUUID());
|
|
|
adRecord.setNetworkName(AdPlatformTypeEnum.getDesc(Integer.parseInt(param.getNetworkFormId())));
|