From b5a5b92abe2f2ef9c2308cfe656c4e183eff2d57 Mon Sep 17 00:00:00 2001 From: 188814092560 Date: Sun, 3 May 2026 23:25:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E6=AF=8F=E6=97=A5=E6=94=B6?= =?UTF-8?q?=E7=9B=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dailyincome/entity/DailyIncome.java | 27 ++++++++++++ .../DailyIncomeApplicationService.java | 44 +++++++++++++++++++ .../dam/application/task/DailyIncomeTask.java | 37 ++++++++++++++++ .../dailyincome/DailyIncomeAggregate.java | 27 ++++++++++++ .../repository/DailyIncomeRepository.java | 11 +++++ .../dao/dailyincome/DailyIncomeDao.java | 17 +++++++ .../impl/DailyIncomeRepositoryImpl.java | 40 +++++++++++++++++ .../dailyincome/DailyIncomeQueryService.java | 13 ++++++ .../impl/DailyIncomeQueryServiceImpl.java | 28 ++++++++++++ .../mapper/dailyincome/DailyIncomeDao.xml | 14 ++++++ 10 files changed, 258 insertions(+) create mode 100644 dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/entity/DailyIncome.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/dailyincome/DailyIncomeApplicationService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/DailyIncomeTask.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/DailyIncomeAggregate.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/repository/DailyIncomeRepository.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/dailyincome/DailyIncomeDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/DailyIncomeRepositoryImpl.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java create mode 100644 dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/entity/DailyIncome.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/entity/DailyIncome.java new file mode 100644 index 0000000..cbb07d9 --- /dev/null +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/entity/DailyIncome.java @@ -0,0 +1,27 @@ +package com.qniao.dam.domain.aggregate.dailyincome.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.qniao.domain.Entity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * @author Zpj + * @date 2026/5/3 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("da_daily_income") +public class DailyIncome extends Entity { + + @ApiModelProperty("收入") + private BigDecimal income; + + @ApiModelProperty("统计日期") + private LocalDate statDate; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/dailyincome/DailyIncomeApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/dailyincome/DailyIncomeApplicationService.java new file mode 100644 index 0000000..e301ac2 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/dailyincome/DailyIncomeApplicationService.java @@ -0,0 +1,44 @@ +package com.qniao.dam.application.service.dailyincome; + +import com.qniao.dam.domain.aggregate.dailyincome.DailyIncomeAggregate; +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import com.qniao.dam.infrastructure.persistent.dao.dailyincome.DailyIncomeDao; +import com.qniao.dam.query.dailyincome.DailyIncomeQueryService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.Objects; + +/** + * @author Zpj + * @date 2026/5/3 + */ +@Service +public class DailyIncomeApplicationService { + + @Resource + private DailyIncomeDao dailyIncomeDao; + @Resource + private DailyIncomeQueryService dailyIncomeQueryService; + @Resource + private DailyIncomeAggregate dailyIncomeAggregate; + + public void stat(LocalDate statDate) { + LocalDateTime startTime = statDate.atStartOfDay(); + LocalDateTime endTime = statDate.atTime(23, 59, 59); + BigDecimal income = dailyIncomeDao.statIncome(startTime, endTime); + DailyIncome dailyIncome = dailyIncomeQueryService.queryBy(statDate); + if (Objects.nonNull(dailyIncome)) { + dailyIncome.setIncome(income); + dailyIncomeAggregate.edit(dailyIncome); + } else { + dailyIncome = new DailyIncome(); + dailyIncome.setIncome(income); + dailyIncome.setStatDate(statDate); + dailyIncomeAggregate.create(dailyIncome); + } + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/DailyIncomeTask.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/DailyIncomeTask.java new file mode 100644 index 0000000..2631127 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/DailyIncomeTask.java @@ -0,0 +1,37 @@ +package com.qniao.dam.application.task; + +import com.qniao.dam.application.service.dailyincome.DailyIncomeApplicationService; +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import com.qniao.dam.domain.aggregate.order.entity.Order; +import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDate; + +/** + * @author Zpj + * @date 2026/5/3 + */ +@Component +@Slf4j +public class DailyIncomeTask { + + @Resource + private DailyIncomeApplicationService dailyIncomeApplicationService; + + + @Scheduled(cron = "0 10 0 * * *") + public void handle() { + try { + log.error("每日收益统计任务开始"); + LocalDate statDate = LocalDate.now().minusDays(1); + dailyIncomeApplicationService.stat(statDate); + log.error("每日收益统计任务结束"); + } catch (Exception e) { + log.error("每日收益统计任务异常", e); + } + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/DailyIncomeAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/DailyIncomeAggregate.java new file mode 100644 index 0000000..72125dd --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/DailyIncomeAggregate.java @@ -0,0 +1,27 @@ +package com.qniao.dam.domain.aggregate.dailyincome; + +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import com.qniao.dam.domain.aggregate.dailyincome.repository.DailyIncomeRepository; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; + +/** + * @author Zpj + * @date 2026/5/3 + */ +@Service +public class DailyIncomeAggregate { + + @Resource + private DailyIncomeRepository repository; + + public void create(DailyIncome entity) { + repository.save(entity); + } + + public void edit(DailyIncome entity) { + repository.save(entity); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/repository/DailyIncomeRepository.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/repository/DailyIncomeRepository.java new file mode 100644 index 0000000..407b543 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/repository/DailyIncomeRepository.java @@ -0,0 +1,11 @@ +package com.qniao.dam.domain.aggregate.dailyincome.repository; + +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import com.qniao.domain.Repository; + +/** + * @author Zpj + * @date 2026/5/3 + */ +public interface DailyIncomeRepository extends Repository { +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/dailyincome/DailyIncomeDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/dailyincome/DailyIncomeDao.java new file mode 100644 index 0000000..113cf2d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/dailyincome/DailyIncomeDao.java @@ -0,0 +1,17 @@ +package com.qniao.dam.infrastructure.persistent.dao.dailyincome; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * @author Zpj + * @date 2026/5/3 + */ +public interface DailyIncomeDao extends BaseMapper { + BigDecimal statIncome(@Param("startTime") LocalDateTime startTime, + @Param("endTime") LocalDateTime endTime); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/DailyIncomeRepositoryImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/DailyIncomeRepositoryImpl.java new file mode 100644 index 0000000..0be2999 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/DailyIncomeRepositoryImpl.java @@ -0,0 +1,40 @@ +package com.qniao.dam.infrastructure.persistent.repository.impl; + +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import com.qniao.dam.domain.aggregate.dailyincome.repository.DailyIncomeRepository; +import com.qniao.dam.infrastructure.persistent.dao.dailyincome.DailyIncomeDao; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Objects; + +/** + * @author Zpj + * @date 2026/5/3 + */ +@Service +public class DailyIncomeRepositoryImpl implements DailyIncomeRepository { + + @Resource + private DailyIncomeDao dao; + + @Override + public DailyIncome load(Long id) { + return dao.selectById(id); + } + + @Override + public Long save(DailyIncome entity) { + if (Objects.isNull(entity) || Objects.isNull(dao.selectById(entity.getId()))) { + dao.insert(entity); + } else { + dao.updateById(entity); + } + return entity.getId(); + } + + @Override + public void delete(Long id) { + dao.deleteById(id); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java new file mode 100644 index 0000000..5d6b3f2 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java @@ -0,0 +1,13 @@ +package com.qniao.dam.query.dailyincome; + +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; + +import java.time.LocalDate; + +/** + * @author Zpj + * @date 2026/5/3 + */ +public interface DailyIncomeQueryService { + DailyIncome queryBy(LocalDate statDate); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java new file mode 100644 index 0000000..49a4ab9 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java @@ -0,0 +1,28 @@ +package com.qniao.dam.query.dailyincome.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome; +import com.qniao.dam.infrastructure.persistent.dao.dailyincome.DailyIncomeDao; +import com.qniao.dam.query.dailyincome.DailyIncomeQueryService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.time.LocalDate; + +/** + * @author Zpj + * @date 2026/5/3 + */ +@Service +public class DailyIncomeQueryServiceImpl implements DailyIncomeQueryService { + + @Resource + private DailyIncomeDao dailyIncomeDao; + + @Override + public DailyIncome queryBy(LocalDate statDate) { + return dailyIncomeDao.selectOne(new LambdaQueryWrapper() + .eq(DailyIncome::getStatDate,statDate) + .last("limit 1")); + } +} diff --git a/dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml b/dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml new file mode 100644 index 0000000..89fe3ce --- /dev/null +++ b/dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml @@ -0,0 +1,14 @@ + + + + + + +