From 21a6a49ce94ae0c1811b655e8be4f901f04f59f2 Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <1179705413@qq.com> Date: Tue, 6 Aug 2024 21:14:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BD=9C=E5=AE=B6=E7=A8=BF=E8=B4=B9?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/schedule/MonthIncomeStaSchedule.java | 23 +-- .../java2nb/novel/service/AuthorService.java | 72 ++++---- .../novel/service/impl/AuthorServiceImpl.java | 156 +++++++++--------- 3 files changed, 133 insertions(+), 118 deletions(-) diff --git a/novel-front/src/main/java/com/java2nb/novel/core/schedule/MonthIncomeStaSchedule.java b/novel-front/src/main/java/com/java2nb/novel/core/schedule/MonthIncomeStaSchedule.java index 554d835..b0c4768 100644 --- a/novel-front/src/main/java/com/java2nb/novel/core/schedule/MonthIncomeStaSchedule.java +++ b/novel-front/src/main/java/com/java2nb/novel/core/schedule/MonthIncomeStaSchedule.java @@ -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,24 +66,23 @@ public class MonthIncomeStaSchedule { Long bookId = book.getId(); - //3.月收入数据未统计入库,分作品统计数据入库 Long monthIncome = authorService.queryTotalAccount(userId, bookId, startTime, endTime); BigDecimal monthIncomeShare = new BigDecimal(monthIncome) - .multiply(authorIncomeConfig.getShareProportion()); + .multiply(authorIncomeConfig.getShareProportion()); long preTaxIncome = monthIncomeShare - .multiply(authorIncomeConfig.getExchangeProportion()) - .multiply(new BigDecimal(100)) - .longValue(); + .multiply(authorIncomeConfig.getExchangeProportion()) + .multiply(new BigDecimal(100)) + .longValue(); totalPreTaxIncome += preTaxIncome; long afterTaxIncome = monthIncomeShare - .multiply(authorIncomeConfig.getTaxRate()) - .multiply(authorIncomeConfig.getExchangeProportion()) - .multiply(new BigDecimal(100)) - .longValue(); + .multiply(authorIncomeConfig.getTaxRate()) + .multiply(authorIncomeConfig.getExchangeProportion()) + .multiply(new BigDecimal(100)) + .longValue(); totalAfterTaxIncome += afterTaxIncome; @@ -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); diff --git a/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java b/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java index 3c42acd..2acb219 100644 --- a/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java +++ b/novel-front/src/main/java/com/java2nb/novel/service/AuthorService.java @@ -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,45 +16,51 @@ public interface AuthorService { /** * 校验笔名是否存在 + * * @param penName 校验的笔名 * @return true:存在该笔名,false: 不存在该笔名 - * */ + */ Boolean checkPenName(String penName); /** * 作家注册 + * * @param userId 注册用户ID - *@param author 注册信息 + * @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 limit 查询条数 * @param maxAuthorCreateTime 最大申请时间 + * @return 作家列表 */ List queryAuthorList(int limit, Date maxAuthorCreateTime); /** * 查询收入日统计是否入库 + * * @param bookId 作品ID - * @param date 收入时间 + * @param date 收入时间 * @return true:已入库,false:未入库 */ boolean queryIsStatisticsDaily(Long bookId, Date date); @@ -62,67 +68,75 @@ public interface AuthorService { /** * 保存日收入统计(按作品) + * * @param authorIncomeDetail 收入详情 - * */ + */ void saveDailyIncomeSta(AuthorIncomeDetail authorIncomeDetail); - /** * 查询月收入统计是否入库 - * @param bookId 作品ID + * + * @param bookId 作品ID * @param incomeDate 收入时间 * @return true:已入库,false:未入库 - * */ + */ boolean queryIsStatisticsMonth(Long bookId, Date incomeDate); + boolean queryIsStatisticsMonth(Long authorId, Long bookId, Date incomeDate); + /** * 查询时间段内总订阅额 * * @param userId - * @param bookId 作品ID + * @param bookId 作品ID * @param startTime 开始时间 - * @param endTime 结束时间 + * @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 收入时间 + * @param bookId 作品ID + * @param date 收入时间 * @return true:已入库,false:未入库 */ boolean queryIsStatisticsDaily(Long authorId, Long bookId, Date date); /** - *作家日收入统计数据分页列表查询 + * 作家日收入统计数据分页列表查询 + * * @param userId - * @param page 页码 - * @param pageSize 分页大小 - * @param bookId 小说ID + * @param page 页码 + * @param pageSize 分页大小 + * @param bookId 小说ID * @param startTime 开始时间 - * @param endTime 结束时间 + * @param endTime 结束时间 * @return 日收入统计数据分页数据 */ - PageBean listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime, Date endTime); + PageBean listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime, + Date endTime); /** * 作家月收入统计数据分页列表查询 - * @param page 页码 + * + * @param page 页码 * @param pageSize 分页大小 - * @param userId 用户ID - * @param bookId 小说ID + * @param userId 用户ID + * @param bookId 小说ID * @return 分页数据 - * */ + */ PageBean listIncomeMonthByPage(int page, int pageSize, Long userId, Long bookId); } diff --git a/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java b/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java index 499e257..2591bf8 100644 --- a/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java +++ b/novel-front/src/main/java/com/java2nb/novel/service/impl/AuthorServiceImpl.java @@ -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; @@ -52,7 +40,7 @@ public class AuthorServiceImpl implements AuthorService { @Override public Boolean checkPenName(String penName) { return authorMapper.count(c -> - c.where(AuthorDynamicSqlSupport.penName, isEqualTo(penName))) > 0; + c.where(AuthorDynamicSqlSupport.penName, isEqualTo(penName))) > 0; } @Transactional(rollbackFor = Exception.class) @@ -61,21 +49,21 @@ public class AuthorServiceImpl implements AuthorService { Date currentDate = new Date(); //判断邀请码是否有效 if (authorCodeMapper.count(c -> - c.where(AuthorCodeDynamicSqlSupport.inviteCode, isEqualTo(author.getInviteCode())) - .and(AuthorCodeDynamicSqlSupport.isUse, isEqualTo((byte) 0)) - .and(AuthorCodeDynamicSqlSupport.validityTime, isGreaterThan(currentDate))) > 0) { - //邀请码有效 + c.where(AuthorCodeDynamicSqlSupport.inviteCode, isEqualTo(author.getInviteCode())) + .and(AuthorCodeDynamicSqlSupport.isUse, isEqualTo((byte) 0)) + .and(AuthorCodeDynamicSqlSupport.validityTime, isGreaterThan(currentDate))) > 0) { + //邀请码有效 //保存作家信息 author.setUserId(userId); author.setCreateTime(currentDate); authorMapper.insertSelective(author); //设置邀请码状态为已使用 authorCodeMapper.update(update(authorCode) - .set(AuthorCodeDynamicSqlSupport.isUse) - .equalTo((byte) 1) - .where(AuthorCodeDynamicSqlSupport.inviteCode,isEqualTo(author.getInviteCode())) - .build() - .render(RenderingStrategies.MYBATIS3)); + .set(AuthorCodeDynamicSqlSupport.isUse) + .equalTo((byte) 1) + .where(AuthorCodeDynamicSqlSupport.inviteCode, isEqualTo(author.getInviteCode())) + .build() + .render(RenderingStrategies.MYBATIS3)); return ""; } else { //邀请码无效 @@ -87,15 +75,15 @@ public class AuthorServiceImpl implements AuthorService { @Override public Boolean isAuthor(Long userId) { return authorMapper.count(c -> - c.where(AuthorDynamicSqlSupport.userId, isEqualTo(userId))) > 0; + c.where(AuthorDynamicSqlSupport.userId, isEqualTo(userId))) > 0; } @Override public Author queryAuthor(Long userId) { return authorMapper.selectMany( - select(AuthorDynamicSqlSupport.id,AuthorDynamicSqlSupport.penName,AuthorDynamicSqlSupport.status) - .from(AuthorDynamicSqlSupport.author) - .where(AuthorDynamicSqlSupport.userId,isEqualTo(userId)) + select(AuthorDynamicSqlSupport.id, AuthorDynamicSqlSupport.penName, AuthorDynamicSqlSupport.status) + .from(AuthorDynamicSqlSupport.author) + .where(AuthorDynamicSqlSupport.userId, isEqualTo(userId)) .build() .render(RenderingStrategies.MYBATIS3)).get(0); } @@ -103,12 +91,12 @@ public class AuthorServiceImpl implements AuthorService { @Override public List queryAuthorList(int needAuthorNumber, Date maxAuthorCreateTime) { return authorMapper.selectMany(select(AuthorDynamicSqlSupport.id, AuthorDynamicSqlSupport.userId) - .from(AuthorDynamicSqlSupport.author) - .where(AuthorDynamicSqlSupport.createTime, isLessThan(maxAuthorCreateTime)) - .orderBy(AuthorDynamicSqlSupport.createTime.descending()) - .limit(needAuthorNumber) - .build() - .render(RenderingStrategies.MYBATIS3)); + .from(AuthorDynamicSqlSupport.author) + .where(AuthorDynamicSqlSupport.createTime, isLessThan(maxAuthorCreateTime)) + .orderBy(AuthorDynamicSqlSupport.createTime.descending()) + .limit(needAuthorNumber) + .build() + .render(RenderingStrategies.MYBATIS3)); } @@ -116,11 +104,11 @@ public class AuthorServiceImpl implements AuthorService { public boolean queryIsStatisticsDaily(Long bookId, Date date) { return authorIncomeDetailMapper.selectMany(select(AuthorIncomeDetailDynamicSqlSupport.id) - .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) - .where(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) - .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isEqualTo(date)) - .build() - .render(RenderingStrategies.MYBATIS3)).size() > 0; + .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) + .where(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) + .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isEqualTo(date)) + .build() + .render(RenderingStrategies.MYBATIS3)).size() > 0; } @@ -133,24 +121,35 @@ public class AuthorServiceImpl implements AuthorService { @Override public boolean queryIsStatisticsMonth(Long bookId, Date incomeDate) { return authorIncomeMapper.selectMany(select(AuthorIncomeDynamicSqlSupport.id) - .from(AuthorIncomeDynamicSqlSupport.authorIncome) - .where(AuthorIncomeDynamicSqlSupport.bookId, isEqualTo(bookId)) - .and(AuthorIncomeDynamicSqlSupport.incomeMonth, isEqualTo(incomeDate)) - .build() - .render(RenderingStrategies.MYBATIS3)).size() > 0; + .from(AuthorIncomeDynamicSqlSupport.authorIncome) + .where(AuthorIncomeDynamicSqlSupport.bookId, isEqualTo(bookId)) + .and(AuthorIncomeDynamicSqlSupport.incomeMonth, isEqualTo(incomeDate)) + .build() + .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) { return authorIncomeDetailMapper.selectStatistic(select(sum(AuthorIncomeDetailDynamicSqlSupport.incomeAccount)) - .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) - .where(AuthorIncomeDetailDynamicSqlSupport.userId, isEqualTo(userId)) - .and(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) - .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isGreaterThanOrEqualTo(startTime)) - .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isLessThanOrEqualTo(endTime)) - .build() - .render(RenderingStrategies.MYBATIS3)); + .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) + .where(AuthorIncomeDetailDynamicSqlSupport.userId, isEqualTo(userId)) + .and(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) + .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isGreaterThanOrEqualTo(startTime)) + .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isLessThanOrEqualTo(endTime)) + .build() + .render(RenderingStrategies.MYBATIS3)); } @@ -162,29 +161,30 @@ public class AuthorServiceImpl implements AuthorService { @Override public boolean queryIsStatisticsDaily(Long authorId, Long bookId, Date date) { return authorIncomeDetailMapper.selectMany(select(AuthorIncomeDetailDynamicSqlSupport.id) - .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) - .where(AuthorIncomeDetailDynamicSqlSupport.authorId, isEqualTo(authorId)) - .and(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) - .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isEqualTo(date)) - .build() - .render(RenderingStrategies.MYBATIS3)).size() > 0; + .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) + .where(AuthorIncomeDetailDynamicSqlSupport.authorId, isEqualTo(authorId)) + .and(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) + .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isEqualTo(date)) + .build() + .render(RenderingStrategies.MYBATIS3)).size() > 0; } @Override - public PageBean listIncomeDailyByPage(int page, int pageSize, Long userId, Long bookId, Date startTime, Date endTime) { + public PageBean 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 - , AuthorIncomeDetailDynamicSqlSupport.incomeCount, AuthorIncomeDetailDynamicSqlSupport.incomeNumber) - .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) - .where(AuthorIncomeDetailDynamicSqlSupport.userId, isEqualTo(userId)) - .and(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) - .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isGreaterThanOrEqualTo(startTime)) - .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isLessThanOrEqualTo(endTime)) - .orderBy(AuthorIncomeDetailDynamicSqlSupport.incomeDate.descending()) - .build() - .render(RenderingStrategies.MYBATIS3))); + select(AuthorIncomeDetailDynamicSqlSupport.incomeDate, AuthorIncomeDetailDynamicSqlSupport.incomeAccount + , AuthorIncomeDetailDynamicSqlSupport.incomeCount, AuthorIncomeDetailDynamicSqlSupport.incomeNumber) + .from(AuthorIncomeDetailDynamicSqlSupport.authorIncomeDetail) + .where(AuthorIncomeDetailDynamicSqlSupport.userId, isEqualTo(userId)) + .and(AuthorIncomeDetailDynamicSqlSupport.bookId, isEqualTo(bookId)) + .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isGreaterThanOrEqualTo(startTime)) + .and(AuthorIncomeDetailDynamicSqlSupport.incomeDate, isLessThanOrEqualTo(endTime)) + .orderBy(AuthorIncomeDetailDynamicSqlSupport.incomeDate.descending()) + .build() + .render(RenderingStrategies.MYBATIS3))); } @@ -192,15 +192,15 @@ public class AuthorServiceImpl implements AuthorService { public PageBean listIncomeMonthByPage(int page, int pageSize, Long userId, Long bookId) { PageHelper.startPage(page, pageSize); return PageBuilder.build(authorIncomeMapper.selectMany(select(AuthorIncomeDynamicSqlSupport.incomeMonth - , AuthorIncomeDynamicSqlSupport.preTaxIncome - , AuthorIncomeDynamicSqlSupport.afterTaxIncome - , AuthorIncomeDynamicSqlSupport.payStatus - , AuthorIncomeDynamicSqlSupport.confirmStatus) - .from(AuthorIncomeDynamicSqlSupport.authorIncome) - .where(AuthorIncomeDynamicSqlSupport.userId, isEqualTo(userId)) - .and(AuthorIncomeDynamicSqlSupport.bookId, isEqualTo(bookId)) - .orderBy(AuthorIncomeDynamicSqlSupport.incomeMonth.descending()) - .build() - .render(RenderingStrategies.MYBATIS3))); + , AuthorIncomeDynamicSqlSupport.preTaxIncome + , AuthorIncomeDynamicSqlSupport.afterTaxIncome + , AuthorIncomeDynamicSqlSupport.payStatus + , AuthorIncomeDynamicSqlSupport.confirmStatus) + .from(AuthorIncomeDynamicSqlSupport.authorIncome) + .where(AuthorIncomeDynamicSqlSupport.userId, isEqualTo(userId)) + .and(AuthorIncomeDynamicSqlSupport.bookId, isEqualTo(bookId)) + .orderBy(AuthorIncomeDynamicSqlSupport.incomeMonth.descending()) + .build() + .render(RenderingStrategies.MYBATIS3))); } }