From ae7063f5e4a49e2ed55f240440246bdbae3fcc13 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期二, 23 十二月 2025 11:59:00 +0800
Subject: [PATCH] feat:管理后台财务管理积分结算
---
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TIntegralSettlementMapper.java | 7 +
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIntegralSettlementController.java | 19 +++-
ruoyi-system/src/main/java/com/ruoyi/system/export/IntegralSettlementImport.java | 4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIntegralSettlementServiceImpl.java | 38 ++++++++-
ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementVO.java | 7 +
ruoyi-system/src/main/java/com/ruoyi/system/service/TIntegralSettlementService.java | 15 +++
ruoyi-system/src/main/java/com/ruoyi/system/model/TIntegralSettlement.java | 6 +
ruoyi-system/src/main/resources/mapper/system/TIntegralSettlementMapper.xml | 25 ++++++
ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementDetailVO.java | 38 +++++++++
ruoyi-system/src/main/java/com/ruoyi/system/query/TIntegralSettlementDetailQuery.java | 23 +++++
10 files changed, 166 insertions(+), 16 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIntegralSettlementController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIntegralSettlementController.java
index db6e022..e4fd392 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIntegralSettlementController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TIntegralSettlementController.java
@@ -8,9 +8,10 @@
import com.ruoyi.common.utils.WebUtils;
import com.ruoyi.system.dto.TIntegralSettlementDTO;
import com.ruoyi.system.export.IntegralSettlementImport;
-import com.ruoyi.system.model.TIntegralSettlement;
+import com.ruoyi.system.query.TIntegralSettlementDetailQuery;
import com.ruoyi.system.query.TIntegralSettlementQuery;
import com.ruoyi.system.service.TIntegralSettlementService;
+import com.ruoyi.system.vo.TIntegralSettlementDetailVO;
import com.ruoyi.system.vo.TIntegralSettlementVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -21,14 +22,11 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
-import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.List;
/**
* 积分结算 前端控制器
@@ -46,7 +44,7 @@
private final TIntegralSettlementService integralSettlementService;
@ApiOperation(value = "积分结算列表(分页)")
- @PostMapping("/pageList")
+ @PostMapping("/page-list")
public R<Page<TIntegralSettlementVO>> pageList(@RequestBody TIntegralSettlementQuery query) {
return R.ok(integralSettlementService.getSettlementPageList(query));
}
@@ -81,4 +79,15 @@
integralSettlementService.importData(file, dto);
return R.ok();
}
+ @ApiOperation("详情")
+ @GetMapping("/detail/{id}")
+ public R<TIntegralSettlementVO> detail(@PathVariable Integer id) {
+ return R.ok(integralSettlementService.getDetail(id));
+ }
+
+ @ApiOperation(value = "积分结算详情列表(分页)")
+ @PostMapping("/detail/page-list")
+ public R<Page<TIntegralSettlementDetailVO>> pageDetailList(@RequestBody TIntegralSettlementDetailQuery query) {
+ return R.ok(integralSettlementService.getSettlementDetailPageList(query));
+ }
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/export/IntegralSettlementImport.java b/ruoyi-system/src/main/java/com/ruoyi/system/export/IntegralSettlementImport.java
index b33df16..110d61d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/export/IntegralSettlementImport.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/export/IntegralSettlementImport.java
@@ -3,6 +3,8 @@
import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;
+import java.math.BigDecimal;
+
/**
* 积分结算导入Excel
*/
@@ -12,7 +14,7 @@
private String code;
@Excel(name = "结算积分", width = 20)
- private Integer totalSettlementIntegral;
+ private BigDecimal totalSettlementIntegral;
@Excel(name = "备注", width = 20)
private String remark;
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TIntegralSettlementMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TIntegralSettlementMapper.java
index faf00ac..9f427a6 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TIntegralSettlementMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TIntegralSettlementMapper.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.system.model.TIntegralSettlement;
+import com.ruoyi.system.query.TIntegralSettlementDetailQuery;
import com.ruoyi.system.query.TIntegralSettlementQuery;
+import com.ruoyi.system.vo.TIntegralSettlementDetailVO;
import com.ruoyi.system.vo.TIntegralSettlementVO;
import org.apache.ibatis.annotations.Param;
@@ -23,5 +25,8 @@
* 分页查询积分结算列表(按结算周期分组汇总)
*/
List<TIntegralSettlementVO> selectSettlementPageList(Page<TIntegralSettlementVO> page, @Param("query") TIntegralSettlementQuery query);
-
+ /**
+ * 分页查询积分结算详情列表
+ */
+ List<TIntegralSettlementDetailVO> getSettlementDetailPageList(Page<TIntegralSettlementDetailVO> page, @Param("query") TIntegralSettlementDetailQuery query);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/model/TIntegralSettlement.java b/ruoyi-system/src/main/java/com/ruoyi/system/model/TIntegralSettlement.java
index dd0a1a1..0f9a650 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/model/TIntegralSettlement.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/model/TIntegralSettlement.java
@@ -39,7 +39,7 @@
@ApiModelProperty(value = "结算周期")
@TableField("settlement_interval")
- private LocalDate settlementInterval;
+ private String settlementInterval;
@ApiModelProperty(value = "结算开始时间")
@TableField("settlement_start_time")
@@ -51,7 +51,7 @@
@ApiModelProperty(value = "合计结算积分")
@TableField("total_settlement_integral")
- private Integer totalSettlementIntegral;
+ private BigDecimal totalSettlementIntegral;
@ApiModelProperty(value = "添加时间")
@TableField("create_time")
@@ -75,4 +75,6 @@
+
+
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/TIntegralSettlementDetailQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/TIntegralSettlementDetailQuery.java
new file mode 100644
index 0000000..78cae03
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/TIntegralSettlementDetailQuery.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.query;
+
+import com.ruoyi.common.core.domain.BasePage;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 积分结算列表查询条件
+ */
+@Data
+@ApiModel(value = "积分结算列表查询条件")
+public class TIntegralSettlementDetailQuery extends BasePage {
+
+ @ApiModelProperty(value = "用户名")
+ private String name;
+
+ @ApiModelProperty(value = "联系电话")
+ private String phone;
+
+ @ApiModelProperty(value = "推广号")
+ private String code;
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TIntegralSettlementService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TIntegralSettlementService.java
index c2c7dfc..9d6bfee 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TIntegralSettlementService.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TIntegralSettlementService.java
@@ -4,7 +4,9 @@
import com.ruoyi.system.model.TIntegralSettlement;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.system.query.TIntegralSettlementDetailQuery;
import com.ruoyi.system.query.TIntegralSettlementQuery;
+import com.ruoyi.system.vo.TIntegralSettlementDetailVO;
import com.ruoyi.system.vo.TIntegralSettlementVO;
import org.springframework.web.multipart.MultipartFile;
@@ -31,4 +33,17 @@
* @param dto
*/
void importData(MultipartFile file, @Valid TIntegralSettlementDTO dto);
+
+ /**
+ * 详情
+ * @param id
+ * @return
+ */
+ TIntegralSettlementVO getDetail(Integer id);
+ /**
+ * 详情分页列表
+ * @param query
+ * @return
+ */
+ Page<TIntegralSettlementDetailVO> getSettlementDetailPageList(TIntegralSettlementDetailQuery query);
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIntegralSettlementServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIntegralSettlementServiceImpl.java
index 5929deb..b12a474 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIntegralSettlementServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TIntegralSettlementServiceImpl.java
@@ -6,28 +6,31 @@
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Sets;
+import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.system.dto.TIntegralSettlementDTO;
import com.ruoyi.system.export.IntegralSettlementImport;
import com.ruoyi.system.model.TAppUser;
import com.ruoyi.system.model.TIntegralSettlement;
import com.ruoyi.system.mapper.TIntegralSettlementMapper;
+import com.ruoyi.system.query.TIntegralSettlementDetailQuery;
import com.ruoyi.system.query.TIntegralSettlementQuery;
+import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TAppUserService;
import com.ruoyi.system.service.TIntegralSettlementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.system.vo.TIntegralSettlementDetailVO;
import com.ruoyi.system.vo.TIntegralSettlementVO;
import lombok.Cleanup;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.math.BigDecimal;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -38,10 +41,13 @@
* @author xiaochen
* @since 2025-12-08
*/
+@Slf4j
@Service
@RequiredArgsConstructor(onConstructor_ = @Lazy)
public class TIntegralSettlementServiceImpl extends ServiceImpl<TIntegralSettlementMapper, TIntegralSettlement> implements TIntegralSettlementService {
private final TAppUserService appUserService;
+ private final ISysUserService sysUserService;
+
@Override
public Page<TIntegralSettlementVO> getSettlementPageList(TIntegralSettlementQuery query) {
Page<TIntegralSettlementVO> page = new Page<>(query.getPageNum(), query.getPageSize());
@@ -69,7 +75,8 @@
}).collect(Collectors.toList());
saveBatch(saveList);
} catch (Exception e) {
- throw new RuntimeException(e);
+ log.error("导入积分结算异常", e);
+ throw new ServiceException("导入积分结算异常");
}
}
@@ -88,4 +95,25 @@
}
return Collections.emptyMap();
}
+
+ @Override
+ public TIntegralSettlementVO getDetail(Integer id) {
+ TIntegralSettlement integralSettlement = this.getById(id);
+ TIntegralSettlementVO tIntegralSettlementVO = BeanUtil.copyProperties(integralSettlement, TIntegralSettlementVO.class);
+ if (Objects.nonNull(integralSettlement)) {
+ List<TIntegralSettlement> list = this.lambdaQuery().eq(TIntegralSettlement::getSettlementInterval, integralSettlement.getSettlementInterval()).list();
+ BigDecimal total = list.stream().map(TIntegralSettlement::getTotalSettlementIntegral).reduce(BigDecimal.ZERO, BigDecimal::add);
+ tIntegralSettlementVO.setTotalSettlementIntegral(total);
+ SysUser sysUser = sysUserService.selectUserById(Long.valueOf(integralSettlement.getCreateUserId()));
+ tIntegralSettlementVO.setCreateUserName(Objects.nonNull(sysUser) ? sysUser.getNickName() : "");
+ }
+ return tIntegralSettlementVO;
+ }
+
+ @Override
+ public Page<TIntegralSettlementDetailVO> getSettlementDetailPageList(TIntegralSettlementDetailQuery query) {
+ Page<TIntegralSettlementDetailVO> page = new Page<>(query.getPageNum(), query.getPageSize());
+ page.setRecords(baseMapper.getSettlementDetailPageList(page, query));
+ return page;
+ }
}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementDetailVO.java
new file mode 100644
index 0000000..6f6752f
--- /dev/null
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementDetailVO.java
@@ -0,0 +1,38 @@
+package com.ruoyi.system.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+
+/**
+ * 积分结算详情列表VO
+ */
+@Data
+@ApiModel(value = "积分结算详情列表VO")
+public class TIntegralSettlementDetailVO {
+
+ @ApiModelProperty(value = "主键")
+ private Integer id;
+
+ @ApiModelProperty(value = "用户名")
+ private String name;
+
+ @ApiModelProperty(value = "手机号")
+ private String phone;
+
+ @ApiModelProperty(value = "推广号")
+ private String code;
+
+ @ApiModelProperty(value = "结算积分")
+ private BigDecimal totalSettlementIntegral;
+
+ @ApiModelProperty("备注")
+ private String remark;
+
+}
diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementVO.java
index 7c8eb6e..f2772a9 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementVO.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/TIntegralSettlementVO.java
@@ -16,15 +16,18 @@
@ApiModel(value = "积分结算列表VO")
public class TIntegralSettlementVO {
+ @ApiModelProperty(value = "主键")
+ private Integer id;
+
@ApiModelProperty(value = "结算周期")
private String settlementInterval;
@ApiModelProperty(value = "结算开始日期")
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy年MM月dd日")
private LocalDate settlementStartTime;
@ApiModelProperty(value = "结算结束日期")
- @JsonFormat(pattern = "yyyy-MM-dd")
+ @JsonFormat(pattern = "yyyy年MM月dd日")
private LocalDate settlementEndTime;
@ApiModelProperty(value = "操作人")
diff --git a/ruoyi-system/src/main/resources/mapper/system/TIntegralSettlementMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TIntegralSettlementMapper.xml
index 50331a4..35ed211 100644
--- a/ruoyi-system/src/main/resources/mapper/system/TIntegralSettlementMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/TIntegralSettlementMapper.xml
@@ -24,6 +24,7 @@
<!-- 分页查询积分结算列表(按结算周期分组汇总) -->
<select id="selectSettlementPageList" resultType="com.ruoyi.system.vo.TIntegralSettlementVO">
SELECT
+ t.id,
t.settlement_interval,
MIN(t.settlement_start_time) AS settlementStartTime,
MAX(t.settlement_end_time) AS settlementEndTime,
@@ -41,4 +42,28 @@
ORDER BY t.settlement_interval DESC, MAX(t.create_time) DESC
</select>
+ <select id="getSettlementDetailPageList" resultType="com.ruoyi.system.vo.TIntegralSettlementDetailVO">
+ SELECT
+ t.id,
+ t.total_settlement_integral,
+ t.create_time,
+ tau.name,
+ tau.phone,
+ tau.code
+ FROM t_integral_settlement t
+ LEFT JOIN t_app_user tau ON tau.id = t.app_user_id
+ <where>
+ <if test="query.name != null and query.name != ''">
+ AND tau.name LIKE CONCAT('%', #{query.name}, '%')
+ </if>
+ <if test="query.phone != null and query.phone != ''">
+ AND tau.phone LIKE CONCAT('%', #{query.phone}, '%')
+ </if>
+ <if test="query.code != null and query.code != ''">
+ AND tau.code LIKE CONCAT('%', #{query.code}, '%')
+ </if>
+ </where>
+ ORDER BY t.create_time DESC
+ </select>
+
</mapper>
--
Gitblit v1.7.1