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 @@ + + + + + + + +