Bläddra i källkod

优化场次的可定数和状态

zhangxin 2 månader sedan
förälder
incheckning
e74b1f0496

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

@@ -16,6 +16,7 @@ import org.jeecg.modules.app.vo.CourseInfoVO;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
 import org.jeecg.modules.app.vo.course.CourseRequestVo;
 import org.jeecg.modules.app.vo.course.CourseResponseVo;
+import org.jeecg.modules.app.vo.stadium.ConcertsDetailsVO;
 import org.jeecg.modules.app.vo.stadium.ConcertsVO;
 import org.jeecg.modules.app.vo.stadium.StadiumConcertsResponseVO;
 import org.jeecg.modules.app.vo.stadium.StadiumConcertsVO;
@@ -220,16 +221,37 @@ public class DetailServiceImpl implements IDetailService {
             stadiumConcertsResponseVO = new StadiumConcertsResponseVO();
         }
         List<StadiumConcertsVO> stadiumConcertsVOS = new ArrayList<>();
+        Boolean label = true;
         for (NextSevenDayVo nextSevenDay : nextSevenDays) {
             StadiumConcertsVO stadiumConcertsVO = new StadiumConcertsVO();
             BeanUtils.copyProperties(nextSevenDay,stadiumConcertsVO);
-            //
-            //查询预约总数
-//            appSitePlaceMapper.findCount();
-//            查询过期和已预约数
-            //查询当天所有场地和场次
-            List<ConcertsVO>  concertsVOList= appSitePlaceMapper.findByConcerts(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            List<ConcertsVO>  concertsVOList=null;
+            //查询当天所有场地和场次及状态
+            if (label){
+                concertsVOList= appSitePlaceMapper.findByConcertsAndTime(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            }else {
+                concertsVOList= appSitePlaceMapper.findByConcerts(stadiumConcertsVO.getWeekDay(),siteId,categoryId);
+            }
+
+            label=false;
             stadiumConcertsVO.setConcertsVOList(concertsVOList);
+            long count=0L;
+            if (concertsVOList!=null&&!concertsVOList.isEmpty()){
+
+                for (ConcertsVO concertsVO : concertsVOList) {
+                    List<ConcertsDetailsVO> concertsDetailsVOList = concertsVO.getConcertsDetailsVOList();
+                    if (concertsDetailsVOList!=null&&!concertsDetailsVOList.isEmpty()){
+                        count = count+concertsDetailsVOList.stream()
+                                .filter(Objects::nonNull) // 过滤掉null元素
+                                .filter(vo -> vo.getConcertStatus() == 0) // 精确匹配状态0
+                                .count();
+                    }
+                }
+
+            }
+            stadiumConcertsVO.setNoDayConcertsReservationNum(count);
+
+
             stadiumConcertsVOS.add(stadiumConcertsVO);
         }
         stadiumConcertsResponseVO.setStadiumConcertsVOList(stadiumConcertsVOS);

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

@@ -1,10 +1,13 @@
 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.util.Date;
 import java.util.List;
 
 @Data
@@ -23,7 +26,9 @@ public class StadiumConcertsVO {
     @Schema(description = "日期加星期")
     private String weekDayAndDate;
     @Schema(description = "日期")
-    private String weekDayDate;
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date weekDayDate;
 //    /**当天场次总数*/
 //    @Schema(description = "当天场次总数")
 //    private String dayConcertsTotal;
@@ -31,7 +36,7 @@ public class StadiumConcertsVO {
 //    @Schema(description = "当天场次已预约数")
 //    private String dayConcertsReservationNum;
     @Schema(description = "当天场次未预约数")
-    private String noDayConcertsReservationNum;
+    private Long noDayConcertsReservationNum;
     /**当天场次已预约数*/
     @Schema(description = "当天场所明细")
     private List<ConcertsVO> concertsVOList;

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

@@ -38,4 +38,6 @@ public interface AppSitePlaceMapper extends BaseMapper<AppSitePlace> {
      * @return
      **/
     OrderVO.PreviewOrderPlaceGymnasiumNoFixation previewOrderPlaceGymnasiumNoFixation(@Param("placeId")String placeId);
+
+    List<ConcertsVO> findByConcertsAndTime(@Param("weekDay")Integer weekDay, @Param("siteId")String siteId, @Param("categoryId")String categoryId);
 }

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

@@ -37,10 +37,17 @@
             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
+     <![CDATA[   select b.site_place_id,a.name as site_place_name,
+        b.id,b.start_time,b.end_time ,b.selling_price,
+        CASE
+        WHEN c.order_status <=1 THEN 1
+        ELSE 0
+        END AS concertStatus
+        from nm_site_place a
+        left join  nm_site_price_rules b on a.id = b.site_place_id
+        LEFT JOIN nm_order_pro_info c on c.product_id =b.id
         where a.site_id = #{siteId} and b.category_id =#{categoryId} and b.day_of_week =#{weekDay}
+        ]]>
     </select>
     <select id="findBySidAndCid" resultType="org.jeecg.modules.app.vo.stadium.StadiumConcertsResponseVO">
         select early_refund_time,buy_limit from nm_site_place where site_id = #{siteId} and category_id =#{categoryId} limit 1
@@ -65,4 +72,18 @@
         WHERE
             a.id = #{placeId}
     </select>
+    <select id="findByConcertsAndTime" resultMap="ConcertsVOResult">
+        <![CDATA[  select b.site_place_id,a.name as site_place_name,
+               b.id,b.start_time,b.end_time ,b.selling_price,
+        CASE
+        WHEN c.order_status <=1 THEN 1
+        WHEN CURRENT_TIME() < TIME(b.end_time) THEN 0
+        ELSE 1
+        END AS concertStatus
+        from nm_site_place a
+        left join  nm_site_price_rules b on a.id = b.site_place_id
+        LEFT JOIN nm_order_pro_info c on c.product_id =b.id
+        where a.site_id = #{siteId} and b.category_id =#{categoryId} and b.day_of_week =#{weekDay}
+        ]]>
+    </select>
 </mapper>

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

@@ -6,6 +6,7 @@ import org.jeecg.modules.system.app.vo.time.NextSevenDayVo;
 import java.time.DayOfWeek;
 import java.time.LocalDate;
 import java.time.LocalTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.time.format.TextStyle;
 import java.util.*;
@@ -91,6 +92,7 @@ public class TimeRangeFinder {
             LocalDate localDate = today.plusDays(i);
             Locale locale = Locale.CHINA;
             String format = localDate.format(formatter);
+            Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
             DayOfWeek dayOfWeek = localDate.getDayOfWeek();
             int dayOfWeekNum = dayOfWeek.getValue();
             String display;
@@ -109,7 +111,7 @@ public class TimeRangeFinder {
                     String weekday = dayOfWeek.getDisplayName(TextStyle.SHORT, locale);
                     display = weekday + "(" + format + ")";
             }
-            nextSevenDayVo.setWeekDayDate(format);
+            nextSevenDayVo.setWeekDayDate(date);
             nextSevenDayVo.setWeekDay(dayOfWeekNum);
             nextSevenDayVo.setWeekDayAndDate(display);
             dates.add(nextSevenDayVo);

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

@@ -1,11 +1,15 @@
 package org.jeecg.modules.system.app.vo.time;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * @author DM
@@ -25,5 +29,7 @@ public class NextSevenDayVo {
     @Schema(description ="星期配合日期")
     private String weekDayAndDate;
     @Schema(description ="日期")
-    private String weekDayDate;
+    @JsonFormat( pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date weekDayDate;
 }