Browse Source

feature1.0.0-img:遗留邀请收益BUG待修改

master
chengkun 4 years ago
parent
commit
02a8435641
  1. 6
      bnyer-common/bnyer-common-redis/pom.xml
  2. 40
      bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/configure/RedissonConfig.java
  3. 114
      bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedissonService.java
  4. 4
      bnyer-common/bnyer-common-redis/src/main/resources/META-INF/spring.factories
  5. 2
      bnyer-services/bnyer-img/pom.xml
  6. 16
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java
  7. 5
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java
  8. 8
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java
  9. 11
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/CreatorProfit.java
  10. 33
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BatchUpdateInviteDto.java
  11. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitAdInsertDto.java
  12. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitPageDto.java
  13. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/CreatorProfitUpdateDto.java
  14. 22
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java
  15. 18
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java
  16. 36
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java
  17. 24
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java
  18. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitEndAmtVo.java
  19. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitInAmtVo.java
  20. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitPreVo.java
  21. 2
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitVo.java
  22. 17
      bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml
  23. 24
      pom.xml

6
bnyer-common/bnyer-common-redis/pom.xml

@ -29,5 +29,11 @@
<artifactId>bnyer-common-core</artifactId>
</dependency>
<!-- Redisson 锁功能 -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
</dependency>
</dependencies>
</project>

40
bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/configure/RedissonConfig.java

@ -0,0 +1,40 @@
package com.bnyer.common.redis.configure;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* redisson配置
* @author chengkun
* @date 2022/7/1 11:12
*/
@ConfigurationProperties(prefix = "spring.redis")
@Configuration
@RefreshScope
public class RedissonConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private String port;
@Value("${spring.redis.password}")
private String password;
@Bean(destroyMethod = "shutdown")
@ConditionalOnMissingBean(RedissonClient.class)
public RedissonClient redissonClient()
{
Config config = new Config();
config.useSingleServer().setAddress("redis://" + host + ":" + port).setPassword(password);
return Redisson.create(config);
}
}

114
bnyer-common/bnyer-common-redis/src/main/java/com/bnyer/common/redis/service/RedissonService.java

@ -0,0 +1,114 @@
package com.bnyer.common.redis.service;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* redisson锁工具类
* @author chengkun
* @date 2022/7/1 11:10
*/
@Component
public class RedissonService {
@Autowired
private RedissonClient redissonClient;
/**
* 获取锁
*
* @param lockKey 锁实例key
* @return 锁信息
*/
public RLock getRLock(String lockKey)
{
return redissonClient.getLock(lockKey);
}
/**
* 加锁
*
* @param lockKey 锁实例key
* @return 锁信息
*/
public RLock lock(String lockKey)
{
RLock lock = getRLock(lockKey);
lock.lock();
return lock;
}
/**
* 加锁
*
* @param lockKey 锁实例key
* @param leaseTime 上锁后自动释放锁时间
* @return true=成功false=失败
*/
public Boolean tryLock(String lockKey, long leaseTime)
{
return tryLock(lockKey, 0, leaseTime, TimeUnit.SECONDS);
}
/**
* 加锁
*
* @param lockKey 锁实例key
* @param leaseTime 上锁后自动释放锁时间
* @param unit 时间颗粒度
* @return true=加锁成功false=加锁失败
*/
public Boolean tryLock(String lockKey, long leaseTime, TimeUnit unit)
{
return tryLock(lockKey, 0, leaseTime, unit);
}
/**
* 加锁
*
* @param lockKey 锁实例key
* @param waitTime 最多等待时间
* @param leaseTime 上锁后自动释放锁时间
* @param unit 时间颗粒度
* @return true=加锁成功false=加锁失败
*/
public Boolean tryLock(String lockKey, long waitTime, long leaseTime, TimeUnit unit)
{
RLock rLock = getRLock(lockKey);
boolean tryLock = false;
try
{
tryLock = rLock.tryLock(waitTime, leaseTime, unit);
}
catch (InterruptedException e)
{
return false;
}
return tryLock;
}
/**
* 释放锁
*
* @param lockKey 锁实例key
*/
public void unlock(String lockKey)
{
RLock lock = getRLock(lockKey);
lock.unlock();
}
/**
* 释放锁
*
* @param lock 锁信息
*/
public void unlock(RLock lock)
{
lock.unlock();
}
}

4
bnyer-common/bnyer-common-redis/src/main/resources/META-INF/spring.factories

@ -1,5 +1,7 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.bnyer.common.redis.configure.RedisConfig,\
com.bnyer.common.redis.service.RedisService
com.bnyer.common.redis.service.RedisService,\
com.bnyer.common.redis.configure.RedissonConfig,\
com.bnyer.common.redis.service.RedissonService

2
bnyer-services/bnyer-img/pom.xml

@ -107,14 +107,12 @@
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>4.2.0</version>
</dependency>
<!-- 阿里支付工具包-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.23.21.ALL</version>
</dependency>
</dependencies>

16
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java

@ -35,20 +35,4 @@ public class AlipayConfig{
@Value("${alipay.rootPath}")
public String rootPath;
// @Resource
// private TokenCheckHandler tokenCheckHandler;
/** 不需要拦截地址 */
// public static final String[] excludeUrls = { "/mini/tiktok/loginTiktok", "/mini/tiktok/insertFeedback"};
//
// @Override
// public void addInterceptors(InterceptorRegistry registry) {
// // 注册Token拦截器
// registry.addInterceptor(tokenCheckHandler)
// .addPathPatterns("/**")
// .excludePathPatterns(excludeUrls)
// .order(-10);
//
// }
}

5
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/RedisKeyConstant.java

@ -51,4 +51,9 @@ public class RedisKeyConstant {
* 微信小程序艺术家邀请键
*/
public static final String WECHAT_CREATOR_INVITE_KEY = "bnyer.img.invite.creator:";
/**
* 审核收益锁键
*/
public static final String VERIFY_PROFIT_LOCK_KEY = "bnyer.img.profit.lock:";
}

8
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java

@ -265,12 +265,4 @@ public class CreatorMiniController extends BaseController {
log.info("小程序艺术家数据参数为:{}", JSON.toJSON(param));
return AjaxResult.success(creatorService.login(param));
}
//@TokenCheck
@ApiOperation(value="支付宝异步回调")
@GetMapping(value = "/callback")
public AjaxResult alipayCallback(){
log.info("支付宝回调了!");
return AjaxResult.success();
}
}

11
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/CreatorProfit.java

@ -76,10 +76,10 @@ public class CreatorProfit extends BaseDomain {
private String platform;
/**
* 应用类型(0->bnyer壁纸)
* 应用类型(0->次元壁纸)
*/
@TableField(value = "app_type")
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
/**
@ -138,6 +138,13 @@ public class CreatorProfit extends BaseDomain {
@ApiModelProperty(value="转入钱包时间")
private Date walletTime;
/**
* 唯一标识
*/
@TableField(value = "mark")
@ApiModelProperty(value="唯一标识")
private String mark;
private static final long serialVersionUID = 1L;
}

33
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/BatchUpdateInviteDto.java

@ -1,33 +0,0 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@ApiModel("批量更新邀请者收益接收类")
public class BatchUpdateInviteDto implements Serializable {
@ApiModelProperty(value="艺术家id")
private Long creatorId;
@ApiModelProperty(value="图片id")
private Long imgId;
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
private String appType;
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)")
private String type;
@ApiModelProperty(value="创建时间")
private String date;
}

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

@ -34,7 +34,7 @@ public class CreatorProfitAdInsertDto implements Serializable {
private String platform;
@NotBlank(message = "应用类型不能为空!")
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
public CreatorProfit extractParam(){

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

@ -19,7 +19,7 @@ public class CreatorProfitPageDto extends BasePageDto {
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
@ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)")

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

@ -45,7 +45,7 @@ public class CreatorProfitUpdateDto implements Serializable {
private String platform;
@NotBlank(message = "应用类型不能为空!")
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
@NotBlank(message = "收益类型不能为空!")

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

@ -1,9 +1,7 @@
package com.bnyer.img.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.bnyer.img.domain.CreatorProfit;
import com.bnyer.img.dto.BatchUpdateInviteDto;
import com.bnyer.img.dto.CreatorProfitPageDto;
import com.bnyer.img.dto.ProfitInOrEndDto;
import com.bnyer.img.vo.*;
@ -29,15 +27,10 @@ public interface CreatorProfitMapper extends BaseMapper<CreatorProfit> {
/**
* 更新下载数量
* @param creatorId 艺术家id
* @param imgId 图片Id
* @param appType 应用
* @param platform 平台
* @param type 类型
* @param date 日期
* @param mark 唯一标识
* @return -
*/
int updateDownloadNum(@Param("creatorId") Long creatorId,@Param("imgId") Long imgId,@Param("appType") String appType,@Param("platform") String platform,@Param("type")String type,@Param("date") String date);
int updateDownloadNum(@Param("mark") String mark);
/**
* 小程序查询即将入账日期下载次数
@ -98,21 +91,16 @@ public interface CreatorProfitMapper extends BaseMapper<CreatorProfit> {
/**
* 判断当天是否存在结算收益订单数据
* @param creatorId 艺术家id
* @param imgId 图片id
* @param platform 平台
* @param appType 应用
* @param date 日期(年月日)
* @param mark 唯一标识
* @return -
*/
CreatorProfit checkCreatorProfitExist(@Param("creatorId") Long creatorId,@Param("imgId") Long imgId,@Param("appType") String appType,
@Param("platform") String platform, @Param("type") String type, @Param("date") String date);
CreatorProfit checkCreatorProfitExist(@Param("mark") String mark);
/**
* 批量更新邀请记录下载次数
* @param list -
*/
void batchUpdateDownload(@Param("list") List<BatchUpdateInviteDto> list);
void batchUpdateDownload(@Param("list") List<String> list);
/**
* 批量新增邀请收益

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

@ -16,15 +16,10 @@ public interface CreatorProfitService {
/**
* 判断当天是否存在结算收益订单数据
* @param creatorId 艺术家id
* @param imgId 图片id
* @param platform 平台
* @param appType 应用
* @param type 类型
* @param date 日期(年月日)
* @param mark 唯一标识
* @return -
*/
boolean checkCreatorProfitExist(Long creatorId,Long imgId,String appType,String platform,String type,String date);
boolean checkCreatorProfitExist(String mark);
/**
* 新增或更新广告收益记录
@ -41,15 +36,10 @@ public interface CreatorProfitService {
/**
* 更新指定日期图片下载数量
* @param creatorId 艺术家id
* @param imgId 图片id
* @param appType 应用
* @param platform 平台
* @param type 类型
* @param date 日期
* @param mark 唯一标识
* @return -
*/
int updateCreatorProfitDownloadNum(Long creatorId,Long imgId,String appType,String platform,String type,String date);
int updateCreatorProfitDownloadNum(String mark);
/**
* 修改结算收益

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

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.img.domain.CreatorProfit;
import com.bnyer.img.domain.InviteLog;
import com.bnyer.img.dto.BatchUpdateInviteDto;
import com.bnyer.img.dto.CreatorProfitPageDto;
import com.bnyer.img.dto.ProfitInOrEndDto;
import com.bnyer.img.mapper.CreatorProfitMapper;
@ -15,7 +14,6 @@ import com.bnyer.img.service.CreatorProfitService;
import com.bnyer.img.service.TiktokImgService;
import com.bnyer.img.vo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -43,8 +41,8 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
private InviteLogMapper inviteLogMapper;
@Override
public boolean checkCreatorProfitExist(Long creatorId, Long imgId,String appType,String platform,String type, String date) {
CreatorProfit creatorProfit = creatorProfitMapper.checkCreatorProfitExist(creatorId, imgId, appType, platform,type, date);
public boolean checkCreatorProfitExist(String mark) {
CreatorProfit creatorProfit = creatorProfitMapper.checkCreatorProfitExist(mark);
if(creatorProfit != null){
return true;
}else{
@ -58,13 +56,15 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long times = System.currentTimeMillis();
String date = format.format(times);
String mark = creatorProfit.getCreatorId()+creatorProfit.getImgId()+creatorProfit.getAppType()+creatorProfit.getPlatform()+
"0"+date.replace("-","");
//缓存中下载总数+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(mark);
if(b){
int update = this.updateCreatorProfitDownloadNum(creatorProfit.getCreatorId(), creatorProfit.getImgId(), creatorProfit.getAppType(), creatorProfit.getPlatform(),"0", date);
log.info("更新日期【{}】艺术家【{}】图片【{}】应用【{}】平台【{}】收益下载次数+1",date,creatorProfit.getCreatorId(), creatorProfit.getImgId(), creatorProfit.getAppType(), creatorProfit.getPlatform());
int update = this.updateCreatorProfitDownloadNum(mark);
log.info("唯一标识【{}】收益下载次数+1",mark);
return update;
}
//不存在则新增广告记录
@ -75,6 +75,7 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
creatorProfit.setIsShow("1");
creatorProfit.setSort(0);
creatorProfit.setDownloadNum(1);
creatorProfit.setMark(mark);
//根据平台生成订单号
switch (creatorProfit.getPlatform()){
case "0" :
@ -106,20 +107,15 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
wrapper.eq(InviteLog::getInvitedCreatorId, creatorProfit.getCreatorId());
List<InviteLog> inviteLogs = inviteLogMapper.selectList(wrapper);
if(inviteLogs.size() > 0){
List<BatchUpdateInviteDto> updateList = new ArrayList<>();
List<String> updateList = new ArrayList<>();
List<CreatorProfit> insertList = new ArrayList<>();
for (InviteLog inviteLog : inviteLogs) {
String mark = inviteLog.getCreatorId()+creatorProfit.getImgId()+creatorProfit.getAppType()+creatorProfit.getPlatform()+
"1"+date.replace("-","");
//检查收益表是否存在邀请记录,存在则记录更新邀请者Id
boolean b = this.checkCreatorProfitExist(inviteLog.getCreatorId(),creatorProfit.getImgId(),creatorProfit.getAppType(),creatorProfit.getPlatform(),"1",date);
boolean b = this.checkCreatorProfitExist(mark);
if(b){
BatchUpdateInviteDto dto = new BatchUpdateInviteDto();
dto.setCreatorId(inviteLog.getCreatorId());
dto.setAppType(creatorProfit.getAppType());
dto.setImgId(creatorProfit.getImgId());
dto.setPlatform(creatorProfit.getPlatform());
dto.setDate(date);
dto.setType("1");
updateList.add(dto);
updateList.add(mark);
}else{
//不存在则新增邀请者id
creatorProfit.setCreatorId(inviteLog.getCreatorId());
@ -130,6 +126,7 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
creatorProfit.setIsShow("1");
creatorProfit.setSort(0);
creatorProfit.setDownloadNum(1);
creatorProfit.setMark(mark);
//根据平台生成订单号
switch (creatorProfit.getPlatform()){
case "0" :
@ -150,6 +147,7 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
}
if(updateList.size() > 0){
//批量更新邀请记录
//TODO 修改此处BUG
creatorProfitMapper.batchUpdateDownload(updateList);
}
if(insertList.size() > 0){
@ -161,8 +159,8 @@ public class CreatorProfitServiceImpl implements CreatorProfitService {
@Override
@Transactional(rollbackFor = Exception.class)
public int updateCreatorProfitDownloadNum(Long creatorId, Long imgId, String appType, String platform,String type, String date) {
return creatorProfitMapper.updateDownloadNum(creatorId,imgId,appType,platform,type,date);
public int updateCreatorProfitDownloadNum(String mark) {
return creatorProfitMapper.updateDownloadNum(mark);
}
@Override

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

@ -1,8 +1,10 @@
package com.bnyer.img.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.bnyer.common.core.exception.ServiceException;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.redis.service.RedisService;
import com.bnyer.common.redis.service.RedissonService;
import com.bnyer.img.constants.ProfitOrderConstant;
import com.bnyer.img.constants.RedisKeyConstant;
import com.bnyer.img.domain.Creator;
@ -12,13 +14,13 @@ 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.CreatorMapper;
import com.bnyer.img.mapper.ProfitVerifyOrderMapper;
import com.bnyer.img.service.CreatorProfitService;
import com.bnyer.img.service.CreatorService;
import com.bnyer.img.service.ProfitVerifyOrderService;
import com.bnyer.img.vo.ConfirmProfitVo;
import lombok.extern.slf4j.Slf4j;
import org.redisson.api.RLock;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -28,6 +30,7 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Service
@Slf4j
@ -46,7 +49,7 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService {
private CreatorService creatorService;
@Autowired
private CreatorMapper creatorMapper;
private RedissonService redissonService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -104,6 +107,11 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService {
@Transactional(rollbackFor = Exception.class)
public boolean verify(ProfitVerifyOrderDto params) {
if(params.getVerifyStatus().equals(ProfitOrderConstant.PASS)){
//获取分布式锁
RLock lock = redissonService.getRLock(RedisKeyConstant.VERIFY_PROFIT_LOCK_KEY + params.getId());
try{
if(lock.tryLock(0L, 30L, TimeUnit.SECONDS)){
log.info("锁获取成功,开始执行审核收益操作");
//审核通过计算收益
//昨日总收益的80%作为广告收益
BigDecimal yesterdayTotalAdProfit = params.getAmt().multiply(BigDecimal.valueOf(0.8));
@ -158,6 +166,18 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService {
profitVerifyOrderMapper.updateById(order);
return true;
}
}else{
throw new ServiceException("系统繁忙,请稍候重试!");
}
}catch (Exception e){
log.error("审核收益单失败!错误原因为【{}】",e.getMessage());
}finally {
//释放锁
if(lock.isHeldByCurrentThread()){
lock.unlock();
log.info("审核收益操作执行完毕,释放锁成功!");
}
}
return false;
}else{
//审核不通过,流程结束

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitEndAmtVo.java

@ -40,7 +40,7 @@ public class CreatorProfitEndAmtVo implements Serializable {
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
@ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)")

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitInAmtVo.java

@ -40,7 +40,7 @@ public class CreatorProfitInAmtVo implements Serializable {
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
@ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)")

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitPreVo.java

@ -33,7 +33,7 @@ public class CreatorProfitPreVo implements Serializable {
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
@ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)")

2
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/CreatorProfitVo.java

@ -36,7 +36,7 @@ public class CreatorProfitVo implements Serializable {
@ApiModelProperty(value="结算平台(0->抖音;1->快手;2->微信;3->uniapp)")
private String platform;
@ApiModelProperty(value="应用类型(0->bnyer壁纸)")
@ApiModelProperty(value="应用类型(0->次元壁纸)")
private String appType;
@ApiModelProperty(value="收益类型(0->广告浏览;1->邀请;2->会员)")

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

@ -24,12 +24,13 @@
<result column="wallet_time" jdbcType="TIMESTAMP" property="walletTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="sort" jdbcType="INTEGER" property="sort" />
<result column="mark" jdbcType="VARCHAR" property="mark" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, order_no, creator_id,scan_code, img_id, profit, platform, app_type, `type`, `status`, confirm_type,
confirm_status, download_num, is_show, create_time, income_time, confirm_time,
wallet_time, update_time, sort
wallet_time, update_time, sort, mark
</sql>
<update id="batchUpdate">
@ -43,8 +44,7 @@
<update id="updateDownloadNum">
update img_creator_profit
set download_num = download_num + 1, update_time = (select NOW())
where creator_id = #{creatorId} and img_id = #{imgId} and app_type = #{appType}
and platform = #{platform} and type = #{type} and DATE_FORMAT(create_time,'%Y-%m-%d') = #{date} and status = '0'
where mark = #{mark} and status = '0'
</update>
<select id="queryFrontPreDownloadCount" resultType="com.bnyer.img.vo.CreatorProfitDownloadCountVo">
select
@ -127,8 +127,7 @@
select
<include refid="Base_Column_List"/>
from img_creator_profit
where creator_id = #{creatorId} and img_id = #{imgId} and app_type = #{appType}
and platform = #{platform} and type = #{type} and DATE_FORMAT(create_time,'%Y-%m-%d') = #{date} and status = '0'
where mark = #{mark} and status = '0'
</select>
<update id="batchUpdateDownload">
@ -137,19 +136,17 @@
<set>
download_num = download_num + 1, update_time = (select NOW())
</set>
where creator_id = #{item.creatorId} and img_id = #{item.imgId} and app_type = #{item.appType}
and platform = #{item.platform} and DATE_FORMAT(create_time,'%Y-%m-%d') = #{item.date} and type = #{item.type}
and status = '0'
where mark = #{item.mark} and status = '0'
</foreach>
</update>
<insert id="batchInsertInviteProfit" useGeneratedKeys="true" keyProperty="id">
insert into img_creator_profit(creator_id,order_no,type,status,is_show,sort,download_num,
create_time,update_time,scan_code,img_id,platform,app_type) values
create_time,update_time,scan_code,img_id,platform,app_type,mark) values
<foreach item="item" collection="list" separator=",">
(#{item.creatorId},#{item.orderNo}, #{item.type}, #{item.status}, #{item.isShow},#{item.sort},
#{item.downloadNum},#{item.createTime},#{item.updateTime},#{item.scanCode},#{item.imgId},
#{item.platform},#{item.appType})
#{item.platform},#{item.appType},#{item.mark})
</foreach>
</insert>

24
pom.xml

@ -42,6 +42,9 @@
<transmittable-thread-local.version>2.12.2</transmittable-thread-local.version>
<lombok>1.18.12</lombok>
<hutool.version>5.8.0.M3</hutool.version>
<redisson.version>3.16.2</redisson.version>
<aliPay.version>4.23.21.ALL</aliPay.version>
<wePay.version>4.2.0</wePay.version>
</properties>
<!-- 依赖声明 -->
@ -190,6 +193,27 @@
<version>${transmittable-thread-local.version}</version>
</dependency>
<!-- Redisson 锁功能 -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>${redisson.version}</version>
</dependency>
<!-- 阿里支付工具包-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>${aliPay.version}</version>
</dependency>
<!--微信支付工具包-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>${wePay.version}</version>
</dependency>
<!-- 核心模块 -->
<dependency>
<groupId>com.dimensionalnode</groupId>

Loading…
Cancel
Save