weekly-2026-W28

周报 · 2026年第28周(07月06日-07月11日)

姓名: 邓星星(dengxingxing) 项目: hoolihome-project 分支: production 提交数: 23个(含7个功能提交)


📋 本周工作汇总

按日期统计

日期 提交数 主要内容
07/06 周一 5 fix(data-sync): 忽略已过期租期的数据记录、feat(recommendScript): 新增推荐话术后、refactor(house): 优化房间图片标记逻辑…
07/07 周二 4 Merge branch 'dev_v2_crm' into、feat(crm): 优化重置用户密码接口,添加操作日志记录、fix(crm-api): 修正房源设备类型参数与日志字段调…
07/08 周三 5 修改、refactor(service): move Agreem、refactor: Phase 1-5 架构优化(纯重构,零…
07/09 周四 8 fix(query): 修正 existsTemplate 、feat(query): 添加国家筛选的关联查询支持、修改…
07/10 周五 1 feat(query): 添加动态查询接口及配置支持多模块
07/11 周六 0

按模块统计

模块 提交数
其他 9
CRM/商机管理 4
房源管理 3
查询搜索 3
活动促销 2
订单管理 1
房源推荐 1

🛠 详细工作内容

1. refactor(service): move AgreementService and AliYunWord2PdfService to order package ♻️ 重构

  • 提交: d1b44d9c8d8a(2026-07-08)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+package com.hoolihome.crm.query.provider;
+
+import com.hoolihome.common.query.config.QueryConfigProvider;
+import com.hoolihome.common.query.config.QueryFieldConfig;
+import com.hoolihome.common.query.dto.BaseCondition;
+import com.hoolihome.common.query.dto.OptionItem;
+import com.hoolihome.common.query.dto.SortCondition;
+import com.hoolihome.common.query.enums.PermissionStrategy;
+import com.hoolihome.common.query.enums.ValueType;
+import com.hoolihome.entity.house.HouseCommission;
+import org.springframework.stereotype.Component;
+

2. refactor: Phase 1-5 架构优化(纯重构,零业务变更) ♻️ 重构

  • 提交: 11fad4c19daf(2026-07-08)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+# hoolihome-crm-api 架构优化方案 V2
+
+## 一、设计原则
+
+> 分层解耦而非合并膨胀 | 增强已有模式而非推倒重建 | 编译时安全优于运行时魔法
+
+本方案基于对项目代码的实际分析,在原方案基础上做出以下调整:
+1. **不追求一个 VO 打天下** — 按模块复杂度分级采用不同策略
+2. **利用已有 VoBuilder 模式** — 项目中 `HousePolicyVoBuilder`、`HouseCommissionVoBuilder` 等已是良好范式,增强而非替换
+3. **增量更新 JSON 化** — 新 V2 接口统一使用 `@RequestBody` + 自动字段追踪,老表单接口保持不动
+4. **导出作为正交关注点** — 不污染现有 VO,通过适配层桥接
+

3. fix(data-sync): 忽略已过期租期的数据记录 🐛 修复

  • 提交: a1cdef96dd6a(2026-07-06)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+                        if (attr.getRentTime() != null && attr.getRentTime() < System.currentTimeMillis()) {
+                            continue;
+                        }

4. feat(crm): 优化重置用户密码接口,添加操作日志记录 ⭐ 新增

  • 提交: d9f9d9cbaab4(2026-07-07)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
-    public ResVo resetPassword(Integer userId, String newPassword) {
+    public ResVo resetPassword(Integer userId, String newPassword, CommonReqDTO param) {

5. fix(crm-api): 修正房源设备类型参数与日志字段调整 🐛 修复

  • 提交: 6934044c8afa(2026-07-07)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
-    @LogFieldMate(fieldName = "供应商", fieldType = LogFieldType.OBJECT, service = LandlordInfoServiceImpl.class, dataCont
-    private Integer landlordId;
+    //@LogFieldMate(fieldName = "供应商", fieldType = LogFieldType.OBJECT, service = LandlordInfoServiceImpl.class, dataCo
+    //private Integer landlordId;

6. feat(crm): 新增话术分享次数统计及管理列表优化 ⭐ 新增

  • 提交: 9f33421f23d5(2026-07-07)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.hoolihome.crm.service.ICrmRecommendScriptService;
+import com.hoolihome.entity.crm.CrmRecommendScript;

7. feat(recommendScript): 新增推荐话术后台管理列表功能 ⭐ 新增

  • 提交: 7a9b411658f3(2026-07-06)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+        logEntity.setScriptId(param.getScriptId());

8. refactor(house): 优化房间图片标记逻辑 ♻️ 重构

  • 提交: b614706b4874(2026-07-06)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
-            obj.setRoomGroupList(buildRoomGroupList(roomList, dto, videoMap, roomTypeImgMap));
+            obj.setRoomGroupList(buildRoomGroupList(roomList, dto, videoMap, roomTypeImgMap, topImageUrls));

9. refactor(house): 优化图片数据转换与补充视频图片字段 ♻️ 重构

  • 提交: 9b5dd756dc0d(2026-07-06)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
-                    simpleVo.setImgList(JSON.parseArray(room.getImgUrl(), ImageFileDTO.class).stream().map(image -> {
-                        var imageVo = BeanUtil.copyProperties(image, ImageVo.class);
-                        imageVo.processData(dto.getDeviceType());
-                        return imageVo;
-                    }).collect(Collectors.toList()));
+                    simpleVo.setImgList(JSON.parseArray(room.getImgUrl(), ImageFileDTO.class).stream()
+                            .map(image -> ImageVo.buildWithDTO(image, dto.getDeviceType()))
+                            .collect(Collectors.toList()));

10. refactor(house): 优化图片处理及标记精选图片逻辑 ♻️ 重构

  • 提交: 640f8727ae80(2026-07-06)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+import com.hoolihome.pub.dto.ImageFileDTO;

11. feat(query): 添加动态查询接口及配置支持多模块 ⭐ 新增

  • 提交: 337a5157f802(2026-07-10)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+import com.hoolihome.common.query.builder.DataPermissionHelper;
+import com.hoolihome.common.query.builder.DynamicQueryBuilder;
+import com.hoolihome.common.query.dto.DynamicQueryRequest;
-import com.hoolihome.log.recorder.LogRecorder;
+import com.hoolihome.crm.query.provider.ApplicationMailTemplateQueryConfigProvider;
+import com.hoolihome.log.recorder.LogRecorder;
+import com.hoolihome.crm.service.IApplicationMailTemplateService;

12. fix(query): 修正 existsTemplate 字段的过滤路由逻辑 🐛 修复

  • 提交: f8799fddf005(2026-07-09)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+     * <p>
+     * 当字段配置了 existsTemplate 时,IN/NOT_IN 自动路由到 EXISTS/NOT_EXISTS 子查询处理,
+     * 避免空 column 导致 SQL 语法错误。
+     * </p>
+        // 配置了 existsTemplate 的字段:IN/NOT_IN/EXISTS/NOT_EXISTS 均走 EXISTS 子查询
+        if (StrUtil.isNotBlank(config.getExistsTemplate())) {
+            if (filterType == FilterType.IN || filterType == FilterType.EXISTS) {
+                applyExistsFilter(wrapper, config, FilterType.EXISTS, value, values);
+                return;
+            }
+            if (filterType == FilterType.NOT_IN || filterType == FilterType.NOT_EXISTS) {
+                applyExistsFilter(wrapper, config, FilterType.NOT_EXISTS, value, values);

13. feat(query): 添加国家筛选的关联查询支持 ⭐ 新增

  • 提交: afe29d5d39db(2026-07-09)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
-                        .setOptionSource("landlord")
+                        .setOptionSource("landlord"),
+
+                // ========== EXISTS 关联查询(国家筛选) ==========
+                QueryFieldConfig.relation("countryId", "国家", "")
+                        .setExistsTemplate("select 1 from landlord_relation where landlord_relation.relation_type = 1 a
+                        .setOptionSource("country")
+
+                // ========== EXISTS 关联查询(城市筛选,通过关联公寓的city_id) ==========
+                /*QueryFieldConfig.relation("cityId", "城市", "")
+                        .setExistsTemplate("select 1 from house_info where house_info.city_id in (%s) and JSON_VALID(la
+                        .setOptionSource("city")*/

14. feat(promotion): 新增供应商活动适用范围及关联管理 ⭐ 新增

  • 提交: c774360444bc(2026-07-09)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
+    @Deprecated

15. feat(promotion): 支持Hooli补贴活动适用范围设置与查询 ⭐ 新增

  • 提交: d06545478e9d(2026-07-09)
  • 改动量: +0行 / -0行
  • 功能说明: (功能说明待补充)
-                QueryFieldConfig.text("bdName", "BD负责人", LandlordInfo.BD_NAME),

📊 本周工作总结

【核心成果】本周完成23次代码提交,重点推进架构重构与业务功能迭代两大主线。架构层面完成Phase 1-5全面优化,完成服务类迁移重组;业务层面实现CRM话术管理、房源图片处理、动态查询配置、活动促销范围控制等多项能力升级,同时修复数据同步与查询路由问题,系统稳定性显著提升。

【技术亮点】采用架构重构先行策略,实现零业务变更的纯代码优化;动态查询引擎支持多模块配置化扩展,新增国家筛选关联查询能力;图片处理模块引入精选标记与视频字段自动补全机制;活动促销系统实现供应商补贴与适用范围的精细化配置管理。

【业务价值】架构优化为后续迭代奠定坚实基础,查询能力升级支撑全球化业务扩展,CRM话术统计功能强化销售团队协作效率,房源图片管理提升租客端展示效果。系统性重构 2026-07-20 报告生成时间:2026-07-20*