From 54adbd532ecfd5d98ae8df749e1868fb6ba346b2 Mon Sep 17 00:00:00 2001
From: Joshi <3040996759@qq.com>
Date: Tue, 5 May 2026 16:48:13 +0800
Subject: [PATCH] =?UTF-8?q?feat(order):=20=E6=B7=BB=E5=8A=A0=E8=AE=A2?=
=?UTF-8?q?=E5=8D=95=E7=BD=AE=E9=A1=B6=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F=E8=A7=84=E5=88=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 在CrmOrder实体类中新增isTop字段用于标识是否置顶
- 在CrmOrderBo业务对象中添加isTop属性支持查询过滤
- 在CrmOrderVo视图对象中添加isTop属性并配置Excel导出
- 更新MyBatis映射文件添加isTop字段的数据库映射关系
- 修改订单查询服务实现支持按置顶状态进行查询过滤
- 重构排序逻辑将原有的订单类型+创建时间排序改为置顶优先+状态+创建时间排序
- 新排序规则:置顶订单优先显示、已生效状态次之、最后按创建时间倒序排列
---
.../java/com/klp/crm/domain/CrmOrder.java | 5 +++++
.../com/klp/crm/domain/bo/CrmOrderBo.java | 5 +++++
.../com/klp/crm/domain/vo/CrmOrderVo.java | 6 ++++++
.../crm/service/impl/CrmOrderServiceImpl.java | 19 ++++++++++++++++---
.../main/resources/mapper/CrmOrderMapper.xml | 11 +++++++----
5 files changed, 39 insertions(+), 7 deletions(-)
diff --git a/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java b/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java
index d41ff19a..4e245511 100644
--- a/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java
+++ b/klp-crm/src/main/java/com/klp/crm/domain/CrmOrder.java
@@ -226,4 +226,9 @@ public class CrmOrder extends BaseEntity {
@TableLogic
private Long delFlag;
+ /**
+ * 是否置顶 0-否 1-是
+ */
+ private Integer isTop;
+
}
diff --git a/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java b/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java
index b07e18a1..5d337096 100644
--- a/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java
+++ b/klp-crm/src/main/java/com/klp/crm/domain/bo/CrmOrderBo.java
@@ -235,6 +235,11 @@ public class CrmOrderBo extends BaseEntity {
*/
private String annexFiles;
+ /**
+ * 是否置顶 0-否 1-是
+ */
+ private Integer isTop;
+
/**
* 关键字搜索
*/
diff --git a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java
index af1db5d6..9b81914e 100644
--- a/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java
+++ b/klp-crm/src/main/java/com/klp/crm/domain/vo/CrmOrderVo.java
@@ -279,6 +279,12 @@ public class CrmOrderVo extends BaseEntity {
@ExcelProperty(value = "附件")
private String annexFiles;
+ /**
+ * 是否置顶 0-否 1-是
+ */
+ @ExcelProperty(value = "是否置顶")
+ private Integer isTop;
+
// @ExcelProperty(value = "客户编号")
private String customerCode;
diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java
index 71877a71..8c8c6b18 100644
--- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java
+++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderServiceImpl.java
@@ -208,11 +208,16 @@ public class CrmOrderServiceImpl implements ICrmOrderService {
qw.eq(bo.getStatus() != null, "co.status", bo.getStatus());
qw.eq(bo.getContractId() != null, "co.contract_id", bo.getContractId());
qw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), "co.annex_files", bo.getAnnexFiles());
+ qw.eq(bo.getIsTop() != null, "co.is_top", bo.getIsTop());
//逻辑删除
qw.eq("co.del_flag", 0);
- //根据orderType排序预订单是0 正是订单是1 0排在前面 1排在后面 升序
- qw.orderByAsc("co.order_type");
- qw.orderByDesc("co.create_time");
+ //排序规则:
+ // 1. 置顶优先 (is_top=1 排在前面)
+ // 2. 状态为1(已生效)的排在前面
+ // 3. 创建时间倒序
+ qw.orderByDesc("co.is_top")
+ .orderByDesc("CASE WHEN co.status = 1 THEN 1 ELSE 0 END")
+ .orderByDesc("co.create_time");
return qw;
}
@@ -268,6 +273,14 @@ public class CrmOrderServiceImpl implements ICrmOrderService {
lqw.eq(bo.getStatus() != null, CrmOrder::getStatus, bo.getStatus());
lqw.eq(bo.getContractId() != null, CrmOrder::getContractId, bo.getContractId());
lqw.like(StringUtils.isNotBlank(bo.getAnnexFiles()), CrmOrder::getAnnexFiles, bo.getAnnexFiles());
+ lqw.eq(bo.getIsTop() != null, CrmOrder::getIsTop, bo.getIsTop());
+ //逻辑删除
+ lqw.eq(CrmOrder::getDelFlag, 0);
+ //排序规则:
+ // 1. 置顶优先 (is_top=1 排在前面)
+ // 2. 状态为1(已生效)的排在前面
+ // 3. 创建时间倒序
+ lqw.last("ORDER BY is_top DESC, CASE WHEN status = 1 THEN 1 ELSE 0 END DESC, create_time DESC");
return lqw;
}
diff --git a/klp-crm/src/main/resources/mapper/CrmOrderMapper.xml b/klp-crm/src/main/resources/mapper/CrmOrderMapper.xml
index ae849e39..42587de3 100644
--- a/klp-crm/src/main/resources/mapper/CrmOrderMapper.xml
+++ b/klp-crm/src/main/resources/mapper/CrmOrderMapper.xml
@@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+