Explorar el Código

修改碰撞记录和创建当日碰撞统计

Yangzw hace 10 meses
padre
commit
0c1dacb93c
Se han modificado 17 ficheros con 669 adiciones y 16 borrados
  1. 2 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java
  2. 0 1
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/partitioncrash/PartitionCrashController.java
  3. 9 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/partitioncrash/vo/PartitionCrashPageReqVO.java
  4. 94 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogController.java
  5. 32 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/vo/PtProfitDailyStatisticsLogPageReqVO.java
  6. 35 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/vo/PtProfitDailyStatisticsLogRespVO.java
  7. 28 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/vo/PtProfitDailyStatisticsLogSaveReqVO.java
  8. 42 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogDO.java
  9. 5 4
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/partitioncrash/PartitionCrashMapper.java
  10. 35 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogMapper.java
  11. 4 2
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java
  12. 54 9
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/partitioncrash/PartitionCrashServiceImpl.java
  13. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogService.java
  14. 112 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogServiceImpl.java
  15. 16 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/tools/LocalDateTimeTool.java
  16. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogMapper.xml
  17. 134 0
      feifan-module-distri/feifan-module-distri-biz/src/test/java/cn/newfeifan/mall/module/distri/service/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogServiceImplTest.java

+ 2 - 0
feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java

@@ -24,4 +24,6 @@ public interface ErrorCodeConstants {
     ErrorCode DUSER_NAME_IS_NOT_ONLY_ONE = new ErrorCode(1_002_030_018, "该直推人名称有重复的,请选择电话查询");
     ErrorCode DUSER_MOBILE_NOT_EXISTS = new ErrorCode(1_002_030_019, "该直推人电话不存在");
 
+    ErrorCode PT_PROFIT_DAILY_STATISTICS_LOG_NOT_EXISTS = new ErrorCode(1_002_030_020, "查询该日的记录不存在");
+
 }

+ 0 - 1
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/partitioncrash/PartitionCrashController.java

@@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.Operation;
 
-import javax.validation.constraints.*;
 import javax.validation.*;
 import javax.servlet.http.*;
 import java.util.*;

+ 9 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/partitioncrash/vo/PartitionCrashPageReqVO.java

@@ -4,8 +4,12 @@ import lombok.*;
 import io.swagger.v3.oas.annotations.media.Schema;
 import cn.newfeifan.mall.framework.common.pojo.PageParam;
 import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
 import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
 @Schema(description = "管理后台 - 分区碰撞分页 Request VO")
@@ -37,4 +41,9 @@ public class PartitionCrashPageReqVO extends PageParam {
     @Schema(description = "用户昵称", example = "赵六")
     private String nickName;
 
+    @Schema(description = "当日日期")
+    @NotNull(message = "日期不能为空")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
+    private LocalDate everyday;
+
 }

+ 94 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogController.java

@@ -0,0 +1,94 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog;
+
+import org.springframework.web.bind.annotation.*;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.security.access.prepost.PreAuthorize;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Operation;
+
+import javax.validation.*;
+import javax.servlet.http.*;
+import java.util.*;
+import java.io.IOException;
+
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
+
+import cn.newfeifan.mall.framework.excel.core.util.ExcelUtils;
+
+import cn.newfeifan.mall.framework.operatelog.core.annotations.OperateLog;
+import static cn.newfeifan.mall.framework.operatelog.core.enums.OperateTypeEnum.*;
+
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogDO;
+import cn.newfeifan.mall.module.distri.service.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogService;
+
+@Tag(name = "管理后台 - 平台利润每日统计记录")
+@RestController
+@RequestMapping("/distri/pt-profit-daily-statistics-log")
+@Validated
+public class PtProfitDailyStatisticsLogController {
+
+    @Resource
+    private PtProfitDailyStatisticsLogService ptProfitDailyStatisticsLogService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建平台利润每日统计记录")
+    @PreAuthorize("@ss.hasPermission('distri:pt-profit-daily-statistics-log:create')")
+    public CommonResult<Long> createPtProfitDailyStatisticsLog(@Valid @RequestBody PtProfitDailyStatisticsLogSaveReqVO createReqVO) {
+        return success(ptProfitDailyStatisticsLogService.createPtProfitDailyStatisticsLog(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新平台利润每日统计记录")
+    @PreAuthorize("@ss.hasPermission('distri:pt-profit-daily-statistics-log:update')")
+    public CommonResult<Boolean> updatePtProfitDailyStatisticsLog(@Valid @RequestBody PtProfitDailyStatisticsLogSaveReqVO updateReqVO) {
+        ptProfitDailyStatisticsLogService.updatePtProfitDailyStatisticsLog(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除平台利润每日统计记录")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:pt-profit-daily-statistics-log:delete')")
+    public CommonResult<Boolean> deletePtProfitDailyStatisticsLog(@RequestParam("id") Long id) {
+        ptProfitDailyStatisticsLogService.deletePtProfitDailyStatisticsLog(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得平台利润每日统计记录")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:pt-profit-daily-statistics-log:query')")
+    public CommonResult<PtProfitDailyStatisticsLogRespVO> getPtProfitDailyStatisticsLog(@RequestParam("id") Long id) {
+        PtProfitDailyStatisticsLogDO ptProfitDailyStatisticsLog = ptProfitDailyStatisticsLogService.getPtProfitDailyStatisticsLog(id);
+        return success(BeanUtils.toBean(ptProfitDailyStatisticsLog, PtProfitDailyStatisticsLogRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得平台利润每日统计记录分页")
+    @PreAuthorize("@ss.hasPermission('distri:pt-profit-daily-statistics-log:query')")
+    public CommonResult<PageResult<PtProfitDailyStatisticsLogRespVO>> getPtProfitDailyStatisticsLogPage(@Valid PtProfitDailyStatisticsLogPageReqVO pageReqVO) {
+        PageResult<PtProfitDailyStatisticsLogDO> pageResult = ptProfitDailyStatisticsLogService.getPtProfitDailyStatisticsLogPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, PtProfitDailyStatisticsLogRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出平台利润每日统计记录 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:pt-profit-daily-statistics-log:export')")
+    @OperateLog(type = EXPORT)
+    public void exportPtProfitDailyStatisticsLogExcel(@Valid PtProfitDailyStatisticsLogPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<PtProfitDailyStatisticsLogDO> list = ptProfitDailyStatisticsLogService.getPtProfitDailyStatisticsLogPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "平台利润每日统计记录.xls", "数据", PtProfitDailyStatisticsLogRespVO.class,
+                        BeanUtils.toBean(list, PtProfitDailyStatisticsLogRespVO.class));
+    }
+
+}

+ 32 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/vo/PtProfitDailyStatisticsLogPageReqVO.java

@@ -0,0 +1,32 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo;
+
+import lombok.*;
+
+import java.time.LocalDate;
+import io.swagger.v3.oas.annotations.media.Schema;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+
+import static cn.newfeifan.mall.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 平台利润每日统计记录分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class PtProfitDailyStatisticsLogPageReqVO extends PageParam {
+
+    @Schema(description = "时间(每日)")
+    private LocalDate everyday;
+
+    @Schema(description = "平台对碰支出")
+    private Long totalCollisionAmount;
+
+    @Schema(description = "平台剩余金额")
+    private Long totalRemainingAmount;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 35 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/vo/PtProfitDailyStatisticsLogRespVO.java

@@ -0,0 +1,35 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 平台利润每日统计记录 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class PtProfitDailyStatisticsLogRespVO {
+
+    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26578")
+    @ExcelProperty("编号")
+    private Long id;
+
+    @Schema(description = "时间(每日)", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("时间(每日)")
+    private LocalDate everyday;
+
+    @Schema(description = "平台对碰支出", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("平台对碰支出")
+    private Long totalCollisionAmount;
+
+    @Schema(description = "平台剩余金额", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("平台剩余金额")
+    private Long totalRemainingAmount;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 28 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/ptprofitdailystatisticslog/vo/PtProfitDailyStatisticsLogSaveReqVO.java

@@ -0,0 +1,28 @@
+package cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+
+import java.time.LocalDate;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 平台利润每日统计记录新增/修改 Request VO")
+@Data
+public class PtProfitDailyStatisticsLogSaveReqVO {
+
+    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26578")
+    private Long id;
+
+    @Schema(description = "时间(每日)", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "时间(每日)不能为空")
+    private LocalDate everyday;
+
+    @Schema(description = "平台对碰支出", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "平台对碰支出不能为空")
+    private Long totalCollisionAmount;
+
+    @Schema(description = "平台剩余金额", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "平台剩余金额不能为空")
+    private Long totalRemainingAmount;
+
+}

+ 42 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogDO.java

@@ -0,0 +1,42 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog;
+
+import lombok.*;
+
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 平台利润每日统计记录 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_pt_profit_daily_statistics_log")
+@KeySequence("distri_pt_profit_daily_statistics_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class PtProfitDailyStatisticsLogDO extends BaseDO {
+
+    /**
+     * 编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 时间(每日)
+     */
+    private LocalDate everyday;
+    /**
+     * 平台对碰支出
+     */
+    private Long totalCollisionAmount;
+    /**
+     * 平台剩余金额
+     */
+    private Long totalRemainingAmount;
+
+}

+ 5 - 4
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/partitioncrash/PartitionCrashMapper.java

@@ -1,11 +1,11 @@
 package cn.newfeifan.mall.module.distri.dal.mysql.partitioncrash;
 
-import java.util.*;
 
 import cn.newfeifan.mall.framework.common.pojo.PageResult;
 import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
 import cn.newfeifan.mall.module.distri.dal.dataobject.partitioncrash.PartitionCrashDO;
+import cn.newfeifan.mall.module.distri.tools.LocalDateTimeTool;
 import org.apache.ibatis.annotations.Mapper;
 import cn.newfeifan.mall.module.distri.controller.admin.partitioncrash.vo.*;
 
@@ -19,16 +19,17 @@ public interface PartitionCrashMapper extends BaseMapperX<PartitionCrashDO> {
 
 
     default PageResult<PartitionCrashDO> selectPage(PartitionCrashPageReqVO reqVO) {
-        return selectPage(reqVO, new LambdaQueryWrapperX<PartitionCrashDO>()
+        LambdaQueryWrapperX<PartitionCrashDO> queryWrapper = new LambdaQueryWrapperX<PartitionCrashDO>()
                 .eqIfPresent(PartitionCrashDO::getUserId, reqVO.getUserId())
                 .eqIfPresent(PartitionCrashDO::getPartNo, reqVO.getPartNo())
                 .eqIfPresent(PartitionCrashDO::getBrotherPrice, reqVO.getBrotherPrice())
                 .eqIfPresent(PartitionCrashDO::getSonPrice, reqVO.getSonPrice())
                 .eqIfPresent(PartitionCrashDO::getAfterHitQuota, reqVO.getAfterHitQuota())
-                .betweenIfPresent(PartitionCrashDO::getCreateTime, reqVO.getCreateTime())
+                .betweenIfPresent(PartitionCrashDO::getCreateTime, LocalDateTimeTool.startTime(reqVO.getEveryday()), LocalDateTimeTool.endTime(reqVO.getEveryday()))
                 .likeIfPresent(PartitionCrashDO::getUserName, reqVO.getUserName())
                 .likeIfPresent(PartitionCrashDO::getNickName, reqVO.getNickName())
-                .orderByDesc(PartitionCrashDO::getId));
+                .orderByDesc(PartitionCrashDO::getId);
+        return selectPage(reqVO, queryWrapper);
     }
 
 }

+ 35 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogMapper.java

@@ -0,0 +1,35 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.ptprofitdailystatisticslog;
+
+import java.time.LocalDate;
+
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.newfeifan.mall.framework.mybatis.core.mapper.BaseMapperX;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogDO;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo.*;
+
+/**
+ * 平台利润每日统计记录 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface PtProfitDailyStatisticsLogMapper extends BaseMapperX<PtProfitDailyStatisticsLogDO> {
+
+    default PageResult<PtProfitDailyStatisticsLogDO> selectPage(PtProfitDailyStatisticsLogPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<PtProfitDailyStatisticsLogDO>()
+                .eqIfPresent(PtProfitDailyStatisticsLogDO::getEveryday, reqVO.getEveryday())
+                .eqIfPresent(PtProfitDailyStatisticsLogDO::getTotalCollisionAmount, reqVO.getTotalCollisionAmount())
+                .eqIfPresent(PtProfitDailyStatisticsLogDO::getTotalRemainingAmount, reqVO.getTotalRemainingAmount())
+                .betweenIfPresent(PtProfitDailyStatisticsLogDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(PtProfitDailyStatisticsLogDO::getEveryday));
+    }
+
+    default PtProfitDailyStatisticsLogDO selectByEveryday(LocalDate now) {
+        return selectOne(new LambdaQueryWrapper<PtProfitDailyStatisticsLogDO>()
+                .eq(PtProfitDailyStatisticsLogDO::getEveryday, now)
+        );
+    }
+}

+ 4 - 2
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java

@@ -17,6 +17,7 @@ import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
 import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
 import cn.newfeifan.mall.module.distri.service.partitioncrash.PartitionCrashService;
 import cn.newfeifan.mall.module.distri.service.ptprofit.PtProfitService;
+import cn.newfeifan.mall.module.distri.service.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogService;
 import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
 import cn.newfeifan.mall.module.distri.service.sharepath.SharePathService;
 import org.springframework.context.annotation.Lazy;
@@ -80,6 +81,9 @@ public class OrderCalcServiceImpl implements OrderCalcService {
     @Resource
     private PartitionCrashService partitionCrashService;
 
+    @Resource
+    private PtProfitDailyStatisticsLogService ptProfitDailyStatisticsLogService;
+
     @Override
     public Long createOrderCalc(OrderCalcSaveReqVO createReqVO) {
         // 插入
@@ -175,7 +179,6 @@ public class OrderCalcServiceImpl implements OrderCalcService {
         // 计算,毛利中100 之外的百分比
         BigDecimal otherOneHundred = oneHundred.subtract(new BigDecimal(orderPercentageDO.getGrossProfitUserQuotaPerc()))
                 .subtract(new BigDecimal(orderPercentageDO.getGrossProfitAncestorQuotaPerc()))
-                .subtract(new BigDecimal(orderPercentageDO.getGrossProfitBonusQuotaPerc()))
                 .subtract(new BigDecimal(orderPercentageDO.getGrossProfitPlatformQuotaPerc()));
 
 
@@ -247,7 +250,6 @@ public class OrderCalcServiceImpl implements OrderCalcService {
                     .grossProfit(grossProfitInt)
                     .grossProfitUserQuota(descendantQuotaInt)
                     .grossProfitAncestorQuota(ancestorQuotaInt)
-                    .grossProfitBonusQuota(bonusQuotaInt)
                     .grossProfitPlatformQuota(platformQuotaInt)
                     .percentTemplate(percentTemplate).build();
             saveList.add(orderCalcSaveReqVO);            // ========== 修改用户钱包 =================

+ 54 - 9
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/partitioncrash/PartitionCrashServiceImpl.java

@@ -6,12 +6,14 @@ import cn.newfeifan.mall.module.distri.controller.admin.integral.vo.IntegralSave
 import cn.newfeifan.mall.module.distri.controller.admin.partitionbrothers.vo.PartitionBrothersSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.partitionson.vo.PartitionSonSaveReqVO;
 import cn.newfeifan.mall.module.distri.controller.admin.ptprofit.vo.PtProfitSaveReqVO;
-import cn.newfeifan.mall.module.distri.controller.admin.ptprofitlog.vo.PtProfitLogSaveReqVO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.duser.DuserDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.integral.IntegralDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ordercalc.OrderCalcDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.orderpercentage.OrderPercentageDO;
 import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofit.PtProfitMapper;
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogMapper;
 import cn.newfeifan.mall.module.distri.enums.CaclEnum;
 import cn.newfeifan.mall.module.distri.service.duser.DuserService;
 import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
@@ -20,7 +22,6 @@ import cn.newfeifan.mall.module.distri.service.partitionbrothers.PartitionBrothe
 import cn.newfeifan.mall.module.distri.service.partitionson.PartitionSonService;
 import cn.newfeifan.mall.module.distri.service.ptprofit.PtProfitService;
 import cn.newfeifan.mall.module.distri.service.ptprofitlog.PtProfitLogService;
-import cn.newfeifan.mall.module.distri.tools.LoginMessageTool;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
@@ -90,6 +91,12 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
     @Resource
     private PtProfitService ptProfitService;
 
+    @Resource
+    private PtProfitDailyStatisticsLogMapper ptProfitDailyStatisticsLogMapper;
+
+    @Resource
+    private PtProfitMapper ptProfitMapper;
+
 
     @Override
     public Long createPartitionCrash(PartitionCrashSaveReqVO createReqVO) {
@@ -201,7 +208,8 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                 crashSaveReqVOBuilder.sonPrice(0L);
             }
             // 合计儿子分支额度
-            Long sonSumPrice = sonOrderCalcDOS.stream().mapToLong(OrderCalcDO::getGrossProfitBonusQuota).sum();
+            double grossProfitBonusQuotaPerc = Double.parseDouble(orderPercentageDO.getGrossProfitBonusQuotaPerc());
+            Long sonSumPrice = (long) (sonOrderCalcDOS.stream().mapToLong(OrderCalcDO::getGrossProfit).sum() * grossProfitBonusQuotaPerc);
             sonBuilder.price(sonSumPrice);
 
             // 获取当前用户的兄弟分区
@@ -213,7 +221,7 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
             }
 
             // 合并兄弟分支额度
-            Long brotherSumPrice = brothersOrderCalcDOS.stream().mapToLong(OrderCalcDO::getGrossProfitBonusQuota).sum();
+            Long brotherSumPrice = (long) (brothersOrderCalcDOS.stream().mapToLong(OrderCalcDO::getGrossProfit).sum() * grossProfitBonusQuotaPerc);
             brotherBuilder.price(brotherSumPrice);
 
 
@@ -305,11 +313,17 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
         // 遍历hashMap
         for (HashMap<Long, Long> longIntegerHashMap : afterCrashMap) {
             for (Map.Entry<Long, Long> entry : longIntegerHashMap.entrySet()) {
-                if (ptProfit.getPtGrossAdd() <= 0) {
-                    break;
-                }
+                //暂时不设限制扣减
+//                if (ptProfit.getPtGrossAdd() <= 0) {
+//                    break;
+//                }
                 // 当前平台总积分
 //                Integer ptTotalAdd = ptProfit.getPtTotalAdd();
+
+                if(entry.getValue() == 0){
+                    continue;
+                }
+
                 // 扣除平台收益
                 log.info("扣除平台收益[合赢奖] " + "用户 " + entry.getKey() + "额度: " + entry.getValue());
                 ptProfit.setPtGrossAdd(ptProfit.getPtGrossAdd() - entry.getValue());
@@ -317,15 +331,46 @@ public class PartitionCrashServiceImpl implements PartitionCrashService {
                 ptProfit.setPtTotalAdd(ptProfit.getPtTotalAdd() - entry.getValue());
                 // 碰撞后的额度添加到日志中 增加日志模块
                 ptProfitLogService.addMessage(entry.getKey(), CaclEnum.AFTER_CRASH_CALC_PT_TOTAL_QUOTA
-                        , -entry.getValue(), ptProfit.getPtTotalAdd() - entry.getValue(), JsonUtils.toJsonString(orderPercentageDO));
+                        , -entry.getValue(), ptProfit.getPtTotalAdd(), JsonUtils.toJsonString(orderPercentageDO));
                 ptProfitLogService.addMessage(entry.getKey(), CaclEnum.AFTER_CRASH_CALC_PT_TOTAL_GROSS_QUOTA
-                        , -entry.getValue(), ptProfit.getPtTotalAdd() - entry.getValue(), JsonUtils.toJsonString(orderPercentageDO));
+                        , -entry.getValue(), ptProfit.getPtTotalAdd(), JsonUtils.toJsonString(orderPercentageDO));
             }
         }
         ptProfitService.updatePtProfit(PtProfitSaveReqVO.builder().id(ptProfit.getId())
                 .ptAdd(ptProfit.getPtAdd())
                 .ptGrossAdd(ptProfit.getPtGrossAdd())
                 .ptTotalAdd(ptProfit.getPtTotalAdd()).build());
+
+        // 计算平台当日的碰撞支出
+        Long sum = 0L;
+        for (HashMap<Long, Long> hashMap : afterCrashMap) {
+            for (Map.Entry<Long, Long> entry : hashMap.entrySet()) {
+                if (entry.getValue() != 0) {
+                    sum += entry.getValue();
+                }
+            }
+        }
+
+        createPtProfitDailyStatisticsLog(sum);
+    }
+
+    private void createPtProfitDailyStatisticsLog(Long sum) {
+        LocalDate now = LocalDate.now();
+
+        //确保每天只有一条记录
+        PtProfitDailyStatisticsLogDO ptLog = ptProfitDailyStatisticsLogMapper.selectByEveryday(now);
+        if (ptLog != null) {
+            ptProfitDailyStatisticsLogMapper.deleteById(ptLog.getId());
+        }
+        //获取平台总收益
+        PtProfitDO ptProfitDO = ptProfitMapper.selectList().get(0);
+
+        ptLog = new PtProfitDailyStatisticsLogDO();
+        ptLog.setEveryday(now);
+        ptLog.setTotalCollisionAmount(sum);
+        ptLog.setTotalRemainingAmount(ptProfitDO.getPtGrossAdd());
+
+        ptProfitDailyStatisticsLogMapper.insert(ptLog);
     }
 
     public Boolean compare(Long highQuota, BigDecimal afterCrash) {

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogService.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.service.ptprofitdailystatisticslog;
+
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+
+/**
+ * 平台利润每日统计记录 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface PtProfitDailyStatisticsLogService {
+
+    /**
+     * 创建平台利润每日统计记录
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createPtProfitDailyStatisticsLog(@Valid PtProfitDailyStatisticsLogSaveReqVO createReqVO);
+
+    /**
+     * 更新平台利润每日统计记录
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updatePtProfitDailyStatisticsLog(@Valid PtProfitDailyStatisticsLogSaveReqVO updateReqVO);
+
+    /**
+     * 删除平台利润每日统计记录
+     *
+     * @param id 编号
+     */
+    void deletePtProfitDailyStatisticsLog(Long id);
+
+    /**
+     * 获得平台利润每日统计记录
+     *
+     * @param id 编号
+     * @return 平台利润每日统计记录
+     */
+    PtProfitDailyStatisticsLogDO getPtProfitDailyStatisticsLog(Long id);
+
+    /**
+     * 获得平台利润每日统计记录分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 平台利润每日统计记录分页
+     */
+    PageResult<PtProfitDailyStatisticsLogDO> getPtProfitDailyStatisticsLogPage(PtProfitDailyStatisticsLogPageReqVO pageReqVO);
+
+    void createPtProfitDailyStatisticsLog();
+
+}

+ 112 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogServiceImpl.java

@@ -0,0 +1,112 @@
+package cn.newfeifan.mall.module.distri.service.ptprofitdailystatisticslog;
+
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofit.PtProfitDO;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitlog.PtProfitLogDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofit.PtProfitMapper;
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofitlog.PtProfitLogMapper;
+import cn.newfeifan.mall.module.distri.tools.LocalDateTimeTool;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import java.time.LocalDate;
+import java.util.*;
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.CaclEnum.AFTER_CRASH_CALC_PT_TOTAL_GROSS_QUOTA;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 平台利润每日统计记录 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class PtProfitDailyStatisticsLogServiceImpl implements PtProfitDailyStatisticsLogService {
+
+    @Resource
+    private PtProfitDailyStatisticsLogMapper ptProfitDailyStatisticsLogMapper;
+
+    @Resource
+    private PtProfitMapper ptProfitMapper;
+
+    @Resource
+    PtProfitLogMapper ptProfitLogMapper;
+
+    @Override
+    public Long createPtProfitDailyStatisticsLog(PtProfitDailyStatisticsLogSaveReqVO createReqVO) {
+        // 插入
+        PtProfitDailyStatisticsLogDO ptProfitDailyStatisticsLog = BeanUtils.toBean(createReqVO, PtProfitDailyStatisticsLogDO.class);
+        ptProfitDailyStatisticsLogMapper.insert(ptProfitDailyStatisticsLog);
+        // 返回
+        return ptProfitDailyStatisticsLog.getId();
+    }
+
+    @Override
+    public void updatePtProfitDailyStatisticsLog(PtProfitDailyStatisticsLogSaveReqVO updateReqVO) {
+        // 校验存在
+        validatePtProfitDailyStatisticsLogExists(updateReqVO.getId());
+        // 更新
+        PtProfitDailyStatisticsLogDO updateObj = BeanUtils.toBean(updateReqVO, PtProfitDailyStatisticsLogDO.class);
+        ptProfitDailyStatisticsLogMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deletePtProfitDailyStatisticsLog(Long id) {
+        // 校验存在
+        validatePtProfitDailyStatisticsLogExists(id);
+        // 删除
+        ptProfitDailyStatisticsLogMapper.deleteById(id);
+    }
+
+    private void validatePtProfitDailyStatisticsLogExists(Long id) {
+        if (ptProfitDailyStatisticsLogMapper.selectById(id) == null) {
+            throw exception(PT_PROFIT_DAILY_STATISTICS_LOG_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public PtProfitDailyStatisticsLogDO getPtProfitDailyStatisticsLog(Long id) {
+        return ptProfitDailyStatisticsLogMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<PtProfitDailyStatisticsLogDO> getPtProfitDailyStatisticsLogPage(PtProfitDailyStatisticsLogPageReqVO pageReqVO) {
+        return ptProfitDailyStatisticsLogMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void createPtProfitDailyStatisticsLog() {
+        LocalDate now = LocalDate.now();
+
+        //确保每天只有一条记录
+        PtProfitDailyStatisticsLogDO ptLog = ptProfitDailyStatisticsLogMapper.selectByEveryday(now);
+        if (ptLog != null) {
+            deletePtProfitDailyStatisticsLog(ptLog.getId());
+        }
+        //获取平台总收益
+        PtProfitDO ptProfitDO = ptProfitMapper.selectList().get(0);
+        //获取当天碰撞支出总和
+        List<PtProfitLogDO> ptProfitLogDOS = ptProfitLogMapper.selectList(new LambdaQueryWrapper<PtProfitLogDO>()
+                .between(PtProfitLogDO::getCreateTime, LocalDateTimeTool.startTime(now), LocalDateTimeTool.endTime(now))
+                .eq(PtProfitLogDO::getProfitStatus, AFTER_CRASH_CALC_PT_TOTAL_GROSS_QUOTA)
+        );
+        Long sum = ptProfitLogDOS.stream().mapToLong(PtProfitLogDO::getAmount).sum();
+
+        ptLog = new PtProfitDailyStatisticsLogDO();
+        ptLog.setEveryday(now);
+        ptLog.setTotalCollisionAmount(sum);
+        ptLog.setTotalRemainingAmount(ptProfitDO.getPtTotalAdd());
+
+        ptProfitDailyStatisticsLogMapper.insert(ptLog);
+    }
+
+}

+ 16 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/tools/LocalDateTimeTool.java

@@ -0,0 +1,16 @@
+package cn.newfeifan.mall.module.distri.tools;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+public class LocalDateTimeTool {
+    public static LocalDateTime startTime(LocalDate date){
+        LocalDateTime startTime = date.atStartOfDay();
+        return startTime.plusHours(3);
+    }
+
+    public static LocalDateTime endTime(LocalDate date){
+        LocalDateTime startTime = date.atStartOfDay();
+        return startTime.plusDays(1).plusHours(3);
+    }
+}

+ 12 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogMapper.xml

@@ -0,0 +1,12 @@
+<?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="cn.newfeifan.mall.module.distri.dal.mysql.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.zhongxing.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 134 - 0
feifan-module-distri/feifan-module-distri-biz/src/test/java/cn/newfeifan/mall/module/distri/service/ptprofitdailystatisticslog/PtProfitDailyStatisticsLogServiceImplTest.java

@@ -0,0 +1,134 @@
+package cn.newfeifan.mall.module.distri.service.ptprofitdailystatisticslog;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import javax.annotation.Resource;
+
+import cn.newfeifan.mall.framework.test.core.ut.BaseDbUnitTest;
+
+import cn.newfeifan.mall.module.distri.controller.admin.ptprofitdailystatisticslog.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.ptprofitdailystatisticslog.PtProfitDailyStatisticsLogMapper;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+
+import org.springframework.context.annotation.Import;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+import static cn.newfeifan.mall.framework.test.core.util.AssertUtils.*;
+import static cn.newfeifan.mall.framework.test.core.util.RandomUtils.*;
+import static cn.newfeifan.mall.framework.common.util.date.LocalDateTimeUtils.*;
+import static cn.newfeifan.mall.framework.common.util.object.ObjectUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+/**
+ * {@link PtProfitDailyStatisticsLogServiceImpl} 的单元测试类
+ *
+ * @author 非繁人
+ */
+@Import(PtProfitDailyStatisticsLogServiceImpl.class)
+public class PtProfitDailyStatisticsLogServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private PtProfitDailyStatisticsLogServiceImpl ptProfitDailyStatisticsLogService;
+
+    @Resource
+    private PtProfitDailyStatisticsLogMapper ptProfitDailyStatisticsLogMapper;
+
+    @Test
+    public void testCreatePtProfitDailyStatisticsLog_success() {
+        // 准备参数
+        PtProfitDailyStatisticsLogSaveReqVO createReqVO = randomPojo(PtProfitDailyStatisticsLogSaveReqVO.class).setId(null);
+
+        // 调用
+        Long ptProfitDailyStatisticsLogId = ptProfitDailyStatisticsLogService.createPtProfitDailyStatisticsLog(createReqVO);
+        // 断言
+        assertNotNull(ptProfitDailyStatisticsLogId);
+        // 校验记录的属性是否正确
+        PtProfitDailyStatisticsLogDO ptProfitDailyStatisticsLog = ptProfitDailyStatisticsLogMapper.selectById(ptProfitDailyStatisticsLogId);
+        assertPojoEquals(createReqVO, ptProfitDailyStatisticsLog, "id");
+    }
+
+    @Test
+    public void testUpdatePtProfitDailyStatisticsLog_success() {
+        // mock 数据
+        PtProfitDailyStatisticsLogDO dbPtProfitDailyStatisticsLog = randomPojo(PtProfitDailyStatisticsLogDO.class);
+        ptProfitDailyStatisticsLogMapper.insert(dbPtProfitDailyStatisticsLog);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        PtProfitDailyStatisticsLogSaveReqVO updateReqVO = randomPojo(PtProfitDailyStatisticsLogSaveReqVO.class, o -> {
+            o.setId(dbPtProfitDailyStatisticsLog.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        ptProfitDailyStatisticsLogService.updatePtProfitDailyStatisticsLog(updateReqVO);
+        // 校验是否更新正确
+        PtProfitDailyStatisticsLogDO ptProfitDailyStatisticsLog = ptProfitDailyStatisticsLogMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, ptProfitDailyStatisticsLog);
+    }
+
+    @Test
+    public void testUpdatePtProfitDailyStatisticsLog_notExists() {
+        // 准备参数
+        PtProfitDailyStatisticsLogSaveReqVO updateReqVO = randomPojo(PtProfitDailyStatisticsLogSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> ptProfitDailyStatisticsLogService.updatePtProfitDailyStatisticsLog(updateReqVO), PT_PROFIT_DAILY_STATISTICS_LOG_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeletePtProfitDailyStatisticsLog_success() {
+        // mock 数据
+        PtProfitDailyStatisticsLogDO dbPtProfitDailyStatisticsLog = randomPojo(PtProfitDailyStatisticsLogDO.class);
+        ptProfitDailyStatisticsLogMapper.insert(dbPtProfitDailyStatisticsLog);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbPtProfitDailyStatisticsLog.getId();
+
+        // 调用
+        ptProfitDailyStatisticsLogService.deletePtProfitDailyStatisticsLog(id);
+       // 校验数据不存在了
+       assertNull(ptProfitDailyStatisticsLogMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeletePtProfitDailyStatisticsLog_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> ptProfitDailyStatisticsLogService.deletePtProfitDailyStatisticsLog(id), PT_PROFIT_DAILY_STATISTICS_LOG_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetPtProfitDailyStatisticsLogPage() {
+       // mock 数据
+       PtProfitDailyStatisticsLogDO dbPtProfitDailyStatisticsLog = randomPojo(PtProfitDailyStatisticsLogDO.class, o -> { // 等会查询到
+           o.setEveryday(null);
+           o.setTotalCollisionAmount(null);
+           o.setTotalRemainingAmount(null);
+           o.setCreateTime(null);
+       });
+       ptProfitDailyStatisticsLogMapper.insert(dbPtProfitDailyStatisticsLog);
+       // 测试 everyday 不匹配
+       ptProfitDailyStatisticsLogMapper.insert(cloneIgnoreId(dbPtProfitDailyStatisticsLog, o -> o.setEveryday(null)));
+       // 测试 totalCollisionAmount 不匹配
+       ptProfitDailyStatisticsLogMapper.insert(cloneIgnoreId(dbPtProfitDailyStatisticsLog, o -> o.setTotalCollisionAmount(null)));
+       // 测试 totalRemainingAmount 不匹配
+       ptProfitDailyStatisticsLogMapper.insert(cloneIgnoreId(dbPtProfitDailyStatisticsLog, o -> o.setTotalRemainingAmount(null)));
+       // 测试 createTime 不匹配
+       ptProfitDailyStatisticsLogMapper.insert(cloneIgnoreId(dbPtProfitDailyStatisticsLog, o -> o.setCreateTime(null)));
+       // 准备参数
+       PtProfitDailyStatisticsLogPageReqVO reqVO = new PtProfitDailyStatisticsLogPageReqVO();
+       reqVO.setEveryday(null);
+       reqVO.setTotalCollisionAmount(null);
+       reqVO.setTotalRemainingAmount(null);
+       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+       // 调用
+       PageResult<PtProfitDailyStatisticsLogDO> pageResult = ptProfitDailyStatisticsLogService.getPtProfitDailyStatisticsLogPage(reqVO);
+       // 断言
+       assertEquals(1, pageResult.getTotal());
+       assertEquals(1, pageResult.getList().size());
+       assertPojoEquals(dbPtProfitDailyStatisticsLog, pageResult.getList().get(0));
+    }
+
+}