Browse Source

refactor(app): 重构 AppHomeController 和 AppHomeService

- 将 getPlaceList 方法从 UserService 移动到 AppHomeService
- 新增 AppSearchHot 相关的实体、Mapper 和 Service
- 修改 InstructorVO 中的 CourseInfoVO 类
- 删除 UserService 中的 getPlaceList 方法
SheepHy 3 weeks ago
parent
commit
05f981004b
11 changed files with 281 additions and 60 deletions
  1. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/AppHomeController.java
  2. 12 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IAppHomeService.java
  3. 0 12
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IUserService.java
  4. 37 8
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java
  5. 0 38
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/UserServiceImpl.java
  6. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/InstructorVO.java
  7. 162 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/SearchVO.java
  8. 43 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSearchHot.java
  9. 7 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSearchHotMapper.java
  10. 7 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSearchHotService.java
  11. 11 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSearchHotServiceImpl.java

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/AppHomeController.java

@@ -68,6 +68,6 @@ public class AppHomeController {
     @PostMapping("/getPlaceList")
     @Operation(summary = "场地列表查询")
     public Result<Page<PlaceVO>> getPlaceList(@RequestBody GetPlaceListDTO getPlaceListDTO){
-        return Result.ok(userService.getPlaceList(getPlaceListDTO));
+        return Result.ok(appHomeService.getPlaceList(getPlaceListDTO));
     }
 }

+ 12 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IAppHomeService.java

@@ -1,7 +1,10 @@
 package org.jeecg.modules.app.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.app.dto.GetPlaceListDTO;
 import org.jeecg.modules.app.vo.AppBannerVO;
 import org.jeecg.modules.app.vo.HomeVO;
+import org.jeecg.modules.app.vo.PlaceVO;
 
 public interface IAppHomeService {
 
@@ -12,4 +15,13 @@ public interface IAppHomeService {
      * @return {@link AppBannerVO}
      **/
     HomeVO homeInfo();
+
+    /**
+     * @Author SheepHy
+     * @Description 场地列表查询
+     * @Date 10:37 2025/7/4
+     * @Param
+     * @return
+     **/
+    Page<PlaceVO> getPlaceList(GetPlaceListDTO getPlaceListDTO);
 }

+ 0 - 12
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IUserService.java

@@ -1,11 +1,8 @@
 package org.jeecg.modules.app.service;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.jeecg.modules.app.dto.GetPlaceListDTO;
 import org.jeecg.modules.app.vo.LoginUserVO;
 import org.jeecg.modules.app.vo.MsgInfoVO;
 import org.jeecg.modules.app.vo.MsgVO;
-import org.jeecg.modules.app.vo.PlaceVO;
 
 import java.util.List;
 
@@ -37,13 +34,4 @@ public interface IUserService {
      **/
     MsgInfoVO getMsgInfo(String id);
 
-    /**
-     * @Author SheepHy
-     * @Description 场地列表查询
-     * @Date 10:37 2025/7/4
-     * @Param
-     * @return
-     **/
-    Page<PlaceVO> getPlaceList(GetPlaceListDTO getPlaceListDTO);
-
 }

+ 37 - 8
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java

@@ -1,17 +1,14 @@
 package org.jeecg.modules.app.service.impl;
 
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.jeecg.modules.app.dto.GetPlaceListDTO;
 import org.jeecg.modules.app.service.IAppHomeService;
-import org.jeecg.modules.app.vo.AppBannerVO;
-import org.jeecg.modules.app.vo.CoureseVO;
-import org.jeecg.modules.app.vo.HomeVO;
-import org.jeecg.modules.app.vo.InstructorVO;
+import org.jeecg.modules.app.vo.*;
 import org.jeecg.modules.system.app.entity.AppBanner;
 import org.jeecg.modules.system.app.entity.AppCourese;
 import org.jeecg.modules.system.app.entity.AppInstructor;
-import org.jeecg.modules.system.app.mapper.AppBannerMapper;
-import org.jeecg.modules.system.app.mapper.AppCoureseMapper;
-import org.jeecg.modules.system.app.mapper.AppInstructorMapper;
+import org.jeecg.modules.system.app.mapper.*;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.mapper.SysDepartMapper;
@@ -21,6 +18,7 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
@@ -38,6 +36,10 @@ public class AppHomeServiceImpl implements IAppHomeService {
     private SysUserMapper sysUserMapper;
     @Resource
     private SysDepartMapper sysDepartMapper;
+    @Resource
+    private AppSiteMapper appSiteMapper;
+    @Resource
+    private AppCategoryMapper appCategoryMapper;
 
     @Override
     public HomeVO homeInfo() {
@@ -95,7 +97,7 @@ public class AppHomeServiceImpl implements IAppHomeService {
 
             List<InstructorVO.CourseInfoVO> courseInfoVOS = courses.stream()
                     .map(course -> {
-                        InstructorVO.CourseInfoVO vo = instructorVO.new CourseInfoVO();
+                        InstructorVO.CourseInfoVO vo = new InstructorVO.CourseInfoVO();
                         BeanUtils.copyProperties(vo, course);
                         return vo;
                     })
@@ -134,4 +136,31 @@ public class AppHomeServiceImpl implements IAppHomeService {
                         .setSellingPrice(courese.getSellingPrice()))
                 .collect(Collectors.toList());
     }
+
+    @Override
+    public Page<PlaceVO> getPlaceList(GetPlaceListDTO getPlaceListDTO) {
+        Page<PlaceVO> page = new Page<>(getPlaceListDTO.getCurrent(), getPlaceListDTO.getSize());
+        Page<PlaceVO> placeList = appSiteMapper.getPlaceList(page, getPlaceListDTO.getVenueType());
+        placeList.getRecords().forEach(placeVO -> {
+            List<String> list = new ArrayList<>();
+            String[] split = placeVO.getCategoryId().split(",");
+            Arrays.stream(split).forEach(id -> {
+                list.add(appCategoryMapper.selectById(id).getName());
+            });
+            //todo 待申请第三方地图接口
+            placeVO.setKm(0.0)
+                    .setCategory(list);
+        });
+        if(getPlaceListDTO.getVenueType().equals("1")
+                || getPlaceListDTO.getVenueType().equals("2")
+                || getPlaceListDTO.getVenueType().equals("3")){
+            // 按 km 升序排序(从近到远)
+            placeList.getRecords().sort((p1, p2) -> {
+                Double km1 = p1.getKm();
+                Double km2 = p2.getKm();
+                return km1.compareTo(km2);
+            });
+        }
+        return placeList;
+    }
 }

+ 0 - 38
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/UserServiceImpl.java

@@ -4,7 +4,6 @@ import cn.binarywang.wx.miniapp.api.WxMaService;
 import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
 import cn.binarywang.wx.miniapp.util.WxMaConfigHolder;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.log4j.Log4j2;
 import me.chanjar.weixin.common.error.WxErrorException;
 import org.apache.shiro.SecurityUtils;
@@ -12,14 +11,10 @@ import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.util.JwtUtil;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.RedisUtil;
-import org.jeecg.modules.app.dto.GetPlaceListDTO;
 import org.jeecg.modules.app.service.IUserService;
 import org.jeecg.modules.app.vo.LoginUserVO;
 import org.jeecg.modules.app.vo.MsgInfoVO;
 import org.jeecg.modules.app.vo.MsgVO;
-import org.jeecg.modules.app.vo.PlaceVO;
-import org.jeecg.modules.system.app.mapper.AppCategoryMapper;
-import org.jeecg.modules.system.app.mapper.AppSiteMapper;
 import org.jeecg.modules.system.entity.SysAnnouncement;
 import org.jeecg.modules.system.entity.SysAnnouncementSend;
 import org.jeecg.modules.system.entity.SysUser;
@@ -31,7 +26,6 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 import static org.jeecg.common.constant.CommonConstant.PREFIX_USER_TOKEN;
@@ -49,10 +43,6 @@ public class UserServiceImpl implements IUserService {
     @Resource
     private SysAnnouncementMapper sysAnnouncementMapper;
     @Resource
-    private AppSiteMapper appSiteMapper;
-    @Resource
-    private AppCategoryMapper appCategoryMapper;
-    @Resource
     private RedisUtil redisUtil;
 
     @Override
@@ -110,34 +100,6 @@ public class UserServiceImpl implements IUserService {
         return msgInfoVO;
     }
 
-    @Override
-    public Page<PlaceVO> getPlaceList(GetPlaceListDTO getPlaceListDTO) {
-        Page<PlaceVO> page = new Page<>(getPlaceListDTO.getCurrent(), getPlaceListDTO.getSize());
-        Page<PlaceVO> placeList = appSiteMapper.getPlaceList(page, getPlaceListDTO.getVenueType());
-        placeList.getRecords().forEach(placeVO -> {
-            List<String> list = new ArrayList<>();
-            String[] split = placeVO.getCategoryId().split(",");
-            Arrays.stream(split).forEach(id -> {
-                list.add(appCategoryMapper.selectById(id).getName());
-            });
-            //todo 待申请第三方地图接口
-            placeVO.setKm(0.0)
-                    .setCategory(list);
-        });
-        if(getPlaceListDTO.getVenueType().equals("1")
-                || getPlaceListDTO.getVenueType().equals("2")
-                || getPlaceListDTO.getVenueType().equals("3")){
-            // 按 km 升序排序(从近到远)
-            placeList.getRecords().sort((p1, p2) -> {
-                Double km1 = p1.getKm();
-                Double km2 = p2.getKm();
-                return km1.compareTo(km2);
-            });
-        }
-        return placeList;
-    }
-
-
 
     private LoginUserVO generateLoginUserVO(SysUser user) {
         String orgCode = user.getOrgCode().substring(0, 3);

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/InstructorVO.java

@@ -37,7 +37,7 @@ public class InstructorVO {
     @Accessors(chain = true)
     @EqualsAndHashCode(callSuper = false)
     @Schema(description="教练课程信息返回参数")
-    public class CourseInfoVO {
+    public static class CourseInfoVO {
         @Schema(description = "主键id")
         private String id;
         @Schema(description = "课程名称")

+ 162 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/SearchVO.java

@@ -0,0 +1,162 @@
+package org.jeecg.modules.app.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="全局搜索信息返回参数")
+public class SearchVO{
+    @Schema(description="全局搜索场地分页返回参数")
+    private List<SearchPlaceVO> searchPlaceList;
+    @Schema(description="全局搜索培训分页返回参数")
+    private List<SearchTrainVO> searchTrainVOList;
+    @Schema(description="全局搜索赛事分页返回参数")
+    private List<SearchRaceVO> searchRaceVOList;
+    @Schema(description="全局搜索教练分页返回参数")
+    private List<SearchInstructorVO> searchInstructorVOList;
+
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="全局搜索教练分页返回参数")
+    public static class SearchInstructorVO {
+        @Schema(description = "主键id")
+        private String id;
+        @Schema(description = "教练名称")
+        private String name;
+        @Schema(description = "教练头像")
+        private String avatar;
+        @Schema(description = "所属部门名称")
+        private String orgName;
+        @Schema(description = "擅长说明")
+        private String excelMsg;
+        @Schema(description = "教学理念")
+        private String teachingPhilosophy;
+        @Schema(description = "好评率")
+        private String goodRate;
+        @Schema(description = "订单数")
+        private String orderCount;
+        @Schema(description = "授课人数")
+        private String teachingCount;
+        @Schema(description = "课程列表")
+        private List<CourseInfoVO> courseList;
+    }
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="教练课程信息返回参数")
+    public static class CourseInfoVO {
+        @Schema(description = "主键id")
+        private String id;
+        @Schema(description = "课程名称")
+        private String name;
+        @Schema(description = "课程价格")
+        private String sellingPrice;
+        @Schema(description = "课程类型")
+        private String type;
+        @Schema(description = "课程简介")
+        private String intro;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="全局搜索赛事分页返回参数")
+    public static class SearchRaceVO{
+        @Schema(description = "主键id")
+        private String id;
+        @Schema(description = "名称")
+        private String name;
+        @Schema(description = "课程原价")
+        private BigDecimal originalPrice;
+        @Schema(description = "课程售价")
+        private BigDecimal sellingPrice;
+        @Schema(description = "图片")
+        private String cover;
+        @Schema(description = "类目")
+        private String categoryId;
+        @Schema(description = "开始时间")
+        private java.util.Date startTime;
+        @Schema(description = "结束时间")
+        private java.util.Date endTime;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="全局搜索培训分页返回参数")
+    public static class SearchTrainVO extends PlaceVO{
+        @Schema(description = "id")
+        private String id;
+        @Schema(description = "名称")
+        private String name;
+        @Schema(description = "课程类型")
+        private int priceType;
+        @Schema(description = "课程介绍")
+        private String reminder;
+        @Schema(description = "课程原价")
+        private BigDecimal originalPrice;
+        @Schema(description = "课程售价")
+        private BigDecimal sellingPrice;
+        @Schema(description = "好评率")
+        private BigDecimal goodRate;
+        @Schema(description = "评论数")
+        private String comments;
+        @Schema(description = "退款类型")
+        private int refundType;
+        @Schema(description = "地址")
+        private String address;
+        @Schema(description = "距离(KM)")
+        private double km;
+    }
+
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="全局搜索场地分页返回参数")
+    public static class SearchPlaceVO{
+        @Schema(description = "id")
+        private String id;
+        @Schema(description = "场地名称")
+        private String name;
+        @Schema(description = "好评率")
+        private BigDecimal goodRate;
+        @Schema(description = "评论数")
+        private String comments;
+        @Schema(description = "地址")
+        private String address;
+        @Schema(description = "距离(KM)")
+        private double km;
+        @Schema(description = "类目")
+        private List<String> category;
+        @Schema(hidden = true)
+        private String categoryId;
+        @Schema(description = "全局搜索产品信息返回参数")
+        private List<SearchCoureseVO> searchCoureseList;
+    }
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="全局搜索产品信息返回参数")
+    public static class SearchCoureseVO{
+        @Schema(description = "id")
+        private String id;
+        @Schema(description = "名称")
+        private String name;
+        @Schema(description = "原价")
+        private BigDecimal originalPrice;
+        @Schema(description = "售价")
+        private BigDecimal sellingPrice;
+        @Schema(description = "销售销量")
+        private int sales;
+
+    }
+
+}

+ 43 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSearchHot.java

@@ -0,0 +1,43 @@
+package org.jeecg.modules.system.app.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 运动类型表
+ * @Author: jeecg-boot
+ * @Date:   2025-07-03
+ * @Version: V1.0
+ */
+@Data
+@TableName("nm_search_hot")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="关键词搜索表")
+public class AppSearchHot implements Serializable {
+    private static final long serialVersionUID = 1L;
+	/**id*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @Schema(description = "id")
+    private String id;
+    @Schema(description = "搜索次数")
+    private String searchCount;
+    @Schema(description = "搜索内容")
+    private String searchContent;
+    @Schema(description = "是否启用")
+    private String isActive;
+    @Schema(description = "是否推荐")
+    private String isRecommend;
+    @Schema(description = "关联分类ID")
+    private String categoryId;
+    @Schema(description = "最后一次搜索用户ID")
+    private String lastUser;
+
+}

+ 7 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSearchHotMapper.java

@@ -0,0 +1,7 @@
+package org.jeecg.modules.system.app.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.system.app.entity.AppSearchHot;
+
+public interface AppSearchHotMapper extends BaseMapper<AppSearchHot> {
+}

+ 7 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/IAppSearchHotService.java

@@ -0,0 +1,7 @@
+package org.jeecg.modules.system.app.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.system.app.entity.AppSearchHot;
+
+public interface IAppSearchHotService extends IService<AppSearchHot> {
+}

+ 11 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/service/impl/AppSearchHotServiceImpl.java

@@ -0,0 +1,11 @@
+package org.jeecg.modules.system.app.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.jeecg.modules.system.app.entity.AppSearchHot;
+import org.jeecg.modules.system.app.mapper.AppSearchHotMapper;
+import org.jeecg.modules.system.app.service.IAppSearchHotService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AppSearchHotServiceImpl extends ServiceImpl<AppSearchHotMapper, AppSearchHot> implements IAppSearchHotService {
+}