fix: 作家稿费统计

This commit is contained in:
xiongxiaoyang 2024-08-06 21:14:22 +08:00
parent 3735023cef
commit 21a6a49ce9
3 changed files with 133 additions and 118 deletions

View File

@ -3,7 +3,9 @@ package com.java2nb.novel.core.schedule;
import com.java2nb.novel.core.config.AuthorIncomeProperties; import com.java2nb.novel.core.config.AuthorIncomeProperties;
import com.java2nb.novel.core.utils.DateUtil; import com.java2nb.novel.core.utils.DateUtil;
import com.java2nb.novel.entity.*; import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.AuthorIncome;
import com.java2nb.novel.entity.Book;
import com.java2nb.novel.service.AuthorService; import com.java2nb.novel.service.AuthorService;
import com.java2nb.novel.service.BookService; import com.java2nb.novel.service.BookService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -64,7 +66,6 @@ public class MonthIncomeStaSchedule {
Long bookId = book.getId(); Long bookId = book.getId();
//3.月收入数据未统计入库,分作品统计数据入库 //3.月收入数据未统计入库,分作品统计数据入库
Long monthIncome = authorService.queryTotalAccount(userId, bookId, startTime, endTime); Long monthIncome = authorService.queryTotalAccount(userId, bookId, startTime, endTime);
@ -102,7 +103,7 @@ public class MonthIncomeStaSchedule {
} }
if (totalPreTaxIncome > 0 && !authorService.queryIsStatisticsMonth(0L, endTime)) { if (totalPreTaxIncome > 0 && !authorService.queryIsStatisticsMonth(authorId, 0L, endTime)) {
AuthorIncome authorIncome = new AuthorIncome(); AuthorIncome authorIncome = new AuthorIncome();
authorIncome.setAuthorId(authorId); authorIncome.setAuthorId(authorId);

View File

@ -1,10 +1,10 @@
package com.java2nb.novel.service; package com.java2nb.novel.service;
import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.entity.Author; import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.AuthorIncome; import com.java2nb.novel.entity.AuthorIncome;
import com.java2nb.novel.entity.AuthorIncomeDetail; import com.java2nb.novel.entity.AuthorIncomeDetail;
import io.github.xxyopen.model.page.PageBean;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -16,43 +16,49 @@ public interface AuthorService {
/** /**
* 校验笔名是否存在 * 校验笔名是否存在
*
* @param penName 校验的笔名 * @param penName 校验的笔名
* @return true存在该笔名false: 不存在该笔名 * @return true存在该笔名false: 不存在该笔名
* */ */
Boolean checkPenName(String penName); Boolean checkPenName(String penName);
/** /**
* 作家注册 * 作家注册
*
* @param userId 注册用户ID * @param userId 注册用户ID
* @param author 注册信息 * @param author 注册信息
* @return 返回错误信息 * @return 返回错误信息
* */ */
String register(Long userId, Author author); String register(Long userId, Author author);
/** /**
* 判断是否是作家 * 判断是否是作家
*
* @param userId 用户ID * @param userId 用户ID
* @return true是作家false: 不是作家 * @return true是作家false: 不是作家
* */ */
Boolean isAuthor(Long userId); Boolean isAuthor(Long userId);
/** /**
* 查询作家信息 * 查询作家信息
*
* @param userId 用户ID * @param userId 用户ID
* @return 作家对象 * @return 作家对象
* */ */
Author queryAuthor(Long userId); Author queryAuthor(Long userId);
/** /**
* 查询作家列表 * 查询作家列表
* @return 作家列表 *
* @param limit 查询条数 * @param limit 查询条数
* @param maxAuthorCreateTime 最大申请时间 * @param maxAuthorCreateTime 最大申请时间
* @return 作家列表
*/ */
List<Author> queryAuthorList(int limit, Date maxAuthorCreateTime); List<Author> queryAuthorList(int limit, Date maxAuthorCreateTime);
/** /**
* 查询收入日统计是否入库 * 查询收入日统计是否入库
*
* @param bookId 作品ID * @param bookId 作品ID
* @param date 收入时间 * @param date 收入时间
* @return true:已入库false未入库 * @return true:已入库false未入库
@ -62,20 +68,23 @@ public interface AuthorService {
/** /**
* 保存日收入统计(按作品) * 保存日收入统计(按作品)
*
* @param authorIncomeDetail 收入详情 * @param authorIncomeDetail 收入详情
* */ */
void saveDailyIncomeSta(AuthorIncomeDetail authorIncomeDetail); void saveDailyIncomeSta(AuthorIncomeDetail authorIncomeDetail);
/** /**
* 查询月收入统计是否入库 * 查询月收入统计是否入库
*
* @param bookId 作品ID * @param bookId 作品ID
* @param incomeDate 收入时间 * @param incomeDate 收入时间
* @return true:已入库false未入库 * @return true:已入库false未入库
* */ */
boolean queryIsStatisticsMonth(Long bookId, Date incomeDate); boolean queryIsStatisticsMonth(Long bookId, Date incomeDate);
boolean queryIsStatisticsMonth(Long authorId, Long bookId, Date incomeDate);
/** /**
* 查询时间段内总订阅额 * 查询时间段内总订阅额
* *
@ -84,18 +93,20 @@ public interface AuthorService {
* @param startTime 开始时间 * @param startTime 开始时间
* @param endTime 结束时间 * @param endTime 结束时间
* @return 订阅额屋币 * @return 订阅额屋币
* */ */
Long queryTotalAccount(Long userId, Long bookId, Date startTime, Date endTime); Long queryTotalAccount(Long userId, Long bookId, Date startTime, Date endTime);
/** /**
* 保存月收入统计 * 保存月收入统计
*
* @param authorIncome 收入详情 * @param authorIncome 收入详情
* */ */
void saveAuthorIncomeSta(AuthorIncome authorIncome); void saveAuthorIncomeSta(AuthorIncome authorIncome);
/** /**
* 查询收入日统计是否入库 * 查询收入日统计是否入库
*
* @param authorId 作家ID * @param authorId 作家ID
* @param bookId 作品ID * @param bookId 作品ID
* @param date 收入时间 * @param date 收入时间
@ -105,6 +116,7 @@ public interface AuthorService {
/** /**
* 作家日收入统计数据分页列表查询 * 作家日收入统计数据分页列表查询
*
* @param userId * @param userId
* @param page 页码 * @param page 页码
* @param pageSize 分页大小 * @param pageSize 分页大小
@ -113,16 +125,18 @@ public interface AuthorService {
* @param endTime 结束时间 * @param endTime 结束时间
* @return 日收入统计数据分页数据 * @return 日收入统计数据分页数据
*/ */
PageBean<AuthorIncomeDetail> listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime, Date endTime); PageBean<AuthorIncomeDetail> listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime,
Date endTime);
/** /**
* 作家月收入统计数据分页列表查询 * 作家月收入统计数据分页列表查询
*
* @param page 页码 * @param page 页码
* @param pageSize 分页大小 * @param pageSize 分页大小
* @param userId 用户ID * @param userId 用户ID
* @param bookId 小说ID * @param bookId 小说ID
* @return 分页数据 * @return 分页数据
* */ */
PageBean<AuthorIncome> listIncomeMonthByPage(int page, int pageSize, Long userId, Long bookId); PageBean<AuthorIncome> listIncomeMonthByPage(int page, int pageSize, Long userId, Long bookId);
} }

View File

@ -1,23 +1,15 @@
package com.java2nb.novel.service.impl; package com.java2nb.novel.service.impl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import io.github.xxyopen.model.page.PageBean;
import com.java2nb.novel.core.cache.CacheKey;
import com.java2nb.novel.core.cache.CacheService;
import com.java2nb.novel.core.enums.ResponseStatus;
import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
import io.github.xxyopen.web.exception.BusinessException;
import com.java2nb.novel.entity.Author; import com.java2nb.novel.entity.Author;
import com.java2nb.novel.entity.AuthorIncome; import com.java2nb.novel.entity.AuthorIncome;
import com.java2nb.novel.entity.AuthorIncomeDetail; import com.java2nb.novel.entity.AuthorIncomeDetail;
import com.java2nb.novel.entity.FriendLink;
import com.java2nb.novel.mapper.*; import com.java2nb.novel.mapper.*;
import com.java2nb.novel.service.AuthorService; import com.java2nb.novel.service.AuthorService;
import com.java2nb.novel.service.FriendLinkService; import io.github.xxyopen.model.page.PageBean;
import io.github.xxyopen.model.page.builder.pagehelper.PageBuilder;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.mybatis.dynamic.sql.render.RenderingStrategies; import org.mybatis.dynamic.sql.render.RenderingStrategies;
import org.mybatis.dynamic.sql.select.CountDSLCompleter;
import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -25,10 +17,6 @@ import java.util.Date;
import java.util.List; import java.util.List;
import static com.java2nb.novel.mapper.AuthorCodeDynamicSqlSupport.authorCode; import static com.java2nb.novel.mapper.AuthorCodeDynamicSqlSupport.authorCode;
import static com.java2nb.novel.mapper.BookDynamicSqlSupport.book;
import static com.java2nb.novel.mapper.BookDynamicSqlSupport.id;
import static com.java2nb.novel.mapper.BookDynamicSqlSupport.updateTime;
import static com.java2nb.novel.mapper.FriendLinkDynamicSqlSupport.*;
import static org.mybatis.dynamic.sql.SqlBuilder.*; import static org.mybatis.dynamic.sql.SqlBuilder.*;
import static org.mybatis.dynamic.sql.select.SelectDSL.select; import static org.mybatis.dynamic.sql.select.SelectDSL.select;
@ -140,6 +128,17 @@ public class AuthorServiceImpl implements AuthorService {
.render(RenderingStrategies.MYBATIS3)).size() > 0; .render(RenderingStrategies.MYBATIS3)).size() > 0;
} }
@Override
public boolean queryIsStatisticsMonth(Long authorId, Long bookId, Date incomeDate) {
return authorIncomeMapper.selectMany(select(AuthorIncomeDynamicSqlSupport.id)
.from(AuthorIncomeDynamicSqlSupport.authorIncome)
.where(AuthorIncomeDynamicSqlSupport.bookId, isEqualTo(bookId))
.and(AuthorIncomeDynamicSqlSupport.authorId, isEqualTo(authorId))
.and(AuthorIncomeDynamicSqlSupport.incomeMonth, isEqualTo(incomeDate))
.build()
.render(RenderingStrategies.MYBATIS3)).size() > 0;
}
@Override @Override
public Long queryTotalAccount(Long userId, Long bookId, Date startTime, Date endTime) { public Long queryTotalAccount(Long userId, Long bookId, Date startTime, Date endTime) {
@ -172,7 +171,8 @@ public class AuthorServiceImpl implements AuthorService {
@Override @Override
public PageBean<AuthorIncomeDetail> listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime, Date endTime) { public PageBean<AuthorIncomeDetail> listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId,
Date startTime, Date endTime) {
PageHelper.startPage(page, pageSize); PageHelper.startPage(page, pageSize);
return PageBuilder.build(authorIncomeDetailMapper.selectMany( return PageBuilder.build(authorIncomeDetailMapper.selectMany(
select(AuthorIncomeDetailDynamicSqlSupport.incomeDate, AuthorIncomeDetailDynamicSqlSupport.incomeAccount select(AuthorIncomeDetailDynamicSqlSupport.incomeDate, AuthorIncomeDetailDynamicSqlSupport.incomeAccount