科技小王子 3 weeks ago
parent
commit
a0f4fcc03f
  1. 74
      src/main/java/com/gxwebsoft/house/controller/HouseTestDataController.java
  2. 60
      src/main/java/com/gxwebsoft/house/mapper/xml/HouseInfoMapper.xml
  3. 10
      src/main/java/com/gxwebsoft/house/service/impl/HouseInfoServiceImpl.java

74
src/main/java/com/gxwebsoft/house/controller/HouseTestDataController.java

@ -0,0 +1,74 @@
package com.gxwebsoft.house.controller;
import com.gxwebsoft.common.core.web.ApiResult;
import com.gxwebsoft.common.core.web.BaseController;
import com.gxwebsoft.house.entity.HouseInfo;
import com.gxwebsoft.house.service.HouseInfoService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Date;
/**
* 房源测试数据控制器
*
* @author 科技小王子
* @since 2025-08-07
*/
@Tag(name = "房源测试数据管理")
@RestController
@RequestMapping("/api/house/test-data")
public class HouseTestDataController extends BaseController {
@Resource
private HouseInfoService houseInfoService;
@Operation(summary = "创建测试数据")
@PostMapping("/create")
public ApiResult<?> createTestData() {
try {
// 创建5个测试房源,价格不同
createTestHouse("碧园大厦B", "223", new BigDecimal("8920"), 10058);
createTestHouse("碧园大厦B", "155", new BigDecimal("6200"), 10058);
createTestHouse("碧园大厦B", "92", new BigDecimal("3680"), 10058);
createTestHouse("龙光国际A", "99", new BigDecimal("4455"), 10058);
createTestHouse("万达广场C", "120", new BigDecimal("5500"), 10058);
return success("测试数据创建成功!");
} catch (Exception e) {
return fail("创建测试数据失败:" + e.getMessage());
}
}
private void createTestHouse(String title, String extent, BigDecimal monthlyRent, Integer tenantId) {
HouseInfo house = new HouseInfo();
house.setHouseTitle(title);
house.setExtent(extent);
house.setMonthlyRent(monthlyRent);
house.setRent(monthlyRent);
house.setTenantId(tenantId);
house.setStatus(0); // 通过状态
house.setDeleted(0);
house.setRecommend(0);
house.setUserId(1);
house.setCreateTime(new Date());
house.setUpdateTime(new Date());
house.setCityByHouse("南宁");
house.setHouseType("办公室");
house.setLeaseMethod("整租");
house.setFloor("10层");
house.setRealName("测试用户");
house.setPhone("13800138000");
house.setProvince("广西");
house.setCity("南宁");
house.setRegion("青秀区");
house.setAddress("测试地址");
houseInfoService.save(house);
}
}

60
src/main/java/com/gxwebsoft/house/mapper/xml/HouseInfoMapper.xml

@ -128,6 +128,49 @@
OR a.room_number LIKE CONCAT('%', #{param.keywords}, '%') OR a.room_number LIKE CONCAT('%', #{param.keywords}, '%')
) )
</if> </if>
<!-- 价格区间筛选 -->
<if test="param.priceScene != null">
<choose>
<when test="param.priceScene == '1000以下'">
AND a.monthly_rent &lt; 1000
</when>
<when test="param.priceScene == '1000-3000'">
AND a.monthly_rent &gt;= 1000 AND a.monthly_rent &lt;= 3000
</when>
<when test="param.priceScene == '3000-5000'">
AND a.monthly_rent &gt;= 3000 AND a.monthly_rent &lt;= 5000
</when>
<when test="param.priceScene == '5000-10000'">
AND a.monthly_rent &gt;= 5000 AND a.monthly_rent &lt;= 10000
</when>
<when test="param.priceScene == '10000-20000'">
AND a.monthly_rent &gt;= 10000 AND a.monthly_rent &lt;= 20000
</when>
<when test="param.priceScene == '20000以上'">
AND a.monthly_rent &gt; 20000
</when>
</choose>
</if>
<!-- 面积区间筛选 -->
<if test="param.extentScene != null">
<choose>
<when test="param.extentScene == '50以下'">
AND a.extent &lt; 50
</when>
<when test="param.extentScene == '50-100'">
AND a.extent &gt;= 50 AND a.extent &lt;= 100
</when>
<when test="param.extentScene == '100-150'">
AND a.extent &gt;= 100 AND a.extent &lt;= 150
</when>
<when test="param.extentScene == '150-200'">
AND a.extent &gt;= 150 AND a.extent &lt;= 200
</when>
<when test="param.extentScene == '200以上'">
AND a.extent &gt; 200
</when>
</choose>
</if>
</where> </where>
<trim prefix="ORDER BY" suffixOverrides=","> <trim prefix="ORDER BY" suffixOverrides=",">
<if test="param.sortScene == '综合排序'"> <if test="param.sortScene == '综合排序'">
@ -137,24 +180,19 @@
a.create_time desc, a.create_time desc,
</if> </if>
<if test="param.sortScene == '价格(低-高)'"> <if test="param.sortScene == '价格(低-高)'">
a.monthly_rent asc,
CAST(IFNULL(a.monthly_rent, 0) AS DECIMAL(10,2)) asc,
</if> </if>
<if test="param.sortScene == '价格(高-低)'"> <if test="param.sortScene == '价格(高-低)'">
a.monthly_rent desc,
CAST(IFNULL(a.monthly_rent, 0) AS DECIMAL(10,2)) desc,
</if> </if>
<if test="param.sortScene == '面积(小-大)'"> <if test="param.sortScene == '面积(小-大)'">
a.extent asc,
CAST(IFNULL(a.extent, 0) AS DECIMAL(10,2)) asc,
</if> </if>
<if test="param.sortScene == '面积(大-小)'"> <if test="param.sortScene == '面积(大-小)'">
a.extent desc,
</if>
<if test="param.priceScene != null">
ABS(a.monthly_rent - #{param.priceScene}),
</if>
<if test="param.extentScene != null">
ABS(a.extent - #{param.extentScene}),
CAST(IFNULL(a.extent, 0) AS DECIMAL(10,2)) desc,
</if> </if>
<!-- 默认排序:推荐优先,然后按创建时间倒序 -->
a.recommend desc, a.create_time desc
</trim> </trim>
</sql> </sql>

10
src/main/java/com/gxwebsoft/house/service/impl/HouseInfoServiceImpl.java

@ -63,7 +63,10 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
@Override @Override
public PageResult<HouseInfo> pageRel(HouseInfoParam param) { public PageResult<HouseInfo> pageRel(HouseInfoParam param) {
PageParam<HouseInfo, HouseInfoParam> page = new PageParam<>(param); PageParam<HouseInfo, HouseInfoParam> page = new PageParam<>(param);
page.setDefaultOrder("create_time desc");
// 只有在没有指定排序场景时才使用默认排序
if (param.getSortScene() == null || param.getSortScene().isEmpty()) {
page.setDefaultOrder("create_time desc");
}
List<HouseInfo> list = baseMapper.selectPageRel(page, param); List<HouseInfo> list = baseMapper.selectPageRel(page, param);
return new PageResult<>(list, page.getTotal()); return new PageResult<>(list, page.getTotal());
} }
@ -73,7 +76,10 @@ public class HouseInfoServiceImpl extends ServiceImpl<HouseInfoMapper, HouseInfo
List<HouseInfo> list = baseMapper.selectListRel(param); List<HouseInfo> list = baseMapper.selectListRel(param);
// 排序 // 排序
PageParam<HouseInfo, HouseInfoParam> page = new PageParam<>(); PageParam<HouseInfo, HouseInfoParam> page = new PageParam<>();
page.setDefaultOrder("create_time desc");
// 只有在没有指定排序场景时才使用默认排序
if (param.getSortScene() == null || param.getSortScene().isEmpty()) {
page.setDefaultOrder("create_time desc");
}
return page.sortRecords(list); return page.sortRecords(list);
} }

Loading…
Cancel
Save