Browse Source

修改微信模板信息

Yangzw 8 months ago
parent
commit
a33ca2f798
14 changed files with 621 additions and 2 deletions
  1. 1 0
      feifan-module-distri/feifan-module-distri-api/src/main/java/cn/newfeifan/mall/module/distri/enums/ErrorCodeConstants.java
  2. 95 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/DailyBillController.java
  3. 40 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillPageReqVO.java
  4. 48 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillRespVO.java
  5. 37 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillSaveReqVO.java
  6. 55 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/dailybill/DailyBillDO.java
  7. 32 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/dailybill/DailyBillMapper.java
  8. 60 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/dailybill/DailyBillService.java
  9. 79 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/dailybill/DailyBillServiceImpl.java
  10. 7 0
      feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/ordercalc/OrderCalcServiceImpl.java
  11. 12 0
      feifan-module-distri/feifan-module-distri-biz/src/main/resources/mapper/dailybill/DailyBillMapper.xml
  12. 154 0
      feifan-module-distri/feifan-module-distri-biz/src/test/java/cn/newfeifan/mall/module/distri/service/dailybill/DailyBillServiceImplTest.java
  13. 0 1
      feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/ErrorCodeConstants.java
  14. 1 1
      sql/mysql/建空库SQL/13_20240617.sql

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

@@ -29,5 +29,6 @@ public interface ErrorCodeConstants {
     ErrorCode GROSS_PROFIT_BONUS_QUOTA_PERC_EXCEED_MAXIMUM_LIMIT = new ErrorCode(1_002_030_022, "合赢奖不能超过最大限制");
     ErrorCode USER_SIGN_IN_LOG_NOT_EXISTS = new ErrorCode(1_002_030_023, "签到日志不存在");
     ErrorCode PT_PROFIT_LOG_DETAILS_NOT_EXISTS = new ErrorCode(1_002_030_024, "平台利润记录详情不存在");
+    ErrorCode DAILY_BILL_NOT_EXISTS = new ErrorCode(1_002_030_025, "每日账单详细不存在");
 
 }

+ 95 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/DailyBillController.java

@@ -0,0 +1,95 @@
+package cn.newfeifan.mall.module.distri.controller.admin.dailybill;
+
+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.constraints.*;
+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.dailybill.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.dailybill.DailyBillDO;
+import cn.newfeifan.mall.module.distri.service.dailybill.DailyBillService;
+
+@Tag(name = "管理后台 - 每日账单")
+@RestController
+@RequestMapping("/distri/daily-bill")
+@Validated
+public class DailyBillController {
+
+    @Resource
+    private DailyBillService dailyBillService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建每日账单")
+    @PreAuthorize("@ss.hasPermission('distri:daily-bill:create')")
+    public CommonResult<Long> createDailyBill(@Valid @RequestBody DailyBillSaveReqVO createReqVO) {
+        return success(dailyBillService.createDailyBill(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新每日账单")
+    @PreAuthorize("@ss.hasPermission('distri:daily-bill:update')")
+    public CommonResult<Boolean> updateDailyBill(@Valid @RequestBody DailyBillSaveReqVO updateReqVO) {
+        dailyBillService.updateDailyBill(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除每日账单")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('distri:daily-bill:delete')")
+    public CommonResult<Boolean> deleteDailyBill(@RequestParam("id") Long id) {
+        dailyBillService.deleteDailyBill(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得每日账单")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('distri:daily-bill:query')")
+    public CommonResult<DailyBillRespVO> getDailyBill(@RequestParam("id") Long id) {
+        DailyBillDO dailyBill = dailyBillService.getDailyBill(id);
+        return success(BeanUtils.toBean(dailyBill, DailyBillRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得每日账单分页")
+    @PreAuthorize("@ss.hasPermission('distri:daily-bill:query')")
+    public CommonResult<PageResult<DailyBillRespVO>> getDailyBillPage(@Valid DailyBillPageReqVO pageReqVO) {
+        PageResult<DailyBillDO> pageResult = dailyBillService.getDailyBillPage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, DailyBillRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出每日账单 Excel")
+    @PreAuthorize("@ss.hasPermission('distri:daily-bill:export')")
+    @OperateLog(type = EXPORT)
+    public void exportDailyBillExcel(@Valid DailyBillPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<DailyBillDO> list = dailyBillService.getDailyBillPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "每日账单.xls", "数据", DailyBillRespVO.class,
+                        BeanUtils.toBean(list, DailyBillRespVO.class));
+    }
+
+}

+ 40 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillPageReqVO.java

@@ -0,0 +1,40 @@
+package cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo;
+
+import lombok.*;
+import java.util.*;
+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 DailyBillPageReqVO extends PageParam {
+
+    @Schema(description = "金额,单位:分")
+    private Integer amount;
+
+    @Schema(description = "确收金额,单位:分")
+    private Integer receivedAmount;
+
+    @Schema(description = "订单数,默认为0", example = "16252")
+    private Integer orderCount;
+
+    @Schema(description = "店铺ID", example = "28751")
+    private Integer shopId;
+
+    @Schema(description = "商户ID", example = "26719")
+    private Integer merchantId;
+
+    @Schema(description = "订单ID列表")
+    private String orderIds;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 48 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillRespVO.java

@@ -0,0 +1,48 @@
+package cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import java.util.*;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.time.LocalDateTime;
+import com.alibaba.excel.annotation.*;
+
+@Schema(description = "管理后台 - 每日账单 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class DailyBillRespVO {
+
+    @Schema(description = "账单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17268")
+    @ExcelProperty("账单编号")
+    private Long id;
+
+    @Schema(description = "金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("金额,单位:分")
+    private Integer amount;
+
+    @Schema(description = "确收金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("确收金额,单位:分")
+    private Integer receivedAmount;
+
+    @Schema(description = "订单数,默认为0", requiredMode = Schema.RequiredMode.REQUIRED, example = "16252")
+    @ExcelProperty("订单数,默认为0")
+    private Integer orderCount;
+
+    @Schema(description = "店铺ID", example = "28751")
+    @ExcelProperty("店铺ID")
+    private Integer shopId;
+
+    @Schema(description = "商户ID", example = "26719")
+    @ExcelProperty("商户ID")
+    private Integer merchantId;
+
+    @Schema(description = "订单ID列表", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("订单ID列表")
+    private String orderIds;
+
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 37 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/controller/admin/dailybill/vo/DailyBillSaveReqVO.java

@@ -0,0 +1,37 @@
+package cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.*;
+import java.util.*;
+import javax.validation.constraints.*;
+
+@Schema(description = "管理后台 - 每日账单新增/修改 Request VO")
+@Data
+public class DailyBillSaveReqVO {
+
+    @Schema(description = "账单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17268")
+    private Long id;
+
+    @Schema(description = "金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "金额,单位:分不能为空")
+    private Integer amount;
+
+    @Schema(description = "确收金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotNull(message = "确收金额,单位:分不能为空")
+    private Integer receivedAmount;
+
+    @Schema(description = "订单数,默认为0", requiredMode = Schema.RequiredMode.REQUIRED, example = "16252")
+    @NotNull(message = "订单数,默认为0不能为空")
+    private Integer orderCount;
+
+    @Schema(description = "店铺ID", example = "28751")
+    private Integer shopId;
+
+    @Schema(description = "商户ID", example = "26719")
+    private Integer merchantId;
+
+    @Schema(description = "订单ID列表", requiredMode = Schema.RequiredMode.REQUIRED)
+    @NotEmpty(message = "订单ID列表不能为空")
+    private String orderIds;
+
+}

+ 55 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/dataobject/dailybill/DailyBillDO.java

@@ -0,0 +1,55 @@
+package cn.newfeifan.mall.module.distri.dal.dataobject.dailybill;
+
+import lombok.*;
+import java.util.*;
+import java.time.LocalDateTime;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
+import cn.newfeifan.mall.framework.mybatis.core.dataobject.BaseDO;
+
+/**
+ * 每日账单 DO
+ *
+ * @author 非繁人
+ */
+@TableName("distri_daily_bill")
+@KeySequence("distri_daily_bill_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class DailyBillDO extends BaseDO {
+
+    /**
+     * 账单编号
+     */
+    @TableId
+    private Long id;
+    /**
+     * 金额,单位:分
+     */
+    private Integer amount;
+    /**
+     * 确收金额,单位:分
+     */
+    private Integer receivedAmount;
+    /**
+     * 订单数,默认为0
+     */
+    private Integer orderCount;
+    /**
+     * 店铺ID
+     */
+    private Integer shopId;
+    /**
+     * 商户ID
+     */
+    private Integer merchantId;
+    /**
+     * 订单ID列表
+     */
+    private String orderIds;
+
+}

+ 32 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/dal/mysql/dailybill/DailyBillMapper.java

@@ -0,0 +1,32 @@
+package cn.newfeifan.mall.module.distri.dal.mysql.dailybill;
+
+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.dailybill.DailyBillDO;
+import org.apache.ibatis.annotations.Mapper;
+import cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo.*;
+
+/**
+ * 每日账单 Mapper
+ *
+ * @author 非繁人
+ */
+@Mapper
+public interface DailyBillMapper extends BaseMapperX<DailyBillDO> {
+
+    default PageResult<DailyBillDO> selectPage(DailyBillPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<DailyBillDO>()
+                .eqIfPresent(DailyBillDO::getAmount, reqVO.getAmount())
+                .eqIfPresent(DailyBillDO::getReceivedAmount, reqVO.getReceivedAmount())
+                .eqIfPresent(DailyBillDO::getOrderCount, reqVO.getOrderCount())
+                .eqIfPresent(DailyBillDO::getShopId, reqVO.getShopId())
+                .eqIfPresent(DailyBillDO::getMerchantId, reqVO.getMerchantId())
+                .eqIfPresent(DailyBillDO::getOrderIds, reqVO.getOrderIds())
+                .betweenIfPresent(DailyBillDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(DailyBillDO::getId));
+    }
+
+}

+ 60 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/dailybill/DailyBillService.java

@@ -0,0 +1,60 @@
+package cn.newfeifan.mall.module.distri.service.dailybill;
+
+import java.util.*;
+import javax.validation.*;
+import cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.dailybill.DailyBillDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+
+/**
+ * 每日账单 Service 接口
+ *
+ * @author 非繁人
+ */
+public interface DailyBillService {
+
+    /**
+     * 创建每日账单
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createDailyBill(@Valid DailyBillSaveReqVO createReqVO);
+
+    /**
+     * 更新每日账单
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateDailyBill(@Valid DailyBillSaveReqVO updateReqVO);
+
+    /**
+     * 删除每日账单
+     *
+     * @param id 编号
+     */
+    void deleteDailyBill(Long id);
+
+    /**
+     * 获得每日账单
+     *
+     * @param id 编号
+     * @return 每日账单
+     */
+    DailyBillDO getDailyBill(Long id);
+
+    /**
+     * 获得每日账单分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 每日账单分页
+     */
+    PageResult<DailyBillDO> getDailyBillPage(DailyBillPageReqVO pageReqVO);
+
+    /**
+     * 计算每家店铺每日的订单
+     */
+    void caleDailyBill();
+
+}

+ 79 - 0
feifan-module-distri/feifan-module-distri-biz/src/main/java/cn/newfeifan/mall/module/distri/service/dailybill/DailyBillServiceImpl.java

@@ -0,0 +1,79 @@
+package cn.newfeifan.mall.module.distri.service.dailybill;
+
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+import cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.dailybill.DailyBillDO;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+import cn.newfeifan.mall.framework.common.pojo.PageParam;
+import cn.newfeifan.mall.framework.common.util.object.BeanUtils;
+
+import cn.newfeifan.mall.module.distri.dal.mysql.dailybill.DailyBillMapper;
+
+import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.newfeifan.mall.module.distri.enums.ErrorCodeConstants.*;
+
+/**
+ * 每日账单 Service 实现类
+ *
+ * @author 非繁人
+ */
+@Service
+@Validated
+public class DailyBillServiceImpl implements DailyBillService {
+
+    @Resource
+    private DailyBillMapper dailyBillMapper;
+
+    @Override
+    public Long createDailyBill(DailyBillSaveReqVO createReqVO) {
+        // 插入
+        DailyBillDO dailyBill = BeanUtils.toBean(createReqVO, DailyBillDO.class);
+        dailyBillMapper.insert(dailyBill);
+        // 返回
+        return dailyBill.getId();
+    }
+
+    @Override
+    public void updateDailyBill(DailyBillSaveReqVO updateReqVO) {
+        // 校验存在
+        validateDailyBillExists(updateReqVO.getId());
+        // 更新
+        DailyBillDO updateObj = BeanUtils.toBean(updateReqVO, DailyBillDO.class);
+        dailyBillMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteDailyBill(Long id) {
+        // 校验存在
+        validateDailyBillExists(id);
+        // 删除
+        dailyBillMapper.deleteById(id);
+    }
+
+    private void validateDailyBillExists(Long id) {
+        if (dailyBillMapper.selectById(id) == null) {
+            throw exception(DAILY_BILL_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public DailyBillDO getDailyBill(Long id) {
+        return dailyBillMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<DailyBillDO> getDailyBillPage(DailyBillPageReqVO pageReqVO) {
+        return dailyBillMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public void caleDailyBill() {
+
+    }
+
+}

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

@@ -16,6 +16,7 @@ import cn.newfeifan.mall.module.distri.enums.SocialStatusEnum;
 import cn.newfeifan.mall.module.distri.mq.message.order.DistriOrderMessage;
 import cn.newfeifan.mall.module.distri.mq.message.order.OrderCalcMessage;
 import cn.newfeifan.mall.module.distri.mq.message.order.OrderItemMessage;
+import cn.newfeifan.mall.module.distri.service.dailybill.DailyBillService;
 import cn.newfeifan.mall.module.distri.service.duser.DuserService;
 import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
 import cn.newfeifan.mall.module.distri.service.orderpercentage.OrderPercentageService;
@@ -88,6 +89,9 @@ public class OrderCalcServiceImpl implements OrderCalcService {
     @Resource
     private PtProfitLogDetailsService ptProfitLogDetailsService;
 
+    @Resource
+    private DailyBillService dailyBillService;
+
     @Override
     public Long createOrderCalc(OrderCalcSaveReqVO createReqVO) {
         // 插入
@@ -153,6 +157,9 @@ public class OrderCalcServiceImpl implements OrderCalcService {
             // todo 计算当天用户的碰撞
             // 计算兄弟分区, 以及后代分区
             partitionCrashService.calcCrash(userId);
+
+            // 计算每家店铺每日订单
+
         }
     }
 

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

+ 154 - 0
feifan-module-distri/feifan-module-distri-biz/src/test/java/cn/newfeifan/mall/module/distri/service/dailybill/DailyBillServiceImplTest.java

@@ -0,0 +1,154 @@
+package cn.newfeifan.mall.module.distri.service.dailybill;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.mock.mockito.MockBean;
+
+import javax.annotation.Resource;
+
+import cn.newfeifan.mall.framework.test.core.ut.BaseDbUnitTest;
+
+import cn.newfeifan.mall.module.distri.controller.admin.dailybill.vo.*;
+import cn.newfeifan.mall.module.distri.dal.dataobject.dailybill.DailyBillDO;
+import cn.newfeifan.mall.module.distri.dal.mysql.dailybill.DailyBillMapper;
+import cn.newfeifan.mall.framework.common.pojo.PageResult;
+
+import javax.annotation.Resource;
+import org.springframework.context.annotation.Import;
+import java.util.*;
+import java.time.LocalDateTime;
+
+import static cn.hutool.core.util.RandomUtil.*;
+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 cn.newfeifan.mall.framework.common.util.date.DateUtils.*;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+/**
+ * {@link DailyBillServiceImpl} 的单元测试类
+ *
+ * @author 非繁人
+ */
+@Import(DailyBillServiceImpl.class)
+public class DailyBillServiceImplTest extends BaseDbUnitTest {
+
+    @Resource
+    private DailyBillServiceImpl dailyBillService;
+
+    @Resource
+    private DailyBillMapper dailyBillMapper;
+
+    @Test
+    public void testCreateDailyBill_success() {
+        // 准备参数
+        DailyBillSaveReqVO createReqVO = randomPojo(DailyBillSaveReqVO.class).setId(null);
+
+        // 调用
+        Long dailyBillId = dailyBillService.createDailyBill(createReqVO);
+        // 断言
+        assertNotNull(dailyBillId);
+        // 校验记录的属性是否正确
+        DailyBillDO dailyBill = dailyBillMapper.selectById(dailyBillId);
+        assertPojoEquals(createReqVO, dailyBill, "id");
+    }
+
+    @Test
+    public void testUpdateDailyBill_success() {
+        // mock 数据
+        DailyBillDO dbDailyBill = randomPojo(DailyBillDO.class);
+        dailyBillMapper.insert(dbDailyBill);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        DailyBillSaveReqVO updateReqVO = randomPojo(DailyBillSaveReqVO.class, o -> {
+            o.setId(dbDailyBill.getId()); // 设置更新的 ID
+        });
+
+        // 调用
+        dailyBillService.updateDailyBill(updateReqVO);
+        // 校验是否更新正确
+        DailyBillDO dailyBill = dailyBillMapper.selectById(updateReqVO.getId()); // 获取最新的
+        assertPojoEquals(updateReqVO, dailyBill);
+    }
+
+    @Test
+    public void testUpdateDailyBill_notExists() {
+        // 准备参数
+        DailyBillSaveReqVO updateReqVO = randomPojo(DailyBillSaveReqVO.class);
+
+        // 调用, 并断言异常
+        assertServiceException(() -> dailyBillService.updateDailyBill(updateReqVO), DAILY_BILL_NOT_EXISTS);
+    }
+
+    @Test
+    public void testDeleteDailyBill_success() {
+        // mock 数据
+        DailyBillDO dbDailyBill = randomPojo(DailyBillDO.class);
+        dailyBillMapper.insert(dbDailyBill);// @Sql: 先插入出一条存在的数据
+        // 准备参数
+        Long id = dbDailyBill.getId();
+
+        // 调用
+        dailyBillService.deleteDailyBill(id);
+       // 校验数据不存在了
+       assertNull(dailyBillMapper.selectById(id));
+    }
+
+    @Test
+    public void testDeleteDailyBill_notExists() {
+        // 准备参数
+        Long id = randomLongId();
+
+        // 调用, 并断言异常
+        assertServiceException(() -> dailyBillService.deleteDailyBill(id), DAILY_BILL_NOT_EXISTS);
+    }
+
+    @Test
+    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
+    public void testGetDailyBillPage() {
+       // mock 数据
+       DailyBillDO dbDailyBill = randomPojo(DailyBillDO.class, o -> { // 等会查询到
+           o.setAmount(null);
+           o.setReceivedAmount(null);
+           o.setOrderCount(null);
+           o.setShopId(null);
+           o.setMerchantId(null);
+           o.setOrderIds(null);
+           o.setCreateTime(null);
+       });
+       dailyBillMapper.insert(dbDailyBill);
+       // 测试 amount 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setAmount(null)));
+       // 测试 receivedAmount 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setReceivedAmount(null)));
+       // 测试 orderCount 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setOrderCount(null)));
+       // 测试 shopId 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setShopId(null)));
+       // 测试 merchantId 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setMerchantId(null)));
+       // 测试 orderIds 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setOrderIds(null)));
+       // 测试 createTime 不匹配
+       dailyBillMapper.insert(cloneIgnoreId(dbDailyBill, o -> o.setCreateTime(null)));
+       // 准备参数
+       DailyBillPageReqVO reqVO = new DailyBillPageReqVO();
+       reqVO.setAmount(null);
+       reqVO.setReceivedAmount(null);
+       reqVO.setOrderCount(null);
+       reqVO.setShopId(null);
+       reqVO.setMerchantId(null);
+       reqVO.setOrderIds(null);
+       reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
+
+       // 调用
+       PageResult<DailyBillDO> pageResult = dailyBillService.getDailyBillPage(reqVO);
+       // 断言
+       assertEquals(1, pageResult.getTotal());
+       assertEquals(1, pageResult.getList().size());
+       assertPojoEquals(dbDailyBill, pageResult.getList().get(0));
+    }
+
+}

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

@@ -100,5 +100,4 @@ public interface ErrorCodeConstants {
     ErrorCode ORDER_CALLBACK_LOGS_NOT_EXISTS = new ErrorCode(1_011_008_007, "回调日志不存在");
     ErrorCode CREATE_TRADE_ORDER_LOGS_ERROR = new ErrorCode(1_011_008_008, "创建第三方日志异常");
     ErrorCode MESSAGE_LOG_NOT_EXISTS = new ErrorCode(1_011_008_009, "微信模板消息日志不存在");
-
 }

+ 1 - 1
sql/mysql/建空库SQL/13_20240617.sql

@@ -1,4 +1,4 @@
-CREATE TABLE `trade_daily_bill` (
+CREATE TABLE `distri_daily_bill` (
                                     `id` bigint NOT NULL AUTO_INCREMENT COMMENT '账单编号',
                                     `amount` int NOT NULL DEFAULT '0' COMMENT '金额,单位:分',
                                     `received_amount` int NOT NULL DEFAULT '0' COMMENT '确收金额,单位:分',