Parcourir la source

Merge branch 'master' of http://git.zonelife.cn:3000/huangyang/national-motion-backend

zhangxin il y a 1 semaine
Parent
commit
07ecb97c6d

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

@@ -1,4 +1,37 @@
 package org.jeecg.modules.app.controller;
 
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.media.Schema;
+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.IOrderService;
+import org.jeecg.modules.app.vo.OrderVO;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.Date;
+@Slf4j
+@Tag(name = "订单相关接口")
+@RestController
+@RequestMapping("/app/order")
 public class OrderController {
+    @Resource
+    private IOrderService appOrderService;
+    /**
+     * @Author SheepHy
+     * @Description 学校场地预约-预览页
+     * @Date 10:10 2025/7/14
+     * @Param
+     * @return
+     **/
+    @Operation(summary="学校场地预约-预览页")
+    @GetMapping("/previewOrderPlaceSchool")
+    public Result<OrderVO.PreviewOrderPlaceSchool> previewOrderPlaceSchool(@RequestParam("placeId") @Schema(description = "场地ID")String placeId,
+                                                                           @RequestParam("startTime") @Schema(description = "当前选择日期(时分秒)")Date startTime){
+        return Result.ok(appOrderService.previewOrderPlaceSchool(placeId,startTime));
+    }
 }

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

@@ -1,5 +1,26 @@
 package org.jeecg.modules.app.service;
 
+import org.jeecg.modules.app.vo.OrderVO;
+
+import java.util.Date;
+
 public interface IOrderService {
 
+    /**
+     * @Author SheepHy
+     * @Description 学校场地预约-创建
+     * @Date 10:10 2025/7/14
+     * @Param
+     * @return
+     **/
+//    String createOrderPlaceSchool(String name);
+
+    /**
+     * @Author SheepHy
+     * @Description 学校场地预约-预览页
+     * @Date 10:10 2025/7/14
+     * @Param
+     * @return
+     **/
+    OrderVO.PreviewOrderPlaceSchool previewOrderPlaceSchool(String placeId, Date startTime);
 }

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

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.log4j.Log4j2;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.app.service.IDetailService;
 import org.jeecg.modules.app.vo.CourseInfoVO;
@@ -20,6 +21,7 @@ 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.SysDictMapper;
 import org.jeecg.modules.system.mapper.SysUserMapper;
 import org.jeecg.modules.system.util.PositionUtil;
 import org.springframework.beans.BeanUtils;
@@ -34,6 +36,8 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
+import static org.jeecg.modules.system.constant.DefIndexConst.FACILITY_INFO;
+
 @Service
 @Log4j2
 public class DetailServiceImpl implements IDetailService {
@@ -57,11 +61,23 @@ public class DetailServiceImpl implements IDetailService {
     private AppCategoryMapper appCategoryMapper;
     @Resource
     private SysUserMapper sysUserMapper;
+    @Resource
+    private SysDictMapper sysDictMapper;
 
     @Override
     public PlaceInfoVO getPlaceInfo(String id) {
         AppSite appSite = appSiteMapper.selectById(id);
         PlaceInfoVO placeInfo = appSiteMapper.getPlaceInfo(id);
+        List<DictModel> dictModels = sysDictMapper.queryDictItemsByCode(FACILITY_INFO);
+        List<String> facilityInfo = new ArrayList<>();
+        Arrays.stream(placeInfo.getFacility().split(",")).forEach(facility -> {
+            dictModels.forEach(dictModel -> {
+                if(facility.equals(dictModel.getValue())){
+                    facilityInfo.add(dictModel.getTitle());
+                }
+            });
+        });
+        placeInfo.setFacilityInfo(facilityInfo);
         List<PlaceInfoVO.InstructorVO> instructorVOList = new ArrayList<>();
         List<AppInstructor> appInstructors = appInstructorMapper.selectList(Wrappers.<AppInstructor>lambdaQuery()
                 .eq(AppInstructor::getOrgCode, appSite.getOrgCode()));

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

@@ -2,9 +2,35 @@ package org.jeecg.modules.app.service.impl;
 
 import lombok.extern.log4j.Log4j2;
 import org.jeecg.modules.app.service.IOrderService;
+import org.jeecg.modules.app.vo.OrderVO;
+import org.jeecg.modules.system.app.entity.AppSitePlace;
+import org.jeecg.modules.system.app.mapper.AppSitePlaceMapper;
+import org.jeecg.modules.system.app.mapper.AppSitePriceRulesMapper;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Date;
+import java.util.List;
+
 @Service
 @Log4j2
 public class OrderServiceImpl implements IOrderService {
+    @Resource
+    private AppSitePlaceMapper appSitePlaceMapper;
+    @Resource
+    private AppSitePriceRulesMapper appSitePriceRulesMapper;
+    @Override
+    public OrderVO.PreviewOrderPlaceSchool previewOrderPlaceSchool(String placeId, Date startTime) {
+        LocalDate localDate = startTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+        Date dateOnly = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        OrderVO.PreviewOrderPlaceSchool previewOrderPlaceSchool = new OrderVO.PreviewOrderPlaceSchool();
+        List<OrderVO.PreviewOrderPlaceSchoolChild> timeSlot = appSitePriceRulesMapper.timeSlot(placeId, dateOnly);
+        AppSitePlace appSitePlace = appSitePlaceMapper.selectById(placeId);
+        previewOrderPlaceSchool.setName(appSitePlace.getName())
+                .setId(appSitePlace.getId())
+                .setTimeSlot(timeSlot);
+        return previewOrderPlaceSchool;
+    }
 }

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

@@ -0,0 +1,46 @@
+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 OrderVO {
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="学校场地预约-预览页")
+    public static class PreviewOrderPlaceSchool {
+        @Schema(description = "门店ID")
+        private String id;
+        @Schema(description = "门店名称")
+        private String name;
+        @Schema(description="学校场地预约-预览页-时间段")
+        private List<PreviewOrderPlaceSchoolChild> timeSlot;
+
+    }
+
+    @Data
+    @Accessors(chain = true)
+    @EqualsAndHashCode(callSuper = false)
+    @Schema(description="学校场地预约-预览页-时间段")
+    public static class PreviewOrderPlaceSchoolChild {
+        @Schema(description = "时间段ID")
+        private String id;
+        @Schema(description = "时间段名称")
+        private String name;
+        @Schema(description = "库存")
+        private int inventory;
+        @Schema(description = "价格")
+        private BigDecimal price;
+
+    }
+
+}

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

@@ -31,6 +31,8 @@ public class PlaceInfoVO {
     private Integer type;
     @Schema(description = "设施/信息")
     private String facility;
+    @Schema(description = "设施/信息")
+    private List<String> facilityInfo;
     @Schema(description = "教学日开放时段")
     private String teachingDay;
     @Schema(description = "非教学日开放时段")

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

@@ -94,11 +94,15 @@ public class AppSitePriceRules implements Serializable {
     /**创建人;创建人*/
     @Schema(description = "创建人;创建人")
     private String createBy;
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @Schema(description = "销售日期")
+    private Date createTime;
     /**创建时间;创建时间*/
     @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @Schema(description = "创建时间;创建时间")
-    private Date createTime;
+    private Date dateOfSale;
     /**更新人;更新人*/
     @Schema(description = "更新人;更新人")
     private String updateBy;

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

@@ -2,9 +2,11 @@ package org.jeecg.modules.system.app.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.app.vo.OrderVO;
 import org.jeecg.modules.app.vo.PlaceInfoVO;
 import org.jeecg.modules.system.app.entity.AppSitePriceRules;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -24,4 +26,6 @@ public interface AppSitePriceRulesMapper extends BaseMapper<AppSitePriceRules> {
      **/
     List<PlaceInfoVO.theGymnasiumIsCharteredInfoVO> theGymnasiumIsCharteredInfo(@Param("orgCode")String orgCode, @Param("categoryId")String categoryId);
 
+    List<OrderVO.PreviewOrderPlaceSchoolChild> timeSlot(@Param("placeId")String placeId,@Param("startTime")Date startTime);
+
 }

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

@@ -29,7 +29,7 @@
         nm_site_price_rules r
         LEFT JOIN nm_site_place sp ON r.site_place_id = sp.id
         WHERE
-        r.view_status = 0
+        r.view_status = 0 AND r.org_code = #{orgCode} AND r.category_id = #{categoryId}
         ) SELECT
         es.site_id AS id,
         es.start_time AS startTime,
@@ -57,4 +57,15 @@
         ORDER BY
         dm.offset_day;
     </select>
+    <select id="timeSlot" resultType="org.jeecg.modules.app.vo.OrderVO$PreviewOrderPlaceSchoolChild">
+        SELECT
+            id,
+            inventory,
+            CONCAT(start_time, '-', end_time) AS NAME
+        FROM
+            `nm_site_price_rules`
+        WHERE
+            date_of_sale = #{startTime}
+          AND site_place_id = #{placeId};
+    </select>
 </mapper>

+ 2 - 0
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/system/constant/DefIndexConst.java

@@ -22,4 +22,6 @@ public interface DefIndexConst {
     String DEF_INDEX_URL = "/dashboard/analysis";
     String DEF_INDEX_COMPONENT = "dashboard/Analysis";
 
+    String FACILITY_INFO = "facility_info";
+
 }

+ 2 - 1
pom.xml

@@ -4,7 +4,7 @@
 	<artifactId>national-motion-backend</artifactId>
 	<version>3.8.1</version>
 	<packaging>pom</packaging>
-	<name>JEECG BOOT ${project.version}</name>
+	<name>national-motion-backend</name>
 
 	<scm>
 		<connection>http://www.jeecg.com</connection>
@@ -76,6 +76,7 @@
 	<modules>
         <module>national-motion-base-core</module>
         <module>national-motion-module-system</module>
+        <module>national-motion-module</module>
     </modules>
 
 	<repositories>