From 929bbd74135fd867537adc18a171491b83679090 Mon Sep 17 00:00:00 2001 From: Hentua <wangdoubleone@gmail.com> Date: Thu, 20 Apr 2023 15:47:57 +0800 Subject: [PATCH] 店铺列表 --- src/main/resources/mapper/modules/MallShopMapper.xml | 12 +++ src/main/java/cc/mrbird/febs/mall/vo/ApiShopVo.java | 38 ++++++++++++ src/main/java/cc/mrbird/febs/mall/controller/ApiMallShopController.java | 20 ++++++ pom.xml | 2 src/main/java/cc/mrbird/febs/mall/service/IMallShopService.java | 6 ++ src/main/java/cc/mrbird/febs/mall/dto/ApiShopDto.java | 28 +++++++++ src/main/java/cc/mrbird/febs/mall/entity/MallShop.java | 7 ++ src/main/java/cc/mrbird/febs/mall/service/impl/MallShopServiceImpl.java | 15 +++++ 8 files changed, 125 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index d146f33..3b06b94 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ <mybatis.plus.version>3.3.1</mybatis.plus.version> <swagger.ui>2.9.2</swagger.ui> <tomcat.version>9.0.31</tomcat.version> - <hutool.version>5.3.1</hutool.version> + <hutool.version>5.7.22</hutool.version> <aliyun-oss.version>3.8.0</aliyun-oss.version> <ijapy.version>2.7.8</ijapy.version> <mapstruct.version>1.3.1.Final</mapstruct.version> diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShopController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShopController.java index 54f8f15..ac438e7 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShopController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallShopController.java @@ -1,11 +1,20 @@ package cc.mrbird.febs.mall.controller; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.ApiShopDto; +import cc.mrbird.febs.mall.service.IMallShopService; +import cc.mrbird.febs.mall.vo.ApiShopVo; +import cc.mrbird.febs.mall.vo.OrderListVo; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -17,4 +26,15 @@ @RequestMapping(value = "/api/shop") @Api(value = "ApiMallShopController", tags = "店铺接口类") public class ApiMallShopController { + + private final IMallShopService mallShopService; + + @ApiOperation(value = "店铺列表", notes = "店铺列表") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiShopVo.class) + }) + @PostMapping(value = "/") + public FebsResponse shopList(ApiShopDto apiShopDto) { + return new FebsResponse().success().data(mallShopService.findShopList(apiShopDto)); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiShopDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiShopDto.java new file mode 100644 index 0000000..fc11caf --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiShopDto.java @@ -0,0 +1,28 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wzy + * @date 2023-04-20 + **/ +@Data +@ApiModel(value = "ApiShopDto", description = "接收参数类s") +public class ApiShopDto { + + @ApiModelProperty(value = "一页数量", example = "10") + private Integer pageSize; + + @ApiModelProperty(value = "第几页", example = "1") + private Integer pageNum; + + @ApiModelProperty(value = "经度") + private BigDecimal longitude; + + @ApiModelProperty(value = "纬度") + private BigDecimal latitude; +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallShop.java b/src/main/java/cc/mrbird/febs/mall/entity/MallShop.java index 6b06060..e1c9271 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallShop.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallShop.java @@ -1,6 +1,7 @@ package cc.mrbird.febs.mall.entity; import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @@ -23,4 +24,10 @@ private BigDecimal latitude; private Integer state; + + /** + * 距离 + */ + @TableField(exist = false) + private BigDecimal distance; } diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallShopService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallShopService.java index c5dad1a..a3612c0 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IMallShopService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IMallShopService.java @@ -1,11 +1,17 @@ package cc.mrbird.febs.mall.service; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.mall.dto.ApiShopDto; import cc.mrbird.febs.mall.entity.MallShop; +import cc.mrbird.febs.mall.vo.ShopListVo; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; public interface IMallShopService extends IService<MallShop> { IPage<MallShop> findShopListInPage(MallShop mallShop, QueryRequest request); + + List<ShopListVo> findShopList(ApiShopDto apiShopDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallShopServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallShopServiceImpl.java index 7d1d72d..6d5d39d 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallShopServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallShopServiceImpl.java @@ -1,15 +1,21 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.mall.dto.ApiShopDto; import cc.mrbird.febs.mall.entity.MallShop; import cc.mrbird.febs.mall.mapper.MallShopMapper; import cc.mrbird.febs.mall.service.IMallShopService; +import cc.mrbird.febs.mall.vo.ShopListVo; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; + +import java.util.List; @Slf4j @Service @@ -20,4 +26,13 @@ Page<MallShop> page = new Page<>(request.getPageNum(), request.getPageSize()); return this.baseMapper.selectShopListInPage(mallShop, page); } + + @Override + public List<ShopListVo> findShopList(ApiShopDto apiShopDto) { + Page<MallShop> page = new Page<>(apiShopDto.getPageNum(), apiShopDto.getPageSize()); + + MallShop mallShop = BeanUtil.copyProperties(apiShopDto, MallShop.class); + IPage<MallShop> list = this.baseMapper.selectShopListInPage(mallShop, page); + return BeanUtil.copyToList(list.getRecords(), ShopListVo.class); + } } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiShopVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiShopVo.java new file mode 100644 index 0000000..33b5ee5 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiShopVo.java @@ -0,0 +1,38 @@ +package cc.mrbird.febs.mall.vo; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wzy + * @date 2023-04-20 + **/ +@Data +@ApiModel(value = "ApiShopVo", description = "店铺列表") +public class ApiShopVo { + + @ApiModelProperty(value = "店铺名称") + private String shopName; + + @ApiModelProperty(value = "店铺缩略图") + private String shopImage; + + @ApiModelProperty(value = "店铺地址") + private String shopAddress; + + @ApiModelProperty(value = "联系方式") + private String phone; + + @ApiModelProperty(value = "经度") + private BigDecimal longitude; + + @ApiModelProperty(value = "纬度") + private BigDecimal latitude; + + @ApiModelProperty(value = "距离") + private BigDecimal distance; +} diff --git a/src/main/resources/mapper/modules/MallShopMapper.xml b/src/main/resources/mapper/modules/MallShopMapper.xml index fe9c97d..413eb6b 100644 --- a/src/main/resources/mapper/modules/MallShopMapper.xml +++ b/src/main/resources/mapper/modules/MallShopMapper.xml @@ -3,7 +3,10 @@ <mapper namespace="cc.mrbird.febs.mall.mapper.MallShopMapper"> <select id="selectShopListInPage" resultType="cc.mrbird.febs.mall.entity.MallShop"> - select * from mall_shop + select + a.*, + lat_lng_distance(#{record.latitude}, #{record.longitude}, a.latitude, a.longitude) distance + from mall_shop a <where> 1=1 <if test="record != null"> @@ -15,6 +18,11 @@ </if> </if> </where> - order by id desc + <if test="record.longitude != null and record.latitude != null"> + order by lat_lng_distance(#{record.latitude}, #{record.longitude}, a.latitude, a.longitude) desc + </if> + <if test="record.longitude == null or record.latitude == null"> + order by id desc + </if> </select> </mapper> \ No newline at end of file -- Gitblit v1.9.1