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.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.BookService;
import lombok.RequiredArgsConstructor;
@ -64,7 +66,6 @@ public class MonthIncomeStaSchedule {
Long bookId = book.getId();
//3.月收入数据未统计入库,分作品统计数据入库
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.setAuthorId(authorId);

View File

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

View File

@ -1,23 +1,15 @@
package com.java2nb.novel.service.impl;
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.AuthorIncome;
import com.java2nb.novel.entity.AuthorIncomeDetail;
import com.java2nb.novel.entity.FriendLink;
import com.java2nb.novel.mapper.*;
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 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.transaction.annotation.Transactional;
@ -25,10 +17,6 @@ import java.util.Date;
import java.util.List;
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.select.SelectDSL.select;
@ -140,6 +128,17 @@ public class AuthorServiceImpl implements AuthorService {
.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
public Long queryTotalAccount(Long userId, Long bookId, Date startTime, Date endTime) {
@ -172,7 +171,8 @@ public class AuthorServiceImpl implements AuthorService {
@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);
return PageBuilder.build(authorIncomeDetailMapper.selectMany(
select(AuthorIncomeDetailDynamicSqlSupport.incomeDate, AuthorIncomeDetailDynamicSqlSupport.incomeAccount