diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java index 4f80fe8..44d9392 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java @@ -152,4 +152,13 @@ public interface CreatorProfitService { * @return - */ List queryFrontEndProfitAmt(Long creatorId, String type); + + /** + * 查询所有指定平台类型待入账信息 + * @param platform 平台 + * @param appType 应用 + * @param type 收益类型 + * @return - + */ + List queryPreProfit(String platform,String appType,String type); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java index c48d083..d621ca8 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java @@ -1,8 +1,10 @@ package com.bnyer.img.service.impl; +import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.bnyer.common.core.utils.StringUtils; +import com.bnyer.common.core.utils.uuid.IdUtils; import com.bnyer.common.redis.service.RedisService; import com.bnyer.img.domain.CreatorProfit; import com.bnyer.img.domain.InviteLog; @@ -73,6 +75,21 @@ public class CreatorProfitServiceImpl implements CreatorProfitService { creatorProfit.setIsShow("1"); creatorProfit.setSort(0); creatorProfit.setDownloadNum(1); + //根据平台生成订单号 + switch (creatorProfit.getPlatform()){ + case "0" : + creatorProfit.setOrderNo("DY"+IdUtil.getSnowflakeNextIdStr()); + break; + case "1" : + creatorProfit.setOrderNo("KS"+IdUtil.getSnowflakeNextIdStr()); + break; + case "2" : + creatorProfit.setOrderNo("WX"+IdUtil.getSnowflakeNextIdStr()); + break; + default: + creatorProfit.setOrderNo("UNI"+IdUtil.getSnowflakeNextIdStr()); + break; + } int insert = creatorProfitMapper.insert(creatorProfit); log.info("新增艺术家【{}】图片【{}】应用【{}】平台【{}】收益记录",creatorProfit.getCreatorId(), creatorProfit.getImgId(), creatorProfit.getAppType(), creatorProfit.getPlatform()); return insert; @@ -274,4 +291,14 @@ public class CreatorProfitServiceImpl implements CreatorProfitService { public List queryFrontEndProfitAmt(Long creatorId, String type) { return creatorProfitMapper.queryFrontEndProfitAmt(creatorId,type); } + + @Override + public List queryPreProfit(String platform, String appType, String type) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CreatorProfit::getPlatform, platform); + wrapper.eq(CreatorProfit::getAppType, appType); + wrapper.eq(CreatorProfit::getType, type); + wrapper.eq(CreatorProfit::getStatus, "0"); + return creatorProfitMapper.selectList(wrapper); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java index 1b1f3b7..f8bae66 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java @@ -2,14 +2,17 @@ package com.bnyer.img.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.utils.StringUtils; +import com.bnyer.common.redis.service.RedisService; import com.bnyer.img.constants.ProfitOrderConstant; import com.bnyer.img.constants.RedisKeyConstant; +import com.bnyer.img.domain.CreatorProfit; import com.bnyer.img.domain.ProfitVerifyOrder; import com.bnyer.img.dto.ProfitVerifyOrderDto; import com.bnyer.img.dto.ProfitVerifyOrderInsertDto; import com.bnyer.img.dto.ProfitVerifyOrderPageDto; import com.bnyer.img.dto.ProfitVerifyOrderUpdateDto; import com.bnyer.img.mapper.ProfitVerifyOrderMapper; +import com.bnyer.img.service.CreatorProfitService; import com.bnyer.img.service.ProfitVerifyOrderService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +31,12 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService { @Autowired private ProfitVerifyOrderMapper profitVerifyOrderMapper; + @Autowired + private RedisService redisService; + + @Autowired + private CreatorProfitService creatorProfitService; + @Override @Transactional(rollbackFor = Exception.class) public int insert(ProfitVerifyOrderInsertDto params) { @@ -84,18 +93,81 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService { public boolean verify(ProfitVerifyOrderDto params) { if(params.getVerifyStatus().equals(ProfitOrderConstant.PASS)){ //审核通过计算收益 - //昨日总收益的80% - BigDecimal yesterdayTotalProfit = params.getAmt().multiply(BigDecimal.valueOf(0.8)); + //昨日总收益的80%作为广告收益 + BigDecimal yesterdayTotalAdProfit = params.getAmt().multiply(BigDecimal.valueOf(0.8)); + //昨日总收益的10%作为邀请收益 + BigDecimal yesterdayTotalInviteProfit = params.getAmt().multiply(BigDecimal.valueOf(0.1)); + //获取昨日日期 + Date today = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + String date = simpleDateFormat.format(today); + String tiktokKey = RedisKeyConstant.TIKTOK_IMG_TOTAL_DOWNLOAD_NUM_KEY + date; + String hashKey = params.getAppType()+":"+ params.getPlatform(); if(params.getPlatform().equals(ProfitOrderConstant.TIKTOK) && params.getAppType().equals(ProfitOrderConstant.BNYER_IMG)){ - //昨日抖音平台总下载量 - //获取昨日日期 - Date today = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24); - SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - String date = simpleDateFormat.format(today); - String tiktokKey = RedisKeyConstant.TIKTOK_IMG_TOTAL_DOWNLOAD_NUM_KEY + date; + 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 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 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()); + } + } + } }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 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 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{ //审核不通过,流程结束 }