diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/HousingEstateController.java b/nxhs-service/src/main/java/cc/yunxi/controller/HousingEstateController.java
new file mode 100644
index 0000000..013179d
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/controller/HousingEstateController.java
@@ -0,0 +1,87 @@
+package cc.yunxi.controller;
+
+
+import cc.yunxi.common.domain.CommonResult;
+import cc.yunxi.common.utils.BeanUtils;
+import cc.yunxi.common.utils.CommonUtil;
+import cc.yunxi.domain.dto.LocationDTO;
+import cc.yunxi.domain.po.HousingEstate;
+import cc.yunxi.domain.vo.housingestate.HousingEstateRespVO;
+import cc.yunxi.domain.vo.recycleorder.RecycleOrderRespVO;
+import cc.yunxi.service.IHousingEstateService;
+import cn.hutool.core.util.ObjectUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+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 javax.validation.Valid;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ *
+ * 小区信息表 前端控制器
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-18 02:31:50
+ */
+@Api(tags = "小区接口")
+@RestController
+@RequestMapping("/housing-estate")
+@RequiredArgsConstructor
+@Slf4j
+@Validated
+public class HousingEstateController {
+
+
+ @Resource
+ private IHousingEstateService housingEstateService;
+
+ @ApiOperation("附近两个小区")
+ @GetMapping("/nearby")
+ public CommonResult> getNearbyHousingList(LocationDTO location) {
+ List housingList = housingEstateService.getNearbyHousingList(location);
+ List housingEstateRespVOList = BeanUtils.copyList(housingList, HousingEstateRespVO.class, (s,t) -> {
+ t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
+ t.setDistance(String.valueOf(new Double(s.getDistance()) / 1000));
+ });
+ return CommonResult.success(housingEstateRespVOList);
+ }
+
+ @ApiOperation("小区详情")
+ @GetMapping("/info")
+ public CommonResult getNearbyHousing(String housingEstateId, LocationDTO location) {
+ HousingEstate housingEstate = housingEstateService.getHousingInfo(housingEstateId);
+ HousingEstateRespVO housingEstateRespVO = BeanUtils.copyBean(housingEstate, HousingEstateRespVO.class, (s,t) -> {
+ t.setLocation(new LocationDTO(s.getLongitude(), s.getLatitude()));
+ });
+ this.computeDistance(housingEstateRespVO, location);
+ return CommonResult.success(housingEstateRespVO);
+ }
+
+
+ /**
+ * 计算散户 -> 小区距离(km)
+ * @param housingEstateRespVO
+ * @param locationDTO
+ */
+ private void computeDistance(HousingEstateRespVO housingEstateRespVO, LocationDTO locationDTO) {
+ if (ObjectUtil.isNotEmpty(locationDTO) && locationDTO.isValid()) {
+ String longitude = locationDTO.getLongitude();
+ String latitude = locationDTO.getLatitude();
+ String orderLongitude = housingEstateRespVO.getLocation().getLongitude();
+ String orderLatitude = housingEstateRespVO.getLocation().getLatitude();
+ BigDecimal distance = CommonUtil.getDistance(longitude, latitude, orderLongitude, orderLatitude);
+ housingEstateRespVO.setDistance(String.valueOf(distance));
+ }
+ }
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java
index 20fa39f..45a8349 100644
--- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java
+++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java
@@ -202,7 +202,7 @@ public class RecycleOrderController {
* @param locationDTO
*/
private void computeOrderDistance(RecycleOrderRespVO orderRespVO, LocationDTO locationDTO) {
- if (ObjectUtil.isAllNotEmpty(locationDTO) && locationDTO.isValid()) {
+ if (ObjectUtil.isNotEmpty(locationDTO) && locationDTO.isValid()) {
String longitude = locationDTO.getLongitude();
String latitude = locationDTO.getLatitude();
String orderLongitude = orderRespVO.getLocation().getLongitude();
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/HousingEstate.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/HousingEstate.java
new file mode 100644
index 0000000..ecf0620
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/HousingEstate.java
@@ -0,0 +1,85 @@
+package cc.yunxi.domain.po;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ *
+ * 小区信息表
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-18 02:31:50
+ */
+@Data
+@TableName("nx_housing_estate")
+@ApiModel(value = "HousingEstate", description = "小区信息表")
+public class HousingEstate {
+
+ @ApiModelProperty("主键id")
+ @TableId(value = "id", type = IdType.ASSIGN_ID)
+ private String id;
+
+ @ApiModelProperty("小区名")
+ @TableField("name")
+ private String name;
+
+ @ApiModelProperty("小区详细地址")
+ @TableField("address")
+ private String address;
+
+ @ApiModelProperty("经度")
+ @TableField("longitude")
+ private String longitude;
+
+ @ApiModelProperty("纬度")
+ @TableField("latitude")
+ private String latitude;
+
+ @ApiModelProperty("是否支持定时定点回收 0 否 1 是")
+ @TableField("has_schedule")
+ private Integer hasSchedule;
+
+ @ApiModelProperty("定点回收地址")
+ @TableField("recycle_address")
+ private String recycleAddress;
+
+ @ApiModelProperty("定点回收时间起")
+ @TableField("appointment_time_start")
+ private String appointmentTimeStart;
+
+ @ApiModelProperty("定点回收时间止")
+ @TableField("appointment_time_end")
+ private String appointmentTimeEnd;
+
+ @ApiModelProperty("所属回收站id")
+ @TableField("station_id")
+ private String stationId;
+
+// @ApiModelProperty("有效标志(0-禁用,1-启用)")
+// @TableField("enabled_mark")
+// private Integer enabledMark;
+
+ @ApiModelProperty("创建时间")
+ @TableField("f_creator_time")
+ private LocalDateTime creatorTime;
+
+ @ApiModelProperty("备注")
+ @TableField("remark")
+ private String remark;
+
+ @ApiModelProperty("小区距离(m)")
+ @TableField(exist = false)
+ private String distance;
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/housingestate/HousingEstateRespVO.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/housingestate/HousingEstateRespVO.java
new file mode 100644
index 0000000..a828904
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/housingestate/HousingEstateRespVO.java
@@ -0,0 +1,62 @@
+package cc.yunxi.domain.vo.housingestate;
+
+import cc.yunxi.domain.dto.LocationDTO;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ *
+ * 小区信息表
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-18 02:31:50
+ */
+@Data
+@ApiModel(value = "HousingEstate", description = "小区信息 Response VO")
+public class HousingEstateRespVO {
+
+ @ApiModelProperty("主键id")
+ private String id;
+
+ @ApiModelProperty("小区名")
+ private String name;
+
+ @ApiModelProperty("小区详细地址")
+ private String address;
+
+ @ApiModelProperty("位置信息")
+ private LocationDTO location;
+
+ @ApiModelProperty("定点回收地址")
+ private String recycleAddress;
+
+ @ApiModelProperty("定点回收时间起")
+ private String appointmentTimeStart;
+
+ @ApiModelProperty("定点回收时间止")
+ private String appointmentTimeEnd;
+
+ @ApiModelProperty("所属回收站id")
+ private String stationId;
+
+// @ApiModelProperty("有效标志(0-禁用,1-启用)")
+// @TableField("enabled_mark")
+// private Integer enabledMark;
+
+ @ApiModelProperty("创建时间")
+ private LocalDateTime creatorTime;
+
+ @ApiModelProperty("备注")
+ private String remark;
+
+
+ @ApiModelProperty("小区距离(km)")
+ private String distance;
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/mapper/HousingEstateMapper.java b/nxhs-service/src/main/java/cc/yunxi/mapper/HousingEstateMapper.java
new file mode 100644
index 0000000..0d96bdc
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/mapper/HousingEstateMapper.java
@@ -0,0 +1,29 @@
+package cc.yunxi.mapper;
+
+import cc.yunxi.domain.dto.LocationDTO;
+import cc.yunxi.domain.po.HousingEstate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ *
+ * 小区信息表 Mapper 接口
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-18 02:31:50
+ */
+@Mapper
+public interface HousingEstateMapper extends BaseMapper {
+
+
+ /**
+ * 附近的小区
+ * @param location
+ * @return HousingEstate
+ */
+ List getNearbyHousingList(@Param("location") LocationDTO location);
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IHousingEstateService.java b/nxhs-service/src/main/java/cc/yunxi/service/IHousingEstateService.java
new file mode 100644
index 0000000..8c84fa0
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/service/IHousingEstateService.java
@@ -0,0 +1,36 @@
+package cc.yunxi.service;
+
+import cc.yunxi.domain.dto.LocationDTO;
+import cc.yunxi.domain.po.HousingEstate;
+import cc.yunxi.domain.vo.housingestate.HousingEstateRespVO;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 小区信息表 服务类
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-18 02:31:50
+ */
+public interface IHousingEstateService extends IService {
+
+ /**
+ * 附近的小区
+ * @param location
+ * @return HousingEstate
+ */
+ List getNearbyHousingList(@Valid LocationDTO location);
+
+
+ /**
+ * 小区详情
+ * @param housingEstateId
+ * @return HousingEstate
+ */
+ HousingEstate getHousingInfo(String housingEstateId);
+
+}
diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/HousingEstateServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/HousingEstateServiceImpl.java
new file mode 100644
index 0000000..e52f42b
--- /dev/null
+++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/HousingEstateServiceImpl.java
@@ -0,0 +1,50 @@
+package cc.yunxi.service.impl;
+
+import cc.yunxi.common.exception.BizIllegalException;
+import cc.yunxi.domain.dto.LocationDTO;
+import cc.yunxi.domain.po.HousingEstate;
+import cc.yunxi.domain.po.RecycleOrder;
+import cc.yunxi.mapper.HousingEstateMapper;
+import cc.yunxi.service.IHousingEstateService;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ *
+ * 小区信息表 服务实现类
+ *
+ *
+ * @author ccongli
+ * @since 2024-03-18 02:31:50
+ */
+@Service
+@Validated
+public class HousingEstateServiceImpl extends ServiceImpl implements IHousingEstateService {
+
+
+ @Resource
+ private HousingEstateMapper housingEstateMapper;
+
+ @Override
+ public List getNearbyHousingList(LocationDTO location) {
+ return housingEstateMapper.getNearbyHousingList(location);
+ }
+
+ @Override
+ public HousingEstate getHousingInfo(String housingEstateId) {
+ if (StrUtil.isEmpty(housingEstateId)) {
+ throw new BizIllegalException("请求参数缺失");
+ }
+ HousingEstate housingEstate = this.getById(housingEstateId);
+ if (housingEstate == null) {
+ throw new BizIllegalException("小区信息不存在");
+ }
+ return housingEstate;
+ }
+}
diff --git a/nxhs-service/src/main/resources/mapper/HousingEstateMapper.xml b/nxhs-service/src/main/resources/mapper/HousingEstateMapper.xml
new file mode 100644
index 0000000..6799e57
--- /dev/null
+++ b/nxhs-service/src/main/resources/mapper/HousingEstateMapper.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+