Browse Source

任务模板

master
张彭杰 1 week ago
parent
commit
73dc9c5dc6
7 changed files with 185 additions and 6 deletions
  1. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/dailyincome/user/DailyIncomeUserQueryController.java
  2. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/dailyincome/user/request/UserPageUserDeliveryIncomeStatQueryParams.java
  3. 77
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/dailyincome/user/response/UserPageUserDeliveryIncomeStatVo.java
  4. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/userdeliveryincome/UserDeliveryIncomeDao.java
  5. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java
  6. 32
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java
  7. 27
      dating-agency-mall-server/src/main/resources/mapper/userdeliveryincome/UserDeliveryIncomeDao.xml

23
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/dailyincome/user/DailyIncomeUserQueryController.java

@ -1,7 +1,9 @@
package com.qniao.dam.api.query.dailyincome.user;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageDailyRoiStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageUserDeliveryIncomeStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageDailyRoiStatVo;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageUserDeliveryIncomeStatVo;
import com.qniao.dam.query.dailyincome.DailyIncomeQueryService;
import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil;
@ -26,12 +28,21 @@ public class DailyIncomeUserQueryController {
@Resource
private DailyIncomeQueryService dailyIncomeQueryService;
@GetMapping("page/daily-roi/stat")
@ApiOperation("获取每日roi统计分页")
public QnPage<UserPageDailyRoiStatVo> userPageDailyRoiStat(PageUtil pageUtil,
UserPageDailyRoiStatQueryParams queryParams,
@RequestParam("userId") Long userId) {
return PageUtil.convert(dailyIncomeQueryService.pageDailyRoiStat(pageUtil, queryParams), UserPageDailyRoiStatVo.class);
// @GetMapping("page/daily-roi/stat")
// @ApiOperation("获取每日roi统计分页")
// public QnPage<UserPageDailyRoiStatVo> userPageDailyRoiStat(PageUtil pageUtil,
// UserPageDailyRoiStatQueryParams queryParams,
// @RequestParam("userId") Long userId) {
// return PageUtil.convert(dailyIncomeQueryService.pageDailyRoiStat(pageUtil, queryParams), UserPageDailyRoiStatVo.class);
// }
@GetMapping("page/user-delivery-income/stat")
@ApiOperation("获取用户投流收益分页")
public QnPage<UserPageUserDeliveryIncomeStatVo> userPageUserDeliveryIncomeStat(PageUtil pageUtil,
UserPageUserDeliveryIncomeStatQueryParams queryParams,
@RequestParam("userId") Long userId) {
return PageUtil.convert(dailyIncomeQueryService.pageUserDeliveryIncomeStat(pageUtil, queryParams), UserPageUserDeliveryIncomeStatVo.class);
}
}

20
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/dailyincome/user/request/UserPageUserDeliveryIncomeStatQueryParams.java

@ -0,0 +1,20 @@
package com.qniao.dam.api.query.dailyincome.user.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDate;
@Data
public class UserPageUserDeliveryIncomeStatQueryParams {
@ApiModelProperty("统计日期开始")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate statDateFrom;
@ApiModelProperty("统计日期结束")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate statDateTo;
}

77
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/dailyincome/user/response/UserPageUserDeliveryIncomeStatVo.java

@ -0,0 +1,77 @@
package com.qniao.dam.api.query.dailyincome.user.response;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDate;
@Data
public class UserPageUserDeliveryIncomeStatVo {
@ApiModelProperty("唯一标识")
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
@ApiModelProperty("统计日期")
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate statDate;
@ApiModelProperty("注册数量")
private Integer registerCount;
@ApiModelProperty("投放成本")
private BigDecimal deliveryCost;
@ApiModelProperty("2日收入")
private BigDecimal income2d;
@ApiModelProperty("3日收入")
private BigDecimal income3d;
@ApiModelProperty("4日收入")
private BigDecimal income4d;
@ApiModelProperty("5日收入")
private BigDecimal income5d;
@ApiModelProperty("6日收入")
private BigDecimal income6d;
@ApiModelProperty("7日收入")
private BigDecimal income7d;
@ApiModelProperty("14日收入")
private BigDecimal income14d;
@ApiModelProperty("30日收入")
private BigDecimal income30d;
@ApiModelProperty("ROI-2d")
private BigDecimal roi2d;
@ApiModelProperty("ROI-3d")
private BigDecimal roi3d;
@ApiModelProperty("ROI-4d")
private BigDecimal roi4d;
@ApiModelProperty("ROI-5d")
private BigDecimal roi5d;
@ApiModelProperty("ROI-6d")
private BigDecimal roi6d;
@ApiModelProperty("ROI-7d")
private BigDecimal roi7d;
@ApiModelProperty("ROI-14d")
private BigDecimal roi14d;
@ApiModelProperty("ROI-30d")
private BigDecimal roi30d;
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/userdeliveryincome/UserDeliveryIncomeDao.java

@ -1,11 +1,18 @@
package com.qniao.dam.infrastructure.persistent.dao.userdeliveryincome;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageUserDeliveryIncomeStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageUserDeliveryIncomeStatVo;
import com.qniao.dam.domain.aggregate.userdeliveryincome.entity.UserDeliveryIncome;
import org.apache.ibatis.annotations.Param;
/**
* @author Zpj
* @date 2026/5/10
*/
public interface UserDeliveryIncomeDao extends BaseMapper<UserDeliveryIncome> {
IPage<UserPageUserDeliveryIncomeStatVo> page(Page<Object> pageWithoutOrders,
@Param("queryParams") UserPageUserDeliveryIncomeStatQueryParams queryParams);
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/DailyIncomeQueryService.java

@ -2,7 +2,9 @@ package com.qniao.dam.query.dailyincome;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageDailyRoiStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageUserDeliveryIncomeStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageDailyRoiStatVo;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageUserDeliveryIncomeStatVo;
import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome;
import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil;
@ -17,4 +19,7 @@ public interface DailyIncomeQueryService {
DailyIncome queryBy(LocalDate statDate);
IPage<UserPageDailyRoiStatVo> pageDailyRoiStat(PageUtil pageUtil, UserPageDailyRoiStatQueryParams queryParams);
IPage<UserPageUserDeliveryIncomeStatVo> pageUserDeliveryIncomeStat(PageUtil pageUtil,
UserPageUserDeliveryIncomeStatQueryParams queryParams);
}

32
dating-agency-mall-server/src/main/java/com/qniao/dam/query/dailyincome/impl/DailyIncomeQueryServiceImpl.java

@ -3,9 +3,12 @@ package com.qniao.dam.query.dailyincome.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageDailyRoiStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.request.UserPageUserDeliveryIncomeStatQueryParams;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageDailyRoiStatVo;
import com.qniao.dam.api.query.dailyincome.user.response.UserPageUserDeliveryIncomeStatVo;
import com.qniao.dam.domain.aggregate.dailyincome.entity.DailyIncome;
import com.qniao.dam.infrastructure.persistent.dao.dailyincome.DailyIncomeDao;
import com.qniao.dam.infrastructure.persistent.dao.userdeliveryincome.UserDeliveryIncomeDao;
import com.qniao.dam.query.dailyincome.DailyIncomeQueryService;
import com.qniao.framework.utils.PageUtil;
import org.springframework.stereotype.Service;
@ -25,6 +28,8 @@ public class DailyIncomeQueryServiceImpl implements DailyIncomeQueryService {
@Resource
private DailyIncomeDao dailyIncomeDao;
@Resource
private UserDeliveryIncomeDao userDeliveryIncomeDao;
@Override
public DailyIncome queryBy(LocalDate statDate) {
@ -61,6 +66,33 @@ public class DailyIncomeQueryServiceImpl implements DailyIncomeQueryService {
return page;
}
@Override
public IPage<UserPageUserDeliveryIncomeStatVo> pageUserDeliveryIncomeStat(PageUtil pageUtil,
UserPageUserDeliveryIncomeStatQueryParams queryParams) {
IPage<UserPageUserDeliveryIncomeStatVo> page = userDeliveryIncomeDao.page(pageUtil.toPageWithoutOrders(), queryParams);
if (page.getRecords().size() > 0) {
page.getRecords().forEach(record -> {
record.setIncome2d(calculateRoi(record.getDeliveryCost(), record.getIncome2d()));
record.setIncome3d(calculateRoi(record.getDeliveryCost(), record.getIncome3d()));
record.setIncome4d(calculateRoi(record.getDeliveryCost(), record.getIncome4d()));
record.setIncome5d(calculateRoi(record.getDeliveryCost(), record.getIncome5d()));
record.setIncome6d(calculateRoi(record.getDeliveryCost(), record.getIncome6d()));
record.setIncome7d(calculateRoi(record.getDeliveryCost(), record.getIncome7d()));
record.setIncome14d(calculateRoi(record.getDeliveryCost(), record.getIncome14d()));
record.setIncome30d(calculateRoi(record.getDeliveryCost(), record.getIncome30d()));
});
}
return page;
}
private BigDecimal calculateRoi(BigDecimal deliveryCost, BigDecimal income) {
if (Objects.nonNull(deliveryCost) && deliveryCost.compareTo(BigDecimal.ZERO) > 0 && Objects.nonNull(income)) {
return income.multiply(BigDecimal.valueOf(100)).divide(deliveryCost, 2, RoundingMode.HALF_UP);
} else {
return null;
}
}
private BigDecimal calculateRoi(BigDecimal deliveryCost, LocalDate statDate, int days) {
BigDecimal roi = BigDecimal.ZERO;
if (Objects.nonNull(deliveryCost) && deliveryCost.compareTo(BigDecimal.ZERO) > 0) {

27
dating-agency-mall-server/src/main/resources/mapper/userdeliveryincome/UserDeliveryIncomeDao.xml

@ -0,0 +1,27 @@
<?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.userdeliveryincome.UserDeliveryIncomeDao">
<select id="page"
resultType="com.qniao.dam.api.query.dailyincome.user.response.UserPageUserDeliveryIncomeStatVo">
SELECT
daudi.id,
daudi.stat_date,
daudi.delivery_cost,
daudi.income2d,
daudi.income3d,
daudi.income4d,
daudi.income5d,
daudi.income6d,
daudi.income7d,
daudi.income14d,
daudi.income30d
from da_user_delivery_income as daudi
where daudi.is_delete=0
<if test="queryParams.statDateFrom != null and queryParams.statDateTo != null">
and daudi.stat_date BETWEEN #{queryParams.statDateFrom} and #{queryParams.statDateTo}
</if>
ORDER BY daudi.stat_date desc
</select>
</mapper>
Loading…
Cancel
Save