Jelajahi Sumber

首页推荐项目接口、首页按摩商户推荐优化

郭子栋 1 Minggu lalu
induk
melakukan
8ed69fe588

+ 14 - 7
nightFragrance-massage/src/main/java/com/ylx/massage/controller/MassageRecommendController.java

@@ -1,10 +1,10 @@
 package com.ylx.massage.controller;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.domain.R;
-import com.ylx.massage.domain.dto.MassageRecommendDto;
-import com.ylx.massage.domain.vo.MassageRecommendVo;
+import com.ylx.massage.domain.dto.MassageMerchantRecommendDto;
+import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.domain.vo.MerchantVo;
-import com.ylx.massage.service.IMaTechnicianService;
 import com.ylx.massage.service.IMassageRecommendService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -30,10 +30,17 @@ public class MassageRecommendController {
     @Autowired
     private IMassageRecommendService massageRecommendService;
 
-    @ApiOperation(value="首页按摩推荐", notes="首页按摩推荐")
-    @PostMapping(value = "/getMassageRecommend")
-    public R<List<MassageRecommendVo>> getMassageRecommend(@RequestBody MassageRecommendDto dto) {
-        List<MassageRecommendVo> massageRecommendVos = massageRecommendService.getMassageRecommend(dto);
+    @ApiOperation(value="首页按摩商户推荐", notes="首页按摩商户推荐")
+    @PostMapping(value = "/getMerchantRecommend")
+    public R<List<MerchantVo>> getMerchantRecommend(@RequestBody MassageMerchantRecommendDto dto) {
+        List<MerchantVo> massageRecommendVos = massageRecommendService.getMerchantRecommend(dto);
         return R.ok(massageRecommendVos);
     }
+
+    @ApiOperation(value="首页按摩项目推荐", notes="首页按摩项目推荐")
+    @GetMapping(value = "/getMassageProjectRecommend")
+    public R<Page<MassageProjectRecommendVo>> getMassageProjectRecommend(@RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize) {
+        Page<MassageProjectRecommendVo> page = new Page<>(pageNo, pageSize);
+        return R.ok( massageRecommendService.getMassageProjectRecommend(page));
+    }
 }

+ 5 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/AfterSaleOrder.java

@@ -27,6 +27,11 @@ public class AfterSaleOrder implements Serializable {
     /** 用户openId */
     private String openId;
 
+    /**
+     * 用户Id
+     */
+    private String userId;
+
     /**
      * 售后类型
      * 1退货 2换货 3:未收到货

+ 1 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/domain/dto/MassageRecommendDto.java → nightFragrance-massage/src/main/java/com/ylx/massage/domain/dto/MassageMerchantRecommendDto.java

@@ -1,6 +1,5 @@
 package com.ylx.massage.domain.dto;
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -14,7 +13,7 @@ import java.math.BigDecimal;
  * @date 2026/6/2 16:41
  */
 @Data
-public class MassageRecommendDto {
+public class MassageMerchantRecommendDto {
     /**
      * 经度
      * 用户当前位置的经度坐标

+ 38 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/MassageProjectRecommendVo.java

@@ -0,0 +1,38 @@
+package com.ylx.massage.domain.vo;
+
+import com.ylx.common.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 类描述:首页按摩推荐项目
+ *
+ * @author Administrator
+ * @version 1.0
+ * @date 2026/6/3 15:43
+ */
+@Data
+public class MassageProjectRecommendVo {
+    @ApiModelProperty("商户技能表id")
+    private Long id;
+
+    /** 项目名称 */
+    @ApiModelProperty("项目名称")
+    private String projectName;
+
+    /** 项目时长(分) */
+    @ApiModelProperty("项目时长(分)")
+    private Long projectDuration;
+
+    @ApiModelProperty("销量")
+    private Integer sales;
+
+    @ApiModelProperty("均价")
+    private BigDecimal avgCurrentPrice;
+
+    @ApiModelProperty("亮点")
+    private String highlight;
+
+}

+ 11 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/mapper/MaProjectMapper.java

@@ -1,7 +1,11 @@
 package com.ylx.massage.mapper;
 
 import java.util.List;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.massage.domain.MaProject;
+import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 服务项目Mapper接口
@@ -58,4 +62,11 @@ public interface MaProjectMapper
      * @return 结果
      */
     public int deleteMaProjectByIds(String[] ids);
+
+    /**
+     * 首页项目推荐
+     * @param page
+     * @return
+     */
+    Page<MassageProjectRecommendVo> getMassageProjectRecommend(@Param("page") Page<MassageProjectRecommendVo> page);
 }

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

@@ -4,7 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.ylx.massage.domain.MaTechnician;
-import com.ylx.massage.domain.dto.MassageRecommendDto;
+import com.ylx.massage.domain.dto.MassageMerchantRecommendDto;
 import com.ylx.massage.domain.vo.MerchantVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -64,5 +64,5 @@ public interface MaTechnicianMapper extends BaseMapper<MaTechnician>
      */
     public int deleteMaTechnicianByIds(Long[] ids);
 
-    List<MerchantVo> getMerchantRecommend(@Param("dto") MassageRecommendDto dto);
+    List<MerchantVo> getMerchantRecommend(@Param("dto") MassageMerchantRecommendDto dto);
 }

+ 4 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/IMaProjectService.java

@@ -2,10 +2,12 @@ package com.ylx.massage.service;
 
 import java.util.List;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.domain.model.LoginUser;
 import com.ylx.massage.domain.MaProject;
 import com.ylx.massage.domain.vo.MaProjectListVo;
 import com.ylx.massage.domain.vo.MaProjectSaveVo;
+import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 
 /**
  * 服务项目Service接口
@@ -62,4 +64,6 @@ public interface IMaProjectService
      * @return 结果
      */
     public int deleteMaProjectById(Long id);
+
+    Page<MassageProjectRecommendVo> getMassageProjectRecommend(Page<MassageProjectRecommendVo> page);
 }

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

@@ -2,9 +2,8 @@ package com.ylx.massage.service;
 
 import java.util.List;
 import com.ylx.massage.domain.MaTechnician;
-import com.ylx.massage.domain.dto.MassageRecommendDto;
+import com.ylx.massage.domain.dto.MassageMerchantRecommendDto;
 import com.ylx.massage.domain.vo.MaTechnicianAppAddVo;
-import com.ylx.massage.domain.vo.MassageRecommendVo;
 import com.ylx.massage.domain.vo.MerchantVo;
 
 /**
@@ -70,5 +69,5 @@ public interface IMaTechnicianService
      */
     Boolean isHasMerchantCity(String areaCode);
 
-    List<MerchantVo> getMerchantRecommend(MassageRecommendDto dto);
+    List<MerchantVo> getMerchantRecommend(MassageMerchantRecommendDto dto);
 }

+ 7 - 3
nightFragrance-massage/src/main/java/com/ylx/massage/service/IMassageRecommendService.java

@@ -1,10 +1,14 @@
 package com.ylx.massage.service;
 
-import com.ylx.massage.domain.dto.MassageRecommendDto;
-import com.ylx.massage.domain.vo.MassageRecommendVo;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.massage.domain.dto.MassageMerchantRecommendDto;
+import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
+import com.ylx.massage.domain.vo.MerchantVo;
 
 import java.util.List;
 
 public interface IMassageRecommendService {
-    List<MassageRecommendVo> getMassageRecommend(MassageRecommendDto dto);
+    List<MerchantVo> getMerchantRecommend(MassageMerchantRecommendDto dto);
+
+    Page<MassageProjectRecommendVo> getMassageProjectRecommend(Page<MassageProjectRecommendVo> page);
 }

+ 8 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/MaProjectServiceImpl.java

@@ -3,11 +3,13 @@ package com.ylx.massage.service.impl;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.domain.model.LoginUser;
 import com.ylx.common.utils.DateUtils;
 import com.ylx.common.utils.bean.BeanUtils;
 import com.ylx.massage.domain.vo.MaProjectListVo;
 import com.ylx.massage.domain.vo.MaProjectSaveVo;
+import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.mapper.MaProjectMapper;
 import org.apache.commons.compress.utils.Lists;
 import org.springframework.stereotype.Service;
@@ -127,4 +129,10 @@ public class MaProjectServiceImpl implements IMaProjectService
     {
         return maProjectMapper.deleteMaProjectById(id);
     }
+
+    @Override
+    public Page<MassageProjectRecommendVo> getMassageProjectRecommend(Page<MassageProjectRecommendVo> page) {
+        return maProjectMapper.getMassageProjectRecommend(page);
+    }
+
 }

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

@@ -3,9 +3,8 @@ package com.ylx.massage.service.impl;
 import java.util.List;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.ylx.massage.domain.dto.MassageRecommendDto;
+import com.ylx.massage.domain.dto.MassageMerchantRecommendDto;
 import com.ylx.massage.domain.vo.MaTechnicianAppAddVo;
-import com.ylx.massage.domain.vo.MassageRecommendVo;
 import com.ylx.massage.domain.vo.MerchantVo;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -140,7 +139,7 @@ public class MaTechnicianServiceImpl implements IMaTechnicianService
      * @return
      */
     @Override
-    public List<MerchantVo> getMerchantRecommend(MassageRecommendDto dto) {
+    public List<MerchantVo> getMerchantRecommend(MassageMerchantRecommendDto dto) {
         return maTechnicianMapper.getMerchantRecommend(dto);
     }
 }

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

@@ -1,8 +1,10 @@
 package com.ylx.massage.service.impl;
 
-import com.ylx.massage.domain.dto.MassageRecommendDto;
-import com.ylx.massage.domain.vo.MassageRecommendVo;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ylx.massage.domain.dto.MassageMerchantRecommendDto;
+import com.ylx.massage.domain.vo.MassageProjectRecommendVo;
 import com.ylx.massage.domain.vo.MerchantVo;
+import com.ylx.massage.service.IMaProjectService;
 import com.ylx.massage.service.IMaTechnicianService;
 import com.ylx.massage.service.IMassageRecommendService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,10 +23,18 @@ import java.util.List;
 public class MassageRecommendServiceImpl implements IMassageRecommendService {
     @Autowired
     private IMaTechnicianService iMaTechnicianService;
+
+    @Autowired
+    private IMaProjectService iMaProjectService;
+
     @Override
-    public List<MassageRecommendVo> getMassageRecommend(MassageRecommendDto dto) {
+    public List<MerchantVo> getMerchantRecommend(MassageMerchantRecommendDto dto) {
         //按摩商户推荐
-        List<MerchantVo> merchantVoList = iMaTechnicianService.getMerchantRecommend(dto);
-       return null;
+        return iMaTechnicianService.getMerchantRecommend(dto);
+    }
+
+    @Override
+    public Page<MassageProjectRecommendVo> getMassageProjectRecommend(Page<MassageProjectRecommendVo> page) {
+        return iMaProjectService.getMassageProjectRecommend(page);
     }
 }

+ 40 - 0
nightFragrance-massage/src/main/resources/mapper/massage/MaProjectMapper.xml

@@ -118,4 +118,44 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <!-- 推荐项目-->
+    <select id="getMassageProjectRecommend" resultType="com.ylx.massage.domain.vo.MassageProjectRecommendVo">
+        SELECT
+            p.project_name AS projectName,
+            p.project_duration AS projectDuration,
+            t.avg_current_price AS avgCurrentPrice,
+            j.highlight AS highlight,
+            o.sales AS sales
+        FROM (
+                 SELECT MIN(id) AS id
+                 FROM ma_project
+                 WHERE is_delete = 0 AND audit_status = 1
+                 GROUP BY project_id
+             ) AS keep
+                 INNER JOIN ma_project p ON keep.id = p.id
+                 LEFT JOIN project j ON p.project_id = j.id
+                 LEFT JOIN (
+            SELECT
+                t.project_id,
+                AVG(t.project_current_price) AS avg_current_price
+            FROM ma_project t
+            WHERE t.is_delete = 0
+            GROUP BY t.project_id
+        ) t ON p.project_id = t.project_id
+        LEFT JOIN
+             (
+                 SELECT
+                     o.project_id AS project_id,
+                     COUNT(*) AS sales
+                 FROM
+                     t_order o
+                 WHERE o.is_delete = 0
+                   AND o.n_status = 7
+                   AND o.project_type = 1
+                 GROUP BY o.project_id
+             ) o
+             ON p.project_id = o.project_id
+        WHERE p.is_delete = 0
+        and p.audit_status = 1
+    </select>
 </mapper>

+ 2 - 0
nightFragrance-massage/src/main/resources/mapper/massage/MaTechnicianMapper.xml

@@ -151,6 +151,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
         WHERE
         t.is_delete = 0
+        and t.openService = 1
+        and t.audit_status = 2
         and a.user_type = 2
         and a.type = 1
         and a.is_delete = 0