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

Merge remote-tracking branch 'origin/dev' into dev

郭子栋 5 дней назад
Родитель
Сommit
3b2a11f2ff

+ 2 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/mapper/MaProjectMapper.java

@@ -8,6 +8,7 @@ import com.ylx.massage.domain.MaProject;
 import com.ylx.massage.domain.dto.MassageAllMerchantsDto;
 import com.ylx.massage.domain.dto.MassageAllMerchantsDto;
 import com.ylx.massage.domain.vo.MassageAllMerchantsVo;
 import com.ylx.massage.domain.vo.MassageAllMerchantsVo;
 import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
+import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
 import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
@@ -78,5 +79,5 @@ public interface MaProjectMapper extends BaseMapper<MaProject> {
 
 
     Page<MassageAllMerchantsVo> getMassageAllMerchants(@Param("page") Page<MassageAllMerchantsVo> page, @Param("dto") MassageAllMerchantsDto dto);
     Page<MassageAllMerchantsVo> getMassageAllMerchants(@Param("page") Page<MassageAllMerchantsVo> page, @Param("dto") MassageAllMerchantsDto dto);
 
 
-    Page<BookMerchantVO> selectMerchantList(@Param("page") Page<BookMerchantVO> page, @Param("projectId") Long projectId);
+    Page<BookMerchantVO> selectMerchantList(@Param("page") Page<BookMerchantVO> page, @Param("dto") BookMerchantDTO dto);
 }
 }

+ 2 - 1
nightFragrance-massage/src/main/java/com/ylx/massage/service/IMaProjectService.java

@@ -11,6 +11,7 @@ import com.ylx.massage.domain.vo.MaProjectListVo;
 import com.ylx.massage.domain.vo.MaProjectSaveVo;
 import com.ylx.massage.domain.vo.MaProjectSaveVo;
 import com.ylx.massage.domain.vo.MassageAllMerchantsVo;
 import com.ylx.massage.domain.vo.MassageAllMerchantsVo;
 import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
+import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
 import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
@@ -74,5 +75,5 @@ public interface IMaProjectService extends IService<MaProject>
 
 
     Page<MassageAllMerchantsVo> getMassageAllMerchants(Page<MassageAllMerchantsVo> page, MassageAllMerchantsDto dto);
     Page<MassageAllMerchantsVo> getMassageAllMerchants(Page<MassageAllMerchantsVo> page, MassageAllMerchantsDto dto);
 
 
-    Page<BookMerchantVO> selectMerchantList(Page<BookMerchantVO> page, Long projectId);
+    Page<BookMerchantVO> selectMerchantList(Page<BookMerchantVO> page, BookMerchantDTO dto);
 }
 }

+ 3 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/MaProjectServiceImpl.java

@@ -14,6 +14,7 @@ import com.ylx.massage.domain.vo.MaProjectSaveVo;
 import com.ylx.massage.domain.vo.MassageAllMerchantsVo;
 import com.ylx.massage.domain.vo.MassageAllMerchantsVo;
 import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.mapper.MaProjectMapper;
 import com.ylx.massage.mapper.MaProjectMapper;
+import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
 import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import org.apache.commons.compress.utils.Lists;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -145,8 +146,8 @@ public class MaProjectServiceImpl extends ServiceImpl<MaProjectMapper, MaProject
     }
     }
 
 
     @Override
     @Override
-    public Page<BookMerchantVO> selectMerchantList(Page<BookMerchantVO> page, Long projectId) {
-        return maProjectMapper.selectMerchantList(page, projectId);
+    public Page<BookMerchantVO> selectMerchantList(Page<BookMerchantVO> page, BookMerchantDTO dto) {
+        return maProjectMapper.selectMerchantList(page, dto);
     }
     }
 
 
 }
 }

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

@@ -7,6 +7,7 @@ import com.ylx.common.enums.BusinessType;
 import com.ylx.common.exception.ServiceException;
 import com.ylx.common.exception.ServiceException;
 import com.ylx.project.domain.Project;
 import com.ylx.project.domain.Project;
 import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
 import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
+import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import com.ylx.project.domain.bookMerchant.vo.BookProjectDetailVO;
 import com.ylx.project.domain.bookMerchant.vo.BookProjectDetailVO;
 import com.ylx.project.domain.dto.ProjectAddDTO;
 import com.ylx.project.domain.dto.ProjectAddDTO;
 import com.ylx.project.domain.dto.ProjectSearchDTO;
 import com.ylx.project.domain.dto.ProjectSearchDTO;
@@ -143,7 +144,7 @@ public class ProjectController {
     @PreAuthorize("@customerAuth.isCustomer()")
     @PreAuthorize("@customerAuth.isCustomer()")
     @ApiOperation("客户端获取去预约项目详情")
     @ApiOperation("客户端获取去预约项目详情")
     @PostMapping("/bookDetail")
     @PostMapping("/bookDetail")
-    public R<BookProjectDetailVO> getBookingProjectDetail(BookMerchantDTO dto) {
+    public R<BookProjectDetailVO> getBookingProjectDetail(@Validated @RequestBody BookMerchantDTO dto) {
         BookProjectDetailVO vo = projectService.getBookingProjectDetail(dto);
         BookProjectDetailVO vo = projectService.getBookingProjectDetail(dto);
         return R.ok(vo);
         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;
     private Long projectId;
 
 
     @ApiModelProperty("经度")
     @ApiModelProperty("经度")
-    private double longitude;
+    private String longitude;
 
 
     @ApiModelProperty("纬度")
     @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;
 package com.ylx.project.domain.bookMerchant.vo;
 
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.Data;
@@ -30,6 +31,7 @@ public class ProjectInfoVO implements Serializable {
     @ApiModelProperty("项目亮点")
     @ApiModelProperty("项目亮点")
     private String highlight;
     private String highlight;
 
 
+    @JsonIgnore
     @ApiModelProperty("标价")
     @ApiModelProperty("标价")
     private BigDecimal price;
     private BigDecimal price;
 
 

+ 1 - 0
nightFragrance-massage/src/main/java/com/ylx/project/service/ProjectService.java

@@ -9,6 +9,7 @@ import com.ylx.massage.domain.vo.ProductOptionVO;
 import com.ylx.massage.domain.vo.ProductServiceOptionVO;
 import com.ylx.massage.domain.vo.ProductServiceOptionVO;
 import com.ylx.project.domain.Project;
 import com.ylx.project.domain.Project;
 import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
 import com.ylx.project.domain.bookMerchant.dto.BookMerchantDTO;
+import com.ylx.project.domain.bookMerchant.vo.BookMerchantVO;
 import com.ylx.project.domain.bookMerchant.vo.BookProjectDetailVO;
 import com.ylx.project.domain.bookMerchant.vo.BookProjectDetailVO;
 import com.ylx.project.domain.dto.ProjectAddDTO;
 import com.ylx.project.domain.dto.ProjectAddDTO;
 import com.ylx.project.domain.dto.ProjectSearchDTO;
 import com.ylx.project.domain.dto.ProjectSearchDTO;

+ 15 - 5
nightFragrance-massage/src/main/java/com/ylx/project/service/impl/ProjectServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ylx.project.service.impl;
 package com.ylx.project.service.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.StrUtil;
@@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.util.List;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
@@ -212,11 +214,19 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         vo.setProjectInfo(projectInfo);
         vo.setProjectInfo(projectInfo);
 
 
         // 2. 查询商户列表
         // 2. 查询商户列表
-        Page<BookMerchantVO> page = new Page<>(dto.getCurrent(), dto.getSize());
-        Page<BookMerchantVO> merchantList = maProjectService.selectMerchantList(page, projectId);
-
-
-        vo.setMerchantList(merchantList);
+        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;
         return vo;
     }
     }
 
 

+ 55 - 14
nightFragrance-massage/src/main/resources/mapper/massage/MaProjectMapper.xml

@@ -218,21 +218,62 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ) AS sub
         ) AS sub
         ORDER BY nNum DESC  -- 或者 nNum DESC
         ORDER BY nNum DESC  -- 或者 nNum DESC
     </select>
     </select>
+
     <select id="selectMerchantList" resultType="com.ylx.project.domain.bookMerchant.vo.BookMerchantVO">
     <select id="selectMerchantList" resultType="com.ylx.project.domain.bookMerchant.vo.BookMerchantVO">
         SELECT
         SELECT
-            mp.id,
-            mp.merchant_id AS merchantId,
-            m.te_nick_name AS merchantNickName,
-            m.te_avatar AS merchantAvatar,
-            m.n_star AS merchantStar,
-            mp.project_current_price AS currentPrice,
-            mp.project_users_num AS servedCount
-        FROM ma_project mp
-        LEFT JOIN ma_technician m ON mp.merchant_id = m.id
-        WHERE mp.project_id = #{projectId}
-          AND mp.audit_status = 1      -- 仅展示审核通过的
-          AND mp.project_is_enable = 0 -- 未申请下架
-          AND mp.is_delete = 0
-        ORDER BY mp.project_users_num DESC -- 按真实销量降序排列
+        p.id,
+        t.id AS merchantId,
+        t.te_nick_name AS merchantNickName,
+        t.te_avatar AS merchantAvatar,
+        t.n_star AS merchantStar,
+        t.n_num AS servedCount,
+        p.project_id AS projectId,
+        p.project_current_price AS currentPrice,
+        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,
+            999999999,
+            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
+            )
+            ) AS distanceMeter
+        </if>
+        <if test="dto.latitude == null or dto.longitude == null or dto.latitude == 0 or dto.longitude == 0">
+            999999999 AS distanceMeter
+        </if>
+        FROM t_address addr_sub
+        ) calc ON addr.id = calc.addrId
+
+        WHERE
+        p.project_id = #{dto.projectId}
+        AND p.audit_status = 1
+        AND p.is_delete = 0
+
+        <trim prefix="ORDER BY">
+            <choose>
+                <when test="dto.latitude != null and dto.longitude != null and dto.latitude != 0 and dto.longitude != 0">
+                    calc.distanceMeter ASC, t.n_num DESC
+                </when>
+                <otherwise>
+                    t.n_num DESC
+                </otherwise>
+            </choose>
+        </trim>
     </select>
     </select>
 </mapper>
 </mapper>