Browse Source

feature-img-1.0:优化审核逻辑

master
chengkun 4 years ago
parent
commit
883ff33545
  1. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ProfitVerifyOrderDto.java
  2. 3
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ProfitVerifyOrderInsertDto.java
  3. 10
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java
  4. 3
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java
  5. 13
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java
  6. 83
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java
  7. 8
      bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ProfitVerifyOrderDto.java

@ -14,7 +14,7 @@ import java.math.BigDecimal;
@Getter @Getter
@Setter @Setter
@ApiModel("收益审核订单审核接收类") @ApiModel("收益审核订单审核接收类")
public class ProfitVerifyOrderDto implements Serializable { public class ProfitVerifyOrderDto implements Serializable {
@NotNull(message = "主键id") @NotNull(message = "主键id")
@ApiModelProperty(value="主键id") @ApiModelProperty(value="主键id")

3
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/ProfitVerifyOrderInsertDto.java

@ -22,4 +22,7 @@ public class ProfitVerifyOrderInsertDto implements Serializable {
@ApiModelProperty(value="平台(0->抖音;1->快手)") @ApiModelProperty(value="平台(0->抖音;1->快手)")
private String platform; private String platform;
@ApiModelProperty(value="应用")
private String appType;
} }

10
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java

@ -117,4 +117,14 @@ public interface CreatorProfitMapper extends BaseMapper<CreatorProfit> {
* @param list - * @param list -
*/ */
void batchInsertInviteProfit(@Param("list") List<CreatorProfit> list); void batchInsertInviteProfit(@Param("list") List<CreatorProfit> list);
/**
* 查询所有指定平台类型待入账信息
* @param platform 平台
* @param appType 应用
* @param type 收益类型
* @param date 日期
* @return -
*/
List<CreatorProfit> queryPreProfit(@Param("platform") String platform,@Param("appType") String appType,@Param("type") String type,@Param("date") String date);
} }

3
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java

@ -158,7 +158,8 @@ public interface CreatorProfitService {
* @param platform 平台 * @param platform 平台
* @param appType 应用 * @param appType 应用
* @param type 收益类型 * @param type 收益类型
* @param date 日期
* @return - * @return -
*/ */
List<CreatorProfit> queryPreProfit(String platform,String appType,String type); List<CreatorProfit> queryPreProfit(String platform,String appType,String type,String date);
} }

13
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java

@ -60,6 +60,8 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long times = System.currentTimeMillis(); long times = System.currentTimeMillis();
String date = format.format(times); String date = format.format(times);
//缓存中下载总数+1
tiktokImgService.writeDownloadTotalNum(creatorProfit.getAppType(),creatorProfit.getPlatform());
//检查收益表是否存在广告记录,存在则更新次数 //检查收益表是否存在广告记录,存在则更新次数
boolean b = this.checkCreatorProfitExist(creatorProfit.getCreatorId(),creatorProfit.getImgId(),creatorProfit.getAppType(),creatorProfit.getPlatform(),"0",date); boolean b = this.checkCreatorProfitExist(creatorProfit.getCreatorId(),creatorProfit.getImgId(),creatorProfit.getAppType(),creatorProfit.getPlatform(),"0",date);
if(b){ if(b){
@ -101,6 +103,8 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long times = System.currentTimeMillis(); long times = System.currentTimeMillis();
String date = format.format(times); String date = format.format(times);
//缓存中下载总数+1
tiktokImgService.writeDownloadTotalNum(creatorProfit.getAppType(),creatorProfit.getPlatform());
//查询邀请表 //查询邀请表
LambdaQueryWrapper<InviteLog> wrapper = new LambdaQueryWrapper<InviteLog>(); LambdaQueryWrapper<InviteLog> wrapper = new LambdaQueryWrapper<InviteLog>();
wrapper.eq(InviteLog::getInvitedCreatorId, creatorProfit.getCreatorId()); wrapper.eq(InviteLog::getInvitedCreatorId, creatorProfit.getCreatorId());
@ -293,12 +297,7 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
} }
@Override @Override
public List<CreatorProfit> queryPreProfit(String platform, String appType, String type) { public List<CreatorProfit> queryPreProfit(String platform, String appType, String type, String date) {
LambdaQueryWrapper<CreatorProfit> wrapper = new LambdaQueryWrapper<>(); return creatorProfitMapper.queryPreProfit(platform, appType, type, date);
wrapper.eq(CreatorProfit::getPlatform, platform);
wrapper.eq(CreatorProfit::getAppType, appType);
wrapper.eq(CreatorProfit::getType, type);
wrapper.eq(CreatorProfit::getStatus, "0");
return creatorProfitMapper.selectList(wrapper);
} }
} }

83
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java

@ -44,6 +44,7 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService {
order.setAmt(params.getAmt()); order.setAmt(params.getAmt());
order.setAdminId(params.getAdminId()); order.setAdminId(params.getAdminId());
order.setPlatform(params.getPlatform()); order.setPlatform(params.getPlatform());
order.setAppType(params.getAppType());
order.setCreateTime(new Date()); order.setCreateTime(new Date());
order.setVerifyStatus("0"); order.setVerifyStatus("0");
return profitVerifyOrderMapper.insert(order); return profitVerifyOrderMapper.insert(order);
@ -98,78 +99,50 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService {
//昨日总收益的10%作为邀请收益 //昨日总收益的10%作为邀请收益
BigDecimal yesterdayTotalInviteProfit = params.getAmt().multiply(BigDecimal.valueOf(0.1)); BigDecimal yesterdayTotalInviteProfit = params.getAmt().multiply(BigDecimal.valueOf(0.1));
//获取昨日日期 //获取昨日日期
Date today = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24); Date yesterday = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String date = simpleDateFormat.format(today); String date = simpleDateFormat.format(yesterday);
String tiktokKey = RedisKeyConstant.TIKTOK_IMG_TOTAL_DOWNLOAD_NUM_KEY + date; String tiktokKey = RedisKeyConstant.TIKTOK_IMG_TOTAL_DOWNLOAD_NUM_KEY + date;
String hashKey = params.getAppType()+":"+ params.getPlatform(); String hashKey = params.getAppType()+":"+ params.getPlatform();
if(params.getPlatform().equals(ProfitOrderConstant.TIKTOK) && params.getAppType().equals(ProfitOrderConstant.BNYER_IMG)){ if(redisService.hasHashKey(tiktokKey, hashKey)){
if(redisService.hasHashKey(tiktokKey, hashKey)){ //存在昨日平台下载数量
//存在昨日平台下载数量 Integer platformDownloadNum = redisService.getCacheMapValue(tiktokKey, hashKey);
Integer platformDownloadNum = (Integer) redisService.getCacheMapValue(tiktokKey, hashKey); //广告单价
//广告单价 BigDecimal adPrice = yesterdayTotalAdProfit.divide(BigDecimal.valueOf(platformDownloadNum), 3, BigDecimal.ROUND_DOWN);
BigDecimal adPrice = yesterdayTotalAdProfit.divide(BigDecimal.valueOf(platformDownloadNum), 3, BigDecimal.ROUND_DOWN); //邀请单价
//邀请单价 BigDecimal invitePrice = yesterdayTotalInviteProfit.divide(BigDecimal.valueOf(platformDownloadNum), 3, BigDecimal.ROUND_DOWN);
BigDecimal invitePrice = yesterdayTotalInviteProfit.divide(BigDecimal.valueOf(platformDownloadNum), 3, BigDecimal.ROUND_DOWN); //查出昨日对应平台的所有广告待入账信息
//查出昨日对应平台的所有广告待入账信息 List<CreatorProfit> adProfits = creatorProfitService.queryPreProfit(params.getPlatform(), params.getAppType(), "0",date);
List<CreatorProfit> adProfits = creatorProfitService.queryPreProfit(params.getPlatform(), params.getAppType(), "0"); if(adProfits.size() > 0){
if(adProfits.size() > 0){ for (CreatorProfit adProfit : adProfits) {
for (CreatorProfit adProfit : adProfits) { //设置广告收益
//设置广告收益 adProfit.setProfit(BigDecimal.valueOf(adProfit.getDownloadNum()).multiply(adPrice));
adProfit.setProfit(BigDecimal.valueOf(adProfit.getDownloadNum()).multiply(adPrice)); adProfit.setConfirmStatus("0");
adProfit.setConfirmStatus("0"); adProfit.setIncomeTime(new Date());
adProfit.setIncomeTime(new Date()); adProfit.setStatus("1");
adProfit.setUpdateTime(new Date()); creatorProfitService.update(adProfit);
} }
} }
//查出昨日对应平台的所有邀请待入账信息 //查出昨日对应平台的所有邀请待入账信息
List<CreatorProfit> inviteProfits = creatorProfitService.queryPreProfit(params.getPlatform(), params.getAppType(), "1"); List<CreatorProfit> inviteProfits = creatorProfitService.queryPreProfit(params.getPlatform(), params.getAppType(), "1",date);
if(inviteProfits.size() > 0){ if(inviteProfits.size() > 0){
//设置邀请收益 //设置邀请收益
for (CreatorProfit inviteProfit : inviteProfits) { for (CreatorProfit inviteProfit : inviteProfits) {
inviteProfit.setProfit(BigDecimal.valueOf(inviteProfit.getDownloadNum()).multiply(invitePrice)); inviteProfit.setProfit(BigDecimal.valueOf(inviteProfit.getDownloadNum()).multiply(invitePrice));
inviteProfit.setConfirmStatus("0"); inviteProfit.setConfirmStatus("0");
inviteProfit.setIncomeTime(new Date()); inviteProfit.setIncomeTime(new Date());
inviteProfit.setUpdateTime(new Date()); inviteProfit.setStatus("1");
creatorProfitService.update(inviteProfit);
} }
//设置完结算收益,删除数量缓存
redisService.deleteHashKey(tiktokKey,hashKey);
//TODO 逻辑待优化
return true;
} }
} }
}else if(params.getPlatform().equals(ProfitOrderConstant.FAST_HAND) && params.getAppType().equals(ProfitOrderConstant.BNYER_IMG)){
//昨日快手平台总下载量
if(redisService.hasHashKey(tiktokKey, hashKey)){
//存在昨日平台下载数量
Integer platformDownloadNum = (Integer) redisService.getCacheMapValue(tiktokKey, hashKey);
//广告单价
BigDecimal adPrice = yesterdayTotalAdProfit.divide(BigDecimal.valueOf(platformDownloadNum), 3, BigDecimal.ROUND_DOWN);
//邀请单价
BigDecimal invitePrice = yesterdayTotalInviteProfit.divide(BigDecimal.valueOf(platformDownloadNum), 3, BigDecimal.ROUND_DOWN);
//查出昨日对应平台的所有广告待入账信息
List<CreatorProfit> adProfits = creatorProfitService.queryPreProfit(params.getPlatform(), params.getAppType(), "0");
if(adProfits.size() > 0){
for (CreatorProfit adProfit : adProfits) {
//设置广告收益
adProfit.setProfit(BigDecimal.valueOf(adProfit.getDownloadNum()).multiply(adPrice));
adProfit.setConfirmStatus("0");
adProfit.setIncomeTime(new Date());
adProfit.setUpdateTime(new Date());
}
}
//查出昨日对应平台的所有邀请待入账信息
List<CreatorProfit> inviteProfits = creatorProfitService.queryPreProfit(params.getPlatform(), params.getAppType(), "1");
if(inviteProfits.size() > 0){
//设置邀请收益
for (CreatorProfit inviteProfit : inviteProfits) {
inviteProfit.setProfit(BigDecimal.valueOf(inviteProfit.getDownloadNum()).multiply(invitePrice));
inviteProfit.setConfirmStatus("0");
inviteProfit.setIncomeTime(new Date());
inviteProfit.setUpdateTime(new Date());
}
}
}
}
//TODO 待补充完善结算方法
}else{ }else{
//审核不通过,流程结束 //审核不通过,流程结束
return false;
} }
return false; return false;
} }

8
bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml

@ -152,4 +152,12 @@
#{item.platform},#{item.appType}) #{item.platform},#{item.appType})
</foreach> </foreach>
</insert> </insert>
<select id="queryPreProfit" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from img_creator_profit
where platform = #{platform} and app_type = #{appType} and type = #{type} and status = '0'
and DATE_FORMAT(create_time,'%Y-%m-%d') = #{date}
</select>
</mapper> </mapper>

Loading…
Cancel
Save