Browse Source

平台每日收益

master
188814092560 2 weeks ago
parent
commit
b5a5b92abe
10 changed files with 258 additions and 0 deletions
  1. 27
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/entity/DailyIncome.java
  2. 44
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/dailyincome/DailyIncomeApplicationService.java
  3. 37
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/DailyIncomeTask.java
  4. 27
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/DailyIncomeAggregate.java
  5. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/dailyincome/repository/DailyIncomeRepository.java
  6. 17
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/dailyincome/DailyIncomeDao.java
  7. 40
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/DailyIncomeRepositoryImpl.java
  8. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java
  9. 28
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java
  10. 14
      dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml

27
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<DailyIncome> {
@ApiModelProperty("收入")
private BigDecimal income;
@ApiModelProperty("统计日期")
private LocalDate statDate;
}

44
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);
}
}
}

37
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);
}
}
}

27
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);
}
}

11
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<DailyIncome, Long> {
}

17
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<DailyIncome> {
BigDecimal statIncome(@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime);
}

40
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);
}
}

13
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);
}

28
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<DailyIncome>()
.eq(DailyIncome::getStatDate,statDate)
.last("limit 1"));
}
}

14
dating-agency-mall-server/src/main/resources/mapper/dailyincome/DailyIncomeDao.xml

@ -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>
Loading…
Cancel
Save