Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

lix 2 nedēļas atpakaļ
vecāks
revīzija
77b86425d7
24 mainītis faili ar 498 papildinājumiem un 131 dzēšanām
  1. 15 4
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/AppDetailController.java
  2. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/OrderController.java
  3. 43 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/stadium/StadiumController.java
  4. 13 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IDetailService.java
  5. 19 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/AppHomeServiceImpl.java
  6. 49 14
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java
  7. 10 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/OrderServiceImpl.java
  8. 11 5
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/CourseInfoVO.java
  9. 15 3
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PlaceInfoVO.java
  10. 4 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PlaceVO.java
  11. 2 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/SearchVO.java
  12. 38 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/ConcertsDetailsVO.java
  13. 25 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/ConcertsVO.java
  14. 38 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/StadiumConcertsVO.java
  15. 6 6
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/controller/AppSitePriceRulesController.java
  16. 9 8
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java
  17. 3 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/AppSitePlaceMapper.java
  18. 13 5
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesMapper.xml
  19. 1 1
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesPriceRulesMapper.xml
  20. 24 25
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSiteMapper.xml
  21. 31 5
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml
  22. 51 45
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePriceRulesMapper.xml
  23. 47 8
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/TimeRangeFinder.java
  24. 27 0
      national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/time/NextSevenDayVo.java

+ 15 - 4
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/AppDetailController.java

@@ -8,6 +8,7 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.app.service.IDetailService;
 import org.jeecg.modules.app.vo.CourseInfoVO;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
+import org.jeecg.modules.system.app.entity.AppCategory;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -16,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import java.util.List;
 @Slf4j
-@Tag(name = "App首页相关接口")
+@Tag(name = "App详情相关接口")
 @RestController
 @RequestMapping("/app/detail")
 public class AppDetailController {
@@ -52,13 +53,12 @@ public class AppDetailController {
      * @Author SheepHy
      * @Description 根据课程类型查询课程列表
      * @Date 9:52 2025/7/9
-     * @Param type 课程类型
      * @return List<PlaceInfoVO.CourseInfoVO>
      **/
     @GetMapping("/courseInfoVOList")
     @Operation(summary = "根据课程类型查询课程列表")
-    public Result<List<PlaceInfoVO.CourseInfoVO>> courseInfoVOList(@RequestParam @Schema(description="课程类型")String type, @RequestParam @Schema(description="课程ID")String id){
-        return Result.ok(detailService.courseInfoVOList(type, id));
+    public Result<List<PlaceInfoVO.CourseInfoVO>> courseInfoVOList(@RequestParam @Schema(description="类目id")String categoryId, @RequestParam @Schema(description="店铺ID")String id){
+        return Result.ok(detailService.courseInfoVOList(categoryId,id));
     }
 
     /**
@@ -73,4 +73,15 @@ public class AppDetailController {
     public Result<PlaceInfoVO.theGymnasiumIsCharteredVO> getPlaceInfoNoFixation(@RequestParam @Schema(description="门店ID")String id, @RequestParam @Schema(description="类目")String categoryId){
         return Result.ok(detailService.getPlaceInfoNoFixation(id, categoryId));
     }
+
+    /**
+     * @Author SheepHy
+     * @Description 获取所有类目
+     * @Date 10:14 2025/7/9
+     **/
+    @GetMapping("/getAllCategory")
+    @Operation(summary = "获取所有类目")
+    public Result<List<AppCategory>> getAllCategory(@RequestParam @Schema(description="门店ID")String id){
+        return Result.ok(detailService.getAllCategory(id));
+    }
 }

+ 4 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/OrderController.java

@@ -0,0 +1,4 @@
+package org.jeecg.modules.app.controller;
+
+public class OrderController {
+}

+ 43 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/stadium/StadiumController.java

@@ -0,0 +1,43 @@
+package org.jeecg.modules.app.controller.stadium;
+
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.app.service.IDetailService;
+import org.jeecg.modules.app.vo.PlaceInfoVO;
+import org.jeecg.modules.app.vo.stadium.StadiumConcertsVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+@Slf4j
+@Tag(name = "App体育馆场次选择")
+@RestController
+@RequestMapping("/app/stadium")
+public class StadiumController {
+
+    @Autowired
+    IDetailService iDetailService;
+
+
+    /**
+     * @Description 体育馆场次查询
+     * @Date 19:41 2025/7/11
+     * @Param id 门店id
+     * @return PlaceInfoVO {@link PlaceInfoVO}
+     **/
+    @GetMapping("/getPlaceInfo")
+    @Operation(summary = "场次详情查询-缺少已定状态和可预约数逻辑 ")
+    public Result<List<StadiumConcertsVO>> findConcerts(){
+        String site_id = "1942781931946946561";
+        String category_id = "1942391828774895617";
+        return iDetailService.findConcerts(site_id,category_id);
+    }
+
+}

+ 13 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/IDetailService.java

@@ -1,7 +1,10 @@
 package org.jeecg.modules.app.service;
 
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.app.vo.CourseInfoVO;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
+import org.jeecg.modules.system.app.entity.AppCategory;
+import org.jeecg.modules.app.vo.stadium.StadiumConcertsVO;
 
 import java.util.List;
 
@@ -31,7 +34,7 @@ public interface IDetailService {
      * @Param type 课程类型
      * @return List<PlaceInfoVO.CourseInfoVO>
      **/
-    List<PlaceInfoVO.CourseInfoVO> courseInfoVOList(String type, String id);
+    List<PlaceInfoVO.CourseInfoVO> courseInfoVOList(String categoryId,String id);
     
     /** 
      * @Author SheepHy
@@ -41,4 +44,13 @@ public interface IDetailService {
      * @return PlaceInfoVO.theGymnasiumIsCharteredVO
      **/
     PlaceInfoVO.theGymnasiumIsCharteredVO getPlaceInfoNoFixation(String id, String categoryId);
+
+    Result<List<StadiumConcertsVO>> findConcerts(String siteId, String categoryId);
+
+    /**
+     * @Author SheepHy
+     * @Description 获取所有类目
+     * @Date 10:14 2025/7/9
+     **/
+    List<AppCategory> getAllCategory(String id);
 }

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

@@ -43,6 +43,10 @@ public class AppHomeServiceImpl implements IAppHomeService {
     @Resource
     private AppGameMapper appGameMapper;
     @Resource
+    private AppSitePlaceMapper appSitePlaceMapper;
+    @Resource
+    private AppSitePriceRulesMapper appSitePriceRulesMapper;
+    @Resource
     private AppSearchHotMapper appSearchHotMapper;
     @Resource
     private AppGamePriceRulesMapper appGamePriceRulesMapper;
@@ -155,8 +159,22 @@ public class AppHomeServiceImpl implements IAppHomeService {
         Page<PlaceVO> page = new Page<>(getPlaceListDTO.getCurrent(), getPlaceListDTO.getSize());
         Page<PlaceVO> placeList = appSiteMapper.getPlaceList(page, getPlaceListDTO.getVenueType());
         placeList.getRecords().forEach(placeVO -> {
+            boolean ticketWhether = false;
+            List<AppSitePriceRules> appSitePriceRules = new ArrayList<>();
+            appSitePlaceMapper.selectList(Wrappers.<AppSitePlace>lambdaQuery()
+                    .eq(AppSitePlace::getSiteId, placeVO.getId())
+                    .eq(AppSitePlace::getDelFlag,0)
+                    .eq(AppSitePlace::getStatus,0)).forEach(appSitePlace -> {
+                appSitePriceRules.addAll(appSitePriceRulesMapper.selectList(Wrappers.<AppSitePriceRules>lambdaQuery()
+                        .eq(AppSitePriceRules::getSitePlaceId, appSitePlace.getId())
+                        .eq(AppSitePriceRules::getDelFlag, 0)
+                        .eq(AppSitePriceRules::getStatus, 0)
+                        .ne(AppSitePriceRules::getInventory, 0)));
+            });
+            if(!appSitePriceRules.isEmpty()) ticketWhether = true;
             placeVO.setKm(PositionUtil.calculateDistance(getPlaceListDTO.getLatitude(), getPlaceListDTO.getLongitude(), placeVO.getLatitude().doubleValue(), placeVO.getLongitude().doubleValue()))
-                    .setCategory(getCategoryName(placeVO.getCategoryId()));
+                    .setCategory(getCategoryName(placeVO.getCategoryId()))
+                    .setTicketWhether(ticketWhether);
         });
         if(getPlaceListDTO.getVenueType().equals("0-2")
                 || getPlaceListDTO.getVenueType().equals("1-1")

+ 49 - 14
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/service/impl/DetailServiceImpl.java

@@ -3,12 +3,17 @@ package org.jeecg.modules.app.service.impl;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.extern.log4j.Log4j2;
 import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.app.service.IDetailService;
 import org.jeecg.modules.app.vo.CourseInfoVO;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
+import org.jeecg.modules.app.vo.stadium.ConcertsVO;
+import org.jeecg.modules.app.vo.stadium.StadiumConcertsVO;
 import org.jeecg.modules.system.app.entity.*;
 import org.jeecg.modules.system.app.mapper.*;
+import org.jeecg.modules.system.app.utils.TimeRangeFinder;
+import org.jeecg.modules.system.app.vo.time.NextSevenDayVo;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.mapper.SysUserMapper;
 import org.jeecg.modules.system.util.PositionUtil;
@@ -69,17 +74,17 @@ public class DetailServiceImpl implements IDetailService {
             List<PlaceInfoVO.PlaceInfoMsgVO> placeInfoMsgVOS = new ArrayList<>();
             appSitePlaceMapper.selectList(Wrappers.<AppSitePlace>lambdaQuery().eq(AppSitePlace::getSiteId, id)
                     .eq(AppSitePlace::getType,0)).forEach(appSitePlace -> {
-                appSitePriceRulesMapper.selectList(Wrappers.<AppSitePriceRules>lambdaQuery()
-                        .eq(AppSitePriceRules::getSitePlaceId, id)
-                        .eq(AppSitePriceRules::getStatus, 0)
-                        .eq(AppSitePriceRules::getType,0)).forEach(appSitePriceRules -> {
-                    PlaceInfoVO.PlaceInfoMsgVO placeInfoMsgVO = new PlaceInfoVO.PlaceInfoMsgVO();
-                    placeInfoMsgVO.setName(appSite.getName())
-                            .setSales(getPlaceSales(id))
-                            .setOriginalPrice(appSitePriceRules.getOriginalPrice())
-                            .setSellingPrice(appSitePriceRules.getSellingPrice());
-                    placeInfoMsgVOS.add(placeInfoMsgVO);
-                });
+                PlaceInfoVO.PlaceInfoMsgVO placeInfoMsgVO = new PlaceInfoVO.PlaceInfoMsgVO();
+                placeInfoMsgVO.setName(appSitePlace.getName())
+                        .setSales(getPlaceSales(id))
+                        .setOriginalPrice(appSitePriceRulesMapper.selectOne(Wrappers.<AppSitePriceRules>lambdaQuery()
+                                .eq(AppSitePriceRules::getSitePlaceId, appSitePlace.getId())
+                                .last("limit 1").orderByDesc(AppSitePriceRules::getOriginalPrice)).getOriginalPrice())
+                        .setSellingPrice(appSitePriceRulesMapper.selectOne(Wrappers.<AppSitePriceRules>lambdaQuery()
+                                .eq(AppSitePriceRules::getSitePlaceId, appSitePlace.getId())
+                                .last("limit 1").orderByDesc(AppSitePriceRules::getSellingPrice)).getSellingPrice())
+                        .setCategory(getCategoryName(appSitePlace.getCategoryId()));
+                placeInfoMsgVOS.add(placeInfoMsgVO);
             });
             placeInfo.setPlaceInfoMsgVO(placeInfoMsgVOS);
             return placeInfo;
@@ -103,26 +108,29 @@ public class DetailServiceImpl implements IDetailService {
         appCoursesPriceRulesMapper.selectList(Wrappers.<AppCoursesPriceRules>lambdaQuery()
                 .eq(AppCoursesPriceRules::getCoursesId, courseInfoVO.getId())).forEach(appCourses -> {
             CourseInfoVO.CourseDetailVO courseDetailVO = new CourseInfoVO.CourseDetailVO();
-            BeanUtils.copyProperties(courseDetailVO, appCourses);
+            BeanUtils.copyProperties(appCourses,courseDetailVO);
             courseDetailVOList.add(courseDetailVO);
         });
+
         courseInfoVO.setCourseDetail(courseDetailVOList);
         return courseInfoVO;
     }
 
     @Override
-    public List<PlaceInfoVO.CourseInfoVO> courseInfoVOList(String type, String id) {
+    public List<PlaceInfoVO.CourseInfoVO> courseInfoVOList(String categoryId,String id) {
         LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         List<PlaceInfoVO.CourseInfoVO> courseInfoVOList = new ArrayList<>();
         appCoursesMapper.selectList(Wrappers.<AppCourses>lambdaQuery()
                 .eq(AppCourses::getSiteId, id)
+                .like(AppCourses::getCategoryId, categoryId)
                 .eq(AppCourses::getStatus, 0)
                 .eq(AppCourses::getDelFlag, 0)).forEach(appCourses -> {
             PlaceInfoVO.CourseInfoVO courseInfoVO = new PlaceInfoVO.CourseInfoVO();
-            BeanUtils.copyProperties(courseInfoVO, appCourses);
+            BeanUtils.copyProperties(appCourses, courseInfoVO);
             courseInfoVO.setSales(getCourseSalesCount(appCourses.getId()));
             courseInfoVO.setSalesYear(getCourseSales(appCourses.getId()));
             courseInfoVO.setPriceType(isFirstPurchase(user.getId()));
+            courseInfoVO.setAddress(appSiteMapper.selectById(appCourses.getSiteId()).getAddress());
             courseInfoVOList.add(courseInfoVO);
         });
         return courseInfoVOList;
@@ -143,6 +151,33 @@ public class DetailServiceImpl implements IDetailService {
                 .setTimeSlot(collect);
     }
 
+    @Override
+    public Result<List<StadiumConcertsVO>> findConcerts(String siteId, String categoryId) {
+        List<NextSevenDayVo> nextSevenDays = TimeRangeFinder.getNextSevenDays();
+        List<StadiumConcertsVO> stadiumConcertsVOS = new ArrayList<>();
+        for (NextSevenDayVo nextSevenDay : nextSevenDays) {
+            StadiumConcertsVO stadiumConcertsVO = new StadiumConcertsVO();
+            BeanUtils.copyProperties(nextSevenDay,stadiumConcertsVO);
+            //
+            //查询预约总数
+//            appSitePlaceMapper.findCount();
+//            查询过期和已预约数
+            //查询当天所有场地和场次
+            List<ConcertsVO>  concertsVOList= appSitePlaceMapper.findByConcerts(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            stadiumConcertsVO.setConcertsVOList(concertsVOList);
+            stadiumConcertsVOS.add(stadiumConcertsVO);
+        }
+        return Result.ok(stadiumConcertsVOS);
+    }
+
+    @Override
+    public List<AppCategory> getAllCategory(String id) {
+        AppSite appSite = appSiteMapper.selectById(id);
+        return appCategoryMapper.selectList(Wrappers.<AppCategory>lambdaQuery()
+                .eq(AppCategory::getStatus,0).eq(AppCategory::getOrgCode,appSite.getOrgCode())
+                .eq(AppCategory::getDelFlag,0));
+    }
+
     /**
      * @return
      * @Author SheepHy

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

@@ -0,0 +1,10 @@
+package org.jeecg.modules.app.service.impl;
+
+import lombok.extern.log4j.Log4j2;
+import org.jeecg.modules.app.service.IOrderService;
+import org.springframework.stereotype.Service;
+
+@Service
+@Log4j2
+public class OrderServiceImpl implements IOrderService {
+}

+ 11 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/CourseInfoVO.java

@@ -43,15 +43,21 @@ public class CourseInfoVO {
     @Schema(description = "课时")
     private Integer classHour;
     @Schema(description = "限购次数")
-    private Integer limitNum;
+    private String limitNum;
     @Schema(description = "服务详情")
-    private Integer details;
+    private String details;
     @Schema(description = "适用人群")
-    private Integer fitPeople;
+    private String fitPeople;
     @Schema(description = "提示/须知")
     private String reminder;
     @Schema(description = "课程明细")
     private List<CourseDetailVO> courseDetail;
+    @Schema(description = "主键id")
+    private String instructorId;
+    @Schema(description = "教练名称")
+    private String instructorName;
+    @Schema(description = "教练头像")
+    private String instructorAvatar;
 
     @Data
     @Accessors(chain = true)
@@ -59,9 +65,9 @@ public class CourseInfoVO {
     @Schema(description="课程明细返回参数")
     public static class CourseDetailVO {
         @Schema(description = "课程id")
-        private String courseId;
+        private String id;
         @Schema(description = "课程名称")
-        private String courseName;
+        private String name;
         @Schema(description = "开始时间")
         private Date startTime;
         @Schema(description = "结束时间")

+ 15 - 3
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/PlaceInfoVO.java

@@ -1,11 +1,13 @@
 package org.jeecg.modules.app.vo;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 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.Date;
 import java.util.List;
 
 @Data
@@ -20,7 +22,7 @@ public class PlaceInfoVO {
     @Schema(description = "好评率")
     private BigDecimal goodRate;
     @Schema(description = "是否营业")
-    private Boolean isOpen;
+    private Boolean runStatus;
     @Schema(description = "封面")
     private String cover;
     @Schema(description = "地址")
@@ -80,9 +82,9 @@ public class PlaceInfoVO {
     @EqualsAndHashCode(callSuper = false)
     @Schema(description="课程返回参数")
     public static class CourseInfoVO{
-        @Schema(description = "场地id")
+        @Schema(description = "课程id")
         private String id;
-        @Schema(description = "场地名称")
+        @Schema(description = "课程名称")
         private String name;
         @Schema(description = "费用类型;0 精品 1免费 仅课程")
         private Integer priceType;
@@ -100,7 +102,17 @@ public class PlaceInfoVO {
         private String address;
         @Schema(description = "封面")
         private String cover;
+        @Schema(description = "课时")
+        private Integer period;
+        @Schema(description = "距离")
+        private BigDecimal km;
+        @JsonFormat(timezone = "GMT+8",pattern = "MM-dd")
+        @Schema(description = "开始时间")
+        private Date startTime;
 
+        @JsonFormat(timezone = "GMT+8",pattern = "MM-dd")
+        @Schema(description = "开始时间")
+        private Date endTime;
     }
     @Data
     @Accessors(chain = true)

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

@@ -24,6 +24,10 @@ public class PlaceVO extends Page<PlaceVO> {
     private String comments;
     @Schema(description = "地址")
     private String address;
+    @Schema(description = "图片")
+    private String cover;
+    @Schema(description = "门店类型 0学校 1体育馆包场 ")
+    private int type;
     @Schema(description = "距离(KM)")
     private double km;
     @Schema(description = "是否有票")

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

@@ -159,6 +159,8 @@ public class SearchVO{
         private String comments;
         @Schema(description = "地址")
         private String address;
+        @Schema(description = "门店类型 0学校 1体育馆包场 ")
+        private int type;
         @Schema(description = "图片")
         private String cover;
         @Schema(description = "距离(KM)")

+ 38 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/ConcertsDetailsVO.java

@@ -0,0 +1,38 @@
+package org.jeecg.modules.app.vo.stadium;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="体育馆场次")
+public class ConcertsDetailsVO {
+    @Schema(description = "场所明细id")
+    private String id;
+    /**场所名称*/
+    @Schema(description = "场所开始时间")
+    @JsonFormat(timezone = "GMT+8",pattern = "HH:mm:ss")
+    @DateTimeFormat(pattern="HH:mm:ss")
+    private Date startTime;
+    /**场所明细*/
+    @Schema(description = "场所结束时间")
+    @JsonFormat(timezone = "GMT+8",pattern = "HH:mm:ss")
+    @DateTimeFormat(pattern="HH:mm:ss")
+    private Date endTime;
+    /**当天场次已预约数*/
+    @Schema(description = "场所状态0-未预约;1-已预约")
+    private Integer concertStatus;
+
+    @Schema(description = "价格")
+    private BigDecimal price;
+
+
+}

+ 25 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/ConcertsVO.java

@@ -0,0 +1,25 @@
+package org.jeecg.modules.app.vo.stadium;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="体育馆场次")
+public class ConcertsVO {
+    @Schema(description = "场所id")
+    private String sitePlaceId;
+    /**场所名称*/
+    @Schema(description = "场所名称")
+    private String sitePlaceName;
+    /**场所明细*/
+    @Schema(description = "场所明细")
+    private List<ConcertsDetailsVO> concertsDetailsVOList;
+
+
+}

+ 38 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/vo/stadium/StadiumConcertsVO.java

@@ -0,0 +1,38 @@
+package org.jeecg.modules.app.vo.stadium;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.util.List;
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@Schema(description="体育馆场次")
+public class StadiumConcertsVO {
+
+    @Schema(description = "门店id")
+    private Integer siteId;
+    @Schema(description = "运动类型Id")
+    private Integer categoryId;
+    @Schema(description = "星期")
+    private Integer weekDay;
+    /**事件类型(0: 网页链接, 1: 内部页面跳转)*/
+    @Schema(description = "日期加星期")
+    private String weekDayAndDate;
+//    /**当天场次总数*/
+//    @Schema(description = "当天场次总数")
+//    private String dayConcertsTotal;
+//    /**当天场次已预约数*/
+//    @Schema(description = "当天场次已预约数")
+//    private String dayConcertsReservationNum;
+    @Schema(description = "当天场次未预约数")
+    private String noDayConcertsReservationNum;
+    /**当天场次已预约数*/
+    @Schema(description = "当天场所明细")
+    private List<ConcertsVO> concertsVOList;
+
+
+}

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

@@ -67,7 +67,7 @@ public class AppSitePriceRulesController extends JeecgController<AppSitePriceRul
 	 */
 	@AutoLog(value = "场地价格规则表-添加")
 	@Operation(summary="场地价格规则表-添加")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:add")
+	@RequiresPermissions("org.jeecg.modules.app:nm_site_price_rules:add")
 	@PostMapping(value = "/add")
 	public Result<String> add(@RequestBody AppSitePriceRules appSitePriceRules) {
 		appSitePriceRulesService.save(appSitePriceRules);
@@ -83,7 +83,7 @@ public class AppSitePriceRulesController extends JeecgController<AppSitePriceRul
 	 */
 	@AutoLog(value = "场地价格规则表-编辑")
 	@Operation(summary="场地价格规则表-编辑")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:edit")
+	@RequiresPermissions("org.jeecg.modules.app:nm_site_price_rules:edit")
 	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
 	public Result<String> edit(@RequestBody AppSitePriceRules appSitePriceRules) {
 		appSitePriceRulesService.updateById(appSitePriceRules);
@@ -98,7 +98,7 @@ public class AppSitePriceRulesController extends JeecgController<AppSitePriceRul
 	 */
 	@AutoLog(value = "场地价格规则表-通过id删除")
 	@Operation(summary="场地价格规则表-通过id删除")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:delete")
+	@RequiresPermissions("org.jeecg.modules.app:nm_site_price_rules:delete")
 	@DeleteMapping(value = "/delete")
 	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
 		appSitePriceRulesService.removeById(id);
@@ -113,7 +113,7 @@ public class AppSitePriceRulesController extends JeecgController<AppSitePriceRul
 	 */
 	@AutoLog(value = "场地价格规则表-批量删除")
 	@Operation(summary="场地价格规则表-批量删除")
-	@RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:deleteBatch")
+	@RequiresPermissions("org.jeecg.modules.app:nm_site_price_rules:deleteBatch")
 	@DeleteMapping(value = "/deleteBatch")
 	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
 		this.appSitePriceRulesService.removeByIds(Arrays.asList(ids.split(",")));
@@ -143,7 +143,7 @@ public class AppSitePriceRulesController extends JeecgController<AppSitePriceRul
     * @param request
     * @param appSitePriceRules
     */
-    @RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:exportXls")
+    @RequiresPermissions("org.jeecg.modules.app:nm_site_price_rules:exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, AppSitePriceRules appSitePriceRules) {
         return super.exportXls(request, appSitePriceRules, AppSitePriceRules.class, "场地价格规则表");
@@ -156,7 +156,7 @@ public class AppSitePriceRulesController extends JeecgController<AppSitePriceRul
     * @param response
     * @return
     */
-    @RequiresPermissions("org.jeecg.modules.app:nm_site_peice_rules:importExcel")
+    @RequiresPermissions("org.jeecg.modules.app:nm_site_price_rules:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
         return super.importExcel(request, response, AppSitePriceRules.class);

+ 9 - 8
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/entity/AppSitePriceRules.java

@@ -1,19 +1,20 @@
 package org.jeecg.modules.system.app.entity;
 
-import java.io.Serializable;
-import java.util.Date;
-import java.math.BigDecimal;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.TableLogic;
-import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-import org.jeecgframework.poi.excel.annotation.Excel;
 import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * @Description: 场地价格规则表
@@ -22,7 +23,7 @@ import lombok.experimental.Accessors;
  * @Version: V1.0
  */
 @Data
-@TableName("nm_site_peice_rules")
+@TableName("nm_site_price_rules")
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = false)
 @Schema(description="场地价格规则表")

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

@@ -2,6 +2,7 @@ package org.jeecg.modules.system.app.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
+import org.jeecg.modules.app.vo.stadium.ConcertsVO;
 import org.jeecg.modules.system.app.entity.AppSitePlace;
 import org.apache.ibatis.annotations.Param;
 import java.util.List;
@@ -21,4 +22,6 @@ public interface AppSitePlaceMapper extends BaseMapper<AppSitePlace> {
      * @return
      **/
     List<PlaceInfoVO.PlaceInfoGymMsgVO> getPlaceInfoNoFixation(@Param("id")String id);
+
+    List<ConcertsVO> findByConcerts(Integer weekDay, String siteId, String categoryId);
 }

+ 13 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesMapper.xml

@@ -39,29 +39,34 @@
     <select id="getCourseInfo" resultType="org.jeecg.modules.app.vo.CourseInfoVO">
         SELECT
             a.id,
-            a.name,
+            a.NAME,
             a.original_price,
             a.selling_price,
             a.cover,
             a.video,
             b.address,
+            a.details,
             a.site_id,
+            a.fit_people,
             a.start_time,
             a.end_time,
             COUNT( c.id ) AS classHour,
             a.limit_num,
-            a.reminder
+            a.reminder,
+            a.user_id AS instructorId,
+            d.username AS instructorName,
+            d.avatar AS instructorAvatar
         FROM
             nm_courses a
                 LEFT JOIN nm_site b ON a.site_id = b.id
-                LEFT JOIN nm_courses_price_rules c ON a.id = c.courses_id
+                LEFT JOIN nm_courses_price_rules c ON a.id = c.courses_id LEFT JOIN sys_user d ON d.id = a.user_id
         WHERE
             a.STATUS = 0
           AND a.del_flag = 0
           AND a.id = #{id}
         GROUP BY
             a.id,
-            a.name,
+            a.NAME,
             a.original_price,
             a.selling_price,
             a.cover,
@@ -70,6 +75,9 @@
             a.start_time,
             a.end_time,
             a.limit_num,
-            a.reminder;
+            a.reminder,
+            instructorId,
+            instructorName,
+            instructorAvatar;
     </select>
 </mapper>

+ 1 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppCoursesPriceRulesMapper.xml

@@ -2,6 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppCoursesPriceRulesMapper">
     <select id="selectRuleIdsByCourseId" resultType="string">
-        SELECT id FROM app_courses_price_rules WHERE courses_id = #{coursesId}
+        SELECT id FROM nm_courses_price_rules WHERE courses_id = #{coursesId}
     </select>
 </mapper>

+ 24 - 25
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSiteMapper.xml

@@ -3,36 +3,33 @@
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppSiteMapper">
     <select id="getPlaceList" resultType="org.jeecg.modules.app.vo.PlaceVO">
         SELECT
-            a.id,
-            a.name,
-            a.good_rate AS goodRate,
-            a.address,
-            a.category_id,
-            a.latitude,
-            a.longitude,
-            CASE
-                WHEN EXISTS (
-                    SELECT SUM(inventory)
-                    FROM nm_site_peice_rules
-                    WHERE site_id = a.id
-                ) THEN 1
-                ELSE 0
-                END AS ticketWhether
-        FROM nm_site a LEFT JOIN sys_depart b ON a.tenant_id = b.id WHERE 1=1
+        b.id,
+        b.NAME,
+        b.good_rate AS goodRate,
+        b.address,
+        b.category_id,
+        b.latitude,
+        b.longitude,
+        a.cover,
+        a.type
+        FROM
+        nm_site_place a
+        LEFT JOIN nm_site b ON a.site_id = b.id
+        LEFT JOIN sys_depart c ON b.tenant_id = c.id
         <if test="venueType != null and venueType == '0-1'">
-            ORDER BY a.good_rate DESC
+            ORDER BY b.good_rate DESC
         </if>
         <if test="venueType != null and venueType == '1-1'">
-            AND b.org_category = 2
+            AND c.org_category = 2
         </if>
         <if test="venueType != null and venueType == '1-2'">
-            AND b.org_category = 2 ORDER BY  a.good_rate DESC
+            AND c.org_category = 2 ORDER BY  b.good_rate DESC
         </if>
         <if test="venueType != null and venueType == '2-1'">
-            AND b.org_category = 3
+            AND c.org_category = 3
         </if>
         <if test="venueType != null and venueType == '2-2'">
-            AND b.org_category = 3 ORDER BY  a.good_rate DESC
+            AND c.org_category = 3 ORDER BY  b.good_rate DESC
         </if>
     </select>
 
@@ -44,10 +41,11 @@
         a.address,
         a.cover,
         a.category_id,
+        a.type,
         CASE
         WHEN EXISTS (
         SELECT SUM(inventory)
-        FROM nm_site_peice_rules e
+        FROM nm_site_price_rules e
         WHERE e.site_place_id = a.id
         ) THEN 1
         ELSE 0
@@ -63,15 +61,16 @@
     <select id="getPlaceInfo" resultType="org.jeecg.modules.app.vo.PlaceInfoVO">
         SELECT
             a.id,
-            b.depart_name,
+            b.depart_name AS name,
             a.good_rate,
             a.cover,
-            b.address,
+            a.address,
             a.type,
             a.facility,
+            a.run_status AS runStatus,
             a.teaching_day,
             a.no_teaching_day,
-            b.mobile,
+            b.mobile AS phone,
             a.video
         FROM
             nm_site a

+ 31 - 5
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePlaceMapper.xml

@@ -1,16 +1,42 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppSitePlaceMapper">
+    <resultMap id="ConcertsVOResult" type="org.jeecg.modules.app.vo.stadium.ConcertsVO">
+        <result property="sitePlaceId" column="site_place_id"/>
+        <result property="sitePlaceName" column="site_place_name"/>
+        <collection property="concertsDetailsVOList" ofType="org.jeecg.modules.app.vo.stadium.ConcertsDetailsVO" javaType="java.util.List">
+            <result property="id" column="id" />
+            <result property="startTime" column="start_time" />
+            <result property="endTime" column="end_time"/>
+            <result property="concertStatus" column="concertStatus" />
+            <result property="price" column="selling_price" javaType="java.math.BigDecimal"/>
+        </collection>
+    </resultMap>
+
     <select id="getPlaceInfoNoFixation" resultType="org.jeecg.modules.app.vo.PlaceInfoVO$PlaceInfoGymMsgVO">
         SELECT
             a.id,
-            a.`name`,
+            a.name,
             a.advance_time,
-            b.original_price,
-            b.selling_price
+            MIN(b.original_price) AS original_price,
+            MAX(b.selling_price) AS selling_price
         FROM
             nm_site_place a
-                LEFT JOIN nm_site_peice_rules b ON a.id = b.site_place_id WHERE a.site_id = #{id} AND a.type != 0 ORDER BY
-            b.selling_price ASC
+                LEFT JOIN nm_site_price_rules b ON a.id = b.site_place_id
+        WHERE
+            a.site_id = #{id}
+          AND a.type != 0
+        GROUP BY
+            a.id,
+            a.name,
+            a.advance_time
+        ORDER BY
+            selling_price ASC;
+    </select>
+    <select id="findByConcerts" resultMap="ConcertsVOResult" >
+        select b.site_place_id,a.name as site_place_name,
+        b.id,b.start_time,b.end_time ,b.selling_price
+        from nm_site_place a left join  nm_site_price_rules b on a.id = b.site_place_id
+        where a.site_id = #{siteId} and b.category_id =#{categoryId} and b.day_of_week =#{weekDay}
     </select>
 </mapper>

+ 51 - 45
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/mapper/xml/AppSitePriceRulesMapper.xml

@@ -3,52 +3,58 @@
 <mapper namespace="org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper">
     <select id="theGymnasiumIsCharteredInfo" resultType="org.jeecg.modules.app.vo.PlaceInfoVO$theGymnasiumIsCharteredInfoVO">
         WITH RECURSIVE dates AS (
-            SELECT
-                0 AS offset_day,
-                CURDATE() AS date_val,
-                DAYOFWEEK(CURDATE()) - 1 AS dow
-            UNION ALL
-            SELECT
-                offset_day + 1,
-                date_val + INTERVAL 1 DAY,
-            DAYOFWEEK(date_val + INTERVAL 1 DAY) - 1
-        FROM dates
-        WHERE offset_day &lt; 6
-            ),
-            earliest_slots AS (
         SELECT
-            sp.site_id,
-            r.start_time,
-            r.end_time,
-            r.selling_price,
-            r.day_of_week,
-            ROW_NUMBER() OVER (PARTITION BY r.day_of_week ORDER BY r.start_time) AS rn
-        FROM nm_site_peice_rules r
-            LEFT JOIN nm_site_place sp ON r.site_place_id = sp.id
-        WHERE r.view_status = 0
-          AND r.org_code = #{orgCode}
-          AND r.category_id = #{categoryId}
-            )
+        1 AS offset_day,
+        CURDATE() AS date_val,
+        DAYOFWEEK(
+        CURDATE()) - 1 AS dow UNION ALL
         SELECT
-            es.site_id AS id,
-            es.start_time AS startTime,
-            CONCAT(es.start_time, '-', es.end_time) AS time_range,
-            es.selling_price AS sellingPrice,
-            CASE
-                WHEN dm.offset_day = 0 THEN CONCAT('今天(', DATE_FORMAT(dm.date_val, '%m-%d'), ')')
-                WHEN dm.offset_day = 1 THEN CONCAT('明天(', DATE_FORMAT(dm.date_val, '%m-%d'), ')')
-                WHEN dm.offset_day = 2 THEN CONCAT('后天(', DATE_FORMAT(dm.date_val, '%m-%d'), ')')
-                ELSE CONCAT(
-                        ELT(dm.dow + 1, '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'),
-                        '(', DATE_FORMAT(dm.date_val, '%m-%d'), ')'
-                     )
-                END AS date_label
-        FROM earliest_slots es
-                 JOIN (
-            SELECT offset_day, date_val, dow
-            FROM dates
-        ) AS dm ON es.day_of_week = dm.dow
-        WHERE es.rn = 1
-        ORDER BY dm.offset_day;
+        offset_day + 1,
+        date_val + INTERVAL 1 DAY,
+        DAYOFWEEK( date_val + INTERVAL 0 DAY )
+        FROM
+        dates
+        WHERE
+        offset_day &lt; 7
+        ),
+        earliest_slots AS (
+        SELECT
+        sp.site_id,
+        r.start_time,
+        r.end_time,
+        r.selling_price,
+        r.day_of_week,
+        ROW_NUMBER() OVER ( PARTITION BY r.day_of_week ORDER BY r.start_time ) AS rn
+        FROM
+        nm_site_price_rules r
+        LEFT JOIN nm_site_place sp ON r.site_place_id = sp.id
+        WHERE
+        r.view_status = 0
+        ) SELECT
+        es.site_id AS id,
+        es.start_time AS startTime,
+        CONCAT( es.start_time, '-', es.end_time ) AS time_range,
+        es.selling_price AS sellingPrice,
+        CASE
+
+        WHEN dm.offset_day = 1 THEN
+        CONCAT( '今  天 (', DATE_FORMAT( dm.date_val, '%m-%d' ), ')' )
+        WHEN dm.offset_day = 2 THEN
+        CONCAT( '明  天 (', DATE_FORMAT( dm.date_val, '%m-%d' ), ')' )
+        WHEN dm.offset_day = 3 THEN
+        CONCAT( '后  天 (', DATE_FORMAT( dm.date_val, '%m-%d' ), ')' ) ELSE CONCAT(
+        ELT( dm.dow, '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日' ),
+        '(',
+        DATE_FORMAT( dm.date_val, '%m-%d' ),
+        ')'
+        )
+        END AS date_label
+        FROM
+        earliest_slots es
+        JOIN ( SELECT offset_day, date_val, dow FROM dates ) AS dm ON es.day_of_week = dm.dow
+        WHERE
+        es.rn = 1
+        ORDER BY
+        dm.offset_day;
     </select>
 </mapper>

+ 47 - 8
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/utils/TimeRangeFinder.java

@@ -1,11 +1,13 @@
 package org.jeecg.modules.system.app.utils;
 
-import org.apache.poi.ss.formula.functions.T;
-import org.jeecg.modules.system.app.dto.AppCoursesRuleDTO;
-import org.w3c.dom.stylesheets.LinkStyle;
+import com.alibaba.fastjson.JSONObject;
+import org.jeecg.modules.system.app.vo.time.NextSevenDayVo;
 
+import java.time.DayOfWeek;
+import java.time.LocalDate;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
+import java.time.format.TextStyle;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -79,13 +81,50 @@ public class TimeRangeFinder {
         return merged.stream().map(TimeRange::toString).collect(Collectors.joining(","));
     }
 
+    //获取当前时间及后面6天的
+    public static List<NextSevenDayVo> getNextSevenDays() {
+        List<NextSevenDayVo> dates = new ArrayList<>();
+        LocalDate today = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd");
+        for (int i = 0; i < 7; i++) { // 包含今天共8天
+            NextSevenDayVo nextSevenDayVo= new NextSevenDayVo();
+            LocalDate localDate = today.plusDays(i);
+            Locale locale = Locale.CHINA;
+            String format = localDate.format(formatter);
+            DayOfWeek dayOfWeek = localDate.getDayOfWeek();
+            int dayOfWeekNum = dayOfWeek.getValue();
+            String display;
+            switch (i) {
+                case 0:
+                    display = "今天(" + format + ")";
+                    break;
+                case 1:
+                    display = "明天(" + format + ")";
+                    break;
+                case 2:
+                    display = "后天(" + format + ")";
+                    break;
+                default:
+
+                    String weekday = dayOfWeek.getDisplayName(TextStyle.SHORT, locale);
+                    display = weekday + "(" + format + ")";
+            }
+            nextSevenDayVo.setWeekDay(dayOfWeekNum);
+            nextSevenDayVo.setWeekDayAndDate(display);
+            dates.add(nextSevenDayVo);
+        }
+        return dates;
+    }
+
     // 主方法示例
     public static void main(String[] args) {
-        String input = "6:00-7:00, 6:30-8:00, 18:00-20:00, 19:30-21:00";
-        List<TimeRange> parsed = parseTimeRanges(input);
-        List<TimeRange> merged = mergeTimeRanges(parsed);
-        String result = formatMergedRanges(merged);
-        System.out.println(result); // 输出:6:00-8:00,18:00-21:00
+//        String input = "6:00-7:00, 6:30-8:00, 18:00-20:00, 19:30-21:00";
+//        List<TimeRange> parsed = parseTimeRanges(input);
+//        List<TimeRange> merged = mergeTimeRanges(parsed);
+//        String result = formatMergedRanges(merged);
+        List<NextSevenDayVo> nextSevenDays = getNextSevenDays();
+        System.out.println(JSONObject.toJSONString(nextSevenDays));
+//        System.out.println(result); // 输出:6:00-8:00,18:00-21:00
     }
 
 }

+ 27 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/app/vo/time/NextSevenDayVo.java

@@ -0,0 +1,27 @@
+package org.jeecg.modules.system.app.vo.time;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+/**
+ * @author DM
+ * @date 2025/7/7 15:41
+ * @description
+ */
+
+@Data
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description="获取当前时间后续七天的日期")
+public class NextSevenDayVo {
+    @Schema(description ="星期几")
+    private Integer weekDay;
+    @Schema(description ="星期配合日期")
+    private String weekDayAndDate;
+}