|
@@ -32,6 +32,7 @@ import com.ytpm.middle.view.UserRankingListVO;
|
|
|
import com.ytpm.question.dao.AdRecordMapper;
|
|
import com.ytpm.question.dao.AdRecordMapper;
|
|
|
import com.ytpm.question.dao.AppUserMapper;
|
|
import com.ytpm.question.dao.AppUserMapper;
|
|
|
import com.ytpm.question.service.AdService;
|
|
import com.ytpm.question.service.AdService;
|
|
|
|
|
+import com.ytpm.question.service.AppUserService;
|
|
|
import com.ytpm.question.view.AgentNetworkAgg;
|
|
import com.ytpm.question.view.AgentNetworkAgg;
|
|
|
import com.ytpm.util.DateUtil;
|
|
import com.ytpm.util.DateUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -42,6 +43,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -63,6 +65,8 @@ public class AdServiceImpl implements AdService {
|
|
|
private AdRecordMapper adRecordMapper;
|
|
private AdRecordMapper adRecordMapper;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private AppUserMapper appUserMapper;
|
|
private AppUserMapper appUserMapper;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private AppUserService appUserService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private RiskFeign riskFeign;
|
|
private RiskFeign riskFeign;
|
|
|
|
|
|
|
@@ -128,6 +132,9 @@ public class AdServiceImpl implements AdService {
|
|
|
List<String> filter = new ArrayList<>();
|
|
List<String> filter = new ArrayList<>();
|
|
|
List<YtDyzAdRecord> saveList = new ArrayList<>();
|
|
List<YtDyzAdRecord> saveList = new ArrayList<>();
|
|
|
BigDecimal totalRevenue = BigDecimal.ZERO;
|
|
BigDecimal totalRevenue = BigDecimal.ZERO;
|
|
|
|
|
+ BigDecimal redPackRevenue = BigDecimal.ZERO; // 用户红包收益
|
|
|
|
|
+ BigDecimal userRevenueRate = appUserService.getUserRevenueRate(user.getAppId()); // 用户红包收益比例
|
|
|
|
|
+ boolean isLoginAfter = param.getLoginStatus() != null && AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus());
|
|
|
for (DyzAdRecordParam adParam : param.getAdRecords()) {
|
|
for (DyzAdRecordParam adParam : param.getAdRecords()) {
|
|
|
handleTimeNull(adParam);
|
|
handleTimeNull(adParam);
|
|
|
String takuAdId = null;
|
|
String takuAdId = null;
|
|
@@ -158,14 +165,21 @@ public class AdServiceImpl implements AdService {
|
|
|
}
|
|
}
|
|
|
if (insertEntity.getRevenue() != null) {
|
|
if (insertEntity.getRevenue() != null) {
|
|
|
totalRevenue = totalRevenue.add(insertEntity.getRevenue());
|
|
totalRevenue = totalRevenue.add(insertEntity.getRevenue());
|
|
|
|
|
+ if (isLoginAfter ) {
|
|
|
|
|
+ redPackRevenue = redPackRevenue.add(insertEntity.getRevenue().multiply(userRevenueRate));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if (CollUtil.isNotEmpty(saveList)) {
|
|
if (CollUtil.isNotEmpty(saveList)) {
|
|
|
- log.info("[delaySaveRecord] saveCount:{}, {}", saveList.size(), saveList.stream().map(YtDyzAdRecord::getRecordId).collect(Collectors.joining(",")));
|
|
|
|
|
- if (param.getLoginStatus() != null && AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())) {
|
|
|
|
|
|
|
+ log.info("[delaySaveRecord] saveCount:{}, {}", saveList.size(), saveList.stream()
|
|
|
|
|
+ .map(YtDyzAdRecord::getRecordId).collect(Collectors.joining(",")));
|
|
|
|
|
+ if (isLoginAfter) {
|
|
|
adRecordMapper.batchAddVisitor(saveList);
|
|
adRecordMapper.batchAddVisitor(saveList);
|
|
|
} else {
|
|
} else {
|
|
|
adRecordMapper.batchAdd(saveList);
|
|
adRecordMapper.batchAdd(saveList);
|
|
|
|
|
+ if (redPackRevenue.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
+ appUserMapper.updateUserRedPacket(user.getUserId(), redPackRevenue.setScale(5, RoundingMode.HALF_UP));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
appUserMapper.updateTotal(user.getUserId(), saveList.size(), totalRevenue);
|
|
appUserMapper.updateTotal(user.getUserId(), saveList.size(), totalRevenue);
|
|
|
}
|
|
}
|
|
@@ -182,7 +196,7 @@ public class AdServiceImpl implements AdService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private String verifyTimeParam(String fieldName, String value, String defaultValue) {
|
|
private String verifyTimeParam(String fieldName, String value, String defaultValue) {
|
|
|
- if (Objects.isNull(value) || "null".equals(value)) {
|
|
|
|
|
|
|
+ if (StrUtil.isEmpty(value) || "null".equals(value)) {
|
|
|
if ("null".equals(value)) {
|
|
if ("null".equals(value)) {
|
|
|
log.warn("param[{}] value '{}' is null !", fieldName, value);
|
|
log.warn("param[{}] value '{}' is null !", fieldName, value);
|
|
|
}
|
|
}
|
|
@@ -391,7 +405,19 @@ public class AdServiceImpl implements AdService {
|
|
|
if (param.getLoginStatus() != null && AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())) {
|
|
if (param.getLoginStatus() != null && AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())) {
|
|
|
adRecordMapper.addOneVisitor(adRecord);
|
|
adRecordMapper.addOneVisitor(adRecord);
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ BigDecimal redPackRevenue = BigDecimal.ZERO;
|
|
|
|
|
+ BigDecimal userRevenueRate = appUserService.getUserRevenueRate(user.getAppId());
|
|
|
|
|
+ if (userRevenueRate != null) {
|
|
|
|
|
+ adRecord.setRevenueRate(userRevenueRate.toPlainString());
|
|
|
|
|
+ if(adRecord.getRevenue() != null && adRecord.getRevenue().compareTo(BigDecimal.ZERO) > 0){
|
|
|
|
|
+ redPackRevenue = adRecord.getRevenue().multiply(userRevenueRate).setScale(5, RoundingMode.HALF_UP);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
adRecordMapper.addOne(adRecord);
|
|
adRecordMapper.addOne(adRecord);
|
|
|
|
|
+ // 更新用户红包余额
|
|
|
|
|
+ if (redPackRevenue.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
|
+ appUserMapper.updateUserRedPacket(user.getUserId(), redPackRevenue);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
boolean updateUserTotal = !AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())
|
|
boolean updateUserTotal = !AdRecordEnum.LOGIN_BEFORE.getCode().equals(param.getLoginStatus())
|
|
|
|| AdSourceTypeEnum.rewarded_video.getAdSourceType() != param.getAdSourceType();
|
|
|| AdSourceTypeEnum.rewarded_video.getAdSourceType() != param.getAdSourceType();
|