feat(order): 添加订单置顶功能并优化排序规则
- 在CrmOrder实体类中新增isTop字段用于标识是否置顶 - 在CrmOrderBo业务对象中添加isTop属性支持查询过滤 - 在CrmOrderVo视图对象中添加isTop属性并配置Excel导出 - 更新MyBatis映射文件添加isTop字段的数据库映射关系 - 修改订单查询服务实现支持按置顶状态进行查询过滤 - 重构排序逻辑将原有的订单类型+创建时间排序改为置顶优先+状态+创建时间排序 - 新排序规则:置顶订单优先显示、已生效状态次之、最后按创建时间倒序排列
This commit is contained in:
@@ -226,4 +226,9 @@ public class CrmOrder extends BaseEntity {
|
||||
@TableLogic
|
||||
private Long delFlag;
|
||||
|
||||
/**
|
||||
* 是否置顶 0-否 1-是
|
||||
*/
|
||||
private Integer isTop;
|
||||
|
||||
}
|
||||
|
||||
@@ -235,6 +235,11 @@ public class CrmOrderBo extends BaseEntity {
|
||||
*/
|
||||
private String annexFiles;
|
||||
|
||||
/**
|
||||
* 是否置顶 0-否 1-是
|
||||
*/
|
||||
private Integer isTop;
|
||||
|
||||
/**
|
||||
* 关键字搜索
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="isTop" column="is_top"/>
|
||||
</resultMap>
|
||||
<select id="selectVoPagePlus" resultType="com.klp.crm.domain.vo.CrmOrderVo">
|
||||
SELECT
|
||||
@@ -96,8 +97,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
co.deposit_ratio AS depositRatio,
|
||||
co.status,
|
||||
co.contract_id AS contractId,
|
||||
co.annex_files AS annexFiles,
|
||||
co.create_by AS createBy,
|
||||
co.annex_files AS annexFiles,
|
||||
co.is_top AS isTop,
|
||||
co.create_by AS createBy,
|
||||
co.create_time AS createTime,
|
||||
co.update_by AS updateBy,
|
||||
co.update_time AS updateTime,
|
||||
@@ -155,8 +157,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
co.deposit_ratio AS depositRatio,
|
||||
co.status,
|
||||
co.contract_id AS contractId,
|
||||
co.annex_files AS annexFiles,
|
||||
co.create_by AS createBy,
|
||||
co.annex_files AS annexFiles,
|
||||
co.is_top AS isTop,
|
||||
co.create_by AS createBy,
|
||||
co.create_time AS createTime,
|
||||
co.update_by AS updateBy,
|
||||
co.update_time AS updateTime,
|
||||
|
||||
Reference in New Issue
Block a user