10 changed files with 258 additions and 0 deletions
Split View
Diff Options
-
27dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/entity/DailyIncome.java
-
44dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/dailyincome/DailyIncomeApplicationService.java
-
37dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/DailyIncomeTask.java
-
27dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/DailyIncomeAggregate.java
-
11dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/repository/DailyIncomeRepository.java
-
17dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/dailyincome/DailyIncomeDao.java
-
40dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/DailyIncomeRepositoryImpl.java
-
13dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java
-
28dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java
-
14dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml
@ -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<DailyIncome> { |
|||
|
|||
@ApiModelProperty("收入") |
|||
private BigDecimal income; |
|||
|
|||
@ApiModelProperty("统计日期") |
|||
private LocalDate statDate; |
|||
|
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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<DailyIncome, Long> { |
|||
} |
|||
@ -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<DailyIncome> { |
|||
BigDecimal statIncome(@Param("startTime") LocalDateTime startTime, |
|||
@Param("endTime") LocalDateTime endTime); |
|||
} |
|||
@ -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); |
|||
} |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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<DailyIncome>() |
|||
.eq(DailyIncome::getStatDate,statDate) |
|||
.last("limit 1")); |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
|||
<mapper namespace="com.qniao.dam.infrastructure.persistent.dao.dailyincome.DailyIncomeDao"> |
|||
|
|||
<select id="statIncome" resultType="java.math.BigDecimal"> |
|||
SELECT IFNULL(SUM(dao.settlement_amount),0) |
|||
from da_order as dao |
|||
INNER JOIN da_order_item as daoi on daoi.order_id = dao.id and daoi.sub_category = 2001 |
|||
where dao.is_delete = 0 |
|||
and dao.`status` = 5 |
|||
and paid_time BETWEEN #{startTime} and #{endTime} |
|||
</select> |
|||
|
|||
</mapper> |
|||
Write
Preview
Loading…
Cancel
Save