From 820f1763bdfcc24b8824cf637a513329e684d7c6 Mon Sep 17 00:00:00 2001
From: chen-xin-zhi <3588068430@qq.com>
Date: Sat, 10 May 2025 19:03:59 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E7=AE=97=E8=AE=B0=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../fundsChange/FundsChangeController.java    | 148 ++++++++++++++++++
 .../ProjectSettlementController.java          | 148 ++++++++++++++++++
 .../promotion/mapper/FundsChangeMapper.java   |  18 +++
 .../mapper/ProjectSettlementMapper.java       |  18 +++
 .../fundsChange/FundsChangeAddRequest.java    |  54 +++++++
 .../fundsChange/FundsChangeQueryRequest.java  |  57 +++++++
 .../fundsChange/FundsChangeUpdateRequest.java |  61 ++++++++
 .../ProjectSettlementAddRequest.java          |  69 ++++++++
 .../ProjectSettlementQueryRequest.java        |  71 +++++++++
 .../ProjectSettlementUpdateRequest.java       |  76 +++++++++
 .../promotion/model/entity/FundsChange.java   |  62 ++++++++
 .../model/entity/ProjectSettlement.java       |  72 +++++++++
 .../model/vo/fundsChange/FundsChangeVO.java   |  50 ++++++
 .../ProjectSettlementVO.java                  |  63 ++++++++
 .../service/settle/FundsChangeService.java    |  13 ++
 .../settle/ProjectSettlementService.java      |  13 ++
 .../settle/impl/FundsChangeServiceImpl.java   |  22 +++
 .../impl/ProjectSettlementServiceImpl.java    |  22 +++
 .../resources/mapper/FundsChangeMapper.xml    |  23 +++
 .../mapper/ProjectSettlementMapper.xml        |  26 +++
 20 files changed, 1086 insertions(+)
 create mode 100644 src/main/java/com/greenorange/promotion/controller/fundsChange/FundsChangeController.java
 create mode 100644 src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java
 create mode 100644 src/main/java/com/greenorange/promotion/mapper/FundsChangeMapper.java
 create mode 100644 src/main/java/com/greenorange/promotion/mapper/ProjectSettlementMapper.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeAddRequest.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeQueryRequest.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeUpdateRequest.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/entity/FundsChange.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java
 create mode 100644 src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java
 create mode 100644 src/main/java/com/greenorange/promotion/service/settle/FundsChangeService.java
 create mode 100644 src/main/java/com/greenorange/promotion/service/settle/ProjectSettlementService.java
 create mode 100644 src/main/java/com/greenorange/promotion/service/settle/impl/FundsChangeServiceImpl.java
 create mode 100644 src/main/java/com/greenorange/promotion/service/settle/impl/ProjectSettlementServiceImpl.java
 create mode 100644 src/main/resources/mapper/FundsChangeMapper.xml
 create mode 100644 src/main/resources/mapper/ProjectSettlementMapper.xml

diff --git a/src/main/java/com/greenorange/promotion/controller/fundsChange/FundsChangeController.java b/src/main/java/com/greenorange/promotion/controller/fundsChange/FundsChangeController.java
new file mode 100644
index 0000000..f6c9756
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/controller/fundsChange/FundsChangeController.java
@@ -0,0 +1,148 @@
+package com.greenorange.promotion.controller.fundsChange;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.greenorange.promotion.annotation.RequiresPermission;
+import com.greenorange.promotion.annotation.SysLog;
+import com.greenorange.promotion.common.BaseResponse;
+import com.greenorange.promotion.common.ErrorCode;
+import com.greenorange.promotion.common.ResultUtils;
+import com.greenorange.promotion.constant.UserConstant;
+import com.greenorange.promotion.exception.ThrowUtils;
+import com.greenorange.promotion.model.dto.CommonBatchRequest;
+import com.greenorange.promotion.model.dto.fundsChange.FundsChangeAddRequest;
+import com.greenorange.promotion.model.dto.fundsChange.FundsChangeQueryRequest;
+import com.greenorange.promotion.model.dto.fundsChange.FundsChangeUpdateRequest;
+import com.greenorange.promotion.model.entity.FundsChange;
+import com.greenorange.promotion.model.vo.fundsChange.FundsChangeVO;
+import com.greenorange.promotion.service.common.CommonService;
+import com.greenorange.promotion.service.settle.FundsChangeService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.greenorange.promotion.model.dto.CommonRequest;
+import jakarta.validation.Valid;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * 资金变动记录 控制器
+ */
+@RestController
+@RequestMapping("fundsChange")
+@Slf4j
+@Tag(name = "资金变动记录管理")
+public class FundsChangeController {
+
+    @Resource
+    private FundsChangeService fundsChangeService;
+
+    @Resource
+    private CommonService commonService;
+
+    /**
+     * web端管理员添加资金变动记录
+     * @param fundsChangeAddRequest 资金变动记录添加请求体
+     * @return 是否添加成功
+     */
+    @PostMapping("add")
+    @Operation(summary = "web端管理员添加资金变动记录", description = "参数:资金变动记录添加请求体,权限:管理员,方法名:addFundsChange")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "资金变动记录管理", content = "web端管理员添加资金变动记录")
+    public BaseResponse<Boolean> addFundsChange(@Valid @RequestBody FundsChangeAddRequest fundsChangeAddRequest) {
+        FundsChange fundsChange = commonService.copyProperties(fundsChangeAddRequest, FundsChange.class);
+        fundsChangeService.save(fundsChange);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员根据id修改资金变动记录信息
+     * @param fundsChangeUpdateRequest 资金变动记录更新请求体
+     * @return 是否更新成功
+     */
+    @PostMapping("update")
+    @Operation(summary = "web端管理员更新资金变动记录", description = "参数:资金变动记录更新请求体,权限:管理员,方法名:updateFundsChange")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "资金变动记录管理", content = "web端管理员根据id修改资金变动记录信息")
+    public BaseResponse<Boolean> updateFundsChange(@Valid @RequestBody FundsChangeUpdateRequest fundsChangeUpdateRequest) {
+        FundsChange fundsChange = commonService.copyProperties(fundsChangeUpdateRequest, FundsChange.class);
+        fundsChangeService.updateById(fundsChange);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员根据id删除资金变动记录
+     * @param commonRequest 资金变动记录删除请求体
+     * @return 是否删除成功
+     */
+    @PostMapping("delete")
+    @Operation(summary = "web端管理员根据id删除资金变动记录", description = "参数:资金变动记录删除请求体,权限:管理员,方法名:delFundsChange")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "资金变动记录管理", content = "web端管理员根据id删除资金变动记录")
+    public BaseResponse<Boolean> delFundsChange(@Valid @RequestBody CommonRequest commonRequest) {
+        Long id = commonRequest.getId();
+        fundsChangeService.removeById(id);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员批量删除资金变动记录
+     * @param commonBatchRequest 资金变动记录批量删除请求体
+     * @return 是否删除成功
+     */
+    @PostMapping("delBatch")
+    @Operation(summary = "web端管理员批量删除资金变动记录", description = "参数:资金变动记录批量删除请求体,权限:管理员,方法名:delBatchFundsChange")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "资金变动记录管理", content = "web端管理员批量删除资金变动记录")
+    public BaseResponse<Boolean> delBatchFundsChange(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
+        List<Long> ids = commonBatchRequest.getIds();
+        fundsChangeService.removeByIds(ids);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员根据id查询资金变动记录
+     * @param commonRequest 资金变动记录查询请求体
+     * @return 资金变动记录信息
+     */
+    @PostMapping("queryById")
+    @Operation(summary = "web端管理员根据id查询资金变动记录", description = "参数:资金变动记录查询请求体,权限:管理员,方法名:queryFundsChangeById")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "资金变动记录管理", content = "web端管理员根据id查询资金变动记录")
+    public BaseResponse<FundsChangeVO> queryFundsChangeById(@Valid @RequestBody CommonRequest commonRequest) {
+        Long id = commonRequest.getId();
+        FundsChange fundsChange = fundsChangeService.getById(id);
+        ThrowUtils.throwIf(fundsChange == null, ErrorCode.OPERATION_ERROR, "当前资金变动记录不存在");
+        FundsChangeVO fundsChangeVO = commonService.copyProperties(fundsChange, FundsChangeVO.class);
+        return ResultUtils.success(fundsChangeVO);
+    }
+
+//    /**
+//     * Web端管理员分页查询资金变动记录
+//     * @param fundsChangeQueryRequest 资金变动记录查询请求体
+//     * @return 资金变动记录列表
+//     */
+//    @PostMapping("page")
+//    @Operation(summary = "Web端管理员分页查询资金变动记录", description = "参数:资金变动记录查询请求体,权限:管理员,方法名:listFundsChangeByPage")
+//    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+//    @SysLog(title = "资金变动记录管理", content = "Web端管理员分页查询资金变动记录")
+//    public BaseResponse<Page<FundsChangeVO>> listFundsChangeByPage(@Valid @RequestBody FundsChangeQueryRequest fundsChangeQueryRequest) {
+//        long current = fundsChangeQueryRequest.getCurrent();
+//        long pageSize = fundsChangeQueryRequest.getPageSize();
+//        QueryWrapper<FundsChange> queryWrapper = fundsChangeService.getQueryWrapper(fundsChangeQueryRequest);
+//        Page<FundsChange> page = fundsChangeService.page(new Page<>(current, pageSize), queryWrapper);
+//        List<FundsChange> fundsChangeList = page.getRecords();
+//        List<FundsChangeVO> fundsChangeVOList = commonService.convertList(fundsChangeList, FundsChangeVO.class);
+//        Page<FundsChangeVO> voPage = new Page<>(current, pageSize);
+//        voPage.setRecords(fundsChangeVOList);
+//        voPage.setPages(page.getPages());
+//        voPage.setTotal(page.getTotal());
+//        return ResultUtils.success(voPage);
+//    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java b/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java
new file mode 100644
index 0000000..fcfb504
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/controller/projectSettlement/ProjectSettlementController.java
@@ -0,0 +1,148 @@
+package com.greenorange.promotion.controller.projectSettlement;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.greenorange.promotion.annotation.RequiresPermission;
+import com.greenorange.promotion.annotation.SysLog;
+import com.greenorange.promotion.common.BaseResponse;
+import com.greenorange.promotion.common.ErrorCode;
+import com.greenorange.promotion.common.ResultUtils;
+import com.greenorange.promotion.constant.UserConstant;
+import com.greenorange.promotion.exception.ThrowUtils;
+import com.greenorange.promotion.model.dto.CommonBatchRequest;
+import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementAddRequest;
+import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementQueryRequest;
+import com.greenorange.promotion.model.dto.projectSettlement.ProjectSettlementUpdateRequest;
+import com.greenorange.promotion.model.entity.ProjectSettlement;
+import com.greenorange.promotion.model.vo.projectSettlement.ProjectSettlementVO;
+import com.greenorange.promotion.service.common.CommonService;
+import com.greenorange.promotion.service.settle.ProjectSettlementService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.greenorange.promotion.model.dto.CommonRequest;
+import jakarta.validation.Valid;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+/**
+ * 项目结算记录 控制器
+ */
+@RestController
+@RequestMapping("projectSettlement")
+@Slf4j
+@Tag(name = "项目结算记录管理")
+public class ProjectSettlementController {
+
+    @Resource
+    private ProjectSettlementService projectSettlementService;
+
+    @Resource
+    private CommonService commonService;
+
+    /**
+     * web端管理员添加项目结算记录
+     * @param projectSettlementAddRequest 项目结算记录添加请求体
+     * @return 是否添加成功
+     */
+    @PostMapping("add")
+    @Operation(summary = "web端管理员添加项目结算记录", description = "参数:项目结算记录添加请求体,权限:管理员,方法名:addProjectSettlement")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "项目结算记录管理", content = "web端管理员添加项目结算记录")
+    public BaseResponse<Boolean> addProjectSettlement(@Valid @RequestBody ProjectSettlementAddRequest projectSettlementAddRequest) {
+        ProjectSettlement projectSettlement = commonService.copyProperties(projectSettlementAddRequest, ProjectSettlement.class);
+        projectSettlementService.save(projectSettlement);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员根据id修改项目结算记录信息
+     * @param projectSettlementUpdateRequest 项目结算记录更新请求体
+     * @return 是否更新成功
+     */
+    @PostMapping("update")
+    @Operation(summary = "web端管理员更新项目结算记录", description = "参数:项目结算记录更新请求体,权限:管理员,方法名:updateProjectSettlement")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "项目结算记录管理", content = "web端管理员根据id修改项目结算记录信息")
+    public BaseResponse<Boolean> updateProjectSettlement(@Valid @RequestBody ProjectSettlementUpdateRequest projectSettlementUpdateRequest) {
+        ProjectSettlement projectSettlement = commonService.copyProperties(projectSettlementUpdateRequest, ProjectSettlement.class);
+        projectSettlementService.updateById(projectSettlement);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员根据id删除项目结算记录
+     * @param commonRequest 项目结算记录删除请求体
+     * @return 是否删除成功
+     */
+    @PostMapping("delete")
+    @Operation(summary = "web端管理员根据id删除项目结算记录", description = "参数:项目结算记录删除请求体,权限:管理员,方法名:delProjectSettlement")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "项目结算记录管理", content = "web端管理员根据id删除项目结算记录")
+    public BaseResponse<Boolean> delProjectSettlement(@Valid @RequestBody CommonRequest commonRequest) {
+        Long id = commonRequest.getId();
+        projectSettlementService.removeById(id);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员批量删除项目结算记录
+     * @param commonBatchRequest 项目结算记录批量删除请求体
+     * @return 是否删除成功
+     */
+    @PostMapping("delBatch")
+    @Operation(summary = "web端管理员批量删除项目结算记录", description = "参数:项目结算记录批量删除请求体,权限:管理员,方法名:delBatchProjectSettlement")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "项目结算记录管理", content = "web端管理员批量删除项目结算记录")
+    public BaseResponse<Boolean> delBatchProjectSettlement(@Valid @RequestBody CommonBatchRequest commonBatchRequest) {
+        List<Long> ids = commonBatchRequest.getIds();
+        projectSettlementService.removeByIds(ids);
+        return ResultUtils.success(true);
+    }
+
+    /**
+     * web端管理员根据id查询项目结算记录
+     * @param commonRequest 项目结算记录查询请求体
+     * @return 项目结算记录信息
+     */
+    @PostMapping("queryById")
+    @Operation(summary = "web端管理员根据id查询项目结算记录", description = "参数:项目结算记录查询请求体,权限:管理员,方法名:queryProjectSettlementById")
+    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+    @SysLog(title = "项目结算记录管理", content = "web端管理员根据id查询项目结算记录")
+    public BaseResponse<ProjectSettlementVO> queryProjectSettlementById(@Valid @RequestBody CommonRequest commonRequest) {
+        Long id = commonRequest.getId();
+        ProjectSettlement projectSettlement = projectSettlementService.getById(id);
+        ThrowUtils.throwIf(projectSettlement == null, ErrorCode.OPERATION_ERROR, "当前项目结算记录不存在");
+        ProjectSettlementVO projectSettlementVO = commonService.copyProperties(projectSettlement, ProjectSettlementVO.class);
+        return ResultUtils.success(projectSettlementVO);
+    }
+
+//    /**
+//     * Web端管理员分页查询项目结算记录
+//     * @param projectSettlementQueryRequest 项目结算记录查询请求体
+//     * @return 项目结算记录列表
+//     */
+//    @PostMapping("page")
+//    @Operation(summary = "Web端管理员分页查询项目结算记录", description = "参数:项目结算记录查询请求体,权限:管理员,方法名:listProjectSettlementByPage")
+//    @RequiresPermission(mustRole = UserConstant.ADMIN_ROLE)
+//    @SysLog(title = "项目结算记录管理", content = "Web端管理员分页查询项目结算记录")
+//    public BaseResponse<Page<ProjectSettlementVO>> listProjectSettlementByPage(@Valid @RequestBody ProjectSettlementQueryRequest projectSettlementQueryRequest) {
+//        long current = projectSettlementQueryRequest.getCurrent();
+//        long pageSize = projectSettlementQueryRequest.getPageSize();
+//        QueryWrapper<ProjectSettlement> queryWrapper = projectSettlementService.getQueryWrapper(projectSettlementQueryRequest);
+//        Page<ProjectSettlement> page = projectSettlementService.page(new Page<>(current, pageSize), queryWrapper);
+//        List<ProjectSettlement> projectSettlementList = page.getRecords();
+//        List<ProjectSettlementVO> projectSettlementVOList = commonService.convertList(projectSettlementList, ProjectSettlementVO.class);
+//        Page<ProjectSettlementVO> voPage = new Page<>(current, pageSize);
+//        voPage.setRecords(projectSettlementVOList);
+//        voPage.setPages(page.getPages());
+//        voPage.setTotal(page.getTotal());
+//        return ResultUtils.success(voPage);
+//    }
+}
\ No newline at end of file
diff --git a/src/main/java/com/greenorange/promotion/mapper/FundsChangeMapper.java b/src/main/java/com/greenorange/promotion/mapper/FundsChangeMapper.java
new file mode 100644
index 0000000..98c8d37
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/mapper/FundsChangeMapper.java
@@ -0,0 +1,18 @@
+package com.greenorange.promotion.mapper;
+
+import com.greenorange.promotion.model.entity.FundsChange;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author 35880
+* @description 针对表【funds_change(资金变动记录表)】的数据库操作Mapper
+* @createDate 2025-05-10 18:47:20
+* @Entity com.greenorange.promotion.model.entity.FundsChange
+*/
+public interface FundsChangeMapper extends BaseMapper<FundsChange> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/greenorange/promotion/mapper/ProjectSettlementMapper.java b/src/main/java/com/greenorange/promotion/mapper/ProjectSettlementMapper.java
new file mode 100644
index 0000000..673adda
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/mapper/ProjectSettlementMapper.java
@@ -0,0 +1,18 @@
+package com.greenorange.promotion.mapper;
+
+import com.greenorange.promotion.model.entity.ProjectSettlement;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author 35880
+* @description 针对表【project_settlement(项目结算记录表)】的数据库操作Mapper
+* @createDate 2025-05-10 18:02:22
+* @Entity com.greenorange.promotion.model.entity.ProjectSettlement
+*/
+public interface ProjectSettlementMapper extends BaseMapper<ProjectSettlement> {
+
+}
+
+
+
+
diff --git a/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeAddRequest.java
new file mode 100644
index 0000000..7ca6591
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeAddRequest.java
@@ -0,0 +1,54 @@
+package com.greenorange.promotion.model.dto.fundsChange;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+import java.math.BigDecimal;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 资金变动记录添加请求体
+ */
+@Data
+@Schema(description = "资金变动记录添加请求体", requiredProperties = {
+                "projectName",
+                "changeAmount",
+                "currentAmount",
+                "userId",
+})
+public class FundsChangeAddRequest implements Serializable {
+
+    /**
+     * 项目名称
+     */
+    @NotBlank(message = "项目名称不能为空")
+    @Schema(description = "项目名称", example = "饿了么-超吃卡")
+    private String projectName;
+
+    /**
+     * 变动金额
+     */
+    @Schema(description = "变动金额", example = "0.96")
+    private BigDecimal changeAmount;
+
+    /**
+     * 当前金额(变动后的总金额)
+     */
+    @Schema(description = "当前金额(变动后的总金额)", example = "0.34")
+    private BigDecimal currentAmount;
+
+    /**
+     * 用户ID
+     */
+    @Min(value = 1L, message = "用户ID ID不能小于1")
+    @Schema(description = "用户ID", example = "1")
+    private Long userId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
+
diff --git a/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeQueryRequest.java
new file mode 100644
index 0000000..9ae1eae
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeQueryRequest.java
@@ -0,0 +1,57 @@
+package com.greenorange.promotion.model.dto.fundsChange;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+import java.math.BigDecimal;
+
+import java.io.Serial;
+import java.io.Serializable;
+import com.greenorange.promotion.common.PageRequest;
+
+/**
+ * 资金变动记录查询请求体,继承自分页请求 PageRequest
+ */
+@Data
+@Schema(description = "资金变动记录查询请求体", requiredProperties = {"current", "pageSize"})
+public class FundsChangeQueryRequest extends PageRequest implements Serializable {
+
+    /**
+     * 资金变动ID
+     */
+    @Min(value = 1L, message = "资金变动ID ID不能小于1")
+    @Schema(description = "资金变动ID", example = "1")
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    @NotBlank(message = "项目名称不能为空")
+    @Schema(description = "项目名称", example = "饿了么-超吃卡")
+    private String projectName;
+
+    /**
+     * 变动金额
+     */
+    @Schema(description = "变动金额", example = "0.96")
+    private BigDecimal changeAmount;
+
+    /**
+     * 当前金额(变动后的总金额)
+     */
+    @Schema(description = "当前金额(变动后的总金额)", example = "0.34")
+    private BigDecimal currentAmount;
+
+    /**
+     * 用户ID
+     */
+    @Min(value = 1L, message = "用户ID ID不能小于1")
+    @Schema(description = "用户ID", example = "1")
+    private Long userId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
+
diff --git a/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeUpdateRequest.java
new file mode 100644
index 0000000..b576eba
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/dto/fundsChange/FundsChangeUpdateRequest.java
@@ -0,0 +1,61 @@
+package com.greenorange.promotion.model.dto.fundsChange;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+import java.math.BigDecimal;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 资金变动记录更新请求体
+ */
+@Data
+@Schema(description = "资金变动记录更新请求体", requiredProperties = {
+                "id",
+                "projectName",
+                "changeAmount",
+                "currentAmount",
+                "userId",
+})
+public class FundsChangeUpdateRequest implements Serializable {
+
+    /**
+     * 资金变动ID
+     */
+    @Min(value = 1L, message = "资金变动ID ID不能小于1")
+    @Schema(description = "资金变动ID", example = "1")
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    @NotBlank(message = "项目名称不能为空")
+    @Schema(description = "项目名称", example = "饿了么-超吃卡")
+    private String projectName;
+
+    /**
+     * 变动金额
+     */
+    @Schema(description = "变动金额", example = "0.96")
+    private BigDecimal changeAmount;
+
+    /**
+     * 当前金额(变动后的总金额)
+     */
+    @Schema(description = "当前金额(变动后的总金额)", example = "0.34")
+    private BigDecimal currentAmount;
+
+    /**
+     * 用户ID
+     */
+    @Min(value = 1L, message = "用户ID ID不能小于1")
+    @Schema(description = "用户ID", example = "1")
+    private Long userId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java
new file mode 100644
index 0000000..94d19a8
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementAddRequest.java
@@ -0,0 +1,69 @@
+package com.greenorange.promotion.model.dto.projectSettlement;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 项目结算记录添加请求体
+ */
+@Data
+@Schema(description = "项目结算记录添加请求体", requiredProperties = {
+                "projectDetailName",
+                "settlementQuantity",
+                "settlementRevenue",
+                "workTime",
+                "settlementTime",
+                "promoCodeRequestRecordId",
+})
+public class ProjectSettlementAddRequest implements Serializable {
+
+    /**
+     * 项目明细名称
+     */
+    @NotBlank(message = "项目明细名称不能为空")
+    @Schema(description = "项目明细名称", example = "新用户完成首单")
+    private String projectDetailName;
+
+    /**
+     * 结算数量
+     */
+    @Schema(description = "结算数量", example = "2")
+    private Integer settlementQuantity;
+
+    /**
+     * 结算收益
+     */
+    @Schema(description = "结算收益", example = "2.34")
+    private BigDecimal settlementRevenue;
+
+    /**
+     * 作业时间
+     */
+    @Schema(description = "作业时间", example = "2025-05-10 10:00:00")
+    private LocalDateTime workTime;
+
+    /**
+     * 结算时间
+     */
+    @Schema(description = "结算时间", example = "2025-05-12 10:00:00")
+    private LocalDateTime settlementTime;
+
+    /**
+     * 推广码申请记录id
+     */
+    @Min(value = 1L, message = "推广码申请记录id ID不能小于1")
+    @Schema(description = "推广码申请记录id", example = "1")
+    private Long promoCodeRequestRecordId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
+
diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java
new file mode 100644
index 0000000..67226c4
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementQueryRequest.java
@@ -0,0 +1,71 @@
+package com.greenorange.promotion.model.dto.projectSettlement;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+import com.greenorange.promotion.common.PageRequest;
+
+/**
+ * 项目结算记录查询请求体,继承自分页请求 PageRequest
+ */
+@Data
+@Schema(description = "项目结算记录查询请求体", requiredProperties = {"current", "pageSize"})
+public class ProjectSettlementQueryRequest extends PageRequest implements Serializable {
+
+    /**
+     * 结算记录ID
+     */
+    @Min(value = 1L, message = "结算记录ID ID不能小于1")
+    @Schema(description = "结算记录ID", example = "1")
+    private Long id;
+
+    /**
+     * 项目明细名称
+     */
+    @NotBlank(message = "项目明细名称不能为空")
+    @Schema(description = "项目明细名称", example = "新用户完成首单")
+    private String projectDetailName;
+
+    /**
+     * 结算数量
+     */
+    @Schema(description = "结算数量", example = "2")
+    private Integer settlementQuantity;
+
+    /**
+     * 结算收益
+     */
+    @Schema(description = "结算收益", example = "2.34")
+    private BigDecimal settlementRevenue;
+
+    /**
+     * 作业时间
+     */
+    @Schema(description = "作业时间", example = "2025-05-10 10:00:00")
+    private LocalDateTime workTime;
+
+    /**
+     * 结算时间
+     */
+    @Schema(description = "结算时间", example = "2025-05-12 10:00:00")
+    private LocalDateTime settlementTime;
+
+    /**
+     * 推广码申请记录id
+     */
+    @Min(value = 1L, message = "推广码申请记录id ID不能小于1")
+    @Schema(description = "推广码申请记录id", example = "1")
+    private Long promoCodeRequestRecordId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
+
diff --git a/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java
new file mode 100644
index 0000000..51952b2
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/dto/projectSettlement/ProjectSettlementUpdateRequest.java
@@ -0,0 +1,76 @@
+package com.greenorange.promotion.model.dto.projectSettlement;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 项目结算记录更新请求体
+ */
+@Data
+@Schema(description = "项目结算记录更新请求体", requiredProperties = {
+                "id",
+                "projectDetailName",
+                "settlementQuantity",
+                "settlementRevenue",
+                "workTime",
+                "settlementTime",
+                "promoCodeRequestRecordId",
+})
+public class ProjectSettlementUpdateRequest implements Serializable {
+
+    /**
+     * 结算记录ID
+     */
+    @Min(value = 1L, message = "结算记录ID ID不能小于1")
+    @Schema(description = "结算记录ID", example = "1")
+    private Long id;
+
+    /**
+     * 项目明细名称
+     */
+    @NotBlank(message = "项目明细名称不能为空")
+    @Schema(description = "项目明细名称", example = "新用户完成首单")
+    private String projectDetailName;
+
+    /**
+     * 结算数量
+     */
+    @Schema(description = "结算数量", example = "2")
+    private Integer settlementQuantity;
+
+    /**
+     * 结算收益
+     */
+    @Schema(description = "结算收益", example = "2.34")
+    private BigDecimal settlementRevenue;
+
+    /**
+     * 作业时间
+     */
+    @Schema(description = "作业时间", example = "2025-05-10 10:00:00")
+    private LocalDateTime workTime;
+
+    /**
+     * 结算时间
+     */
+    @Schema(description = "结算时间", example = "2025-05-12 10:00:00")
+    private LocalDateTime settlementTime;
+
+    /**
+     * 推广码申请记录id
+     */
+    @Min(value = 1L, message = "推广码申请记录id ID不能小于1")
+    @Schema(description = "推广码申请记录id", example = "1")
+    private Long promoCodeRequestRecordId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/greenorange/promotion/model/entity/FundsChange.java b/src/main/java/com/greenorange/promotion/model/entity/FundsChange.java
new file mode 100644
index 0000000..1b4058b
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/entity/FundsChange.java
@@ -0,0 +1,62 @@
+package com.greenorange.promotion.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 资金变动记录表
+ * @TableName funds_change
+ */
+@TableName(value ="funds_change")
+@Data
+public class FundsChange implements Serializable {
+    /**
+     * 资金变动ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    private String projectName;
+
+    /**
+     * 变动金额
+     */
+    private BigDecimal changeAmount;
+
+    /**
+     * 当前金额(变动后的总金额)
+     */
+    private BigDecimal currentAmount;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 是否删除
+     */
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java b/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java
new file mode 100644
index 0000000..e65c2c6
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/entity/ProjectSettlement.java
@@ -0,0 +1,72 @@
+package com.greenorange.promotion.model.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 项目结算记录表
+ * @TableName project_settlement
+ */
+@TableName(value ="project_settlement")
+@Data
+public class ProjectSettlement implements Serializable {
+    /**
+     * 结算记录ID
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 项目明细名称
+     */
+    private String projectDetailName;
+
+    /**
+     * 结算数量
+     */
+    private Integer settlementQuantity;
+
+    /**
+     * 结算收益
+     */
+    private BigDecimal settlementRevenue;
+
+    /**
+     * 作业时间
+     */
+    private Date workTime;
+
+    /**
+     * 结算时间
+     */
+    private Date settlementTime;
+
+    /**
+     * 推广码申请记录id
+     */
+    private Long promoCodeRequestRecordId;
+
+    /**
+     * 是否删除
+     */
+    private Integer isDelete;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java b/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java
new file mode 100644
index 0000000..4667285
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/vo/fundsChange/FundsChangeVO.java
@@ -0,0 +1,50 @@
+package com.greenorange.promotion.model.vo.fundsChange;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 资金变动记录 视图对象
+ */
+@Data
+@Schema(description = "资金变动记录 视图对象")
+public class FundsChangeVO implements Serializable {
+
+    /**
+     * 资金变动记录ID
+     */
+    @Schema(description = "资金变动记录ID", example = "1")
+    private Long id;
+
+    /**
+     * 项目名称
+     */
+    @Schema(description = "项目名称", example = "饿了么-超吃卡")
+    private String projectName;
+
+    /**
+     * 变动金额
+     */
+    @Schema(description = "变动金额", example = "0.96")
+    private BigDecimal changeAmount;
+
+    /**
+     * 当前金额(变动后的总金额)
+     */
+    @Schema(description = "当前金额(变动后的总金额)", example = "0.34")
+    private BigDecimal currentAmount;
+
+    /**
+     * 用户ID
+     */
+    @Schema(description = "用户ID", example = "1")
+    private Long userId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
diff --git a/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java b/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java
new file mode 100644
index 0000000..1123ec2
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/model/vo/projectSettlement/ProjectSettlementVO.java
@@ -0,0 +1,63 @@
+package com.greenorange.promotion.model.vo.projectSettlement;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+/**
+ * 项目结算记录 视图对象
+ */
+@Data
+@Schema(description = "项目结算记录 视图对象")
+public class ProjectSettlementVO implements Serializable {
+
+    /**
+     * 项目结算记录ID
+     */
+    @Schema(description = "项目结算记录ID", example = "1")
+    private Long id;
+
+    /**
+     * 项目明细名称
+     */
+    @Schema(description = "项目明细名称", example = "新用户完成首单")
+    private String projectDetailName;
+
+    /**
+     * 结算数量
+     */
+    @Schema(description = "结算数量", example = "2")
+    private Integer settlementQuantity;
+
+    /**
+     * 结算收益
+     */
+    @Schema(description = "结算收益", example = "2.34")
+    private BigDecimal settlementRevenue;
+
+    /**
+     * 作业时间
+     */
+    @Schema(description = "作业时间", example = "2025-05-10 10:00:00")
+    private LocalDateTime workTime;
+
+    /**
+     * 结算时间
+     */
+    @Schema(description = "结算时间", example = "2025-05-12 10:00:00")
+    private LocalDateTime settlementTime;
+
+    /**
+     * 推广码申请记录id
+     */
+    @Schema(description = "推广码申请记录id", example = "1")
+    private Long promoCodeRequestRecordId;
+
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+}
diff --git a/src/main/java/com/greenorange/promotion/service/settle/FundsChangeService.java b/src/main/java/com/greenorange/promotion/service/settle/FundsChangeService.java
new file mode 100644
index 0000000..cff0891
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/service/settle/FundsChangeService.java
@@ -0,0 +1,13 @@
+package com.greenorange.promotion.service.settle;
+
+import com.greenorange.promotion.model.entity.FundsChange;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 35880
+* @description 针对表【funds_change(资金变动记录表)】的数据库操作Service
+* @createDate 2025-05-10 18:47:20
+*/
+public interface FundsChangeService extends IService<FundsChange> {
+
+}
diff --git a/src/main/java/com/greenorange/promotion/service/settle/ProjectSettlementService.java b/src/main/java/com/greenorange/promotion/service/settle/ProjectSettlementService.java
new file mode 100644
index 0000000..78b7d76
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/service/settle/ProjectSettlementService.java
@@ -0,0 +1,13 @@
+package com.greenorange.promotion.service.settle;
+
+import com.greenorange.promotion.model.entity.ProjectSettlement;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 35880
+* @description 针对表【project_settlement(项目结算记录表)】的数据库操作Service
+* @createDate 2025-05-10 18:02:22
+*/
+public interface ProjectSettlementService extends IService<ProjectSettlement> {
+
+}
diff --git a/src/main/java/com/greenorange/promotion/service/settle/impl/FundsChangeServiceImpl.java b/src/main/java/com/greenorange/promotion/service/settle/impl/FundsChangeServiceImpl.java
new file mode 100644
index 0000000..52d0c3a
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/service/settle/impl/FundsChangeServiceImpl.java
@@ -0,0 +1,22 @@
+package com.greenorange.promotion.service.settle.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.greenorange.promotion.model.entity.FundsChange;
+import com.greenorange.promotion.service.settle.FundsChangeService;
+import com.greenorange.promotion.mapper.FundsChangeMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 35880
+* @description 针对表【funds_change(资金变动记录表)】的数据库操作Service实现
+* @createDate 2025-05-10 18:47:20
+*/
+@Service
+public class FundsChangeServiceImpl extends ServiceImpl<FundsChangeMapper, FundsChange>
+    implements FundsChangeService{
+
+}
+
+
+
+
diff --git a/src/main/java/com/greenorange/promotion/service/settle/impl/ProjectSettlementServiceImpl.java b/src/main/java/com/greenorange/promotion/service/settle/impl/ProjectSettlementServiceImpl.java
new file mode 100644
index 0000000..e36245d
--- /dev/null
+++ b/src/main/java/com/greenorange/promotion/service/settle/impl/ProjectSettlementServiceImpl.java
@@ -0,0 +1,22 @@
+package com.greenorange.promotion.service.settle.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.greenorange.promotion.model.entity.ProjectSettlement;
+import com.greenorange.promotion.service.settle.ProjectSettlementService;
+import com.greenorange.promotion.mapper.ProjectSettlementMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 35880
+* @description 针对表【project_settlement(项目结算记录表)】的数据库操作Service实现
+* @createDate 2025-05-10 18:02:22
+*/
+@Service
+public class ProjectSettlementServiceImpl extends ServiceImpl<ProjectSettlementMapper, ProjectSettlement>
+    implements ProjectSettlementService{
+
+}
+
+
+
+
diff --git a/src/main/resources/mapper/FundsChangeMapper.xml b/src/main/resources/mapper/FundsChangeMapper.xml
new file mode 100644
index 0000000..c45cf60
--- /dev/null
+++ b/src/main/resources/mapper/FundsChangeMapper.xml
@@ -0,0 +1,23 @@
+<?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.greenorange.promotion.mapper.FundsChangeMapper">
+
+    <resultMap id="BaseResultMap" type="com.greenorange.promotion.model.entity.FundsChange">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="projectName" column="projectName" jdbcType="VARCHAR"/>
+            <result property="changeAmount" column="changeAmount" jdbcType="DECIMAL"/>
+            <result property="currentAmount" column="currentAmount" jdbcType="DECIMAL"/>
+            <result property="userId" column="userId" jdbcType="BIGINT"/>
+            <result property="isDelete" column="isDelete" jdbcType="TINYINT"/>
+            <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,projectName,changeAmount,
+        currentAmount,userId,isDelete,
+        createTime,updateTime
+    </sql>
+</mapper>
diff --git a/src/main/resources/mapper/ProjectSettlementMapper.xml b/src/main/resources/mapper/ProjectSettlementMapper.xml
new file mode 100644
index 0000000..9f48192
--- /dev/null
+++ b/src/main/resources/mapper/ProjectSettlementMapper.xml
@@ -0,0 +1,26 @@
+<?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.greenorange.promotion.mapper.ProjectSettlementMapper">
+
+    <resultMap id="BaseResultMap" type="com.greenorange.promotion.model.entity.ProjectSettlement">
+            <id property="id" column="id" jdbcType="BIGINT"/>
+            <result property="projectDetailName" column="projectDetailName" jdbcType="VARCHAR"/>
+            <result property="settlementQuantity" column="settlementQuantity" jdbcType="INTEGER"/>
+            <result property="settlementRevenue" column="settlementRevenue" jdbcType="DECIMAL"/>
+            <result property="workTime" column="workTime" jdbcType="TIMESTAMP"/>
+            <result property="settlementTime" column="settlementTime" jdbcType="TIMESTAMP"/>
+            <result property="promoCodeRequestRecordId" column="promoCodeRequestRecordId" jdbcType="BIGINT"/>
+            <result property="isDelete" column="isDelete" jdbcType="TINYINT"/>
+            <result property="createTime" column="createTime" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="updateTime" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,projectDetailName,settlementQuantity,
+        settlementRevenue,workTime,settlementTime,
+        promoCodeRequestRecordId,isDelete,createTime,
+        updateTime
+    </sql>
+</mapper>