Просмотр исходного кода

调整bookDetail接口,用于“客户端获取去预约项目详情”

wangzhijun 5 дней назад
Родитель
Сommit
0735d3a15a

+ 1 - 1
nightFragrance-massage/src/main/java/com/ylx/project/controller/ProjectController.java

@@ -144,7 +144,7 @@ public class ProjectController {
     @PreAuthorize("@customerAuth.isCustomer()")
     @ApiOperation("客户端获取去预约项目详情")
     @PostMapping("/bookDetail")
-    public R<BookProjectDetailVO> getBookingProjectDetail(@RequestBody BookMerchantDTO dto) {
+    public R<BookProjectDetailVO> getBookingProjectDetail(@Validated @RequestBody BookMerchantDTO dto) {
         BookProjectDetailVO vo = projectService.getBookingProjectDetail(dto);
         return R.ok(vo);
     }

+ 2 - 2
nightFragrance-massage/src/main/java/com/ylx/project/domain/bookMerchant/dto/BookMerchantDTO.java

@@ -18,9 +18,9 @@ public class BookMerchantDTO extends Page implements Serializable {
     private Long projectId;
 
     @ApiModelProperty("经度")
-    private double longitude;
+    private String longitude;
 
     @ApiModelProperty("纬度")
-    private double latitude;
+    private String latitude;
 
 }

+ 2 - 0
nightFragrance-massage/src/main/java/com/ylx/project/domain/bookMerchant/vo/ProjectInfoVO.java

@@ -1,5 +1,6 @@
 package com.ylx.project.domain.bookMerchant.vo;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -30,6 +31,7 @@ public class ProjectInfoVO implements Serializable {
     @ApiModelProperty("项目亮点")
     private String highlight;
 
+    @JsonIgnore
     @ApiModelProperty("标价")
     private BigDecimal price;
 

+ 12 - 0
nightFragrance-massage/src/main/java/com/ylx/project/service/impl/ProjectServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ylx.project.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -214,6 +216,16 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         // 2. 查询商户列表
         Page<BookMerchantVO> page = maProjectService.selectMerchantList(new Page<>(dto.getCurrent(), dto.getSize()), dto);
 
+        // 3.判断数据中的currentPrice为null就设置为projectInfo的price
+        if (ObjectUtil.isNotNull(page) && CollUtil.isNotEmpty(page.getRecords())) {
+            for (BookMerchantVO merchantVO : page.getRecords()) {
+                BigDecimal price = merchantVO.getCurrentPrice();
+                // 为空 或者 等于0,统一赋值项目原价
+                if (ObjectUtil.isNull(price) || price.compareTo(BigDecimal.ZERO) == 0) {
+                    merchantVO.setCurrentPrice(projectInfo.getPrice());
+                }
+            }
+        }
         vo.setMerchantList(page);
         return vo;
     }

+ 17 - 18
nightFragrance-massage/src/main/resources/mapper/massage/MaProjectMapper.xml

@@ -224,33 +224,34 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         t.n_num AS servedCount,
         p.project_id AS projectId,
         p.project_current_price AS currentPrice,
-        <!-- 距离展示文本:米/千米格式化 -->
-        CASE calc.distanceMeter
-        WHEN 999999999 THEN '未知'
-        WHEN calc.distanceMeter &lt; 1000 THEN CONCAT(ROUND(calc.distanceMeter, 0), 'm')
-        ELSE CONCAT(ROUND(calc.distanceMeter / 1000, 2), 'km')
-        END AS distanceStr,
-        calc.distanceMeter AS distanceText
-        FROM ma_technician t
+        CASE
+        WHEN calc.distanceMeter = 999999999 THEN '未知'
+        WHEN calc.distanceMeter &lt; 1000 THEN CONCAT( ROUND( calc.distanceMeter, 0 ), 'm' )
+        ELSE CONCAT( ROUND( calc.distanceMeter / 1000, 2 ), 'km' )
+        END AS distanceText
+        FROM
+        ma_technician t
         INNER JOIN ma_project p ON t.id = p.merchant_id
         LEFT JOIN t_address addr ON t.id = addr.merchant_id AND addr.type = 1 AND addr.is_delete = 0
-        <!-- 子查询统一计算距离,消除公式重复 -->
         LEFT JOIN (
         SELECT
         addr_sub.id AS addrId,
-        <!-- 有用户坐标+技师有效坐标才计算距离,否则给超大值 -->
         <if test="dto.latitude != null and dto.longitude != null and dto.latitude != 0 and dto.longitude != 0">
-            IF(addr_sub.latitude IS NULL OR addr_sub.longitude IS NULL OR addr_sub.latitude=0 OR addr_sub.longitude=0,
+            IF(
+            addr_sub.latitude IS NULL OR addr_sub.longitude IS NULL OR addr_sub.latitude=0 OR addr_sub.longitude=0,
             999999999,
-            ROUND(6371 * ACOS(
+            ROUND(
+            6371 * ACOS(
             COS(RADIANS(#{dto.latitude})) * COS(RADIANS(addr_sub.latitude))
             * COS(RADIANS(addr_sub.longitude) - RADIANS(#{dto.longitude}))
             + SIN(RADIANS(#{dto.latitude})) * SIN(RADIANS(addr_sub.latitude))
-            ) * 1000)
+            ) * 1000
+            )
+            ) AS distanceMeter
         </if>
         <if test="dto.latitude == null or dto.longitude == null or dto.latitude == 0 or dto.longitude == 0">
-            999999999
-        </if> AS distanceMeter
+            999999999 AS distanceMeter
+        </if>
         FROM t_address addr_sub
         ) calc ON addr.id = calc.addrId
 
@@ -258,13 +259,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         p.project_id = #{dto.projectId}
         AND p.audit_status = 1
         AND p.is_delete = 0
-        AND addr.latitude != 0 AND addr.longitude != 0
 
-        <!-- 动态排序 -->
         <trim prefix="ORDER BY">
             <choose>
                 <when test="dto.latitude != null and dto.longitude != null and dto.latitude != 0 and dto.longitude != 0">
-                    distanceMeter ASC, t.n_num DESC
+                    calc.distanceMeter ASC, t.n_num DESC
                 </when>
                 <otherwise>
                     t.n_num DESC